-
Notifications
You must be signed in to change notification settings - Fork 35
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
RIP-009: "Issuer-owned" Markets #16
Comments
Good stuff, but also good questions to answer before implementing. |
to answer the open questions I laid out in the way that I believe they should be answered:
No - it should be something akin to the supply of the token - a part of the nature of the NFT, and the creator should be the one to determine their reward on minting, future issuers should not have the ability to change this value either, for the same reason (it may change the nature of the work). Incidentally if this is a feature creators do indeed want to have available to them, I'd suggest either upgrading the changeissuer action to include a new optional
Should respect changeissuer, and in the future perhaps we should have methods to
Percent is sufficient imo - at more precise values, the transaction fees for purchasing low price NFTs will start becoming higher than the actual payment to the issuer.
It may be possible to overload/modify the |
I agree.
Sounds good to me.
You mean because the added byte weight of the extrinsic will outweigh the fee? We should also keep in mind the possible ED issues. There is another consideration - nothing prevents someone from wrapping the token to avoid these sales, and then trading the wrapper. Finally unwrapping when ready to claim. |
A wrapped version of an NFT feels like "this is in the process of being traded", because presumably the "owner" of the NFT will be the wrapper for the period of time that is going on, and then once it gets unwrapped, it finally gets transferred to the real owner. This kind of explains the "reward the previous seller upon next sale" in Zora because it gives every owner of the wrapped NFT incentive to unwrap - I'm just reluctant to add that to the spec atm because I'm not sure how difficult it is to retrieve a list of previous owners of an NFT. edit: did it. |
For simplicity, I would propose the following upgrade: How would it work? Caveats: Why royalty?
|
Royalty is a better name 👍
I see this as very problematic in different apps consolidating it. Some might drop a single remark like this and all their sales will be rendered invalid. A clumsy team might fall into this trap if they don't test or have plenty of dry runs in a local environment. I think I prefer the in-JSON royalty value, that way it's bound to the NFT (or collection) and cannot be ignored. |
I don't like the idea of future owners adding a royalty to an NFT that goes to themselves perpetually - it makes sense for the creator or issuer to be sustained perpetually by their past work, that's the purpose of this mechanism, to help artists get what has traditionally gone exclusively to early collectors, but a curator should not have perpetual ownership of the revenue of a work they did not create - that's why I've defined it in the proposal as going to subsequent owners, and not just the first N owners of an NFT
yes, absolutely :D |
One additional kink that I think would be useful is to differentiate between the original This could be accomplished by adding an optional |
Leaving this here just as useful tidbit https://eips.ethereum.org/EIPS/eip-2981 |
RIP Summary
An extension/modification of the Buy and Mint interactions to allow issuers to specify a proportion of the value of the operation that must be paid directly to the current(?) issuer and previous owners of an NFT on purchase.
RIP Details
Issuance-side
An OPTIONAL additional field to the minified JSON for the MINT interaction - for the creator reward, or
cr
1.0.0 Json:
and post-upgrade:
post-upgrade with additional rewards for "curators":
A value's position in the array of
cr
represents a Percent value of any Buy operation that should be sent to a historical owner of an NFT, and the final element represents the percentage that should be sent to the current issuer.Both examples above represent 10% of the sale price of an NFT being sent to accounts other than the seller, but the first example represents 10% going entirely to the issuer, and the second represents 5% going to the issuer, with 3%, 1%, and 1% going to 3rd, 2nd, and immediate subsequent owners of the NFT prior to the current seller.
A quick hint for implementors to use when calculating which accounts are represented by which element in the
cr
list is (pseudocode):Purchase-side
Currently, as of the 1.0.0 spec,
To complete a purchase, we submit a utility.batchAll call comprised of two transactions:
where
CpjsLDC1JFyrhm3ftC9Gs4QoyrkHKhZKtK7YqGTRFtTafgp
is the current owner of an NFT.This upgrade would require an additional check - did the collection have a non-zero
cr
when minted - and if this check is true, the sale amount is split between the seller and the issuer - in practice, this means that an additional transfer should be added to the batch.An example of the above purchase with
cr
of10
, and issuerH9eSvWe34vQDJAWckeTHWSqSChRat8bgKHG39GC1fjvEm7y
:From the perspective of the purchaser, every element in the
cr
array represents an additionalbalances.transfer
call to add to their batch, with the address of the recipient being a historical owner of the NFT.Note that the proposed standard is to take the amount out of the stated listing price, and not add a fee on top of it - this is to prevent a purchaser paying more than the stated price for a listing.
Examples
I am creator, I create a collection and state that sales of NFTs within the collection are only valid when 1% of the sale price is sent to me as well as the current owner.
When someone buys an NFT that I am an issuer of, that is using this mechanism, they add an additional extrinsic to the batch with my cut.
So if I create a highly sought-after artwork, I will have a constant source of income - or if an artwork I created eventually gets sold for a very significant amount, I benefit from the appreciation.
Open Questions
should this be something modifyable by issuer? how would they do so?
should this be something that always goes to the "real" creator of a collection, or should this respect changeissuer?
what degree of precision should
cr
allow? (example above is Percent, but it may also be Permill, Perbill, represented by a decimal/floating value, etc.)Should non-purchase transfers be disallowed to prevent out-of-channel sales of an NFT?
Prior work (optional)
Zora.co
Impact
This would be a backwards-incompatible change, so implementers should not display listings (for purchase) that use this feature - ie, they have a
cr
field in the collection - unless they have implemented it themselves. This should be easy to determine and filter for, however.Tools would have to be modified so that consolidator may keep track of
cr.len - 1
historical owners of an NFT.The text was updated successfully, but these errors were encountered: