Post

๐Ÿ“ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ž‘๋™ ๋ฐฉ์‹

์ €๋ฒˆ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ๊ฐœ๋…๊ณผ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ, ์žฅ์ ์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์–ด ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ์•Œ์•„๋ณด์ž.

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ž‘๋™ ๋ฐฉ์‹

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ? ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๋ธ”๋ก์ฒด์ธ์ธ ์ด๋”๋ฆฌ์›€์„ ๊ธฐ์ค€์œผ๋กœ ์•Œ์•„๋ณด์ž.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์˜ ๋„คํŠธ์›Œํ‚น ํ–‰์‚ฌ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ์ธ์›์—๊ฒŒ CozNFT๋ฅผ ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ ์ค€๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ž‘์„ฑ ๋ฐ ๋ฐฐํฌ

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ ์ƒ์— ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค.

1. ์ปจํŠธ๋ž™ํŠธ ์ž‘์„ฑ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์—์„œ๋Š” ๋จผ์ € NFT ์ฝœ๋ ‰์…˜์„ ์—์–ด๋“œ๋žํ•˜๋Š” ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
์ด๋”๋ฆฌ์›€์—์„œ๋Š” ์†”๋ฆฌ๋””ํ‹ฐ(Solidity)๋ผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด CozNFT.solํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// CozNFT.sol
contract CozNFT is ERC721 {
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;

    function transferFrom(address from, uint256 to, uint256 tokenId) external {
        require(ownerOf(tokenId) == from , "Error: transfer from incorrect owner");
        require(to != address(0), "Error: transfer to the zero address");

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
    }
}

ํ•จ์ˆ˜ transferFrom์€ NFT ์ฝœ๋ ‰์…˜์„ ์ „์†กํ•˜๋ฉฐ, ์ „์†ก ์กฐ๊ฑด์ด ๋งž๋Š”์ง€ ํ™•์ธํ•œ ํ›„, ์กฐ๊ฑด์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ์กฑ๋˜์—ˆ๋‹ค๋ฉด NFT ์ „์†ก์„ ์‹คํ–‰ํ•œ๋‹ค.

  • require๊ตฌ๋ฌธ์„ ํ†ตํ•ด ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์—์„œ ์‹คํ–‰ํ•œ ๊ฒƒ์ด ๋งž๋Š”์ง€, ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์†Œ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์ดํ›„ ์ƒํƒœ๋ณ€์ˆ˜ _balances์™€ _owners๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ NFT๋ฅผ ์ „์†กํ•œ๋‹ค.


2. ์ปดํŒŒ์ผ

์ž‘์„ฑํ•œ ์ปจํŠธ๋ž™ํŠธ๋Š” ์ด๋”๋ฆฌ์›€ ๋…ธ๋“œ์˜ EVM(Etherium Virtual Machine)์ด ์‹คํ–‰ํ•œ๋‹ค. EVM์€ ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ€์ƒ์˜ ์‹คํ–‰ํ™˜๊ฒฝ์œผ๋กœ, ์ปจํŠธ๋ž™ํŠธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

EVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•œ CozNFT.sol ์„ ๋ฐ”์ดํŠธ์ฝ”๋“œ(byteCode)๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.
๋ฐ”์ดํŠธ์ฝ”๋“œ ํ˜•ํƒœ๋งŒ์œผ๋กœ๋Š” ์ด ์ปจํŠธ๋ž™ํŠธ์— ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ABI(Application Binary Interface)๋„ ํ•จ๊ป˜ ์ƒ์„ฑํ•œ๋‹ค. ABI๋Š” ์ด ์ปจํŠธ๋ž™ํŠธ์— ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€, ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ธ์ง€ ๋“ฑ์„ ์ ์–ด๋‘” ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด์˜ ์ง€ํ•ฉ์ด๋‹ค.

3. ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…
์ปดํŒŒ์ผ๋œ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ ์ƒ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํŠธ๋ž™ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•ด ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ์— ์ „ํŒŒํ•œ๋‹ค.

์ด๋•Œ Geth๋‚˜ Parity์™€ ๊ฐ™์€ ์ด๋”๋ฆฌ์›€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์ง์ ‘ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜, ๋ฉ”ํƒ€๋งˆ์Šคํฌ, Infura๊ฐ™์ด ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.


4. ์ปจํŠธ๋ž™ํŠธ ๋ฐฐํฌ
๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•œ ์ปจํŠธ๋ž™ํŠธ ๋ฐฐํฌ ํŠธ๋žœ์žญ์…˜์„ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค๋ฅธ ์ฑ„๊ตด ๋ธ”๋ก์ด ์ž์‹ ์˜ ๋ธ”๋ก์— ๋‹ด์•„ ํ•ด๋‹น ๋ธ”๋ก์ด ๋ฐฐํฌ๋˜๋ฉด, ๋ธ”๋ก์ฒด์ธ์— CozNFT.sol ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๋ฐฐํฌ๋œ๋‹ค.

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์‚ฌ์šฉ

์ด์ œ, ํ–‰์‚ฌ์— ์ฐธ๊ฐ€์ž๊ฐ€ ์˜ค๋ฉด ์ž‘์„ฑํ•œ CozNFT.sol์— ์žˆ๋Š” transferFrom ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด ํ•ด๋‹น ์ฐธ๊ฐ€์ž์—๊ฒŒ NFT๋ฅผ ์ง€๊ธ‰ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

