Conversation
…urrency Signed-off-by: Xavier Lau <xavier@inv.cafe>
858fd78
to
65a842d
Compare
Please review the rewritten logic (without struct changes) first. |
What is the next plan for this pull request? I noticed you retain the |
Depending on the migration performance testing. |
8f23884
to
23b00c8
Compare
Commit 25a4b46Pangolin
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Democracy:
+ Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 397, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
- Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 397, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
+ Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
- Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
+ Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 386, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
- Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 386, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 399, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 399, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
+ Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 389, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
- Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 389, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet PhragmenElection:
+ Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
- Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
+ Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
- Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
+ Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 539, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
- Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 539, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 328, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 328, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] }
Pallet Vesting:
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 556, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 556, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
+ Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 554, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] }
- Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 554, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] } Pangoro
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Bsc:
+ Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 411, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in", " previous rounds this was added to track the older qualified authorities, to make sure we can", " verify a older header"] }
- Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 411, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in previous rounds", " this was added to track the older qualified authorities, to make sure we can verify a older header"] }
+ Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 239, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities", " in every epoch the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
- Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 239, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities in every epoch", " the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 260, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 260, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] } Commit 9999095Pangolin
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Democracy:
+ Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 397, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
- Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 397, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
+ Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
- Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
+ Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 386, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
- Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 386, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 399, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 399, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
+ Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 389, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
- Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 389, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet PhragmenElection:
+ Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
- Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
+ Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
- Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
+ Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 539, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
- Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 539, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 328, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 328, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] }
Pallet Vesting:
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 556, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 556, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
+ Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 554, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] }
- Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 554, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] } Pangoro
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Bsc:
+ Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 411, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in", " previous rounds this was added to track the older qualified authorities, to make sure we can", " verify a older header"] }
- Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 411, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in previous rounds", " this was added to track the older qualified authorities, to make sure we can verify a older header"] }
+ Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 239, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities", " in every epoch the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
- Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 239, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities in every epoch", " the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 260, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 260, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] } Commit d78be05Pangolin
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Democracy:
+ Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 396, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
- Entry: StorageEntryMetadata { name: "NextExternal", modifier: Optional, ty: Plain(UntrackedSymbol { id: 397, marker: PhantomData }), default: [0], docs: [" The referendum to be tabled whenever it would be valid to table an external proposal.", " This happens when a referendum needs to be tabled and one of two conditions are met:", " - `LastTabledWasExternal` is `false`; or", " - `PublicProps` is empty."] }
+ Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 384, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
- Entry: StorageEntryMetadata { name: "Preimages", modifier: Optional, ty: Map { hashers: [Identity], key: UntrackedSymbol { id: 9, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Map of hashes to the proposal preimage, along with who registered it and their deposit.", " The block number is the block at which it was deposited."] }
+ Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 385, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
- Entry: StorageEntryMetadata { name: "ReferendumInfoOf", modifier: Optional, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 4, marker: PhantomData }, value: UntrackedSymbol { id: 386, marker: PhantomData } }, default: [0], docs: [" Information concerning any given referendum.", "", " TWOX-NOTE: SAFE as indexes are not under an attacker’s control."] }
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 398, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Optional, ty: Plain(UntrackedSymbol { id: 399, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with last version."] }
+ Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 388, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
- Entry: StorageEntryMetadata { name: "VotingOf", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 389, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" All votes for a particular voter. We store the balance for the number of votes that we", " have recorded. The second item is the total amount of delegations, that will be added.", "", " TWOX-NOTE: SAFE as `AccountId`s are crypto hashes anyway."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 181, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet PhragmenElection:
+ Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 536, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
- Entry: StorageEntryMetadata { name: "Members", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current elected members.", "", " Invariant: Always sorted based on account id."] }
+ Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 536, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
- Entry: StorageEntryMetadata { name: "RunnersUp", modifier: Default, ty: Plain(UntrackedSymbol { id: 537, marker: PhantomData }), default: [0], docs: [" The current reserved runners-up.", "", " Invariant: Always sorted based on rank (worse to best). Upon removal of a member, the", " last (i.e. _best_) runner-up will be replaced."] }
+ Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 538, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
- Entry: StorageEntryMetadata { name: "Voting", modifier: Default, ty: Map { hashers: [Twox64Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 539, marker: PhantomData } }, default: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], docs: [" Votes and locked stake of a particular voter.", "", " TWOX-NOTE: SAFE as `AccountId` is a crypto hash."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 327, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 328, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] }
Pallet Vesting:
+ Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 555, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
- Entry: StorageEntryMetadata { name: "StorageVersion", modifier: Default, ty: Plain(UntrackedSymbol { id: 556, marker: PhantomData }), default: [0], docs: [" Storage version of the pallet.", "", " New networks start with latest version, as determined by the genesis build."] }
+ Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 553, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] }
- Entry: StorageEntryMetadata { name: "Vesting", modifier: Optional, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 554, marker: PhantomData } }, default: [0], docs: [" Information regarding the vesting of a given account."] } Pangoro
Pallet Balances:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Bsc:
+ Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 410, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in", " previous rounds this was added to track the older qualified authorities, to make sure we can", " verify a older header"] }
- Entry: StorageEntryMetadata { name: "Authorities", modifier: Default, ty: Plain(UntrackedSymbol { id: 411, marker: PhantomData }), default: [0], docs: [" [`Authorities`] is the set of qualified authorities that currently active or activated in previous rounds", " this was added to track the older qualified authorities, to make sure we can verify a older header"] }
+ Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 238, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities", " in every epoch the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
- Entry: StorageEntryMetadata { name: "AuthoritiesOfRound", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 8, marker: PhantomData }, value: UntrackedSymbol { id: 239, marker: PhantomData } }, default: [0], docs: [" [`AuthoritiesOfRound`] use a `Map<u64, Vec<u32>>` structure to track the active authorities in every epoch", " the key is `checkpoint.number / epoch_length`", " the value is the index of authorities which extracted from checkpoint block header", " So the the order of authorities vector **MUST** be stable."] }
Pallet Kton:
+ Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
- Entry: StorageEntryMetadata { name: "Locks", modifier: Default, ty: Map { hashers: [Blake2_128Concat], key: UntrackedSymbol { id: 0, marker: PhantomData }, value: UntrackedSymbol { id: 134, marker: PhantomData } }, default: [0], docs: [" Any liquidity locks on some account balances.", " NOTE: Should only be accessed when setting, changing and freeing a lock."] }
Pallet Staking:
+ Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 259, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators /", " nominators. The threshold is compared to the actual number of validators / nominators", " (`CountFor*`) in the system compared to the configured max (`Max*Count`)."] }
- Entry: StorageEntryMetadata { name: "ChillThreshold", modifier: Optional, ty: Plain(UntrackedSymbol { id: 260, marker: PhantomData }), default: [0], docs: [" The threshold for when users can start calling `chill_other` for other validators / nominators.", " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in", " the system compared to the configured max (`Max*Count`)."] } |
Let's do the OldBalanceLock migration first, and leave other migrations to later runtime upgrade. |
Balances
Knownledge
Solution
If the chain can afford a large migration, we can translate the
OldBalanceLock
struct to:Otherwise, make a scheduled migration.
Staking
Knowledge
Solution
If the chain can afford a large migration, we can translate the
StakingLedger
struct to:Otherwise, ignore the
ledger.lock.staking_amount
filed temporarily, until the next runtime upgrade.Final Changes
darwinia_support::LockableCurrency
withframe_support::LockableCurrency
.darwinia-vesting
withpallet-vesting
.darwinia-democracy
withpallet-democracy
.darwinia-election-phragmen
withpallet-election-phragmen
.Balance::Lock
- (optional).Staking::Ledger
- (optional).Balance::AccountData
, add*_frozen
- (optional).Staking::withdraw_unbonded
, user need to withdraw their unbonded manually.Staking::unbond
won't touch the existed unbonding-items even if they are expired.Staking::deposit_extra
won't touch the existed deposited items even if they are expired. If we want to improve the UX. Apps -> deposit-again ->pallet_utility::batch(claim_mature_deposit, deposit)
.Staking::try_claim_deposits_with_punish
only focus on the target deposit which specifies by the id(timestamp).StakingLedger.*_staking_lock.staking_amount
are useless now. Plan to migrate in the next version.