Add randomness contract support to AuthorityRound. (#10946)
* Add randomness contract support to Authority Round. Changes have been cherry-picked from poanetwork's aura-pos branch. Most of the work has been done by @mbr. * Address review comments for randomness contract. Co-Authored-By: David <dvdplm@gmail.com> * Rename revealSecret to revealNumber * Update Randomness contract bytecode * Use H256, rename secret to random number. * Use get_commit_and_cipher * Clean up Miner::prepare_block. * Remove is_reveal_phase call. * Add more comments, require randomness contract map. * Simplify run_randomness_phase * Address review comments. * Remove Client::transact_contract.
This commit is contained in:
@@ -95,6 +95,8 @@ pub struct AuthorityRoundParams {
|
||||
pub strict_empty_steps_transition: Option<Uint>,
|
||||
/// First block for which a 2/3 quorum (instead of 1/2) is required.
|
||||
pub two_thirds_majority_transition: Option<Uint>,
|
||||
/// The random number contract's address, or a map of contract transitions.
|
||||
pub randomness_contract_address: Option<BTreeMap<Uint, Address>>,
|
||||
}
|
||||
|
||||
/// Authority engine deserialization.
|
||||
@@ -124,7 +126,11 @@ mod tests {
|
||||
"validateStepTransition": 150,
|
||||
"blockReward": 5000000,
|
||||
"maximumUncleCountTransition": 10000000,
|
||||
"maximumUncleCount": 5
|
||||
"maximumUncleCount": 5,
|
||||
"randomnessContractAddress": {
|
||||
"10": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"20": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
}"#;
|
||||
|
||||
@@ -138,6 +144,10 @@ mod tests {
|
||||
assert_eq!(deserialized.params.immediate_transitions, None);
|
||||
assert_eq!(deserialized.params.maximum_uncle_count_transition, Some(Uint(10_000_000.into())));
|
||||
assert_eq!(deserialized.params.maximum_uncle_count, Some(Uint(5.into())));
|
||||
|
||||
assert_eq!(deserialized.params.randomness_contract_address.unwrap(),
|
||||
vec![
|
||||
(Uint(10.into()), Address(H160::from_str("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").unwrap())),
|
||||
(Uint(20.into()), Address(H160::from_str("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb").unwrap())),
|
||||
].into_iter().collect());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user