• lanaivina's avatar
    NFTs fractionalization (#12565) · 41dbed0b
    lanaivina authored
    
    
    * Copy Uniques into Nfts
    
    * Connect new pallet
    
    * Update weights
    
    * Nfts: Multiple approvals (#12178)
    
    * multiple approvals
    
    * clear
    
    * tests & clean up
    
    * fix in logic & fmt
    
    * fix benchmarks
    
    * deadline
    
    * test deadline
    
    * current_block + deadline
    
    * update ApprovedTransfer event
    
    * benchmark
    
    * docs
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * fmt fix
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * update tests
    
    * anyone can cancel
    
    * Update frame/nfts/src/tests.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * fmt
    
    * fix logic
    
    * unnecessary line
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Update frame/nfts/src/lib.rs
    
    * Update lib.rs
    
    * fmt
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * fmt
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * suggestion
    
    * new line
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Fixes
    
    * cargo fmt
    
    * Fixes
    
    * Fixes
    
    * Fix CI
    
    * Nfts: Fix Auto-Increment (#12223)
    
    * commit
    
    * passing benchmarks
    
    * clean up
    
    * sync
    
    * runtime implementation
    
    * fix
    
    * fmt
    
    * fix benchmark
    
    * cfg
    
    * remove try-increment-id
    
    * remove unused error
    
    * impl Incrementable for unsigned types
    
    * clean up
    
    * fix in tests
    
    * not needed anymore
    
    * Use OptionQuery
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Rename Origin to RuntimeOrigin
    
    * [Uniques V2] Tips (#12168)
    
    * Allow to add tips when buying an NFT
    
    * Chore
    
    * Rework tips feature
    
    * Add weights + benchmarks
    
    * Convert tuple to struct
    
    * Fix benchmark
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Update frame/nfts/src/benchmarking.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Fix benchmarks
    
    * Revert the bounded_vec![] approach
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * [Uniques V2] Atomic NFTs swap (#12285)
    
    * Atomic NFTs swap
    
    * Fmt
    
    * Fix benchmark
    
    * Rename swap -> atomic_swap
    
    * Update target balance
    
    * Rollback
    
    * Fix
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Make desired item optional
    
    * Apply suggestions
    
    * Update frame/nfts/src/features/atomic_swap.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Rename fields
    
    * Optimisation
    
    * Add a comment
    
    * deadline -> maybe_deadline
    
    * Add docs
    
    * Change comments
    
    * Add price direction field
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Wrap price and direction
    
    * Fix benchmarks
    
    * Use ensure! instead of if {}
    
    * Make duration param mandatory and limit it to MaxDeadlineDuration
    
    * Make the code safer
    
    * Fix clippy
    
    * Chore
    
    * Remove unused vars
    
    * try
    
    * try 2
    
    * try 3
    
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * [Uniques V2] Feature flags (#12367)
    
    * Basics
    
    * WIP: change the data format
    
    * Refactor
    
    * Remove redundant new() method
    
    * Rename settings
    
    * Enable tests
    
    * Chore
    
    * Change params order
    
    * Delete the config on collection removal
    
    * Chore
    
    * Remove redundant system features
    
    * Rename force_item_status to force_collection_status
    
    * Update node runtime
    
    * Chore
    
    * Remove thaw_collection
    
    * Chore
    
    * Connect collection.is_frozen to config
    
    * Allow to lock the collection in a new way
    
    * Move free_holding into settings
    
    * Connect collection's metadata locker to feature flags
    
    * DRY
    
    * Chore
    
    * Connect pallet level feature flags
    
    * Prepare tests for the new changes
    
    * Implement Item settings
    
    * Allow to lock the metadata or attributes of an item
    
    * Common -> Settings
    
    * Extract settings related code to a separate file
    
    * Move feature flag checks inside the do_* methods
    
    * Split settings.rs into parts
    
    * Extract repeated code into macro
    
    * Extract macros into their own file
    
    * Chore
    
    * Fix traits
    
    * Fix traits
    
    * Test SystemFeatures
    
    * Fix benchmarks
    
    * Add missing benchmark
    
    * Fix node/runtime/lib.rs
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Keep item's config on burn if it's not empty
    
    * Fix the merge artifacts
    
    * Fmt
    
    * Add SystemFeature::NoSwaps check
    
    * Rename SystemFeatures to PalletFeatures
    
    * Rename errors
    
    * Add docs
    
    * Change error message
    
    * Rework pallet features
    
    * Move macros
    
    * Change comments
    
    * Fmt
    
    * Refactor Incrementable
    
    * Use pub(crate) for do_* functions
    
    * Update comments
    
    * Refactor freeze and lock functions
    
    * Rework Collection config and Item confg api
    
    * Chore
    
    * Make clippy happy
    
    * Chore
    
    * Update comment
    
    * RequiredDeposit => DepositRequired
    
    * Address comments
    
    Co-authored-by: command-bot <>
    
    * [Uniques V2] Refactor roles (#12437)
    
    * Basics
    
    * WIP: change the data format
    
    * Refactor
    
    * Remove redundant new() method
    
    * Rename settings
    
    * Enable tests
    
    * Chore
    
    * Change params order
    
    * Delete the config on collection removal
    
    * Chore
    
    * Remove redundant system features
    
    * Rename force_item_status to force_collection_status
    
    * Update node runtime
    
    * Chore
    
    * Remove thaw_collection
    
    * Chore
    
    * Connect collection.is_frozen to config
    
    * Allow to lock the collection in a new way
    
    * Move free_holding into settings
    
    * Connect collection's metadata locker to feature flags
    
    * DRY
    
    * Chore
    
    * Connect pallet level feature flags
    
    * Prepare tests for the new changes
    
    * Implement Item settings
    
    * Allow to lock the metadata or attributes of an item
    
    * Common -> Settings
    
    * Extract settings related code to a separate file
    
    * Move feature flag checks inside the do_* methods
    
    * Split settings.rs into parts
    
    * Extract repeated code into macro
    
    * Extract macros into their own file
    
    * Chore
    
    * Fix traits
    
    * Fix traits
    
    * Test SystemFeatures
    
    * Fix benchmarks
    
    * Add missing benchmark
    
    * Fix node/runtime/lib.rs
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Keep item's config on burn if it's not empty
    
    * Fix the merge artifacts
    
    * Fmt
    
    * Add SystemFeature::NoSwaps check
    
    * Refactor roles structure
    
    * Rename SystemFeatures to PalletFeatures
    
    * Rename errors
    
    * Add docs
    
    * Change error message
    
    * Rework pallet features
    
    * Move macros
    
    * Change comments
    
    * Fmt
    
    * Refactor Incrementable
    
    * Use pub(crate) for do_* functions
    
    * Update comments
    
    * Refactor freeze and lock functions
    
    * Rework Collection config and Item confg api
    
    * Chore
    
    * Make clippy happy
    
    * Chore
    
    * Fix artifacts
    
    * Address comments
    
    * Further refactoring
    
    * Add comments
    
    * Add tests for group_roles_by_account()
    
    * Update frame/nfts/src/impl_nonfungibles.rs
    
    * Add test
    
    * Replace Itertools group_by with a custom implementation
    
    * ItemsNotTransferable => ItemsNonTransferable
    
    * Update frame/nfts/src/features/roles.rs
    
    Co-authored-by: default avatarMuharem Ismailov <[email protected]>
    
    * Address PR comments
    
    * Add missed comment
    
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarMuharem Ismailov <[email protected]>
    
    * Fix copy
    
    * Remove storage_prefix
    
    * Remove transactional
    
    * Initial commit SFT pallet.
    
    * Update comment
    
    * [Uniques V2] Minting options (#12483)
    
    * Basics
    
    * WIP: change the data format
    
    * Refactor
    
    * Remove redundant new() method
    
    * Rename settings
    
    * Enable tests
    
    * Chore
    
    * Change params order
    
    * Delete the config on collection removal
    
    * Chore
    
    * Remove redundant system features
    
    * Rename force_item_status to force_collection_status
    
    * Update node runtime
    
    * Chore
    
    * Remove thaw_collection
    
    * Chore
    
    * Connect collection.is_frozen to config
    
    * Allow to lock the collection in a new way
    
    * Move free_holding into settings
    
    * Connect collection's metadata locker to feature flags
    
    * DRY
    
    * Chore
    
    * Connect pallet level feature flags
    
    * Prepare tests for the new changes
    
    * Implement Item settings
    
    * Allow to lock the metadata or attributes of an item
    
    * Common -> Settings
    
    * Extract settings related code to a separate file
    
    * Move feature flag checks inside the do_* methods
    
    * Split settings.rs into parts
    
    * Extract repeated code into macro
    
    * Extract macros into their own file
    
    * Chore
    
    * Fix traits
    
    * Fix traits
    
    * Test SystemFeatures
    
    * Fix benchmarks
    
    * Add missing benchmark
    
    * Fix node/runtime/lib.rs
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Keep item's config on burn if it's not empty
    
    * Fix the merge artifacts
    
    * Fmt
    
    * Add SystemFeature::NoSwaps check
    
    * Rename SystemFeatures to PalletFeatures
    
    * Rename errors
    
    * Add docs
    
    * Change error message
    
    * Change the format of CollectionConfig to store more data
    
    * Move max supply to the CollectionConfig and allow to change it
    
    * Remove ItemConfig from the mint() function and use the one set in mint settings
    
    * Add different mint options
    
    * Allow to change the mint settings
    
    * Add a force_mint() method
    
    * Check mint params
    
    * Some optimisations
    
    * Cover with tests
    
    * Remove merge artifacts
    
    * Chore
    
    * Use the new has_role() method
    
    * Rework item deposits
    
    * More tests
    
    * Refactoring
    
    * Address comments
    
    * Refactor lock_collection()
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Private => Issuer
    
    * Add more tests
    
    * Fix benchmarks
    
    * Add benchmarks for new methods
    
    * [Uniques v2] Refactoring (#12570)
    
    * Move do_set_price() and do_buy_item() to buy_sell.rs
    
    * Move approvals to feature file
    
    * Move metadata to feature files
    
    * Move the rest of methods to feature files
    
    * Remove artifacts
    
    * Split force_collection_status into 2 methods
    
    * Fix benchmarks
    
    * Fix benchmarks
    
    * Update deps
    
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Rename module to NFT fractionalisation
    
    * Loose coupling for pallet-assets
    
    * cargo fmt
    
    * [Uniques V2] Smart attributes (#12702)
    
    * Basics
    
    * WIP: change the data format
    
    * Refactor
    
    * Remove redundant new() method
    
    * Rename settings
    
    * Enable tests
    
    * Chore
    
    * Change params order
    
    * Delete the config on collection removal
    
    * Chore
    
    * Remove redundant system features
    
    * Rename force_item_status to force_collection_status
    
    * Update node runtime
    
    * Chore
    
    * Remove thaw_collection
    
    * Chore
    
    * Connect collection.is_frozen to config
    
    * Allow to lock the collection in a new way
    
    * Move free_holding into settings
    
    * Connect collection's metadata locker to feature flags
    
    * DRY
    
    * Chore
    
    * Connect pallet level feature flags
    
    * Prepare tests for the new changes
    
    * Implement Item settings
    
    * Allow to lock the metadata or attributes of an item
    
    * Common -> Settings
    
    * Extract settings related code to a separate file
    
    * Move feature flag checks inside the do_* methods
    
    * Split settings.rs into parts
    
    * Extract repeated code into macro
    
    * Extract macros into their own file
    
    * Chore
    
    * Fix traits
    
    * Fix traits
    
    * Test SystemFeatures
    
    * Fix benchmarks
    
    * Add missing benchmark
    
    * Fix node/runtime/lib.rs
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Keep item's config on burn if it's not empty
    
    * Fix the merge artifacts
    
    * Fmt
    
    * Add SystemFeature::NoSwaps check
    
    * Rename SystemFeatures to PalletFeatures
    
    * Rename errors
    
    * Add docs
    
    * Change error message
    
    * Change the format of CollectionConfig to store more data
    
    * Move max supply to the CollectionConfig and allow to change it
    
    * Remove ItemConfig from the mint() function and use the one set in mint settings
    
    * Add different mint options
    
    * Allow to change the mint settings
    
    * Add a force_mint() method
    
    * Check mint params
    
    * Some optimisations
    
    * Cover with tests
    
    * Remove merge artifacts
    
    * Chore
    
    * Use the new has_role() method
    
    * Rework item deposits
    
    * More tests
    
    * Refactoring
    
    * Address comments
    
    * Refactor lock_collection()
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Private => Issuer
    
    * Add more tests
    
    * Fix benchmarks
    
    * Add benchmarks for new methods
    
    * [Uniques v2] Refactoring (#12570)
    
    * Move do_set_price() and do_buy_item() to buy_sell.rs
    
    * Move approvals to feature file
    
    * Move metadata to feature files
    
    * Move the rest of methods to feature files
    
    * Remove artifacts
    
    * Smart attributes
    
    * Split force_collection_status into 2 methods
    
    * Fix benchmarks
    
    * Fix benchmarks
    
    * Update deps
    
    * Fix merge artifact
    
    * Weights + benchmarks + docs
    
    * Change params order
    
    * Chore
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update docs
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Add PalletId
    
    * Chore
    
    * Add tests
    
    * More tests
    
    * Add doc
    
    * Update errors snapshots
    
    * Ensure we track the owner_deposit field correctly
    
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * [Uniques V2] Final improvements (#12736)
    
    * Use KeyPrefixIterator instead of Box
    
    * Change create_collection()
    
    * Restrict from claiming NFTs twice
    
    * Update Readme
    
    * Remove dead code
    
    * Refactoring
    
    * Update readme
    
    * Fix clippy
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Update docs
    
    * Typo
    
    * Fix benchmarks
    
    * Add more docs
    
    * Replace uniques with nfts, add minted volume storage
    
    * DepositRequired setting should affect only the attributes within the CollectionOwner namespace
    
    * Add unlock functionality
    
    * [NFTs] Implement missed methods to set the attributes from other pallets (#12919)
    
    * Implement missed methods to set the attributes from other pallets
    
    * Revert snapshots
    
    * Update snapshot
    
    * Update snapshot
    
    * Revert snapshot changes
    
    * Update snapshots
    
    * Yet another snapshot update..
    
    * Asset to NFT id storage mutations
    
    * Minor fixes
    
    * Minor comments
    
    * cargo fmt
    
    * Remove benchmarking, unused clone()
    
    * Update frame/support/src/traits/tokens/nonfungible_v2.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/support/src/traits/tokens/nonfungible_v2.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/support/src/traits/tokens/nonfungible_v2.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/support/src/traits/tokens/nonfungibles_v2.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/support/src/traits/tokens/nonfungible_v2.rs
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/support/src/traits/tokens/nonfungibles_v2.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/lib.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Address comments
    
    * [NFTs] Add the new `owner` param to mint() method (#12997)
    
    * Add the new `owner` param to mint() method
    
    * Fmt
    
    * Address comments
    
    * ".git/.scripts/bench-bot.sh" pallet dev pallet_nfts
    
    * Fmt
    
    * Update frame/nfts/src/common_functions.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nfts/src/types.rs
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Add call indexes
    
    * Update snapshots
    
    * Refactor nft fractionalisation pallet (#13008)
    
    * Refactoring
    
    * Make it compile
    
    * Add tests
    
    * Rename
    
    * Rework nfts locking
    
    * Update cargo.lock
    
    * Connect the latest changes to the runtime-kitchensink
    
    * Add benchmarks, fix other issues
    
    * Chore
    
    * Chore 2
    
    * Chore 3
    
    * Add runtime-benchmarks
    
    * Rename
    
    * Set metadata
    
    * Make fields public
    
    * Chore
    
    * Created asset shouldn't be sufficient
    
    * Add documentation
    
    * minor edit to docs
    
    * Minor corrections
    
    Co-authored-by: default avatarlana-shanghai <[email protected]>
    
    * fmt
    
    * Add fee reserved before creating an asset
    
    * Use ReservableCurrency for fee deposit
    
    * Improvements
    
    * Revert fmt changes
    
    * A bit more cleanup
    
    * Consistent naming
    
    * Make it more generic
    
    * Leftover
    
    * Use Vec<u8> instead of String
    
    * Update to the latest + improve the Locker trait
    
    * Refactor NFTs locker
    
    * Replace Vec with BoundedVec, add clearer errors
    
    * cargo fmt
    
    * Add README about unlocking NFTs
    
    * add constant definition
    
    * add fortitude & precision to asset related functions
    
    * fix mock and tests
    
    * transfer ExistentialDeposit to pallet if it's balance is below
    
    * Refactoring
    
    * Simplify the locking mechanism
    
    * Use PalletAttributes enum instead of the LOCKED_NFT_KEY
    
    * Fix benchmark
    
    * Add missing licence details
    
    * Update Cargo.toml
    
    * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nft_fractionalization
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    * Update frame/nft-fractionalization/README.md
    
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    
    ---------
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    Co-authored-by: default avatarSergej Sakac <[email protected]>
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    Co-authored-by: default avatarSquirrel <[email protected]>
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarMuharem Ismailov <[email protected]>
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarjoe petrowski <[email protected]>
    41dbed0b