Skip to content

Polymesh v6.0.0

Compare
Choose a tag to compare
@adamdossa adamdossa released this 10 Oct 09:28
23980d8

changelog

new features

  • Remove the Default trait from AccountId. (#1426)
  • Identities can create child identities (if they are not a child identity). The child identities share the CDD claim of their parent. (#1411)
  • Child identities can be unlinked from their parent identity and receive their own CDD claim from a CDD provider. (#1411)
  • Adds change_sigs_required_via_creator, remove_creator_controls; (#1473)
  • Update to Substrate monthly-2023-03 with trie-db fixes backported. (#1466)
  • Substrate - HTTP/WS rpc on the same port. The old http-only port is still supported, the ws port now supports both. (#1466)
  • Adds the following extrinsics to the asset pallet: exempt_ticker_affirmation, remove_ticker_affirmation_exemption, pre_approve_ticker, remove_ticker_pre_approval; (#1455)
  • Adds the following extrinsics to the portfolio pallet: pre_approve_portfolio, remove_portfolio_pre_approval; (#1455)
  • The pallet_utiltity has been updated to use the implementations from Substrate for batch, batch_all, force_batch, dispatch_as and with_weight. (#1469)
  • Utility.relay_tx now emits an event RelayedTx { caller_did: IdentityId, target: AccountId, result: DispatchResult }. (#1469)
  • The new batch extrinsics now support non-signed origins and can be used in Pips/Committee proposals. (#1469)
  • The new batch extrinsics are compatible with Polkadot.js webapp (allowing the UI to do atomic batches) and will return the actual weight of the batched calls. (#1469)
  • Update Polymesh Ink! API to support Polymesh 6.0. (#1505)
  • Add protocol fee when creating new child identities - initially set to 0. (#1523)
  • Simplify Checkpoint schedules. Schedules are now just a list of pending Moment checkpoints, instead of complex calendar basic repeating values. (#1488)
  • Adds the affirm_with_receipts_with_count extrinsic;
  • Adds the affirm_instruction_with_count extrinsic;
  • Adds the withdraw_affirmation_with_count extrinsic;
  • Adds the reject_instruction_with_count extrinsic;
  • Adds the get_affirmation_count rpc call;

modified api

  • Compliance Manager Event and Config moved to pallet/common; (#1414)
  • execute_manual_instruction adds a weight_limit: Option<Weight> parameter; (#1414)
  • execute_manual_instruction returns DispatchResultWithPostInfo; (#1414)
  • Adds WeightLimitExceeded and InputWeightIsLessThanMinimum as an Error variant; (#1414)
  • unsafe_can_transfer_granular and verify_restriction_granular can return an error now. (#1414)
  • The memo type for settlements InstructionMemo now uses the common polymesh_primitives::Memo. (#1459)
  • polymesh_common_utilities::traits::balances::Memo changed to polymesh_primitives::Memo (#1459)
  • polymesh_primitives::portfolio::Memo moved to polymesh_primitives::Memo. (#1459)
  • Removes storage items related to classic tickers (#1461)
  • LegAsset has a new variant: LegAsset::OffChain { ticker, amount }; (#1451)
  • LegV2 has been renamed Leg and the old Leg no longer applies (i.e the types are different); (#1451)
  • The following variants have been removed from the Settlement error enum: NoPendingAffirm, LegNotPending, ReceiptNotClaimed, NoPortfolioProvided, LegCountTooSmall, InstructionHasTooManyLegs, InvalidLegAsset, MaxNumberOfNFTsPerLegExceeded, DeprecatedCallOnV2Instruction, ReceiptForNonFungibleAsset; (#1451)
  • The following variants have been added to the Settlement error enum: MaxNumberOfFungibleAssetsExceeded, MaxNumberOfOffChainAssetsExceeded, NumberOfFungibleTransfersUnderestimated, UnexpectedOnChainAsset, UnexpectedOFFChainAsset, OffChainAssetCantBeLocked, OffChainAssetMustBeAffirmedWithReceipts, NumberOfOffChainTransfersUnderestimated, LegNotFound; (#1451)
  • InstructionLegsV2 storage has been renamed InstructionLegs and the old InstructionLegs no longer applies (i.e the types are different); (#1451)
  • The following extrinsics have been deleted: add_instruction_with_memo, add_and_affirm_instruction_with_memo, add_instruction_with_memo_v2, add_and_affirm_instruction_with_memo_v2, affirm_instruction_v2, withdraw_affirmation_v2, reject_instruction_v2; (#1451)
  • The following extrinsics have new parameters: add_instruction, add_and_affirm_instruction, withdraw_affirmation, reject_instruction, affirm_with_receipts, affirm_instruction; (#1451)
  • The InstructionV2Created event has been renamed InstructionCreated and the old event with the same name no longer applies (i.e the types have changed); (#1451)
  • Bridge Controller and Admin changed to Option<AccountId>. (#1426)
  • Sudo Key changed to Option<AccoundId>. (#1426)
  • Pip Deposits changed to Option<DepositInfo<T::AccountId>>. (#1426)
  • The parameter in event Sudo.KeyChanged changed to Option<AccountId>. (#1426)
  • Added identity.create_child_identity extrinsic for creating a child identity. A secondary key from the caller's identity is moved to the child identity as the primary key. (#1411)
  • Added identity.create_child_identities extrinsic to create multiple child identities from keys using off-chain signatures. The keys can't be linked to any identity. (#1411)
  • Added identity.unlink_child_identity extrinsic for unlinking a child identity from its parent. (#1411)
  • Added events ChildDidCreated and ChildDidUnlinked. (#1411)
  • Added errors IsChildIdentity, NoParentIdentity, NotParentOrChildIdentity and DuplicateKey. (#1411)
  • Added Identity.ParentDid storage map ("child identity" -> "parent identity"). (#1411)
  • Adds a portfolio_kind parameter to the issue extrinsic; (#1464)
  • The following events were removed from the asset_pallet: Transfer, Issued and Redeemed; (#1427)
  • The following event was added to the asset_pallet: AssetBalanceUpdated; (#1427)
  • The following events were removed from the nft_pallet: IssuedNFT, RedeemedNFT; (#1427)
  • The following event was added to the nft_pallet: NFTPortfolioUpdated; (#1427)
  • The following events were removed from the portfolio_pallet: MovedBetweenPortfolios, NFTsMovedBetweenPortfolios and FungibleTokensMovedBetweenPortfolios; (#1427)
  • The following event was added to the portfolio_pallet: FundsMovedBetweenPortfolios; (#1427)
  • The following extrisinc was deleted: move_portfolio_funds_v2; (#1427)
  • The parameters for move_portfolio_funds have changed. (#1427)
  • Removes depreciated old get_did_records for V1 records (#1471)
  • Adds CreatorControlsHaveBeenRemovederror; (#1473)
  • Portfolio.move_portfolio_funds returns error EmptyTransfer if no assets are moved (zero amount or zero NFT ids). (#1477)
  • Extrinsic ids in the System pallet have changed because fill_block has been removed. (#1466)
  • Added transfer_no_cdd to the Currency trait in frame_support. To allow transferring POLYX to accounts without a CDD (i.e. Contract's deposit account). (#1466)
  • The original Polymesh Utility.batch has been renamed to Utility.batch_old and deprecated. (#1469)
  • Utility.batch_optimistic is now deprecated, use Utility.force_batch instead. (#1469)
  • Utility.batch_atomic is now deprecated, use Utility.batch_all instead. (#1469)
  • Two events clashed with the events from the Substrate pallet_utility and have been renamed. BatchInterrupted renamed to BatchInterruptedOld and BatchCompleted renamed to BatchCompletedOld. These events are only used in the deprecated batch extrinsics. (#1469)
  • Removed Identity.add_investor_uniqueness_claim and Identity.add_investor_uniqueness_claim_v2.
  • Removed Claim variants: InvestorUniqueness, NoData, and InvestorUniquenessV2.
  • Removed ClaimType variants: InvestorUniqueness, NoType, and InvestorUniquenessV2.
  • Removed type InvestorUid.
  • Removed all confidential_identity_v1 and confidential_identity_v2 code.
  • Removed storage from Asset pallet for Investor Uniqueness: BalanceOfAtScope, AggregateBalance, ScopeIdOf, and DisableInvestorUniqueness.
  • Removed ScopeId, replaced with IdentityId (these two are the same types).
  • Checkpoint.create_schedule now take a ScheduleCheckpoints (holds a BTreeSet of Moment values) instead of ScheduleSpec.
  • Events ScheduleCreated and ScheduleRemoved changed to have ScheduleId and ScheduleCheckpoints instead of StoredSchedule.
  • Storage map Schedules replaced with double map ScheduledCheckpoints. Schedules are no longer stored in a Vec.
  • Storage map CachedNextCheckpoints is used to quickly check if a ticker has any checkpoints that need to be created.
  • multisig::create_or_approve_as_key and multisig::create_or_approve_as_identity are both deprecated in favour of their create / approve versions.
  • Change multisig.Proposals to a double map (ms -> proposal id -> proposal).
  • Change multisig.ProposalDetail to a double map (ms -> proposal id -> proposal_detail).
  • Change multisig.Votes to a double map ((ms, proposal id) -> signer -> bool).

modified logic

  • When adding a new instruction with Fungible or NonFungible asset, the ticker must exist on-chain. (#1451)
  • Receipts are only accepted for OffChain legs; (#1451)
  • split out status from settlement instruction (#1408)
  • create storage for instruction status (#1408)
  • An identity with no primary key can't rotate in a new primary key, the InvalidAccountKey error will be thrown. Only Asset identities have no primary key. (#1426)
  • has_valid_cdd check has been changed to allow a child identity to use the CDD claim from its parent. (#1411)
  • Change btreeset to bounded version (#1400)
  • issue and controller_transfer no longer require custody checks; (#1464)
  • Settlement events now use the caller's did instead of SettlementDID when called via execute_manual or the sto pallet; (#1470)
  • Returns an error if a user uses Except permissions on secondary keys for extrinsics (#1471)
  • via creator extrinsics will return an error if the creator controls have been removed; (#1473)
  • Substrate removed the uncles block support. Wasn't even working before. (#1466)
  • Contract's now have a "deposit account" to hold their storage deposits. (#1466)
  • add_instruction checks for pre-approved tickers/portfolios; (#1455)
  • Remove IdentityId to ScopeId mapping.
  • Use Asset::balance_of(ticker, did) instead of Asset::aggregate_balance_of(ticker, scope_id).
  • Remove dead code related to unused crypto functions
  • Add bound to the number of venue_signers. (#1521)
  • No longer supports recurring schedules. All scheduled checkpoints timestamps (Moment) need to be calculated off-chain.

data migration

  • Removes storage related to classic tickers during upgrade (#1461)
  • InstructionLegsV2 data has been translated to fit the new LegAssetvariant. All fungible assets that don't exist on chain are now of type OffChain; (#1451)
  • The old InstructionLegs data has been been translated to fit the new Leg type. All assets are either of type Fungible, if the assets can be found on-chain, or OffChain in case there are no assets on-chain, (#1451)
  • Storage migration for pallet_scheduler was added. It just cleans up None values from the scheduled tasks lists, no type changes. (#1466)
  • Remove storage items from Asset pallet.
  • Migration all Identity.Claims to new Claim enum without InvestorUniqueness variants.
  • Remove data storage related to confidential investor logic
  • Updates PolymeshContracts storage to be under the PolymeshContracts root, rather than `Contracts (#1519)
  • Removes any existing CallRuntimeWhitelist under the old storage root (Contracts) (#1519)
  • Non-empty schedules from Checkpoint.Schedules are migrated to new structure, only a maximum of the next 10 checkpoints are kept for each schedule.