๐ ์ค๋งํธ ์ปจํธ๋ํธ ์๋ ๋ฐฉ์
์ ๋ฒ ๊ฒ์๋ฌผ์์ ์ค๋งํธ ์ปจํธ๋ํธ์ ๊ฐ๋ ๊ณผ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ, ์ฅ์ ์ ์์๋ณด์๋ค. ์ด์ด ์ค๋งํธ ์ปจํธ๋ํธ ์๋ ๋ฐฉ์๊ณผ ํ์ฉ ์ฌ๋ก๋ฅผ ์์๋ณด์.
์ค๋งํธ ์ปจํธ๋ํธ ์๋ ๋ฐฉ์
์ค๋งํธ ์ปจํธ๋ํธ๋ ์ด๋ป๊ฒ ์๋ํ ๊น? ์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ๊ตฌํํ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ธ๋ก์ฒด์ธ์ธ ์ด๋๋ฆฌ์์ ๊ธฐ์ค์ผ๋ก ์์๋ณด์.
์๋ฅผ ๋ค์ด, ์ฝ๋์คํ ์ด์ธ ์ ๋คํธ์ํน ํ์ฌ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ์ธ์์๊ฒ 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์ ๋ํ ์์ ๊ถ์ ์ฆ๋ช ํ ์ ์๋ค.
๋ค์ ํฌ์คํ ์์ ๋ธ๋ก์ฒด์ธ ์ค๋งํธ ์ปจํธ๋ํธ๊ฐ ๊ฐ์ง ํ๊ณ์ ์ฌ๊ฑด์ ๋ํด ์์๋ณด์.