paritytech / polkadot-sdk

The Parity Polkadot Blockchain SDK
https://polkadot.network/
1.81k stars 660 forks source link

Tokens Horizon #327

Open gavofyork opened 3 years ago

gavofyork commented 3 years ago

FTs:

NFTs:

Associated paritytech/substrate#8285

olanod commented 3 years ago

Perhaps something for the TODO list and more of a question to hear some ideas, would it make sense to make the Assets pallet instantiable? My motivation is, first that it doesn't harm and second that it makes working with unrelated groups of assets a bit more convenient and conceptually more correct, if I have a pallet depending on some fungibles::* that have something in common and are a subset of the potentially bigger set that the one Assets instance will store I often need some extra config in my pallet to be able to filter out assets from that bigger set. With different instances of Assets I relax more and trust the pallet will be configured with right subset of assets and just rely on the type system to do the "filtering" at compile time instead. I imagine I could also query the asset to see if it comes with some label or something in its T::Extra data but also seems like extra work.

gavofyork commented 3 years ago

I would accept a PR that did it, but the other items on the list are somewhat more pressing.

olanod commented 3 years ago

PR is there in case you feel like giving it a quick look in a coffee/bubble tea break 😉 https://github.com/paritytech/substrate/pull/8483

chrisdcosta commented 3 years ago

Can this new token stuff be optional for chains that don't want or need multi-currency support? It seems to be baked in - unless I'm missing something?

gavofyork commented 3 years ago

All multi-currency stuff will continue to be completely optional.

danforbes commented 3 years ago

I'm curious about the thoughts/plans that exist around non-fungible token standards and would like to offer my contributions if they can be of help. I am the author of a pallet that defines and implements a UniqueAssets trait and have also worked with the ORML NFT pallet. I would like to start by creating some specifications around the key/value pairs that may exist as attributes on an NFT. What are the expectations that exist around the presence of certain attributes, the values they may take, and how those values impact the presence of other attributes and their possible values? I think it would be productive to follow an approach that is similar to/inspired by the OpenAPI (nee Swagger) specification.

pmensik commented 3 years ago

I am actually really interested in this initiative as well since we are about to start the development of a generic auction pallet for different NFT implementations (we have already delivered PoC on top of the orml-nft). So I wonder which NFT implementation is gaining the most traction at the moment and what can we do to help the standardization process within Polkadot/Kusama ecosystem. We have created our own tracking issue inside the project so definitely appreciate any of your thoughts!

Swader commented 3 years ago

I would also like to participate in the NFT specification in some way, given that RMRK (which has picked up considerable steam) is, functionality-wise, far more advanced that typical NFTs are (we have nested NFTs, on-chain emotes as price discovery and signal, reactive NFTs with conditional rendering, equip mechanics, and NFTs being governed as DAOs). If we can help somehow or contribute to the discussions around speccing all this out, we'd love to.

iorveth commented 3 years ago

I spotted a couple of potential issues/areas of improvement for nonfungible(s) traits and uniques pallet. Let me know if you are interested in further contributions, please https://github.com/paritytech/substrate/issues/9208, https://github.com/paritytech/substrate/issues/9207, https://github.com/paritytech/substrate/issues/9211, https://github.com/paritytech/substrate/pull/9206

kinosang commented 2 years ago

do we really need a AssetsFreezer pallet? could we just implement fungibles::Hold in assets pallet?

flipchan commented 2 years ago

It would be really nice to get a freeze function that can freeze X amount of a certain asset's. Similar to how it's doable with "T::Currency::freeze(AccountId, Balance)?". I am currently manually implementing this in the LLM pallet(the freeze X amount of a certain asset, where the use case is that asset's work similar to tokens) at https://github.com/liberland/liberland_substrate . It would be great to have this built into the asset pallet, as this can then be expanded and it will allow implementations such as: Voting using pallet-democracy and the chain holding the on-chain asset's to vote with the onchain asset's instead of what's currently just a T::Currencyfreeze with pallet democracy.

Polkadot-Forum commented 1 year ago

This issue has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/statemint-update-roadmap/1200/1