Skip to main content
Hooks๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” License Tokens ๋ฐœํ–‰ ๋˜๋Š” ํŒŒ์ƒ๋ฌผ ๋“ฑ๋ก ์‹œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌํ˜„, ์ œํ•œ ๋ฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hooks์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค:
  1. Licensing Hooks: ๋ผ์ด์„ ์Šค ํ† ํฐ์„ ๋ฐœํ–‰ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค(๋ฐ ํŒŒ์ƒ๋ฌผ ๋“ฑ๋ก). ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์  ๊ฐ€๊ฒฉ ์š”์ฒญ, ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ์ด์„ ์Šค ํ† ํฐ ์ˆ˜ ์ œํ•œ, ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Licensing Hooks๋Š” ์–ธ์ œ๋“ ์ง€ licensing config์—์„œ ์ถ”๊ฐ€/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Commercializer Checker Hooks: Licensing Hooks์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ง์ ‘์ ์œผ๋กœ ๋ผ์ด์„ ์Šค ์กฐ๊ฑด์˜ ์ผ๋ถ€์ด๋ฉฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐœํ–‰ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

Licensing Hooks

์ด๋“ค์€ IModule์„ ํ™•์žฅํ•˜๋Š” ILicensingHook ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ปจํŠธ๋ž™ํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€, Licensing Hook๊ฐ€ License Token์ด ๋ฐœํ–‰๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋˜์–ด ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ•ด๋‹น License Token์˜ ์ตœ์ข… totalMintingFee๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” beforeMintLicenseTokens ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
ILicensingHook ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.
ILicensingHook.sol
์ด ํ•จ์ˆ˜๊ฐ€ totalMintingFee๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. โ€œLicense Terms์—์„œ ๋ฐœํ–‰ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ , LicenseConfig์—์„œ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , beforeMintLicenseTokens์—์„œ ๋™์  ๊ฐ€๊ฒฉ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ตœ์ข… ๋ฐœํ–‰ ์ˆ˜์ˆ˜๋ฃŒ๋Š” ์‹ค์ œ๋กœ ๋ฌด์—‡์ด ๋ ๊นŒ?โ€๋ผ๊ณ  ๊ถ๊ธˆํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
์™ธ๋ถ€ license hook์˜ ์ž ์žฌ์ ์œผ๋กœ ์•…์˜์ ์ธ ๊ตฌํ˜„์— ์ฃผ์˜ํ•˜์„ธ์š”. ์„ ํƒํ•œ hook์˜ ์ฝ”๋“œ๋Š” DATA Foundation ํŒ€์— ์˜ํ•ด ๊ฒ€ํ†  ๋˜๋Š” ๊ฐ์‚ฌ๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋จผ์ € ์ง์ ‘ ํ™•์ธํ•˜์„ธ์š”.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Hooks

๋‹ค์Œ์€ ์šฐ๋ฆฌ ํ”„๋กœํ† ์ฝœ์— ๋ฐฐํฌ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” hooks์ž…๋‹ˆ๋‹ค.
์ด hooks์˜ ๋ฐฐํฌ๋œ ์ฃผ์†Œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

Hooks ๊ตฌํ˜„ํ•˜๊ธฐ

SDK ์ฝ”๋“œ ์˜ˆ์ œ

licensing hook๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์ž‘๋™ํ•˜๋Š” TypeScript SDK ์ฝ”๋“œ ์˜ˆ์ œ. ๋” ๊ตฌ์ฒด์ ์œผ๋กœ, ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ์ด์„ ์Šค ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•.

Solidity ์ฝ”๋“œ ์˜ˆ์ œ

licensing hook๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ์‹ค์ œ ์ž‘๋™ํ•˜๋Š” Solidity ์ฝ”๋“œ ์˜ˆ์ œ. ๋” ๊ตฌ์ฒด์ ์œผ๋กœ, ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•œ ๋ผ์ด์„ ์Šค ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•.
Licensing Hooks๋Š” ๊ถ๊ทน์ ์œผ๋กœ ILicensingHook ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ฐฐํฌ๋œ ๋ช‡ ๊ฐ€์ง€ Licensing Hooks๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์œ„ ์ฐจํŠธ ์ฐธ์กฐ). ์‹ค์ œ๋กœ Licensing Hook๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Licensing Config์— ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Licensing Config๋Š” IP Asset์— ์กฐ๊ฑด์„ ์ฒจ๋ถ€ํ•  ๋•Œ License Terms์— ์„ค์ •ํ•˜๋Š” ์ผ๋ จ์˜ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.
1

