๐ ๋ฉํ๋ฐ์ดํฐ ๋ชจ๋
IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ธํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ ๋ชจ๋์ Story ๋ด์์ IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ๊ด๋ฆฌ ๋ฐ ๊ฒ์ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ์ฐ๊ธฐ ์์ ์ ์ํ CoreMetadataModule๊ณผ ์ฝ๊ธฐ ์์ ์ ์ํ CoreMetadataViewModule์ ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
CoreMetadataModule.sol
Core Metadata Module์ ์ค๋งํธ ๊ณ์ฝ์ ํ์ธํ์ธ์.
CoreMetadataViewModule.sol
Core Metadata View Module์ ์ค๋งํธ ๊ณ์ฝ์ ํ์ธํ์ธ์.
๋ฉํ๋ฐ์ดํฐ ๊ตฌ์กฐ
IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- metadataURI: IP ์์ฐ์ ์์ธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ URI
- metadataHash: ๊ฒ์ฆ ๋ชฉ์ ์ ๋ฉํ๋ฐ์ดํฐ ํด์
- nftTokenURI: IP ์์ฐ๊ณผ ์ฐ๊ด๋ NFT์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ URI
- nftMetadataHash: ๊ฒ์ฆ์ ์ํ NFT ๋ฉํ๋ฐ์ดํฐ์ ํด์
- registrationDate: IP ์์ฐ์ด ๋ฑ๋ก๋ ์๊ธฐ
- owner: IP ์์ฐ์ ํ์ฌ ์์ ์
CoreMetadataModule (์ฐ๊ธฐ ์์ )
CoreMetadataModule.sol
์ IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ์
๋ฐ์ดํธํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ statefulํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ URI ์ค์ ๋ฐ ์ ๋ฐ์ดํธ
- NFT ํ ํฐ URI ์ค์ ๋ฐ ์ ๋ฐ์ดํธ
- ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ๋๊ฒฐ
- ๊ฒ์ฆ์ ์ํ ๋ฉํ๋ฐ์ดํฐ ํด์ ๊ด๋ฆฌ
์ด ๋ชจ๋์ IP ์์ฐ์ ์ ์ฅ์์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๊ทผํ ์ ์๊ฒ ํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ ์ค์
IP ์์ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๋ ค๋ฉด ํธ์ถ์๊ฐ ์ ์ ํ ๊ถํ์ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค. CoreMetadataModule์ ๋ฉํ๋ฐ์ดํฐ ์ค์ ์ ์ํ ์ฌ๋ฌ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค:
setMetadataURI
: IP metadataURI์ ๊ทธ ํด์๋ง ์ค์ ํฉ๋๋คupdateNftTokenURI
: NFT ํ ํฐ URI์ ๊ทธ ํด์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋คsetAll
: ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ์์ฑ์ ํ ๋ฒ์ ์ค์ ํฉ๋๋ค
๋ค์์ ์์์ ๋๋ค:
๋ฉํ๋ฐ์ดํฐ ๋๊ฒฐ
CoreMetadataModule์ IP ์์ฐ ์์ ์๊ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋๊ฒฐํ์ฌ ๋ถ๋ณ์ผ๋ก ๋ง๋ค ์ ์๊ฒ ํฉ๋๋ค. ํ ๋ฒ ๋๊ฒฐ๋๋ฉด ๋ฉํ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝํ ์ ์์ด IP ์์ฐ ์ ๋ณด์ ์๊ตฌ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋๊ฒฐํ๋ ค๋ฉด:
๋ค์์ ์ฌ์ฉํ์ฌ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋๊ฒฐ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค:
CoreMetadataViewModule (์ฝ๊ธฐ ์์ )
CoreMetadataViewModule.sol
์ CoreMetadataModule์ ์ํด ์ ์ฅ๋ ๋ฉํ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋์
๋๋ค. ์ด๋ View Module ํจํด์ ๋ฐ๋ฅด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ๋ฉํ๋ฐ์ดํฐ URI ๋ฐ ํด์ ๊ฒ์
- NFT ํ ํฐ URI ๋ฐ ๋ฉํ๋ฐ์ดํฐ ํด์ ๊ฒ์
- ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ์์ฑ์ด ํฌํจ๋ ํ์ํ๋ JSON ๋ฌธ์์ด ์์ฑ
- ๋ฑ๋ก ๋ ์ง ๋ฐ ์์ ๊ถ ์ ๋ณด ํ์ธ
๋ฉํ๋ฐ์ดํฐ ๊ฒ์
CoreMetadataViewModule์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ๋ค์ํ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค:
getCoreMetadata
: ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋จ์ผ ๊ตฌ์กฐ์ฒด๋ก ๋ฐํํฉ๋๋คgetMetadataURI
: ๋ฉํ๋ฐ์ดํฐ URI๋ง ๋ฐํํฉ๋๋คgetNftTokenURI
: NFT ํ ํฐ URI๋ฅผ ๋ฐํํฉ๋๋คgetJsonString
: ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ํ๋ JSON ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค
๋ค์์ ์์์ ๋๋ค:
๋ฉํ๋ฐ์ดํฐ ๋ชจ๋์ IP ์์ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์์คํ ์ ์ ๊ณตํ์ฌ ์ง์ ์ฌ์ฐ์ ๋ํ ์ค์ํ ์ ๋ณด๊ฐ ์ ์ ํ ๊ธฐ๋ก๋๊ณ , ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ, ํ์ํ ๋ ๋ถ๋ณ์ผ๋ก ๋ง๋ค ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.