-
Notifications
You must be signed in to change notification settings - Fork 319
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
SEP-39: NFT minting and interoperability recommendations #1140
Conversation
cc @FredericRezeau and @grempe for visibility from the last thread |
bf1177e
to
ebf8724
Compare
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.
I think we should add language that encourages users to minimize using on-chain data to the minimum necessary to accomplish their use case. I would like to acknowledge the need to balance security and data integrity with the consumption of network resources, I think its worth reminding people that consuming those resources has the potential to drive up overall costs to operate and use the network which can impact the networks ability to support the broader mission of access and inclusion by pricing out users with less means.
We already mention examples on other chains of uses and standards for NFTs, it might also be worth while to call out in the design rationale or motivation section the negative impacts NFTs have had at times on those chains capacity and fees and remind users how they can help mitigate those negative outcomes.
Many thanks, this looks great, I just have 2 additional comments/suggestions.
The display decimals field cannot be used for the purpose of displaying 0.0000001 as 1 (display_decimals=7 simply instruct clients to display amounts with 7 decimals so a stroop would still be shown as 0.0000001). To be able to represent 1 stroop as
If the |
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.
Some suggested tweaks (💡), but overall I think this does a good job of capturing existing practices. I have one question (❓).
ecosystem/sep-TBD.md
Outdated
## Design Rationale | ||
A key component of a flourishing NFTs marketplace is _interoperability_: that drives all of the design decisions in this informational SEP. The [first section](#minting-nfts) is a set of best practices for a _particular_ set of needs in creating NFTs. There is no "one size fits all" way to do this, so creators should feel free to deviate from the recommendations to fulfill their needs. The [second section](#representing-nfts) adds some extremely flexible fields to SEP-1 to accomodate the fact that NFTs can be anything. | ||
|
||
It's worth noting that the idea of "ownership" described throughout the SEP—ownership of an asset and its relationship to owning the respective NFT—is a little diluted: neither the network nor a standard can make any claims about _legitimacy_ of the NFT itself. Owning a unit of the Stellar asset representing your NFT is a way to establish a _relationship_ between buyer and seller that is _linked_ to the NFT, nothing more. |
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.
💡
It's worth noting that the idea of "ownership" described throughout the SEP—ownership of an asset and its relationship to owning the respective NFT—is a little diluted: neither the network nor a standard can make any claims about _legitimacy_ of the NFT itself. Owning a unit of the Stellar asset representing your NFT is a way to establish a _relationship_ between buyer and seller that is _linked_ to the NFT, nothing more. | |
It's worth noting that the idea of ownership described throughout the SEP—ownership of an asset and its relationship to owning the respective NFT—is a little diluted: neither the network nor a standard can make any claims about _legitimacy_ of the NFT itself. Owning a unit of the Stellar asset representing your NFT is a way to establish a _relationship_ between buyer and seller that is _linked_ to the NFT, nothing more. |
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.
The quotes add emphasis, imo. What's the rationale to drop them?
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.
I avoid emphasis in SEPs because it suggests that one statement is more important than another. Usually in the SEPs everything is equally important, if something isn't important we probably shouldn't include it. Quotes are also an interesting way to emphasize because most of the time on a single word I read them like air quotes, which loosens meaning of the word.
I generally agree with this statement:
The strength of your words should make any formatting unnecessary, but if you really want to emphasize something, use boldface or italics.
Ref: https://leffcommunications.com/2017/03/10/how-to-use-quotation-marks/
(The exception with emphasis is that we've found in some SEPs where there are a significant number of components emphasising with bold component names can help navigate long and confusing flows. Kudos to @JakeUrban for coming up with that.)
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.
Quotes are also an interesting way to emphasize because most of the time on a single word I read them like air quotes, which loosens meaning of the word.
You hit the nail on the head here: the concept of ownership
is loosened here from what people are used to (I used the wrong word "emphasis" earlier), and that loosening is qualified by the remainder of the paragraph.
Regardless, I don't feel strongly, was just curious about the rationale. Appreciate the link 👍
ecosystem/sep-TBD.md
Outdated
[[CURRENCIES]] | ||
issuer="GAKZGD5BFXZ7P7P45WHTM6DODMOEWWJUSCAIPGYIVIPYQSVR6MM6YR7M" | ||
code="DEMOASSET" | ||
name="A demonstration of NFT metadata" | ||
desc="This is a description of the cool NFT used in this demo." | ||
image="https://cloudflare-ipfs.com/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/I/m/RickAstleyNeverGonnaGiveYouUp7InchSingleCover.jpg" | ||
fixed_number=1 | ||
display_decimals=7 |
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.
One thing I notice is that there is no way to distinguish an NFT from other types of assets. A wallet might assume that the url
field specified below as a SEP-1 extension is a good signal for an NFT, but url
is very generic and it is very possible it'll be used for more general purposes.
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.
Do you have a suggestion on how to improve this? We need a generic way to describe the NFT backing the token since it doesn't have to be an image/video/etc.
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.
SEP-1's anchor_asset_type
field, and related fields, probably already fit the bill:
stellar-protocol/ecosystem/sep-0001.md
Lines 131 to 133 in 623a2d3
is_asset_anchored | boolean | `true` if token can be redeemed for underlying asset, otherwise `false` | |
anchor_asset_type | string | Type of asset anchored. Can be `fiat`, `crypto`, `stock`, `bond`, `commodity`, `realestate`, or `other`. | |
anchor_asset | string | If anchored token, code / symbol for asset that token is anchored to. E.g. USD, BTC, SBUX, Address of real-estate investment property. |
It doesn't exactly match because anchoring specifies that the anchor will give you asset referenced in exchange for your token, where-as with NFTs you hold the token and can retrieve the asset at the same time without giving up your token. We probably don't need to be strict about these semantics though.
It would be ashame to add another field when anchor_asset_type
already support things like "real estate".
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.
But this is just a type rather than a value; we still need a generic way to refer to the asset itself 🤔
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.
What about a representation=<url>
field pointing to a URL? If the issue is that url=<url>
is too generic
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.
Representation is pretty generic too. Is this URL intended to be the actual resource, like the final file, or will it be the JSON referenced by the ipfshash?
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.
Maybe url
is fine given that we can't easily pin it down to something else.
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.
Just to respond: it should be the actual resource
Co-authored-by: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com>
Co-authored-by: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com>
@FredericRezeau good call about |
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.
LGTM
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.
lgtm. 🚢 it
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.
Looks like there are approvals and consensus. Before this is merged, an you address the administrative things below, then I think it's good to go?
ecosystem/sep-0039.md
Outdated
Title: Interoperability Recommendations for NFTs | ||
Authors: Tomer Weller <tomer@stellar.org>, Frederic Rezeau <frederic.rezeau@gmail.com> | ||
Track: Informational | ||
Status: Active |
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.
I think we should leave this in draft status for some period of time to let this develop a little? Or did we already discuss status somewhere and progressing it?
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.
I thought that was the point of this PR and all of the prior iterations around this topic 🤔 maybe FCP?
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.
Amended in d8b3386
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.
👏🏻
This is a follow-up on #1111, amended to instead create a unified place for best practices for "NFTs" on Stellar rather than strict standards. It also extends SEP-1 to allow a
[[CURRENCIES]]
entry to represent any value rather than be limited to a currency with an optional image representation.