Reward submitters only when submitted block is finalized (#34)

* reward submitters on finalization

* fix grumble

* make submitter part of ImportContext
This commit is contained in:
Svyatoslav Nikolsky
2020-03-19 15:21:02 +03:00
committed by Bastian Köcher
parent 8232bdfe30
commit d904a282c8
5 changed files with 252 additions and 85 deletions
+10 -6
View File
@@ -40,14 +40,15 @@ use sp_io::crypto::secp256k1_ecdsa_recover;
pub fn verify_aura_header<S: Storage>(
storage: &S,
params: &AuraConfiguration,
submitter: Option<S::Submitter>,
header: &Header,
) -> Result<ImportContext, Error> {
) -> Result<ImportContext<S::Submitter>, Error> {
// let's do the lightest check first
contextless_checks(params, header)?;
// the rest of checks requires parent
let context = storage
.import_context(&header.parent_hash)
.import_context(submitter, &header.parent_hash)
.ok_or(Error::MissingParentBlock)?;
let validators = context.validators();
let header_step = header.step().ok_or(Error::MissingStep)?;
@@ -179,7 +180,7 @@ fn verify_signature(expected_validator: &Address, signature: &H520, message: &H2
mod tests {
use super::*;
use crate::kovan_aura_config;
use crate::tests::{genesis, signed_header, validator, validators_addresses, InMemoryStorage};
use crate::tests::{genesis, signed_header, validator, validators_addresses, AccountId, InMemoryStorage};
use parity_crypto::publickey::{sign, KeyPair};
use primitives::{rlp_encode, H520};
@@ -197,12 +198,15 @@ mod tests {
empty_step
}
fn verify_with_config(config: &AuraConfiguration, header: &Header) -> Result<ImportContext, Error> {
fn verify_with_config(
config: &AuraConfiguration,
header: &Header,
) -> Result<ImportContext<AccountId>, Error> {
let storage = InMemoryStorage::new(genesis(), validators_addresses(3));
verify_aura_header(&storage, &config, header)
verify_aura_header(&storage, &config, None, header)
}
fn default_verify(header: &Header) -> Result<ImportContext, Error> {
fn default_verify(header: &Header) -> Result<ImportContext<AccountId>, Error> {
verify_with_config(&kovan_aura_config(), header)
}