Use balances::TotalIssuance for scaling between votes and balances (#… (#2364)

* Use balances::TotalIssuance for scaling between votes and balances (#2361)

* Use total issuance to convert between votes and balances

* Remove cruft

* Bump runtime version
This commit is contained in:
Gavin Wood
2019-04-24 12:51:46 +02:00
committed by GitHub
parent babe638be7
commit 382caca947
2 changed files with 17 additions and 33 deletions
+17 -4
View File
@@ -34,8 +34,7 @@ use client::{
use runtime_primitives::{ApplyResult, generic, create_runtime_str};
use runtime_primitives::transaction_validity::TransactionValidity;
use runtime_primitives::traits::{
BlakeTwo256, Block as BlockT, DigestFor, NumberFor, StaticLookup, CurrencyToVoteHandler,
AuthorityIdFor,
BlakeTwo256, Block as BlockT, DigestFor, NumberFor, StaticLookup, AuthorityIdFor, Convert
};
use version::RuntimeVersion;
use council::{motions as council_motions, voting as council_voting};
@@ -59,8 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: create_runtime_str!("node"),
impl_name: create_runtime_str!("substrate-node"),
authoring_version: 10,
spec_version: 65,
impl_version: 65,
spec_version: 66,
impl_version: 66,
apis: RUNTIME_API_VERSIONS,
};
@@ -73,6 +72,20 @@ pub fn native_version() -> NativeVersion {
}
}
pub struct CurrencyToVoteHandler;
impl CurrencyToVoteHandler {
fn factor() -> u128 { (Balances::total_issuance() / u64::max_value() as u128).max(1) }
}
impl Convert<u128, u64> for CurrencyToVoteHandler {
fn convert(x: u128) -> u64 { (x / Self::factor()) as u64 }
}
impl Convert<u128, u128> for CurrencyToVoteHandler {
fn convert(x: u128) -> u128 { x * Self::factor() }
}
impl system::Trait for Runtime {
type Origin = Origin;
type Index = Index;