How to guarantee creators' royalties

I recently read the VIV3 code and learned how the Art NFT creator royalties are paid. (The code is open source. If you’re curious, you can follow the transactions in the Flow address used on VIV3.)
I understood that VIV3 is designed to send a transaction from the custodian’s wallet and set the royalty percentage in that transaction at the time of listing. This way, royalty payments to creators are guaranteed as long as NFTs are not withdrawn out of the VIV3 custody-type wallet.

But what if you want to use NFTs for other contracts in Flow ecosystem, i.e., if you want to freely manage NFTs in your own wallet?
In that case, trading without royalty payments might take place in some other marketplace.
Flow uses a Capability-based security model, and with the current specification, I think it would be difficult to restrict this.

One idea I can think of is that when you create a Capability, you should be able to set the address where it can be stored. That way, we can whitelist the market contracts that use the Capability.
However, this method does not restrict market contracts that do not use Capability.

Do you have any other good ideas or thought?

I don’t think it is necessary to make this restriction. It is the ethos of blockchain to allow users to use third party services for their assets, so if they want to use a different marketplace, they are allowed to. The incentive to use the main marketplace is that it usually offers a much better UX, so most users will still go there.

I see. Thanks for sharing your thoughts.
So, I understood that the model is that fees and royalties should not be enforced in the blockchain layer, but users choose to pay for its usage for an easy-to-use UI/UX.

I think it would be a good idea to have an optional feature to be able to enforce royalty payments for secondary distribution.
As an example, I would like to introduce NFT specification called dGoods from EoS. (This specification is not currently in widespread use, but it is a good reference.
This specification includes the ability to sell tokens, and when you create an NFT, you can register the recipient of the royalty.

There is also a proposal for Ethereum tokens that would

For artists, it is very important to ensure that royalties for secondary sales are guaranteed. The availability of this as an option is an advantage in attracting artists.
What do you think?

yeah, there are certainly ways that you could enforce loyalties. For example, someone we were talking to recently wanted to put a status indicator on each NFT that indicates if it can be deposited in a collection or not, and the only way to deposit it into a new collection would be to pay the royalties, which would clean that field. The details are tricky though, such as how much they get paid, etc.

1 Like

Thanks for replying and giving me an idea on how to make that happen! That’s a great idea. :raised_hands:

I felt that if such a restriction was placed on the official Collection of an NFT project, it could practically force users to pay royalties. (Of course, unlike Solidity’s token suggestion above, you can’t force users to pay royalties 100% of the time, but it would be just as much of a force since it’s hard to go to the trouble of creating and using another collection yourself.) I like the fact that it also leaves the user with a choice.

I will try to implement this in the near future :smiley:

Technically it is not possible to force royalty payment.

1 Like

I knew it. I noticed that when I wrote the code. It was good to know the views of Flow team. Thanks for the comment.

This is nothing to do at nft level though, I think team choosing ownership vs control is not bad in the long run. If they chose control I would be more disappointed.