mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 18:01:03 +00:00
remove string constants <-- @rphmeier
This commit is contained in:
@@ -20,10 +20,12 @@ use rstd::prelude::*;
|
|||||||
use runtime_support::storage::unhashed::StorageVec;
|
use runtime_support::storage::unhashed::StorageVec;
|
||||||
use demo_primitives::SessionKey;
|
use demo_primitives::SessionKey;
|
||||||
|
|
||||||
|
pub const AUTHORITY_AT: &'static[u8] = b":auth:";
|
||||||
|
|
||||||
struct AuthorityStorageVec {}
|
struct AuthorityStorageVec {}
|
||||||
impl StorageVec for AuthorityStorageVec {
|
impl StorageVec for AuthorityStorageVec {
|
||||||
type Item = SessionKey;
|
type Item = SessionKey;
|
||||||
const PREFIX: &'static[u8] = b":auth:";
|
const PREFIX: &'static[u8] = AUTHORITY_AT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the current set of authorities. These are the session keys.
|
/// Get the current set of authorities. These are the session keys.
|
||||||
|
|||||||
@@ -77,35 +77,35 @@ use runtime::staking::Balance;
|
|||||||
// after each vote as all but K entries are cleared. newly registering candidates must use cleared
|
// after each vote as all but K entries are cleared. newly registering candidates must use cleared
|
||||||
// entries before they increase the capacity.
|
// entries before they increase the capacity.
|
||||||
|
|
||||||
type VoteIndex = u32;
|
pub type VoteIndex = u32;
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
const CANDIDACY_BOND: &[u8] = b"cou:cbo";
|
pub const CANDIDACY_BOND: &[u8] = b"cou:cbo";
|
||||||
const VOTING_BOND: &[u8] = b"cou:vbo";
|
pub const VOTING_BOND: &[u8] = b"cou:vbo";
|
||||||
const PRESENT_SLASH_PER_VOTER: &[u8] = b"cou:pss";
|
pub const PRESENT_SLASH_PER_VOTER: &[u8] = b"cou:pss";
|
||||||
const CARRY_COUNT: &[u8] = b"cou:cco";
|
pub const CARRY_COUNT: &[u8] = b"cou:cco";
|
||||||
const PRESENTATION_DURATION: &[u8] = b"cou:pdu";
|
pub const PRESENTATION_DURATION: &[u8] = b"cou:pdu";
|
||||||
const INACTIVE_GRACE_PERIOD: &[u8] = b"cou:vgp";
|
pub const INACTIVE_GRACE_PERIOD: &[u8] = b"cou:vgp";
|
||||||
const VOTING_PERIOD: &[u8] = b"cou:per";
|
pub const VOTING_PERIOD: &[u8] = b"cou:per";
|
||||||
const TERM_DURATION: &[u8] = b"cou:trm";
|
pub const TERM_DURATION: &[u8] = b"cou:trm";
|
||||||
const DESIRED_SEATS: &[u8] = b"cou:sts";
|
pub const DESIRED_SEATS: &[u8] = b"cou:sts";
|
||||||
|
|
||||||
// permanent state (always relevant, changes only at the finalisation of voting)
|
// permanent state (always relevant, changes only at the finalisation of voting)
|
||||||
const ACTIVE_COUNCIL: &[u8] = b"cou:act";
|
pub const ACTIVE_COUNCIL: &[u8] = b"cou:act";
|
||||||
const VOTE_COUNT: &[u8] = b"cou:vco";
|
pub const VOTE_COUNT: &[u8] = b"cou:vco";
|
||||||
|
|
||||||
// persistent state (always relevant, changes constantly)
|
// persistent state (always relevant, changes constantly)
|
||||||
const APPROVALS_OF: &[u8] = b"cou:apr:"; // Vec<bool>
|
pub const APPROVALS_OF: &[u8] = b"cou:apr:"; // Vec<bool>
|
||||||
const REGISTER_INFO_OF: &[u8] = b"cou:reg:"; // Candidate -> (VoteIndex, u32)
|
pub const REGISTER_INFO_OF: &[u8] = b"cou:reg:"; // Candidate -> (VoteIndex, u32)
|
||||||
const LAST_ACTIVE_OF: &[u8] = b"cou:lac:"; // Voter -> VoteIndex
|
pub const LAST_ACTIVE_OF: &[u8] = b"cou:lac:"; // Voter -> VoteIndex
|
||||||
const VOTERS: &[u8] = b"cou:vrs"; // Vec<AccountId>
|
pub const VOTERS: &[u8] = b"cou:vrs"; // Vec<AccountId>
|
||||||
const CANDIDATES: &[u8] = b"cou:can"; // Vec<AccountId>, has holes
|
pub const CANDIDATES: &[u8] = b"cou:can"; // Vec<AccountId>, has holes
|
||||||
const CANDIDATE_COUNT: &[u8] = b"cou:cnc"; // u32
|
pub const CANDIDATE_COUNT: &[u8] = b"cou:cnc"; // u32
|
||||||
|
|
||||||
// temporary state (only relevant during finalisation/presentation)
|
// temporary state (only relevant during finalisation/presentation)
|
||||||
const NEXT_FINALISE: &[u8] = b"cou:nxt";
|
pub const NEXT_FINALISE: &[u8] = b"cou:nxt";
|
||||||
const SNAPSHOTED_STAKES: &[u8] = b"cou:sss"; // Vec<Balance>
|
pub const SNAPSHOTED_STAKES: &[u8] = b"cou:sss"; // Vec<Balance>
|
||||||
const LEADERBOARD: &[u8] = b"cou:win"; // Vec<(Balance, AccountId)> ORDERED low -> high
|
pub const LEADERBOARD: &[u8] = b"cou:win"; // Vec<(Balance, AccountId)> ORDERED low -> high
|
||||||
|
|
||||||
/// How much should be locked up in order to submit one's candidacy.
|
/// How much should be locked up in order to submit one's candidacy.
|
||||||
pub fn candidacy_bond() -> Balance {
|
pub fn candidacy_bond() -> Balance {
|
||||||
@@ -551,6 +551,30 @@ fn finalise_tally() {
|
|||||||
storage::put(VOTE_COUNT, &(vote_index() + 1));
|
storage::put(VOTE_COUNT, &(vote_index() + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::Joiner;
|
||||||
|
use runtime::democracy;
|
||||||
|
|
||||||
|
pub fn externalities() -> TestExternalities {
|
||||||
|
let extras: TestExternalities = map![
|
||||||
|
twox_128(CANDIDACY_BOND).to_vec() => vec![].and(&9u64),
|
||||||
|
twox_128(VOTING_BOND).to_vec() => vec![].and(&3u64),
|
||||||
|
twox_128(PRESENT_SLASH_PER_VOTER).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(CARRY_COUNT).to_vec() => vec![].and(&2u64),
|
||||||
|
twox_128(PRESENTATION_DURATION).to_vec() => vec![].and(&2u64),
|
||||||
|
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&4u64),
|
||||||
|
twox_128(TERM_DURATION).to_vec() => vec![].and(&5u64),
|
||||||
|
twox_128(DESIRED_SEATS).to_vec() => vec![].and(&2u64),
|
||||||
|
twox_128(INACTIVE_GRACE_PERIOD).to_vec() => vec![].and(&1u32)
|
||||||
|
];
|
||||||
|
democracy::testing::externalities()
|
||||||
|
.into_iter().chain(extras.into_iter()).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -562,46 +586,7 @@ mod tests {
|
|||||||
use runtime::{staking, session, democracy};
|
use runtime::{staking, session, democracy};
|
||||||
|
|
||||||
fn new_test_ext() -> TestExternalities {
|
fn new_test_ext() -> TestExternalities {
|
||||||
let alice = Keyring::Alice.to_raw_public();
|
testing::externalities()
|
||||||
let bob = Keyring::Bob.to_raw_public();
|
|
||||||
let charlie = Keyring::Charlie.to_raw_public();
|
|
||||||
let dave = Keyring::Dave.to_raw_public();
|
|
||||||
let eve = Keyring::Eve.to_raw_public();
|
|
||||||
let ferdie = Keyring::Ferdie.to_raw_public();
|
|
||||||
let one = Keyring::One.to_raw_public();
|
|
||||||
|
|
||||||
map![
|
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => alice.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => bob.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => charlie.to_vec(),
|
|
||||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => alice.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => bob.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => charlie.to_vec(),
|
|
||||||
twox_128(&alice.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&10u64),
|
|
||||||
twox_128(&bob.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&20u64),
|
|
||||||
twox_128(&charlie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&30u64),
|
|
||||||
twox_128(&dave.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&40u64),
|
|
||||||
twox_128(&eve.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&50u64),
|
|
||||||
twox_128(&ferdie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&60u64),
|
|
||||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"sta:tot").to_vec() => vec![].and(&210u64),
|
|
||||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
|
||||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64),
|
|
||||||
|
|
||||||
twox_128(CANDIDACY_BOND).to_vec() => vec![].and(&9u64),
|
|
||||||
twox_128(VOTING_BOND).to_vec() => vec![].and(&3u64),
|
|
||||||
twox_128(PRESENT_SLASH_PER_VOTER).to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(CARRY_COUNT).to_vec() => vec![].and(&2u64),
|
|
||||||
twox_128(PRESENTATION_DURATION).to_vec() => vec![].and(&2u64),
|
|
||||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&4u64),
|
|
||||||
twox_128(TERM_DURATION).to_vec() => vec![].and(&5u64),
|
|
||||||
twox_128(DESIRED_SEATS).to_vec() => vec![].and(&2u64),
|
|
||||||
twox_128(INACTIVE_GRACE_PERIOD).to_vec() => vec![].and(&1u32)
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -70,19 +70,24 @@ impl VoteThreshold {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// public proposals
|
// public proposals
|
||||||
const PUBLIC_PROP_COUNT: &[u8] = b"dem:ppc"; // PropIndex
|
pub const PUBLIC_PROP_COUNT: &[u8] = b"dem:ppc"; // PropIndex
|
||||||
const PUBLIC_PROPS: &[u8] = b"dem:pub"; // Vec<(PropIndex, Proposal)>
|
pub const PUBLIC_PROPS: &[u8] = b"dem:pub"; // Vec<(PropIndex, Proposal)>
|
||||||
const DEPOSIT_OF: &[u8] = b"dem:dep:"; // PropIndex -> (Balance, Vec<AccountId>)
|
pub const DEPOSIT_OF: &[u8] = b"dem:dep:"; // PropIndex -> (Balance, Vec<AccountId>)
|
||||||
const LAUNCH_PERIOD: &[u8] = b"dem:lau"; // BlockNumber
|
pub const LAUNCH_PERIOD: &[u8] = b"dem:lau"; // BlockNumber
|
||||||
const MINIMUM_DEPOSIT: &[u8] = b"dem:min"; // Balance
|
pub const MINIMUM_DEPOSIT: &[u8] = b"dem:min"; // Balance
|
||||||
|
|
||||||
|
// council proposals
|
||||||
|
pub const COUNCIL_PROPOSAL: &[u8] = b"dem:cou:pro"; // (BlockNumber, Proposal)
|
||||||
|
pub const COUNCIL_VOTE_OF: &[u8] = b"dem:cou:vot:"; // AccountId -> CouncilVote
|
||||||
|
pub const COUNCIL_VOTERS: &[u8] = b"dem:cou:vts"; // Vec<AccountId>
|
||||||
|
|
||||||
// referenda
|
// referenda
|
||||||
const VOTING_PERIOD: &[u8] = b"dem:per"; // BlockNumber
|
pub const VOTING_PERIOD: &[u8] = b"dem:per"; // BlockNumber
|
||||||
const REFERENDUM_COUNT: &[u8] = b"dem:rco"; // ReferendumIndex
|
pub const REFERENDUM_COUNT: &[u8] = b"dem:rco"; // ReferendumIndex
|
||||||
const NEXT_TALLY: &[u8] = b"dem:nxt"; // ReferendumIndex
|
pub const NEXT_TALLY: &[u8] = b"dem:nxt"; // ReferendumIndex
|
||||||
const REFERENDUM_INFO_OF: &[u8] = b"dem:pro:"; // ReferendumIndex -> (BlockNumber, Proposal, VoteThreshold)
|
pub const REFERENDUM_INFO_OF: &[u8] = b"dem:pro:"; // ReferendumIndex -> (BlockNumber, Proposal, VoteThreshold)
|
||||||
const VOTERS_FOR: &[u8] = b"dem:vtr:"; // ReferendumIndex -> Vec<AccountId>
|
pub const VOTERS_FOR: &[u8] = b"dem:vtr:"; // ReferendumIndex -> Vec<AccountId>
|
||||||
const VOTE_OF: &[u8] = b"dem:vot:"; // (ReferendumIndex, AccountId) -> bool
|
pub const VOTE_OF: &[u8] = b"dem:vot:"; // (ReferendumIndex, AccountId) -> bool
|
||||||
|
|
||||||
/// The minimum amount to be used as a deposit for a public referendum proposal.
|
/// The minimum amount to be used as a deposit for a public referendum proposal.
|
||||||
pub fn minimum_deposit() -> Balance {
|
pub fn minimum_deposit() -> Balance {
|
||||||
@@ -288,6 +293,52 @@ fn inject_referendum(
|
|||||||
ref_index
|
ref_index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::Joiner;
|
||||||
|
use keyring::Keyring;
|
||||||
|
use runtime::{session, staking};
|
||||||
|
|
||||||
|
pub fn externalities() -> TestExternalities {
|
||||||
|
let alice = Keyring::Alice.to_raw_public();
|
||||||
|
let bob = Keyring::Bob.to_raw_public();
|
||||||
|
let charlie = Keyring::Charlie.to_raw_public();
|
||||||
|
let dave = Keyring::Dave.to_raw_public();
|
||||||
|
let eve = Keyring::Eve.to_raw_public();
|
||||||
|
let ferdie = Keyring::Ferdie.to_raw_public();
|
||||||
|
let one = Keyring::One.to_raw_public();
|
||||||
|
|
||||||
|
map![
|
||||||
|
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(session::VALIDATOR_COUNT).to_vec() => vec![].and(&3u32),
|
||||||
|
twox_128(&0u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => alice.to_vec(),
|
||||||
|
twox_128(&1u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => bob.to_vec(),
|
||||||
|
twox_128(&2u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => charlie.to_vec(),
|
||||||
|
twox_128(staking::INTENTION_COUNT).to_vec() => vec![].and(&3u32),
|
||||||
|
twox_128(&0u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => alice.to_vec(),
|
||||||
|
twox_128(&1u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => bob.to_vec(),
|
||||||
|
twox_128(&2u32.to_keyed_vec(staking::INTENTION_AT)).to_vec() => charlie.to_vec(),
|
||||||
|
twox_128(&alice.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&10u64),
|
||||||
|
twox_128(&bob.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&20u64),
|
||||||
|
twox_128(&charlie.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&30u64),
|
||||||
|
twox_128(&dave.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&40u64),
|
||||||
|
twox_128(&eve.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&50u64),
|
||||||
|
twox_128(&ferdie.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&60u64),
|
||||||
|
twox_128(&one.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(staking::TOTAL_STAKE).to_vec() => vec![].and(&210u64),
|
||||||
|
twox_128(staking::SESSIONS_PER_ERA).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(staking::VALIDATOR_COUNT).to_vec() => vec![].and(&3u64),
|
||||||
|
twox_128(staking::CURRENT_ERA).to_vec() => vec![].and(&1u64),
|
||||||
|
|
||||||
|
twox_128(LAUNCH_PERIOD).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&1u64),
|
||||||
|
twox_128(MINIMUM_DEPOSIT).to_vec() => vec![].and(&1u64)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -299,39 +350,7 @@ mod tests {
|
|||||||
use runtime::{staking, session, democracy};
|
use runtime::{staking, session, democracy};
|
||||||
|
|
||||||
fn new_test_ext() -> TestExternalities {
|
fn new_test_ext() -> TestExternalities {
|
||||||
let alice = Keyring::Alice.to_raw_public();
|
testing::externalities()
|
||||||
let bob = Keyring::Bob.to_raw_public();
|
|
||||||
let charlie = Keyring::Charlie.to_raw_public();
|
|
||||||
let dave = Keyring::Dave.to_raw_public();
|
|
||||||
let eve = Keyring::Eve.to_raw_public();
|
|
||||||
let ferdie = Keyring::Ferdie.to_raw_public();
|
|
||||||
let one = Keyring::One.to_raw_public();
|
|
||||||
|
|
||||||
map![
|
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => alice.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => bob.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => charlie.to_vec(),
|
|
||||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => alice.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => bob.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => charlie.to_vec(),
|
|
||||||
twox_128(&alice.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&10u64),
|
|
||||||
twox_128(&bob.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&20u64),
|
|
||||||
twox_128(&charlie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&30u64),
|
|
||||||
twox_128(&dave.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&40u64),
|
|
||||||
twox_128(&eve.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&50u64),
|
|
||||||
twox_128(&ferdie.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&60u64),
|
|
||||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"sta:tot").to_vec() => vec![].and(&210u64),
|
|
||||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
|
||||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(LAUNCH_PERIOD).to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(VOTING_PERIOD).to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(MINIMUM_DEPOSIT).to_vec() => vec![].and(&1u64)
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ use demo_primitives::{Proposal, AccountId, Hash, BlockNumber};
|
|||||||
use runtime::{staking, system, session};
|
use runtime::{staking, system, session};
|
||||||
use dispatch::enact_proposal;
|
use dispatch::enact_proposal;
|
||||||
|
|
||||||
const APPROVALS_REQUIRED: &[u8] = b"gov:apr";
|
pub const APPROVALS_REQUIRED: &[u8] = b"gov:apr";
|
||||||
const CURRENT_PROPOSAL: &[u8] = b"gov:pro";
|
pub const CURRENT_PROPOSAL: &[u8] = b"gov:pro";
|
||||||
const APPROVAL_OF: &[u8] = b"gov:app:";
|
pub const APPROVAL_OF: &[u8] = b"gov:app:";
|
||||||
|
|
||||||
/// The proportion of validators required for a propsal to be approved measured as the number out
|
/// The proportion of validators required for a propsal to be approved measured as the number out
|
||||||
/// of 1000.
|
/// of 1000.
|
||||||
@@ -113,6 +113,21 @@ pub mod internal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::Joiner;
|
||||||
|
|
||||||
|
pub fn externalities(session_length: u64, sessions_per_era: u64, current_era: u64) -> TestExternalities {
|
||||||
|
let extras: TestExternalities = map![
|
||||||
|
twox_128(APPROVALS_REQUIRED).to_vec() => vec![].and(&667u32)
|
||||||
|
];
|
||||||
|
staking::testing::externalities(session_length, sessions_per_era, current_era)
|
||||||
|
.into_iter().chain(extras.into_iter()).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -124,25 +139,7 @@ mod tests {
|
|||||||
use runtime::{staking, session};
|
use runtime::{staking, session};
|
||||||
|
|
||||||
fn new_test_ext() -> TestExternalities {
|
fn new_test_ext() -> TestExternalities {
|
||||||
let one = Keyring::One.to_raw_public();
|
testing::externalities(1, 1, 1)
|
||||||
let two = Keyring::Two.to_raw_public();
|
|
||||||
let three = [3u8; 32];
|
|
||||||
|
|
||||||
map![
|
|
||||||
twox_128(APPROVALS_REQUIRED).to_vec() => vec![].and(&667u32),
|
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(),
|
|
||||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(),
|
|
||||||
twox_128(b"sta:spe").to_vec() => vec![].and(&1u64),
|
|
||||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
|
||||||
twox_128(b"sta:era").to_vec() => vec![].and(&1u64)
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -23,16 +23,18 @@ use runtime_support::{storage, StorageVec};
|
|||||||
use demo_primitives::{AccountId, SessionKey, BlockNumber};
|
use demo_primitives::{AccountId, SessionKey, BlockNumber};
|
||||||
use runtime::{system, staking, consensus};
|
use runtime::{system, staking, consensus};
|
||||||
|
|
||||||
const SESSION_LENGTH: &[u8] = b"ses:len";
|
pub const SESSION_LENGTH: &[u8] = b"ses:len";
|
||||||
const CURRENT_INDEX: &[u8] = b"ses:ind";
|
pub const CURRENT_INDEX: &[u8] = b"ses:ind";
|
||||||
const LAST_LENGTH_CHANGE: &[u8] = b"ses:llc";
|
pub const LAST_LENGTH_CHANGE: &[u8] = b"ses:llc";
|
||||||
const NEXT_KEY_FOR: &[u8] = b"ses:nxt:";
|
pub const NEXT_KEY_FOR: &[u8] = b"ses:nxt:";
|
||||||
const NEXT_SESSION_LENGTH: &[u8] = b"ses:nln";
|
pub const NEXT_SESSION_LENGTH: &[u8] = b"ses:nln";
|
||||||
|
pub const VALIDATOR_AT: &[u8] = b"ses:val:";
|
||||||
|
pub const VALIDATOR_COUNT: &[u8] = b"ses:val:len";
|
||||||
|
|
||||||
struct ValidatorStorageVec {}
|
struct ValidatorStorageVec {}
|
||||||
impl StorageVec for ValidatorStorageVec {
|
impl StorageVec for ValidatorStorageVec {
|
||||||
type Item = AccountId;
|
type Item = AccountId;
|
||||||
const PREFIX: &'static[u8] = b"ses:val:";
|
const PREFIX: &'static[u8] = VALIDATOR_AT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the current set of validators.
|
/// Get the current set of validators.
|
||||||
@@ -131,6 +133,30 @@ fn rotate_session() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::{Joiner, KeyedVec};
|
||||||
|
use keyring::Keyring;
|
||||||
|
use runtime::system;
|
||||||
|
|
||||||
|
pub fn externalities(session_length: u64) -> TestExternalities {
|
||||||
|
let one = Keyring::One.to_raw_public();
|
||||||
|
let two = Keyring::Two.to_raw_public();
|
||||||
|
let three = [3u8; 32];
|
||||||
|
|
||||||
|
let extras: TestExternalities = map![
|
||||||
|
twox_128(SESSION_LENGTH).to_vec() => vec![].and(&session_length),
|
||||||
|
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&3u32),
|
||||||
|
twox_128(&0u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => one.to_vec(),
|
||||||
|
twox_128(&1u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => two.to_vec(),
|
||||||
|
twox_128(&2u32.to_keyed_vec(VALIDATOR_AT)).to_vec() => three.to_vec()
|
||||||
|
];
|
||||||
|
system::testing::externalities().into_iter().chain(extras.into_iter()).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|||||||
@@ -31,25 +31,27 @@ pub type Balance = u64;
|
|||||||
/// The amount of bonding period left in an account. Measured in eras.
|
/// The amount of bonding period left in an account. Measured in eras.
|
||||||
pub type Bondage = u64;
|
pub type Bondage = u64;
|
||||||
|
|
||||||
struct IntentionStorageVec {}
|
pub const BONDING_DURATION: &[u8] = b"sta:loc";
|
||||||
|
pub const VALIDATOR_COUNT: &[u8] = b"sta:vac";
|
||||||
|
pub const SESSIONS_PER_ERA: &[u8] = b"sta:spe";
|
||||||
|
pub const NEXT_SESSIONS_PER_ERA: &[u8] = b"sta:nse";
|
||||||
|
pub const CURRENT_ERA: &[u8] = b"sta:era";
|
||||||
|
pub const LAST_ERA_LENGTH_CHANGE: &[u8] = b"sta:lec";
|
||||||
|
pub const TOTAL_STAKE: &[u8] = b"sta:tot";
|
||||||
|
pub const INTENTION_AT: &[u8] = b"sta:wil:";
|
||||||
|
pub const INTENTION_COUNT: &[u8] = b"sta:wil:len";
|
||||||
|
|
||||||
|
pub const BALANCE_OF: &[u8] = b"sta:bal:";
|
||||||
|
pub const BONDAGE_OF: &[u8] = b"sta:bon:";
|
||||||
|
pub const CODE_OF: &[u8] = b"sta:cod:";
|
||||||
|
pub const STORAGE_OF: &[u8] = b"sta:sto:";
|
||||||
|
|
||||||
|
pub struct IntentionStorageVec {}
|
||||||
impl StorageVec for IntentionStorageVec {
|
impl StorageVec for IntentionStorageVec {
|
||||||
type Item = AccountId;
|
type Item = AccountId;
|
||||||
const PREFIX: &'static[u8] = b"sta:wil:";
|
const PREFIX: &'static[u8] = INTENTION_AT;
|
||||||
}
|
}
|
||||||
|
|
||||||
const BONDING_DURATION: &[u8] = b"sta:loc";
|
|
||||||
const VALIDATOR_COUNT: &[u8] = b"sta:vac";
|
|
||||||
const SESSIONS_PER_ERA: &[u8] = b"sta:spe";
|
|
||||||
const NEXT_SESSIONS_PER_ERA: &[u8] = b"sta:nse";
|
|
||||||
const CURRENT_ERA: &[u8] = b"sta:era";
|
|
||||||
const LAST_ERA_LENGTH_CHANGE: &[u8] = b"sta:lec";
|
|
||||||
const TOTAL_STAKE: &[u8] = b"sta:tot";
|
|
||||||
|
|
||||||
const BALANCE_OF: &[u8] = b"sta:bal:";
|
|
||||||
const BONDAGE_OF: &[u8] = b"sta:bon:";
|
|
||||||
const CODE_OF: &[u8] = b"sta:cod:";
|
|
||||||
const STORAGE_OF: &[u8] = b"sta:sto:";
|
|
||||||
|
|
||||||
/// The length of the bonding duration in eras.
|
/// The length of the bonding duration in eras.
|
||||||
pub fn bonding_duration() -> BlockNumber {
|
pub fn bonding_duration() -> BlockNumber {
|
||||||
storage::get_or_default(BONDING_DURATION)
|
storage::get_or_default(BONDING_DURATION)
|
||||||
@@ -434,6 +436,33 @@ fn new_era() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::{Joiner, KeyedVec};
|
||||||
|
use keyring::Keyring;
|
||||||
|
use runtime::session;
|
||||||
|
|
||||||
|
pub fn externalities(session_length: u64, sessions_per_era: u64, current_era: u64) -> TestExternalities {
|
||||||
|
let one = Keyring::One.to_raw_public();
|
||||||
|
let two = Keyring::Two.to_raw_public();
|
||||||
|
let three = [3u8; 32];
|
||||||
|
|
||||||
|
let extras: TestExternalities = map![
|
||||||
|
twox_128(INTENTION_COUNT).to_vec() => vec![].and(&3u32),
|
||||||
|
twox_128(&0u32.to_keyed_vec(INTENTION_AT)).to_vec() => one.to_vec(),
|
||||||
|
twox_128(&1u32.to_keyed_vec(INTENTION_AT)).to_vec() => two.to_vec(),
|
||||||
|
twox_128(&2u32.to_keyed_vec(INTENTION_AT)).to_vec() => three.to_vec(),
|
||||||
|
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&sessions_per_era),
|
||||||
|
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&3u64),
|
||||||
|
twox_128(CURRENT_ERA).to_vec() => vec![].and(¤t_era),
|
||||||
|
twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||||
|
];
|
||||||
|
session::testing::externalities(session_length).into_iter().chain(extras.into_iter()).collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -456,10 +485,10 @@ mod tests {
|
|||||||
let four = [4u8; 32];
|
let four = [4u8; 32];
|
||||||
|
|
||||||
let mut t: TestExternalities = map![
|
let mut t: TestExternalities = map![
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&2u32),
|
twox_128(session::VALIDATOR_COUNT).to_vec() => vec![].and(&2u32),
|
||||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![10; 32],
|
twox_128(&0u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => vec![10; 32],
|
||||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![20; 32],
|
twox_128(&1u32.to_keyed_vec(session::VALIDATOR_AT)).to_vec() => vec![20; 32],
|
||||||
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64),
|
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64),
|
||||||
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&2u32),
|
twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&2u32),
|
||||||
twox_128(BONDING_DURATION).to_vec() => vec![].and(&3u64),
|
twox_128(BONDING_DURATION).to_vec() => vec![].and(&3u64),
|
||||||
@@ -526,7 +555,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn staking_eras_work() {
|
fn staking_eras_work() {
|
||||||
let mut t: TestExternalities = map![
|
let mut t: TestExternalities = map![
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&1u64),
|
twox_128(session::SESSION_LENGTH).to_vec() => vec![].and(&1u64),
|
||||||
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64)
|
twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64)
|
||||||
];
|
];
|
||||||
with_externalities(&mut t, || {
|
with_externalities(&mut t, || {
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ use demo_primitives::{AccountId, Hash, TxOrder, BlockNumber, Block, Header,
|
|||||||
UncheckedTransaction, Function, Log};
|
UncheckedTransaction, Function, Log};
|
||||||
use runtime::{staking, session};
|
use runtime::{staking, session};
|
||||||
|
|
||||||
const NONCE_OF: &[u8] = b"sys:non:";
|
pub const NONCE_OF: &[u8] = b"sys:non:";
|
||||||
const BLOCK_HASH_AT: &[u8] = b"sys:old:";
|
pub const BLOCK_HASH_AT: &[u8] = b"sys:old:";
|
||||||
const CODE: &[u8] = b"sys:cod";
|
pub const CODE: &[u8] = b"sys:cod";
|
||||||
|
|
||||||
/// The current block number being processed. Set by `execute_block`.
|
/// The current block number being processed. Set by `execute_block`.
|
||||||
pub fn block_number() -> BlockNumber {
|
pub fn block_number() -> BlockNumber {
|
||||||
@@ -229,6 +229,19 @@ fn info_expect_equal_hash(given: &Hash, expected: &Hash) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod testing {
|
||||||
|
use super::*;
|
||||||
|
use runtime_io::{twox_128, TestExternalities};
|
||||||
|
use codec::Joiner;
|
||||||
|
|
||||||
|
pub fn externalities() -> TestExternalities {
|
||||||
|
map![
|
||||||
|
twox_128(&0u64.to_keyed_vec(BLOCK_HASH_AT)).to_vec() => [69u8; 32].encode()
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -240,7 +253,7 @@ mod tests {
|
|||||||
use environment::with_env;
|
use environment::with_env;
|
||||||
use primitives::hexdisplay::HexDisplay;
|
use primitives::hexdisplay::HexDisplay;
|
||||||
use demo_primitives::{Header, Digest, UncheckedTransaction, Transaction, Function};
|
use demo_primitives::{Header, Digest, UncheckedTransaction, Transaction, Function};
|
||||||
use runtime::staking;
|
use runtime::{governance, staking};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn staking_balance_transfer_dispatch_works() {
|
fn staking_balance_transfer_dispatch_works() {
|
||||||
@@ -248,7 +261,7 @@ mod tests {
|
|||||||
let two = Keyring::Two.to_raw_public();
|
let two = Keyring::Two.to_raw_public();
|
||||||
|
|
||||||
let mut t: TestExternalities = map![
|
let mut t: TestExternalities = map![
|
||||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
twox_128(&one.to_keyed_vec(staking::BALANCE_OF)).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
||||||
];
|
];
|
||||||
|
|
||||||
let tx = UncheckedTransaction {
|
let tx = UncheckedTransaction {
|
||||||
@@ -268,27 +281,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn new_test_ext() -> TestExternalities {
|
fn new_test_ext() -> TestExternalities {
|
||||||
let one = Keyring::One.to_raw_public();
|
governance::testing::externalities(2, 2, 0)
|
||||||
let two = Keyring::Two.to_raw_public();
|
|
||||||
let three = [3u8; 32];
|
|
||||||
|
|
||||||
map![
|
|
||||||
twox_128(&0u64.to_keyed_vec(b"sys:old:")).to_vec() => [69u8; 32].encode(),
|
|
||||||
twox_128(b"gov:apr").to_vec() => vec![].and(&667u32),
|
|
||||||
twox_128(b"ses:len").to_vec() => vec![].and(&2u64),
|
|
||||||
twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(),
|
|
||||||
twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32),
|
|
||||||
twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(),
|
|
||||||
twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(),
|
|
||||||
twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(),
|
|
||||||
twox_128(b"sta:spe").to_vec() => vec![].and(&2u64),
|
|
||||||
twox_128(b"sta:vac").to_vec() => vec![].and(&3u64),
|
|
||||||
twox_128(b"sta:era").to_vec() => vec![].and(&0u64),
|
|
||||||
twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0]
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use runtime_support::storage;
|
|||||||
|
|
||||||
pub type Timestamp = u64;
|
pub type Timestamp = u64;
|
||||||
|
|
||||||
const CURRENT_TIMESTAMP: &[u8] = b"tim:val";
|
pub const CURRENT_TIMESTAMP: &[u8] = b"tim:val";
|
||||||
|
|
||||||
/// Get the current time.
|
/// Get the current time.
|
||||||
pub fn get() -> Timestamp {
|
pub fn get() -> Timestamp {
|
||||||
|
|||||||
Reference in New Issue
Block a user