Is it possible to code an NFT-compliant smart contract which has the following properties?

  • There are multiple owners instead of just one
  • Royalties are paid out to all owners in perpetuity, across all secondary market sales

Currently here is what I have tried: I created an ERC-721 compliant token, and issued ERC-20 tokens against it (essentially fractionalized it). Whoever holds the ERC-20 tokens are then fractional owners of the said NFT. However, I had to wrap the NFT in a separate smart contract in order to issue the ERC-20 tokens against the asset. Now once/if this NFT is sold to a new buyer, the ERC-20 tokens are redeemed and each owner gets their share of the proceeds. There is no way - under this scheme - to enforce royalties in perpetuity for the original owners.

Can an industry expert provide an illustrative example of how my original question can be accomplished?

And if the current standards do not allow this to happen, getting that knowledge would be good too.

I read various literature that NFTs solve the royalty issue, so I was trying to experiment with all the possibilities. I'm a originally a server-side dev, and a newbie in the smart contract universe (thus the noob question).

  • 1
    About fractionalized ownership, the owner could just be a multisig or DAO contract.
    – hrkrshnn
    May 4, 2021 at 10:13

2 Answers 2


I am not an industry expert, however one of my blue papers decribes using nft this way but I do not breakt it down to individual nft tokenIDs.

Here is my solution:

Create your ERC20 and NFT separately... no need to wrap.

Create a safe/fairly launched Balancer V1 (VERSION ONE!!!) eth/Token pool

Set royalty payout to send ether to a custom contract that: A) Maintains a minimum threshold of eth for fee reserve (1 ETH is mine) B) Forwards surplus ether to the balancer pool address C) Calls the balancer pool gulp() function to rebalance the pricing of the pool. (same # tokens but now more eth = higher eth/token) D) Manage non Ether commissions via a uniswap v2 router (ie, forward usdc to add liquidity in usdc/eth and remove liquidity as eth and send back to the royalty forwarder contract)

So essentially anytime a royalty is generated, all token holders values increase.

FYI I recommend putting 100% total supply into liquidity at balancer v1 and then send the bpt to burn address (permalock)


You should look at the EIP-3602 which is about Fractional-NFT with an on-chain royalty distribution system.

This is the link https://github.com/ethereum/EIPs/pull/3602

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.