Skip to content

Polymesh v7.0.0-rc5

Pre-release
Pre-release
Compare
Choose a tag to compare
@adamdossa adamdossa released this 18 Oct 16:00
2474e84

changelog

Highlights

Asset ID

Polymesh no longer requires each tokenised asset to have a unique ticker. Instead each asset is assigned a unique AssetID when it is created, which can optionally be linked to a unique Ticker. This change impacts large amounts of storage and API which now expects AssetID to uniquely identify a tokenised asset, rather than the previous Ticker.

Staking

Polymesh has been updated to a more recent upstream version of the Staking pallet. This brings efficiency improvements, and some modifications to the election process. Tokenomics / inflation is not effected.

Keys

The storage of secondary keys, and their associated permissions has been optimised to improve the efficiency of these look-ups which are needed for all extrinsics.

MultiSig

The MultiSig implementation has been updated to simplify the association between MultiSigs and their Identities. The updated implementation provides flexibility to specify which key is responsible for paying for MultiSig signer transactions, and consolidate the behaviour of MultiSig keys with other keys.

Venue ID

Settlements in Polymesh have been updated to not require a Venue ID. This simplifies the settlement process for peer to peer transactions (those not going through an exchange or other matching venue).

New External API

Asset ID

  • pallet_asset
    • The following storage have been added: UniqueTickerRegistration, SecurityTokens, AssetIdentifiers, AssetsExemptFromAffirmation, PreApprovedAsset, TickersOwnedByUser, SecurityTokensOwnedByuser, AssetIDTicker, TickerAssetID, RngNonce;
    • The following extrinsics have been added: register_unique_ticker, exempt_asset_affirmation, remove_asset_affirmation_exemption, pre_approve_asset, remove_asset_pre_approval, link_ticker_to_asset_id.
      (#1694)
  • Adds unlink_ticker_from_asset_id extrinsic. (#1728)

Staking

  • Adds the following storage: MinNominatorBond, MinValidatorBond, MinimumActiveStake, MinCommission, MaxValidatorsCount, MaxNominatorsCount, CurrentPlannedSession, ChillThreshold. (#1678)
  • Removes the following storage: EarliestUnappliedSlash, SnapshotValidators, SnapshotNominators, QueuedElected, QueuedScore, EraElectionStatus, IsCurrentSessionFinal, MinimumBondThreshold (#1678)
  • The following extrinsics have been added: kick, set_staking_configs, chill_other, force_apply_min_commission, set_min_commission. (httpshttps://github.com//pull/1678)

Keys

  • Split secondary key permissions out of Identity.KeyRecords to allow for more efficient permissions checks. (#1679)

MultiSig

  • Execute MultiSig proposal at the same time as the last required approval. No longer uses the scheduler to execute the proposal in the next block. (#1687)
  • Convert the MultiSig pallet to frame v2. (#1687)
  • A Multisig can be made a secondary key with custom permissions (if called by the primary key). (#1687)
  • A Multisig can add/remove multiple singers in a single proposal now with multisig.add_multisig_signers and multisig.remove_multisig_signers. (#1687)
  • Prune proposals when they are executed or rejected. (#1687)
  • Limit the total number of signers per MultiSig to 50. (#1687)
  • Split MultiSig CreatorDid into AdminDid and PayingDid. (#1687)
  • A MultiSig can add an admin DID to enable the *_via_admin controls. (#1687)
  • A MultiSig can remove it's admin to disable the *_via_admin controls. The admin DID can also remove itself as the admin of a MultiSig. (#1687)
  • A MultiSig can remove it's paying DID to pay for its own transaction/protocol fees. (#1687)
  • A MultiSig unlinked from an identity (via identity.leave_identity_as_key) and join a new identity using multisig.approve_join_identity and the transaction fees will be paid by the primary key of the joining identity. (#1687)
  • A MultiSig can't be a signer on another MultiSig. (#1687)
  • Adds remove_adminextrinsic; (#1726)
  • multisig.add_admin(identity) callable by the MultiSig to add an identity as admin. (#1687)
  • multisig.remove_admin_via_admin(multisig) callable by the admin to remove itself as admin of a MultiSig. (#1687)
  • multisig.remove_payer() callable by the MultiSig to remove the paying identity. The MultiSig will need to pay for its own transaction/protocol fees. (#1687)
  • multisig.remove_payer_via_payer(multisig) callable by the paying identity to remove itself as the payer of fees for the MultiSig. (#1687)
  • multisig.approve_join_identity(auth_id) callable by MultiSig signers to approve joining a new identity. The primary key of the joining identity will pay for transaction fees. (#1687)
  • multisig.join_identity(auth_id) this is called by the proposal created in approve_join_identity to accept a join identity authorization. (#1687)
  • Added storage AuthToProposalId used by multisig.approve_join_identity to map an auth_id to proposal_id. (#1687)
  • Adds remove_adminextrinsic. (httpshttps://github.com//pull/1726)

Other

  • Remove most of the Bridge code (extrinsics, events, errors). Only keeping the storage. (#1687)
  • Use manual pallet index values, to avoid breaking pallet ids when adding/removing pallets. Also this makes sure that all runtimes use the same pallet indices. (#1687)

Modified External API

Asset ID

  • pallet_asset
    • The following storage have been remove: Tickers, Tokens, Identifiers, TickersExemptFromAffirmation; PreApprovedTicker;
    • The following storage have changed types: AssetNames, BalanceOf, FundingRound, IssuedInFundingRound, Frozen, AssetDocuments, AssetDocumentsIdSequence, AssetMetadataValues, AssetMetadataValueDetails, AssetMetadataLocalNameToKey, AssetMetadataLocalKeyToName, AssetMetadataLocalSpecs, AssetMetadataNextLocalKey, MandatoryMediators, CurrentAssetMetadataLocalKey;
    • The following extrinsics have been removed: register_ticker, redeem_from_portfolio, exempt_ticker_affirmation, remove_ticker_affirmation_exemption, pre_approve_ticker, remove_ticker_pre_approval;
    • The following extrinsics have been changed: create_asset, freeze, unfreeze, rename_asset, issue, redeem, make_divisible, add_documents, remove_documents, set_funding_round, update_identifiers, controller_transfer, create_asset_with_custom_type, set_asset_metadata, set_asset_metadata_details, register_and_set_local_asset_metadata, register_asset_metadata_local_type, update_asset_type, remove_local_metadata_key, remove_metadata_value, add_mandatory_mediators, remove_mandatory_mediators.
      (#1694)
  • pallet_checkpoint
    • The following storage have changed types: TotalSupply, Balance, CheckpointIdSequence, BalanceUpdates, Timestamps, ScheduleIdSequence, CachedNextCheckpoints, ScheduledCheckpoints, ScheduleRefCount, SchedulePoints;
    • The following extrinsics have been changed: create_checkpoint, create_schedule, remove_schedule; * pallet_compliance_manager
    • The following storage have changed types: AssetCompliances, TrustedClaimIssuer;
    • The following extrinsics have been changed: add_compliance_requirement, remove_compliance_requirement, replace_asset_compliance, reset_asset_compliance, pause_asset_compliance, resume_asset_compliance, add_default_trusted_claim_issuer, remove_default_trusted_claim_issuer, change_compliance_requirement; * pallet_corporate_actions
    • The following storage have changed types: DefaultTargetIdentities, DefaultWithholdingTax, DidWithholdingTax, CAIdSequence, CorporateActions;
    • The following extrinsics have been changed: set_default_targets, set_default_withholding_tax, set_did_withholding_tax, initiate_corporate_action, link_ca_doc, remove_ca, change_record_date. (#1694)
  • pallet_distribution
    • The following extrinsics have been changed: distribute
      (#1694)
  • pallet_external_agents
    • The following storage have changed types: AGIdSequence, AgentOf, GroupOfAgent, NumFullAgents, GroupPermissions;
    • The following extrinsics have been changed: create_group, set_group_permissions, remove_agent, abdicate, change_group, create_group_and_add_auth, create_and_change_custom_group
      (#1694)
  • pallet_nft
    • The following storage have changed types: NumberOfNFTs, CollectionAsset, MetadataValue, NFTsInCollection, NFTOwner;
    • The following extrinsics have been changed: create_nft_collection, issue_nft, redeem_nft, controller_transfer.
      (#1694)
  • pallet_portfolio
    • The following storage have changed types: PortfolioAssetBalances, PortfolioLockedAssets, PortfolioNFT, PortfolioLockedNFT, PreApprovedPortfolios;
    • The following extrinsics have been changed: pre_approve_portfolio, remove_portfolio_pre_approval.
      (#1694)
  • pallet_settlement
    • The following storage have changed types: VenueFiltering, VenueAllowList;
    • The following extrinsics have been changed: set_venue_filtering, allow_venues, disallow_venues.
      (#1694)
  • pallet_statistics
    • The following storage have changed types: ActiveAssetStats, AssetTransferCompliances;
    • The following extrinsics have been changed: set_active_asset_stats, batch_update_asset_stats, set_asset_transfer_compliance.
      (#1694)
  • pallet_sto
    • The following storage have changed types: Fundraisers, FundraiserCount, FundraiserNames;
    • The following extrinsics have been changed: freeze_fundraiser, unfreeze_fundraiser, modify_fundraiser_window, stop.
      (#1694)

Staking

  • StakingLedger::unlocking and StakingLedger::claimed_rewards types changed from Vec to BoundedVec. (#1678)
  • The following extrinsics were removed: set_min_bond_threshold, set_history_depth, submit_election_solution, submit_election_solution_unsigned. (#1678)
  • The following events have been removed: StakingElection, SolutionStored, MinimumBondThresholdUpdated. (#1678)
  • Adds the following error variants: DuplicateIndex, InsufficientBond, InvalidNumberOfNominations, IncorrectHistoryDepth, CannotChillOther, TooManyValidators, CommissionTooLow, IdentityIsAlreadyPermissioned, IdentityIsMissingCDD, IdentityNotFound, ValidatorNotFound. (#1678)
  • Removes the following error variants: InsufficientValue, OffchainElectionEarlySubmission, OffchainElectionWeakSubmission, SnapshotUnavailable, OffchainElectionBogusWinnerCount, OffchainElectionBogusWinner, OffchainElectionBogusCompact, OffchainElectionBogusNominator, OffchainElectionBogusNomination, OffchainElectionSlashedNomination, OffchainElectionBogusSelfVote, OffchainElectionBogusEdge, OffchainElectionBogusScore, OffchainElectionBogusElectionSize, CallNotAllowed, AlreadyExists, NotExists, NoChange, InvalidValidatorIdentity, InvalidValidatorCommission, HitIntendedValidatorCount, BondTooSmall, InvalidValidatorUnbondAmount . (#1678)
  • electionProviderMultiPhase.unsignedPhase constant is now 1/4 of the Epoch duration. (#1707)

Keys

  • Changed Identity.KeyRecords storage type to only hold the key type (primary, secondary, multisig) and the DID/AccountId. Secondary key permissions have been split out into storage Identity.KeyExtrinsicPermissions, Identity.KeyAssetPermissions, and Identity.KeyPortfolioPermissions. (#1679)
  • Renamed type DispatchableName to ExtrinsicName and change it to wrap a String instead of raw bytes Vec<u8>. (#1679)
  • Changed PalletName to wrap a String instead of raw bytes Vec<u8>. (#1679)
  • Changed type PalletPermissions to remove the pallet_name field (pallet name is used as a key the new ExtrinsicPermissions type). (#1679)
  • The extrinsic permissions in type Permissions has been changed to a new type ExtrinsicPermissions which uses maps instead of sets. (#1679)
  • Storage value ExternalAgents.GroupPermissions has changed since the extrinsic permissions uses maps instead of sets now. (#1679)

MultiSig

  • Remove Multisig.create_or_approve_proposal (#1687)
  • Remove storage Multisig.ProposalIds since we don't lookup proposal ids from the proposal call. (#1687)
  • Renamed storage Multisig.MultiSigTxDone to Multisig.NextProposalId. (#1687)
  • Removed the bridge pallet extrinsics, events and errors. (#1687)
  • Removed deprecated *_as_identity MultiSig extrinsic calls. (#1687)
  • Removed the suffix _as_key from all MultiSig extrinsics. (#1687)
  • Changed MultiSig storage MultiSigSigners type from Signatory<AccountId> to just AccountId. (#1687)
  • Replaced all Signatory<AccountId> type with AccountId in the MutliSig pallet's events, storage and extrinsics. (#1687)
  • Removed field auto_close from the ProposalDetails type (and ProposalDetail storage). (#1687)
  • Refactor the ProposalDetail storage into two storage items ProposalVoteCounts and ProposalStates. ProposalVoteCounts only stores the approval/rejection vote counts. ProposalStates only store the state and expirey. (#1687)
  • Change the key hasher of the Proposal value in double map MultiSig.ProposalIds from Blake2_128Concat to Blake2_128. (#1687)
  • multisig.make_multisig_secondary take an optional set of permissions. Only the creator's primary key can set custom permissions. (#1687)
  • multisig.add_multisig_signer has been replaced with multisig.add_multisig_signers to allow adding multiple signers. (#1687)
  • multisig.remove_multisig_signer has been replaced with multisig.remove_multisig_signers to allow removing multiple signers. (#1687)
  • Use BoundedVec<AccountId, T::MaxSigners> for signers list when creating/adding/removing multisig signers. Multisigs can still have more than T::MaxSigners, the limit is just used for a single call. (#1687)
  • Added an multisig proposal execution reentry guard to prevent nested proposal executions. (#1687)
  • Remove Multisig extrinsics *_via_creator to *_via_admin. (#1687)
  • Multisig storage CreatorDid renamed to AdminDid. (#1687)
  • Added Multisig storage PayingDid to hold the identity that pays transaction fees. (#1687)
  • When creating a new MultiSig the calling DID is set as the PayingDid by default, but doesn't have admin controls. (#1687)
  • create_multisig now adds the new MultiSig to the caller's identity as a secondary key. By default the multisig will have no permissions unless the caller is the primary key and has provided custom permissions. (#1687)
  • Removed multisig make_multisig_primary, make_multisig_secondary and remove_creator_controls extrinsics. (#1687)
  • Replaced remove_creator_controls with remove_admin_via_admin extrinsic. (#1687)
  • Remove storage CurrentDid from identity pallet. This value was only set during a transaction and cleared when the transaction finished (even on errors). (#1687)
  • Changed the max_weight parameter of MultSig.approve extrinsic call to be optional. (#1716)

Venue ID

  • The following extrinsics changed the venue_id to Option<VenueId>: add_instruction, add_and_affirm_instruction, add_and_affirm_with_mediators, add_instruction_with_mediators. (#1700)

Other

  • Adds number_of_keys to redeem_nft extrinsic. (#1725)
  • Removed state trie migration pallet and RPC endpoints. (#1718)

New Events

Asset ID

  • pallet_asset
    • The following events have changed: AssetCreated, IdentifiersUpdated, DivisibilityChanged, AssetOwnershipTransferred, AssetFrozen, AssetUnfrozen, AssetRenamed, FundingRoundSet, DocumentAdded, DocumentRemoved, ControllerTransfer, SetAssetMetadataValue, SetAssetMetadataValueDetails, RegisterAssetMetadataLocalType, AssetTypeChanged, LocalMetadataKeyDeleted, MetadataValueDeleted, AssetBalanceUpdated,AssetAffirmationExemption, RemoveAssetAffirmationExemption, PreApprovedAsset, RemovePreApprovedAsset, AssetMediatorsAdded, AssetMediatorsRemoved; * pallet_checkpoint
    • The following events have changed: CheckpointCreated, ScheduleCreated, ScheduleRemoved; * pallet_compliance_manager
    • The following events have changed: ComplianceRequirementCreated, ComplianceRequirementRemoved, AssetComplianceReplaced, AssetComplianceReset, AssetComplianceResumed, AssetCompliancePaused, ComplianceRequirementChanged, TrustedDefaultClaimIssuerAdded, TrustedDefaultClaimIssuerRemoved.
      (#1694)
  • pallet_corporate_actions
    • The following events have changed: DefaultTargetIdentitiesChanged, DefaultWithholdingTaxChanged, DidWithholdingTaxChanged.
      (#1694)
  • pallet_external_agents
    • The following events have changed: GroupCreated, GroupPermissionsUpdated, AgentAdded, AgentRemoved, GroupChanged.
      (#1694)
  • pallet_nft
    • The following events have changed: NftCollectionCreated; * pallet_portfolio
    • The following events have changed: PreApprovedPortfolio, RevokePreApprovedPortfolio; * pallet_settlement
    • The following events have changed: VenueFiltering, VenuesAllowed, VenuesBlocked, VenueUnauthorized; * pallet_statistics
    • The following events have changed: StatTypesAdded, StatTypesRemoved, AssetStatsUpdated, SetAssetTransferCompliance.
      (#1694)
  • pallet_sto
    • The following events have changed: Invested
      (#1694)

Staking

  • The following events have been added: StakersElected, StakingElectionFailed, Kicked, Chilled, PayoutStarted, ValidatorPrefsSet, ForceEra. (#1678)

MultiSig

  • Add MultiSig.ProposalApprovalVote event to signal an approval vote instead of event ProposalApproved. The ProposalApproved event is now only emitted when the proposal has received enough votes to be executed. (#1687)
  • New MultiSig events: MultiSigAddedAdmin, MultiSigRemovedAdmin, and MultiSigRemovedPayingDid. (#1687)

Asset ID

  • pallet_asset
    • The following errors have been added: TickerIsAlreadyLinkedToAnAsset, TickerRegistrationNotFound, AssetIDGenerationError;
    • The following RPC have been removed: can_transfer_granular;
    • The following RPC have been added: transfer_report. (#1694)
  • pallet_nft
    • The following errors have been added: InvalidAssetID;
    • The following RPC have been removed: validate_nft_transfer;
    • The following RPC have been added: transfer_report. (#1694)
  • pallet_compliance
    • The following RPC have been changed: compliance_report. (#1694)
  • pallet_identity
    • The following RPC have been removed: get_asset_did. (#1694)

Modified Events

Keys

  • Any event containing a Permissions value will have changed (the extrinsic permissions are stored as a map instead of a set). (#1679)

MultiSig

  • Renamed MultiSig event MultiSigSignaturesRequiredChanged to MultiSigSignersRequiredChanged. (#1687)
  • The multisig events now use struct variants instead of tuple variants. (#1687)
  • MultiSig.ProposalExecuted event is now emitted for both successful and failed executions. The result field is used to see if the execution failed and get the error. (#1687)
  • MultiSig.ProposalFailedToExecute has been removed, since the error is available in the ProposalExecuted event. (#1687)
  • Renamed MultiSigSignerAuthorized to MultiSigSignersAuthorized and change the signer field to signers as a bounded vec. Now only one event is emitted when adding multiple signers. (#1687)
  • Renamed MultiSigSignerRemoved to MultiSigSignersRemoved and change the signer field to signers as a bounded vec. Now only one event is emitted when removing multiple signers. (#1687)
  • The caller_did is now optional for MultiSig events: ProposalAdded, ProposalExecuted, MultiSigSignersRequiredChanged, ProposalApprovalVote, ProposalRejectionVote, ProposalApproved, and ProposalRejected. Since the multisig could be unlinked from an identity when those events are emitted. (#1687)
  • Changed the caller's DID to be optional in the following committee events: FinalVotes, Approved, Rejected, and Executed. (#1687)
  • Removed the caller's DID from committee event: ReleaseCoordinatorUpdated. (#1687)

Venue ID

  • The following events were modified: InstructionCreated. (#1700)

Other

  • All events are now in the Struct format. (#1678)
  • SchedulingFailed added the InstructionId. (#1704)

Other

Staking

  • Removes ElectionCompute, ElectionResult, ElectionStatus and ElectionSize. (#1678)
  • The StakingLedger::slash() function has been update to implement a a proportional slashing system. (#1678)
  • Adds two parameters to the EraPayout trait. (#1678)
  • Adds ConvertCurve which implements EraPayout this is needed since the associated type T::Reward no longer exists. (#1678)
  • Adds SlashParams::disable_strategy. (#1678)
  • In compute_slash the offending validator will be disabled only if params.disable_strategy != DisableStrategy::Never. (#1678)
  • In kick_out_if_recent the offending validator will be disabled only if params.disable_strategy == DisableStrategy::Always. (#1678)
  • Adds the following associated types: CurrencyBalance, ElectionProvider, GenesisElectionProvider, HistoryDepth, AdminOrigin, EraPayout, VoterList, TargetList, OnStakerSlash, BenchmarkingConfig . (#1678)
  • Removes the follosing associated types: SlashCancelOrigin, RewardCurve, ElectionLookahead, MaxIterations, MinSolutionScoreBump, UnsignedPriority, OffchainSolutionWeightLimit, RequiredAddOrigin, RequiredRemoveOrigin, RequiredCommissionOrigin, MinimumBond. (#1678)
  • The following fields have been removed from GenesisConfig: min_bond_threshold. (#1678)
  • The following fields have been added to GenesisConfig: min_nominator_bond, min_validator_bond, max_validator_count, max_nominator_count. (#1678)
  • In do_payout_stakers call T::Reward::on_unbalanced(total_imbalance). (#1678)
  • In chill_stash emit Chilled. (#1678)
  • In new_session remove call to ForceEra::<T>::kill() if Forcing::ForceNew. (#1678)
  • In new_session remove call to Self::close_election_window(). (#1678)
  • In end_era (#1678)
  • In set_force_era emit ForceEra event. (#1678)
  • Removes ValidateUnsigned impl for the pallet. (#1678)
  • Modifies the maximum number of nominators that receive rewards, per validator, from 2,048 to 1,024. (#1706)

MultiSig

  • Adding/Removing signers invalidates existing proposals. (#1726)
  • Changing number of required signatures invalidates existing proposals. (#1726)
  • Adding a proposal checks if the expiry date is in the future. (#1726)

Other

  • Update weights for all pallets. (#1705)
  • The return type of identity RPC endpoints get_key_identity_data and get_did_records has changed, since the Permissions type now uses a map instead of a set for extrinsic permissions. (#1679)
  • Remove internal Context::current_identity* API. (#1687)
  • Update Json Schema (#1708)
  • Adds transfer_restrictions_report runtime api. (#1714)
  • Adds InvalidTransferStatisticsFailure error. (#1714)
  • Returns the actual weight when redeeming an NFT. (#1725)
  • Removed dead code. (#1718)
  • Reject instructions with offchain assets without a venue. (#1715)
  • Adds OffChainAssetsMustHaveAVenueerror. (#1715)
  • Removes duplicate code (function: ensure_security_token_exists). (#1728)
  • Extrinsic link_ticker_to_asset_id returns an error if an asset is already linked to a ticker. (#1728)

Data Migration

Asset ID

  • pallet_checkpoint
    • The following storage have been migrated: TotalSupply, Balance, CheckpointIdSequence, BalanceUpdates, Timestamps, ScheduleIdSequence, CachedNextCheckpoints, ScheduledCheckpoints, ScheduleRefCount, SchedulePoints; (#1699)
  • pallet_compliance_manager
    • The following storage been migrated: AssetCompliances, TrustedClaimIssuer; (#1699)
  • pallet_ballot
    • The following storage been migrated: Metas, TimeRanges, MotionNumChoices, RCV, Results, Votes. (#1699)
  • pallet_distribution
    • The following storage been migrated: Distributions, HolderPaid; (#1699)
  • pallet_asset
    • The following storage have been migrated: Tickers, Tokens, Identifiers, TickersExemptFromAffirmation, AssetNames, BalanceOf, FundingRound, IssuedInFundingRound, Frozen, AssetDocuments, AssetDocumentsIdSequence, AssetMetadataValues, AssetMetadataValueDetails, AssetMetadataLocalNameToKey, AssetMetadataLocalKeyToName, AssetMetadataLocalSpecs, AssetMetadataNextLocalKey, MandatoryMediators, CurrentAssetMetadataLocalKey. (httpshttps://github.com//pull/1699)
  • pallet_corporate_actions
    • The following storage have been migrated: DefaultTargetIdentities, DefaultWithholdingTax, DidWithholdingTax, CAIdSequence, CorporateActions. (httpshttps://github.com//pull/1699)
  • pallet_external_agents
    • The following storage have been migrated: AGIdSequence, AgentOf, GroupOfAgent, NumFullAgents, GroupPermissions; (#1699)
  • pallet_nft
    • The following storage have been migrated: NumberOfNFTs, CollectionTicker, Collection, NFTsInCollection, NFTOwner. (#1699)
  • pallet_portfolio
    • The following storage have been migrated: PortfolioAssetBalances, PortfolioLockedAssets, PortfolioNFT, PortfolioLockedNFT, PreApprovedPortfolios; (#1699)
  • pallet_settlement
    • The following storage have been migrated: VenueFiltering, VenueAllowList, InstructionLegs; (#1699)
  • pallet_statistics
    • The following storage have been migrated: ActiveAssetStats, AssetTransferCompliances, AssetStats, TransferConditionExemptEntities; (#1699)
  • pallet_sto
    • The following storage have been migrated: Fundraisers, FundraiserCount, FundraiserNames. (#1699)
  • The InstructionDetails storage was migrated. (#1700)
  • Improve log messages. (#1730)
  • Add call to migrations in the Identity pallet. (#1730)
  • Fix Sto migration. (#1730)

Staking

  • Validators storage changed from StorageMap to CountedStorageMap. (#1678)
  • Nominators storage changed from StorageMap to CountedStorageMap. (#1678)
  • The following Storage have been removed: SnapshotValidators, SnapshotNominators, QueuedElected, QueuedScore, EraElectionStatus, IsCurrentSessionFinal, HistoryDepth, MinimumBondThreshold, EarliestUnappliedSlash. (#1678)
  • The following storage have changed types: Validators, Nominators. (#1678)

MultiSig

  • Migration to remove old MultiSig.ProposalDetail storage. (#1687)
  • Migrate MultiSig signers storage from Signatory type. (#1687)
  • Migrate renamed storage MultiSigToIdentity. (#1687)
  • Migrate Multisig MultiSigTxDone to NextProposalId. (#1687)
  • Removed storage Multisig.LostCreatorPrivileges. (#1687)
  • Migrate Multisig.CreatorDid to Multisig.PayingDid and Multisig.AdminDid (only if LostCreatorPrivileges hasn't been set). (#1687)