-
Notifications
You must be signed in to change notification settings - Fork 170
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
MetadataViews over complexify previous design #85
Comments
can you give an example to this? This feels like wrong conclusion |
Hi @bluesign Here is a concrete example. The Flovatar contract implements the previous NFT metadata standard: This pub resource interface CollectionPublic { .. } A new user that acquires a Flovatar would have this link created by the marketplace or wallet that managed the purchase. The BarterYardClub contract implements the new MetadataViews standard: The contract does not have an interface but exposes data using Views. signer.link<&BarterYardClubWerewolf.Collection{NonFungibleToken.CollectionPublic, MetadataViews.ResolverCollection}>
(BarterYardClubWerewolf.CollectionPublicPath, target: BarterYardClubWerewolf.CollectionStoragePath) to finally have access to the same data as the first example. Given that the second contract uses a custom view So IMO there is additional complexity both in creating the contract code to define views and the code needed on the connector to read from views while one could just read the public methods. |
@cybercent ok but this is not per view type, it is But the reason for this is,
In the new standard it is roughly like below, it is even more embedded. [0]
It is a bit transition period in my opinion. For the second part, design decision there is making a custom view or implementing some other standard view is decision left to developer. As such for example viv3 can request from dapps to implement a [0] https://forum.onflow.org/t/streamlined-token-standards-proposal/3075/9 |
Based on your experience @cybercent I see where you have doubts about this. But I would argue that the metadata standard has a lot of merrit. IntentionThe intention was never that each provider should defined their own views that should be used for interop against consumers. The intention was that there should be standardized views that the community agree upon that providers can then implement to expose their contracts to the functionality that consumers provide. Another aspect that was always intended was that NFT.CP should have get StatusThe status so far is that the PR for default implementaion is done and awaiting review and merge thanks to @bluesign There are many views that are already present in MetadataViews (https://github.com/onflow/flow-nft/blob/master/contracts/MetadataViews.cdc) such as
And there are many more that are beeing worked on like
|
Instructions
While the MetadataViews proposal strives to add more structure to NFT metadata is actually adds unnecessary complexity.
Issue To Be Solved
Perviously, each contract defined their interface and a list of methods that could be called to get various data from the contract.
In the new proposal, each contract is defining their own custom views.
When a Dapp, needs to setup a new account to be used with a specific contract, that Dapp needs to setup the new account with all the views that were defined in the contract otherwise the metadata exposed by those views will not be available.
Additionally, the main problem, a metadata standard is not solved as the developer still needs to look through the contract code and define custom scripts to use the custom view functions defined in each contract.
(Optional): Suggest A Solution
Abandon MetadataViews and rely on previous design.
Propose new metadata standard.
(Optional): Context
When a user purchases an NFT on a marketplace, the marketplace needs to link all the metadata views defined by the contract that minted the NFT otherwise the views won't be accessible.
Previously the marketplace only needed to link one specific interface per contract.
As I see there are other issues proposing different types of views I suggest taking a pause and re-evaluating if this is not going in the wrong direction.
The text was updated successfully, but these errors were encountered: