mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-07 10:47:23 +00:00
5d81f23f8f
* First reworking of fungibles API * New API and docs * More fungible::* API improvements * New ref-counting logic for old API * Missing files * Fixes * Use the new transfer logic * Use fungibles for the dispatchables * Use shelve/restore names * Locking works with total balance. * repotting and removal * Separate Holds from Reserves * Introduce freezes * Missing files * Tests for freezing * Fix hold+freeze combo * More tests * Fee-free dispatchable for upgrading accounts * Benchmarks and a few fixes * Another test * Docs and refactor to avoid blanket impls * Repot * Fit out ItemOf fully * Add events to Balanced traits * Introduced events into Hold traits * Fix Assets pallet tests * Assets benchmarks pass * Missing files and fixes * Fixes * Fixes * Benchmarks fixes * Fix balance benchmarks * Formatting * Expose fungible sub modules * Move NIS to fungible API * Fix broken impl and add test * Fix tests * API for `transfer_and_hold` * Use composite APIs * Formatting * Upgraded event * Fixes * Fixes * Fixes * Fixes * Repot tests and some fixed * Fix some bits * Fix dust tests * Rename `set_balance` - `Balances::set_balance` becomes `Balances::force_set_balance` - `Unbalanced::set_balance` becomes `Unbalances::write_balance` * becomes * Move dust handling to fungibles API * Formatting * Fixes and more refactoring * Fixes * Fixes * Fixes * Fixes * Fixes * Fixes * Fixes * Fixes * Fixes * Use reducible_balance for better correctness on fees * Reducing hold to zero should remove entry. * Add test * Docs * Update frame/support/src/traits/tokens/fungibles/hold.rs Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> * Update frame/support/src/traits/tokens/fungibles/regular.rs Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> * Update frame/support/src/traits/tokens/fungible/hold.rs Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> * Update frame/support/src/traits/tokens/fungible/regular.rs Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> * Docs * Docs * Docs * Fix NIS benchmarks * Doc comment * Remove post_mutation * Fix some tests * Fix some grumbles * Enumify bool args to fungible(s) functions * Fix up assets and balances * Formatting * Fix contracts * Fix tests & benchmarks build * Typify minted boolean arg * Typify on_hold boolean arg; renames * Fix numerous tests * Fix dependency issue * Privatize dangerous API mutate_account * Fix contracts (@alext - please check this commit) * Remove println * Fix tests for contracts * Fix broken rename * Fix broken rename * Fix broken rename * Docs * Update frame/support/src/traits/tokens/fungible/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * remove from_ref_time * Update frame/executive/src/lib.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/executive/src/lib.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Reenable test * Update frame/support/src/traits/tokens/fungibles/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/currency.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/lottery/src/tests.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/mod.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/regular.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungibles/freeze.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungible/regular.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungibles/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungibles/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Update frame/support/src/traits/tokens/fungibles/hold.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Rename UnwantedRemoval to UnwantedAccountRemoval * Docs * Formatting * Update frame/balances/src/lib.rs Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Update primitives/runtime/src/lib.rs Co-authored-by: Keith Yeung <kungfukeith11@gmail.com> * handle_raw_dust oes nothing * Formatting * Fixes * Grumble * Fixes * Add test * Add test * Tests for reducible_balance * Fixes * Fix Salary * Fixes * Disable broken test * Disable nicely * Fixes * Fixes * Fixes * Rename some events * Fix nomination pools breakage * Add compatibility stub for transfer tx * Reinstate a safely compatible version of Balances set_balance * Fixes * Grumble * Update frame/nis/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_balances * disable flakey tests * Update frame/balances/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Grumbles * Grumble --------- Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> Co-authored-by: Alexander Theißen <alex.theissen@me.com> Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: Keith Yeung <kungfukeith11@gmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: command-bot <>
NFTs pallet
A pallet for dealing with non-fungible assets.
Overview
The NFTs pallet provides functionality for non-fungible tokens' management, including:
- Collection Creation
- NFT Minting
- NFT Transfers and Atomic Swaps
- NFT Trading methods
- Attributes Management
- NFT Burning
To use it in your runtime, you need to implement nfts::Config.
The supported dispatchable functions are documented in the nfts::Call enum.
Terminology
- Collection creation: The creation of a new collection.
- NFT minting: The action of creating a new item within a collection.
- NFT transfer: The action of sending an item from one account to another.
- Atomic swap: The action of exchanging items between accounts without needing a 3rd party service.
- NFT burning: The destruction of an item.
- Non-fungible token (NFT): An item for which each unit has unique characteristics. There is exactly one instance of such an item in existence and there is exactly one owning account (though that owning account could be a proxy account or multi-sig account).
- Soul Bound NFT: An item that is non-transferable from the account which it is minted into.
Goals
The NFTs pallet in Substrate is designed to make the following possible:
- Allow accounts to permissionlessly create nft collections.
- Allow a named (permissioned) account to mint and burn unique items within a collection.
- Move items between accounts permissionlessly.
- Allow a named (permissioned) account to freeze and unfreeze items within a collection or the entire collection.
- Allow the owner of an item to delegate the ability to transfer the item to some named third-party.
- Allow third-parties to store information in an NFT without owning it (Eg. save game state).
Interface
Permissionless dispatchables
create: Create a new collection by placing a deposit.mint: Mint a new item within a collection (when the minting is public).transfer: Send an item to a new owner.redeposit: Update the deposit amount of an item, potentially freeing funds.approve_transfer: Name a delegate who may authorize a transfer.cancel_approval: Revert the effects of a previousapprove_transfer.approve_item_attributes: Name a delegate who may change item's attributes within a namespace.cancel_item_attributes_approval: Revert the effects of a previousapprove_item_attributes.set_price: Set the price for an item.buy_item: Buy an item.pay_tips: Pay tips, could be used for paying the creator royalties.create_swap: Create an offer to swap an NFT for another NFT and optionally some fungibles.cancel_swap: Cancel previously created swap offer.claim_swap: Swap items in an atomic way.
Permissioned dispatchables
destroy: Destroy a collection. This destroys all the items inside the collection and refunds the deposit.force_mint: Mint a new item within a collection.burn: Destroy an item within a collection.lock_item_transfer: Prevent an individual item from being transferred.unlock_item_transfer: Revert the effects of a previouslock_item_transfer.clear_all_transfer_approvals: Clears all transfer approvals set by calling theapprove_transfer.lock_collection: Prevent all items within a collection from being transferred (making them allsoul bound).lock_item_properties: Lock item's metadata or attributes.transfer_ownership: Alter the owner of a collection, moving all associated deposits. (Ownership of individual items will not be affected.)set_team: Alter the permissioned accounts of a collection.set_collection_max_supply: Change the max supply of a collection.update_mint_settings: Update the minting settings for collection.
Metadata (permissioned) dispatchables
set_attribute: Set a metadata attribute of an item or collection.clear_attribute: Remove a metadata attribute of an item or collection.set_metadata: Set general metadata of an item (E.g. an IPFS address of an image url).clear_metadata: Remove general metadata of an item.set_collection_metadata: Set general metadata of a collection.clear_collection_metadata: Remove general metadata of a collection.
Force (i.e. governance) dispatchables
force_create: Create a new collection (the collection id can not be chosen).force_collection_owner: Change collection's owner.force_collection_config: Change collection's config.force_set_attribute: Set an attribute.
Please refer to the Call enum
and its associated variants for documentation on each function.
Related Modules
License: Apache-2.0