runtime: use babe as randomness source (#2504)

* runtime: use babe as randomness source

* runtime: fix randomness api

* bridges: fix random_seed

* parachains: use mock TestRandomness from frame_support_test

* parachains: use mock TestRandomness from frame_support_test

* runtime: update randomness source in test-runtime

* runtime: remove unused import

* parachains: add todo to audit usage of randomness api

* "Update Substrate"

Co-authored-by: parity-processbot <>
This commit is contained in:
André Silva
2021-03-10 17:22:59 +00:00
committed by GitHub
parent 9331e06eda
commit b360360544
14 changed files with 201 additions and 179 deletions
+1
View File
@@ -49,6 +49,7 @@ keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substra
sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" }
pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" }
sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" }
frame-support-test = { git = "https://github.com/paritytech/substrate", branch = "master" }
pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master" }
pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" }
pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" }
@@ -81,7 +81,7 @@ pub trait Config:
+ hrmp::Config
{
/// A randomness beacon.
type Randomness: Randomness<Self::Hash>;
type Randomness: Randomness<Self::Hash, Self::BlockNumber>;
}
decl_storage! {
@@ -181,7 +181,9 @@ impl<T: Config> Module<T> {
let random_seed = {
let mut buf = [0u8; 32];
let random_hash = T::Randomness::random(&b"paras"[..]);
// TODO: audit usage of randomness API
// https://github.com/paritytech/polkadot/issues/2601
let (random_hash, _) = T::Randomness::random(&b"paras"[..]);
let len = sp_std::cmp::min(32, random_hash.as_ref().len());
buf[..len].copy_from_slice(&random_hash.as_ref()[..len]);
buf
+3 -10
View File
@@ -22,7 +22,8 @@ use sp_runtime::traits::{
BlakeTwo256, IdentityLookup,
};
use primitives::v1::{AuthorityDiscoveryId, Balance, BlockNumber, Header, ValidatorIndex};
use frame_support::{parameter_types, traits::Randomness as RandomnessT};
use frame_support::parameter_types;
use frame_support_test::TestRandomness;
use std::cell::RefCell;
use std::collections::HashMap;
use crate::{
@@ -54,14 +55,6 @@ frame_support::construct_runtime!(
}
);
pub struct TestRandomness;
impl RandomnessT<H256> for TestRandomness {
fn random(_subject: &[u8]) -> H256 {
Default::default()
}
}
parameter_types! {
pub const BlockHashCount: u32 = 250;
pub BlockWeights: frame_system::limits::BlockWeights =
@@ -108,7 +101,7 @@ impl pallet_balances::Config for Test {
}
impl crate::initializer::Config for Test {
type Randomness = TestRandomness;
type Randomness = TestRandomness<Self>;
}
impl crate::configuration::Config for Test { }