Comments (20)
Thanks @bjartek! Yeah there is talk about something similar to this on Ethereum marketplace contracts following issues with listings that folks didn't know were valid still (off-chain models like OpenSea being the main risks). The use of some kind of nonce is in discussion so that if I make multiple listings with the same nonce, one being filled will invalidate the others automatically. There's definitely an even better option as highlighted above that basically invalidates all orders whenever an item is transferred at all which should help secure things from folks losing their NFTs if they put an item back into a wallet that listed that same item previously.
from flow-nft.
I am wondering if this can just be part of identity #56
from flow-nft.
Finally seeing this in relation to #56. How would we increment the nonce?
from flow-nft.
In my example nft I have a counter I increment in the deposit function.
from flow-nft.
My first impression is that this is a bit unnecessary. Is the problem you're saying it solves really that big of a problem? Maybe I am just unaware
from flow-nft.
So StoreFront will check this nonce?
from flow-nft.
My first impression is that this is a bit unnecessary. Is the problem you're saying it solves really that big of a problem? Maybe I am just unaware
yes, this was a huge problem on ethereum around December/January. Old listings for assets that are now very highly valued were sniped at prices from 6+ months prior (sometimes less than 5% of their current value). Here's a breakdown of the timing:
- I list an nft for sale
- I move the nft because I either no longer want to sell it or I need to get it to another wallet (maybe this is for a topshot challenge or something). The listing I made is no longer valid in that it cannot be matched on-chain
- Time passes
- Eventually, I move the nft back to the wallet that I listed it with
- That listing is now valid, anyone can fill it so long as it hasn't expired provided that it has an expiration
A nonce approach (or something similarly named) is there to make sure that when you move something, anything that could move or tamper with that item is no longer valid, storefronts are just one example. It is a defensive mechanism to give dapps a way to not expire things while still preventing this vulnerability
from flow-nft.
I agree with the problem but I think nonce
is too smart idea to be adopted. Who should adopt this? Marketplace, StoreFront, NFT standard?
from flow-nft.
The NFT standard would have to implement it. Any application which facilitates movement of the nft could then check for it. This cannot be maintained by the storefront because this issue can persist across marketplaces or just from me withdrawing the nft manually and then putting it back later
from flow-nft.
I think this probably needs a bit more discussion before adding it as a view. I also added it to the list of potential improvements to the NFT standard in that issue so it is documented there.
from flow-nft.
@austinkline yeah agreed, but also I think if NFT standard
implements this, then StoreFront
also has to be updated to use the nonce. If not we are at square one. I agree with @joshuahannan on this, as this will require multi parties and changes to NFT standard, maybe better to make it another discussion. Half baked solution will be worse than no solution.
from flow-nft.
Absolutely on needing more discussion! Happy to pick that up wherever necessary.
from flow-nft.
Hey @bjartek, I really like the idea myself but just want to know what other problem statement you can think it can solve because we can consider listing problems to be the UX problem and it can be solved using some smart projects like https://epns.io/ that will help to solve the problem and let the users know when to delete there pending listings.
from flow-nft.
IMHO a view should solve a single problem. Nounce solved the problem of detecting if an nft has moved since the last you saw it.
EPNS looks exciting, are there plans to support flow here? Creating Reactive Blockchain applications that can react to events would be lovely.
from flow-nft.
@bjartek we can reach out to them and ask them to support the flow or can someone from the community can build something to provide the native support for the same. The only reason I am thinking that it would not be worth introducing the same is that this problem can be better solved by better tooling. Interested to hear your thoughts.
from flow-nft.
@bjartek I am in favour of closing this issue and achieving this through tooling like EPNS. WDYT ?
from flow-nft.
Closing this issue, If anything interesting comes up again we can re-open this.
from flow-nft.
I have to expose this view in .finds own shared views then and just tell people to implement it if they want this added security. Works for me.
from flow-nft.
added security in listing the NFTs over the NFT storefront ?
from flow-nft.
There are other ways of selling and NFT then the storefront. Or even selling it. I was peoposing an alternative to stop one usecase as described in this issue. I can live with the outcome as is.
from flow-nft.
Related Issues (20)
- Update flow-nft contracts to comply with Stable Cadence changes HOT 1
- Developer Portal broken link HOT 2
- Normalize flow.json HOT 3
- Adequate comments to docgen tool and include generated docs in repo HOT 3
- Create an example of an NFT burner HOT 5
- MetadataViews.getXXX functions does not work with INFT HOT 4
- Adding support in MetadataViews to support viewing nested resources HOT 17
- Packs Metadata Standard HOT 11
- Add a view to capture constraints that IP rights holders may require consumers of their IP to observe HOT 19
- Add new `attributes` field and associated views. HOT 11
- View to Describe Actions that can be taken on an NFT HOT 6
- Extended Edtition view HOT 6
- Flow NFT contracts do not implement a standard way to name their public collection path HOT 3
- ERC 1155 like NFTs are not properly supported by metadata views HOT 16
- Contracts not deployed to emulator by default, update docs to provide guidance
- Update MetadataViews Collection views to include more flexible public & private types HOT 17
- Fetch NFT metadata with storage iteration HOT 1
- Create a Document for the docs site that explains what each metadata view is for and how to use it
- Destroying an NFT should trigger an event HOT 3
- Impossible to count number of NFTs in large collections and get the IDs HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flow-nft.