Register a Derivative
Learn how to register a derivative/remix IP Asset as a child of another in TypeScript.
This section demonstrates how to register an IP Asset as a derivative of another.
Prerequisites
There are a few steps you have to complete before you can start the tutorial.
- Complete the TypeScript SDK Setup
1. Before We Start
There are a lot of ways to register an IP Asset as a derivative of another. Below, we will help you figure out what function you should use.
Have no idea? It is best to figure out which SDK function to use based on what is easiest for you. But if you have no idea, simply continue to the next section.
By the way we recognize this is confusing and are releasing an update to our SDK soon to combine all of these into 1 simple function. :)
Do you already have a License Token you can use?
- ✅ Yes: Is the derivative IP Asset already registered?
- ✅ Yes: Use registerDerivativeWithLicenseTokens
- ❌ No: Do you have your own NFT contract, or an already minted NFT?
- ❌ No: Is the derivative IP Asset already registered?
- ✅ Yes: Use registerDerivative
- ❌ No: Do you have your own NFT contract, or an already minted NFT?
- ✅ Yes: Use registerDerivativeIp
- ❌ No: Use mintAndRegisterIpAndMakeDerivative
1a. Why would I ever use a License Token if it’s not needed?
There are a few times when you would need a License Token to register a derivative:
- The License Token contains private license terms, so you would only be able to register as a derivative if you had the License Token that was manually minted by the owner. More on that here.
- The License Token (which is an NFT) costs a
mintingFee
to mint, and you were able to buy it on a marketplace for a cheaper price. Then it makes more sense to simply register with the License Token then have to pay the more expensivedefaultMintingFee
.
2. Register Derivative
This is just an example. You are encouraged to figure out the best derivative function to use based on the survey above. However, if you don’t know and want to be walked through one solution, this next part is for you.
We’re going to assume you have ❌ no license tokens, ❌ the derivative IP is not yet registered, and ❌ you don’t have your own NFT contract or an already minted NFT.
Follow steps 1-4 of Register an IP Asset. Note you can skip step 4 if you already have an SPG NFT Collection. Then, come back here.
Modify your code such that…
- Instead of using
mintAndRegisterIp
, usemintAndRegisterIpAndMakeDerivative
- Add a
derivData
field, where:parentIpIds
is theipIds
of the parents you want to become a derivative of. NOTE: Once you become a derivative, you cannot add more parentslicenseTermIds
is an array of license terms you want to register under. These are the terms your derivative must abide by
Now we can call the function like so:
Associated Docs: ipAsset.mintAndRegisterIpAndMakeDerivative
3. View Completed Code
Congratulations, you registered a derivative IP Asset!
4. Paying and Claiming Revenue
Now that we have established parent-child IP relationships, we can begin to explore payments and automated revenue share based on the license terms. We’ll cover that in the upcoming pages.