Licensing Config ์ƒ์„ฑ

๋จผ์ € Licensing Config๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
2

Licensing Config ์„ค์ •

๋‹ค์Œ์œผ๋กœ, License Terms์— Licensing Config๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” IP Asset์„ ๋“ฑ๋กํ•  ๋•Œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค:
์ด ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ ์•ฝ๊ฐ„์˜ ์„ค์ •์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋ฏธ TypeScript SDK๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‹ค์ œ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
์ด๋Š” ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” registerIpAsset ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
3

์ œํ•œ์„ 1๋กœ ์„ค์ •

์ด์ œ ์กฐ๊ฑด์— Licensing Config๋ฅผ ์„ค์ •ํ–ˆ์œผ๋ฏ€๋กœ, hook์˜ setTotalLicenseTokenLimit ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐœํ–‰ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ผ์ด์„ ์Šค ์ˆ˜๋ฅผ 1๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Licensing Hook ์ƒ์„ฑ

์ƒˆ๋กœ์šด licensing hook๋ฅผ ๋งŒ๋“ค๊ณ  DATA Foundation ํ”„๋กœํ† ์ฝœ์— ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋กœ ๋“ฑ๋กํ•˜๋ ค๋ฉด ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.
  1. Hook ๊ฐœ๋ฐœ: ์ด ํ…œํ”Œ๋ฆฟ ์ €์žฅ์†Œ๋ฅผ ํฌํฌํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ Aeneid ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์™€ ํ•จ๊ป˜ ์˜ˆ์‹œ hook๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
    LicenseCallerWhitelistHook.sol hook๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์˜ˆ์‹œ๋กœ license-caller-whitelist-hook์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  2. Registered Modules ์ €์žฅ์†Œ ํฌํฌ: registered-modules ์ €์žฅ์†Œ๋ฅผ ์ž์‹ ์˜ GitHub ๊ณ„์ •์œผ๋กœ ํฌํฌํ•˜์„ธ์š”.
  3. Module ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ: registered-modules ์ €์žฅ์†Œ์—์„œ hook-modules.json ํŒŒ์ผ์— hook์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. aeneid ๋ฐ mainnet ๋ชจ๋‘์— hook๋ฅผ ๋ฐฐํฌ ๋ฐ ๋ธ”๋ก ์ต์Šคํ”Œ๋กœ๋Ÿฌ์—์„œ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ JSON ๊ตฌ์กฐ๋ฅผ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:
    YourModuleName, YourModuleAddress, YourModuleBlockExplorerLink๋ฅผ ๊ฐ๊ฐ hook์˜ ์ด๋ฆ„, ์ฃผ์†Œ, ๋ธ”๋ก ์ต์Šคํ”Œ๋กœ๋Ÿฌ ํŽ˜์ด์ง€ ๋งํฌ๋กœ ๋ฐ”๊พธ์„ธ์š”. ์˜ˆ์‹œ:
  4. Pull Request (PR) ์ƒ์„ฑ: hook๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„, ์ด ์ €์žฅ์†Œ์— ๋Œ€ํ•ด pull request๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”. PR ์„ค๋ช…์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”(๊ฐ’์€ ๋ณธ์ธ์˜ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์„ธ์š”):
  5. ๊ฒ€์ฆ ๋Œ€๊ธฐ: PR์ด ์ œ์ถœ๋˜๋ฉด ๊ฒ€ํ† ๋ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ฐ์‚ฌ๊ฐ€ ์ˆ˜ํ–‰ ๋ฐ ์™„๋ฃŒ๋˜๊ณ  ๋ชจ๋“ˆ์ด ํ”„๋กœํ† ์ฝœ์— ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋กœ ๋“ฑ๋ก๋˜๋ฉด, PR์ด ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋ชจ๋“ˆ์€ ๊ณต์‹์ ์œผ๋กœ ๋“ฑ๋ก๋˜๊ณ  DATA Foundation ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์— ์•ˆ์ „ํ•œ ๊ฒƒ์œผ๋กœ ์ธ์ •๋ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ DATA Foundation ๋ชจ๋“ˆ ์ƒํƒœ๊ณ„๋ฅผ ํ™•์žฅํ•ด ๋‚˜๊ฐ€๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

Commercializer Checker Hooks

๋ฌธ์„œ๊ฐ€ ๊ณง ์ œ๊ณต๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ์งˆ๋ฌธ์ด ์žˆ์œผ์‹œ๋ฉด Builderโ€™s Discord์—์„œ ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”.