-
Notifications
You must be signed in to change notification settings - Fork 331
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CIP-0027 | Standardization of royalties #116
Changes from 7 commits
be4ea47
c93421a
0dde361
d52e018
5e67f20
003c993
c732b3e
94a2f14
568b437
e77ab97
93ffbfe
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
|
||
|
||
## Simple Summary | ||
|
||
A community standard for royalties' functionality, that does not require smart contracts to implement. | ||
|
||
## Abstract | ||
|
||
This proposed standard will allow for uniform royalties' distributions across the secondary market space. It is easy to implement using metadata only, and does not require a smart contract. However, it is scalable to allow for the usage of a downstream smart contract, as needed by the asset creator. It has been developed with input from Artano, BuffyBot, CNFT.io, Digital Syndicate, Fencemaker, MADinArt, NFT-Maker.io, Hydrun, Tokhun, and many more. | ||
|
||
## Motivation | ||
|
||
There is a significant interest within the Cardano Community for an implementation of royalties distribution when a Cardano Asset is resold on the secondary market. It has become a common theme to see and hear statements that the only thing stopping artists from adopting Cardano, is that they are waiting for an implementation of royalties. At the present time, smart contracts do not create a simple mechanism to implement royalties. By developing a community standard, we can resolve the immediate need for royalties, and create a path forward for a potential future iteration of smart contracts. | ||
|
||
## Specification | ||
|
||
A new tag of 777 is proposed for this implementation. The community guidelines have been agreed as follows: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add the tag to the registry as well instead of just mentioning the tag in your CIP There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will do |
||
1) A brand new unused policy for implementation is required. | ||
2) The royalties tags are to be written to an unnamed token, using the policy to be used for the intended Cardano Assets. | ||
3) Only the first minted set of instructions will be honored. Any future updates or rewrites will be ignored. This prevents a Cardano Asset maker from changing the royalties at a future date. | ||
4) Within this created asset will be the metadata for royalties distributions. It will use a tag of 777, and then have two tags to identify the percentage of future sales requested as a royalty, and the payment address to forward those royalties to. Those tags will be "pct" and "addr" respectively. | ||
5) The "pct" key tag can be any floating point value from 0.0 to 1.0, to represent between 0 and 100 percent. For example, a 12.5 percent royalty would be represented with "pct": "0.125". | ||
6) The "addr" key tag can be a string value, or an array. It is to include a single payment address. By allowing for an array, the payment address can exceed the per line 64 character limitation. This payment address could be part of a smart contract, which should allow for greater flexibility of royalties distributions, controlled by the asset creator. | ||
7) The royalty token must be minted prior to creating any assets off the policy. All markets will be instructed to look only for the first minted asset on a policy, which would need to be the unnamed 777 token. | ||
|
||
## Example JSON with string | ||
|
||
{ | ||
"777": { | ||
"pct": "0.2", | ||
"addr": "addr1v9nevxg9wunfck0gt7hpxuy0elnqygglme3u6l3nn5q5gnq5dc9un" | ||
} | ||
} | ||
|
||
## Example JSON with array | ||
|
||
{ | ||
"777": { | ||
"pct": "0.2", | ||
"addr": [ | ||
"addr1q8g3dv6ptkgsafh7k5muggrvfde2szzmc2mqkcxpxn7c63l9znc9e3xa82h", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there a benefit to using bech32 here? You could save space by just saving a byte array for the address. The benefit of bech32 is the checksum and the fact it's more human readable, but this CIP is mostly for machines to read, not humans. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the other hand, humans will be crafting this metadata when minting their assets. Seems like a useful place for checksum-ing. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I would expect the JSON will be generated by the "user-facing application" where user can enter bech32 address and the app can convert it to byte array... even people who will be creating NFTs using CLI should at least feed the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
How to make a byte-array in a metadata.json for a transaction? This is not a supported format currently. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The key goal for this standard is simplicity. We know that allot of NFT Makers are not technical, and use third party mint services like NFT-Maker.io. But then you have the mid technical level people that are able to manage creating their own assets, but havent dived deep enough in to the blockchain theory to make the jump from BECH32 to byte array. I know for myself personally, I have used @gitmachtl scripts for 90% of all of my minting/sending/burning etc. Although I am able to do everything manually. I would anticipate tools that help generate this 777 mint coming to fruition. And the people that would likely use those, would be accustom to the BECH32 format. I'm planning to attend the next CIP call in 2 weeks. I'm happy to present this on that call, and answer any questions anyone has. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Bytestrings are supported when hex-encoded (and prefaced with There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, i learned something today: 1.) the documentation example is wrong 😄 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. to be clear, this array will not be used for multiple addresses correct? it is currently there only to overcome character limitations? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. i dont think |
||
"pf39scc37tcu9ggy0l89gy2f9r2lf7husfvu8wh" | ||
] | ||
} | ||
} | ||
|
||
## Process Flow | ||
1) Create policy for planned assets. | ||
2) Mint no name token with community standard royalties metadata. | ||
huths0lo marked this conversation as resolved.
Show resolved
Hide resolved
|
||
3) Burn no name token to free up UTxO (recommended, but not required). | ||
4) Mint planned assets using this same policy. | ||
|
||
## Rationale | ||
|
||
By creating a new tag for the distinct purpose of royalties distributions, Cardano Asset makers, and Marketplaces can uniformly apply royalties to assets with predictable results. By creating the instructions on a single, no name token, all marketplaces will know the correct location of the royalties asset, without having to further locate it. By enforcing the requirement of honoring only the first mint, cardano asset buyers and owners can predict the future resale value of the assets in their possession. The solution is scalable to any desired royalty percentage. It is easy to work with this new standard, and does not require an in depth understanding of smart contracts. | ||
|
||
## Change Log | ||
|
||
## Initial proposal - August 14th, 2021 | ||
## Revised proposal - August 28th, 2021 | ||
## Minor Revision - August 31st, 2011 | ||
## Minor Revision - September 27th, 2021 | ||
|
||
Copyright | ||
|
||
This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for adding a tentative header with author/title/etc..
(also the tentative file should be added in the proper directory subfolder (/CIP-0027/)