Charge fees for parachain execution (#293)

* burn parachain funds depending on candidate fees

* charge fees when executing parachain

* fix test compilation

* branch grumble addressed

* test that Balance >= usize
This commit is contained in:
Robert Habermeier
2019-06-25 21:09:54 +02:00
committed by Bastian Köcher
parent 9004fb3f97
commit 7a5b9bddf5
7 changed files with 238 additions and 40 deletions
@@ -23,7 +23,10 @@ use std::sync::Arc;
use adder::{HeadData as AdderHead, BlockData as AdderBody};
use substrate_primitives::Pair;
use parachain::codec::{Encode, Decode};
use primitives::{Hash, parachain::{HeadData, BlockData, Id as ParaId, Message, Extrinsic}};
use primitives::Hash;
use primitives::parachain::{
HeadData, BlockData, Id as ParaId, Message, Extrinsic, Status as ParachainStatus,
};
use collator::{InvalidHead, ParachainContext, VersionInfo};
use parking_lot::Mutex;
@@ -50,11 +53,11 @@ impl ParachainContext for AdderContext {
fn produce_candidate<I: IntoIterator<Item=(ParaId, Message)>>(
&self,
_relay_parent: Hash,
last_head: HeadData,
status: ParachainStatus,
ingress: I,
) -> Result<(BlockData, HeadData, Extrinsic), InvalidHead>
{
let adder_head = AdderHead::decode(&mut &last_head.0[..])
let adder_head = AdderHead::decode(&mut &status.head_data.0[..])
.ok_or(InvalidHead)?;
let mut db = self.db.lock();