changelog
new features
- Remove the
Default
trait fromAccountId
. (#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 forbatch
,batch_all
,force_batch
,dispatch_as
andwith_weight
. (#1469) Utility.relay_tx
now emits an eventRelayedTx { 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 aweight_limit: Option<Weight>
parameter; (#1414)execute_manual_instruction
returnsDispatchResultWithPostInfo
; (#1414)- Adds
WeightLimitExceeded
andInputWeightIsLessThanMinimum
as an Error variant; (#1414) unsafe_can_transfer_granular
andverify_restriction_granular
can return an error now. (#1414)- The memo type for settlements
InstructionMemo
now uses the commonpolymesh_primitives::Memo
. (#1459) polymesh_common_utilities::traits::balances::Memo
changed topolymesh_primitives::Memo
(#1459)polymesh_primitives::portfolio::Memo
moved topolymesh_primitives::Memo
. (#1459)- Removes storage items related to classic tickers (#1461)
LegAsset
has a new variant:LegAsset::OffChain { ticker, amount }
; (#1451)LegV2
has been renamedLeg
and the oldLeg
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 renamedInstructionLegs
and the oldInstructionLegs
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 renamedInstructionCreated
and the old event with the same name no longer applies (i.e the types have changed); (#1451) - Bridge
Controller
andAdmin
changed toOption<AccountId>
. (#1426) - Sudo
Key
changed toOption<AccoundId>
. (#1426) - Pip
Deposits
changed toOption<DepositInfo<T::AccountId>>
. (#1426) - The parameter in event
Sudo.KeyChanged
changed toOption<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
andChildDidUnlinked
. (#1411) - Added errors
IsChildIdentity
,NoParentIdentity
,NotParentOrChildIdentity
andDuplicateKey
. (#1411) - Added
Identity.ParentDid
storage map ("child identity" -> "parent identity"). (#1411) - Adds a
portfolio_kind
parameter to theissue
extrinsic; (#1464) - The following events were removed from the
asset_pallet
:Transfer
,Issued
andRedeemed
; (#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
andFungibleTokensMovedBetweenPortfolios
; (#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
CreatorControlsHaveBeenRemoved
error; (#1473) Portfolio.move_portfolio_funds
returns errorEmptyTransfer
if no assets are moved (zero amount or zero NFT ids). (#1477)- Extrinsic ids in the
System
pallet have changed becausefill_block
has been removed. (#1466) - Added
transfer_no_cdd
to theCurrency
trait inframe_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 toUtility.batch_old
and deprecated. (#1469) Utility.batch_optimistic
is now deprecated, useUtility.force_batch
instead. (#1469)Utility.batch_atomic
is now deprecated, useUtility.batch_all
instead. (#1469)- Two events clashed with the events from the Substrate
pallet_utility
and have been renamed.BatchInterrupted
renamed toBatchInterruptedOld
andBatchCompleted
renamed toBatchCompletedOld
. These events are only used in the deprecated batch extrinsics. (#1469) - Removed
Identity.add_investor_uniqueness_claim
andIdentity.add_investor_uniqueness_claim_v2
. - Removed
Claim
variants:InvestorUniqueness
,NoData
, andInvestorUniquenessV2
. - Removed
ClaimType
variants:InvestorUniqueness
,NoType
, andInvestorUniquenessV2
. - Removed type
InvestorUid
. - Removed all
confidential_identity_v1
andconfidential_identity_v2
code. - Removed storage from
Asset
pallet for Investor Uniqueness:BalanceOfAtScope
,AggregateBalance
,ScopeIdOf
, andDisableInvestorUniqueness
. - Removed
ScopeId
, replaced withIdentityId
(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
orNonFungible
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
andcontroller_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
toScopeId
mapping. - Use
Asset::balance_of(ticker, did)
instead ofAsset::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 newLegAsset
variant. All fungible assets that don't exist on chain are now of typeOffChain
; (#1451)- The old
InstructionLegs
data has been been translated to fit the newLeg
type. All assets are either of typeFungible
, if the assets can be found on-chain, orOffChain
in case there are no assets on-chain, (#1451) - Storage migration for
pallet_scheduler
was added. It just cleans upNone
values from the scheduled tasks lists, no type changes. (#1466) - Remove storage items from
Asset
pallet. - Migration all
Identity.Claims
to newClaim
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.