new features
- Adds controller (aka forced) transfer logic for NFTs.
- Adds storage to track NFT collection total supply.
- Adds storage to map NFTs into user Portfolios.
- Allows a smart contract to create and take custody of portfolios on behalf of an identity.
- Allows a smart contract to be deployed as a primary key of a child identity.
- Stores smart contract API upgrades on chain storage.
- Allows derivative keys to be used as identity signing keys.
- Prevents Identity based signers for MultiSigs
new external API
- Adds the
controller_transfer
extrinsic topallet_nft
. #1529 - Adds
NFTsInCollection
storage to track the number of nfts in a collection. #1529 - Adds the following extrisincs:
allow_identity_to_create_portfolios
,revoke_create_portfolios_permission
,create_custody_portfolio
. #1547 - Adds the following extrisincs:
instantiate_with_code_as_primary_key
,instantiate_with_hash_as_primary_key
. #1548 - Adds the
upgrade_api
extrinsic and theGetLatestApiUpgrade
chain extension call. #1559 - Add
as_derivative
in the utility pallet. #1560 - Change
NFTOwner
map to track the holder's portfolio. #1566
modified external API
on_instantiate_transfer
ifcontract_did
is different from the caller's did, also check if its parent match the caller's identity. #1548- No longer permit Identity based multisig signers -
accept_multisig_signer_as_identity
will now always fail. #1556 dispatch_as
temporarily sets current_did and current_payer to the identity and account from as_origin. #1560
new events
- Adds the following events:
RemoveAssetAffirmationExemption
,AssetAffirmationExemption
,PreApprovedAsset
,RemovePreApprovedAsset
,PreApprovedPortfolio
,RevokePreApprovedPortfolio
,InstructionAutomaticallyAffirmed
. #1557 - Adds the
ApiHashUpdated
event. #1559 - Adds the
SCRuntimeCall
event for contract calls into the runtime. #1561
other
- Adds the following variants to the nft error enum:
SupplyOverflow
,SupplyUnderflow
. #1529 - Adds the following variant to
PortfolioUpdateReason
:ControllerTransfer
. #1529 - Remove the old
itn_rewards
andreserved_classic_tickers
files. #1544 - Adds ConstSize wrapper for const u32 values. This is needed for the size limits for bounded collections like BoundedBTreeMap to be used as extrinsic parameters, since extrinsic parameters need extra traits (Clone, Debug, PartialEq, Eq) and this also applies to the size limit generic type parameter on bounded collections. #1530
data migration
- Initializes the new NFT storage with data that already lives on chain. #1546