1. ํ•จ์ˆ˜ ์‹คํ–‰ ํŠธ๋žœ์žญ์…˜ ์ƒ์„ฑ
CozNFT.sol์˜ transferFrom ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•œ๋‹ค.
์ด๋•Œ, ํŠน์ • ์ปจํŠธ๋ž™ํŠธ์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปจํŠธ๋ž™ํŠธ์˜ ์ฃผ์†Œ๊ฐ’๊ณผ ์ปจํŠธ๋ž™ํŠธ์˜ ABI๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.



2. ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…
์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์„ ์ด๋”๋ฆฌ์›€ ๋„คํŠธ์›Œํฌ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•œ๋‹ค.


3. transferFrom ์‹คํ–‰
์ฑ„๊ตด ๋…ธ๋“œ๋Š” ํŠธ๋žœ์žญ์…˜์— ์ ํ˜€์žˆ๋Š”๋Œ€๋กœ transferFrom์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด ๋•Œ, CozNFT ์ปจํŠธ๋ž™ํŠธ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํ˜•ํƒœ์ด๋ฏ€๋กœ, ์ฑ„๊ตด ๋…ธ๋“œ๋Š” ์ž์‹ ์˜ EVM์—์„œ ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ํŠธ๋žœ์žญ์…˜ ์ถ”๊ฐ€
EVM์—์„œ ์ปจํŠธ๋ž™ํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ์— ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉด, ์ฑ„๊ตด ๋…ธ๋“œ๋Š” ์ž์‹ ์ด ๋งŒ๋“ค๋ ค๋Š” ์ƒˆ ๋ธ”๋ก์— ํŠธ๋žœ์žญ์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

5. ๋…ธ๋“œ ์ „ํŒŒ
ํŠธ๋žœ์žญ์…˜์ด ๋‹ด๊ธด ๋ธ”๋ก์ด ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…๋˜์–ด ๋„คํŠธ์›Œํฌ ๋‚ด ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „ํŒŒ๋œ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” ๋ธ”๋ก๊ณผ ๋ธ”๋ก์— ๋“  ํŠธ๋žœ์žญ์…˜์ด ์œ ํšจํ•œ์ง€ ๊ฒ€์ฆํ•˜๊ณ , ์œ ํšจํ•˜๋‹ค๋ฉด ์ž์‹ ์˜ ์ฒด์ธ์— ํ•ด๋‹น ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ํ™œ์šฉ ์‚ฌ๋ก€

์‹ค์ƒํ™œ์—์„œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๊ณ  ์žˆ์„๊นŒ?

๐Ÿฆ ํƒˆ์ค‘์•™ํ™” ๊ธˆ์œต(DeFi)

๋ธ”๋ก์ฒด์ธ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์˜ ๋“ฑ์žฅ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ œ3์ž ์—†์ด๋„ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ์ž์ฒด์˜ ์‹ ๋ขฐ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ3์ž ์—†์ด ์ง์ ‘ ๊ฑฐ๋ž˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฑฐ๋ž˜์†Œ, ์ž์‚ฐ๊ด€๋ฆฌ, ๋Œ€์ถœ๊ณผ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ๊ธˆ์œต ์„œ๋น„์Šค๋ฅผ ํƒˆ์ค‘์•™ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ๊ณ  ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ๊ธˆ์œต ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ DeFi(Decentralized Finance)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

DeFi์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋“ค์ด ์ œ๊ณต๋˜๊ณ  ์žˆ๋‹ค.

  • Aave : ๋ฌดํ—ˆ๊ฐ€ํ˜• ๋Œ€์ถœ ์„œ๋น„์Šค
  • UniSwap : ํƒˆ์ค‘์•™ํ™”๋œ ํ˜•ํƒœ์˜ ํ† ํฐ ๊ฑฐ๋ž˜์†Œ
  • Compound Finance : ๋‹ด๋ณด๋Œ€์ถœ ์„œ๋น„์Šค

๐ŸŽฎ ๊ฒŒ์ž„

๋Œ€ํ‘œ์ ์ธ ๋ธ”๋ก์ฒด์ธ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„์—๋Š” ํฌ๋ฆฝํ† ํ‚คํ‹ฐ(CryptoKitties)๊ฐ€ ์žˆ๋‹ค.

ํฌ๋ฆฝํ† ํ‚คํ‹ฐ๋Š” ๊ณ ์–‘์ด ์บ๋ฆญํ„ฐ๋ฅผ ๊ต๋ฐฐํ•˜๊ณ  ์œก์„ฑํ•˜์—ฌ ์ „ํˆฌ๋ฅผ ์น˜๋ฅด๋Š” ์ˆ˜์ง‘ํ˜• ๊ฒŒ์ž„์ด๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ตœ๋Œ€ํ•œ ์ข‹์€ ๊ณ ์–‘์ด ์บ๋ฆญํ„ฐ๋ฅผ ์œก์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ๊ณ ์–‘์ด ์บ๋ฆญํ„ฐ๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ธ”๋ก์ฒด์ธ ์ƒ์˜ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ํ†ตํ•ด ๋“ฑ๋ก๋œ NFT ํ˜•ํƒœ๋‹ค.

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๋Š” NFT๋ฅผ ๊ฒŒ์ž„ ์™ธ๋ถ€์—์„œ๋„ ์‚ฌ๊ณ  ํŒ” ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์–ธ์ œ ์–ด๋””์„œ๋“  ์ž์‹ ์ด ๋ณด์œ ํ•œ ๊ณ ์–‘์ด NFT์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„  ๋ธ”๋ก์ฒด์ธ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๊ฐ€ ๊ฐ€์ง„ ํ•œ๊ณ„์™€ ์‚ฌ๊ฑด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

์ถœ์ฒ˜ : ์ฝ”๋“œ์Šคํ…Œ์ด์ธ 

This post is licensed under CC BY 4.0 by the author.