How to enforce royalty splits


I was just wondering how can I enforce royalty splits for my Manifold contract. As I understand it, the owner of the contract (me in this case) can always change the royalties for a specific token effectively blocking my co-creators from receiving their fair share. Is there a way to freeze royalties for a specific token?


Currently this isn’t possible via the UX, however you could code up an extension that defines royalties and does not allow edit. This does require some solidity knowledge though. The documentation for this is here:

Hey wilkins,

Thanks for your response. I had a look at the source code and I am struggling to see how this addresses the issue. Looking at the CreatorCore implementation, specifically the _getRoyalties function: I see that the extension is queried for royalties only if royalties.length == 0. I can set the royalties through the setRoyalties

This means that regardless of how I write my extension, the owner of the contract will always be able to override the royalties. So I’m still curious how I can guarantee to my collaborators that I will not change the royalties (let’s assume I am the owner of the contract).


I have similar question, but a bit different.
I don’t want to start a new topic, but plug it in this one. If that’s not okay, I can start a new topic.

The question is about setting up royalties per single token in an existing contract. I want to do a lot of collabs inside one smart contract spread over multiple works with different artists.
At this point this is not possible to set the royalties per token, because the contract is the master of all the tokens that are minted inside of it.

Actually, it is possible to set token level royalties, but there isn’t a UX for it. You’ll have to go to your contract on etherscan and set it via the “setRoyalties” function:

1 Like

that’s perfect, I’m really happy that this is possible. Do you know if there is a tutorial about setting it too, because I would like to do this myself and don’t bother others with the questions. But looking at etherscan I see three options, and feel a bit lost there…

It’s pretty straight forward. It’s function 26.
tokenId (put in the token)
[‘0xfirstaddress’, ‘0xsecondaddress’]
basisPoints (must not exceed 10000, below is an example of a total of 10%, 2% to first, 8% to second):

You can try it on your goerli contract then use to see if it’s what you expected.

thanks for this clear language :slight_smile:
This helps my project immensely. Now I can start collabs and add other artists addresses to the pieces they participated in, and use this for every single token inside the overall contract of the project!

This worked well, thanks! royaltyregistry.eth
Final issue; The initial sale.

Is it possible to set the initial sale of the token to 2 address’s instead of one?

What platform are you selling on? If on manifold gallery, yes you can.

1 Like

Yeah, I will only do the first sale straight from the Manifold Gallery. I don’t want to list it anywhere else.

this thready was very helpful for a current project. thank you. i am wondering if it is possible to also do a three-way split? or can only 1 collaborator be put in per token?

You can do multiple.

when i do it, it just replaces the last entry. how do i do multiples?

if i add another wallet on the smart contract it will replace the one here in the image for royalties.

You can’t do this within studio, you have to do it following these instructions:

im using etherscan to access the smart contract. it is no longer the same function number, but using the same functions. it allows me to enter one at a time. whatever the second one is i input overrides the previous one. i keep using this and paying the gas, but only get 1 address to show. do i need to separate them by , and enter them together? or enter them separately as i am?

You have to follow the instructions here:

What’s your contract address? The function # may be different depending on if it’s an 1155 or 721

1 Like

amazing. i got it. thanks for the patience. i made a few errors. 1.) i didnt read closely enough 2.) where to put the comma was throwing me off. appreciate the help!

If the drop is open edition via a claim page and we don’t know in advance how many will be minted, what do we enter in the tokenId field? Let’s say the first token on the new claim page will have tokenId18 on the contract. Can we do something like 18… to mean 18 onwards?

Also, when I try to edit function 26 for a single token the gas fee is 0.42 ETH. That can’t be right, can it?!