이 섹션에서는 IP 자산을 다른 자산의 파생작으로 등록하는 방법을 보여줍니다.

전제 조건

튜토리얼을 시작하기 전에 완료해야 할 몇 가지 단계가 있습니다.

  1. 다음을 완료하세요 TypeScript SDK 설정

1. 시작하기 전에

IP 자산을 다른 자산의 파생작으로 등록하는 방법은 여러 가지가 있습니다. 아래에서 어떤 함수를 사용해야 하는지 결정하는 데 도움을 드리겠습니다.

아이디어가 없나요? 가장 쉬운 방법을 기준으로 어떤 SDK 함수를 사용할지 결정하는 것이 가장 좋습니다. 하지만 아이디어가 전혀 없다면 다음 섹션으로 계속 진행하세요.

참고로 이것이 혼란스럽다는 것을 인지하고 있으며, 곧 SDK를 업데이트하여 이 모든 것을 1개의 간단한 함수로 통합할 예정입니다. :)

이미 사용할 수 있는 라이선스 토큰이 있나요?

1a. 필요하지 않은데 라이선스 토큰을 사용하는 이유는 무엇인가요?

파생작을 등록할 때 라이선스 토큰이 필요한 경우가 몇 가지 있습니다:

  • 라이선스 토큰에는 비공개 라이선스 조건이 포함되어 있으므로, 소유자가 수동으로 발행한 라이선스 토큰을 가지고 있어야만 파생물로 등록할 수 있습니다. 자세한 내용은 here.
  • 라이선스 토큰(NFT)을 발행하는 데는 mintingFee 비용이 들지만, 마켓플레이스에서 더 저렴한 가격으로 구매할 수 있었다면 더 비싼 defaultMintingFee를 지불하는 것보다 라이선스 토큰으로 등록하는 것이 더 합리적입니다.

2. 파생물 등록

이것은 단지 예시일 뿐입니다. 위의 조사를 바탕으로 가장 적합한 파생 함수를 찾아내는 것이 좋습니다. 하지만 잘 모르겠고 한 가지 해결책을 단계별로 안내받고 싶다면, 다음 부분이 당신을 위한 것입니다.

우리는 당신이 ❌ 라이선스 토큰이 없고, ❌ 파생 IP가 아직 등록되지 않았으며, ❌ 자체 NFT 계약이나 이미 발행된 NFT가 없다고 가정하겠습니다.

다음의 1-4단계를 따르세요 IP 자산 등록. 이미 SPG NFT 컬렉션이 있다면 4단계를 건너뛸 수 있습니다. 그런 다음 여기로 돌아오세요.

코드를 다음과 같이 수정하세요…

  1. 대신 mintAndRegisterIp를 사용하세요 mintAndRegisterIpAndMakeDerivative
  2. 필드를 추가하세요 derivData, 여기서:
    • parentIpIdsipIds입니다. 파생물이 되고자 하는 부모의 NOTE: Once you become a derivative, you cannot add more parents
    • licenseTermIds는 등록하고자 하는 라이선스 조건의 배열입니다. 이는 파생물이 준수해야 하는 조건들입니다

이제 다음과 같이 함수를 호출할 수 있습니다:

main.ts
import { IpMetadata, DerivativeData } from "@story-protocol/core-sdk";
import { client } from "./utils";
import { uploadJSONToIPFS } from "./uploadToIpfs";
import { createHash } from "crypto";
import { Address } from "viem";

async function main() {
  // previous code here ...

  const derivData: DerivativeData = {
    // TODO: insert the parent's ipId
    parentIpIds: [PARENT_IP_ID],
    // TODO: insert the licenseTermsId attached to parent IpId
    licenseTermsIds: [LICENSE_TERMS_ID],
  };

  const response = await client.ipAsset.mintAndRegisterIpAndMakeDerivative({
    // TODO: insert your NFT contract address created by the SPG
    spgNftContract: SPG_NFT_CONTRACT_ADDRESS as Address,
    derivData,
    ipMetadata: {
      ipMetadataURI: `https://ipfs.io/ipfs/${ipIpfsHash}`,
      ipMetadataHash: `0x${ipHash}`,
      nftMetadataURI: `https://ipfs.io/ipfs/${nftIpfsHash}`,
      nftMetadataHash: `0x${nftHash}`,
    },
    txOptions: { waitForTransaction: true },
  });

  console.log(
    `Completed at transaction hash ${response.txHash}, IPA ID: ${response.ipId}, Token ID: ${response.tokenId}`
  );
}

3. 완성된 코드 보기

축하합니다, 파생 IP 자산을 등록하셨습니다!

4. 지불 및 수익 청구

이제 부모-자식 IP 관계를 설정했으므로 라이선스 조건에 따른 지불 및 자동화된 수익 공유를 탐색할 수 있습니다. 이에 대해서는 다음 페이지에서 다루겠습니다.