From f02c34fba4f8ec3cf23caeff71e29da566d2cdb3 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 17:50:58 +0200 Subject: [PATCH 01/19] Initial stuff. --- Cargo.lock | 27 +- demo/cli/src/lib.rs | 1 + demo/executor/src/lib.rs | 4 +- demo/runtime/src/lib.rs | 31 +- demo/runtime/wasm/Cargo.lock | 5 + .../release/demo_runtime.compact.wasm | Bin 236029 -> 196874 bytes .../release/demo_runtime.wasm | Bin 236080 -> 212586 bytes polkadot/api/Cargo.toml | 3 + polkadot/api/src/lib.rs | 146 +++--- polkadot/consensus/Cargo.toml | 1 + polkadot/consensus/src/lib.rs | 55 +- polkadot/executor/src/lib.rs | 274 ---------- polkadot/primitives/Cargo.toml | 2 + polkadot/primitives/src/block.rs | 375 ------------- polkadot/primitives/src/lib.rs | 32 +- polkadot/primitives/src/parachain.rs | 42 +- polkadot/primitives/src/transaction.rs | 487 ----------------- polkadot/primitives/src/validator.rs | 8 +- polkadot/runtime/Cargo.toml | 34 +- polkadot/runtime/src/api.rs | 29 - polkadot/runtime/src/environment.rs | 81 --- polkadot/runtime/src/genesismap.rs | 91 ---- polkadot/runtime/src/lib.rs | 173 +++--- polkadot/runtime/src/parachains.rs | 207 ++++++++ polkadot/runtime/src/runtime/consensus.rs | 48 -- polkadot/runtime/src/runtime/governance.rs | 371 ------------- polkadot/runtime/src/runtime/mod.rs | 34 -- polkadot/runtime/src/runtime/parachains.rs | 123 ----- polkadot/runtime/src/runtime/session.rs | 294 ----------- polkadot/runtime/src/runtime/staking.rs | 496 ------------------ polkadot/runtime/src/runtime/system.rs | 450 ---------------- polkadot/runtime/src/runtime/timestamp.rs | 63 --- polkadot/runtime/wasm/Cargo.lock | 198 ++++++- polkadot/runtime/wasm/Cargo.toml | 29 +- polkadot/runtime/wasm/build.sh | 2 +- polkadot/runtime/wasm/init.sh | 0 polkadot/service/Cargo.toml | 5 +- polkadot/service/src/lib.rs | 73 ++- polkadot/transaction-pool/Cargo.toml | 2 + polkadot/transaction-pool/src/lib.rs | 147 ++++-- .../release/runtime_test.compact.wasm | Bin 14298 -> 4422 bytes .../release/runtime_test.wasm | Bin 14394 -> 5096 bytes substrate/runtime/consensus/Cargo.toml | 4 + substrate/runtime/consensus/src/lib.rs | 26 +- substrate/runtime/council/src/lib.rs | 3 +- substrate/runtime/democracy/src/lib.rs | 3 +- substrate/runtime/executive/src/lib.rs | 31 +- substrate/runtime/primitives/src/generic.rs | 41 +- substrate/runtime/primitives/src/traits.rs | 14 +- substrate/runtime/session/src/lib.rs | 28 +- substrate/runtime/staking/src/lib.rs | 3 +- substrate/runtime/system/src/lib.rs | 17 + substrate/runtime/timestamp/Cargo.toml | 6 + substrate/runtime/timestamp/src/lib.rs | 75 ++- .../substrate_test_runtime.compact.wasm | Bin 33039 -> 16318 bytes .../release/substrate_test_runtime.wasm | Bin 33119 -> 17828 bytes 56 files changed, 1088 insertions(+), 3606 deletions(-) mode change 100644 => 100755 demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm delete mode 100644 polkadot/primitives/src/block.rs delete mode 100644 polkadot/primitives/src/transaction.rs delete mode 100644 polkadot/runtime/src/api.rs delete mode 100644 polkadot/runtime/src/environment.rs delete mode 100644 polkadot/runtime/src/genesismap.rs create mode 100644 polkadot/runtime/src/parachains.rs delete mode 100644 polkadot/runtime/src/runtime/consensus.rs delete mode 100644 polkadot/runtime/src/runtime/governance.rs delete mode 100644 polkadot/runtime/src/runtime/mod.rs delete mode 100644 polkadot/runtime/src/runtime/parachains.rs delete mode 100644 polkadot/runtime/src/runtime/session.rs delete mode 100644 polkadot/runtime/src/runtime/staking.rs delete mode 100644 polkadot/runtime/src/runtime/system.rs delete mode 100644 polkadot/runtime/src/runtime/timestamp.rs mode change 100755 => 100644 polkadot/runtime/wasm/init.sh mode change 100644 => 100755 substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm mode change 100644 => 100755 substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm diff --git a/Cargo.lock b/Cargo.lock index 880e992909336..2df35a0c8dfad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1121,8 +1121,11 @@ dependencies = [ "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "substrate-client 0.1.0", + "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", "substrate-state-machine 0.1.0", ] @@ -1172,6 +1175,7 @@ dependencies = [ "polkadot-api 0.1.0", "polkadot-collator 0.1.0", "polkadot-primitives 0.1.0", + "polkadot-runtime 0.1.0", "polkadot-statement-table 0.1.0", "polkadot-transaction-pool 0.1.0", "substrate-bft 0.1.0", @@ -1228,6 +1232,7 @@ dependencies = [ "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-serializer 0.1.0", ] @@ -1240,13 +1245,24 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", "substrate-keyring 0.1.0", - "substrate-misbehavior-check 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-council 0.1.0", + "substrate-runtime-democracy 0.1.0", + "substrate-runtime-executive 0.1.0", "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", + "substrate-runtime-timestamp 0.1.0", ] [[package]] @@ -1256,6 +1272,7 @@ dependencies = [ "ed25519 0.1.0", "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", @@ -1268,9 +1285,9 @@ dependencies = [ "substrate-client 0.1.0", "substrate-codec 0.1.0", "substrate-executor 0.1.0", - "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", "tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1292,8 +1309,10 @@ dependencies = [ "ethereum-types 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-api 0.1.0", "polkadot-primitives 0.1.0", + "polkadot-runtime 0.1.0", "substrate-codec 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", "transaction-pool 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1814,10 +1833,12 @@ dependencies = [ "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", ] [[package]] @@ -1990,10 +2011,12 @@ dependencies = [ "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", ] [[package]] diff --git a/demo/cli/src/lib.rs b/demo/cli/src/lib.rs index b58295775bc8b..7aa948f1a0485 100644 --- a/demo/cli/src/lib.rs +++ b/demo/cli/src/lib.rs @@ -75,6 +75,7 @@ pub fn run(args: I) -> error::Result<()> where let genesis_config = GenesisConfig { consensus: Some(ConsensusConfig { + code: vec![], // TODO authorities: vec![god_key.clone()], }), system: None, diff --git a/demo/executor/src/lib.rs b/demo/executor/src/lib.rs index c64855a3d35fc..17351de138ab5 100644 --- a/demo/executor/src/lib.rs +++ b/demo/executor/src/lib.rs @@ -197,7 +197,7 @@ mod tests { construct_block( 1, [69u8; 32].into(), - hex!("4d58afeca0dec7604a0bcfb29573e6ad202efe65c8535b013c0c79b5a8c9114d").into(), + hex!("57ba67304318efaee95c4f9ab95ed5704eafe030bc8db2df00acb08c2f4979c8").into(), vec![Extrinsic { signed: Alice.into(), index: 0, @@ -210,7 +210,7 @@ mod tests { construct_block( 2, block1().1, - hex!("218ce7bdf2350713aa52dbf0a12d1e8b0a3a9f1623e7c95aa4800886e96397d1").into(), + hex!("ead4c60c0cad06b7ee73e64efeec2d4eb82c651469fb2ec748cfe5026bea5c49").into(), vec![ Extrinsic { signed: Bob.into(), diff --git a/demo/runtime/src/lib.rs b/demo/runtime/src/lib.rs index e6ac39823bdf4..1f7248f68e4df 100644 --- a/demo/runtime/src/lib.rs +++ b/demo/runtime/src/lib.rs @@ -54,20 +54,6 @@ impl HasPublicAux for Concrete { type PublicAux = AccountId; } -impl timestamp::Trait for Concrete { - type Value = u64; -} - -/// Timestamp module for this concrete runtime. -pub type Timestamp = timestamp::Module; - -impl consensus::Trait for Concrete { - type SessionKey = SessionKey; -} - -/// Consensus module for this concrete runtime. -pub type Consensus = consensus::Module; - impl system::Trait for Concrete { type Index = Index; type BlockNumber = BlockNumber; @@ -81,8 +67,22 @@ impl system::Trait for Concrete { /// System module for this concrete runtime. pub type System = system::Module; -impl session::Trait for Concrete { +impl consensus::Trait for Concrete { type PublicAux = ::PublicAux; + type SessionKey = SessionKey; +} + +/// Consensus module for this concrete runtime. +pub type Consensus = consensus::Module; + +impl timestamp::Trait for Concrete { + type Value = u64; +} + +/// Timestamp module for this concrete runtime. +pub type Timestamp = timestamp::Module; + +impl session::Trait for Concrete { type ConvertAccountIdToSessionKey = Identity; } @@ -113,6 +113,7 @@ pub type CouncilVoting = council::voting::Module; impl_outer_dispatch! { pub enum Call where aux: ::PublicAux { + Consensus = 0, Session = 1, Staking = 2, Timestamp = 3, diff --git a/demo/runtime/wasm/Cargo.lock b/demo/runtime/wasm/Cargo.lock index bc627b63e09c6..45cc1fee9aec3 100644 --- a/demo/runtime/wasm/Cargo.lock +++ b/demo/runtime/wasm/Cargo.lock @@ -666,10 +666,12 @@ dependencies = [ "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", ] [[package]] @@ -838,9 +840,12 @@ dependencies = [ "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", ] [[package]] diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index e380c8c8f16566cb541db8f57b732f27f7cc33f6..3a19302231182b62685e6de0eb1084d5701385a9 100644 GIT binary patch literal 196874 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%0A*Nh6jwx8zFk%3I%3!gS*5 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

LKncP0LtwRVOT8I2FsP>&WdlBB8ci^u}z7 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 literal 236029 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 diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm old mode 100644 new mode 100755 index 528b6f61ec2d123d4d29bc7951f86463bfd25cdf..bd29309a06cad366e916390bb86986c9d0adc9e8 GIT binary patch literal 212586 zcmeFa4X|a`Ro{8exu5UecVFMvUuvl(>)h)$yvFjV{UtS)GkK@WlB~!s8_Gqg7+0x{ z-5@_nwk)?DGi6H+7^eXRWa1D3CL;zhGGGlo*nn|d&=~{>V?YT?qEJqv#G1hwJSnGe zQOw{8^ZT#0_de&`cVB-bK3?2=Z+5(Q zul|?cd%VL>W`DWKxy)5Mvd8v^l6$h_U0r9#`(7UI?Th>#)yUs0+E`O9DY z&9}b$#NBWG&hO4fda$ksZ@%Nio9<2@SeI=a-*LyAZa?voTVL|>YrO8M)g54R_uJoo z(t&WmDraOT?tatB6K}corwTq{BOd4y@JQtuE{XV*1Ns@t~}3sojfc0Lx`#R;wQV~!DsSa{X0+G`S!cNyU27Q z{Os3-fIeHl`(5umdFywa_^!9U?bdg_?eD+!ZEwk5U~hr6jR9{NvJUqHNqke+Nacm& zH@)lRZEwH(tta1l;+@&O)3?5jt2f>8)_0z`^*f-P+p|;ot~cFv*B#$|E0BbC-uc!y zXWx?pw-axE*U9+K_vUNg`PR2Jzj}YZ>)qVHfReBSvi<>%0V@_d6JLIyc%wmowC1mO_7yUbWO3!chfDef0w^7AC`UIn|Jh5 zak!JsR(Oeb)$+hv?v`q=TXsTIU2m#88EC*%hobAxcs=ZJ!4mw$s`SeFM zWQL}q>*;(}(u*NKD-4_;b>~_-omG3cG~zAZvu-vAv29@EkM=r(={7Lvo>HEa90EN@g12DA34_hzZ{y@JSmG=T-jRX!Vyfz$AsqRY=Hpv18=}I-E zPSXusvn$-FCw!Z4%?E0)QoRBT1a-IERN;Zc1rHbttzX!(+@eQHVVo%ij8>}UcZLH6k+IE=XrJIyXG!MD)^)G4x~%xhDov785_R4 zCSWxj-Y>g1z{$Cb8&v@3)A5@RdY5MfP&P&?i+N{~1CjW$nn2!zE8#`mEpx6kgfVpF z&ECi>yJ(hz;zq{s(T{?#>BCO%u)u%NsMRa~mqtxTeAIM^F*9^Vj9lnws9iuo2_sc^ zZN%BDCq<~jMs5VfILZz^D7&*_bx?P_pyR8OAwkH(Cwfz(Pvh=DFh1_iqzBeD9>(V5 zp__~*A8#8D&?s8a7_R{ujbZxz8uR#pZr)$Q;)R$BZV_Ws1zcS==-5bb-hl(k{BUM+ zstYF>1*UsACx?B~Jwh!^;gE9&TEpy=FD9l z6`S?H#FaEi^A%N0-!bXB)RtE2!;}20Oc-*zkc$}WYcm#FRpHhR=xL`c?WIRGx$sJ=?*CaN@kMt4X61!66>8JHV)NKKpT0(;2L>|n^i>}hBn8J%WY zGR}@f<(kY#8#JP%wln((Yp^?cF6~SJlT6a_V;9Z-k7svaQQ)rx2>{ztG?h3AlD_PT=X%iFz0l_} zw?*~a2%*&|U=gby?0iKbYwG-*kVU7UU1og%Tm}UK*acwZk^qdlO#n`&Qvh%@%Ndi4 zF~j5(x8T_rR5DYj$UF>0TmvQMbBKv4PCf_xA5dcUKtf4QudtT-xUup$wtJGQZ3#+# zzG!Lf6e$vkLoiNLSS+#=P`>g6F_e4WAq0x-{2olAh=Oe2o*9RbjQ`{P&TG*GeOl*x zm>vFsDIgJS1Z%ku&?DtwVPSO-V02m7{6`N0NO0(Lc?=-%c6B)C zr3fHi#NCM%21o&+y5f?y)p1-eeQeg3d55i+`q3~*HaPC~scihmtDWw>T>{G?DD=hb z_E~Tq;_w%LWkqcu^g8dTa#xVD{~3Zv%0P7eWDO_+DN`tUb@>*&d;O%hDn%lX)u1QC z#oz>Mnq^@aTAlY)DIdRc)|JAp9?J;4VBPX3sRfmxG^9CNWiqp=wp9l8b&y%HtnAp; zt7!ruLr;X04w_|-Lj&$iAL1Jbji$wAR&DR}VwXYGSFg+c9lC5Dsf;wE`PCaH&^AK{ zh#Nt-Z|Eig64y%i35c11DqRqOMc`HU33xD*JsAQTd1nrqp}c{Og65!IH795q=WWB= zBF+}^wH#O3YFBvK*s2O?fEJ}GD6)johWdcWnuTEK9-&f5^M(nr54v|t5Pl+sW7)S% zWZ|~SY~FYKqfKb@L0wvReLk#9>jBKohS8*jEF$Z+;*8C{MuDsG@CU|7SfvFuc!vIZp>r8qcZW9nuEoR^6p zn$>Ig;gwXq=qr?^>P3U0ED@vVbfJ1gBm~G{#GDI5MeI{th_)4_ zXMQpMp?+r<6AnqYoXV3SDv|%9Y}JBq6%H-o9$e(4EQ8)fsATh~x1|PU`e4n`4Ko`{$87z9ZXvOP^ zw^yH~eAp}p^or3wP5G!>jho+$p*o6phoYQe z!yWEy&enN-6_K|!-_6zE(G^e41TKrKv%hm)uDJ|-xC)=hu|oY5LJ%i%#oSZ48kH;I zYSmpup01UX*o*3~fZy&^HQ0DHe71hAU@MdIJ^V~xk-b;UcXhscUG_e(w{H56YQI(1 ziFH_FEn^VLmCNwLLl2MC8pW7Sz22zHj4@RfnURW2AgC+}guvh`OM=6LO$LR;_$^YR zCZn%huoMZ?`F=GBabWySh@+@JlUaNjJ6d-*gaAj^F$UAF(%uJP9!j$JJ(k3`4JvNl zjUO%YUNo|5hpgDFhP4e39HR|CY}oL_+Mo_zS!e6m)1Ut3Kl;8u`0TH~LNhg@^&u+P zy|eAU8S^4Og=YR)YNXp}q%l`O6f!w~c|CU`hl~bf>&uAc0@teUnqvJboA=>H9>nPg zTsU{;G&k34MkV!n7grQ(kN1C9{L3rW#YTv*<$UpOzZ^`z&v%#N}ge)1J#~5ld{6C=g>sb6hu-g$eIE{?$(&NTs zm4+DXVXmA1;EMC9EwKNlKdY)N@OYn1ZGca#f60Ci zQ#2>_Aa#*gds0u1EZ@Nc$=l`QNRBvjkmKR3D@GBUpcPl+RDeaBWE>v$sRRo}$zcii zxU|S53$z!gtP72y<9-K5)|kYVa&^E(BZhuJ-7=mvZj%wm3xR854BY|&CSE1o>4I2B zJhYTStexoSJ)=HmzyhMsw7M4fI`vhSflt0yd2X4Ae zeF0yaDJ#uS?MQmfx(doisfbi!GKVsZfm9~HLSn8FlLx6W%t^pSCaC;GYg|4!2nNs2 zk20DfCSZxb@dNnXi;j$*$(Kb&pCn#t^CBTM`cx4#Q&X)PLf;2Q9Q!tTs0NylcEEJ3(CeffyNu!| zd1x~Q(NTKb3JAo+g2$|YcD#V#RJiJuV+a>FOd&~Ht$v**7;C0BHtwj~APi(ND@y|) z{xb}NHZRR$SoQ=LE=IzU2ZuW!=?F5U&rl^Hzw4;DTYZe)C=|VsWeQcM_su(7-| z+z7+oCjvhL;_Nzb3n1_ZKcQd1%u9-=V*1HG*fKeSSiJEipgb}7hR zr}T8AR8&JTQ$*EYfSMv%TcBS%FN(u^S3IYj+q^52S0XUkPIdS47F z-b#GfVn1#<1-*2HprhPt0A=$t1(Shvs$cufypAYEZWgxvIr%MlSBwL zm~3Pnb|#aztOztx2#yCE1SbUszfttsWr1PLI@sBGwm{qkPm{4;oxO)JGuKdA;ZQBd z5}swz24$ot*xZCj%x1Uo#XNT#--g0NHp>Y3^6GvX$g9u4Pr;*9a}CD4I?W3aj(K&8 zy9mg<`iu9~^u`h$?v{XZ?DZNfe;o~t=&}hG58#^wIz%Rv3$G1$%df85Dkpw*#HRg9 zLEggdFvY9=W<{dK1wMl!sb2R^pmu+$?p=AIEJTw^B%b<&f`t&ktZnCj`OU(^#hP7?br%@SHP8Yoi%+G%=Jqf5?%UJ%m zq_;(fn4Xa)3iti$>|jBU5T#YLbEVj<9*=rtgdVA~84@B4Bk7V+&?WquE*Y6FaY)=B z4L~$_&?OTR=%h=WEv*ziutuqLNuv~{v5Qjal2FQ>JrD=-Iav$*RY?dQMiuae}>+(-^%KhbPfM|DX zHbO}=aWO9U`JxsFFykL5t>i_h&r#A%UIc*mm%9UlcoAdXSMEtg@C+mYEMwkdUu*=E z0>_yB=tWe&J1rsVOOl-KUfY4Vb%_?d1ViMd#E|;OM4C_M`dbX-lE9?qlR)T zC6G>%VYOE74}INL?u)%vi|;X7C|9m2-ar?C*XwIVId(+}Hm@n($WvaTcUq}+oFA0x zTWImGIb$2py_@_+enjS$y0ZZ{MmB~pZB)F95VdjsjUAxk*&ul6)-SpT^hujRSnnQ&-ab~7~B&Mx#LCl1)JGpP8fSNTK zArOMiwwgg%hzyFl*4h-(kno_~J+(ZZw3bmqD4O%?dJ%&Jw8)HKcd*~<=B9wXzU^3gNurChBk{$!yfNi?niue&H@Duxj0!p)ZdyFNPf>T zF8enz&2L#FJhvo(LFsyRP~x1R6b$wC9p92rXuJ-0B#<@d|Fw3ddm8u z>J;u?clv|j8}6XwQ^5+jjORzULNjngyxK@tWx6_$uBPFt)jtV&|3{r?QP2F%rZ$x< zhc}nXW>E_=(z{kyXB`byb{a#rQSg-_Wj2~JR%exfgZmk$(hSphvoyhry`<6&-qBhx zP$w$|dJTCa?vvO(G#Cv=yN8~Pjr@H=X3(!vf7ROI&Z&-Ki0Y5t3iGwi*04HkCRw}; zPeOD0kWYk&;nws~$HWGLL|{=x;9HZ{MXXJ6LF+k#CpU%fEf8~BLn#@GyT_Lm9u*RJ zV*p9t-Pea0;S?%&JOIP#52@9esNZHl!!#wx2py{_A`9yl7axGS>LDiV(}F~Q!TyF0 zab2S|Qi&|vc@wX6A`yyU@}MtS1a*m8is^4Tlmzc@RXEcNX5DHK!YGz~lZz99;<3TC z;xai#PE26ASCQ17CTOed>g-SS&UL&)P7w3)FUtP2 z3gmSGCu1@Zl_qtEbk{RxtRvlH`Flkdu|H(kdw*iWf%-EyEGqw{MUQQI3pq@#IjkqR zBGHGoj`T&3jN6<7Z6@GEL<cL_1b}_%IPc>ys z^{G!n6LAUjZ)yE=ScgE0Tz-feP5~Fp2vKQMAF)bax{@b}P{n7>fw9gk17y5Yoo0hL!7W&#^3NZ2>*o_a&)Rze1MXviSd|(R+92w{U*{jt6my+DyV+$KHbmb z{hzHq{45hJqL7_Hdic^%67xt@s+051|RXuE(=0{~`t5|_k&WnY0 zNl0*3val~HX3uQ}R~Z%PSkXi!j5iO)wMeQJ$;2cLq>rIe=;c0zmMemQy?fDl%t^ zU3Op&r>7|U13mRbgEnsqlvq@+6hL!Oj4mj1x`-KeVT_0f8>0aYx?AC#Up2`FK5vN&X9v`}F9RdZ zUU?6M(v?`SjR59wCLW}(4@0_|lP*7q9tx}4kz%LL3|bh7LWj;YaM0DD5)L#u0}eDT z!+icS9E5~_*aDk-I~ts67G>H%GR@HBOb9%gPh&zN%BTTA;eJxzi?6DE^}WfoE5iM% zc2KE>hR_I+FBKXViYX+p8-pea(UnMIs5_5Q)nO#N+}7kP5Fd%uthU6x;yN^BIsIRf zJQ9Iz$i5byo@6S~J*JQ%`^83qjq>x20t3TSsUT$00=f;VGBFVuT{hrilXyYS+Tc$B z@lAWsGM%0Kr&w~Uf10+81=c^srelHi?^G&i_D>MS(>EyuU&hWkFccB?L41(K!-C6y z&9sO(uU@=me&hNU20K{QPCv78v59Opn{8a}78U2!6S?tsXuzN@!RGSW0g=n>$e1#Q zyoj%AR?6yQ;|Hp+j;$s@gqKa-5@5{~D^cV427@qMMcoJy0d^n0)`fDPToBvyX`mRC zKerZ`pw7bBLlXl^%wJ`pX=sDJgTgmP`8Ma|b*OqoL25(QbD!D}D{;?sYJ7h~_Z#*7 z5#1lD?~m&KXuP*RGU#>}RiR5qGX%KNB(=9-_J*`bx~GS|x`#IR+^c(NEojW`CL9Wu z?CVevgAharwTilpYSTTf*sPNGLLM~t2@YDy$bEu?7CCaC;E*eh*{R{6cnL&8RTjZ{e%l?Qu`b>!++tviFk9qlSJFP7O=(H>s3t9lZ) zrrH~(k_=+Yh--O7i>6Glm1>AH=Rh-M%#^e_QL>d##x}QN(k2*x(?3Wm`1~$` z0*FB%OP-y_DL@_v8=IHW3kd}+oLWrCfC0E{<-03nBZ;v1%SZr}fszoBb9%t$TCliN zEEAq$h{%N(EJ)LDM$n2 zCU*qkWW(B+#~uOE5Q7L{F_Xx=AFTB#PlP79%xUux3ii$*c=bDu&B!r|CMWDDnvgEB zD&i($JSS}1A8%1K)!a{DsqM}L$_C~&WhW0E#F_79=8VjJ$@q&PY=u!1SICx#ludKk zLSdMxIYm-K5QP`a2G6Ujo>3rSsSr#dkp=%UFrK@Qs*5|?a5m;k&6>{o^xW5z>;5X#IOKuDMS&2t3!G( z-y^SH_DqPuWTNQ}g;QyfHYGJ_-&%LZW;dLuNl^PdBV?F#8@51$;cSK>Fr2a$EbdEX zzG~8|)29U#e+XrIN>SS{v;xl`{}`n)@LYY_HX9^Ld`cne&-|~=XHS2kdG{e=eD!x9 zZoc{R-J(~|0oMWSVl&NZ+2kAqu6>$pR%=Dlku0U+F_YRbPLrsBdWGS0)?y3Kwu?FACee)234V@FR)Mchdc zhG{R}Sx(em4};~6(8dB;n>;l+T~l#)I~6ZZd;RHKdJ=y zs2Qw9`M}nuM~8!~51vE{u?0^e>4xA*B;63gu6R%CB8dsP`MY#gcaJk^9t0hCk7<)J zE7krY4X25mG=c_l!5$w%)os&&4?Z(A8|SD6EqbmZj0cXQY6O|1QAHGl-2|hAC4uOu z(p~L|xJ8I9L$VbCiK|mU;%a#{db%O)XLh#4OZY-%g!E#HTp$mmaJ$SjDbQ)YM}JJa zhB9sduWs&_SxHR*>EFw4sj?Xk6MGoE9E-?b(p22#@pFshJT=@35HNy>IXsa(8qj%6 zz_jwxHu;M*6tZ|GGY!~*>IrP61GV}M=3O;6za6l$C*s()gI0{lAmR-DjbbEimBu*R z4gB`@2F_WrpdFG^1RpwvvA(U=CEY%6t+`VIwF>gRW}+XQRDG&xRDy;$vnT9mwyLky z!hCrH-eYsl@Cx3wNxIpvDGXlX!a#VJF!)fwe_I&n=|=HDPr_j74nYs-Gr`)K>;a$J z6FTniU5g0A>q_FM*&f6&!2;s@{hmdT9fK5RLWF8eUGis~UNaN%bKAGHFP zekxF&neYWyU|R#FCD=x%7`8vouc56a`t?)*joAL&fBDI_=m*xWF;H73K0l!a&ol|X zrEa7$D5gR5bgCuU6ibt!TwX7#4RBTgm zEsL?i3d>AJ^xiQx9})#p)dpUL$j(%c(T*Qiq_HCknCyfZATP+7%`(k^(1!I88WWPX zVZw-HbqE$!Phj#+cH*6^lzrRk6<<-S+xJT`qh>!KL|w026s7Q_M?zQQkvW$a{YXJ& zRe8HQpv-V>kZ?*-)RMhvMyopLq&fq;X1)if@l5p*D`0D=BH)t5Ti#&rs93-R}sOB+ddtiFV4WxwQCq%oC#5NcmseY_cA2zB(P|H)}slK%S1 zmFg@K-2%JTibyva5qct7uhvDp(U3?IUq+Cm!Sr(u?~->}RsmCN;|)r&QQDkA8PzZ0 zi&wi`kc9b^CDz|C*|qvjwb}3$Ay#C^g%c}F>`H`Iq2+NBVdFrV7B5C=DUHM_6x#-& zKeGKM$qyEla*$1vP6^FsH$L)S-oh^QmBLQ4dapsW^Im)p%pvO%XerX2zk z%vY?w`QTyHAxd%tm;Dw0+x2~Pg~W2z-&;cGY>?T}uDZdvoDHfU{YRq9ke*u(z75!r zeHy6(u3jo+e%!yZry)D z&Vop?Puv`B)78cFFZ7Hb@k&@!0icsXbQO=#^T!nFx7{{H_VYecT3Z2#0Y|##6fphh zGzSaU!$~U?XnBIUL~DKp+f3}L+@+sr?V8Jn;UqOErTnz>x>$VrufjFuWpDa_guB44 zLoA%AW>f^LsynWCR6v93s};D>(RsB%DFZ^kA19G$ZS@;P6z0J|K~WUco~p@)mM$?#gL&ZqyUdZ-1XZ!jB)H@%3n*BWl_3mH3ho^W_!maV0Lf8i(FdtaW{vTY!; z*&=Rk!?JC-xed$qxo~qCVKRr6{$pm>5_8y0W>7L(Fo&^fYjfC=iWbdbgwz@pI~#;N za3t5Youh>D-QHSY(N_FHcEI`AQ?)I!=VDltmH+Z4I5mXYkcP_EwYjnJ-$0}@lvgKq zb#8Da8kyP4T;W<7EFZZ>%9gSa=lH4+z^=ar1i*I1MgY6E5dhl`@A|gMoD*CI?`4hR zzz}u+Fxj7D(Rb6yLZBBcYbYcc1PL+A)@X6zO zvFQkD1TqkY$%y3r>R!F4w=mCx$c})bevw;tqPM{|9YUj+d9i!W1k@0Q$F2l-1I z(?5~8)o>NsJ63#)mI?6a0n0h`4YyEWb|Jhr>UhE)C768%ulkFDlz2*(Yyuj1s)1&d3H0PK z>hQo9ShUzQF4icKXGmC-iMc_bh_|^Z2M;TCSK6u^VfM{g=LCt!t>Qzh*&)UE>I4-V z8uUTjh4qXb!lEU~6%Y1(3Ov;ZNm*r(;*C}n8{85~mA{;=j>c?Ogi$$y$oia%IHnrr z5p|{nQ?Zb5v_NIiD*F|KmestNIGCJvlmlV zTBe&>c5Xg-Q;K!S%3Dps!JA{x2Fq059m_o*6z0(;5`a{m1>%XvAWE62^F6wra7}f4 zbanAW{%5%)fiUGuciLVa`DAsG4V z+I_*ILC`#a5Ci{D&dhQm!JeDcZY8LLtx);7VhKBj%gJv`YXYhLLl&Bk6S&2upVOP7 zLV5L1EM5^Dkm`T_2&5C;k@rsjFLieH3gLelHL2?cJJbg6!iIJrDT09)swk$TIqmp$q9a*dsVXx{Mnx`FEny zhGTLzLhn*W-P9_IY)ieDms;uByu3_(oskKFC!1hgA0LEXE<{cVWWc zIGQ&Aq~3Pg25}*%A6*};aWx33ScA)5pU|L%4veTEO$+XE>@b%>{wS5c+^bP$82BK^ zH@C4H1hwr&!;LXMkreA-Ng@I=tQGwymZ9Mh{BMMhbAtbM_}C8gPJ)6O2~P{1lVBma z!!rstlz!y!h-|h6K3iyM1U`A!_%zJznc9zDOR)*&u9RH3M8o+a=we)Dd5uRmuT*ri ziP9H5E0lih3qScwK7A`8eL*NygMTYf>PSPJPya=bJuO5K9i5e>j^(&ABwMm)K{jKm zqF){WQi<>nnD962*{x-8o6Imlm2^@Uv1R(mplxQX)JbC&R_~h`tMY~!>)0tTX)?Md z)EA=TUx-pvECdmm)MM$9Fx%bEtfz|7)IwgaFdSxIuF#M8=YIdjEV-J&Pbq1D2{K4D z*s83(7HirXc94wkE3g9(PAeMr4!Go z^C}dvtk0qXj)@G-bQy;z2B3Z(ZAl<#<|~xSa>%1gr7Y(LG|vNeq3ay52Cv`X7(5@W zY2ScAg~A)707yH)nwT{2CiI>I*5;)gwTVDrEiijCaSb+&Y|MeMnzmWMwDww?xyhNK z6@a#F7Vs+SY|ZV1C+MS=+Vru>T@86XWy$?1RciKHLf|sIM3V-7ofnb9?WwWqdyg;!K?X}KuNd3qgpX(l9-|2pZXIiaZLlQHQWI{>loK@&CqLeA zjRa?d-L`XF2kOUvb$0doOJ?7SP2ldsppEo`9%+|uzJry6x;ZFnfM@Opm$oqxzt5#- z8l0KwPq?6~?)Sx_P>RyLI7|3|-uMKB9N+LT#VlXFOix7O9}nO17DT}8qJ4uYoxYJ- zZ4|=8OUKoRnm+ory)72^x>&q_e{+7a`qCM=GWz?~L(K%3>Y-n3KKpE|)%#j+zQ0w= zhg)}x?LTPqPlw{(8`T$Dtt`I%sn*jcT6bS+_o%rsN%c_k4r{}r7xE~BuWoDwP!&KR z|KEf!HUw(aQwuWqR7QlN2jLT2k7{i0?!IAf$IsVyzdpM|nyWl5BUGJqRrD+oQs(v(4G3unE? zjVL+EC%C3KQo^JP;ukNY*;ner$1Fx9@hVkTJ!-K)6?(f?$boRap)Yq4H8@wDfL(G9 zlZchDx71DV>Gb!bnZg{%2m$8qn~6vP0=Y6`ShKu?bmMW(x$D%$1Tt|j=tNdT^p$CVh7T1r3+RJ|jA|?>X0&2)F{2O*jXCngWKnUtONYr43rsINs-$(L{+`wd zs?c%m38=F>EF|b+5+gF=T)_uAE*G-VV^pJXp`Mz>_n0l4vYFp7&r6p)gePJSU6n7v z-MC3aiXb#RNtCJ#ca*95>KB~y_qiYbsb6d5|DJbZw2|`HZ1HQA@@J7s=ya!)Ketq5 z$23JDhjGfRGxN#=0;{cn0FhWwzAYe-wx<+rGz?74_my)-FWm@>;*YlPGZTf2(~WtR z=O8N(8W_GJV_qrFm>W}?2_#ojGv?>X4$M6lw2>Vst_ksAr$lj?=Ax57aGvZygErZL za+IjSq@mZ4mT?&*h-FGp&Y^X*W%R*v41J%>&X(bs>_EB`{l^6?%6#62#TJJ*v1k@; z6%uu6%WxFsUX$%PFV@Y?=Rgi39$Df;?LCQGtwG-fMoS8++SU+08rBEr=;33g{rqPO>HV z3A&61F3Tx#b(OMc8|p}%=*HxKqb5FJr=M7pBz({iM9aN$)znm@zhqfA3hIhGw6Z+0S%ic>CTN89ldgYdTx)sWtZYu*9IV zKjTFdIt;!j7ssk7qqwq-#yJ6dHJA=b+ zwBNQsZ#OSvhARvp<1}cU9uf93{kz1@Q-_%aaX#P#O13#wr+{Unkp3KJ%TyBxndon$ zc*`6MQO`_2mqhi(@1u789R@^2`<*VN-~0ja+Aqz^>#%U&leH1ICfBb+di@k6_&wu7L?wQybLO?D99z)bJ)^ z!4g;=b;OR!Shrx^ePy+8L^yCNg%y_>R@SG*zqfps4nxP*JWrp*Rpj z9z8d*rd-Gd^6c^sF67OVE79R4NSCNxed&dD#V@%&^bA61-(a^A_r}}Uud>_jeGOBlFd}^kiNH_+*FP<# zJXyuiJ10$waA6P*$XZ~KWBH8j|FX&!V9CTPS6t4cjxp&o9w|l=G;d~Nm$%YA+P|nZ z_JS~QCK1y$NP2;Fck0;+J!A73oMKSJ4?PS0p=Y6w&$ws#^s|E79KregCYv<6nG0eT z{)iNA)Y*_*>K7Qng%@2SwO%*rsnf=K=a3INFbZ67jM@S&ssdqknFojypSiqSDGQ;x#1}_N zntLG0n!PewZd4}wD1Re{CualfQa*aIk&z9j+kwp-68NKm5=+!{R3T#zYOlw`Jv85s z&sF6cughO$RqCv*4ME=Ky)1Bc34yZ%y0^d?S5C**Qy8Z^LJ&{05iI#J>Oq=Rrn<_PF_=%S*&7$sO92I#vSBz(*_>Rh(0PnpwBTvH2tOq2@z|?@vOd7A4|d zx|T$VEV^2hXsI&y$w_F57D?bH&0ikmbj=0MM$LEj>!yQT72is#&bm^R5-}!d8983Tv24i^JHr zZ5Vr0VhBP4n7SHmD;X}9pxT^i67ZycWfmvbiizvMR*O`xc=-aH*dz^RNMbmg!lOA> zFMAGD#X^f(kd`Zc%Wg#}yc_9FVbOS|y-j?I@ti{yMCUScio}JO)EFubR8mQz!MG|G zil<(6T@G_fN^HRWqVtMqh;)x_Zr8#b-v_zC@~hOGKunXQm&SUdjA|r^si{{-iJ%;_ zeHj!pGaFF$cn|AM) z4(T~B9Df%Z=@*+8dXnJ;Om!EW0(a4UwxO8h@)^2wW^}j$9Pp-5{h35zz~BbD}1Y9 z!UB3K+|a+nozf^o<6%TL4W-kO=YlimUitz(FlW@@^3aZuVdE4iBW@N1+C%g51+GHmX%dA820u?>>V2Z%`G zbAwN~Vg12tQ*h?}9FzkMiWqG$ zWm&fjnAuN@xNBN6LD3*$Ar4(+yUwBf_bj=_%rTt8*?$d3c=N?U8QL*x$_?1c)0abWOB z3}I`gsSXyc>5w9i&dmWImoOl_6 z04HX$?ZP7a1d{B-F}{%~27}SBvl8$llJf@+K}Z0z$7$N&AbPUN$w)YuT7krgnu*Mu zz?)>_^m3?8FZ7A*>kDU-S0*;lmzk7Dq@yFwdXZJma&TS|1brci1lT0rsrADD znJn-VO*l`Z@u{7wq4P}STh}|picNrlWND!ww!vz8 z)(tbpy22wU7fmMZd@6xmKN0Ka@d@%2s!PA&^tt|IBY@W z)FuG#Bl;PEhy3ZNmJ*tl^*J;ffdPL(>@JMJfNvvM-I;FMTc7SoH{1HZwxVq+w)dY| zm%tRFpCvNR(APZ^36dkglfmB`DZ(D>E1WLAfaoYr)@KN{{0<;wj!Hoj0aT9dZ zPN>KvTTn}=aC4Q7p)=wWbuV!D7dAm}$ulF5uLwC<1L4hQ%CUp(ZZJO00H~D#HHg@L!PW^$yTSqHM7yA%%n%1g;2-y;5yb)dh@H zbIbz=DWKtH(tuGT6L#uQtn*wDAc`x#qhd#dj6eV=Fh8m?Tij@f8IFXz4aLZ0*|Jm< z*-4`dcwgAj{M`Kx!m%lVpP~4&{ihcjYsmT~E&2Xz z(pDEG>n+)Bv8A?D4*O6)2gAZ0Kc@;{7C&r74Z#LVwDDj;CgyO~fCU@cSGo(GFY~qD zG2Fb^e!Wk=d9nR^AAJ@EAI@^Djb|?&v{=+qNtHRWFvLYOEr2tPP(g}?Pwc)aQ36z+ zJqn)vP*VVx=$`aahxt?0Eb>|Nd7gSx$2b$egy_TJU4-KxJHy7_wO z#=T#u!j>oaY(h6b$a#ieozTt0IEeV9-RP4NzUc&)wBs&m$6QilF{XVeteqzrfQUic zaomn`CUh)u5%OiQ5yguk!IT$uIHS&7=5iw)nx94DUp5e*9xa zp7P|_l|BL~2pfltXRhHnhuRgOb@P~-Dbt4ZED*BDxIiUCo5U}H48Vl##jS_he_E!M zf~~wMK*y@IywlPvYqN|`iM}=sGu76$PTBD1VIL!dk#B#k;fJVT9o?_n<}p@k4H|<> zTBjfYJC!JSt#ew_k+WZ`_}?6OohNu5qJ9f1Tz06tEW`yB^&^gL;j^^pqySW9BP=bP zbI;sgSag#1_0OnF5po4x`KCS_C>Zw^XRxU#k1#6G6>`}xJa~N(vAJ!*>t_?2tAp1U z9Gkc$i*< zM@@~JVZ1R>CXHgd_wibpQeSNoUF2AGr6#fIm&94dm5A1=^l4Kof(An?GLWpu3?vtv zn#@t5#v>VY&XLljUYA%>n+&rIb^9t(Zq7Drt;IECKgUwjtV*Xl|NFcKdQ0Va&%zc| zL8KGJV7v{H&KP1EMU>}Rv00!a&Y57mSJGdHhNv>VyA^g_MOc=;N=KtC4(a4{^oT6T zS_4?-8&>78%+QDnj~4SZ|J!P(i&Q)i)#|CDp3}?Y4kboXv?FYv$*VdLeTG#Tal%IU z3V_cwb*C*xGC9*4aQr86vwSPaT$$CJkD}3tdKthOZlEjg25DF!1CD6{?V*kP4k|mZ zH-U1iMmAEMkRE*0KCp6Qc z4i)8r*d>+F>VdSKgS|t)E-ClNchv2t!sG(!=Bhz^6QfKElPwz|qSEq1kcPa)-B#=ER`wHszNH1MUJI z=^P;=3%3%iy-Cvz22@aL+l}&K(l8b%Z;QqSy-BU`eM}dso;)orx*peQI}s@TYf=CF z-#wdZOtbP&G1Zs{zb==eHqLEGgUv>|0FQT6Kb!D_=pg>13p;5ZiDU@VRE=6pss;d6 z-PcN%BJAg#M~-dW!zv?JD&3$|P()3o(p#=no@!VeY^?yOrQoIRNC=+7DB?7_aX{U* z4eik#n*LXR4sgmeuM9hMQjlo&RTJ0{CBT-{mFRgyvQ3 zRo0g&uU~cLg)|KU#=Q;!3ZGBj5B7KpdmykXj33aMCu9TTaJ5}gjqwI*vo)tlQ{gKa8KIhUM+ zHPnc>L(9k5h+M;%vA3*#*q&LOBesS`){Tc?iP8f%;tZ0dQv)qF0rs+_z6NaaZ`xj0 zo)m(krRk59)t{KhhDibzcH|C#o0)9gSq&^WAZ8yY&r7P&jT93R!Sk{RNi&mX@szYh z>F`vZrwAs&xxxolY*zhx+j$8&^ZtrseYr&D^^!Ci=N}cJ!+1HMDIE5t+{ixmBan#A ziHl~nZi)G6%V<#KuF9^?epPQ=m#JoViFL&r%-|~kSLbJj@Q+WelhI> z_ilN#`p&JI7-HKs#-I9s+9M38YmCr>&v`r)(?)1Ax*nmVt3<6Giit9Aj8JpJsDh40 zD09M+09qq7En~!ODwbS)v-GN%-YE3B9Rw^G!ko;P04>w=8TG5e{~AGNgEeRtq&!!w z@BTAA(#lRzoMX_2{yh_Hnc|++box7D=wtbNrN^_796mR_4!kAH zj>lL1aUf}J((i+}{=>5TJKQ<0>?eChwAAgTu&H5S607n^^;BRIy_#xt%^2MStM3T0 zBjXc=5qGkfyqmPASG<=?PRms9@Q7o_n?u~8KTl!o7=Bwrq)W#`BU2CIRA+^OxLYj7 z4&e`hvpMAB)xS(brrszRk~4H3=s{WAYy7=uQ6qtd>60eQmBBpg3CIp;%}W?l6l^Pk zA=r!7UfKeJrv+m~+5iac0P&Upk9vwDQBt64F^c#jFKO;Lo5D4Z3JipzGzPJN-izSa zWa8MvBkaeaM#<7qqh+(v7?=)ijbH;$ARSq2?C#0h>cL?TI*;fHzD5c{kEDGD{7KKz zO9PZsxTn8w!O^uoN(v~o*E5rOvKe=nn6M(62O(W2$1h&N`eY=I8Q!xzB_8$rT99Vvtbb3kh0jFp{$iqX*kP3bblemZIG(h6WT-RHAmX7{2dP{Dkcz z;NnJyhTA*0Fh0PufsMlHLux7wt>S=g?rph{rKEd6>8jvbhSdjFpQw+?+&~606zE9Q zSiu^w=>gfWqP<((nx$?GxVVFYwFRZcV7%SKMzLP9fMN@Qei1d*kst{zahmBNmy<+H zh9!+@`I7DUFsx49^A6C<3bea@VIGkk8HK8{5U&vS$(c<__XKs!4^IUIc5FAYFMQan5PuvD zjK-qXNL*%fLzb`RMO(Yd@8@Aagi;9IZ~(*0%XZzrw4`pP-UF3xt8$sx)3^|Ow=Fcg zDEt1dY=GO!?u{Ig@GY7SITWCxyb#($cPiV82aO{PnQwu8T1Oq)wl)-nV+;+1N*C+k zWGsi@vN1;ZZ67MqzJo{!FkCiZn!Jz!|Mxavt+K*ZV!wr*x_2)0Ztvc?I>yPWaxQIg zvPj^X;ucyM(b4(MA2Rt+i$3c8z0|vkqv>uqsM-tR9Fnw&E>q zfACE_;?y1FjWTFnJK^Jv;*Qx6idL?Y_7lW}(VPfB*x(-!Nldf@t+w{QgCAT_SXo-= zE;OB>NmJ9)8gBJ#J}CDs6-x#Xc4F;ZrvkD-u&xFa{QAP6EY5RHq%ts&imDbLKckzu&0lnr@6urt;;s=sfVGYrp z_tMMM9?nJGUUDuBa^B)|bRZiY6wq_)r>;wg)qM+YNO`idh285w087FZZ74w&8&TjI z26d^|FIRP}AMHra1~t*5?^3B`_Gm#xoR_wn$5_+u>*L0otFLcx6<)Bj8$|Ycdg5eq zjKf%KkPhlW1{4BN3#@!n0>nc{j=5e%ww75siUBDQ^6PpsT2PA>8QeeZq5uaZchNS|mED(~W5;PuG2DY5EIoz00(MCy;;Cad zt`IQn4jsE3v`1!I^c>kTKkN@L?3!PajB&#*eT--gj+JYFs6q-Bj4z@!I#}C;2(Pz9 zmK~32d(Ee{xNIGA<79*J{d1S>&e8Ey&Tp*y(ju|yF@Jk`f3^uVG%4W+UPfr`6yhl^ zL>sV?6ilkglLVu7zfNClzXZ}9dj%Uwjb4DjWdV+4u?t)ocw&3oZ|la%4Xf9SeQbL; z3s2e1J8|-8`EZ`yb7k+ep>a-wVjGqsB=~JnjVR;=UWg$7K@;dggXX9Yg>rGg!lUOq z5OiYXGAUJ^(-_;_tMCYCxX`w&F_P{i@3j3^z1(GW^)61zBtqxv10jV8`% zvo=7oU#E5(2skk(Fdf6I$~)z{^RIjJ!TE5~Umc7q)W{8!*Nm$#e@rNTL~ymeQ*Dw@ zs`7?OwR()BLub=q`v@shEN0pNRF6k<90+QOT}9%sWLb>-N(0+?_!Y}&EfNi2ANkz) zb!0L#C&$PzN@jg(F>t<7(FvF2>`Q+tT%&>H9NHVVs54Sbh!Q2`bxty$tT;pDCCZpx zwh4(|$;M5}5!op0v+4DdSI}VbMms#~IiO=ktmC$JL>xW7P{bX)p53t`#%9*%J7$-$ zA9j_`_S4QKpbPv}neeAf8_Fc13FIJ6i|Q{(m>GEme7%3x>1+a2w5xJvEQTfvp99wX zXY4JzG-<>gr&pyyW`H zb*rz?AP#a*;rDrtZfzdB{Tq$s_hKWDAGv3K`5Pwt=+;sk#f1(|Cq4)7NWfgVC|SdV z-Z}AuDK8pCD$e&^&lX@2Kl3ZDXE!k=36-ngK4Dr{GUs^?#_7MQKe9Eccg@$ynjnXt z1VrI%rB1_y2{!Jml<;#*X(ubrKgbzB=p0*CY|#)#vJ`dJIjbps+t3ZcTW@GqUB^SV z-q!h$_BNIc<|sjgi+o$cE!OSVkuc^+3F@BrA7)4pBug~n>E|5Mpn+k#-mc-X5*!}v zR1ZR_=ID>q*OgLGA)`PNLnDUz=;GpdHG*)$r5XRKRwrDtR*l>!+Lp3fd);I@hT4S& zBlYAH80D(^1>*I2wM&m(ar)uvJ@2T7cM{2DE5aZr>4kF{xOeGg@(1=Z+r_YW5aK3R z1-u<#1ln>)UX%z{+dLSjh#OorBY#5L+6Iw_74Yp9^QtKnY8j~ibz|j7ac)*%81<2{ z2Nxfl4Vt4AS;m15$^-A6aokAYLoKL5wmK(j4;XcGOd{eHffBprKBvN(0%?8fN8;S3 zyrQDobiwif$C{4xx`ydkQsyNu)H+hsg=Z!VD))KYGZGj4nZUF7;V3>tlx=$mDnvN* zPEAUJ0is62$_M1Vrt>;(l@GkBC0(TZk$#|_1LZ2m2+^X%odwmcXK7x=9}wgYOl8Yq zUDN1`q1NBn7x+g$jbmQM0SVN7<*MG?r@(iVNc%+P(R$mbm|fg53rT0L`4IfmYDY?d$i1NVjC#!pwxvSIw1p2 zcpc;D3d{)SfH><%OwYE(x|Z;%`i1F`oINhr42$Io60ECC)e!yBq8|?(5R|zdE9==u ze_VA+e6+$pw;;e9E%nRGQ5*avCUxL_P(*5a=THIspwQEE8wirbG3l^T9B)Q~Zt+Oa z@%akO!-Kdfgp#2^Ky87xB0+Biha7y>iUft^v_dA&EfQtk;$p}klJHI;gN5a7F+u@_ z0?AuovOL-{a{>3j`z-E9?y;jHApaHe!&Ry%eNITg1cpb#oE zeoiB4<{0r3X-+w_OUf%|`;j;MXX|LZ{V-;(cAEdt;hIvS;btj)333R=;&Q#Zhx7(9 z4EH98sE^R9w8lJ`0Ua8`*wG7vZ#OkU$2#QzrOF<(eC{frsx9i5KGTM!jZfcTTlA+- z*ZCObp?&ydj_xnlXRII*`Qm7-txm@J+#bZj$trtfFzr6(tU}~#!Os;pPgZD`dx=?) zUkQZjpx9LP`04F@<$uI{HC`T6`Hio6`TdWdp*_0EH2iCM`GQrlI9ls5rdl zf(ZT@*?5DN8&xVUnoRPyNkRU`q>O@jK?S*woA`MQkps|{sL`KtJ^v_(7O@GGsAdAXB=_Iiymm0G4^HS4FCBr8;S|N+3)d zdt$>WQeS9UoL+e!@<8wD8PTY6xb<4n-1$^5tWp?%A5{7ASX%nD)LFDaf_At0w2qhsf3JAxkmkhU)g}!3(hEXm-8_E~9N^-2jf- zV|Zt8eSKrzYuC>`+hD82TGaEw9(cQ4XK8!6{yIimGAu~=4)y~IikesM8E9fEnUvfojaT&YgugFzQ64J!DtOTRV(^(Y}U(?9&K1*oyDmSQSDw za{}MUIDW%?<)B&NVkBeVhS_VJ)3k}{cGF-s|Egh?gH6P1xpI)!Bp_g0)F~`N5pWx6 zAOzTuqi$4kx+GLVzsBmI&8_SC?U+*d<#*j4aU-q(a}WyF7p%c^2&G#dD%Y787Y*$Z zUvx?+N)dYzi@{Vyw?jTG>ze+Y80<2b$9xh?&c$$-&kt+z7gmzK6`!b$XyVwZ-etTi z%IEpa>OP-YWsMe7ND{l#KUDoxaz2Y`^3v6pjjNBFtk?_oqV(_*c5#m-1cp0N0Wpvy zFseuGTeM|-vwHd$XgeON8Tu1;FkM_*vY7pK-uo{hnNr==LoBUWY15TX7{z8 ze&OT1Ybh&nj0+3Est?-tFHYZo=~tSyFTVYR>WibSKGnMWS2mk{RjTQs*3_zc#!#O@jj8^a<3;jDAG}O4q_Cn>&JO>X~qMUnk$k6nQe&=!3A1n z4|=Onf40AMp7aRKMtpS~WY)8O?einf=@v`NHQi!t57fK6#oH1j+%0Y=NQAWj#d+M~ zm`Z#ew^(s$PO}N5#x}Zij`Q#ASJqCU35ziIpgD_p$@Flz)X#0GD^J83Ii)Gs7cQ$f zFGr<>k*_IU$q#usNBKefZ0es{^_e8OV_5RAu1p28;8DlP=~Ch=21BzHr^-%eNu{0) zL617Jj>{DWuNixONzH1{lPT1TR5P8`V$nEc%v1%HGTDysoZ0PmgOOmK zhuwg8OUP!^RvivNd@G$YeN@3oR689;N*v{MmSS9eswIw}&>h36m7>zxaV1qJ9+ONM z97s8IN{3qL(gE)r{jq&$EKS6AZC5vBca4yXSPstPDhLnglne@^p`)IS2pD;a5J)GA z-i47yznO^UfyW}|t#ps-oHMJ@&)H6>7)faZW*V@mf|x#3Y^u%6gOzfi7KWOpG(i}< z(w^i!SGEV{l;CJ2C!8+HJMD%ALhVYI&Hpc{i@?QmlRE;a1n=IsnZN|}FED`#o>`v2 zG*kkU?E-pn2~2#_N?>YqW#_1*5zSqM3B~N<>BuIL=jW7#EVj zge21{L=u=Zv;AXk1BV2rk*B9w0#nK+5_O5N6@J6C)&6K`R|_mKdA=%`bGg~D=v=9z& zWkdF)?JqD0PNxKSXdh=Rkem5!4RW)fNQ2zW?`x5p<;yv;Y-$n2K#|m3qSHSls?yDY zxe>RK8{Tr0++5k0z;}7R+(HbzB}XCM9b(`+%TTA-T8_3;=JIIrVKjyO)G{Tz7~K(HJw*xVU4^dROJIA#FmkuwWn2)36hg#7JcjQbco0lN)sK&MiQX z`0qcQ%mvuKbhdwv8*?R_lz(ZO->CC|YyKxb*>vv~7?T)r<}=sEAB10A;Sq%6O1hs> zNR(Q`@A=zQz(ZNM%OOl!X8+ys*X zwcFGzfv#;jKOB?{;5G{LefT|^G`@-CXHN)j2!+)wO}l3Z43eJ3QOaGqK^00Ah9H44 z&V3_Km`Bnzns2MJjqG>ilAEj#@*Uj7MBz?I6#hNEqeS6ONEH5k6{JLA@Nf&wk|Mpw|YsVj{v@J3!XaxdDcCijA5u=txbjH>lAkI7k?gj)cxEF;R`KdD?~AnYL> zsbnUUlWvYTh2SkN1dmJSZWn^++~dU(A^1j{(XwW-kO_;NqDi2sW)Q4RdTXXc-2(ZK zyd#TR(yVUd`bCp&;oN#NCL^uUx0a~np7s~1ZwXysBwRoOxe>-6)P&*6ZaZE4%SF0) zqD2?W63A;3RabVlzrG?05xuuuAwsI+2_}VGv=AqSr4W^t7(G$r^~*&I!KRI-QOoeg zG}=KSUZ5Qxv7D?SCLIWXQcSMCwl^4XnyO{lRXsZuzG9bqi;CaKk9IdeQrO-%@G+Mz zlz_qg^-5IV<}SUP@mb?tX@kbg%(0#B7CI;_Y;nUz7x^K$;8a#@CL6204FoGrv~?V- zjb(+o5yIlpunk1v3r>FX_n-V#TW|s*=(bd-G@@3S9*~QdV-#t>$1KU0b|cVHY9z`R zH6m+D1`jqY%l?usp=OOZ-6LDHWH8;s;Ef}{G^v72LFLjbKkhZAot(9qW z-3||e4X=ro%)YhtK%$|@!+O0t!;Y~@Y2YKr$E_L*qL9B?GIIJAWQIW`l1_q%(F1QS zTgSxbst{OL_8)Dem5H7>>(#IqB1C0jwzRgH^yV!`ZQ0+o%>suK9xd{8j8JRClZLI0 zbd;^lP_*(WZFmyt0H))S5Y*W^_VlNJ`Hw#L!$0+Ft%XM@E75`8Nv^)pLATa3jYhhS zMjC#N=)jt3A2Fg`^GzG>HCE;gCP-^LnPW}#)ljENK}Qj#N{mz%0E>kqgC>;nIw%Eg z3hqAPeBp47kpadN;cCl&&;Ad+AzMc6g{Shk9QUbB?B$85-1j?p zYh`~<;7)Ub(3LNNvjv6BJCWCd5E}`q^&@W6BQi6akGM^bR@;x*wJbcmeS4~?pimA3 z16iE$r#Ar7Ou3Y17CZn;ndG>X zFC|M1k}5T5t~1hBsYxLP7-Fd;6ps7@xq(@A)zx4CQcGQd8-(f8>M3lTrW0XSv4lsg zT-p1)Q3n@8Ye!*G^Eg@dyizk2yeiH;OJ9z0R`jFl(^-ZBRn#1!ryIp%IjC36=5Y4U zbl#uYVQ{Sk8qN!31Q`w&j+^YXk68iLeR=Ip8 z4w!tlCu+Iw4coWde6;6w#Y1~Qt)1$l4dNgHQ{y!=ZWOC#w6Qy-y4%#>r?pw8l5lyJ zthT?fRLyoE?ldEK5AW&OQZbCPqVt>tEq{q$!7^_OW2X1n4wf}|xl(XQ4_{>pKCZBx zwD-lSenudyMpN5y=)H=}F7TzDle0-yweuyRhy}jn-uSXJXG>X}vL^j=3-tpRV>CpW zI9D<62Iuy*M=Gy`Eb!&80FiUQqAUdQS%Y2s)q|GVO)iz#62nGu6ibk-85S$8*&X#i zF)WE6(HGmbx~7~g9!_?xYSjrgGAUUc0pGWT2ShP`Lpl03OZ?_^w6gmSgOgsAu1;s_ zfe@^{3T9^F%a38?od<<0ejgz9z)%2tB^pxjn(Usiw_R{x*}1q5o*iWrA}~biKXhU@ zvViZSmUlXV@zW99_6Cxp6B@&~mZnxnR89*}+w?Ehguld&mmxI$Dh=Rp z=jd$Qrm)#6Z`x*|sjAg-{Dz55v~6rn|8?juV`Ru0ga{hp5(3m=@ZwiJaG%ZOp$RTH z)gPpU3UlZs3y?=T{m$(FtJv+>=JtfQp{5#n_DU9?s~ft~!Xs*;LriI(lHy`_5TC8+ zF_BSyv?;8sM_YFbp^NIX&8M*@GzGezDNK_$8}nVRI*@B4iFdFL@Fc)2I2W;Gk-3ON zOV#!?nB3S)ovGs16u;xJbx6cQjS+q+WKoYT< zjUUZ54Kp7pSDOr!fE&t4-z0SyDr#i37=eOIUWF|hNo-EWyD1i?n+Qf=?x7eWj}a51 z*EOz@88t;nQlxAfcK=b>0=dp0*u|Gb8E*RJx(OxQ&yzDaUN_OYJL78`l#PSTSIQ|Z z6(4#mixg)d?_5-(b_7UYDQqhwYSUr(c%>Y~MD0F`r{jx44Bc!RX)tc0oqoh!YOD`2 zN7D!*C2FrLF=)N)g|szr`|kOE%f21iRtxO19JX43@ic1p6g-x~s;5iJOJ-}HeR~Pn zw}>?lv*DCHn3tA*i`lSCtsLM-`L~y95gl|a17x_x%Cdd4DKs>lWqdmY-j?S}TYkhM z4Yp|$A~K3{ddie_JJ9GONl^<(Qfl6%R3Uq+L-iv|6P=G6S+`^K(?C=^VDv1s5zaNd z^cf<0(D<~Gb*oR2!s5X}$hu`$I?PNHyB{VKcLiCX?=_~nbSSwn;Anac&l0it+2?0S zaxbO<0T$yv5IfI!UCY?2LkTe00F>z`A~iC}9*W_Hn7e4ju)&mKe&X)kRt%F|PBA}M zMBWL)8}YB==TXcsMKAL!b**(bR9@4{x+9x8 zyj7;G+beyKXr4Z=ygWRORE!uC-Jolw^_4pau2wALN-MFHWIHUgnAswH-0o`zLCgvw zipNdZ+Xn{iNdl=7aDlrjp58RsRp@To5M9nzk|KOEH6F7BTx0p&X{%OCz#Ws8i0D!x za~Md(%C`Jl7hPnT2%bq}3blq6%f5}169|A>boIDN%8VS!C8BGEK_t=D3)#1(Ef65D zvm9^O$3Hdf+6rA|o9gzVVMu+C*xm|bKm>iWu4MQ5_XmTWrK z{AT54SeLMMFw2p_Aw3pbiiKBE6k&Gup&I|*qFHj^yuM+`kHr{NV(Gw^xOsl8UTNpY zl0{WgY@cdXQ2EFL{v3<{v-J|{dxPC2}DoU9p4fY^| zRhQWPpFV5kMR1 zKI()RlplKuma*Q#3kvb3H4ZR^7*MB;{MZ9Znq}W`6VM<4ZpQ#qt}3+|)5&nL9Mh=Z zrK}lf(%6m+;mO zBVe@3kKLsatk`#MBS1^QT;0YeR^NwpZm%&|!`d*~Zki%=8*3!lq&DBsu!O)Sj9U&5 z(o3;0jD_OE2B!$PtyrRO*^l|LfK~ai^h-&yq@c^F$0NC&;0WGLogXW{0CNxu{+gJB z7oZd^>(RzhP@J;kWK=>@iaLl|=nKM5nbFWsBSBV&P#{fh+jAJn6J)0;LDt;>Yb8!a zkwp*1#5*&ZKNE~*nFx3t#i9|fa$x1<30~2p2<5dHmN6_7J_ay=*#y8fr8HDEsi`Um zZi?YzbvY{ik)Q93$=4U^8$6K`u~~8z*7objUEYC2>ftWR8M8v**1nim1m?L z$qunS4}2;{cTr?CqL9{Fl~4bhT5^rXno7A6SS;)w>r9`+Y4XZg-VgroFMl2@&!zBCS zN0s*-J(qgwiQ=-H>OwNcjGV{SxE4S_R`FZldTe~Hl3Hc;X1tNofGp6m8HC~C>`}=z zBY@yBA`IE>IS4~Z(yO!2)WUFNq1-=c2}1%QA{>QsH=6|7=nKLy^`#*UkGe42Ou}%O zXw#&)3x256Oj9dz^`6Db@O0L5SkLU(&d5>5I(q65PsMN zVTc>YAfJMJChCG1ToiRNKxA~^7IgtZ*%Y!rm3g#QWFL`R1UnEAu#vPF$#{~pO+#QW zy})pY{2I%^Ud5~Cqic(+Kns~k8-y9OT2Cr8dGQxq<1 zzl>;AeOJDl+GIl+G=kJhk^>4x5w<2Z+%jlRe1yr2ql)^=p2upuk-E*^`3VzV5+vj@ zG2Hu_Yapu6w3g>|rvIj_1-<-$^ z%x4mvi5!#WvKm?wIeIGAU>+7Mp(XyfmIjL7$^_Ls4(xzF2@NvUWRtuy=-zheFWHN|Nl6K$*eL{-4T%vFa>LN20L`?G{G()aD? zrQh2TOw#373&kSPZAdo76LD0VhYo9O&^nywMc`#m!*mp?ux9rr*qT&x(*i3lAZX|( z;DLvg6ywBwZlX_U5-r(I%lB#120DwrX2v3){z0$lZ z1daRc|37>00&m$-)qkG7&wW47y?wj;_9N+iPP&uZAx#=c(hUjFy9JU6k$@S8abB4j zXZ}nlIDv@_GlS#;F-8obLDV3qEkqOk5{Z9NTSdJqmOFv(Gpot$aLQVPuxBO% zXiq%2jwxvx1Y0tb-A{GTlQqoAdlFdOezI~^4p_Qf}S?G4So?!Cz+Kb4V#sQ z(NLx>cWhb$Q!}J$jFpd<)NWt#) zW3vS<>Pcr6wnCkpW|;(8F)d7;80Hk|Q?(m1dMUmM%hYrfD<3jYWHjjz4R1bUo3#Rc zZ^vsaC{B4i`s_yJWJhEC#alzNPfDw8qHRP*=~ED@G-Ja2fW8daZRu{Bdo z0tIy9?ubTOFzhB}*xBMCec?o1R-R%BrVOl0TrA2y!KY0;&jJGo2L=nQaI#K=D&?zCbTK9p$Ncn}yDHailxFHayl*f$Q~1ynJ3O0*L@E(; zR2NQWlN?iiu-Len~0~k2!rCr_4}`hD$RVTJ2i0Sz7JZ%{iRo@-#wK!A|IKaPPc;p3%Kg z6CRyQ-C1m5&)N}zL%!u1E)OtHA(ryn;o8q@pZ;uXN5mSdv*k|6c@<$C|4UmV++>$z zlY@MkU1Y@j?ForDFrnOB|Llc&3qwE>G62@nJO)_Yn7(dsZICTm zaN`z5$pY8_z}fNOZN?y5PTRA~f~94PnrH#ZBHMOR+op1%(WLBNk$t)zRs%91s1kI+ zq~!&=aJR!{sfZ+)O&muLc6V)+ucMpaOJ935JW6j2!y&09QLtV>GU1`rxI#j1UgNS$RPPDqM1C2Bg?;0=@}pu}zXgI&c{i zi!nzWXT+(dTMAHkDdBU++DQo%k_1&ktf+Ds`iNAC7}w?Qg=mN!w(<;^T@@|3pj;;o z-tatGTW!Da_mI@-y4m99O7$}G@vy4O)(Ef>3kq&*d zfmB3r8txTF*jKT!PzVKT8|a9C=kTh#?l!AGdla@=ouE^kI0gT=YnzqFRp8sin-8vO zKs)D>PRYipz0GQ!ae~2ow`;So?%S*wRg_coy0?asPl|dbI^7Fwus92mcy@%_{;SVV zjOZ#v{e?Y^xo8z@pYDGZt#~MH-M$ksznM^Wk7kvaZ_grLjBQz$&MqBfs{>)I2bri@ zzq2Bem=xKlB2pqY!<78gCB`s6ddiJeH~ysYB5+l)r^CsRwQmBW8nEx}nI%gvSo5P& zb!jlFxfu)B6!$3E?%YUcc5)g;74XHr>MrOdJlCcxfW_&cB+%C;fuXTeo5^sARLW}Z3Wv4@3vQq^YbbF^2Y8I8R#K5_ z^!!e7aUuDhCQI6%Yf~h|r46Zu1cX-Q`NhP=ok`%Zvm1S2)RF_1&>hGZZX07!`Le(;`NF4w!lbzA9wVLJNPH?rl&!-rL&&M z-_vCMFxs&kEG2Hf57v~T9CZk#cE-*xey6K_7&QkrvzUtHo|x{Qwu)0lkL15%82ZSb7xixDactxu z+yb}GSiMGY2!fa09;4)(iyK8~0`{=Jth3ZN*X-Jv*{w(w;v(wKWwU40>;#!v(Uhy= zd#YoDA#uFAu6uHJnSv8D=P0cEce;npFSNUay{u2^+=~-z5C7K1i=R2Wab}a%$ljZY znOzFboofBNH!S zMC(aMq5CA4dE(+U{jeWLTep}&=%Kf-!_)501o8h|qqVPtd}i1!dtRO-b4No1P{Bpz zar-sNa6j5)cc)UMK{dCpQ-Ky%W$jzs(ABKI)eMYGSs2=ALLghUAe)v&c^B1)=6R>T z!xN3gp&)C{L5Rc~q_#q>2U8(632p^kvs4`kIF^-X>^>9B3gMCni&2I44)ssPqRMyu zVUDjt)ULC>HP1HOK7-m(s?4Z_g3I^;@z3GMWkBVn-l6jyD0Ziuo|L;=zZ86z(%CdE zm~36xTJaNMgXsqfT+fo<=$4|>0Ah7z=UA5)D@^$b*3i6GgqD}0XBf64XNuI@cis<8gM zp+vejQhy;OPVsizXzYc?_(*ya!`zwP978}%ct?{6LOP#hT(1=R>%$>K__<|NY_Ew? zeX~D`DsJ>gHT#g?GORXNEp@=c%+c;(TF}h`-3~;=`Ng}t$P)PSqVhu;!4gVP^r8?| zO{30)r`v^5 zz(Afj2^TLh!ErmXh0~!073*XMQlImq1y6q?zd+FE$a(?Q-#oK%y4v8t>+o#JCAJPY zDD^z8Y*j1nJ{1hw#$$$zfyv^kkvWT5Mg*cLA5bW^Ax_9c7F`_bK|FEDzcGSv%19B& z#voVj>xv^H`NmOAJ3u|hnhZ=5&vf-1Yf?Gz%5o%LtIe8J4lJ`J=7?dgYmqfzJ6zrg z0zJCDwVbqyL+WXyT!6ZG7&_UmJvuw%Sa=n(Gd@maf0&EHLR%KY+Pen7**w(K+qQnx1lFW zOUN%}1<(q-Yes=i7^iF@xJh<^(fOy>W}nG(R)b%poRbxaLM0e`?wqnVhaS^Tv)-Ne}M4lqBGu z39%~2ovI&fI$z+2;L?r!5HPDB3@woWfj__2EhdA#hvX>ytR-ZhRF^H&%KHF1G=&sl zA;2`p*)DWI0YU}y7u#LJRdzZJ6)#p9{8-u%)E6z|)gF0?ET;Yx5oDtxmc!-11W2j| zO{Z#*hL_51?$_ez23o&ZBUK`^iIJV;A0t9_VRCnA%Fqg#;%oZJ6??6IdKcZ%<{hL< zQy4widAF8k_#G})wZob|KY9NwUeFx(`l?Vhh)p4hcQ_J$kf*7mj?7dnh6_G(%~NNv zZ44J3K9LP3D~H)?MIj&+xB*gN6(!@N|Aj8z_cFSOnq#lP8=rJ~pOau>95jvtKbwkC z)WEVNU^mGrTvrN8KVx3fwzI?omq;@Iw4Ljgw%p{^hsrHrvLkxIt*+WiQGou_>xecO z-dqm6nkN>wus6Em6e^*j05%v4romxbjUTLTs=9aGIKcD4)@k>T$ zH7y(+GwsJ@LM8KdYFShZ&@Y4BdBSeQAQiak#Jvrf z)yJBxTCS_%j8-B8#q2xE7%Y4n+0iG;v`4IqnO@G19|v(!sRpMcWkwKUY;s>MB)CTI zvWszX|3&d2W?(?g@5k2&Drp6U9*^8<^w9x zGpX|cWW1|Jh-3mK#=OC-a;q#=)2@MT+KNkNbHy6);1e+9qaY#THkAn$g%`pn-bs}Q ztwE+GW>vBjfR98gS;ME~20`@^m^q4+R94*Yi5Yq&1UxYt2gw54)fvBi#PVSJPbRuL zR5TqY`9M2}=8=i{TT6-g(-6lDzAJ$l6U7Z$5v0++<$xg(3Fb$_`KLRg<6DY23J?pB zV?~K<$boQd2-H5e-Wf(<^kST6}nu26Rqm3uY zs4SalNOtzeTrAGW6Xxjf^|f&qi=iMlE3-#Bmx)-DW(uqKSn|lkTgoUC$14u#YxRCT zndn^?$nB1!1jHzGCzpvVsx~q)bT#zRW(c`V6j<7AXHy=kvRFJ#hLTLw@;)3uB*K7T zMTy3#`Xm&!0=g`kuth)_(RBA4p(&OE%f`f1pumx8hH0_H)El$elG76i55ix^U%R9d zHMpd@tdUd`QBtYWB&i^6W{02896^>WXKhWa zJ1d>vcpcL{KRJT2AJM51rgGz{5x=ec{M3lwRYE%RvL`^wqfk*3;wh=J-0=6)!$5@UKj`y){pgr2 z1(~LEiDeuG+fz_6U=H8PL$CmAbK!duXG>foGyKi+H^<*Re?9(mJ@g`f8~9t|ZzF%3_}k2%7VEa~x0Szb{B7s& z4F1mKZwG%6OTW+GfWNc&+sWT9{?5iEGYlT=Scj_7E4fdz_mAdIR+p=@Ie4jiof)%s z){)~If+~%A?7SmSLwmOXIaojFwOX`$FS#r~`* zcE(V#r-ot^6vLK@jcy+*c1b8UNwGg|iftPzc5x^+MX^sc#kLL=drBy#po~v8#kLF; zdvYi?L$UjsV#`Ct_J?A#6#GO|Z1YgDeWBPK#r~uzwrQx?MWNU{#XjB?+c;G0!ca`U z#E&(_mWGO55Q;5O?4wPw4MWAA6pAfU?2nsbi$lep7>aG6*dH~;7KVyFArxDp81tey zroEwJdqc5}6#Gb1Y<{TN`Jvb*ihZ~#HaAr4@uApeiv3|zY<8&Fo={8&EqzNVN(cxAPn6^acg_THvgIaJ#q6g!Jz?`et^L&faSa}ctVVr!|Gy4Vas6{^~W zeY85`np?sSwLW@1|8&2Yb5-G<;PRFF1(C1PFIc=$zo78d z`UQVKq+gJClYYV659=4S-K<}5_9OZQVXx6I*!ofZf~s5e3!Yx9UyyXGe!RA<_~=K72{pW9*c_(_z_6c;zo&8uWcDiGL8im)V1B5+4c^ncIutYJ0^Cg zJ}9A8uT(wQ(RWp`M7|Q2v z-L!6@RYF4EuT!>hRn`WEP^!~FN6MrGYXtGoYD8ezdZF6s{g_#j0KKzs3l1w<-PIIc z9LEUAvF|p!z2cA#`z`Gi!V4!z*?lcYeCAPBub&IAu-oK)SKw{(?3+t4dg2Rt?9U#avW%ypfJC5!gLr9nMiPlTjq{O1H0QJ3Lc-o=dz$ewk`hTH(AW8$ zG~?}rE5d$PbS~)=dv$;(4St&Ow!6ZNH+3Z^BB+!etqc%mfsBN8?J0nae6`EErI*Wq zINdOGz;EQaOv_zRdJMp3sj~9@A2>#a_7zaYGcOmC5@rY}^A>lsMCvYa8 zq`VB)tE)K^iZ<7%r{~+ZaWQzdR~Cg*UfHSZu<0jFsEz}1Ht6ky4&k22`*DDdmj}Rx zwX?o|AlBEE3Oyg*GDX4N-2*0h1Q_F$!?b>Xyj_Y80jG||P6Y%N^#?@3y^k7ax2yj9 zAj1u%0n~MBWZqYv4!CTMhV;FC<4cVcuh7~TqFgyJfTM{|+zo|l|KhqJuh*{#a+@O7 z0eDo-Q^eNj9p=a-_!b2w=chVSn}Z-A!>dH3MWH1UL@LD-KVy@F$(+a>zTT}4kpVyz zxL+fMIDJxUI%+3@*_A|?B-jMy@q(Mf)E$v72xUMTuCl(!ShcjQKUzSrw057W zeVwaFUu{-NPvw9b&i}%wt(K2OtAH?-(uD{E34O{iuyCRBfTX21Uh%`)I9ZrK_QtWa zegYu@M|RF2#~ZT{$gUukJWbnRGHE?qK6!f|Lj%~g%tq??8GD1tyAIC0VqhzjvmF|X zcN_4`o2jO5h?AJM3(z4ptw1W;i}`_KIMIOWt~`@=Ouw2kcafGbW)U}XHd&DXk*c=p ziSmr_OaxHObI914e~R;P>-Ii;V3&OM?se5AoI8gwPsrj<#DZybJGBC~O@CH*E z)`coe%FxUl2S45LtZiKRPQ>=Jw^hg)+gXf}`fPR^v+i4Ph%sIv?9ID`o|~$v8(HzEhVzPzU7#iZf69#eS z+CJJ(2eW`xxvHr{=0KNUUuD)owlf~K#Hwy#a|HEGcXfp()D^{8+7gFWzjacC@q+n* z6pB6l(T>yb1L5^4B&me?`D4Mh2ER}oh0}Uk`Q*{ zH`70!dH8#Y+$n+Sp(Sm$6d9$P5iv5r6?Z9qzpxj}B7!-VQbdPs!U^$q&`YGG`0HL` z4ho(gfC$CJ>c~vBp_r#qvH&`OefYbaW5`qWU>N!sxki1~MSvp~2Vy7Cg9+t=+Zp9{ z>QbhX;NJ-9CHv0T|v{c->lw88s`_S0);w-LD>!wr`y z*x{6j(6!{fKNBw6aUPDn>Gy6NQMg{g94SN&t+gyFsN)FTv88Xt&|xZC>>ONuX)}Ou z2BRmM5V^8mW3h9cNEfI3YXYx^@3bTH2mzPJ!x`0uLW>c?( zo>pIMFaj}oXN;^=BbyzOMxz|I`jYyUU)O%mOJ_Gl=z2$lrK-4)Bh;j@pQo(dOSisubBgsecj*v42VKg#L{hJDM5^f`R@~f%oqq zft$WP_q52Og~r&w#ioBF)HkI*a-SN}&_1@zioWR7p*9EOci7fhSapH?A<`%TYaP-E z$s#Eujk*g3aC685yCQu&aQ2 zZ6}e~ZDSYJ9Iy)`xv;BI{M4*tZlTwrKT3@Ew>nzX7eDSvTo%Yi z!JW4Ao`i%3==$|RW!ewOh)%{4{T3j_Ts2U&d73-sTrG^$6_izpvgAPP@H%=847B6f z+v3uu7lgo~#<$L{M|!MSYtn{oFHexzh@dMyrs=WeS)ixq@t7P7mZ$k`_>RXI*_mYW zstlO8bc|dLlPXNgG`+$Zj#RhSf1Ma5-vL(G{pqwOdqSPE#mD5gSw-B7-59yfJ9&N~ z=tA|3rk(|YkRAO}!Bvz*g2j~(rF}qBJ=(C;xF)t;e-k`rvA_>y_{HAy zIWM!>dW3Ksug7MRnk1R!Ow3sCb~7)SU~)iH%}uj3&JbwM!o*pp?JySs1N{l8c>Kkb zv3bHMQvznTHf821ML>66!0}n^w~{(SPmY_pg4NYg^AD}P z(^5QxPAw_=-rItkIwBgI)6&5gDB~*BjM1E4E@P7DzI|Q}fMKQSs%Hd8)W59qRV;7f zMUrpd=rD{o11jJClt_miwy=;N5-Fy$e@^s2|yc7J9uc~`)pMy z_>h2#a~P0=>D}R+a5n%Ti41X@m}kIf(q)1kqbGp1&t`?hO7H35mx#O`q{zVF%%CM|{T4IC_(@8QmmHe#df%&5EitHq+{nP%V{AIdK~>+2QO5(n*i)hG4VQP~3#ARv!7R7x9&HEnp zlP?j;-gB_hdevToFj}hy;Q<}rSlHHubkwl9j3bMDD|r6vTYvgD>@>~C@O(-<8`0t- zIPNY2*VYU$8=_%o9-vN^9&RszLvWxh|(87p>;4GlhcG$;vSz+*e%7@BD z_TjzI@^quN7<|Y^78tFHot_bRqfuLtS0Hty5&lu*A*8ChdB9ohum9=Izv)Bo`(Ir7 zm|>IC9fWIu_wJ5hqc*G>wk?P(<-tUhs+qBdSN0Bwombi{u{!97;9?%d4UYVmkBi=$ zSey=GQFUHGon}wKm71y?U}a&SZB$I0nsQ_rL?35nHg{ZSBngCT_ahve~KAG7-k8pW*9AI*36lh zZ{`i=jK3>(ogfnIXj*|t^6D8#YXFzLHNfJS=*Swt-iZ}LM;em!ZVl{@@A9G2fcCk8 zCOdJCQP88SE8nS$+K`M#!D8+Na zz?5EH35O5ouPAGk##0$PdYTI$U~EJ|_o9O182tDxwBkTzxeLSdn2u?4fbw`uS3BBw zSSY$)OnE#`1-fPlVt03yqZ^LPIF%|G*rnEN!PPUz4`~CBHmVM0of2VDRWQO?MMjx= zr!iu`ns@rhMn-#A{l^PcdVrDTXH|m(Ahf*;^ht3k-r z!p{jlFf(FxKP}#En>YI6kNY~!3tc$OaDNyR1`lR9_2A)Lii3v*j7Q4-zBZ7?N;2{o zDnS^A3Qmec6_?u6P{DX{sG6O?`cC5$@_3w!SjmRUCvHAGleS{-!^7=z8Y(*-ipssN zQ9mup-x;c296IGQR10C~!cZ}etDs1UhUw!BFoPAZHK+SF;^|IvPhhy>tjlT2%zFcn zQL6O!h!AYU$j!vUaxlO^f3U2%tL_TTW)lT9AqrDmed&&0?}n51>EUb5@ih|hrFSFk zNa~KSu@msMmgDP)l}bTkWvzr3bt_?*yw||j5vq~Y%Lu$zk8mY>Yh`nx>V=i4W?8c* zZ|s$jx2@wE$)ke*ys zPO*}(L8!#?5KregFwpl-&|USBGG9=2h1N>++90k+yLFAf114_qC-F)E_7t7RP09KK z+xt8~LfeX&%F2H#n92i{?t9eaRx(a3jW#+Wy;2?^(*{L4Pd*I{w1_!rS>u13Drt_9 zQ!KTkShP!JI4r?(*wLdI6=i6aMi^TRE(ICje(o1tH7ph)-_$L?QSE6eS?^jxYakwqa&l&bfWWP zDo-sEze>%zL=BwKXQ@pM!cOIKQjb@g9<^b_9|;>V50`;OxP`yXXqM;))tlM{trj9> zn$BK!203ak3a(PO?BxR3B#wo}Oqsg0EX7ROqJ+IEX3BKGy(uutM54VZB+7KZy(t*V zRFA!}uSPBS=IHwLm^YeC!vQ0=eY}{QykX=OBLo4=^E-aSXtP&uH47FgWI$ox$%^VC z?D)HUFrsyzs9a6aqRAoi|F8eU%K?|xhczXyqtT!cT-oOcWm#&?3Y8bc5Q#>E7*bZ2 zMKu7kjFjAN5QD7En@$#i(~Q(}Ty63^h*Kt>@_1}aJbf3)S$RCROuWNmTq`n9gCd$! znRvGWk}+A(dwMt43MQW3=~!;!t<9^_+mLP|^~2)A2fHejRJ13c2OD@)LNXjE(gD7nB1fKD9;kXmj*N~^JbiLx%rt0TH@1W7PIjVo zak8418Dqy$1Y=R5X*H|$Ubn}P%x~k=>=Z+?Pq5E{KPZbojHiboG!pfXVspK37Ml*DLjvYkV zev2wrv5*ggh?7y-#I`}Y;VTRw=Nx8K7OwoNCT1@TRAy*p7?}0y@6_YP5H;gv6ln2^ ztV5>pV!`{0*-FTETu4!d@k-!W-nTYhzF^`~A)oAp@!Aj!LLaZuDto8h*7%)zyzU+z zFC{Qu4LnMaagh_2#_MijxXo)sr4R8Mv^T_Q7UP0}c41xAxb_1xkJgLNg5Bx`B1SDP z=W)E?$YwNU)FoNLQ8Fkc{xo@s!xbn3v|Zydrh%!=>rc4u6{=>1O8T-Rj5i^Q35a5_ za7s3Y5@I{ps$%0HH^>Oq*23($s@G{kW=)`pG+$naCYtG+zJqaf(1N}@2@fwMmRd|V zyW(7ogHqo&ZJ)}VRW0*}RyyD<*syC1m$(zw=zIW~aGxyI&im$c?D3w?N9Q<AYnYj%cTYUsYGYygT; zTEpJrpN98HFs=ObTq~<=hGiSgWtW&+Tn99$9!*?NUNL}!G((l@G*MOIX-9Qtcsirn9-g*UTf-AFC_K@KQ%MAU-aLFhM|AxlHS&p}WcqHD z3Cug%9{{Fw%ij)t0A@szpC3vNc>U^7GDEQ~pv^YuTd;1F?BZS{J;-nsGQ3c%I9ruZ zEbf`_pH-Dl=)8Zvzf+&jny6_&RYFS`DFOA;41yA>T;C{RgD}*((dw&WBpyC_BV{N!x?IS{a7Dj+0!{Z#=5*QSG5J{!Cynx>)D!cVNTV{ z)s}T-#}=uSm4G@1DXMwVTGL}j4N5b@^dXLvxE+H(`2pQvk4MWU`U z!aV|#_*69Yk-3MJ9Y?^D$quN)WCte+o9w_hY_bD7Fxhdo(vcmop~;SO^p5Nhu)!qW z-Ig9luy4&&g)_eu>0z>?ksNw5xp7W4f7ij~oAB3cu6x(Nr2fV?zA^sdyKcnsI9r`n z?L64K=|*DTZiFmp3kh#)AJMbyrbHq=O^lUP}xtvvYe{2!p0ARWOHQ|`8%MVQ&}Va4q8?! z>wv$5!gDL@oOOD2UOhGaq+d-kj=9aTo2jTqZ%2}sXC@gsnItE}NiWsMd4p9?;|8go zMhs3pS!0@b9m8@F(+BgofKp5w;DLfN66R&j%^Fip4B?$=-g;$^Ttg}EIft!GmDQC*@7El+h8(UVzLpKxlg7U01jsq zoM@#hd+#E*_XZ2{v<|9;XJWN41W)VYY~MYt>p+oqh?o&F4je;MS+icP`)Q8YZRUuY zW}DncLHL}58Fj~;5#4L(S<4xrf=rJiNSgI_E#^|ztM5s%`G!q0Y#hzgz-O9Vux*HJbrxc&=Yt>qt$;-Dh15oMM2Ud$Rs!N=sg(d z+L}0purCdS^E(fYU0ggQbA~%{)Wpc{!c>GO(8OpffhNXM!cqTZxs|{tTU!ZyvMnZv zTBJ?5VMYinM1My|s$JCvGbnad8>>xbP>fe+6A>|+Oby#YIrC%@g-d|5d1cHYEJu=r9~^}QKtePoh^51N zo{ot$B>X%*GjUYU$%N%ftS6I94=0S*5#FMWRaYn`DWlY^*JA(MlGOy7!6k{9!4(9Z z^HBy@kcgh1!KL(*Nl=4p9f`YF@G3o1GOEYmQu_XcPw_yM`g)F{R9Ew?CvKxybta~t z(KMF0wefPsZ>2jPjOkN)khNv)hCwUc>T&C!m2UO8i4fDp%TeSs9k95 z0Yb1t^#k}h0gHU^}7K2dH9QLjq5iHI>f9>%oF}v=$TV1?(%&O-Bsbo7k5>+3Gj3e!BK~|=@4G!#=D-0 z2*>&mWO44mFky8BkeI3%NVbueRTu+=6L`4J`!O+?4B^MbU~rR2+@9X39!?( z(ah$;iDAwOgd_sige1Le2}ycpLXyQdb7E+5HVDZr>)B|nnLJ_;QNkahWJ^To64$M6 zxn>Y9P@kx_1Y9mkLJopB*-10G0Gz0nnfLIQiCdFc)p8QGv}AH=Su>tNwYA!2qLvT@ zoBJUCTcY+X4h9*SIV;jfyR~MiphXBq1`QGD$(9NFp^YhKM6W<8d?)fZ4&LP6YdaE=24I8YUi)O?clUNY^Ss=?P)*7I^IF=Bm7B)hB z6B)#f2`LN2r$_rQw;WDj3PBVmE={CYupA&!%Y(90kW0oC82rIXSn$YKo4A}{IjDty zN2cI{Dn_X7*=rBlq7KQ^AEexlMO$W|h(%j+0$Z$7ESdwS~n&yv#lf>zVXEbSi-Sdn9vw z==o8p_R;CB?3!xyDV_Hy{)9c>*sUC(aB=Zo{hqzAyocqzdgNKN@&I>Xs$IY~JR6LD zEv1_}Ty>P?>4svZXMQl1&;5{j`ISR7r1JP7^Ypzj9e-V(ZvHxzZx)dx-ZMXB_oRNv zK-Ol~*z9GEdK&kQr5jvI&qzVDzV%2)>5r}-vU{Q*5^GqF_5X5wksPu_9LhqBK#?(I z=c5peGEFVXn)2V|ax~u%GJJj%0=(iIXkcP8QHO?mc zcmM&}qJ^dBLNmFQDV7V_JUti6o-PYt6(=XS;_Q@=#G!)gl+egcuwyIcYx5j~ORhBP zdgAh%*R-6+_hx05a*a^R)n&KqhJ7|_~mt+iEXEz}X|GC~}L z$Ekk6R=Cgad~iGVRnx5^upR=Uh%X$#oPwm(~RNL(P!Kf?`=G04X$aBmY}%ws!}az%Tn{W~6GFra@& zY~sVmb2sxBb%8y!aZ8F%Y@!mIc<#+3Fg+(4eJDR%Q3J{Ft;?Gsz1$O?z2KLH}eq- z=6<|Bw^+(*K1S$R0@6AKYFPqex*2GFf_#od?{y$nBkg+v=4vx&`UJZ+VN=|*s+eb6 zf@6mKP59XHK^UoqX?R1bwqFaaYp8+kZ4i8IFAFbsG72+vQB(%8)04&`uzjNBjO{%V z&O>vz88$pLcivFtp}A#!#2|-bEFjn4X>2@3<|>~)_CjQ?)jzLF6~V1U1<09G2n;vj z$MO<^;W$Z8Zle~4JyJWE2G9vU2;_kNVLBTYQcqVfV2i{cBVk&$(WG{Hj3`hFyEaB; zV<%KQtH-Bz4Y2qVQSorG*^&GA=5dkw4pCu2^ZwXSl=6@o_;GBQ*Ne>_77?I56A?jU z5(Awm+mUa(KtgQx*;+9fwSaDq)1I_QZjaOMS!}b%X}gqhVsJU*#IRhQg9LG6n0Ff3 z=0m?VkHxmw>?{@=sL#w}u|dm@5Q}Xj2{tR{#&pg^9kJQGSSY1_B^E+#c3J-{SA_c} zqva}+@s`BiODQ(9iO-%)0qmnGZha)hajU`3PmY}!pS{xgv9Z1__q=UPR`;IH?PGo0 zZt(MCecNtu$5@|8%sriVj`?;2mSoT*dpd05&6s5h>4*Yv7n?BpB$STK^>l3Fl+Ndt z?j(}C)Q;=)66B2-;h3Hk^X1&j!H6o`5Z1@ z4KAhUaPeyWS9%85L+q`ykkd5)Z-tz~5ysTOb$&;I#t&({v=`6XJ>15p(yd*kXYKml zJw8-=)2?uJ7+h($UVSvyd3U=`rCXg!&+1gV!J_nbop)2`(P{=*CQJN{mp${m^ z({mJsbaAd*qBEQ}5eJlqRWP}~SzJ?XHnK`*WK*@g+Q=%Mk>|c!U#LZo`=Xmt}EM!0oim=E%o*PN4!ap$2L5 znNfwx_z*$?CDT$u~K`nAe6`E)}hI8uAXx2^*dqBm7(lnOzu!&?-!zeLz9>puhRT$1JtND{!6@ za&kDy0nU|>lfy|4aPAH{Ih^DG=eZ##6Gx&M;Cx)j$>AgiIL`|?8JxEOoQWitO>t}_ zGMvgKYR^X;U0mEEC|$A-_V6faleMlKT7Oc=$y!$qtzQswvetuXNd$0^OKD`3Lv8H8 zv7D^7V6G}8-DOk!Mt#=4;p6mE&qsMaG7A~%9G!7L_myaWc7(uKlMzx&K$Jwo!%HAT z8cSB6AUvA+pb`*vai6V!g7AzRB0T}|*6h5z-!`ID{hW*x=>OnUqs#8+*}_-p-ylL| z3G`1!npsnpK>xG@uSuYPyITqL@7z`b{nO^W<`ep-9eSQ{JN+{{aDs@~5gsLv*)3yq zaLdfa#qH|ms-r;L`n&=q(8QBk2{ds*Oi)#(z4iI=NyFfUG1C(G{GwI@pYMwa`dqVx zmN3VGe%$S$StRsBlO;Uaw{rsr^x zZg8o5CQnq4!KL&ZF47GyrDy!7@&=dEGhR-{jgwNuzs5}=xbl5VlH5KuY}`00CHzRN zSi4S9t#oTw=}o(;f0g>%#*Ncg`c{I%>Qs6Liwh8NsPuN7$0udnL=BGu(?YVwx>-B3 zc@Ba-spHWbQ17)I5W0iYa5iajKNk3}MT zWXdc0r!z8JW4M9QRHQwoHk1R5rXuaJl>>|eK|)RrBd@?1RbdVzIlvfIVGbiX4x>G! zR$NksaV2VbIDZvo! zRFzP0IHo&Q1eXu5m)M(RM;_ADI|cT!ak%Gi#xrEOiOwbnU;)AI1$9osYYqC zJ5|fgUQ44%l|V-u&8P(Hs1JW$ixk?;1Y2?&ke0M`lS39c;Nua?H#?Yo;9BXR%Bduy z!xTB7@)-{*9proYOfo5*QS$UmmMNX#j8xd*_59+d3EL8D!+!*UsePZ#4ko9YNG?s} zfR9}2zajxZnA1(hEh%!qX`xl#6q(X9xK!TYQhElL(hV-9XK*Rq;8Objq*yh&hk<1c zSd6UM!@4TCQq+J`Sj0oKgUJah^)u~YQhElL(v2RJ-bjI3fs!_kBA9F(QvjvXvwDPH+#zmV})&D!`f84=zGtWnLt=t&*0-@U~Ep*>UCnVBTIzyGG8)+&X(#+G1G?fl%=IKV7N{2M_bR$irLz*Eyl4BrE^OUqn zv%QzOAx%m2jHE<@#&T|1v`E%SYDfbl(j2l86KM|Fh>0}YHX@{Xs?Bxdw#9*f7RB}w zo-$px~A+;h)3@>k_51zIR+4WagTrUBgV4 zgIOYTO*t9+>6>7#DJR3Oaxi~nt|=!IQOdz&l9{C(C?QUtloQM> zV)R?toqm%kHuUf4zV5xUQjby>&3BDaGpy$Vu%b*B%fk4pQ$GMot!t+s{@8&3T)*SfPO+V+L%st_(mKkz9a!e4qz6>jB5~}VT zQ+I-c@NS;vk}^jV)$%}qb&UmDoF!tkAo3;SAYn~(R!F2)V^4bKLhO!|y zo1;Ra5@5>7>en|giRPQi$$F%mAi$K9F}8AGYzZ*sWQ?sG7+dp1ON8v&YsqV8g^5IXO0X1sf*j z>@j{Ly3u?fPN$;#)igyAbDEnr>qa)wqR$d@s~|ZWL7B9`DKV#<3{K^M8;LpPWVn$4 zrZ$N=(RWsxa;QyWPB~d^%Aq!ix#2m|`EbLmNb+mJ`M9@q7k>z;gOcP#WT&>0UBXls5ry)9GNpv77(2RgN7 z3UV?!)i;5gL>U=3DF=CCMguvyJRt{pVnzcwxpXCGuXBnMUaJTDol~3wqvn%T{Yv-Z z;_FP{1pQHT#v0GM9utfk2RR8QxyglX%6Tevko~KoXP>tgCS>cG6Jm!!1)~^XMf5OYM_`@l zr)JvWmpe>c$8bEEOEh?149C+uo!b+`@$?QLPZ|o&`mX$-Oc3>uj9h8mIv&cTx3> z(6uL3&kWz}sh$;{&Z{ns^+cO-Uv*h4iE-FpUEWG!sGeMXXG{{r*D@gtvzp5Sy+A!H zZrPc0f#G{f_3ZeKB~kOm)pJ@&)O<;GMNAU@Q1V!W9gZ7krM~x4?KJ7sT>3YDv7Y3n zoZtrwO6kQ@I+Og&u>Ro%F(@j#8@iI;h`XUxY6(llpD;jlRUm2Gxkm8d^38Yn8-~+_ zSI|FHZTF|aq3Vo_3zg-oXD0 z>_*qTMU_2OFPgdN<;lD}&7QEs7QDW-4j+pXy(-j=+i=$HW4zgH+1~Es%`8BBJI0HKA_^_#kg4=I!l0yqRFPx8LB+ zM7h2FGH)il?d|QnnYgyMpX1F0w7tEFH&BU?w%0%9^`gKWo%)l?v@MU8`DtEl7geWz zkVlJNaMbZ;CbGTV&zo7$_I8{%H82+-$4E8<*D??DX4b8}-OQVrw)Te7)`#p%wAZ7& znryMRyLmJF)!y#p&5T!j!?Mta*uVDrAg@=6eGG;Nc>C`3hT&E{KfN92O`_aO-p8AS zxxXFbP2$|&?&VDa-QU)Dqd{ikG=Y?9oeC_Kh@6!zDMg7X7X8-BK_ZWY9L%>o2idK4 z6n%rqm**hm$3qTgVxEIQnFu+UR(TF`Wh&%g@8mg%7agdeb})EC4&a21R%kcWI&w30 zT>Vu->aV(~gw##-P6?@Z>XZ^vr_>iEq`ov~I^}#_9i1lsACU4!qu6X{{=(tNMp)Ld>ZOI_zF5F52ZO z_7}1UI|p@MPTsWF;hEFZ^PT#0zf7-tcd754>0cZzN4X8_EZ$Z-7|iKD(PlL3$#7;g z$M4AIV*BLYsysNkuaxhGduKb8@O#+t50JG|?zd}T>(1`Zr`|-p&WFrsyEO+?+xAP2 z=;6aXoxf7PB(E6>ew?~m*w5Xsei>`K)hcT>yB&6~*jDXwRs=&QqNPslm^Booca&{* z{cINw;N984`Y_-ac7ZZ_ZxC6i|9hQ3 z)S>c%ech^J`>$Ujha(#%m%wFgX5b)fml8BmDP${Sg)`EsO3vHSCu%dpWqXOJZ^NLBQHHd5S#>W6~*(3X?aU_4`-3dR|;oWwYe z)^XVZVlO92p-d#+gGNVtuTkwZPsMiaauCeZB-wi;JKiNkY2G%v^V`tl-a|X7MfWp9 z!(T3o(Gy8UkUXWsM)@Q=?S5%eFDf-o$j&rQnd~G>6r(G&MKQlML@^jGCkoK_tw$mV zP`MN;#;^C4h)^4_m9o-tNnpgUIJ5>^gNIB5Tn!%TFb1!VBV&Y;GmTSS%mykvD6 z&$pyog@j}z=tvkOZumUe@RZD->LQJhiT#E^5Re(xKQUI$a~F2dTB}9kQQA7*In?`< zU`A%*NvFGX@M`CP7jmuE`tnnv2^y%(c*0%A00jAp!*Rs6Ij@ul-1$m<-zT!jdS`;I zO!uNAzJ5EReWE{Ry>LASYFQo~z25I!-76_+0v8HhKGc_CCR#nzpOnP!(suxdZa=Bo zRE>kP7wb`n^>A3z3E;>tJmHKo8TdtYP8`aZr^oDxGZu`&E|@Ji8`Kd;9|kk=BM`}l zgW3EY?KPLxb2SH)#!st=F*=2kVdJ8h0^H!8D^qEsg1Z|3hSIxEpYbh zSAJBS@uc3HMNsJ7q4%FJiz14%)#h?}qq`u&MCu;2ZluQ>q^clx2{$}SwPw%)sP|PT zTJhgu{}_7m0`-GQw8Re>mJ<`-Vs$am?fp}%Op|qyzDZ`Qx?fZ{RIcrJx?+!$$n9{! za7PymcXYw95LUm@>N2F&_yednLtMNl`d|U#Zs*96WHtYC(V*$@Sdu=E2u+7MmBi5W zV1#T>=Qbuz9ywu%qDZ}(&MRYQoP7eKh7x=4RTb2Bcr1+diCzBOu2EfkTkNBC~8 zjwziuhPvKqjj%*%9APmu@gYn%Y)K?lMvc`vRxGwB`m8z} zD+U17c-0B6eP)4IXjZdAJ-VZOwfl;}q+L=zR!!a^d-*xDSl*&5vjl6lbF=eg6wT1!B)W^MAzZP8mxi(Tw&K!msy6ZDD%~R}3@a8V?867m_-grzAO_Qi8lL)dq+%&K+U1x7pi_Db3^JioM z-OX^K=q&E(Z?MewjnT_Bpm!addBtE%v<^O%UE^YSF`wgSm|zDh)M7SESF#nutzQ}i zm5p5tHD>aX3*6x`$=AXza5sZ`G|1Do{H(jFCCv+gHQVP-RR1=>F#>(m_q;=*n`!f^PddS0JXUG=hHx;%#RWzE zj{FnQH^-le0eWGIrz2D&^VDRt)FiU7V33xY)RnRZAJo7q9iYMt2_gh-@E{XI^WI|g zt&~>gq7I)K=T9-bK9NktaZI#|Q-gUgaKwfQoS29Kz!#empx&a!9UBvP!yOymVVBzyya^(BWiv=Ar4WOw;cAptP%zWZ^+ zATxkqk9X_UAH-i^{4)yQp@3#yWK@kh@&BlpK&s8ykL(Vmn!65mZ*n$9UcpA3%Jc&= zj&P3F&O+uy9Tg{Z`{wL`tw@8;O?uYwQedpkHtr>dR4X2OHS<3n#DrD@lLVSX7YuR7 zNHx-Xr!yCyDt^68)^=M1Bxzx1?WnsnzANw6JDdP8e5G&*G3;C>h!#&s9peMET!b>G!|Qp=~D8#i1Ti>8S4#NU0U$> zZ$@F&bG=s^RMTjL!vQ{ZAiPN}n(4s5p6pgZhx9p(b}vX$-i;+CRUpCHe$f>rKZ4oP zjH;V$1T&@#)NRo>m@rJ<>~)HcxH&>A3`;WGo5|f2lpuQzu9@l=k)vI&Iuw)QA@aKF zpxLTa)>2mmD+%>i%Sd5nJF;#Mxqnu0A`DWDF!P!k>KRl*S( zPnoPjX^5D@p!99dWA0BiXPspm23dIE>v!`zvVO-YO^qjZyzmb4uj(7>=BdG97}v4n zZ3Qkj=STN+f-T<-rgnlZ81k`1VJBL2Wo}XO2k_ilN;%xDdV$>fjkRte7>I&1vqQ87a` z0py+oRgDYbpWS^4!2?bVs#> zncz3CLR@*=8iea%SP(UYZjFN4v;~?7WVez`o2{clfbszg4o|mJd4f#QRDnuJP{o9( z4IW^cK?Uz%A+rb-om3}i5*T%Y>Wey|8v4>G7)jjwykNBYoj`*VO%dxxm7=C=MU;

9&(73uR(9`ws(!$9dIm694f%u-Tc^gU3l(6#BlJ3znL1b3zxWobk&s|>P%Yg6#Cs`im`ptdiyNimCRL@1_QJ!mNj`|nF>Gj^7 zmGYi)fYrd%fspGG)sFO8!6nbnTB#)=((f$+5^MSz_c`M{Ahs=z_CkeY+a}#@#HO0M z&o%8)f9ThRmM|wDUi}4}v5J!N-1Bga*7SRPsD4yfxhvOVTvaZF-=3qtntyqJe!4uc z{-6-z_;UOxtUB=Ysvqo2%2MM_L78X_91@rrIM1{*_N zhl@d%ab~Ql^7*P>$d*_E9DX!Y)OcGelBGv#ioNkvr~+g{9I;{>xvmv(U;$HBPgz4 zz$m0vD;5hxpr{u?@FBR;TCoAT2cieSjeHGCI1gIyBIE(_??-u&vuTA~{zMjHZJ^2WXqvc?*}R9<+i{1qyUzlJm5X+R^zzxR}f!uk{S9)()0 z&5BtxBBB_KB`*zlR>O;on!aDuYc*H^wrVU`?d1U_zS~TJI8C9t<3=*yl1!u)iOU}S z+MHIDY0FrBA@DiPn}0J3FTD9%n&!JLk-YYBA~{~$0>*ZC8x|GOhX9Pa&2) z`i6cVEhSk-Lk}fN+`XoiWC@xVL5&+Z=3c`AM$7(osBRN%d!MsE!w-N8P zIeNR%(JQ8>{C0k!Q{)>tFQ!`N@-iIL>$7+@KWur&U`}49;2w4_lU1hzu!l5)%c$-) z>&HaJ!u+n_;{!PI4oO@-a5L!wrmdY z>)19rb0!K)_0@;!(U%HMu<4fm7*Y*U+F`9{Jy&h-WmVS?} zN`UuE_&OlfLKP)2)Z9TLa^EdU;GId#Z|}4Q$~BeXCM%xRrtu;q1v9!(Fp?qFczle) zU?zB<#pHwKN{NHbC=YUiQ)jH&48>WEjD<8s6*&tL3=&y&m!E6Sy*&mp_XFw|xv^|A z^W6ogP8{EBvD`yH&5$qwT-ORRjV28mS&m}P@yqluM)}z2FE{MINuAsh-s@j)EHibh zK2{tG9jNbZ9@o;NGJTYw&#lPCyAH0r!fhd{g(tdNEMzuk_LvW17%)1b_%~grv6COf zZv}x0beG;XRH#8YUtJ?cD=#RAK^Prb3Bmpg!yCTv2!n_b^qbQs5`LlgZX&jeo(q87*DJLu}ldkTc!Ev<`Ti33ThBrzP*(vRG6^MemK!E4!mD z_SRS+@mtk!Z|@^Q4rl-~?2L@%R^Nl_3&=Q~>A(rPCrS~4^sVTgd`f^1WLEvZx5VjX zLnaHERf5>z_Wb4HI2UPj!VD&Mw0Db39@lV5;z+2TMu&Z5Pw4Q~0f)VHVSmlf zL=kveup?45y*w%W#VO&(%2^E@FqnSk>=f|Inh;jkg?0T7o+hkjjnL!rj{YpZR{jS7 za6YBkC6_o6j-F4>>()#UUA@ZL3e^mDk**a0qmJVOeP`Q-9l&`r8I;Y$!poL|-?kzYWiv<$|LP-fQESz_%L!zznVQ z9_E$lJ>(zSD~=_8fy5Cg1xvFAZraxk zLTx7M$w{qvGPBW*o{@BrXGr%^7a*k$At9t*;I%MB)EmbrU>?~itjk=(OcI_6{lM&A z@%c9dYOV(=#vthO6DyZPLbGLVwBo0gs!2DgS^rcP;eUak%Vnn5NbZRh(oW#t4x;4X&d( zVKeS%PK?ppbZUjn?sQXx%PF zxqxA04Z8K%(;N)Sma%^gvY=l1e(@lcK`8baEN!z>@pz-AQRHQR8`oAYJsYvHR2N$A zUqVV?uW#T%b-dtEf02P)s^(-CGLVRTkUFszsBhOqZTJdk#5W9Zz5)wX&W=RSY6|)9X4#8V( z3N^FQ4aW(W#My{dnyhrEon&Y*QH)8*(;}E*Zz4L)WFo&yvV0+zmk!RzWan~{otu%J zX9|nC>^$?Cvm2xsQ8YIDloIEpEdX6X;0zd?U9-wqIr z3$7Nb&7wxN&{h+X8W|=q!`tTi6(UX1vLzWQQrDtv_p+)eK%Nah(4}FuyF^?ueZS&P4-bj=nfM!FgL?Lw?K|2rfJwzT0T7 z)j=ek#D3dJhYJURq&ywIJBxIFcEz6n5-lHj{RBLXGphD4yyp`i$%q%n}FV+uFp{{P_1;0FOCo@3HF7ZD;*bbvrTd$$Q zty%^<6Bbt~{Ojg@Ba<%|s;zaQ=(eu^?5Nl{6z4c{V7@>`;evja`FWX1_OAb4HJHPM z4_wp}Wy(-X?+}h`we$|{$XrYBkdG|3@V>xB_HzoQ+X8okX=Vz~MWFXYOTB7Qc7ols z3ihXg1q1{zP~#aGK#czkJOKvv@Y$9yU7G{%lF76e`+3!1aa%ep$5=~Hgbo>Z^%?-o zzUVaoNG8y|1OVfT1k{bMTAxD}in&ObBMGwGENDb@GT>j>$~2>R#uzJjIIA<1a%Oz%RNF2xN3kYN2*8d`%2>0B5|i3L zRwLB3P2X%t-$V~jH}i2^UEln0zFC*BbVZWrYG0wYxJ`tIya?<1W+IA`6z=0JS^UIaP+3&$0dj) z_;F{%jcrq`i>b*a!8oz0U6XWMQI{9Kph*N_G|<8dDU{=SC^3?+oua2Uhn&Pxo`Y4O zB`7!F11%dGS=sGgryOQxG~KLk;+?mN&ss6qW!nn7E=3T060~Sv)ArYCz0Y&;M>GpSt{@oN9s^0-|h+{JmY(Zpca9;#Cr0qh& z_IKg@xuahNIAuCjyTl&u<~gM0Iaz@Hb3r#zt!CSvL!{IE%-nSSvAZE)ICdee9DT-9 zOaZ6FcUj^lL{MB{@|2BDO0^x&MKpR4-YL5I9{ZMsw)E|1evw9F7(+62o-6Hv(V8m3 zC`y&A<3dKGhHIWrSnWE}?Q6BG9^(i9bMP$tFCkp^j^pecvLXIm{l`r=I@KxRv40=K zz+)JA3 zbM1@%kLzCiL&Zz}&+Bh2{-^)>fBC-u^?&;h^$TC!{qO$!|KWeU;`?tZez>@~_>tl@ z#g7)Z6t69AEe;p2FaBfki^YE`-d+55@jJ!u7Hh?Oi}w}x6u(!zzxbi<2a0=(4;H^) z{6X=d;tz`t7au7;Tl`J&x5fR%-xYsf{6q1%;vb8DDn4I4P<)~IVsT^nL**Y8e_Z@r z`2kiLKUn^L`3L2P%0DhYT7Injc=;#gC(8TEPnLgLe!Bd#^3Th^DF3Sb%kq})@$ysU z8@oT+{loIZF(Exe<|M7{nz4WSe1BF`BUXjbYI_nb@{6DSn-MCzT%U`r;0x< zK3)7-@#n=~6vvCdEdHwa>*6!TKNnvqZtZ@#_)>9G_dUg*6z?zJQQTGhQt{5>?&6n= z-zR{VPL8^zJ$$GUGQURNCMzOMUY#T$zsFMgu<$>O%+O~p?YZ!X?a z{4{5?{#^I7<=>QlTi##(UHSLrKa`&<|FQh1^7G{bf+UmGZ0Qzm;Dv zzfrDsU)g=I{95@h<-e8>m2c}F>Hci@Ro%CCf2R1^;z;px#T~_+#oLRw7H=zVFMhuG zh2pi{zb=2K`-bi_o_TZkS(m=_|9aW~{r~*GFaN<;tQM~t~wx;Om54|jjO zyJtt$fBfLA^LOsrd-gd`Sm_ky$mrO3cXDcaW`;SHmges2)^C#C^UuuIw`lsRDFv>w zXiYOm+M>{swucV0x<~qT!`>n6NaASf7czrSCiNE9`hp)_Ga<99mv!q!Rwbr3Ri2$( zX*-kqgdh^D$yRwDU`oTMieL<4e|I~kO?@hq$ zEUNtfyL39e-J}yj5(tBDHvu{*&Aqp`+Yyx)y&xij$T&03lH9%vG<3RSF9Bv;0NGSj zRNQx5aKn9HQE>xtMa3NzcgJO1#@+wtd#dWax0fV9a2}uM_ZK@=b>3P}opb8csZ(_| z=3g`B6dJhd+?W{j3_@=XYw4h!JMrXfVhdA^Jgph^{10_>p!RZb-K?TnbcG^PrlTYJ zvhfSl2bFh6P;}y;=CJMjiC*+2Mn#v4fgO?j{FUujI0CyG8%%VNA8l{c=VNOUyOU+q zArUjcQSHmJ@e9@XFKK*}9&XEBmyKT}$S;7f$37|dnr!@H0e%j^tQ)duLKoV!U*Jwm zWCxY$11bn@%XGrzhYn~T#N;P-z{8U>sH2kZZcVyNZtFNx-JId(#O`fA&&<6x+w&T8 z8PjpR%qf2S?re*_SCclBgB{T_%D6hy^FpfFV90n$Hh!7L{!_+oOakCq0e&LDA|`Rf z<9Vdn3}EI?tN?Os=LfEgu$VuN_JpJ+Ewyk+*pM-bW^LMuh8-mJY;7UK7Us}S78=6H zmJDAY`hh`b5r{slX%e?cS;wecy*VStNMEjz{+N+E^eyU%`8zB{@XGjv%-y~*O?5xA z>UOv=v!S2;o=k8{gVQTM!^7g($bNi9R9t(B_OlT}Ym$4O|vtcQ~8y zc5hO6O|zU@NZDwPj1DT<^d=lgdJVJ7`3Bc?@!rOCV-`9dJ?30) zAoU*E(acNKRv@Mc8>q5v!tpvz9hdrmGU!FPO)=M!coFUf0nDYOIsM6nfKArPwRG|u z)=50CMTsZ!EL@9&Xn0w`_w7&?8~JFbIBJ4Mv97H#pNwF`l*uL2C;tanK3dOkFl@AX zhaPIc{*5x1ZVIK=v+`{6_2Rk=?t1Cg*Xfq`hl|&d{+haJCLNi|ZcmxV!ul5T+)g?r zTN$4c-!JEhl$@j()5*+8HZw1JS1M)!BLxff;QCy8^vtWMhmQ&xQYJG>piUHn}9kPJ_R8`T^0 zf=tQyh?U>WmDnm}*QU<+$*Sv1)aBh?{kvMNqi6D1bWX~BYE^uda(|KB?ebFc&HKxM ze157v-@3obkStc&)0F!QR@n(FRQ7az{`~$b!(e8WJwv%aXO+E_qpoFLyGGwXyT97n zW=FFGcgm>D>};aM&6HR?E1OzKlgUBRI4Som%&KI*iOkvM zbHj^HPgHk5$!B>((7LYmNC7!H_l#`M(^=qkB+ri;KGUKcIfdwBn^DHu9v?zIH(EVV zD}>2^cxCk+86V1rkMMybU~iP>08Yz-%%?XHYP|XvL!*0N5vE)0ycU>mu@Ck>?fhX$ zTE>79rp^c3m>aL!XJq3o^zp;Ok!QriNPmd*G3DITc}JMk4WzsWd3-qO588;1b}}sV zFWWK$JL6C6;~WAF!>MlcPqMOAL^zD#w{M=}!TC6)x_8EJS>dk73U#rZh&D~+taQEO zYHnXJiVtWMIv6mWz;cJy3fo0PwG8)I_rc^7FO7kElGK8n;kN%_0L zW|w{kX~%I}&+R*gD0hhZj`ScCzebt7S>K0Wq#Pa5SNc}fXkQyxt5h0iAb;?6grP8OBs0Cg)|nE1clYjjn{|@5d%qOU znJ$u7=PE7VxUM`i8*d}qTgfJD+Gg|@tXJq=+Fx+;=r5*)&7b$tYlX7BdmlXyrK%J^ z9>5Mz{?s(_%M5M2g*ME0W^;>|(2G~a|D%s@<|9W`_@q8G2kh5^y$M)vS;^lh`9>wZ z+Hy$lZP}i;a!}CTcZ8_wQkW5TyEoacCtF~~`;dM;=_B-;snFrEq+dtcb_b{j@~V`= zAL+c!P)bx|@9-Zu@5#VC;94KhKJVo}aKP2_0Sp)|P!&qE|G?ZLtk}0w#5*|lM_Z{q zL8+kBc@R+Q3n=vtj(tF>ETD9&#n^nNntr;ezQd{8U70#M<`|vxLq<8sC|@hB(_fc5 zoMYXq!IivtH=zmiJR1rW=Tmn|LvwqD=1$iDkYLzpx*QN_*lU_sqYl@673T7&!{{Up z&FWY#G$A^7TjJ#9SZ0>K=IQHoni1U%l*g;ykiABfti4I|1@5pTL7V9{($$OG=0R!4 zgk(k;O|`r&8_wZ4Mzm~l4UwXmyerGV>61Tyq`bp}e^wTf!WR-Hh*#P!?IRL>oL_@DIsz<}#&4oILOeqOs^>mQe!Yxmn zZqc1Qij7e03gcQa_c%X+($R&S@(a5Dhi9>yJ`?w3(_P@+qu zUutdZrTdIA?>MlR06R=-?W51_I}D|YzRg);W4xWuFXprNbCAOiK3|t*baz{BI&Ov^&C=B?{6e?d!7QjarDYf*VD9?d`jP+1%HP3=ivl&xmyIjhGNDF zw!eWDTJ|^LLFK@Wdtn8b*|9?MM18_LOIRU!quwYHcTb{b$hqz;mA!;OQEVF*vd#C}6EB@J@KnZ`_vd&Jz2Q z#YX2p|zLmi4Q7ZO$uJ@Xe*!`1h*%&vvzw@tZ7K*&q}KEjthx0$u8%L=fIe z1F5&^5qH^vu&dcuZ~l3g;4=Sg_U51W2(ZZf6D5+!b?Fc4(w`P}X`hnl5J@7tD`~4Z z<{z%M5;Z-9mJfkG5_xk7s*AJz+ZQB}9jTCDG)SVuY*L&c+T0XG5fz#o!bWr``-)`g z-x$emsS$J0@~3U_AJzFk()nPn`I7*D&}j671G+)v7yr$R7XL$7v|1PcAjy*p0CaF$ zcE38nPuk)?tHIx^LAj%G#gTfEtwwro7u|bPAUSYl3Nyw2qGG?J*gD&x1l1PY3S-)* zw1U9fky84+0<2tYSB~T#nAn<%j>6BTOpdM}1o`-Ey9eBYO7U6C1&x&HOz zHeP(At>4g=zknTIEWob;7!rTf7GEO3uK>9F=0Zf%rrn>MIUx)}M>MNW7_>*Bv~~*zE`KUPoVt2GDaQ8n0VQOS0%$>E^_e zA>|iEPH}&ciN7zTeGjB{SRU5u6sOUprWvY(i(SbXSBLzp14DNpgp!?*y>A>23GHp; zute+q^5)_!!9|)$Sk^&pr6bpM{zY9_GAFRq8#E_(FemB0qxfs@x!mSN6Zpk2fmf$x z-yg`h2cE8Li{Gk3-!akxbOMt6(@d&0N(ms3h+$;JO%VP>ahCl zA{e`S9Pzyw+cjew1R349xv4I2S(*kpB%-{{J&Kpz^z~zKKcQPzJMUJ$uPdKA8EvM= zkE5%Hut?bV_vriA_#S%tUID%eAfv8DYaiL)yM_Mg_7)K~Rt$j%4*fa@#JJ+|v0k0; zU!S|SEk=*vjD{-KQ>A47?-V_`#@X#BZ0pluni2zj|KU>ig{HybhO<%+Mat?ThBXv zJ;$a}I@oHz?~Gu9<#26aPS6Teu)z6l=8u(z?Zjcjz(Dg7I_z$hDYm$$_) zQHD=4>cfs^?__eB1!; z`66J~3idHzY@S3(FIW1bF701IVrG6Myx$0v7n@B~JHx)I?G^W9Kzt!eDk@(@0wnt+&2gf<=iE0@oSa*ppqQi z_aiF7mf!h)!!@7On!C6yex0(vU)fu-#jg#4mbppKi6&?Q^l( z@^H>KGVxD@{C86>75^2CY;mYy0h8Vpe+WUMw@5^2ZL>W8@1ne4s^bJLZ9oluL=hJK z9vboHHdxxokF8VvyQqF+KMnyB3w_wO_=!LEGyROUiEVpc5rKQf3RnyrUu< zl(Z=jZT2R{X1D2~!F5d+E3*!>ey>SXVU~MGy6&wMa7MlNGQsD@;`hi%zOdAXJ#v)L zd01&Yfdh((c3-*UH^qLO6RdgmR z`@0y3y{+ZdI;`w1Z)=&Z(KIb~*cK64jJBIT_ryDHdixi?`?D9kXS+K%Fb!py6=RWd z0-g49y~JsZ+;MRRg0vk;ODSUBok_j7bzkjG>e%O&-?>=8kX0!Xi4YG7|+ zV8PDzKLWg2Bh|iIOUUguIsL8f2Rm73Yv8tz;6Y3gK9dKdPE^cOaCkI^?-wA{C5Jp-U@ot zIC%KIfUg56aom?ZF%@l#1|HKtV3u+;6?;E48URi_Bh%t09o28j-Ij^}pt7%3!<<7{ z-~K4bYk(Z-W#*p*cs1he)w&iG_Hz*G!Op^M4>v-=8=O!~pQO3@vkF~jeL^S#xLiW< zRRE+uNuhqKywzT*meG3leGGipHh!&hATjBW!w*Z0n!n1#PgCQsQ1^1A-lWvaNgZ9z z{W=rBS;=cja*9v#ElR#jU%k?_F*^L@+$SjSm0&--b3FL~2-O-sHW$j|;P9weS>ueV&>;F@1S|TEV3XqV(gU0gRVfJ%NDb&cA*0 z02+Jb7L``jPgUXPQh1xjFmOih=4|{l!JcEyZL=|OCU)Ksn7@jHMGu2S*7#L7FcS|>>bjb`+!XMVv*z<@zWWy|@l?Lax|wP6F)(~tJJ~P?z<__ zk0kN+$!hX0PeCTWOog9B;baP69>Jby&1niU@f8AG>Bn%T5?AnbFH?|-pQs#{lcPBW znfOTpUZ#dx$Ka+Q6F*sBFIAIwc?vQ;HyIZ=s`SGs=iZr(pR0MjL`@pW4#dwA;9_e9 zZ}InK<7W$S5deO41bV$l&kfw1iQlW<{MFeN+#0n`UP1EEW#MN-tf;h1`yozCpnpbM z>n(xlE4Wu|MMy^X3JOPrCyrfs<;F4s+=PT4H|WpCZKvk`n;$+<%YVssXHJN+YgVPg z)dF7d_=CRunLcS1OJpDJ-G9`FKk*@}r#u1tS%5!gyL-Q;rO-}0j<(}O_E$G$;8_AR?<0`!zFX^ z4v18k{uLR+TwJA+{{w*B56`_f6F)_OUjj(89oJl}{pZ{VGCl97Lbtq`MFruv2m#;C z#2-+>pQ{f-0Dv0=_!)qdUS-gULRgtut&-#Jo$yOk~Gff<;} z|J?dj+4#rG@MD!I=YEL>ujG%EUlV70b87jipg#oKt2%$C)DK*qHknX>{amo`3l=60 z;4cLHo{ITpCQRVZ4Bv7f%E*}2M!??OJ-}v0EKU`hyJS?P&73nfja^aOajDdOxibV( z!cUbR!&>Nw9M8g^>6cb$`@6KgcwVB))^9Fn7Zxs#&+DE&a_+Ays@VxvtGx5dB`gMBf6${(%?uSD@V;rK1 zT0wu^A5sH{d~TVser>$y_!(`^ZS>gdYs2sNOxhnNCKPQ86Jx7(g9*uLciE&!@23aT z51@#;dSS_qE3b1W&OuP25hcuaQtl5JCp3Xyv1!IQ@C_54SdPTord<2>_AX6szv>>C z+1qIG7#)0A2jX|AQ(vM}$9U}+D=L;a0HziGA>H$PZprUw68&T82R4c77>gb(>dt6a zmZ;Ys2z3W0{ERiVPcHJ$SRUArzDPTmK}2mS-t~ZpoN>t#tmm79+(YoB<_ycJ^9fSN zA>Qtr-c5A9Wtnwk*7TLb`ii%oo!J}{_1iLA#=^vt$jshnnLVhS7dPWK;j`@Cm|=^0 z40f|mD#K?igON0=ou_pFuoa!v?p?t)GoZ9E2&Y-8=m__yRlj@GioKa%0A*r#E?D6= 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 CLte@N literal 236080 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

~%R6tGK0 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
k=)9j~H?F5*1)>sRDpaVy*B~&t?Q-Cm7vl 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 diff --git a/polkadot/api/Cargo.toml b/polkadot/api/Cargo.toml index 5e78af8c12068..13c19b7570f19 100644 --- a/polkadot/api/Cargo.toml +++ b/polkadot/api/Cargo.toml @@ -8,7 +8,10 @@ error-chain = "0.11" polkadot-executor = { path = "../executor" } polkadot-runtime = { path = "../runtime" } polkadot-primitives = { path = "../primitives" } +substrate-codec = { path = "../../substrate/codec" } +substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-client = { path = "../../substrate/client" } +substrate-primitives = { path = "../../substrate/primitives" } substrate-executor = { path = "../../substrate/executor" } substrate-state-machine = { path = "../../substrate/state-machine" } diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index 049e59e197648..c2c0ae82aeb33 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -18,10 +18,13 @@ //! runtime. extern crate polkadot_executor; -extern crate polkadot_runtime; +extern crate polkadot_runtime as runtime; extern crate polkadot_primitives as primitives; +extern crate substrate_codec as codec; +extern crate substrate_runtime_io as runtime_io; extern crate substrate_client as client; extern crate substrate_executor as substrate_executor; +extern crate substrate_primitives; extern crate substrate_state_machine as state_machine; #[macro_use] @@ -32,14 +35,12 @@ extern crate substrate_keyring as keyring; use client::backend::Backend; use client::Client; -use polkadot_runtime::runtime; use polkadot_executor::Executor as LocalDispatch; use substrate_executor::{NativeExecutionDispatch, NativeExecutor}; use state_machine::OverlayedChanges; -use primitives::{AccountId, SessionKey, Timestamp, TxOrder}; -use primitives::block::{Id as BlockId, Block, Header, Body}; -use primitives::transaction::UncheckedTransaction; +use primitives::{AccountId, BlockId, Index, SessionKey, Timestamp}; use primitives::parachain::DutyRoster; +use runtime::{Block, Header, UncheckedExtrinsic, Extrinsic, Call, TimestampCall}; error_chain! { errors { @@ -53,15 +54,15 @@ error_chain! { description("Unknown block") display("Unknown block") } - /// Attempted to push an inherent transaction manually. - PushedInherentTransaction(tx: UncheckedTransaction) { - description("Attempted to push an inherent transaction to a block."), - display("Pushed inherent transaction to a block: {:?}", tx), + /// Attempted to push an inherent extrinsic manually. + PushedInherentTransaction(xt: UncheckedExtrinsic) { + description("Attempted to push an inherent extrinsic to a block."), + display("Pushed inherent extrinsic to a block: {:?}", xt), } - /// Badly-formed transaction. - BadlyFormedTransaction(tx: UncheckedTransaction) { - description("Attempted to push a badly-formed transaction to a block."), - display("Pushed badly-formed transaction to a block: {:?}", tx), + /// Badly-formed extrinsic. + BadlyFormedTransaction(xt: UncheckedExtrinsic) { + description("Attempted to push a badly-formed extrinsic to a block."), + display("Pushed badly-formed extrinsic to a block: {:?}", xt), } /// Some other error. // TODO: allow to be specified as associated type of PolkadotApi @@ -87,8 +88,8 @@ impl From for Error { /// A builder for blocks. pub trait BlockBuilder: Sized { - /// Push a non-inherent transaction. - fn push_transaction(&mut self, transaction: UncheckedTransaction) -> Result<()>; + /// Push a non-inherent extrinsic. + fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()>; /// Finalise the block. fn bake(self) -> Block; @@ -127,8 +128,8 @@ pub trait PolkadotApi { /// Get the timestamp registered at a block. fn timestamp(&self, at: &Self::CheckedBlockId) -> Result; - /// Get the nonce of an account at a block. - fn nonce(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result; + /// Get the index of an account at a block. + fn index(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result; /// Evaluate a block and see if it gives an error. @@ -179,27 +180,27 @@ impl PolkadotApi for Client> } fn session_keys(&self, at: &CheckedId) -> Result> { - with_runtime!(self, at, ::runtime::consensus::authorities) + with_runtime!(self, at, ::runtime::Consensus::authorities) } fn validators(&self, at: &CheckedId) -> Result> { - with_runtime!(self, at, ::runtime::session::validators) + with_runtime!(self, at, ::runtime::Session::validators) } fn duty_roster(&self, at: &CheckedId) -> Result { - with_runtime!(self, at, ::runtime::parachains::calculate_duty_roster) + with_runtime!(self, at, ::runtime::Parachains::calculate_duty_roster) } fn timestamp(&self, at: &CheckedId) -> Result { - with_runtime!(self, at, ::runtime::timestamp::get) + with_runtime!(self, at, ::runtime::Timestamp::now) } fn evaluate_block(&self, at: &CheckedId, block: Block) -> Result<()> { - with_runtime!(self, at, || ::runtime::system::internal::execute_block(block)) + with_runtime!(self, at, || ::runtime::Executive::execute_block(block)) } - fn nonce(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result { - with_runtime!(self, at, || ::runtime::system::nonce(account)) + fn index(&self, at: &Self::CheckedBlockId, account: AccountId) -> Result { + with_runtime!(self, at, || ::runtime::System::account_index(account)) } fn build_block(&self, parent: &CheckedId, timestamp: Timestamp) -> Result { @@ -208,14 +209,20 @@ impl PolkadotApi for Client> parent_hash: self.block_hash_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))?, number: self.block_number_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))? + 1, state_root: Default::default(), - transaction_root: Default::default(), + extrinsics_root: Default::default(), digest: Default::default(), }; - let body = Body { - timestamp: timestamp, - transactions: Vec::new(), - }; + let extrinsics = vec![ + UncheckedExtrinsic { + extrinsic: Extrinsic { + signed: Default::default(), + index: Default::default(), + function: Call::Timestamp(TimestampCall::set(timestamp)), + }, + signature: Default::default(), + } + ]; let mut builder = ClientBlockBuilder { parent: *parent, @@ -223,11 +230,11 @@ impl PolkadotApi for Client> state: self.state_at(parent)?, header, timestamp, - transactions: Vec::new(), + extrinsics: extrinsics.clone(), }; - for inherent in body.inherent_transactions() { - builder.execute_transaction(inherent)?; + for inherent in extrinsics { + builder.apply_extrinsic(inherent)?; } Ok(builder) @@ -242,34 +249,27 @@ pub struct ClientBlockBuilder { state: S, header: Header, timestamp: Timestamp, - transactions: Vec, + extrinsics: Vec, } impl ClientBlockBuilder where S::Error: Into { - // executes a transaction, inherent or otherwise, without appending to the list - fn execute_transaction(&mut self, transaction: UncheckedTransaction) -> Result<()> { - if !transaction.is_well_formed() { - bail!(ErrorKind::BadlyFormedTransaction(transaction)); - } - + // executes a extrinsic, inherent or otherwise, without appending to the list + fn apply_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()> { let mut ext = state_machine::Ext { overlay: &mut self.changes, backend: &self.state, }; - // TODO: avoid clone - let header = self.header.clone(); let result = ::substrate_executor::with_native_environment( &mut ext, - move || runtime::system::internal::execute_transaction(transaction, header), + move || runtime::Executive::apply_extrinsic(extrinsic), ).map_err(Into::into); match result { - Ok(header) => { + Ok(_) => { ext.overlay.commit_prospective(); - self.header = header; Ok(()) } Err(e) => { @@ -283,12 +283,13 @@ impl ClientBlockBuilder impl BlockBuilder for ClientBlockBuilder where S::Error: Into { - fn push_transaction(&mut self, transaction: UncheckedTransaction) -> Result<()> { - if transaction.transaction.function.is_inherent() { - bail!(ErrorKind::PushedInherentTransaction(transaction)); + fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()> { + // Check that this is not an "inherent" extrinsic. + if extrinsic.signature == Default::default() { + bail!(ErrorKind::PushedInherentTransaction(extrinsic)); } else { - self.execute_transaction(transaction.clone())?; - self.transactions.push(transaction); + self.apply_extrinsic(extrinsic.clone())?; + self.extrinsics.push(extrinsic); Ok(()) } } @@ -299,18 +300,14 @@ impl BlockBuilder for ClientBlockBuilder backend: &self.state, }; - let old_header = self.header; let final_header = ::substrate_executor::with_native_environment( &mut ext, - move || runtime::system::internal::finalise_block(old_header) - ).expect("all inherent transactions pushed; all other transactions executed correctly; qed"); + move || runtime::Executive::finalise_block() + ).expect("all inherent extrinsics pushed; all other extrinsics executed correctly; qed"); Block { header: final_header, - body: Body { - timestamp: self.timestamp, - transactions: self.transactions, - } + extrinsics: self.extrinsics, } } } @@ -318,10 +315,12 @@ impl BlockBuilder for ClientBlockBuilder #[cfg(test)] mod tests { use super::*; + use runtime_io::with_externalities; + use keyring::Keyring; + use codec::Slicable; use client::in_mem::Backend as InMemory; - use polkadot_runtime::genesismap::{additional_storage_with_genesis, GenesisConfig}; use substrate_executor::NativeExecutionDispatch; - use keyring::Keyring; + use runtime::{GenesisConfig, ConsensusConfig, SessionConfig, BuildExternalities}; fn validators() -> Vec { vec![ @@ -331,20 +330,31 @@ mod tests { } fn client() -> Client> { + let genesis_config = GenesisConfig { + consensus: Some(ConsensusConfig { + code: LocalDispatch::native_equivalent().to_vec(), + authorities: validators(), + }), + system: None, + session: Some(SessionConfig { + validators: validators(), + session_length: 100, + }), + council: None, + democracy: None, + parachains: None, + staking: None, + }; ::client::new_in_mem( LocalDispatch::new(), || { - let config = GenesisConfig::new_simple(validators(), 100); - - // override code entry. - let mut storage = config.genesis_map(); - storage.insert(b":code".to_vec(), LocalDispatch::native_equivalent().to_vec()); - - let block = ::client::genesis::construct_genesis_block( - &config.genesis_map() + let mut storage = genesis_config.build_externalities(); + let block = ::client::genesis::construct_genesis_block(&storage); + with_externalities(&mut storage, || + // TODO: use api.rs to dispatch instead + runtime::System::initialise_genesis_state(&block.header) ); - storage.extend(additional_storage_with_genesis(&block)); - (block.header, storage.into_iter().collect()) + (substrate_primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) } ).unwrap() } diff --git a/polkadot/consensus/Cargo.toml b/polkadot/consensus/Cargo.toml index 103ae1a9132e7..f87a63b87e545 100644 --- a/polkadot/consensus/Cargo.toml +++ b/polkadot/consensus/Cargo.toml @@ -13,6 +13,7 @@ log = "0.4" polkadot-api = { path = "../api" } polkadot-collator = { path = "../collator" } polkadot-primitives = { path = "../primitives" } +polkadot-runtime = { path = "../runtime" } polkadot-statement-table = { path = "../statement-table" } polkadot-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../substrate/bft" } diff --git a/polkadot/consensus/src/lib.rs b/polkadot/consensus/src/lib.rs index ba1e05b05e1ff..1fc6c441f20b6 100644 --- a/polkadot/consensus/src/lib.rs +++ b/polkadot/consensus/src/lib.rs @@ -38,6 +38,7 @@ extern crate polkadot_collator as collator; extern crate polkadot_statement_table as table; extern crate polkadot_primitives; extern crate polkadot_transaction_pool as transaction_pool; +extern crate polkadot_runtime; extern crate substrate_bft as bft; extern crate substrate_codec as codec; extern crate substrate_primitives as primitives; @@ -62,11 +63,11 @@ use table::generic::Statement as GenericStatement; use runtime_support::Hashable; use polkadot_api::{PolkadotApi, BlockBuilder}; use polkadot_primitives::{Hash, Timestamp}; -use polkadot_primitives::block::Block as PolkadotBlock; use polkadot_primitives::parachain::{Id as ParaId, DutyRoster, BlockData, Extrinsic, CandidateReceipt}; +use polkadot_runtime::Block as PolkadotGenericBlock; use primitives::block::{Block as SubstrateBlock, Header as SubstrateHeader, HeaderHash, Id as BlockId, Number as BlockNumber}; use primitives::AuthorityId; -use transaction_pool::{Ready, TransactionPool}; +use transaction_pool::{Ready, TransactionPool, PolkadotBlock}; use futures::prelude::*; use futures::future; @@ -152,7 +153,7 @@ impl TableContext { } fn sign_statement(&self, statement: table::Statement) -> table::SignedStatement { - let signature = sign_table_statement(&statement, &self.key, &self.parent_hash); + let signature = sign_table_statement(&statement, &self.key, &self.parent_hash).into(); let local_id = self.key.public().0; table::SignedStatement { @@ -552,7 +553,7 @@ impl bft::Proposer for Proposer { if pending_size + pending.encoded_size() >= MAX_TRANSACTIONS_SIZE { break } - match block_builder.push_transaction(pending.as_transaction().clone()) { + match block_builder.push_extrinsic(pending.as_transaction().clone()) { Ok(()) => { pending_size += pending.encoded_size(); } @@ -582,23 +583,23 @@ impl bft::Proposer for Proposer { fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior)>) { use bft::generic::Misbehavior as GenericMisbehavior; use primitives::bft::{MisbehaviorKind, MisbehaviorReport}; - use polkadot_primitives::transaction::{Function, Transaction, UncheckedTransaction}; + use polkadot_runtime::{Call, Extrinsic, UncheckedExtrinsic, ConsensusCall}; let local_id = self.local_key.public().0; let mut pool = self.transaction_pool.lock(); - let mut next_nonce = { + let mut next_index = { let readiness_evaluator = Ready::create(self.parent_id.clone(), &*self.client); - let cur_nonce = pool.pending(readiness_evaluator) - .filter(|tx| tx.as_transaction().transaction.signed == local_id) + let cur_index = pool.pending(readiness_evaluator) + .filter(|tx| tx.as_ref().as_ref().signed == local_id) .last() - .map(|tx| Ok(tx.as_transaction().transaction.nonce)) - .unwrap_or_else(|| self.client.nonce(&self.parent_id, local_id)); + .map(|tx| Ok(tx.as_ref().as_ref().index)) + .unwrap_or_else(|| self.client.index(&self.parent_id, local_id)); - match cur_nonce { - Ok(cur_nonce) => cur_nonce + 1, + match cur_index { + Ok(cur_index) => cur_index + 1, Err(e) => { - warn!(target: "consensus", "Error computing next transaction nonce: {}", e); + warn!(target: "consensus", "Error computing next transaction index: {}", e); return; } } @@ -618,23 +619,18 @@ impl bft::Proposer for Proposer { => MisbehaviorKind::BftDoubleCommit(round as u32, (h1, s1.signature), (h2, s2.signature)), } }; - - let tx = Transaction { + let extrinsic = Extrinsic { signed: local_id, - nonce: next_nonce, - function: Function::ReportMisbehavior(report), + index: next_index, + function: Call::Consensus(ConsensusCall::report_misbehavior(report)), }; - next_nonce += 1; + next_index += 1; - let message = tx.encode(); - let signature = self.local_key.sign(&message); - let tx = UncheckedTransaction { - transaction: tx, - signature, - }; + let signature = self.local_key.sign(&extrinsic.encode()).into(); + let uxt = UncheckedExtrinsic { extrinsic, signature }; - pool.import(tx).expect("locally signed transaction is valid; qed"); + pool.import(uxt).expect("locally signed extrinsic is valid; qed"); } } } @@ -649,10 +645,11 @@ fn evaluate_proposal( const MAX_TIMESTAMP_DRIFT: Timestamp = 4; let encoded = Slicable::encode(proposal); - let proposal = PolkadotBlock::decode(&mut &encoded[..]) + let proposal = PolkadotGenericBlock::decode(&mut &encoded[..]) + .and_then(|b| PolkadotBlock::from(b).ok()) .ok_or_else(|| ErrorKind::ProposalNotForPolkadot)?; - let transactions_size = proposal.body.transactions.iter().fold(0, |a, tx| { + let transactions_size = proposal.extrinsics.iter().fold(0, |a, tx| { a + Slicable::encode(tx).len() }); @@ -668,7 +665,7 @@ fn evaluate_proposal( // a) we assume the parent is valid. // b) the runtime checks that `proposal.parent_hash` == `block_hash(proposal.number - 1)` - let block_timestamp = proposal.body.timestamp; + let block_timestamp = proposal.timestamp(); // TODO: just defer using `tokio_timer` to delay prepare vote. if block_timestamp > now + MAX_TIMESTAMP_DRIFT { @@ -676,6 +673,6 @@ fn evaluate_proposal( } // execute the block. - client.evaluate_block(parent_id, proposal)?; + client.evaluate_block(parent_id, proposal.into())?; Ok(true) } diff --git a/polkadot/executor/src/lib.rs b/polkadot/executor/src/lib.rs index 186e5469ccfda..f53ca615171bf 100644 --- a/polkadot/executor/src/lib.rs +++ b/polkadot/executor/src/lib.rs @@ -32,277 +32,3 @@ extern crate triehash; #[cfg(test)] #[macro_use] extern crate hex_literal; native_executor_instance!(pub Executor, polkadot_runtime::api::dispatch, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm")); - -#[cfg(test)] -mod tests { - use runtime_io; - use super::Executor; - use substrate_executor::WasmExecutor; - use codec::{KeyedVec, Slicable, Joiner}; - use keyring::Keyring; - use runtime_support::Hashable; - use polkadot_runtime::runtime::staking::balance; - use state_machine::{CodeExecutor, TestExternalities}; - use primitives::twox_128; - use polkadot_primitives::{ - Hash, Header, Body, BlockNumber, Block, Digest, Transaction, - UncheckedTransaction, Function, InherentFunction, - }; - use ed25519::{Public, Pair}; - - const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm"); - const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm"); - - // TODO: move into own crate. - macro_rules! map { - ($( $name:expr => $value:expr ),*) => ( - vec![ $( ( $name, $value ) ),* ].into_iter().collect() - ) - } - - fn new_test_ext() -> TestExternalities { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - - map![ - twox_128(&0u64.to_keyed_vec(b"sys:old:")).to_vec() => [69u8; 32].encode(), - twox_128(b"gov:apr").to_vec() => vec![].and(&667u32), - twox_128(b"ses:len").to_vec() => vec![].and(&2u64), - twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(), - twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(), - twox_128(b"sta:spe").to_vec() => vec![].and(&2u64), - twox_128(b"sta:vac").to_vec() => vec![].and(&3u64), - twox_128(b"sta:era").to_vec() => vec![].and(&0u64), - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ] - } - - fn set_timestamp(timestamp: u64) -> UncheckedTransaction { - UncheckedTransaction::inherent(InherentFunction::TimestampSet(timestamp)) - } - - fn tx() -> UncheckedTransaction { - let transaction = Transaction { - signed: Keyring::One.to_raw_public(), - nonce: 0, - function: Function::StakingTransfer(Keyring::Two.to_raw_public(), 69), - }; - let signature = Keyring::from_raw_public(transaction.signed).unwrap() - .sign(&transaction.encode()); - - UncheckedTransaction { transaction, signature } - } - - fn execute_tx_on(executor: C, ext: &mut TestExternalities, code: &[u8], tx: UncheckedTransaction, header: Header) - -> Result, C::Error> - where C: CodeExecutor - { - let next_header = executor.call(ext, code, "execute_transaction", &vec![].and(&header).and(&set_timestamp(100_000))).unwrap(); - let next_input = next_header.and(&tx); - - executor.call(ext, code, "execute_transaction", &next_input[..]) - } - - fn construct_block(number: BlockNumber, parent_hash: Hash, state_root: Hash, timestamp: u64, txs: Vec) -> (Vec, Hash) { - use triehash::ordered_trie_root; - - - let transactions = txs.into_iter().map(|transaction| { - let signature = Pair::from(Keyring::from_public(Public::from_raw(transaction.signed)).unwrap()) - .sign(&transaction.encode()); - - UncheckedTransaction { transaction, signature } - }).collect(); - - let header = Header { - parent_hash, - number, - state_root, - transaction_root: Default::default(), - digest: Digest { logs: vec![], }, - }; - - let mut block = Block { - header, - body: Body { timestamp, transactions }, - }; - - let transaction_root = ordered_trie_root(block.all_transactions().map(|tx| Slicable::encode(&tx))).0.into(); - block.header.transaction_root = transaction_root; - - let hash = block.header.blake2_256(); - - (block.encode(), hash.into()) - } - - fn block1() -> (Vec, Hash) { - construct_block( - 1, - [69u8; 32].into(), - hex!("3df569d47a0d7f4a448486f04fba4eea3e9dfca001319c609f88b3a67b0dd1ea").into(), - 100_000, - vec![ - Transaction { - signed: Keyring::One.to_raw_public(), - nonce: 0, - function: Function::StakingTransfer(Keyring::Two.to_raw_public(), 69), - } - ] - ) - } - - fn block2() -> (Vec, Hash) { - construct_block( - 2, - block1().1, - hex!("5604fe023cd6effd93aec9b4a008398abdd32afb3fec988a19aa853ab0424a7c").into(), - 200_000, - vec![ - Transaction { - signed: Keyring::Two.to_raw_public(), - nonce: 0, - function: Function::StakingTransfer(Keyring::One.to_raw_public(), 5), - }, - Transaction { - signed: Keyring::One.to_raw_public(), - nonce: 1, - function: Function::StakingTransfer(Keyring::Two.to_raw_public(), 15), - } - ] - ) - } - - #[test] - fn panic_execution_with_foreign_code_gives_error() { - let one = Keyring::One.to_raw_public(); - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![68u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let r = execute_tx_on(Executor::new(), &mut t, BLOATY_CODE, tx(), Header::from_block_number(1)); - assert!(r.is_err()); - } - - #[test] - fn panic_execution_with_native_equivalent_code_gives_error() { - let one = Keyring::One.to_raw_public(); - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![68u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let r = execute_tx_on(Executor::new(), &mut t, COMPACT_CODE, tx(), Header::from_block_number(1)); - assert!(r.is_err()); - } - - #[test] - fn successful_execution_with_native_equivalent_code_gives_ok() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let r = execute_tx_on(Executor::new(), &mut t, COMPACT_CODE, tx(), Header::from_block_number(1)); - assert!(r.is_ok()); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&one), 42); - assert_eq!(balance(&two), 69); - }); - } - - #[test] - fn successful_execution_with_foreign_code_gives_ok() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let r = execute_tx_on(Executor::new(), &mut t, BLOATY_CODE, tx(), Header::from_block_number(1)); - assert!(r.is_ok()); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&one), 42); - assert_eq!(balance(&two), 69); - }); - } - - #[test] - fn full_native_block_import_works() { - let mut t = new_test_ext(); - - Executor::new().call(&mut t, COMPACT_CODE, "execute_block", &block1().0).unwrap(); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&Keyring::One.to_raw_public()), 42); - assert_eq!(balance(&Keyring::Two.to_raw_public()), 69); - }); - - Executor::new().call(&mut t, COMPACT_CODE, "execute_block", &block2().0).unwrap(); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&Keyring::One.to_raw_public()), 32); - assert_eq!(balance(&Keyring::Two.to_raw_public()), 79); - }); - } - - #[test] - fn full_wasm_block_import_works() { - let mut t = new_test_ext(); - - WasmExecutor.call(&mut t, COMPACT_CODE, "execute_block", &block1().0).unwrap(); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&Keyring::One.to_raw_public()), 42); - assert_eq!(balance(&Keyring::Two.to_raw_public()), 69); - }); - - WasmExecutor.call(&mut t, COMPACT_CODE, "execute_block", &block2().0).unwrap(); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&Keyring::One.to_raw_public()), 32); - assert_eq!(balance(&Keyring::Two.to_raw_public()), 79); - }); - } - - #[test] - fn panic_execution_gives_error() { - let one = Keyring::One.to_raw_public(); - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![68u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm"); - let r = execute_tx_on(WasmExecutor, &mut t, &foreign_code[..], tx(), Header::from_block_number(1)); - assert!(r.is_err()); - } - - #[test] - fn successful_execution_gives_ok() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm"); - let r = execute_tx_on(WasmExecutor, &mut t, &foreign_code[..], tx(), Header::from_block_number(1)); - assert!(r.is_ok()); - - runtime_io::with_externalities(&mut t, || { - assert_eq!(balance(&one), 42); - assert_eq!(balance(&two), 69); - }); - } -} diff --git a/polkadot/primitives/Cargo.toml b/polkadot/primitives/Cargo.toml index ec2433c9a7935..dc424468dc18b 100644 --- a/polkadot/primitives/Cargo.toml +++ b/polkadot/primitives/Cargo.toml @@ -9,6 +9,7 @@ serde_derive = { version = "1.0", optional = true } substrate-codec = { path = "../../substrate/codec", default_features = false } substrate-primitives = { path = "../../substrate/primitives", default_features = false } substrate-runtime-std = { path = "../../substrate/runtime-std", default_features = false } +substrate-runtime-primitives = { path = "../../substrate/runtime/primitives", default_features = false } [dev-dependencies] substrate-serializer = { path = "../../substrate/serializer" } @@ -20,6 +21,7 @@ std = [ "substrate-codec/std", "substrate-primitives/std", "substrate-runtime-std/std", + "substrate-runtime-primitives/std", "serde_derive", "serde/std", ] diff --git a/polkadot/primitives/src/block.rs b/polkadot/primitives/src/block.rs deleted file mode 100644 index e74dd19f4c59b..0000000000000 --- a/polkadot/primitives/src/block.rs +++ /dev/null @@ -1,375 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Block and header type definitions. - -#[cfg(feature = "std")] -use primitives::bytes; -use primitives::H256; -use rstd::vec::Vec; -use codec::{Input, Slicable}; -use transaction::{UncheckedTransaction, Function, InherentFunction}; - -pub use primitives::block::Id; - -/// Used to refer to a block number. -pub type Number = u64; - -/// Hash used to refer to a block hash. -pub type HeaderHash = H256; - -/// Hash used to refer to a transaction hash. -pub type TransactionHash = H256; - -/// Execution log (event) -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct Log(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); - -impl Slicable for Log { - fn decode(input: &mut I) -> Option { - Vec::::decode(input).map(Log) - } - - fn using_encoded R>(&self, f: F) -> R { - self.0.using_encoded(f) - } -} - - - -/// The digest of a block, useful for light-clients. -#[derive(Clone, Default, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct Digest { - /// All logs that have happened in the block. - pub logs: Vec, -} - -impl Slicable for Digest { - fn decode(input: &mut I) -> Option { - Vec::::decode(input).map(|logs| Digest { logs }) - } - - fn using_encoded R>(&self, f: F) -> R { - self.logs.using_encoded(f) - } -} - -/// Iterator over all inherent transactions. -pub struct InherentTransactions<'a> { - number: u64, - body: &'a Body, -} - -impl<'a> Iterator for InherentTransactions<'a> { - type Item = UncheckedTransaction; - - fn next(&mut self) -> Option { - if self.number == InherentFunction::count() { - return None - } - - self.number += 1; - - let function = match self.number { - 1 => Some(InherentFunction::TimestampSet(self.body.timestamp)), - _ => None, - }; - - function.map(UncheckedTransaction::inherent) - } -} - -/// Type alias for an iterator over all transactions in a block. -pub type AllTransactions<'a> = ::rstd::iter::Chain< - InherentTransactions<'a>, - ::rstd::iter::Cloned<::rstd::slice::Iter<'a, UncheckedTransaction>>, ->; - -/// The block body. Contains timestamp and transactions. -// TODO: add candidates update as well. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] -#[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct Body { - /// The timestamp of the block. - pub timestamp: u64, - /// The transactions in the block. - pub transactions: Vec, -} - -impl Body { - /// Get an iterator over all inherent transactions of the body. - pub fn inherent_transactions(&self) -> InherentTransactions { - InherentTransactions { - number: 0, - body: self, - } - } - - /// Get an iterator over all transactions in a block. - pub fn all_transactions(&self) -> AllTransactions { - self.inherent_transactions().chain(self.transactions.iter().cloned()) - } -} - - -/// A Polkadot relay chain block. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct Block { - /// The block header. - pub header: Header, - /// The block body. - pub body: Body, -} - -impl Block { - /// Get an iterator over all inherent transactions of the body. - pub fn inherent_transactions(&self) -> InherentTransactions { - self.body.inherent_transactions() - } - - /// Get an iterator over all transactions in a block. - pub fn all_transactions(&self) -> AllTransactions { - self.body.all_transactions() - } -} - -impl Slicable for Block { - fn decode(input: &mut I) -> Option { - let header = try_opt!(Slicable::decode(input)); - - let transactions_len: u32 = try_opt!(Slicable::decode(input)); - let regular_transactions_len = try_opt!(transactions_len.checked_sub(InherentFunction::count() as u32)); - - let timestamp_tx = try_opt!(UncheckedTransaction::decode(input)); - let timestamp = match timestamp_tx.transaction.function { - Function::Inherent(InherentFunction::TimestampSet(ref t)) if timestamp_tx.is_well_formed() => { t.clone() } - _ => return None, - }; - - let transactions: Option> = (0..regular_transactions_len) - .map(|_| UncheckedTransaction::decode(input)) - .filter(|tx| tx.as_ref().map_or(true, |tx| tx.is_well_formed())) - .collect(); - - let body = Body { - timestamp, - transactions: try_opt!(transactions), - }; - - Some(Block { header, body }) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - v.extend(self.header.encode()); - - // encode inherent transactions before non-inherent. - let transactions_len = self.body.transactions.len() as u64 + InherentFunction::count(); - (transactions_len as u32).using_encoded(|s| v.extend(s)); - - let timestamp_set_tx = UncheckedTransaction::inherent( - InherentFunction::TimestampSet(self.body.timestamp) - ); - - v.extend(timestamp_set_tx.encode()); - for non_inherent_transaction in &self.body.transactions { - v.extend(non_inherent_transaction.encode()); - } - - v - } -} - -/// A relay chain block header. -/// -/// https://github.com/w3f/polkadot-spec/blob/master/spec.md#header -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] -#[cfg_attr(feature = "std", serde(deny_unknown_fields))] -pub struct Header { - /// Block parent's hash. - pub parent_hash: HeaderHash, - /// Block number. - pub number: Number, - /// State root after this transition. - pub state_root: H256, - /// The root of the trie that represents this block's transactions, indexed by a 32-byte integer. - pub transaction_root: H256, - /// The digest of activity on the block. - pub digest: Digest, -} - -impl Header { - /// Create a new instance with default fields except `number`, which is given as an argument. - pub fn from_block_number(number: Number) -> Self { - Header { - parent_hash: Default::default(), - number, - state_root: Default::default(), - transaction_root: Default::default(), - digest: Default::default(), - } - } -} - -impl Slicable for Header { - fn decode(input: &mut I) -> Option { - Some(Header { - parent_hash: try_opt!(Slicable::decode(input)), - number: try_opt!(Slicable::decode(input)), - state_root: try_opt!(Slicable::decode(input)), - transaction_root: try_opt!(Slicable::decode(input)), - digest: try_opt!(Slicable::decode(input)), - }) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - self.parent_hash.using_encoded(|s| v.extend(s)); - self.number.using_encoded(|s| v.extend(s)); - self.state_root.using_encoded(|s| v.extend(s)); - self.transaction_root.using_encoded(|s| v.extend(s)); - self.digest.using_encoded(|s| v.extend(s)); - - v - } -} - -#[cfg(test)] -mod tests { - use super::*; - use codec::Slicable; - use substrate_serializer as ser; - - #[test] - fn test_header_serialization() { - let header = Header { - parent_hash: 5.into(), - number: 67, - state_root: 3.into(), - transaction_root: 6.into(), - digest: Digest { logs: vec![Log(vec![1])] }, - }; - - assert_eq!(ser::to_string_pretty(&header), r#"{ - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000005", - "number": 67, - "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000003", - "transactionRoot": "0x0000000000000000000000000000000000000000000000000000000000000006", - "digest": { - "logs": [ - "0x01" - ] - } -}"#); - - let v = header.encode(); - assert_eq!(Header::decode(&mut &v[..]).unwrap(), header); - } - - #[test] - fn block_encoding_round_trip() { - let mut block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 100_000_000, - transactions: Vec::new(), - } - }; - - let raw = block.encode(); - let decoded = Block::decode(&mut &raw[..]).unwrap(); - - assert_eq!(block, decoded); - - block.body.transactions.push(UncheckedTransaction { - transaction: ::transaction::Transaction { - function: Function::StakingStake, - signed: Default::default(), - nonce: 10101, - }, - signature: Default::default(), - }); - - let raw = block.encode(); - let decoded = Block::decode(&mut &raw[..]).unwrap(); - - assert_eq!(block, decoded); - } - - #[test] - fn block_encoding_substrate_round_trip() { - let mut block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 100_000_000, - transactions: Vec::new(), - } - }; - - block.body.transactions.push(UncheckedTransaction { - transaction: ::transaction::Transaction { - function: Function::StakingStake, - signed: Default::default(), - nonce: 10101, - }, - signature: Default::default(), - }); - - let raw = block.encode(); - let decoded_substrate = ::primitives::block::Block::decode(&mut &raw[..]).unwrap(); - let encoded_substrate = decoded_substrate.encode(); - let decoded = Block::decode(&mut &encoded_substrate[..]).unwrap(); - - assert_eq!(block, decoded); - } - - #[test] - fn decode_body_without_inherents_fails() { - let substrate_blank = ::primitives::block::Block { - header: ::primitives::block::Header::from_block_number(1), - transactions: Vec::new(), - }; - - let encoded_substrate = substrate_blank.encode(); - assert!(Block::decode(&mut &encoded_substrate[..]).is_none()); - } - - #[test] - fn inherent_transactions_iter_contains_all_inherent() { - let block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 10101, - transactions: Vec::new(), - } - }; - - let mut iter = block.inherent_transactions(); - - assert_eq!(InherentFunction::count(), 1); // following depends on this assertion. - assert_eq!(iter.next().unwrap(), UncheckedTransaction::inherent(InherentFunction::TimestampSet(10101))); - assert!(iter.next().is_none()); - } -} diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index fb02e3d121117..6e387b6915e6a 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -21,7 +21,6 @@ #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] - #[cfg(feature = "std")] #[macro_use] extern crate serde_derive; @@ -30,34 +29,26 @@ extern crate serde; extern crate substrate_runtime_std as rstd; extern crate substrate_primitives as primitives; +extern crate substrate_runtime_primitives as runtime_primitives; #[cfg(test)] extern crate substrate_serializer; extern crate substrate_codec as codec; -macro_rules! try_opt { - ($e: expr) => { - match $e { - Some(x) => x, - None => return None, - } - } -} - pub mod parachain; pub mod validator; -pub mod block; -pub mod transaction; - -pub use self::block::{Header, Body, Block, Log, Digest}; -pub use self::block::Number as BlockNumber; -pub use self::transaction::{Transaction, UncheckedTransaction, Function, InherentFunction, Proposal}; /// Virtual account ID that represents the idea of a dispatch/statement being signed by everybody /// (who matters). Essentially this means that a majority of validators have decided it is /// "correct". pub const EVERYBODY: AccountId = [255u8; 32]; +/// Something that identifies a block. +pub use primitives::block::Id as BlockId; + +/// An index to a block. +pub type BlockNumber = u64; + /// Alias to Ed25519 pubkey that identifies an account on the relay chain. This will almost /// certainly continue to be the same as the substrate's `AuthorityId`. pub type AccountId = primitives::AuthorityId; @@ -67,22 +58,19 @@ pub type AccountId = primitives::AuthorityId; pub type SessionKey = primitives::AuthorityId; /// Indentifier for a chain. -pub type ChainID = u64; +pub type ChainId = u64; /// Index of a transaction in the relay chain. -pub type TxOrder = u64; +pub type Index = u64; /// A hash of some data used by the relay chain. pub type Hash = primitives::H256; /// Alias to 512-bit hash when used in the context of a signature on the relay chain. -pub type Signature = primitives::hash::H512; +pub type Signature = runtime_primitives::traits::Ed25519Signature; /// A timestamp: seconds since the unix epoch. pub type Timestamp = u64; /// The balance of an account. pub type Balance = u64; - -/// The amount of bonding period left in an account. Measured in eras. -pub type Bondage = u64; diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index e94ba03d28590..1dde3b508d1c3 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -26,7 +26,7 @@ use ::Hash; /// Unique identifier of a parachain. #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct Id(u32); impl From for u32 { @@ -63,7 +63,7 @@ impl Slicable for Chain { match disc { 0 => Some(Chain::Relay), - 1 => Some(Chain::Parachain(try_opt!(Slicable::decode(input)))), + 1 => Some(Chain::Parachain(Slicable::decode(input)?)), _ => None, } } @@ -102,8 +102,8 @@ pub struct DutyRoster { impl Slicable for DutyRoster { fn decode(input: &mut I) -> Option { Some(DutyRoster { - validator_duty: try_opt!(Slicable::decode(input)), - guarantor_duty: try_opt!(Slicable::decode(input)), + validator_duty: Slicable::decode(input)?, + guarantor_duty: Slicable::decode(input)?, }) } @@ -123,7 +123,7 @@ impl Slicable for DutyRoster { /// Extrinsic data for a parachain. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub struct Extrinsic; @@ -132,7 +132,7 @@ pub struct Extrinsic; /// /// https://github.com/w3f/polkadot-spec/blob/master/spec.md#candidate-para-chain-block #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub struct Candidate { @@ -150,7 +150,7 @@ pub struct Candidate { /// Candidate receipt type. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub struct CandidateReceipt { @@ -184,12 +184,12 @@ impl Slicable for CandidateReceipt { fn decode(input: &mut I) -> Option { Some(CandidateReceipt { - parachain_index: try_opt!(Slicable::decode(input)), - collator: try_opt!(Slicable::decode(input)), - head_data: try_opt!(Slicable::decode(input).map(HeadData)), - balance_uploads: try_opt!(Slicable::decode(input)), - egress_queue_roots: try_opt!(Slicable::decode(input)), - fees: try_opt!(Slicable::decode(input)), + parachain_index: Slicable::decode(input)?, + collator: Slicable::decode(input)?, + head_data: Slicable::decode(input).map(HeadData)?, + balance_uploads: Slicable::decode(input)?, + egress_queue_roots: Slicable::decode(input)?, + fees: Slicable::decode(input)?, }) } } @@ -219,7 +219,7 @@ impl Ord for CandidateReceipt { /// Parachain ingress queue message. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct Message(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Consolidated ingress queue data. @@ -227,34 +227,34 @@ pub struct Message(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec /// This is just an ordered vector of other parachains' egress queues, /// obtained according to the routing rules. #[derive(Default, PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct ConsolidatedIngress(pub Vec<(Id, Vec)>); /// Parachain block data. /// /// contains everything required to validate para-block, may contain block and witness data #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct BlockData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Parachain header raw bytes wrapper type. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct Header(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Parachain head data included in the chain. #[derive(PartialEq, Eq, Clone, PartialOrd, Ord)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct HeadData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Parachain validation code. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct ValidationCode(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Activitiy bit field #[derive(PartialEq, Eq, Clone, Default)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct Activity(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); impl Slicable for Activity { @@ -344,7 +344,7 @@ mod tests { fn test_candidate() { assert_eq!(ser::to_string_pretty(&Candidate { parachain_index: 5.into(), - collator_signature: 10.into(), + collator_signature: primitives::hash::H512::from(10).into(), unprocessed_ingress: ConsolidatedIngress(vec![ (Id(1), vec![Message(vec![2])]), (Id(2), vec![Message(vec![2]), Message(vec![3])]), diff --git a/polkadot/primitives/src/transaction.rs b/polkadot/primitives/src/transaction.rs deleted file mode 100644 index f3637034b403d..0000000000000 --- a/polkadot/primitives/src/transaction.rs +++ /dev/null @@ -1,487 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Transaction type. - -use rstd::vec::Vec; -use codec::{Input, Slicable}; -use primitives::bft::MisbehaviorReport; -use ::Signature; - -#[cfg(feature = "std")] -use std::fmt; - -use block::Number as BlockNumber; - -#[derive(Clone, Copy, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[repr(u8)] -enum InternalFunctionId { - /// Set the system's code. - SystemSetCode = 0x00, - - /// Set the session length. - SessionSetLength = 0x10, - /// Force a new session. - SessionForceNewSession = 0x11, - - /// Set the number of sessions per era. - StakingSetSessionsPerEra = 0x20, - /// Set the minimum bonding duration for staking. - StakingSetBondingDuration = 0x21, - /// Set the validator count for staking. - StakingSetValidatorCount = 0x22, - /// Force a new staking era. - StakingForceNewEra = 0x23, - - /// Set the per-mille of validator approval required for governance changes. - GovernanceSetApprovalPpmRequired = 0x30, - -} - -impl InternalFunctionId { - /// Derive `Some` value from a `u8`, or `None` if it's invalid. - fn from_u8(value: u8) -> Option { - let functions = [ - InternalFunctionId::SystemSetCode, - InternalFunctionId::SessionSetLength, - InternalFunctionId::SessionForceNewSession, - InternalFunctionId::StakingSetSessionsPerEra, - InternalFunctionId::StakingSetBondingDuration, - InternalFunctionId::StakingSetValidatorCount, - InternalFunctionId::StakingForceNewEra, - InternalFunctionId::GovernanceSetApprovalPpmRequired, - ]; - functions.iter().map(|&f| f).find(|&f| value == f as u8) - } -} - -/// Internal functions that can be dispatched to. -#[derive(Clone, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub enum Proposal { - /// Set the system's code. - SystemSetCode(Vec), - /// Set the session length. - SessionSetLength(BlockNumber), - /// Force a new session. - SessionForceNewSession, - /// Set the number of sessions per era. - StakingSetSessionsPerEra(BlockNumber), - /// Set the minimum bonding duration for staking. - StakingSetBondingDuration(BlockNumber), - /// Set the validator count for staking. - StakingSetValidatorCount(u32), - /// Force a new staking era. - StakingForceNewEra, - /// Set the per-mille of validator approval required for governance changes. - GovernanceSetApprovalPpmRequired(u32), - -} - -impl Slicable for Proposal { - fn decode(input: &mut I) -> Option { - let id = InternalFunctionId::from_u8(input.read_byte()?)?; - let function = match id { - InternalFunctionId::SystemSetCode => - Proposal::SystemSetCode(try_opt!(Slicable::decode(input))), - InternalFunctionId::SessionSetLength => - Proposal::SessionSetLength(try_opt!(Slicable::decode(input))), - InternalFunctionId::SessionForceNewSession => Proposal::SessionForceNewSession, - InternalFunctionId::StakingSetSessionsPerEra => - Proposal::StakingSetSessionsPerEra(try_opt!(Slicable::decode(input))), - InternalFunctionId::StakingSetBondingDuration => - Proposal::StakingSetBondingDuration(try_opt!(Slicable::decode(input))), - InternalFunctionId::StakingSetValidatorCount => - Proposal::StakingSetValidatorCount(try_opt!(Slicable::decode(input))), - InternalFunctionId::StakingForceNewEra => Proposal::StakingForceNewEra, - InternalFunctionId::GovernanceSetApprovalPpmRequired => - Proposal::GovernanceSetApprovalPpmRequired(try_opt!(Slicable::decode(input))), - }; - - Some(function) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - match *self { - Proposal::SystemSetCode(ref data) => { - v.push(InternalFunctionId::SystemSetCode as u8); - data.using_encoded(|s| v.extend(s)); - } - Proposal::SessionSetLength(ref data) => { - v.push(InternalFunctionId::SessionSetLength as u8); - data.using_encoded(|s| v.extend(s)); - } - Proposal::SessionForceNewSession => { - v.push(InternalFunctionId::SessionForceNewSession as u8); - } - Proposal::StakingSetSessionsPerEra(ref data) => { - v.push(InternalFunctionId::StakingSetSessionsPerEra as u8); - data.using_encoded(|s| v.extend(s)); - } - Proposal::StakingSetBondingDuration(ref data) => { - v.push(InternalFunctionId::StakingSetBondingDuration as u8); - data.using_encoded(|s| v.extend(s)); - } - Proposal::StakingSetValidatorCount(ref data) => { - v.push(InternalFunctionId::StakingSetValidatorCount as u8); - data.using_encoded(|s| v.extend(s)); - } - Proposal::StakingForceNewEra => { - v.push(InternalFunctionId::StakingForceNewEra as u8); - } - Proposal::GovernanceSetApprovalPpmRequired(ref data) => { - v.push(InternalFunctionId::GovernanceSetApprovalPpmRequired as u8); - data.using_encoded(|s| v.extend(s)); - } - } - - v - } -} - -/// Public functions that can be dispatched to. -#[derive(Clone, Copy, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -#[repr(u8)] -enum FunctionId { - /// Set the timestamp. - TimestampSet = 0x00, - /// Set temporary session key as a validator. - SessionSetKey = 0x10, - /// Staking subsystem: begin staking. - StakingStake = 0x20, - /// Staking subsystem: stop staking. - StakingUnstake = 0x21, - /// Staking subsystem: transfer stake. - StakingTransfer = 0x22, - /// Report misbehavior. - StakingReportMisbehavior = 0x23, - /// Make a proposal for the governance system. - GovernancePropose = 0x30, - /// Approve a proposal for the governance system. - GovernanceApprove = 0x31, -} - -impl FunctionId { - /// Derive `Some` value from a `u8`, or `None` if it's invalid. - fn from_u8(value: u8) -> Option { - use self::*; - let functions = [ - FunctionId::StakingStake, - FunctionId::StakingUnstake, - FunctionId::StakingTransfer, - FunctionId::StakingReportMisbehavior, - FunctionId::SessionSetKey, - FunctionId::TimestampSet, - FunctionId::GovernancePropose, - FunctionId::GovernanceApprove, - ]; - functions.iter().map(|&f| f).find(|&f| value == f as u8) - } -} - -/// Inherent functions on the runtime. -/// These must be called each block by the `EVERYBODY` account. -#[derive(Clone, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub enum InherentFunction { - /// Set the timestamp. - TimestampSet(u64), -} - -impl InherentFunction { - /// Get the number of inherent functions. - pub fn count() -> u64 { - 1 - } - - /// Get the index. - pub fn index(&self) -> u64 { - match *self { - InherentFunction::TimestampSet(_) => 0, - } - } -} - -/// Functions on the runtime. -#[derive(Clone, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub enum Function { - /// An inherent function. - Inherent(InherentFunction), - /// Set temporary session key as a validator. - SessionSetKey(::SessionKey), - /// Staking subsystem: begin staking. - StakingStake, - /// Staking subsystem: stop staking. - StakingUnstake, - /// Staking subsystem: transfer stake. - StakingTransfer(::AccountId, u64), - /// Staking subsystem: report misbehavior of a validator. - ReportMisbehavior(MisbehaviorReport), - /// Make a proposal for the governance system. - GovernancePropose(Proposal), - /// Approve a proposal for the governance system. - GovernanceApprove(BlockNumber), -} - -impl Function { - /// The number of inherent functions. - pub fn inherent_functions() -> u64 { InherentFunction::count() } - - /// Whether this function is "inherent": that it must be part of every - /// block at the given index and no other. - /// - /// Transactions containing inherent functions should not be signed. - pub fn is_inherent(&self) -> bool { - match *self { - Function::Inherent(_) => true, - _ => false, - } - } - - /// If this function is inherent, returns the index it should occupy - /// in the block. Otherwise returns `None`. - pub fn inherent_index(&self) -> Option { - match *self { - Function::Inherent(ref inner) => Some(inner.index()), - _ => None, - } - } -} - -impl Slicable for Function { - fn decode(input: &mut I) -> Option { - let id = FunctionId::from_u8(input.read_byte()?)?; - Some(match id { - FunctionId::TimestampSet => - Function::Inherent(InherentFunction::TimestampSet(try_opt!(Slicable::decode(input)))), - FunctionId::SessionSetKey => - Function::SessionSetKey(try_opt!(Slicable::decode(input))), - FunctionId::StakingStake => Function::StakingStake, - FunctionId::StakingUnstake => Function::StakingUnstake, - FunctionId::StakingTransfer => { - let to = try_opt!(Slicable::decode(input)); - let amount = try_opt!(Slicable::decode(input)); - - Function::StakingTransfer(to, amount) - } - FunctionId::StakingReportMisbehavior => Function::ReportMisbehavior(MisbehaviorReport::decode(input)?), - FunctionId::GovernancePropose => - Function::GovernancePropose(try_opt!(Slicable::decode(input))), - FunctionId::GovernanceApprove => - Function::GovernanceApprove(try_opt!(Slicable::decode(input))), - }) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - match *self { - Function::Inherent(InherentFunction::TimestampSet(ref data)) => { - v.push(FunctionId::TimestampSet as u8); - data.using_encoded(|s| v.extend(s)); - } - Function::SessionSetKey(ref data) => { - v.push(FunctionId::SessionSetKey as u8); - data.using_encoded(|s| v.extend(s)); - } - Function::StakingStake => { - v.push(FunctionId::StakingStake as u8); - } - Function::StakingUnstake => { - v.push(FunctionId::StakingUnstake as u8); - } - Function::ReportMisbehavior(ref report) => { - v.push(FunctionId::StakingReportMisbehavior as u8); - report.using_encoded(|s| v.extend(s)); - } - Function::StakingTransfer(ref to, ref amount) => { - v.push(FunctionId::StakingTransfer as u8); - to.using_encoded(|s| v.extend(s)); - amount.using_encoded(|s| v.extend(s)); - } - Function::GovernancePropose(ref data) => { - v.push(FunctionId::GovernancePropose as u8); - data.using_encoded(|s| v.extend(s)); - } - Function::GovernanceApprove(ref data) => { - v.push(FunctionId::GovernanceApprove as u8); - data.using_encoded(|s| v.extend(s)); - } - } - - v - } - - fn using_encoded R>(&self, f: F) -> R { - f(self.encode().as_slice()) - } -} - -/// A vetted and verified transaction from the external world. -#[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] -pub struct Transaction { - /// Who signed it (note this is not a signature). - pub signed: super::AccountId, - /// The number of transactions have come before from the same signer. - pub nonce: super::TxOrder, - /// The function that should be called. - pub function: Function, -} - -impl Slicable for Transaction { - fn decode(input: &mut I) -> Option { - Some(Transaction { - signed: try_opt!(Slicable::decode(input)), - nonce: try_opt!(Slicable::decode(input)), - function: try_opt!(Slicable::decode(input)), - }) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - self.signed.using_encoded(|s| v.extend(s)); - self.nonce.using_encoded(|s| v.extend(s)); - self.function.using_encoded(|s| v.extend(s)); - - v - } -} - - - -/// A transactions right from the external world. Unchecked. -#[derive(Eq, Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct UncheckedTransaction { - /// The actual transaction information. - pub transaction: Transaction, - /// The signature; should be an Ed25519 signature applied to the serialised `transaction` field. - pub signature: Signature, -} - -impl UncheckedTransaction { - /// Whether the transaction is well-formed. In particular checks that - /// inherent transactions have the correct signed and signature fields. - /// - /// Does not check signatures on other transactions. - pub fn is_well_formed(&self) -> bool { - if self.transaction.function.is_inherent() { - self.transaction.signed == ::EVERYBODY && self.signature == Signature::zero() - } else { - true - } - } - - /// Whether this transaction invokes an inherent function. - pub fn is_inherent(&self) -> bool { - self.transaction.function.is_inherent() - } - - /// Create a new inherent-style transaction from the given function. - pub fn inherent(function: InherentFunction) -> Self { - UncheckedTransaction { - transaction: Transaction { - function: Function::Inherent(function), - nonce: 0, - signed: ::EVERYBODY - }, - signature: Signature::zero(), - } - } -} - -impl Slicable for UncheckedTransaction { - fn decode(input: &mut I) -> Option { - // This is a little more complicated than usual since the binary format must be compatible - // with substrate's generic `Vec` type. Basically this just means accepting that there - // will be a prefix of u32, which has the total number of bytes following (we don't need - // to use this). - let _length_do_not_remove_me_see_above: u32 = try_opt!(Slicable::decode(input)); - - Some(UncheckedTransaction { - transaction: try_opt!(Slicable::decode(input)), - signature: try_opt!(Slicable::decode(input)), - }) - } - - fn encode(&self) -> Vec { - let mut v = Vec::new(); - - // need to prefix with the total length as u32 to ensure it's binary comptible with - // Vec. we'll make room for it here, then overwrite once we know the length. - v.extend(&[0u8; 4]); - - self.transaction.signed.using_encoded(|s| v.extend(s)); - self.transaction.nonce.using_encoded(|s| v.extend(s)); - self.transaction.function.using_encoded(|s| v.extend(s)); - self.signature.using_encoded(|s| v.extend(s)); - - let length = (v.len() - 4) as u32; - length.using_encoded(|s| v[0..4].copy_from_slice(s)); - - v - } -} - - - -impl PartialEq for UncheckedTransaction { - fn eq(&self, other: &Self) -> bool { - self.signature.iter().eq(other.signature.iter()) && self.transaction == other.transaction - } -} - -#[cfg(feature = "std")] -impl fmt::Debug for UncheckedTransaction { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "UncheckedTransaction({:?})", self.transaction) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use primitives; - use ::codec::Slicable; - use primitives::hexdisplay::HexDisplay; - - #[test] - fn serialize_unchecked() { - let tx = UncheckedTransaction { - transaction: Transaction { - signed: [1; 32], - nonce: 999u64, - function: Function::Inherent(InherentFunction::TimestampSet(135135)), - }, - signature: primitives::hash::H512([0; 64]), - }; - // 71000000 - // 0101010101010101010101010101010101010101010101010101010101010101 - // e703000000000000 - // 00 - // df0f0200 - // 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - - let v = Slicable::encode(&tx); - println!("{}", HexDisplay::from(&v)); - assert_eq!(UncheckedTransaction::decode(&mut &v[..]).unwrap(), tx); - } -} diff --git a/polkadot/primitives/src/validator.rs b/polkadot/primitives/src/validator.rs index fa622fb629cf0..0bac607594c6a 100644 --- a/polkadot/primitives/src/validator.rs +++ b/polkadot/primitives/src/validator.rs @@ -23,22 +23,22 @@ use parachain; /// Parachain outgoing message. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct EgressPost(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Balance upload. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct BalanceUpload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// Balance download. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct BalanceDownload(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); /// The result of parachain validation. #[derive(PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] #[cfg_attr(feature = "std", serde(deny_unknown_fields))] pub struct ValidationResult { diff --git a/polkadot/runtime/Cargo.toml b/polkadot/runtime/Cargo.toml index ce4565025a21e..1e41284a4bf33 100644 --- a/polkadot/runtime/Cargo.toml +++ b/polkadot/runtime/Cargo.toml @@ -7,26 +7,46 @@ authors = ["Parity Technologies "] rustc-hex = "1.0" hex-literal = "0.1.0" log = { version = "0.3", optional = true } +serde = { version = "1.0", default_features = false } +serde_derive = { version = "1.0", optional = true } +safe-mix = { path = "../../safe-mix", default_features = false} substrate-codec = { path = "../../substrate/codec" } substrate-runtime-std = { path = "../../substrate/runtime-std" } substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-runtime-support = { path = "../../substrate/runtime-support" } substrate-primitives = { path = "../../substrate/primitives" } -substrate-misbehavior-check = { path = "../../substrate/misbehavior-check" } -polkadot-primitives = { path = "../primitives" } - -[dev-dependencies] substrate-keyring = { path = "../../substrate/keyring" } +substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } +substrate-runtime-council = { path = "../../substrate/runtime/council" } +substrate-runtime-democracy = { path = "../../substrate/runtime/democracy" } +substrate-runtime-executive = { path = "../../substrate/runtime/executive" } +substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +substrate-runtime-session = { path = "../../substrate/runtime/session" } +substrate-runtime-staking = { path = "../../substrate/runtime/staking" } +substrate-runtime-system = { path = "../../substrate/runtime/system" } +substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } +polkadot-primitives = { path = "../primitives" } [features] default = ["std"] std = [ "substrate-codec/std", + "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", "substrate-runtime-support/std", - "substrate-primitives/std", - "substrate-misbehavior-check/std", + "substrate-runtime-consensus/std", + "substrate-runtime-council/std", + "substrate-runtime-democracy/std", + "substrate-runtime-executive/std", + "substrate-runtime-primitives/std", + "substrate-runtime-session/std", + "substrate-runtime-staking/std", + "substrate-runtime-system/std", + "substrate-runtime-timestamp/std", "polkadot-primitives/std", - "log" + "serde_derive", + "serde/std", + "log", + "safe-mix/std" ] diff --git a/polkadot/runtime/src/api.rs b/polkadot/runtime/src/api.rs deleted file mode 100644 index 7ce51381e9d78..0000000000000 --- a/polkadot/runtime/src/api.rs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use runtime::{system, parachains, consensus, session}; - -impl_stubs!( - execute_block => |block| system::internal::execute_block(block), - execute_transaction => |(header, utx)| system::internal::execute_transaction(utx, header), - finalise_block => |header| system::internal::finalise_block(header), - validator_count => |()| session::validator_count(), - validators => |()| session::validators(), - authorities => |()| consensus::authorities(), - duty_roster => |()| parachains::calculate_duty_roster(), - timestamp => |()| ::runtime::timestamp::get(), - nonce => |account_id| system::nonce(account_id) -); diff --git a/polkadot/runtime/src/environment.rs b/polkadot/runtime/src/environment.rs deleted file mode 100644 index b7fef7cdd87fd..0000000000000 --- a/polkadot/runtime/src/environment.rs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Environment API: Allows certain information to be accessed throughout the runtime. - -use rstd::boxed::Box; -use rstd::cell::RefCell; -use rstd::rc::Rc; - -use polkadot_primitives::{BlockNumber, Digest, Hash}; - -#[derive(Default)] -/// The information that can be accessed globally. -pub struct Environment { - /// The current block number. - pub block_number: BlockNumber, - /// The current block's parent hash. - pub parent_hash: Hash, - /// The current block digest. - pub digest: Digest, -} - -/// Do something with the environment and return its value. Keep the function short. -pub fn with_env T>(f: F) -> T { - let e = env(); - let mut eb = e.borrow_mut(); - f(&mut *eb) -} - -#[cfg(target_arch = "wasm32")] -fn env() -> Rc> { - // Initialize it to a null value - static mut SINGLETON: *const Rc> = 0 as *const Rc>; - - unsafe { - if SINGLETON == 0 as *const Rc> { - // Make it - let singleton: Rc> = Rc::new(RefCell::new(Default::default())); - - // Put it in the heap so it can outlive this call - SINGLETON = Box::into_raw(Box::new(singleton)) as *const _; - } - - // Now we give out a copy of the data that is safe to use concurrently. - (*SINGLETON).clone() - } -} - -#[cfg(not(target_arch = "wasm32"))] -fn env() -> Rc> { - // Initialize it to a null value - thread_local!{ - static SINGLETON: RefCell<*const Rc>> = RefCell::new(0 as *const Rc>); - } - - SINGLETON.with(|s| unsafe { - if *s.borrow() == 0 as *const Rc> { - // Make it - let singleton: Rc> = Rc::new(RefCell::new(Default::default())); - - // Put it in the heap so it can outlive this call - *s.borrow_mut() = Box::into_raw(Box::new(singleton)) as *const _; - } - - // Now we give out a copy of the data that is safe to use concurrently. - (**s.borrow()).clone() - }) -} diff --git a/polkadot/runtime/src/genesismap.rs b/polkadot/runtime/src/genesismap.rs deleted file mode 100644 index d2b370fe4627b..0000000000000 --- a/polkadot/runtime/src/genesismap.rs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Tool for creating the genesis block. - -use codec::{KeyedVec, Joiner}; -use std::collections::HashMap; -use runtime_io::twox_128; -use runtime_support::Hashable; -use primitives::Block; -use polkadot_primitives::{Balance, BlockNumber, AccountId}; - -/// Configuration of a general Polkadot genesis block. -pub struct GenesisConfig { - pub validators: Vec, - pub authorities: Vec, - pub balances: Vec<(AccountId, Balance)>, - pub block_time: u64, - pub session_length: BlockNumber, - pub sessions_per_era: BlockNumber, - pub bonding_duration: BlockNumber, - pub approval_ratio: u32, -} - -impl GenesisConfig { - pub fn new_simple(authorities_validators: Vec, balance: Balance) -> Self { - GenesisConfig { - validators: authorities_validators.clone(), - authorities: authorities_validators.clone(), - balances: authorities_validators.iter().map(|v| (v.clone(), balance)).collect(), - block_time: 5, // 5 second block time. - session_length: 720, // that's 1 hour per session. - sessions_per_era: 24, // 24 hours per era. - bonding_duration: 90, // 90 days per bond. - approval_ratio: 667, // 66.7% approvals required for legislation. - } - } - - pub fn genesis_map(&self) -> HashMap, Vec> { - let wasm_runtime = include_bytes!("../wasm/genesis.wasm").to_vec(); - vec![ - (&b"gov:apr"[..], vec![].and(&self.approval_ratio)), - (&b"ses:len"[..], vec![].and(&self.session_length)), - (&b"ses:val:len"[..], vec![].and(&(self.validators.len() as u32))), - (&b"sta:wil:len"[..], vec![].and(&0u32)), - (&b"sta:spe"[..], vec![].and(&self.sessions_per_era)), - (&b"sta:vac"[..], vec![].and(&(self.validators.len() as u32))), - (&b"sta:era"[..], vec![].and(&0u64)), - ].into_iter() - .map(|(k, v)| (k.into(), v)) - .chain(self.validators.iter() - .enumerate() - .map(|(i, account)| ((i as u32).to_keyed_vec(b"ses:val:"), vec![].and(account))) - ).chain(self.authorities.iter() - .enumerate() - .map(|(i, account)| ((i as u32).to_keyed_vec(b":auth:"), vec![].and(account))) - ).chain(self.balances.iter() - .map(|&(account, balance)| (account.to_keyed_vec(b"sta:bal:"), vec![].and(&balance))) - ) - .map(|(k, v)| (twox_128(&k[..])[..].to_vec(), v.to_vec())) - .chain(vec![ - (b":code"[..].into(), wasm_runtime), - (b":auth:len"[..].into(), vec![].and(&(self.authorities.len() as u32))), - ].into_iter()) - .chain(self.authorities.iter() - .enumerate() - .map(|(i, account)| ((i as u32).to_keyed_vec(b":auth:"), vec![].and(account))) - ) - .collect() - } -} - -pub fn additional_storage_with_genesis(genesis_block: &Block) -> HashMap, Vec> { - use codec::Slicable; - map![ - twox_128(&0u64.to_keyed_vec(b"sys:old:")).to_vec() => genesis_block.header.blake2_256().encode() - ] -} diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index caf8cb47c1e3b..59fb504563b20 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -1,97 +1,136 @@ // Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. +// This file is part of Substrate Demo. -// Polkadot is free software: you can redistribute it and/or modify +// Substrate Demo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Polkadot is distributed in the hope that it will be useful, +// Substrate Demo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// along with Substrate Demo. If not, see . -//! The Polkadot runtime. This can be compiled with #[no_std], ready for Wasm. +//! The Substrate Demo runtime. This can be compiled with ``#[no_std]`, ready for Wasm. #![cfg_attr(not(feature = "std"), no_std)] -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_support as runtime_support; -extern crate substrate_codec as codec; -extern crate substrate_misbehavior_check as misbehavior_check; +#[macro_use] extern crate substrate_runtime_io as runtime_io; +#[macro_use] extern crate substrate_runtime_support as runtime_support; +#[macro_use] extern crate substrate_runtime_primitives as runtime_primitives; +extern crate substrate_runtime_consensus as consensus; +extern crate substrate_runtime_council as council; +extern crate substrate_runtime_democracy as democracy; +extern crate substrate_runtime_executive as executive; +extern crate substrate_runtime_session as session; +extern crate substrate_runtime_staking as staking; +extern crate substrate_runtime_system as system; +extern crate substrate_runtime_timestamp as timestamp; extern crate polkadot_primitives; -#[cfg(all(feature = "std", test))] -extern crate substrate_keyring as keyring; +use runtime_io::BlakeTwo256; +use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, SessionKey, Signature}; +use runtime_primitives::generic; +use runtime_primitives::traits::{Identity, HasPublicAux}; +//#[cfg(feature = "std")] pub use runtime_primitives::BuildExternalities; -#[cfg(feature = "std")] -extern crate rustc_hex; +pub struct Concrete; -#[cfg_attr(any(test, feature = "std"), macro_use)] -extern crate substrate_primitives as primitives; - -#[macro_use] -extern crate substrate_runtime_io as runtime_io; - -#[cfg(test)] -#[macro_use] -extern crate hex_literal; +impl HasPublicAux for Concrete { + type PublicAux = AccountId; +} -pub mod api; -pub mod environment; -pub mod runtime; +impl timestamp::Trait for Concrete { + type Value = u64; +} +pub type Timestamp = timestamp::Module; -#[cfg(feature = "std")] -pub mod genesismap; +impl consensus::Trait for Concrete { + type SessionKey = SessionKey; +} +pub type Consensus = consensus::Module; + +impl system::Trait for Concrete { + type Index = Index; + type BlockNumber = BlockNumber; + type Hash = Hash; + type Hashing = BlakeTwo256; + type Digest = generic::Digest>; + type AccountId = AccountId; + type Header = generic::Header>; +} +pub type System = system::Module; -/// Type definitions and helpers for transactions. -pub mod transaction { - use rstd::ops; - use polkadot_primitives::Signature; - pub use polkadot_primitives::{Transaction, Function, UncheckedTransaction}; +impl session::Trait for Concrete { + type PublicAux = ::PublicAux; + type ConvertAccountIdToSessionKey = Identity; +} +pub type Session = session::Module; - /// A type-safe indicator that a transaction has been checked. - #[derive(PartialEq, Eq, Clone)] - #[cfg_attr(feature = "std", derive(Debug))] - pub struct CheckedTransaction(UncheckedTransaction); +impl staking::Trait for Concrete { + type Balance = Balance; + type DetermineContractAddress = BlakeTwo256; +} +pub type Staking = staking::Module; - impl CheckedTransaction { - /// Get a reference to the checked signature. - pub fn signature(&self) -> &Signature { - &self.0.signature - } +impl democracy::Trait for Concrete { + type Proposal = PrivCall; +} +pub type Democracy = democracy::Module; + +impl council::Trait for Concrete {} +pub type Council = council::Module; +pub type CouncilVoting = council::voting::Module; + +impl_outer_dispatch! { + pub enum Call where aux: ::PublicAux { + Session = 1, + Staking = 2, + Timestamp = 3, + Democracy = 5, + Council = 6, + CouncilVoting = 7, } - impl ops::Deref for CheckedTransaction { - type Target = Transaction; - - fn deref(&self) -> &Transaction { - &self.0.transaction - } + pub enum PrivCall { + Consensus = 0, + Session = 1, + Staking = 2, + Democracy = 5, + Council = 6, + CouncilVoting = 7, } +} - /// Check the validity of a transaction: whether it can appear at the given index - /// and whether it is correctly authenticated. - pub fn check(tx: UncheckedTransaction, index: u64) -> Result { - match tx.transaction.function.inherent_index() { - Some(correct_index) => { - if index != correct_index || !tx.is_well_formed() { return Err(tx) } - return Ok(CheckedTransaction(tx)); - } - None => { - // non-inherent functions must appear after inherent. - if index < Function::inherent_functions() { return Err(tx) } - } - } - - let msg = ::codec::Slicable::encode(&tx.transaction); - if ::runtime_io::ed25519_verify(&tx.signature.0, &msg, &tx.transaction.signed) { - Ok(CheckedTransaction(tx)) - } else { - Err(tx) - } +pub type Header = generic::Header>; +pub type Block = generic::Block, AccountId, Index, Call, Signature>; +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +pub type Extrinsic = generic::Extrinsic; +pub type Executive = executive::Executive; + +impl_outer_config! { + pub struct GenesisConfig for Concrete { + ConsensusConfig => consensus, + SystemConfig => system, + SessionConfig => session, + StakingConfig => staking, + DemocracyConfig => democracy, + CouncilConfig => council, } } + +pub mod api { + impl_stubs!( + authorities => |()| super::Consensus::authorities(), + initialise_block => |header| super::Executive::initialise_block(&header), + apply_extrinsic => |extrinsic| super::Executive::apply_extrinsic(extrinsic), + execute_block => |block| super::Executive::execute_block(block), + finalise_block => |()| super::Executive::finalise_block(), + validator_count => |()| super::Session::validator_count(), + validators => |()| super::Session::validators() + ); +} diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs new file mode 100644 index 0000000000000..a74152395fbbf --- /dev/null +++ b/polkadot/runtime/src/parachains.rs @@ -0,0 +1,207 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Main parachains logic. For now this is just the determination of which validators do what. + +use {runtime_io, runtime_primitives, polkadot_primitives}; +use rstd::marker::PhantomData; +use codec::{Slicable, Joiner}; +use runtime_support::{StorageValue, Hashable}; +use runtime_primitives::traits::Executable; +use polkadot_primitives::parachain::{Id, Chain, DutyRoster}; +use {system, session}; + +pub trait Trait: system::Trait + session::Trait {} + +decl_module! { + pub struct Module; +} + +decl_storage! { + pub trait Store for Module; + // The number of parachains registered at present. + pub Count get(count): b"para:count" => default u32; +} + +impl Module { + /// Calculate the current block's duty roster. + pub fn calculate_duty_roster() -> DutyRoster { + let parachain_count = Self::count(); + let validator_count = >::validator_count(); + let validators_per_parachain = (validator_count - 1) / parachain_count; + + let mut roles_val = (0..validator_count).map(|i| match i { + i if i < parachain_count * validators_per_parachain => + Chain::Parachain(Id::from(i / validators_per_parachain as u32)), + _ => Chain::Relay, + }).collect::>(); + let mut roles_gua = roles_val.clone(); + + let h = >::random_seed(); + let mut seed = Vec::::new().and(&h).and(b"validator_role_pairs").blake2_256(); + + // shuffle + for i in 0..(validator_count - 1) { + // 8 bytes of entropy used per cycle, 32 bytes entropy per hash + let offset = (i * 8 % 32) as usize; + + // number of roles remaining to select from. + let remaining = (validator_count - i) as usize; + + // 4 * 2 32-bit ints per 256-bit seed. + let val_index = u32::decode(&mut &seed[offset..offset + 4]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining; + let gua_index = u32::decode(&mut &seed[offset + 4..offset + 8]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining; + + if offset == 24 { + // into the last 8 bytes - rehash to gather new entropy + seed = seed.blake2_256(); + } + + // exchange last item with randomly chosen first. + roles_val.swap(remaining - 1, val_index); + roles_gua.swap(remaining - 1, gua_index); + } + + DutyRoster { + validator_duty: roles_val, + guarantor_duty: roles_gua, + } + } +} + +impl Executable for Module { + fn execute() { + } +} + +#[cfg(any(feature = "std", test))] +pub struct GenesisConfig { + pub count: u32, + pub phantom: PhantomData, +} + +#[cfg(any(feature = "std", test))] +impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { + count: 0, + phantom: PhantomData, + } + } +} + +#[cfg(any(feature = "std", test))] +impl runtime_primitives::BuildExternalities for GenesisConfig +{ + fn build_externalities(self) -> runtime_io::TestExternalities { + use runtime_io::twox_128; + use codec::Slicable; + map![ + twox_128(>::key()).to_vec() => self.count.encode() + ] + } +} + +#[cfg(test)] +mod tests { + use super::*; + use runtime_io::with_externalities; + use substrate_primitives::H256; + use runtime_primitives::BuildExternalities; + use runtime_primitives::traits::{HasPublicAux, Identity}; + use runtime_primitives::testing::{Digest, Header}; + use consensus; + + pub struct Test; + impl HasPublicAux for Test { + type PublicAux = u64; + } + impl consensus::Trait for Test { + type PublicAux = ::PublicAux; + type SessionKey = u64; + } + impl system::Trait for Test { + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = runtime_io::BlakeTwo256; + type Digest = Digest; + type AccountId = u64; + type Header = Header; + } + impl session::Trait for Test { + type ConvertAccountIdToSessionKey = Identity; + } + impl Trait for Test {} + + type System = system::Module; + type Parachains = Module; + + fn new_test_ext() -> runtime_io::TestExternalities { + let mut t = system::GenesisConfig::::default().build_externalities(); + t.extend(consensus::GenesisConfig::{ + code: vec![], + authorities: vec![1, 2, 3], + }.build_externalities()); + t.extend(session::GenesisConfig::{ + session_length: 1000, + validators: vec![1, 2, 3, 4, 5, 6, 7, 8], + }.build_externalities()); + t.extend(GenesisConfig::{ + count: 2, + phantom: PhantomData, + }.build_externalities()); + t + } + + #[test] + fn simple_setup_should_work() { + with_externalities(&mut new_test_ext(), || { + assert_eq!(Parachains::count(), 2); + }); + } + + #[test] + fn should_work() { + with_externalities(&mut new_test_ext(), || { + let check_roster = |duty_roster: &DutyRoster| { + assert_eq!(duty_roster.validator_duty.len(), 8); + assert_eq!(duty_roster.guarantor_duty.len(), 8); + for i in (0..2).map(Id::from) { + assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3); + assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3); + } + assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); + assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); + }; + + System::set_random_seed([0u8; 32].into()); + let duty_roster_0 = Parachains::calculate_duty_roster(); + check_roster(&duty_roster_0); + + System::set_random_seed([1u8; 32].into()); + let duty_roster_1 = Parachains::calculate_duty_roster(); + check_roster(&duty_roster_1); + assert!(duty_roster_0 != duty_roster_1); + + System::set_random_seed([2u8; 32].into()); + let duty_roster_2 = Parachains::calculate_duty_roster(); + check_roster(&duty_roster_2); + assert!(duty_roster_0 != duty_roster_2); + assert!(duty_roster_1 != duty_roster_2); + }); + } +} diff --git a/polkadot/runtime/src/runtime/consensus.rs b/polkadot/runtime/src/runtime/consensus.rs deleted file mode 100644 index 7841f1d47d5bc..0000000000000 --- a/polkadot/runtime/src/runtime/consensus.rs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Conensus module for runtime; manages the authority set ready for the native code. - -use rstd::prelude::*; -use runtime_support::storage::unhashed::StorageVec; -use polkadot_primitives::SessionKey; - -struct AuthorityStorageVec {} -impl StorageVec for AuthorityStorageVec { - type Item = SessionKey; - const PREFIX: &'static [u8] = b":auth:"; -} - -/// Get the current set of authorities. These are the session keys. -pub fn authorities() -> Vec { - AuthorityStorageVec::items() -} - -pub mod internal { - use super::*; - - /// Set the current set of authorities' session keys. - /// - /// Called by `next_session` only. - pub fn set_authorities<'a, I: IntoIterator>(authorities: I) { - AuthorityStorageVec::set_items(authorities); - } - - /// Set a single authority by index. - pub fn set_authority(index: u32, key: &SessionKey) { - AuthorityStorageVec::set_item(index, key); - } -} diff --git a/polkadot/runtime/src/runtime/governance.rs b/polkadot/runtime/src/runtime/governance.rs deleted file mode 100644 index 80620d578f857..0000000000000 --- a/polkadot/runtime/src/runtime/governance.rs +++ /dev/null @@ -1,371 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Governance system: Handles administration and dispatch of sensitive operations including -//! setting new code, minting new tokens and changing parameters. -//! -//! For now this is limited to a simple qualified majority vote (whose parameter is retrieved from -//! storage) between validators. A single vote may be proposed per era, and at most one approval -//! vote may be cast by each validator. The tally is maintained through a simple tag in storage for -//! each validator that has approved. -//! -//! At the end of the era, all validators approvals are tallied and if there are sufficient to pass -//! the proposal then it is enacted. All items in storage concerning the proposal are reset. - -use rstd::prelude::*; -use codec::KeyedVec; -use runtime_support::storage; -use polkadot_primitives::{Proposal, AccountId, Hash, BlockNumber}; -use runtime::{staking, system, session}; - -const APPROVALS_REQUIRED: &[u8] = b"gov:apr"; -const CURRENT_PROPOSAL: &[u8] = b"gov:pro"; -const APPROVAL_OF: &[u8] = b"gov:app:"; - -/// The proportion of validators required for a propsal to be approved measured as the number out -/// of 1000. -pub fn approval_ppm_required() -> u32 { - storage::get_or(APPROVALS_REQUIRED, 1000) -} - -/// The number of concrete validator approvals required for a proposal to pass. -pub fn approvals_required() -> u32 { - approval_ppm_required() * session::validator_count() / 1000 -} - -pub mod public { - use super::*; - - /// Propose a sensitive action to be taken. Any action that is enactable by `Proposal` is valid. - /// Proposal is by the `transactor` and will automatically count as an approval. Transactor must - /// be a current validator. It is illegal to propose when there is already a proposal in effect. - pub fn propose(validator: &AccountId, proposal: &Proposal) { - if storage::exists(CURRENT_PROPOSAL) { - panic!("there may only be one proposal per era."); - } - storage::put(CURRENT_PROPOSAL, proposal); - approve(validator, staking::current_era()); - } - - /// Approve the current era's proposal. Transactor must be a validator. This may not be done more - /// than once for any validator in an era. - pub fn approve(validator: &AccountId, era_index: BlockNumber) { - if era_index != staking::current_era() { - panic!("approval vote applied on non-current era.") - } - if !storage::exists(CURRENT_PROPOSAL) { - panic!("there must be a proposal in order to approve."); - } - if session::validators().into_iter().position(|v| &v == validator).is_none() { - panic!("transactor must be a validator to approve."); - } - let key = validator.to_keyed_vec(APPROVAL_OF); - if storage::exists(&key) { - panic!("transactor may not approve a proposal twice in one era."); - } - storage::put(&key, &true); - } -} - -pub mod privileged { - use super::*; - - /// Set the proportion of validators that must approve for a proposal to be enacted at the end of - /// its era. The value, `ppm`, is measured as a fraction of 1000 rounded down to the nearest whole - /// validator. `1000` would require the approval of all validators; `667` would require two-thirds - /// (or there abouts) of validators. - pub fn set_approval_ppm_required(ppm: u32) { - storage::put(APPROVALS_REQUIRED, &ppm); - } -} - -pub mod internal { - use super::*; - use polkadot_primitives::Proposal; - - /// Current era is ending; we should finish up any proposals. - pub fn end_of_an_era() { - // tally up votes for the current proposal, if any. enact if there are sufficient approvals. - if let Some(proposal) = storage::take::(CURRENT_PROPOSAL) { - let approvals_required = approvals_required(); - let approved = session::validators().into_iter() - .filter_map(|v| storage::take::(&v.to_keyed_vec(APPROVAL_OF))) - .take(approvals_required as usize) - .count() as u32; - if approved == approvals_required { - enact_proposal(proposal); - } - } - } - - fn enact_proposal(proposal: Proposal) { - match proposal { - Proposal::SystemSetCode(code) => { - system::privileged::set_code(&code); - } - Proposal::SessionSetLength(value) => { - session::privileged::set_length(value); - } - Proposal::SessionForceNewSession => { - session::privileged::force_new_session(); - } - Proposal::StakingSetSessionsPerEra(value) => { - staking::privileged::set_sessions_per_era(value); - } - Proposal::StakingSetBondingDuration(value) => { - staking::privileged::set_bonding_duration(value); - } - Proposal::StakingSetValidatorCount(value) => { - staking::privileged::set_validator_count(value); - } - Proposal::StakingForceNewEra => { - staking::privileged::force_new_era() - } - Proposal::GovernanceSetApprovalPpmRequired(value) => { - self::privileged::set_approval_ppm_required(value); - } - - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{KeyedVec, Joiner}; - use keyring::Keyring; - use environment::with_env; - use polkadot_primitives::{AccountId, Proposal}; - use runtime::{staking, session}; - - fn new_test_ext() -> TestExternalities { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - - map![ - twox_128(APPROVALS_REQUIRED).to_vec() => vec![].and(&667u32), - twox_128(b"ses:len").to_vec() => vec![].and(&1u64), - twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(), - twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(), - twox_128(b"sta:spe").to_vec() => vec![].and(&1u64), - twox_128(b"sta:vac").to_vec() => vec![].and(&3u64), - twox_128(b"sta:era").to_vec() => vec![].and(&1u64) - ] - } - - #[test] - fn majority_voting_should_work() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Approve it. Era length changes. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::approve(&two, 1); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 2); - }); - } - - #[test] - fn majority_voting_should_work_after_unsuccessful_previous() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Fail it. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - - // Block 2: Make proposal. Approve it. It should change era length. - system::testing::set_block_number(2); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::approve(&two, 2); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 2); - }); - } - - #[test] - fn minority_voting_should_not_succeed() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } - - #[test] - #[should_panic] - fn old_voting_should_be_illegal() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::approve(&two, 0); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } - - #[test] - #[should_panic] - fn double_voting_should_be_illegal() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::approve(&two, 1); - public::approve(&two, 1); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } - - #[test] - #[should_panic] - fn over_proposing_should_be_illegal() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::propose(&two, &Proposal::StakingSetSessionsPerEra(2)); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } - - #[test] - #[should_panic] - fn approving_without_proposal_should_be_illegal() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::approve(&two, 1); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } - - #[test] - #[should_panic] - fn non_validator_approving_should_be_illegal() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let four = [4u8; 32]; - let mut t = new_test_ext(); - - with_externalities(&mut t, || { - assert_eq!(staking::era_length(), 1u64); - assert_eq!(staking::current_era(), 1u64); - assert_eq!(session::validator_count(), 3u32); - assert_eq!(session::validators(), vec![one.clone(), two.clone(), three.clone()]); - assert!(!session::validators().into_iter().position(|v| &v == &one).is_none()); - - // Block 1: Make proposal. Will have only 1 vote. No change. - system::testing::set_block_number(1); - public::propose(&one, &Proposal::StakingSetSessionsPerEra(2)); - public::approve(&four, 1); - staking::internal::check_new_era(); - assert_eq!(staking::era_length(), 1); - }); - } -} diff --git a/polkadot/runtime/src/runtime/mod.rs b/polkadot/runtime/src/runtime/mod.rs deleted file mode 100644 index 6a54fa7310dde..0000000000000 --- a/polkadot/runtime/src/runtime/mod.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! The Polkadot runtime. - -#[allow(unused)] -pub mod system; -#[allow(unused)] -pub mod consensus; -#[allow(unused)] -pub mod staking; -#[allow(unused)] -pub mod timestamp; -#[allow(unused)] -pub mod session; -#[allow(unused)] -pub mod governance; -#[allow(unused)] -pub mod parachains; - -// TODO: polkadao diff --git a/polkadot/runtime/src/runtime/parachains.rs b/polkadot/runtime/src/runtime/parachains.rs deleted file mode 100644 index 1cd4151cf9afc..0000000000000 --- a/polkadot/runtime/src/runtime/parachains.rs +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Main parachains logic. For now this is just the determination of which validators do what. - -use rstd::prelude::*; -use codec::{Slicable, Joiner}; -use runtime_support::{Hashable, storage}; -use environment::with_env; -use runtime::session; -use polkadot_primitives::parachain::{Id, Chain, DutyRoster}; - -const PARACHAIN_COUNT: &[u8] = b"par:cou"; - -/// Get the number of parachains registered at present. -pub fn parachain_count() -> u32 { - storage::get_or(PARACHAIN_COUNT, 0) -} - -/// Calculate the current block's duty roster. -pub fn calculate_duty_roster() -> DutyRoster { - let parachain_count = parachain_count(); - let validator_count = session::validator_count() as u32; - let validators_per_parachain = (validator_count - 1) / parachain_count; - - let mut roles_val = (0..validator_count).map(|i| match i { - i if i < parachain_count * validators_per_parachain => - Chain::Parachain(Id::from(i / validators_per_parachain as u32)), - _ => Chain::Relay, - }).collect::>(); - let mut roles_gua = roles_val.clone(); - - let h = with_env(|e| e.parent_hash.clone()); - let mut seed = Vec::::new().and(&h).and(b"validator_role_pairs").blake2_256(); - - // shuffle - for i in 0..(validator_count - 1) { - // 8 bytes of entropy used per cycle, 32 bytes entropy per hash - let offset = (i * 8 % 32) as usize; - - // number of roles remaining to select from. - let remaining = (validator_count - i) as usize; - - // 4 * 2 32-bit ints per 256-bit seed. - let val_index = u32::decode(&mut &seed[offset..offset + 4]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining; - let gua_index = u32::decode(&mut &seed[offset + 4..offset + 8]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining; - - if offset == 24 { - // into the last 8 bytes - rehash to gather new entropy - seed = seed.blake2_256(); - } - - // exchange last item with randomly chosen first. - roles_val.swap(remaining - 1, val_index); - roles_gua.swap(remaining - 1, gua_index); - } - - DutyRoster { - validator_duty: roles_val, - guarantor_duty: roles_gua, - } -} - -#[cfg(test)] -mod tests { - use super::*; - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{KeyedVec, Joiner}; - use keyring::Keyring; - use runtime::{consensus, session}; - - fn simple_setup() -> TestExternalities { - map![ - twox_128(b"ses:val:len").to_vec() => vec![].and(&8u32), - twox_128(b"par:cou").to_vec() => vec![].and(&2u32) - ] - } - - #[test] - fn should_work() { - let mut t = simple_setup(); - with_externalities(&mut t, || { - let check_roster = |duty_roster: &DutyRoster| { - assert_eq!(duty_roster.validator_duty.len(), 8); - assert_eq!(duty_roster.guarantor_duty.len(), 8); - for i in (0..2).map(Id::from) { - assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3); - assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3); - } - assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); - assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); - }; - - with_env(|e| e.parent_hash = [0u8; 32].into()); - let duty_roster_0 = calculate_duty_roster(); - check_roster(&duty_roster_0); - - with_env(|e| e.parent_hash = [1u8; 32].into()); - let duty_roster_1 = calculate_duty_roster(); - check_roster(&duty_roster_1); - assert!(duty_roster_0 != duty_roster_1); - - with_env(|e| e.parent_hash = [2u8; 32].into()); - let duty_roster_2 = calculate_duty_roster(); - check_roster(&duty_roster_2); - assert!(duty_roster_0 != duty_roster_2); - assert!(duty_roster_1 != duty_roster_2); - }); - } -} diff --git a/polkadot/runtime/src/runtime/session.rs b/polkadot/runtime/src/runtime/session.rs deleted file mode 100644 index 4eb5bf50553b4..0000000000000 --- a/polkadot/runtime/src/runtime/session.rs +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Session manager: is told the validators and allows them to manage their session keys for the -//! consensus module. - -use rstd::prelude::*; -use codec::KeyedVec; -use runtime_support::{storage, StorageVec}; -use polkadot_primitives::{AccountId, SessionKey, BlockNumber}; -use runtime::{system, staking, consensus}; - -const SESSION_LENGTH: &[u8] = b"ses:len"; -const CURRENT_INDEX: &[u8] = b"ses:ind"; -const CURRENT_SESSION_START: &[u8] = b"ses:sta"; -const LAST_SESSION_START: &[u8] = b"ses:lst"; -const LAST_LENGTH_CHANGE: &[u8] = b"ses:llc"; -const NEXT_KEY_FOR: &[u8] = b"ses:nxt:"; -const NEXT_SESSION_LENGTH: &[u8] = b"ses:nln"; - -struct ValidatorStorageVec; -impl StorageVec for ValidatorStorageVec { - type Item = AccountId; - const PREFIX: &'static [u8] = b"ses:val:"; -} - -// the session keys before the previous. -struct LastValidators; -impl StorageVec for LastValidators { - type Item = (AccountId, SessionKey); - const PREFIX: &'static [u8] = b"ses:old:"; -} - -/// Get the current set of validators. -pub fn validators() -> Vec { - ValidatorStorageVec::items() -} - -/// The number of blocks in each session. -pub fn length() -> BlockNumber { - storage::get_or(SESSION_LENGTH, 0) -} - -/// The number of validators currently. -pub fn validator_count() -> u32 { - ValidatorStorageVec::count() as u32 -} - -/// The current session index. -pub fn current_index() -> BlockNumber { - storage::get_or(CURRENT_INDEX, 0) -} - -/// Get the starting block of the current session. -pub fn current_start_block() -> BlockNumber { - // this seems like it's computable just by examining the current block number, session length, - // and last length change, but it's not simple to tell whether we are before or after - // a session rotation on a block which will have one. - storage::get_or(CURRENT_SESSION_START, 0) -} - -/// Get the last session's validators, paired with their authority keys. -pub fn last_session_keys() -> Vec<(AccountId, SessionKey)> { - LastValidators::items() -} - -/// Get the start block of the last session. -/// In general this is computable from the session length, -/// but when the current session is the first with a new length it is uncomputable. -pub fn last_session_start() -> Option { - storage::get(LAST_SESSION_START) -} - -/// The block number at which the era length last changed. -pub fn last_length_change() -> BlockNumber { - storage::get_or(LAST_LENGTH_CHANGE, 0) -} - -pub mod public { - use super::*; - - /// Sets the session key of `_validator` to `_key`. This doesn't take effect until the next - /// session. - pub fn set_key(validator: &AccountId, key: &SessionKey) { - // set new value for next session - storage::put(&validator.to_keyed_vec(NEXT_KEY_FOR), key); - } -} - -pub mod privileged { - use super::*; - - /// Set a new era length. Won't kick in until the next era change (at current length). - pub fn set_length(new: BlockNumber) { - storage::put(NEXT_SESSION_LENGTH, &new); - } - - /// Forces a new session. - pub fn force_new_session() { - rotate_session(); - } -} - -// INTERNAL API (available to other runtime modules) - -pub mod internal { - use super::*; - - /// Transition to a new era, with a new set of valiators. - /// - /// Called by staking::next_era() only. `next_session` should be called after this in order to - /// update the session keys to the next validator set. - pub fn set_validators(new: &[AccountId]) { - LastValidators::set_items( - new.iter().cloned().zip(consensus::authorities()) - ); - ValidatorStorageVec::set_items(new); - consensus::internal::set_authorities(new); - } - - /// Hook to be called after transaction processing. - pub fn check_rotate_session() { - // do this last, after the staking system has had chance to switch out the authorities for the - // new set. - // check block number and call next_session if necessary. - if (system::block_number() - last_length_change()) % length() == 0 { - rotate_session(); - } - } -} - -/// Move onto next session: register the new authority set. -fn rotate_session() { - // Increment current session index. - storage::put(CURRENT_INDEX, &(current_index() + 1)); - // Enact era length change. - if let Some(next_len) = storage::get::(NEXT_SESSION_LENGTH) { - storage::put(SESSION_LENGTH, &next_len); - storage::put(LAST_LENGTH_CHANGE, &system::block_number()); - storage::kill(NEXT_SESSION_LENGTH); - } - - let validators = validators(); - - storage::put(LAST_SESSION_START, ¤t_start_block()); - storage::put(CURRENT_SESSION_START, &system::block_number()); - LastValidators::set_items( - validators.iter() - .cloned() - .zip(consensus::authorities()) - ); - - - // Update any changes in session keys. - validators.iter().enumerate().for_each(|(i, v)| { - let k = v.to_keyed_vec(NEXT_KEY_FOR); - if let Some(n) = storage::take(&k) { - // this is fine because the authorities vector currently - // matches the validators length perfectly. - consensus::internal::set_authority(i as u32, &n); - } - }); -} - -#[cfg(test)] -mod tests { - use super::*; - use super::public::*; - use super::privileged::*; - use super::internal::*; - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{KeyedVec, Joiner}; - use keyring::Keyring; - use environment::with_env; - use polkadot_primitives::AccountId; - use runtime::{consensus, session}; - - fn simple_setup() -> TestExternalities { - map![ - twox_128(SESSION_LENGTH).to_vec() => vec![].and(&2u64), - // the validators (10, 20, ...) - twox_128(b"ses:val:len").to_vec() => vec![].and(&2u32), - twox_128(&0u32.to_keyed_vec(ValidatorStorageVec::PREFIX)).to_vec() => vec![10; 32], - twox_128(&1u32.to_keyed_vec(ValidatorStorageVec::PREFIX)).to_vec() => vec![20; 32], - // initial session keys (11, 21, ...) - b":auth:len".to_vec() => vec![].and(&2u32), - 0u32.to_keyed_vec(b":auth:") => vec![11; 32], - 1u32.to_keyed_vec(b":auth:") => vec![21; 32] - ] - } - - #[test] - fn simple_setup_should_work() { - let mut t = simple_setup(); - with_externalities(&mut t, || { - assert_eq!(consensus::authorities(), vec![[11u8; 32], [21u8; 32]]); - assert_eq!(length(), 2u64); - assert_eq!(validators(), vec![[10u8; 32], [20u8; 32]]); - }); - } - - #[test] - fn session_length_change_should_work() { - let mut t = simple_setup(); - with_externalities(&mut t, || { - // Block 1: Change to length 3; no visible change. - system::testing::set_block_number(1); - set_length(3); - check_rotate_session(); - assert_eq!(length(), 2); - assert_eq!(current_index(), 0); - - // Block 2: Length now changed to 3. Index incremented. - system::testing::set_block_number(2); - set_length(3); - check_rotate_session(); - assert_eq!(length(), 3); - assert_eq!(current_index(), 1); - - // Block 3: Length now changed to 3. Index incremented. - system::testing::set_block_number(3); - check_rotate_session(); - assert_eq!(length(), 3); - assert_eq!(current_index(), 1); - - // Block 4: Change to length 2; no visible change. - system::testing::set_block_number(4); - set_length(2); - check_rotate_session(); - assert_eq!(length(), 3); - assert_eq!(current_index(), 1); - - // Block 5: Length now changed to 2. Index incremented. - system::testing::set_block_number(5); - check_rotate_session(); - assert_eq!(length(), 2); - assert_eq!(current_index(), 2); - - // Block 6: No change. - system::testing::set_block_number(6); - check_rotate_session(); - assert_eq!(length(), 2); - assert_eq!(current_index(), 2); - - // Block 7: Next index. - system::testing::set_block_number(7); - check_rotate_session(); - assert_eq!(length(), 2); - assert_eq!(current_index(), 3); - }); - } - - #[test] - fn session_change_should_work() { - let mut t = simple_setup(); - with_externalities(&mut t, || { - // Block 1: No change - system::testing::set_block_number(1); - check_rotate_session(); - assert_eq!(consensus::authorities(), vec![[11u8; 32], [21u8; 32]]); - - // Block 2: Session rollover, but no change. - system::testing::set_block_number(2); - check_rotate_session(); - assert_eq!(consensus::authorities(), vec![[11u8; 32], [21u8; 32]]); - - // Block 3: Set new key for validator 2; no visible change. - system::testing::set_block_number(3); - set_key(&[20; 32], &[22; 32]); - assert_eq!(consensus::authorities(), vec![[11u8; 32], [21u8; 32]]); - - check_rotate_session(); - assert_eq!(consensus::authorities(), vec![[11u8; 32], [21u8; 32]]); - - // Block 4: Session rollover, authority 2 changes. - system::testing::set_block_number(4); - check_rotate_session(); - assert_eq!(consensus::authorities(), vec![[11u8; 32], [22u8; 32]]); - }); - } -} diff --git a/polkadot/runtime/src/runtime/staking.rs b/polkadot/runtime/src/runtime/staking.rs deleted file mode 100644 index 7ed94b920215e..0000000000000 --- a/polkadot/runtime/src/runtime/staking.rs +++ /dev/null @@ -1,496 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Staking manager: Handles balances and periodically determines the best set of validators. - -use rstd::prelude::*; -use rstd::cell::RefCell; -use runtime_io::print; -use codec::KeyedVec; -use runtime_support::{storage, StorageVec}; -use polkadot_primitives::{BlockNumber, AccountId}; -use primitives::bft::{MisbehaviorReport, MisbehaviorKind}; -use runtime::{system, session, governance, consensus}; - -type Balance = u64; -type Bondage = u64; - -struct IntentionStorageVec {} -impl StorageVec for IntentionStorageVec { - type Item = AccountId; - const PREFIX: &'static [u8] = b"sta:wil:"; -} - -const BONDING_DURATION: &[u8] = b"sta:loc"; -const VALIDATOR_COUNT: &[u8] = b"sta:vac"; -const SESSIONS_PER_ERA: &[u8] = b"sta:spe"; -const NEXT_SESSIONS_PER_ERA: &[u8] = b"sta:nse"; -const CURRENT_ERA: &[u8] = b"sta:era"; -const LAST_ERA_LENGTH_CHANGE: &[u8] = b"sta:lec"; -const TOTAL_STAKE: &[u8] = b"sta:tot"; -const BALANCE_OF: &[u8] = b"sta:bal:"; -const BONDAGE_OF: &[u8] = b"sta:bon:"; - -/// The length of the bonding duration in eras. -pub fn bonding_duration() -> BlockNumber { - storage::get_or_default(BONDING_DURATION) -} - -/// The length of a staking era in sessions. -pub fn validator_count() -> usize { - storage::get_or_default::(VALIDATOR_COUNT) as usize -} - -/// The length of a staking era in blocks. -pub fn era_length() -> BlockNumber { - sessions_per_era() * session::length() -} - -/// The length of a staking era in sessions. -pub fn sessions_per_era() -> BlockNumber { - storage::get_or_default(SESSIONS_PER_ERA) -} - -/// The current era index. -pub fn current_era() -> BlockNumber { - storage::get_or_default(CURRENT_ERA) -} - -/// The block number at which the era length last changed. -pub fn last_era_length_change() -> BlockNumber { - storage::get_or_default(LAST_ERA_LENGTH_CHANGE) -} - -/// The balance of a given account. -pub fn balance(who: &AccountId) -> Balance { - storage::get_or_default(&who.to_keyed_vec(BALANCE_OF)) -} - -/// Gives the index of the era where the account's balance will no longer -/// be bonded. -pub fn bondage(who: &AccountId) -> Bondage { - storage::get_or_default(&who.to_keyed_vec(BONDAGE_OF)) -} - -fn set_balance(who: &AccountId, amount: Balance) { - storage::put(&who.to_keyed_vec(BALANCE_OF), &amount) -} - -// Each identity's stake may be in one of three bondage states, given by an integer: -// - n | n <= current_era(): inactive: free to be transferred. -// - ~0: active: currently representing a validator. -// - n | n > current_era(): deactivating: recently representing a validator and not yet -// ready for transfer. - -pub mod public { - use super::*; - - /// Transfer some unlocked staking balance to another staker. - pub fn transfer(transactor: &AccountId, dest: &AccountId, value: Balance) { - let from_key = transactor.to_keyed_vec(BALANCE_OF); - let from_balance = storage::get_or_default::(&from_key); - assert!(from_balance >= value); - let to_key = dest.to_keyed_vec(BALANCE_OF); - let to_balance: Balance = storage::get_or_default(&to_key); - assert!(bondage(transactor) <= bondage(dest)); - assert!(to_balance + value > to_balance); // no overflow - storage::put(&from_key, &(from_balance - value)); - storage::put(&to_key, &(to_balance + value)); - } - - /// Declare the desire to stake for the transactor. - /// - /// Effects will be felt at the beginning of the next era. - pub fn stake(transactor: &AccountId) { - let mut intentions = IntentionStorageVec::items(); - // can't be in the list twice. - assert!(intentions.iter().find(|t| t == &transactor).is_none(), "Cannot stake if already staked."); - intentions.push(transactor.clone()); - IntentionStorageVec::set_items(&intentions); - storage::put(&transactor.to_keyed_vec(BONDAGE_OF), &u64::max_value()); - } - - /// Retract the desire to stake for the transactor. - /// - /// Effects will be felt at the beginning of the next era. - pub fn unstake(transactor: &AccountId) { - let mut intentions = IntentionStorageVec::items(); - if let Some(position) = intentions.iter().position(|t| t == transactor) { - intentions.swap_remove(position); - } else { - panic!("Cannot unstake if not already staked."); - } - IntentionStorageVec::set_items(&intentions); - storage::put(&transactor.to_keyed_vec(BONDAGE_OF), &(current_era() + bonding_duration())); - } - - /// Report misbehavior. Only validators may do this, signing under - /// the authority key of the session the report corresponds to. - /// - /// Reports older than one session in the past will be ignored. - pub fn report_misbehavior(transactor: &AccountId, report: &MisbehaviorReport) { - let (validators, authorities) = if report.parent_number < session::last_session_start().unwrap_or(0) { - panic!("report is too old"); - } else if report.parent_number < session::current_start_block() { - session::last_session_keys().into_iter().unzip() - } else { - (session::validators(), consensus::authorities()) - }; - - if report.parent_hash != system::block_hash(report.parent_number) { - // report out of chain. - panic!("report not from this blockchain"); - } - - let reporting_validator = match authorities.iter().position(|x| x == transactor) { - None => panic!("only validators may report"), - Some(pos) => validators.get(pos).expect("validators and authorities have same cardinality; qed"), - }; - - // any invalidity beyond this point is actually its own misbehavior. - let target = match authorities.iter().position(|x| x == &report.target) { - None => { - slash(reporting_validator, None); - return; - } - Some(pos) => validators.get(pos).expect("validators and authorities have same cardinality; qed"), - }; - - let misbehaved = ::misbehavior_check::evaluate_misbehavior(&report.target, report.parent_hash, &report.misbehavior); - if misbehaved { - slash(target, Some(reporting_validator)) - } else { - slash(reporting_validator, None); - } - } -} - -pub mod privileged { - use super::*; - - /// Set the number of sessions in an era. - pub fn set_sessions_per_era(new: BlockNumber) { - storage::put(NEXT_SESSIONS_PER_ERA, &new); - } - - /// The length of the bonding duration in eras. - pub fn set_bonding_duration(new: BlockNumber) { - storage::put(BONDING_DURATION, &new); - } - - /// The length of a staking era in sessions. - pub fn set_validator_count(new: u32) { - storage::put(VALIDATOR_COUNT, &new); - } - - /// Force there to be a new era. This also forces a new session immediately after. - pub fn force_new_era() { - new_era(); - session::privileged::force_new_session(); - } -} - -pub mod internal { - use super::*; - - /// Hook to be called after to transaction processing. - pub fn check_new_era() { - // check block number and call new_era if necessary. - if (system::block_number() - last_era_length_change()) % era_length() == 0 { - new_era(); - } - } -} - -/// Slash a validator, with an optional benefactor. -fn slash(who: &AccountId, benefactor: Option<&AccountId>) { - // the reciprocal of the proportion of the amount slashed to give - // to the benefactor. - const SLASH_REWARD_DENOMINATOR: Balance = 10; - - let slashed = balance(who); - set_balance(who, 0); - - if let Some(benefactor) = benefactor { - let reward = slashed / SLASH_REWARD_DENOMINATOR; - - let prior = balance(benefactor); - set_balance(benefactor, prior + reward); - } -} - -/// The era has changed - enact new staking set. -/// -/// NOTE: This always happens immediately before a session change to ensure that new validators -/// get a chance to set their session keys. -fn new_era() { - // Inform governance module that it's the end of an era - governance::internal::end_of_an_era(); - - // Increment current era. - storage::put(CURRENT_ERA, &(current_era() + 1)); - - // Enact era length change. - let next_spe: u64 = storage::get_or_default(NEXT_SESSIONS_PER_ERA); - if next_spe > 0 && next_spe != sessions_per_era() { - storage::put(SESSIONS_PER_ERA, &next_spe); - storage::put(LAST_ERA_LENGTH_CHANGE, &system::block_number()); - } - - // evaluate desired staking amounts and nominations and optimise to find the best - // combination of validators, then use session::internal::set_validators(). - // for now, this just orders would-be stakers by their balances and chooses the top-most - // validator_count() of them. - let mut intentions = IntentionStorageVec::items() - .into_iter() - .map(|v| (balance(&v), v)) - .collect::>(); - intentions.sort_unstable_by(|&(b1, _), &(b2, _)| b2.cmp(&b1)); - session::internal::set_validators( - &intentions.into_iter() - .map(|(_, v)| v) - .take(validator_count()) - .collect::>() - ); -} - -#[cfg(test)] -mod tests { - use super::*; - use super::internal::*; - use super::public::*; - use super::privileged::*; - - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{KeyedVec, Joiner}; - use keyring::Keyring; - use environment::with_env; - use polkadot_primitives::AccountId; - use runtime::{staking, session}; - - #[test] - fn staking_should_work() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - let four = [4u8; 32]; - - let mut t: TestExternalities = map![ - twox_128(b"ses:len").to_vec() => vec![].and(&1u64), - twox_128(b"ses:val:len").to_vec() => vec![].and(&2u32), - twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![10; 32], - twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => vec![20; 32], - twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64), - twox_128(VALIDATOR_COUNT).to_vec() => vec![].and(&2u32), - twox_128(BONDING_DURATION).to_vec() => vec![].and(&3u64), - twox_128(TOTAL_STAKE).to_vec() => vec![].and(&100u64), - twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&10u64), - twox_128(&two.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&20u64), - twox_128(&three.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&30u64), - twox_128(&four.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&40u64) - ]; - - with_externalities(&mut t, || { - assert_eq!(era_length(), 2u64); - assert_eq!(validator_count(), 2usize); - assert_eq!(bonding_duration(), 3u64); - assert_eq!(session::validators(), vec![[10u8; 32], [20u8; 32]]); - - // Block 1: Add three validators. No obvious change. - system::testing::set_block_number(1); - stake(&one); - stake(&two); - stake(&four); - check_new_era(); - assert_eq!(session::validators(), vec![[10u8; 32], [20u8; 32]]); - - // Block 2: New validator set now. - system::testing::set_block_number(2); - check_new_era(); - assert_eq!(session::validators(), vec![four.clone(), two.clone()]); - - // Block 3: Unstake highest, introduce another staker. No change yet. - system::testing::set_block_number(3); - stake(&three); - unstake(&four); - check_new_era(); - - // Block 4: New era - validators change. - system::testing::set_block_number(4); - check_new_era(); - assert_eq!(session::validators(), vec![three.clone(), two.clone()]); - - // Block 5: Transfer stake from highest to lowest. No change yet. - system::testing::set_block_number(5); - transfer(&four, &one, 40); - check_new_era(); - - // Block 6: Lowest now validator. - system::testing::set_block_number(6); - check_new_era(); - assert_eq!(session::validators(), vec![one.clone(), three.clone()]); - - // Block 7: Unstake three. No change yet. - system::testing::set_block_number(7); - unstake(&three); - check_new_era(); - assert_eq!(session::validators(), vec![one.clone(), three.clone()]); - - // Block 8: Back to one and two. - system::testing::set_block_number(8); - check_new_era(); - assert_eq!(session::validators(), vec![one.clone(), two.clone()]); - }); - } - - #[test] - fn staking_eras_work() { - let mut t: TestExternalities = map![ - twox_128(b"ses:len").to_vec() => vec![].and(&1u64), - twox_128(SESSIONS_PER_ERA).to_vec() => vec![].and(&2u64) - ]; - with_externalities(&mut t, || { - assert_eq!(era_length(), 2u64); - assert_eq!(sessions_per_era(), 2u64); - assert_eq!(last_era_length_change(), 0u64); - assert_eq!(current_era(), 0u64); - - // Block 1: No change. - system::testing::set_block_number(1); - check_new_era(); - assert_eq!(sessions_per_era(), 2u64); - assert_eq!(last_era_length_change(), 0u64); - assert_eq!(current_era(), 0u64); - - // Block 2: Simple era change. - system::testing::set_block_number(2); - check_new_era(); - assert_eq!(sessions_per_era(), 2u64); - assert_eq!(last_era_length_change(), 0u64); - assert_eq!(current_era(), 1u64); - - // Block 3: Schedule an era length change; no visible changes. - system::testing::set_block_number(3); - set_sessions_per_era(3); - check_new_era(); - assert_eq!(sessions_per_era(), 2u64); - assert_eq!(last_era_length_change(), 0u64); - assert_eq!(current_era(), 1u64); - - // Block 4: Era change kicks in. - system::testing::set_block_number(4); - check_new_era(); - assert_eq!(sessions_per_era(), 3u64); - assert_eq!(last_era_length_change(), 4u64); - assert_eq!(current_era(), 2u64); - - // Block 5: No change. - system::testing::set_block_number(5); - check_new_era(); - assert_eq!(sessions_per_era(), 3u64); - assert_eq!(last_era_length_change(), 4u64); - assert_eq!(current_era(), 2u64); - - // Block 6: No change. - system::testing::set_block_number(6); - check_new_era(); - assert_eq!(sessions_per_era(), 3u64); - assert_eq!(last_era_length_change(), 4u64); - assert_eq!(current_era(), 2u64); - - // Block 7: Era increment. - system::testing::set_block_number(7); - check_new_era(); - assert_eq!(sessions_per_era(), 3u64); - assert_eq!(last_era_length_change(), 4u64); - assert_eq!(current_era(), 3u64); - }); - } - - #[test] - fn staking_balance_works() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&42u64) - ]; - - with_externalities(&mut t, || { - assert_eq!(balance(&one), 42); - assert_eq!(balance(&two), 0); - }); - } - - #[test] - fn staking_balance_transfer_works() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&111u64) - ]; - - with_externalities(&mut t, || { - transfer(&one, &two, 69); - assert_eq!(balance(&one), 42); - assert_eq!(balance(&two), 69); - }); - } - - #[test] - #[should_panic] - fn staking_balance_transfer_when_bonded_doesnt_work() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&111u64) - ]; - - with_externalities(&mut t, || { - stake(&one); - transfer(&one, &two, 69); - }); - } - - #[test] - #[should_panic] - fn misbehavior_report_by_non_validator_panics() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(BALANCE_OF)).to_vec() => vec![].and(&111u64) - ]; - - with_externalities(&mut t, || { - // the misbehavior report here is invalid, but that - // actually doesn't panic; instead it would slash the bad - // reporter. - report_misbehavior(&one, &MisbehaviorReport { - parent_hash: [0; 32].into(), - parent_number: 0, - target: two, - misbehavior: MisbehaviorKind::BftDoubleCommit( - 2, - ([1; 32].into(), [2; 64].into()), - ([3; 32].into(), [4; 64].into()), - ), - }) - }); - } -} diff --git a/polkadot/runtime/src/runtime/system.rs b/polkadot/runtime/src/runtime/system.rs deleted file mode 100644 index 935f801924594..0000000000000 --- a/polkadot/runtime/src/runtime/system.rs +++ /dev/null @@ -1,450 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! System manager: Handles all of the top-level stuff; executing block/transaction, setting code -//! and depositing logs. - -use rstd::mem; -use rstd::prelude::*; - -use codec::{KeyedVec, Slicable}; -use environment::with_env; -use polkadot_primitives::{ - AccountId, Hash, TxOrder, BlockNumber, Block, Header, - UncheckedTransaction, Function, InherentFunction, Log -}; - -use runtime_io::{print, storage_root, enumerated_trie_root}; -use runtime_support::{Hashable, storage}; -use runtime::{staking, session}; - -/// Prefixes account ID and stores u64 nonce. -pub const NONCE_OF: &[u8] = b"sys:non:"; -/// Prefixes block number and stores hash of that block. -pub const BLOCK_HASH_AT: &[u8] = b"sys:old:"; -/// Stores the temporary current transaction number. -pub const TEMP_TRANSACTION_NUMBER: &[u8] = b"temp:txcount"; - -/// The current block number being processed. Set by `execute_block`. -pub fn block_number() -> BlockNumber { - with_env(|e| e.block_number) -} - -/// Get the block hash of a given block (uses storage). -pub fn block_hash(number: BlockNumber) -> Hash { - storage::get_or_default(&number.to_keyed_vec(BLOCK_HASH_AT)) -} - -pub mod privileged { - use super::*; - - /// Set the new code. - pub fn set_code(new: &[u8]) { - storage::unhashed::put_raw(b":code", new); - } -} - -pub mod internal { - use super::*; - - /// Deposits a log and ensures it matches the blocks log data. - pub fn deposit_log(log: Log) { - with_env(|e| e.digest.logs.push(log)); - } - - /// Actually execute all transitioning for `block`. - pub fn execute_block(mut block: Block) { - // populate environment from header. - with_env(|e| { - e.block_number = block.header.number; - e.parent_hash = block.header.parent_hash; - }); - - // any initial checks - initial_checks(&block); - - // execute all transactions, inherent or otherwise. - for (tx_num, tx) in block.all_transactions().enumerate() { - super::execute_transaction(tx, tx_num as u64); - } - - // post-transactional book-keeping. - staking::internal::check_new_era(); - session::internal::check_rotate_session(); - - // any final checks - final_checks(&block); - - // any stuff that we do after taking the storage root. - post_finalise(&block.header); - } - - /// Execute a transaction outside of the block execution function. - /// This doesn't attempt to validate anything regarding the block. - /// Note that when building a block transaction by transaction, the - /// inherent methods must be called manually. - pub fn execute_transaction(utx: UncheckedTransaction, mut header: Header) -> Header { - // populate environment from header. - with_env(|e| { - e.block_number = header.number; - e.parent_hash = header.parent_hash; - mem::swap(&mut header.digest, &mut e.digest); - }); - - let tx_num: u64 = storage::get_or_default(TEMP_TRANSACTION_NUMBER); - - super::execute_transaction(utx, tx_num); - - with_env(|e| { - mem::swap(&mut header.digest, &mut e.digest); - }); - - storage::put(TEMP_TRANSACTION_NUMBER, &(tx_num + 1)); - - header - } - - /// Finalise the block - it is up the caller to ensure that all header fields are valid - /// except state-root. - pub fn finalise_block(mut header: Header) -> Header { - // populate environment from header. - with_env(|e| { - e.block_number = header.number; - e.parent_hash = header.parent_hash; - mem::swap(&mut header.digest, &mut e.digest); - }); - - let tx_count: u64 = storage::take_or_default(TEMP_TRANSACTION_NUMBER); - if tx_count < Function::inherent_functions() { - panic!("Not enough transactions provided to fulfill all inherent functions."); - } - - staking::internal::check_new_era(); - session::internal::check_rotate_session(); - - header.state_root = storage_root().into(); - with_env(|e| { - mem::swap(&mut header.digest, &mut e.digest); - }); - - post_finalise(&header); - - header - } -} - -/// Get an account's current nonce. -pub fn nonce(account: AccountId) -> TxOrder { - let nonce_key = account.to_keyed_vec(NONCE_OF); - storage::get_or(&nonce_key, 0) -} - -/// Dispatch a function. -fn dispatch_function(function: &Function, transactor: &AccountId) { - match *function { - Function::Inherent(InherentFunction::TimestampSet(t)) => { - ::runtime::timestamp::public::set(t); - } - Function::StakingStake => { - ::runtime::staking::public::stake(transactor); - } - Function::StakingUnstake => { - ::runtime::staking::public::unstake(transactor); - } - Function::StakingTransfer(dest, value) => { - ::runtime::staking::public::transfer(transactor, &dest, value); - } - Function::ReportMisbehavior(ref report) => { - ::runtime::staking::public::report_misbehavior(transactor, report) - } - Function::SessionSetKey(session) => { - ::runtime::session::public::set_key(transactor, &session); - } - Function::GovernancePropose(ref proposal) => { - ::runtime::governance::public::propose(transactor, proposal); - } - Function::GovernanceApprove(era_index) => { - ::runtime::governance::public::approve(transactor, era_index); - } - } -} - -fn execute_transaction(utx: UncheckedTransaction, tx_num: u64) { - use ::transaction; - - // Verify the transaction is authenticated at its position. - let tx = match transaction::check(utx, tx_num) { - Ok(tx) => tx, - Err(_) => panic!("Transaction at index {} not properly authenticated", tx_num), - }; - - // check nonce - let nonce_key = tx.signed.to_keyed_vec(NONCE_OF); - let (expected_nonce, increment_nonce) = if !tx.function.is_inherent() { - (storage::get_or(&nonce_key, 0), true) - } else { - (0, false) - }; - - assert!(tx.nonce == expected_nonce, "All transactions should have the correct nonce"); - - // increment nonce in storage, unless it's the EVERYBODY account. - if increment_nonce { - storage::put(&nonce_key, &(expected_nonce + 1)); - } - - // decode parameters and dispatch - dispatch_function(&tx.function, &tx.signed); -} - -fn initial_checks(block: &Block) { - let ref header = block.header; - - // check parent_hash is correct. - assert!( - header.number > 0 && block_hash(header.number - 1) == header.parent_hash, - "Parent hash should be valid." - ); - - // check transaction trie root represents the transactions. - let txs = block.all_transactions().map(|tx| Slicable::encode(&tx)).collect::>(); - let txs = txs.iter().map(Vec::as_slice).collect::>(); - let txs_root = enumerated_trie_root(&txs).into(); - info_expect_equal_hash(&header.transaction_root, &txs_root); - assert!(header.transaction_root == txs_root, "Transaction trie root must be valid."); -} - -fn final_checks(block: &Block) { - let ref header = block.header; - - // check digest - with_env(|e| { - assert!(header.digest == e.digest); - }); - - // check storage root. - let storage_root = storage_root().into(); - info_expect_equal_hash(&header.state_root, &storage_root); - assert!(header.state_root == storage_root, "Storage root must match that calculated."); -} - -fn post_finalise(header: &Header) { - // store the header hash in storage; we can't do it before otherwise there would be a - // cyclic dependency. - storage::put(&header.number.to_keyed_vec(BLOCK_HASH_AT), &header.blake2_256()); -} - -#[cfg(feature = "std")] -fn info_expect_equal_hash(given: &Hash, expected: &Hash) { - use primitives::hexdisplay::HexDisplay; - if given != expected { - println!("Hash: given={}, expected={}", HexDisplay::from(&given.0), HexDisplay::from(&expected.0)); - } -} - -#[cfg(not(feature = "std"))] -fn info_expect_equal_hash(given: &Hash, expected: &Hash) { - if given != expected { - print("Hash not equal"); - print(&given.0[..]); - print(&expected.0[..]); - } -} - -#[cfg(any(feature = "std", test))] -pub mod testing { - use super::*; - - pub fn set_block_number(n: BlockNumber) { - with_env(|e| e.block_number = n); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use super::internal::*; - - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{Joiner, KeyedVec, Slicable}; - use keyring::Keyring; - use environment::with_env; - use primitives::hexdisplay::HexDisplay; - use polkadot_primitives::{Header, Body, Digest, UncheckedTransaction, Transaction, Function, InherentFunction}; - use runtime::staking; - - fn set_timestamp() -> UncheckedTransaction { - UncheckedTransaction::inherent(InherentFunction::TimestampSet(100_000)) - } - - #[test] - #[should_panic] - fn fails_if_first_not_timestamp_set() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let tx = UncheckedTransaction { - transaction: Transaction { - signed: one.clone(), - nonce: 0, - function: Function::StakingTransfer(two, 69), - }, - signature: hex!("5f9832c5a4a39e2dd4a3a0c5b400e9836beb362cb8f7d845a8291a2ae6fe366612e080e4acd0b5a75c3d0b6ee69614a68fb63698c1e76bf1f2dcd8fa617ddf05").into(), - }; - - with_externalities(&mut t, || { - internal::execute_transaction(tx, Header::from_block_number(1)); - }); - } - - #[test] - fn staking_balance_transfer_dispatch_works() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t: TestExternalities = map![ - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ]; - - let tx = UncheckedTransaction { - transaction: Transaction { - signed: one.clone(), - nonce: 0, - function: Function::StakingTransfer(two, 69), - }, - signature: hex!("5f9832c5a4a39e2dd4a3a0c5b400e9836beb362cb8f7d845a8291a2ae6fe366612e080e4acd0b5a75c3d0b6ee69614a68fb63698c1e76bf1f2dcd8fa617ddf05").into(), - }; - - with_externalities(&mut t, || { - let header = Header::from_block_number(1); - let header = internal::execute_transaction(set_timestamp(), header); - internal::execute_transaction(tx, header); - assert_eq!(staking::balance(&one), 42); - assert_eq!(staking::balance(&two), 69); - }); - } - - fn new_test_ext() -> TestExternalities { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - let three = [3u8; 32]; - - map![ - twox_128(&0u64.to_keyed_vec(b"sys:old:")).to_vec() => [69u8; 32].encode(), - twox_128(b"gov:apr").to_vec() => vec![].and(&667u32), - twox_128(b"ses:len").to_vec() => vec![].and(&2u64), - twox_128(b"ses:val:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"ses:val:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"ses:val:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"ses:val:")).to_vec() => three.to_vec(), - twox_128(b"sta:wil:len").to_vec() => vec![].and(&3u32), - twox_128(&0u32.to_keyed_vec(b"sta:wil:")).to_vec() => one.to_vec(), - twox_128(&1u32.to_keyed_vec(b"sta:wil:")).to_vec() => two.to_vec(), - twox_128(&2u32.to_keyed_vec(b"sta:wil:")).to_vec() => three.to_vec(), - twox_128(b"sta:spe").to_vec() => vec![].and(&2u64), - twox_128(b"sta:vac").to_vec() => vec![].and(&3u64), - twox_128(b"sta:era").to_vec() => vec![].and(&0u64), - twox_128(&one.to_keyed_vec(b"sta:bal:")).to_vec() => vec![111u8, 0, 0, 0, 0, 0, 0, 0] - ] - } - - #[test] - fn block_import_works() { - let mut t = new_test_ext(); - - let h = Header { - parent_hash: [69u8; 32].into(), - number: 1, - state_root: hex!("aa4fbcdc09b21e4366aebccd9b9ec0831a8a2765c712d3397f121ff8e60e21e2").into(), - transaction_root: hex!("328ae80be3adf358d2a2e188cbe1bfd3f8cd5b15a2e7666e2b4eccf7450efc32").into(), - digest: Digest { logs: vec![], }, - }; - - let b = Block { - header: h, - body: Body { - timestamp: 100_000, - transactions: vec![] - } - }; - - with_externalities(&mut t, || { - execute_block(b); - }); - } - - #[test] - #[should_panic] - fn block_import_of_bad_state_root_fails() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t = new_test_ext(); - - let h = Header { - parent_hash: [69u8; 32].into(), - number: 1, - state_root: [0u8; 32].into(), - transaction_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), - digest: Digest { logs: vec![], }, - }; - - let b = Block { - header: h, - body: Body { - timestamp: 100_000, - transactions: vec![], - } - }; - - with_externalities(&mut t, || { - execute_block(b); - }); - } - - #[test] - #[should_panic] - fn block_import_of_bad_transaction_root_fails() { - let one = Keyring::One.to_raw_public(); - let two = Keyring::Two.to_raw_public(); - - let mut t = new_test_ext(); - - let h = Header { - parent_hash: [69u8; 32].into(), - number: 1, - state_root: hex!("1ab2dbb7d4868a670b181327b0b6a58dc64b10cfb9876f737a5aa014b8da31e0").into(), - transaction_root: [0u8; 32].into(), - digest: Digest { logs: vec![], }, - }; - - let b = Block { - header: h, - body: Body { - timestamp: 100_000, - transactions: vec![], - } - }; - - with_externalities(&mut t, || { - execute_block(b); - }); - } -} diff --git a/polkadot/runtime/src/runtime/timestamp.rs b/polkadot/runtime/src/runtime/timestamp.rs deleted file mode 100644 index 8252f372254a8..0000000000000 --- a/polkadot/runtime/src/runtime/timestamp.rs +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Timestamp manager: just handles the current timestamp. - -use runtime_support::storage; -use polkadot_primitives::Timestamp; - -const CURRENT_TIMESTAMP: &[u8] = b"tim:val"; - -/// Get the current time. -pub fn get() -> Timestamp { - storage::get_or_default(CURRENT_TIMESTAMP) -} - -pub mod public { - use super::*; - - /// Set the current time. - pub fn set(now: Timestamp) { - if super::get() > now { - panic!("last timestamp less than now"); - } - - storage::put(CURRENT_TIMESTAMP, &now); - } -} - -#[cfg(test)] -mod tests { - use super::*; - use super::public::*; - - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use runtime::timestamp; - use codec::{Joiner, KeyedVec}; - - #[test] - fn timestamp_works() { - let mut t: TestExternalities = map![ - twox_128(CURRENT_TIMESTAMP).to_vec() => vec![].and(&42u64) - ]; - - with_externalities(&mut t, || { - assert_eq!(get(), 42); - set(69); - assert_eq!(get(), 69); - }); - } -} diff --git a/polkadot/runtime/wasm/Cargo.lock b/polkadot/runtime/wasm/Cargo.lock index 7c2e7ef05be4a..efb08193104fa 100644 --- a/polkadot/runtime/wasm/Cargo.lock +++ b/polkadot/runtime/wasm/Cargo.lock @@ -220,6 +220,16 @@ dependencies = [ "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "integer-sqrt" +version = "0.1.0" +source = "git+https://github.com/paritytech/integer-sqrt-rs.git#f4cf61482096dc98c1273f46a10849d182b4c23c" + +[[package]] +name = "integer-sqrt" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "isatty" version = "0.1.6" @@ -308,6 +318,11 @@ name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "num-traits" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "num_cpus" version = "1.8.0" @@ -383,6 +398,7 @@ dependencies = [ "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", ] @@ -390,13 +406,23 @@ dependencies = [ name = "polkadot-runtime" version = "0.1.0" dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "polkadot-primitives 0.1.0", + "safe-mix 0.1.0", "substrate-codec 0.1.0", - "substrate-misbehavior-check 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-council 0.1.0", + "substrate-runtime-democracy 0.1.0", + "substrate-runtime-executive 0.1.0", "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", + "substrate-runtime-timestamp 0.1.0", ] [[package]] @@ -541,6 +567,13 @@ dependencies = [ "semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "safe-mix" +version = "0.1.0" +dependencies = [ + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "scopeguard" version = "0.3.3" @@ -601,12 +634,12 @@ dependencies = [ ] [[package]] -name = "substrate-misbehavior-check" +name = "substrate-keyring" version = "0.1.0" dependencies = [ - "substrate-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", + "ed25519 0.1.0", + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -626,6 +659,76 @@ dependencies = [ "uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)", ] +[[package]] +name = "substrate-runtime-consensus" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + +[[package]] +name = "substrate-runtime-council" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-democracy 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + +[[package]] +name = "substrate-runtime-democracy" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + +[[package]] +name = "substrate-runtime-executive" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + [[package]] name = "substrate-runtime-io" version = "0.1.0" @@ -640,6 +743,58 @@ dependencies = [ "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-runtime-primitives" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", +] + +[[package]] +name = "substrate-runtime-session" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + +[[package]] +name = "substrate-runtime-staking" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + [[package]] name = "substrate-runtime-std" version = "0.1.0" @@ -663,6 +818,36 @@ dependencies = [ "substrate-runtime-std 0.1.0", ] +[[package]] +name = "substrate-runtime-system" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 0.1.0", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", +] + +[[package]] +name = "substrate-runtime-timestamp" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", +] + [[package]] name = "substrate-state-machine" version = "0.1.0" @@ -841,6 +1026,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" "checksum hex-literal 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd546ef520ab3745f1aae5f2cdc6de9e6498e94d1ab138b9eb3ddfbf335847fb" "checksum hex-literal-impl 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2ea76da4c7f1a54d01d54985566d3fdd960b2bbd7b970da024821c883c2d9631" +"checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "" +"checksum integer-sqrt 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7536fe7f78abedb82f609d87f46f0e0ca0ad31e84597deb8dabd8ed9ad047257" "checksum isatty 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f2a233726c7bb76995cec749d59582e5664823b7245d4970354408f1d79a7a2" "checksum keccak-hash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f300c1f149cd9ca5214eed24f6e713a597517420fb8b15499824aa916259ec1" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" @@ -852,6 +1039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memorydb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "013b7e4c5e10c764936ebc6bd3662d8e3c92292d267bf6a42ef3f5cad9c793ee" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum odds 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "4eae0151b9dacf24fcc170d9995e511669a082856a91f958a2fe380bfab3fb22" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" diff --git a/polkadot/runtime/wasm/Cargo.toml b/polkadot/runtime/wasm/Cargo.toml index dac9694b8b65a..a75bd649adff0 100644 --- a/polkadot/runtime/wasm/Cargo.toml +++ b/polkadot/runtime/wasm/Cargo.toml @@ -7,23 +7,42 @@ authors = ["Parity Technologies "] crate-type = ["cdylib"] [dependencies] +integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } +safe-mix = { path = "../../../safe-mix", default-features = false } substrate-codec = { path = "../../../substrate/codec", default-features = false } +substrate-primitives = { path = "../../../substrate/primitives", default-features = false } substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false } substrate-runtime-io = { path = "../../../substrate/runtime-io", default-features = false } substrate-runtime-support = { path = "../../../substrate/runtime-support", default-features = false } -substrate-primitives = { path = "../../../substrate/primitives", default-features = false } -substrate-misbehavior-check = { path = "../../../substrate/misbehavior-check", default-features = false } +substrate-runtime-consensus = { path = "../../../substrate/runtime/consensus", default-features = false } +substrate-runtime-council = { path = "../../../substrate/runtime/council", default-features = false } +substrate-runtime-democracy = { path = "../../../substrate/runtime/democracy", default-features = false } +substrate-runtime-executive = { path = "../../../substrate/runtime/executive", default-features = false } +substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives", default-features = false } +substrate-runtime-session = { path = "../../../substrate/runtime/session", default-features = false } +substrate-runtime-staking = { path = "../../../substrate/runtime/staking", default-features = false } +substrate-runtime-system = { path = "../../../substrate/runtime/system", default-features = false } +substrate-runtime-timestamp = { path = "../../../substrate/runtime/timestamp", default-features = false } polkadot-primitives = { path = "../../primitives", default-features = false } [features] default = [] std = [ + "safe-mix/std", "substrate-codec/std", - "substrate-runtime-io/std", + "substrate-primitives/std", "substrate-runtime-std/std", + "substrate-runtime-io/std", "substrate-runtime-support/std", - "substrate-primitives/std", - "substrate-misbehavior-check/std", + "substrate-runtime-consensus/std", + "substrate-runtime-council/std", + "substrate-runtime-democracy/std", + "substrate-runtime-executive/std", + "substrate-runtime-primitives/std", + "substrate-runtime-session/std", + "substrate-runtime-staking/std", + "substrate-runtime-system/std", + "substrate-runtime-timestamp/std", "polkadot-primitives/std", ] diff --git a/polkadot/runtime/wasm/build.sh b/polkadot/runtime/wasm/build.sh index d48d10a062d38..53ca2a0018ce5 100755 --- a/polkadot/runtime/wasm/build.sh +++ b/polkadot/runtime/wasm/build.sh @@ -2,7 +2,7 @@ set -e cargo +nightly build --target=wasm32-unknown-unknown --release -for i in polkadot_runtime +for i in demo_runtime do wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm done diff --git a/polkadot/runtime/wasm/init.sh b/polkadot/runtime/wasm/init.sh old mode 100755 new mode 100644 diff --git a/polkadot/service/Cargo.toml b/polkadot/service/Cargo.toml index a5361e59e2034..f54a84fbc7f93 100644 --- a/polkadot/service/Cargo.toml +++ b/polkadot/service/Cargo.toml @@ -7,10 +7,11 @@ authors = ["Parity Technologies "] futures = "0.1.17" parking_lot = "0.4" tokio-timer = "0.1.2" -ed25519 = { path = "../../substrate/ed25519" } +hex-literal = "0.1" error-chain = "0.11" log = "0.4" tokio-core = "0.1.12" +ed25519 = { path = "../../substrate/ed25519" } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime" } polkadot-consensus = { path = "../consensus" } @@ -18,9 +19,9 @@ polkadot-executor = { path = "../executor" } polkadot-api = { path = "../api" } polkadot-transaction-pool = { path = "../transaction-pool" } polkadot-keystore = { path = "../keystore" } +substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-primitives = { path = "../../substrate/primitives" } substrate-network = { path = "../../substrate/network" } substrate-client = { path = "../../substrate/client" } -substrate-keyring = { path = "../../substrate/keyring" } substrate-codec = { path = "../../substrate/codec" } substrate-executor = { path = "../../substrate/executor" } diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index d3daac84ca849..7847bd410b27c 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -28,15 +28,17 @@ extern crate polkadot_api; extern crate polkadot_consensus as consensus; extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_keystore as keystore; +extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_network as network; extern crate substrate_codec as codec; extern crate substrate_executor; extern crate tokio_core; -extern crate substrate_keyring; extern crate substrate_client as client; +#[macro_use] +extern crate hex_literal; #[macro_use] extern crate error_chain; #[macro_use] @@ -51,14 +53,15 @@ use futures::prelude::*; use parking_lot::Mutex; use tokio_core::reactor::Core; use codec::Slicable; +use runtime_io::with_externalities; use primitives::block::{Id as BlockId, TransactionHash}; use transaction_pool::TransactionPool; -use substrate_keyring::Keyring; use substrate_executor::NativeExecutor; use polkadot_executor::Executor as LocalDispatch; use keystore::Store as Keystore; use polkadot_api::PolkadotApi; -use polkadot_runtime::genesismap::{additional_storage_with_genesis, GenesisConfig}; +use polkadot_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, + SessionConfig, StakingConfig, BuildExternalities}; use client::{genesis, BlockchainEvents}; use client::in_mem::Backend as InMemory; use network::ManageNetwork; @@ -136,26 +139,57 @@ impl Service { info!("Generated a new keypair: {:?}", key.public()); } + let god_key = hex!["3d866ec8a9190c8343c2fc593d21d8a6d0c5c4763aaab2349de3a6111d64d124"]; + let genesis_config = GenesisConfig { - validators: vec![Keyring::Alice.into(), Keyring::Bob.into(), Keyring::Charlie.into()], - authorities: vec![Keyring::Alice.into(), Keyring::Bob.into(), Keyring::Charlie.into()], - balances: vec![ - (Keyring::One.into(), 1u64 << 63), - (Keyring::Two.into(), 1u64 << 63), - (Keyring::Alice.into(), 1u64 << 63), - (Keyring::Bob.into(), 1u64 << 63), - (Keyring::Charlie.into(), 1u64 << 63), - ].into_iter().collect(), - block_time: 5, // 5 second block time. - session_length: 720, // that's 1 hour per session. - sessions_per_era: 24, // 24 hours per era. - bonding_duration: 90, // 90 days per bond. - approval_ratio: 667, // 66.7% approvals required for legislation. + consensus: Some(ConsensusConfig { + code: include_bytes!("../../runtime/wasm/genesis.wasm").to_vec(), + authorities: vec![god_key.clone()], + }), + system: None, + // block_time: 5, // 5 second block time. + session: Some(SessionConfig { + validators: vec![god_key.clone()], + session_length: 720, // that's 1 hour per session. + }), + staking: Some(StakingConfig { + current_era: 0, + intentions: vec![], + transaction_fee: 100, + balances: vec![(god_key.clone(), 1u64 << 63)].into_iter().collect(), + validator_count: 12, + sessions_per_era: 24, // 24 hours per era. + bonding_duration: 90, // 90 days per bond. + }), + democracy: Some(DemocracyConfig { + launch_period: 120 * 24 * 14, // 2 weeks per public referendum + voting_period: 120 * 24 * 28, // 4 weeks to discuss & vote on an active referendum + minimum_deposit: 1000, // 1000 as the minimum deposit for a referendum + }), + council: Some(CouncilConfig { + active_council: vec![], + candidacy_bond: 1000, // 1000 to become a council candidate + voter_bond: 100, // 100 down to vote for a candidate + present_slash_per_voter: 1, // slash by 1 per voter for an invalid presentation. + carry_count: 24, // carry over the 24 runners-up to the next council election + presentation_duration: 120 * 24, // one day for presenting winners. + approval_voting_period: 7 * 120 * 24, // one week period between possible council elections. + term_duration: 180 * 120 * 24, // 180 day term duration for the council. + desired_seats: 0, // start with no council: we'll raise this once the stake has been dispersed a bit. + inactive_grace_period: 1, // one addition vote should go by before an inactive voter can be reaped. + + cooloff_period: 90 * 120 * 24, // 90 day cooling off period if council member vetoes a proposal. + voting_period: 7 * 120 * 24, // 7 day voting period for council members. + }), + parachains: Some(Default::default()), }; let prepare_genesis = || { - storage = genesis_config.genesis_map(); + storage = genesis_config.build_externalities(); let block = genesis::construct_genesis_block(&storage); - storage.extend(additional_storage_with_genesis(&block)); + with_externalities(&mut storage, || + // TODO: use api.rs to dispatch instead + polkadot_runtime::System::initialise_genesis_state(&block.header) + ); (primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) }; @@ -229,4 +263,3 @@ impl Drop for Service { } } } - diff --git a/polkadot/transaction-pool/Cargo.toml b/polkadot/transaction-pool/Cargo.toml index 51271feece3b0..6efc3cc3fe659 100644 --- a/polkadot/transaction-pool/Cargo.toml +++ b/polkadot/transaction-pool/Cargo.toml @@ -8,7 +8,9 @@ transaction-pool = "1.9.0" error-chain = "0.11" polkadot-api = { path = "../api" } polkadot-primitives = { path = "../primitives" } +polkadot-runtime = { path = "../runtime" } substrate-primitives = { path = "../../substrate/primitives" } +substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } substrate-codec = { path = "../../substrate/codec" } ed25519 = { path = "../../substrate/ed25519" } ethereum-types = "0.2" diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index 3864852f8c1fe..f7797d96095ee 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -14,13 +14,15 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -extern crate transaction_pool; -extern crate polkadot_api; -extern crate polkadot_primitives as primitives; -extern crate substrate_primitives as substrate_primitives; -extern crate substrate_codec as codec; extern crate ed25519; extern crate ethereum_types; +extern crate substrate_codec as codec; +extern crate substrate_primitives as substrate_primitives; +extern crate substrate_runtime_primitives as substrate_runtime_primitives; +extern crate polkadot_runtime as runtime; +extern crate polkadot_primitives as primitives; +extern crate polkadot_api; +extern crate transaction_pool; #[macro_use] extern crate error_chain; @@ -30,8 +32,9 @@ use std::cmp::Ordering; use std::sync::Arc; use polkadot_api::PolkadotApi; -use primitives::AccountId; -use primitives::transaction::UncheckedTransaction; +use primitives::{AccountId, Timestamp}; +use runtime::{Block, UncheckedExtrinsic, TimestampCall, Call}; +use substrate_runtime_primitives::traits::Checkable; use transaction_pool::{Pool, Readiness}; use transaction_pool::scoring::{Change, Choice}; @@ -44,6 +47,55 @@ pub fn truncate_id(id: &AccountId) -> TruncatedAccountId { TruncatedAccountId::from_slice(&id[..20]) } + + +/// Useful functions for working with Polkadot blocks. +pub struct PolkadotBlock (Block); + +impl PolkadotBlock { + /// Create a new block, checking high-level well-formedness. + pub fn from(unchecked: Block) -> ::std::result::Result { + if unchecked.extrinsics.len() < 1 { + return Err(unchecked); + } + if unchecked.extrinsics[0].is_signed() { + return Err(unchecked); + } + if let Call::Timestamp(TimestampCall::set(_)) = unchecked.extrinsics[0].extrinsic.function {} else { + return Err(unchecked); + } + Ok(Self::from_known_good(unchecked)) + } + + /// Create a new block, skipping any high-level well-formedness checks. WARNING: This could + /// result in internal functions panicking if the block is, in fact, not well-formed. + pub fn from_known_good(known_good: Block) -> Self { + PolkadotBlock(known_good) + } + + /// Retrieve the timestamp of a Polkadot block. + pub fn timestamp(&self) -> Timestamp { + if let Call::Timestamp(TimestampCall::set(t)) = self.0.extrinsics[0].extrinsic.function { + t + } else { + unreachable!(); + } + } +} + +impl ::std::ops::Deref for PolkadotBlock { + type Target = Block; + fn deref(&self) -> &Block { + &self.0 + } +} + +impl From for Block { + fn from(pd: PolkadotBlock) -> Self { + pd.0 + } +} + /// Iterator over pending transactions. pub type PendingIterator<'a, C> = transaction_pool::PendingIterator<'a, VerifiedTransaction, Ready<'a, C>, Scoring, NoopListener>; @@ -51,12 +103,12 @@ pub type PendingIterator<'a, C> = error_chain! { errors { /// Attempted to queue an inherent transaction. - IsInherent(tx: UncheckedTransaction) { + IsInherent(xt: UncheckedExtrinsic) { description("Inherent transactions cannot be queued."), display("Inehrent transactions cannot be queued."), } /// Attempted to queue a transaction with bad signature. - BadSignature(tx: UncheckedTransaction) { + BadSignature(xt: UncheckedExtrinsic) { description("Transaction had bad signature."), display("Transaction had bad signature."), } @@ -76,7 +128,7 @@ error_chain! { /// A verified transaction which should be includable and non-inherent. #[derive(Debug, Clone)] pub struct VerifiedTransaction { - inner: UncheckedTransaction, + inner: ::Checked, hash: TransactionHash, address: TruncatedAccountId, insertion_id: u64, @@ -85,35 +137,36 @@ pub struct VerifiedTransaction { impl VerifiedTransaction { /// Attempt to verify a transaction. - fn create(tx: UncheckedTransaction, insertion_id: u64) -> Result { - if tx.is_inherent() { - bail!(ErrorKind::IsInherent(tx)) + fn create(xt: UncheckedExtrinsic, insertion_id: u64) -> Result { + if !xt.is_signed() { + bail!(ErrorKind::IsInherent(xt)) } - let message = codec::Slicable::encode(&tx); - if ed25519::verify(&*tx.signature, &message, &tx.transaction.signed[..]) { - // TODO: make transaction-pool use generic types. - let hash = substrate_primitives::hashing::blake2_256(&message); - let address = truncate_id(&tx.transaction.signed); - Ok(VerifiedTransaction { - inner: tx, - hash: hash.into(), - encoded_size: message.len(), - address, - insertion_id, - }) - } else { - Err(ErrorKind::BadSignature(tx).into()) + let message = codec::Slicable::encode(&xt); + match xt.check() { + Ok(xt) => { + // TODO: make transaction-pool use generic types. + let hash = substrate_primitives::hashing::blake2_256(&message); + let address = truncate_id(&xt.signed); + Ok(VerifiedTransaction { + inner: xt, + hash: hash.into(), + encoded_size: message.len(), + address, + insertion_id, + }) + } + Err(xt) => Err(ErrorKind::BadSignature(xt).into()), } } /// Access the underlying transaction. - pub fn as_transaction(&self) -> &UncheckedTransaction { - self.as_ref() + pub fn as_transaction(&self) -> &UncheckedExtrinsic { + self.as_ref().as_unchecked() } /// Consume the verified transaciton, yielding the unchecked counterpart. - pub fn into_inner(self) -> UncheckedTransaction { + pub fn into_inner(self) -> ::Checked { self.inner } @@ -133,8 +186,8 @@ impl VerifiedTransaction { } } -impl AsRef for VerifiedTransaction { - fn as_ref(&self) -> &UncheckedTransaction { +impl AsRef< ::Checked > for VerifiedTransaction { + fn as_ref(&self) -> &::Checked { &self.inner } } @@ -164,7 +217,7 @@ impl transaction_pool::Scoring for Scoring { type Score = u64; fn compare(&self, old: &VerifiedTransaction, other: &VerifiedTransaction) -> Ordering { - old.inner.transaction.nonce.cmp(&other.inner.transaction.nonce) + old.inner.index.cmp(&other.inner.index) } fn choose(&self, _old: &VerifiedTransaction, _new: &VerifiedTransaction) -> Choice { @@ -173,11 +226,11 @@ impl transaction_pool::Scoring for Scoring { fn update_scores( &self, - txs: &[Arc], + xts: &[Arc], scores: &mut [Self::Score], _change: Change ) { - for i in 0..txs.len() { + for i in 0..xts.len() { // all the same score since there are no fees. // TODO: prioritize things like misbehavior or fishermen reports scores[i] = 1; @@ -192,7 +245,7 @@ impl transaction_pool::Scoring for Scoring { pub struct Ready<'a, T: 'a + PolkadotApi> { at_block: T::CheckedBlockId, api_handle: &'a T, - known_nonces: HashMap, + known_indices: HashMap, } impl<'a, T: 'a + PolkadotApi> Clone for Ready<'a, T> { @@ -200,7 +253,7 @@ impl<'a, T: 'a + PolkadotApi> Clone for Ready<'a, T> { Ready { at_block: self.at_block.clone(), api_handle: self.api_handle, - known_nonces: self.known_nonces.clone(), + known_indices: self.known_indices.clone(), } } } @@ -212,24 +265,24 @@ impl<'a, T: 'a + PolkadotApi> Ready<'a, T> { Ready { at_block: at, api_handle: client, - known_nonces: HashMap::new(), + known_indices: HashMap::new(), } } } impl<'a, T: 'a + PolkadotApi> transaction_pool::Ready for Ready<'a, T> { - fn is_ready(&mut self, tx: &VerifiedTransaction) -> Readiness { - let sender = tx.inner.transaction.signed; + fn is_ready(&mut self, xt: &VerifiedTransaction) -> Readiness { + let sender = xt.inner.signed; - // TODO: find a way to handle nonce error properly -- will need changes to + // TODO: find a way to handle index error properly -- will need changes to // transaction-pool trait. let (api_handle, at_block) = (&self.api_handle, &self.at_block); - let next_nonce = self.known_nonces.entry(sender) - .or_insert_with(|| api_handle.nonce(at_block, sender).ok().unwrap_or_else(u64::max_value)); + let next_index = self.known_indices.entry(sender) + .or_insert_with(|| api_handle.index(at_block, sender).ok().unwrap_or_else(u64::max_value)); - *next_nonce += 1; + *next_index += 1; - match tx.inner.transaction.nonce.cmp(&next_nonce) { + match xt.inner.index.cmp(&next_index) { Ordering::Greater => Readiness::Future, Ordering::Equal => Readiness::Ready, Ordering::Less => Readiness::Stalled, @@ -255,11 +308,11 @@ impl TransactionPool { } /// Verify and import a transaction into the pool. - pub fn import(&mut self, tx: UncheckedTransaction) -> Result> { + pub fn import(&mut self, xt: UncheckedExtrinsic) -> Result> { let insertion_index = self.insertion_index; self.insertion_index += 1; - let verified = VerifiedTransaction::create(tx, insertion_index)?; + let verified = VerifiedTransaction::create(xt, insertion_index)?; // TODO: just use a foreign link when the error type is made public. let hash = verified.hash.clone(); diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index cbc81694c0999d1af58aaad064d227df8200e417..1d065a3690093b9c40e71c730dc4f17bcf9eb059 100644 GIT binary patch literal 4422 zcmc&%&2JmW6`z^?BzMPmBD6E_&6_vx zYu=m3;{85njPWgRM;spV=k#Se<{|#rj)5;f+~M@0Im49guzVfJBGF}kSbNUIOW_+y z`uJS(blez@I_bD^Fm7)$PRKbz?kD&k4@U9BgbBhf6ZRpnaj!RM#^agDAm9(ns>o;yT9w(zt z`x$d-`;uNr5BkYS3p5^elE!E-7-u2}w47-N8djt&nV3nxIef+pV{w65He(Jf3)?cI zVA{56@ge8jGB^{q3!AD}zcfAPD<0VWq(2xv6U-kc`{PC{9>hJ@%IourSs8*q?7a4jp@h~Xe0VO%o)(_maH74LBe*>1p7ib5__ewYUG>4t~93rS#JVJv1&*hAZ{xOALxjJ zX*Ps}VzMT#XomF3R4Yd|sU{-_xL1sV&XIPe8=~!htQXGy|LFC}G#$vZ+!b~amQ#0; zL&Dr4VK*de!R%9qklDk`?BOx9hcJ6s6X!t>pW&04eJQ*4VMLylWOYklc0?4c{*5t- zrWgDy@!aFl1aLN*0G@~@1h#t3x_Nx5FOQ~wKbn@i5N1LGU}+WzX90Ht5OrDHrk~{M z@&}YgaHE&Ht4zl#<)v@}AhklSd_~~C5)Ce@`WO3v(xk$fn_Un=ya^TIDujcav$!(h zzL>#b4h&*=N`*Nvn@0%EyK)3;zU3)Q0!gR?K`29OdGK+&p}SRQ1I6K5wiO8EbJT<( zT+3@>42o}XkWgQ zmPjaHYC)8bY@xC`qHZBo=(#fKBxP=hs~A3WHv~!lSBw>mUtrwKoOAY9`B2NDB=1DF zk5Wj9-k}7Ik514yp)9Uac1Hd$3+RrtFD*SoT$M#Rax?y#u%s)7so1?>P8re!drMj? zQ;q@^2m!wW<5-H*#LA9!6pt(qSHZ=m<)}d1DpB!BbmS%z)lIGGLg(r#7kMZ`6ztNx zU-APJqNBV8y8QVobg~Rk8?;;y>T~1*ty8O6pcmYy5{XuqM zc3fUk??vaRq~4C^fPSq@>YO~6l~i~K?#CUQK4yw|zetY9j^~}H`$bPq_m5#w7Vtr4 zu(2K**z8VxIRGfrr)$*ZYjmbUK}Mcrebpp7vm{8-LjD zq@DdoNh?BQBL{mCy|bl$yzh^i*L$7a?~V39Owe+q3Eu2YP$ez7^I%BN{CXYF?NK}| zukOe}Dr33xLy+yr$8ql&`-2v6j5Xt7-0X~>$pQMFc5m`<4F+RpP zkMRL#>;lG5bNEjf7Xe=rjC}_q^POHN-Rqm zq%qS*n$r%_I?+7Z$NEO+2tteGp3*HA&TJHm$9qI?raknJb$LPkmbQDn4x`uWKS`Rm ze*E5h^*UP2ByFM39rPR8b@lqAjcTQutnKc$t2e6c-FW@nD!IB|*KtD@%cmes)@wI5 z+uyIQRoc5rveuk?vzH8KTFLp%(Lp-y^pge!V!f{0KFzjX|LCJ;Z?JzbNLLUZ>?qe<@)OZjd3e^+UO-|qaAm8 zkf_qSnQXRdH><51mGxRXUOKyJU8YVO9r~p=d)Jk`b$wfRuJ2qs-Lj2#AJ%!)Y}eM; P;+yUE=FM6wZdU#abE{sA literal 14298 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 C);o&; diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm old mode 100644 new mode 100755 index ab23e9b4f7a2a110b637faa5c07e1bf18823a350..9ba001aada9be42e8982d5ae00ff6fef7a51b74c GIT binary patch literal 5096 zcmd5=OOG4J5$@@Ek~1UD>Xnt(mU`$#Kq0oorIt&s;KPm(t}HmREg*m2+hc>soV3XofJ3Xt3)2M*w4jzJJ0`UgpX{D6GbGbD#AZF~!|kLj-J zn(BIWRZp>Szo#(9l$yQ64-S+^^kh5Q0e;wyil=h0qtJuq3{$qll64@nL>K>H?GfX@ z=Q%a%-#ZaK7}tlRc7I%-j9XQv5Hd%|{Rsc#!6>{FF;3WXguMf7*zFD);W%o})>T^1 z(t1xWGK~-xAzGs-Vg`Y7tKDw67nSOz@&?lh=@8BM{@}sOP-~@XOm&i|qGqXFUfZnS zi$?9%LuS$I%W|PV=|v+c(0J62>Z8G69EB>-16kSyqH!Qd!c=n-Yn}>YK0JFj9 zA!p7w+8@`O;W(_f`z*I4!KgPJKdg_U@nqCzC$kba4EyZ{J9Sn9jX}TJ9=8Ymuv?E8 z&gA4m%9v+eiJ4jQD=C=FxO_^kAF<)Nb20X123#Sj$w;p*jV6$KH@egA*C+k^?S7NJ zCKq9_^XAl07YIcL5=IgPz9yZY&;Ie;nWvod1ODjsL;SG7+spG+IpteIaar)>hd}!* zV7_7phd&@1+ly&Gl8`Q#P`vNRw?B~>GhP=wU>lqTzmP~(aPPZB~cwbzMt71}lNzR(}%?BMZ-So3~D6wJoo6Rv0nf$FOyHCV7f>yYRgW|o}k zdxGDB7F_6pck-%Gg?=M%toW)hT!vS)KpE!^pnYHBdW&`t3Z%ZI?T$ zEqBnQkl2G52yGi$8nMd6Kxp_i-dXXUkcd!DjnxraUUe0R+f!m`A6sA-G7yO^3~~ol zv1w2gP?7uAG;*AdzbAV*9A!7r);oA9kbBq1;37iQhy0@{lTUzLpMF;~9e8>GDO zP2iugX^5M`h_y#h|L;_O|Nlkh-zn)dC%(kVUI%Al=45iCm$=dEcpoG>!C5mmlC!+n zS>6lI^5875!cW5=@HQTEXD!F+$@7sr5F*L((PctHq{3G}*V5s6sCaF_#wgD|7Q9GL1H zA$b?)u;g2q!6cA?IuInOFH$5ttd56*bI58}*&t97$FrKtQJ7HthH$)6;bTz#6MORD zAFKniS)O_jAJw5es)tG^asTY71_BxLQ`&&p@X{OrjFkCrnZ}Zg`d5oP^ECE+p2jHS zOL+qai7JTeW$+fVl$-||2@z-;{0$7BQT^QDr0SpIX%W*e;%PPZ=kd?LNlai;4Ksbi z!KH!fm`U{p4_R-pU4g$r#Rk=^z_A@Fn$YD8;aK1W--`E;gn3yIwSc|t<^ok{$rifM zS7ux}iY&_33Jj?S3QhEQYco)M-9~k@@M2stGsLy%XXk1NQ)npS!Md#HmMrGJjXFzb zMQAtjj;lchRB=~Ud1nP^UAQRbI*Elvx{G9d2UzpE%VBa`I5k&wOdDp{fI~HtECa1?N7yILLBP>ADLWkYQ`C<``16ZP#)#(A>`uQEVf`hNuN{Kavsg!IX{ULE?=oo3qeHF00H5v&#yA{Bk zly7i?w}iYEd_5K*-a2(Nc-ucgH-jxdho$GUn?X*Th;Ih)B%%gK_UJY51TK(5!Hw`E zQi(2=hM3;+tzUb%6dp2>NhZimGx{G%`Wg7~BKTtoX2Cr6u`Q>MB^DWX;TPFKumUm# z9u_?u?*NK$Z_A~0!0mwSUIaEvv=Vc2Mo9}0ZDj#}NpeUQm-^2?*}KE9nBL=}9V zv4?MJjAa>WU@~67{5<}T;`6|PgnfX=X^cxMV>-rn0DleRJ&a2jZz+tO!T2A$%KKFX=91j%_St7kdhJs-57>=DnetZX%qRE+BGp3q1huX8l|5Ub#|V{l@K8 z>7`4T$VHdF88rxXd-eM5Rr+76peGUan`oyDdUfgXwaVR%Qn3`R@9wrrYo*q1SgtL- z0e0&YCYv(k$k=5$19eoctW{fAO6$eeZWOIIYA0XpKb%UnA5Px_v$fJ_(jT{bQJn&L zttk5il4Ge_U!7ETSLLJ89qdm=5#~)oG$HWaR)~dr MRo$#K!$z_8AM7l7jsO4v literal 14394 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 diff --git a/substrate/runtime/consensus/Cargo.toml b/substrate/runtime/consensus/Cargo.toml index c2de219535770..f5cf7459d626b 100644 --- a/substrate/runtime/consensus/Cargo.toml +++ b/substrate/runtime/consensus/Cargo.toml @@ -7,18 +7,22 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } substrate-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime-support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-system = { path = "../system", default_features = false } [features] default = ["std"] std = [ "serde/std", "substrate-codec/std", + "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", "substrate-runtime-support/std", "substrate-runtime-primitives/std", + "substrate-runtime-system/std", ] diff --git a/substrate/runtime/consensus/src/lib.rs b/substrate/runtime/consensus/src/lib.rs index 7826c689e70c1..354604154e473 100644 --- a/substrate/runtime/consensus/src/lib.rs +++ b/substrate/runtime/consensus/src/lib.rs @@ -28,10 +28,15 @@ extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; extern crate substrate_codec as codec; +extern crate substrate_runtime_system as system; +extern crate substrate_primitives; use rstd::prelude::*; use runtime_support::{storage, Parameter}; use runtime_support::storage::unhashed::StorageVec; +use primitives::traits::RefInto; +use substrate_primitives::bft::MisbehaviorReport; + pub const AUTHORITY_AT: &'static[u8] = b":auth:"; pub const AUTHORITY_COUNT: &'static[u8] = b":auth:len"; @@ -44,15 +49,18 @@ impl StorageVec for AuthorityStorageVec { pub const CODE: &'static [u8] = b":code"; -pub trait Trait { - type SessionKey: Parameter + Default; +pub trait Trait: system::Trait { + type PublicAux: RefInto; + type SessionKey: Parameter + Default; } decl_module! { pub struct Module; + pub enum Call where aux: T::PublicAux { + fn report_misbehavior(aux, report: MisbehaviorReport) = 0; + } pub enum PrivCall { fn set_code(new: Vec) = 0; - fn dummy() = 1; } } @@ -67,7 +75,10 @@ impl Module { storage::unhashed::put_raw(CODE, &new); } - fn dummy() {} + /// Report some misbehaviour. + fn report_misbehavior(_aux: &T::PublicAux, _report: MisbehaviorReport) { + // TODO. + } /// Set the current set of authorities' session keys. /// @@ -85,6 +96,7 @@ impl Module { #[cfg(any(feature = "std", test))] pub struct GenesisConfig { pub authorities: Vec, + pub code: Vec, } #[cfg(any(feature = "std", test))] @@ -92,6 +104,7 @@ impl Default for GenesisConfig { fn default() -> Self { GenesisConfig { authorities: vec![], + code: vec![], } } } @@ -103,9 +116,10 @@ impl primitives::BuildExternalities for GenesisConfig use codec::{Slicable, KeyedVec}; let auth_count = self.authorities.len() as u32; let mut r: runtime_io::TestExternalities = self.authorities.into_iter().enumerate().map(|(i, v)| - ((i as u32).to_keyed_vec(b":auth:"), v.encode()) + ((i as u32).to_keyed_vec(AUTHORITY_AT), v.encode()) ).collect(); - r.insert(b":auth:len".to_vec(), auth_count.encode()); + r.insert(AUTHORITY_COUNT.to_vec(), auth_count.encode()); + r.insert(CODE.to_vec(), self.code); r } } diff --git a/substrate/runtime/council/src/lib.rs b/substrate/runtime/council/src/lib.rs index 9f7f4b21bbd1f..95bc7f1885aab 100644 --- a/substrate/runtime/council/src/lib.rs +++ b/substrate/runtime/council/src/lib.rs @@ -584,6 +584,7 @@ mod tests { type PublicAux = u64; } impl consensus::Trait for Test { + type PublicAux = ::PublicAux; type SessionKey = u64; } impl system::Trait for Test { @@ -596,7 +597,6 @@ mod tests { type Header = Header; } impl session::Trait for Test { - type PublicAux = ::PublicAux; type ConvertAccountIdToSessionKey = Identity; } impl staking::Trait for Test { @@ -611,6 +611,7 @@ mod tests { pub fn new_test_ext(with_council: bool) -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_externalities(); t.extend(consensus::GenesisConfig::{ + code: vec![], authorities: vec![], }.build_externalities()); t.extend(session::GenesisConfig::{ diff --git a/substrate/runtime/democracy/src/lib.rs b/substrate/runtime/democracy/src/lib.rs index 2ffe1441a383b..1d62416df5cda 100644 --- a/substrate/runtime/democracy/src/lib.rs +++ b/substrate/runtime/democracy/src/lib.rs @@ -345,6 +345,7 @@ mod tests { type PublicAux = u64; } impl consensus::Trait for Test { + type PublicAux = ::PublicAux; type SessionKey = u64; } impl system::Trait for Test { @@ -357,7 +358,6 @@ mod tests { type Header = Header; } impl session::Trait for Test { - type PublicAux = ::PublicAux; type ConvertAccountIdToSessionKey = Identity; } impl staking::Trait for Test { @@ -371,6 +371,7 @@ mod tests { fn new_test_ext() -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_externalities(); t.extend(consensus::GenesisConfig::{ + code: vec![], authorities: vec![], }.build_externalities()); t.extend(session::GenesisConfig::{ diff --git a/substrate/runtime/executive/src/lib.rs b/substrate/runtime/executive/src/lib.rs index a99bd28c987f1..2350666e497b7 100644 --- a/substrate/runtime/executive/src/lib.rs +++ b/substrate/runtime/executive/src/lib.rs @@ -18,6 +18,8 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "std")] extern crate serde; + extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_io as runtime_io; @@ -41,11 +43,10 @@ extern crate substrate_runtime_session as session; #[cfg(test)] extern crate substrate_runtime_staking as staking; -#[cfg(feature = "std")] extern crate serde; - use rstd::prelude::*; use rstd::marker::PhantomData; use runtime_io::Hashing; +use runtime_support::StorageValue; use primitives::traits::{self, Header, Zero, One, Checkable, Applyable, CheckEqual, Executable, MakePayment}; use codec::Slicable; @@ -122,27 +123,29 @@ impl< /// Apply outside of the block execution function. /// This doesn't attempt to validate anything regarding the block. - pub fn apply_extrinsic(utx: Block::Extrinsic) { + pub fn apply_extrinsic(uxt: Block::Extrinsic) { + >::put(>::get() + 1u32); + // Verify the signature is good. - let tx = match utx.check() { - Ok(tx) => tx, + let xt = match uxt.check() { + Ok(xt) => xt, Err(_) => panic!("All transactions should be properly signed"), }; - { + if xt.sender() != &Default::default() { // check index - let expected_index = >::account_index(tx.sender()); - assert!(tx.index() == &expected_index, "All transactions should have the correct nonce"); + let expected_index = >::account_index(xt.sender()); + assert!(xt.index() == &expected_index, "All transactions should have the correct nonce"); // increment nonce in storage - >::inc_account_index(tx.sender()); - } + >::inc_account_index(xt.sender()); - // pay any fees. - Payment::make_payment(tx.sender()); + // pay any fees. + Payment::make_payment(xt.sender()); + } // decode parameters and dispatch - tx.apply(); + xt.apply(); } fn final_checks(header: &System::Header) { @@ -180,6 +183,7 @@ mod tests { type PublicAux = u64; } impl consensus::Trait for Test { + type PublicAux = ::PublicAux; type SessionKey = u64; } impl system::Trait for Test { @@ -192,7 +196,6 @@ mod tests { type Header = Header; } impl session::Trait for Test { - type PublicAux = ::PublicAux; type ConvertAccountIdToSessionKey = Identity; } impl staking::Trait for Test { diff --git a/substrate/runtime/primitives/src/generic.rs b/substrate/runtime/primitives/src/generic.rs index 81c7ca44c69a4..6ad839028530d 100644 --- a/substrate/runtime/primitives/src/generic.rs +++ b/substrate/runtime/primitives/src/generic.rs @@ -86,7 +86,7 @@ pub struct UncheckedExtrinsic where AccountId: Member, Index: Member, Call: Member, - Signature: Member + Signature: Member, // TODO: should be Option { /// The actual extrinsic information. pub extrinsic: Extrinsic, @@ -94,6 +94,19 @@ pub struct UncheckedExtrinsic where pub signature: Signature, } +impl UncheckedExtrinsic where + AccountId: Member + Default, + Index: Member, + Call: Member, + Signature: Member + Default, +{ + /// Is this extrinsic signed? + pub fn is_signed(&self) -> bool { + // TODO: should be Option and Option + self.signature != Signature::default() || self.extrinsic.signed != AccountId::default() + } +} + impl Slicable for UncheckedExtrinsic where AccountId: Member + Slicable, Index: Member + Slicable, @@ -145,21 +158,25 @@ impl fmt::Debug for UncheckedExtrinsic traits::Checkable for UncheckedExtrinsic where - AccountId: Member, + AccountId: Member + Default, Index: Member, Call: Member, - Signature: Member + traits::Verify, + Signature: Member + Default + traits::Verify, Extrinsic: Slicable { type Checked = CheckedExtrinsic; fn check(self) -> Result { - if ::codec::Slicable::using_encoded(&self.extrinsic, |msg| - self.signature.verify(msg, &self.extrinsic.signed) - ) { + if !self.is_signed() { Ok(CheckedExtrinsic(self)) } else { - Err(self) + if ::codec::Slicable::using_encoded(&self.extrinsic, |msg| + self.signature.verify(msg, &self.extrinsic.signed) + ) { + Ok(CheckedExtrinsic(self)) + } else { + Err(self) + } } } } @@ -186,6 +203,16 @@ where pub fn signature(&self) -> &Signature { &self.0.signature } + + /// Get a reference to the checked signature. + pub fn as_unchecked(&self) -> &UncheckedExtrinsic { + &self.0 + } + + /// Get a reference to the checked signature. + pub fn into_unchecked(self) -> UncheckedExtrinsic { + self.0 + } } impl ops::Deref diff --git a/substrate/runtime/primitives/src/traits.rs b/substrate/runtime/primitives/src/traits.rs index 1e2008c976819..832c0c13ac2d7 100644 --- a/substrate/runtime/primitives/src/traits.rs +++ b/substrate/runtime/primitives/src/traits.rs @@ -35,7 +35,7 @@ pub trait Verify { } /// Ed25519 signature verify. -#[derive(Eq, PartialEq, Clone)] +#[derive(Eq, PartialEq, Clone, Default)] #[cfg_attr(feature = "std", derive(Debug, Serialize))] pub struct Ed25519Signature(H512); impl Verify for Ed25519Signature { @@ -102,8 +102,18 @@ impl Convert for Identity { fn convert(a: T) -> T { a } } +pub trait MaybeEmpty { + fn is_empty(&self) -> bool; +} + +impl MaybeEmpty for T { + fn is_empty(&self) -> bool { + *self == T::default() + } +} + pub trait HasPublicAux { - type PublicAux; + type PublicAux: MaybeEmpty; } pub trait RefInto { diff --git a/substrate/runtime/session/src/lib.rs b/substrate/runtime/session/src/lib.rs index cdaa9302eb1bc..ac26d6db724e8 100644 --- a/substrate/runtime/session/src/lib.rs +++ b/substrate/runtime/session/src/lib.rs @@ -44,8 +44,7 @@ use rstd::prelude::*; use primitives::traits::{Zero, One, RefInto, Executable, Convert}; use runtime_support::{StorageValue, StorageMap}; -pub trait Trait: consensus::Trait + system::Trait { - type PublicAux: RefInto; +pub trait Trait: consensus::Trait { type ConvertAccountIdToSessionKey: Convert; } @@ -162,28 +161,6 @@ pub struct GenesisConfig { pub validators: Vec, } -#[cfg(any(feature = "std", test))] -impl GenesisConfig where T::AccountId: From { - pub fn simple() -> Self where T::AccountId: From<[u8; 32]> { - use primitives::traits::As; - use keyring::Keyring::*; - let three = [3u8; 32]; - GenesisConfig { - session_length: T::BlockNumber::sa(2), - validators: vec![T::AccountId::from(One), T::AccountId::from(Two), T::AccountId::from(three)], - } - } - - pub fn extended() -> Self { - use primitives::traits::As; - use keyring::Keyring::*; - GenesisConfig { - session_length: T::BlockNumber::sa(1), - validators: vec![T::AccountId::from(Alice), T::AccountId::from(Bob), T::AccountId::from(Charlie)], - } - } -} - #[cfg(any(feature = "std", test))] impl Default for GenesisConfig { fn default() -> Self { @@ -224,6 +201,7 @@ mod tests { type PublicAux = u64; } impl consensus::Trait for Test { + type PublicAux = ::PublicAux; type SessionKey = u64; } impl system::Trait for Test { @@ -236,7 +214,6 @@ mod tests { type Header = Header; } impl Trait for Test { - type PublicAux = ::PublicAux; type ConvertAccountIdToSessionKey = Identity; } @@ -247,6 +224,7 @@ mod tests { fn new_test_ext() -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_externalities(); t.extend(consensus::GenesisConfig::{ + code: vec![], authorities: vec![1, 2, 3], }.build_externalities()); t.extend(GenesisConfig::{ diff --git a/substrate/runtime/staking/src/lib.rs b/substrate/runtime/staking/src/lib.rs index 947b08b240066..8722c6be9b1cd 100644 --- a/substrate/runtime/staking/src/lib.rs +++ b/substrate/runtime/staking/src/lib.rs @@ -685,6 +685,7 @@ mod tests { type PublicAux = u64; } impl consensus::Trait for Test { + type PublicAux = ::PublicAux; type SessionKey = u64; } impl system::Trait for Test { @@ -697,7 +698,6 @@ mod tests { type Header = Header; } impl session::Trait for Test { - type PublicAux = ::PublicAux; type ConvertAccountIdToSessionKey = Identity; } impl Trait for Test { @@ -708,6 +708,7 @@ mod tests { fn new_test_ext(session_length: u64, sessions_per_era: u64, current_era: u64, monied: bool) -> runtime_io::TestExternalities { let mut t = system::GenesisConfig::::default().build_externalities(); t.extend(consensus::GenesisConfig::{ + code: vec![], authorities: vec![], }.build_externalities()); t.extend(session::GenesisConfig::{ diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 84f89678a6a34..152bbbe299f66 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -67,6 +67,7 @@ decl_storage! { pub AccountIndex get(account_index): b"sys:non" => default map [ T::AccountId => T::Index ]; pub BlockHash get(block_hash): b"sys:old" => required map [ T::BlockNumber => T::Hash ]; + pub ExtrinsicIndex get(extrinsic_index): b"sys:xti" => required u32; RandomSeed get(random_seed): b"sys:rnd" => required T::Hash; // The current block number being processed. Set by `execute_block`. Number get(block_number): b"sys:num" => required T::BlockNumber; @@ -83,11 +84,13 @@ impl Module { >::put(parent_hash); >::put(txs_root); >::put(Self::calculate_random()); + >::put(0); } /// Remove temporary "environment" entries in storage. pub fn finalise() -> T::Header { >::kill(); + >::kill(); let number = >::take(); let parent_hash = >::take(); @@ -145,6 +148,20 @@ impl Module { >::put(n); } + /// Set the parent hash number to something in particular. Can be used as an alternative to + /// `initialise` for tests that don't need to bother with the other environment entries. + #[cfg(any(feature = "std", test))] + pub fn set_parent_hash(n: T::Hash) { + >::put(n); + } + + /// Set the random seed to something in particular. Can be used as an alternative to + /// `initialise` for tests that don't need to bother with the other environment entries. + #[cfg(any(feature = "std", test))] + pub fn set_random_seed(n: T::Hash) { + >::put(n); + } + /// Increment a particular account's nonce by 1. pub fn inc_account_index(who: &T::AccountId) { >::insert(who, Self::account_index(who) + T::Index::one()); diff --git a/substrate/runtime/timestamp/Cargo.toml b/substrate/runtime/timestamp/Cargo.toml index f9382e24be470..d1697273cffa0 100644 --- a/substrate/runtime/timestamp/Cargo.toml +++ b/substrate/runtime/timestamp/Cargo.toml @@ -7,9 +7,12 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } +substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime-support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../primitives", default_features = false } +substrate-runtime-system = { path = "../system", default_features = false } [dev-dependencies] substrate-runtime-io = { path = "../../runtime-io", default_features = true } @@ -18,8 +21,11 @@ substrate-runtime-io = { path = "../../runtime-io", default_features = true } default = ["std"] std = [ "substrate-runtime-std/std", + "substrate-runtime-io/std", "substrate-runtime-support/std", "substrate-runtime-primitives/std", "serde/std", "substrate-codec/std", + "substrate-primitives/std", + "substrate-runtime-system/std", ] diff --git a/substrate/runtime/timestamp/src/lib.rs b/substrate/runtime/timestamp/src/lib.rs index c651fd8753f43..300d2c22eb248 100644 --- a/substrate/runtime/timestamp/src/lib.rs +++ b/substrate/runtime/timestamp/src/lib.rs @@ -18,22 +18,25 @@ #![cfg_attr(not(feature = "std"), no_std)] -#[cfg_attr(test, macro_use)] +#[cfg_attr(any(feature = "std", test), macro_use)] extern crate substrate_runtime_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; -#[cfg(test)] +#[cfg(any(feature = "std", test))] extern crate substrate_runtime_io as runtime_io; +#[cfg(test)] +extern crate substrate_primitives; extern crate substrate_runtime_primitives as runtime_primitives; +extern crate substrate_runtime_system as system; extern crate substrate_codec as codec; use runtime_support::{StorageValue, Parameter}; -use runtime_primitives::traits::HasPublicAux; +use runtime_primitives::traits::{HasPublicAux, Executable, MaybeEmpty}; -pub trait Trait: HasPublicAux { +pub trait Trait: HasPublicAux + system::Trait { type Value: Parameter + Default; } @@ -45,8 +48,11 @@ decl_module! { } decl_storage! { - pub trait Store for Module; + trait Store for Module; pub Now get(now): b"tim:val" => required T::Value; + + // Did the timestamp get updated in this block? + DidUpdate: b"tim:did" => default bool; } impl Module { @@ -55,8 +61,36 @@ impl Module { } /// Set the current time. - fn set(_aux: &T::PublicAux, now: T::Value) { + fn set(aux: &T::PublicAux, now: T::Value) { + assert!(aux.is_empty()); + assert!(!::DidUpdate::exists(), "Timestamp must be updated only once in the block"); ::Now::put(now); + ::DidUpdate::put(true); + assert!(>::extrinsic_index() == 0, "Timestamp must be first extrinsic in the block"); + } +} + +impl Executable for Module { + fn execute() { + assert!(::DidUpdate::take(), "Timestamp must be updated once in the block"); + } +} + +#[cfg(any(feature = "std", test))] +#[derive(Default)] +pub struct GenesisConfig { + pub now: T::Value, +} + +#[cfg(any(feature = "std", test))] +impl runtime_primitives::BuildExternalities for GenesisConfig +{ + fn build_externalities(self) -> runtime_primitives::BuiltExternalities { + use runtime_io::twox_128; + use codec::Slicable; + map![ + twox_128(>::key()).to_vec() => self.now.encode() + ] } } @@ -64,25 +98,34 @@ impl Module { mod tests { use super::*; - use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::Joiner; + use runtime_io::with_externalities; use runtime_support::storage::StorageValue; + use substrate_primitives::H256; + use runtime_primitives::BuildExternalities; + use runtime_primitives::traits::{HasPublicAux}; + use runtime_primitives::testing::{Digest, Header}; - struct TraitImpl; - impl HasPublicAux for TraitImpl { + pub struct Test; + impl HasPublicAux for Test { type PublicAux = u64; } - impl Trait for TraitImpl { + impl system::Trait for Test { + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = runtime_io::BlakeTwo256; + type Digest = Digest; + type AccountId = u64; + type Header = Header; + } + impl Trait for Test { type Value = u64; } - type Timestamp = Module; + type Timestamp = Module; #[test] fn timestamp_works() { - - let mut t: TestExternalities = map![ - twox_128(::Now::key()).to_vec() => vec![].and(&42u64) - ]; + let mut t = GenesisConfig:: { now: 42 }.build_externalities(); with_externalities(&mut t, || { assert_eq!(::Now::get(), 42); diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 1e934f702c35daf2bf0aafe6fee1a556848f281c..b2a21300faab07147fcf52262248e7c285402457 100644 GIT binary patch literal 16318 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 Y9~{wrZee4kH#fh!w6L(evAi|+-%8y5t^fc4 literal 33039 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 C>x#Dk diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm old mode 100644 new mode 100755 index b8bcd03d8394115663e14df58070cf9290bc3b7d..2764d09d99d7719b82618d938f34f794e8d4daa2 GIT binary patch literal 17828 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 N!rWZ5-CUhn{vVbIo-+Ud literal 33119 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 jWOBuAg0t;-_&7t8J}!_hUG^`upJUno Date: Wed, 4 Apr 2018 18:00:48 +0200 Subject: [PATCH 02/19] Various fixes. --- .../release/demo_runtime.compact.wasm | Bin 196874 -> 196860 bytes .../release/demo_runtime.wasm | Bin 212586 -> 212578 bytes polkadot/executor/src/lib.rs | 4 - polkadot/runtime/src/lib.rs | 201 ++++++++++++++++-- polkadot/runtime/src/parachains.rs | 9 +- .../release/polkadot_runtime.wasm | Bin 135000 -> 207496 bytes 6 files changed, 188 insertions(+), 26 deletions(-) mode change 100644 => 100755 polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 3a19302231182b62685e6de0eb1084d5701385a9..1345f8f7adf85302795547008e83d53e877c59d9 100644 GIT binary patch delta 7121 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 TFjjsMLs{nU7`Z9Q^5uU34b9$Z diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index bd29309a06cad366e916390bb86986c9d0adc9e8..d89bfce37b383ec433f96f9d63e22389533e0d8f 100755 GIT binary patch delta 7610 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 diff --git a/polkadot/executor/src/lib.rs b/polkadot/executor/src/lib.rs index f53ca615171bf..e5e096418bec4 100644 --- a/polkadot/executor/src/lib.rs +++ b/polkadot/executor/src/lib.rs @@ -27,8 +27,4 @@ extern crate polkadot_primitives as polkadot_primitives; extern crate ed25519; extern crate triehash; -#[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_runtime_support as runtime_support; -#[cfg(test)] #[macro_use] extern crate hex_literal; - native_executor_instance!(pub Executor, polkadot_runtime::api::dispatch, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm")); diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 59fb504563b20..c8daf7101f795 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -1,25 +1,28 @@ // Copyright 2017 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Polkadot. -// Substrate Demo is free software: you can redistribute it and/or modify +// Polkadot is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Polkadot is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Polkadot. If not, see . -//! The Substrate Demo runtime. This can be compiled with ``#[no_std]`, ready for Wasm. +//! The Polkadot runtime. This can be compiled with ``#[no_std]`, ready for Wasm. #![cfg_attr(not(feature = "std"), no_std)] +extern crate substrate_runtime_std as rstd; #[macro_use] extern crate substrate_runtime_io as runtime_io; #[macro_use] extern crate substrate_runtime_support as runtime_support; +#[cfg_attr(feature = "std", macro_use)] extern crate substrate_primitives; +extern crate substrate_codec as codec; #[macro_use] extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_consensus as consensus; extern crate substrate_runtime_council as council; @@ -31,27 +34,20 @@ extern crate substrate_runtime_system as system; extern crate substrate_runtime_timestamp as timestamp; extern crate polkadot_primitives; +mod parachains; + +use rstd::prelude::*; use runtime_io::BlakeTwo256; use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, SessionKey, Signature}; use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; -//#[cfg(feature = "std")] pub use runtime_primitives::BuildExternalities; +pub use runtime_primitives::BuildExternalities; pub struct Concrete; impl HasPublicAux for Concrete { - type PublicAux = AccountId; -} - -impl timestamp::Trait for Concrete { - type Value = u64; -} -pub type Timestamp = timestamp::Module; - -impl consensus::Trait for Concrete { - type SessionKey = SessionKey; + type PublicAux = AccountId; // TODO: Option } -pub type Consensus = consensus::Module; impl system::Trait for Concrete { type Index = Index; @@ -64,8 +60,20 @@ impl system::Trait for Concrete { } pub type System = system::Module; -impl session::Trait for Concrete { +impl consensus::Trait for Concrete { type PublicAux = ::PublicAux; + type SessionKey = SessionKey; +} +pub type Consensus = consensus::Module; +pub use consensus::Call as ConsensusCall; + +impl timestamp::Trait for Concrete { + type Value = u64; +} +pub type Timestamp = timestamp::Module; +pub use timestamp::Call as TimestampCall; + +impl session::Trait for Concrete { type ConvertAccountIdToSessionKey = Identity; } pub type Session = session::Module; @@ -85,8 +93,12 @@ impl council::Trait for Concrete {} pub type Council = council::Module; pub type CouncilVoting = council::voting::Module; +impl parachains::Trait for Concrete {} +pub type Parachains = parachains::Module; + impl_outer_dispatch! { pub enum Call where aux: ::PublicAux { + Consensus = 0, Session = 1, Staking = 2, Timestamp = 3, @@ -110,7 +122,7 @@ pub type Block = generic::Block, AccountId, Index, Ca pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; pub type Extrinsic = generic::Extrinsic; pub type Executive = executive::Executive; + ((((((), Parachains), Council), Democracy), Staking), Session)>; impl_outer_config! { pub struct GenesisConfig for Concrete { @@ -120,6 +132,7 @@ impl_outer_config! { StakingConfig => staking, DemocracyConfig => democracy, CouncilConfig => council, + ParachainsConfig => parachains, } } @@ -134,3 +147,153 @@ pub mod api { validators => |()| super::Session::validators() ); } +/* +#[cfg(test)] +mod tests { + use super::*; + use codec::Slicable; + use substrate_serializer as ser; + + #[test] + fn test_header_serialization() { + let header = Header { + parent_hash: 5.into(), + number: 67, + state_root: 3.into(), + transaction_root: 6.into(), + digest: Digest { logs: vec![Log(vec![1])] }, + }; + + assert_eq!(ser::to_string_pretty(&header), r#"{ + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000005", + "number": 67, + "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000003", + "transactionRoot": "0x0000000000000000000000000000000000000000000000000000000000000006", + "digest": { + "logs": [ + "0x01" + ] + } +}"#); + + let v = header.encode(); + assert_eq!(Header::decode(&mut &v[..]).unwrap(), header); + } + + #[test] + fn block_encoding_round_trip() { + let mut block = Block { + header: Header::from_block_number(1), + body: Body { + timestamp: 100_000_000, + transactions: Vec::new(), + } + }; + + let raw = block.encode(); + let decoded = Block::decode(&mut &raw[..]).unwrap(); + + assert_eq!(block, decoded); + + block.body.transactions.push(UncheckedTransaction { + transaction: ::transaction::Transaction { + function: Function::StakingStake, + signed: Default::default(), + nonce: 10101, + }, + signature: Default::default(), + }); + + let raw = block.encode(); + let decoded = Block::decode(&mut &raw[..]).unwrap(); + + assert_eq!(block, decoded); + } + + #[test] + fn block_encoding_substrate_round_trip() { + let mut block = Block { + header: Header::from_block_number(1), + body: Body { + timestamp: 100_000_000, + transactions: Vec::new(), + } + }; + + block.body.transactions.push(UncheckedTransaction { + transaction: ::transaction::Transaction { + function: Function::StakingStake, + signed: Default::default(), + nonce: 10101, + }, + signature: Default::default(), + }); + + let raw = block.encode(); + let decoded_substrate = ::primitives::block::Block::decode(&mut &raw[..]).unwrap(); + let encoded_substrate = decoded_substrate.encode(); + let decoded = Block::decode(&mut &encoded_substrate[..]).unwrap(); + + assert_eq!(block, decoded); + } + + #[test] + fn decode_body_without_inherents_fails() { + let substrate_blank = ::primitives::block::Block { + header: ::primitives::block::Header::from_block_number(1), + transactions: Vec::new(), + }; + + let encoded_substrate = substrate_blank.encode(); + assert!(Block::decode(&mut &encoded_substrate[..]).is_none()); + } + + #[test] + fn inherent_transactions_iter_contains_all_inherent() { + let block = Block { + header: Header::from_block_number(1), + body: Body { + timestamp: 10101, + transactions: Vec::new(), + } + }; + + let mut iter = block.inherent_transactions(); + + assert_eq!(InherentFunction::count(), 1); // following depends on this assertion. + assert_eq!(iter.next().unwrap(), UncheckedTransaction::inherent(InherentFunction::TimestampSet(10101))); + assert!(iter.next().is_none()); + } +} + + +#[cfg(test)] +mod tests { + use super::*; + use primitives; + use ::codec::Slicable; + use primitives::hexdisplay::HexDisplay; + + #[test] + fn serialize_unchecked() { + let tx = UncheckedTransaction { + transaction: Transaction { + signed: [1; 32], + nonce: 999u64, + function: Function::Inherent(InherentFunction::TimestampSet(135135)), + }, + signature: primitives::hash::H512([0; 64]).into(), + }; + // 71000000 + // 0101010101010101010101010101010101010101010101010101010101010101 + // e703000000000000 + // 00 + // df0f0200 + // 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + + let v = Slicable::encode(&tx); + println!("{}", HexDisplay::from(&v)); + assert_eq!(UncheckedTransaction::decode(&mut &v[..]).unwrap(), tx); + } +} +*/ diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index a74152395fbbf..6eb9a79213b44 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -16,10 +16,13 @@ //! Main parachains logic. For now this is just the determination of which validators do what. -use {runtime_io, runtime_primitives, polkadot_primitives}; -use rstd::marker::PhantomData; +use polkadot_primitives; +#[cfg(any(feature = "std", test))] use {runtime_io, runtime_primitives}; +use rstd::prelude::*; +#[cfg(any(feature = "std", test))] use rstd::marker::PhantomData; use codec::{Slicable, Joiner}; -use runtime_support::{StorageValue, Hashable}; +use runtime_support::Hashable; +#[cfg(any(feature = "std", test))] use runtime_support::StorageValue; use runtime_primitives::traits::Executable; use polkadot_primitives::parachain::{Id, Chain, DutyRoster}; use {system, session}; diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm old mode 100644 new mode 100755 index daf9b0468286b4a56660257bb2e1936d1ab9ddf4..605e44f76afd8095e02ae1085d76537c342b41c9 GIT binary patch literal 207496 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 literal 135000 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 V$D^SnZf)Ll@VC Date: Wed, 4 Apr 2018 18:17:32 +0200 Subject: [PATCH 03/19] Fix tests. --- polkadot/api/src/lib.rs | 36 +++++++++++++++++++++++--- substrate/runtime/executive/src/lib.rs | 4 +-- substrate/runtime/timestamp/src/lib.rs | 2 +- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index c2c0ae82aeb33..848bf0c72c418 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -233,6 +233,8 @@ impl PolkadotApi for Client> extrinsics: extrinsics.clone(), }; + builder.initialise_block()?; + for inherent in extrinsics { builder.apply_extrinsic(inherent)?; } @@ -255,6 +257,32 @@ pub struct ClientBlockBuilder { impl ClientBlockBuilder where S::Error: Into { + // executes a extrinsic, inherent or otherwise, without appending to the list + fn initialise_block(&mut self) -> Result<()> { + let mut ext = state_machine::Ext { + overlay: &mut self.changes, + backend: &self.state, + }; + + let h = self.header.clone(); + + let result = ::substrate_executor::with_native_environment( + &mut ext, + || runtime::Executive::initialise_block(&h), + ).map_err(Into::into); + + match result { + Ok(_) => { + ext.overlay.commit_prospective(); + Ok(()) + } + Err(e) => { + ext.overlay.discard_prospective(); + Err(e) + } + } + } + // executes a extrinsic, inherent or otherwise, without appending to the list fn apply_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()> { let mut ext = state_machine::Ext { @@ -340,10 +368,10 @@ mod tests { validators: validators(), session_length: 100, }), - council: None, - democracy: None, - parachains: None, - staking: None, + council: Some(Default::default()), + democracy: Some(Default::default()), + parachains: Some(Default::default()), + staking: Some(Default::default()), }; ::client::new_in_mem( LocalDispatch::new(), diff --git a/substrate/runtime/executive/src/lib.rs b/substrate/runtime/executive/src/lib.rs index 2350666e497b7..519d7e6e7dd8b 100644 --- a/substrate/runtime/executive/src/lib.rs +++ b/substrate/runtime/executive/src/lib.rs @@ -124,8 +124,6 @@ impl< /// Apply outside of the block execution function. /// This doesn't attempt to validate anything regarding the block. pub fn apply_extrinsic(uxt: Block::Extrinsic) { - >::put(>::get() + 1u32); - // Verify the signature is good. let xt = match uxt.check() { Ok(xt) => xt, @@ -146,6 +144,8 @@ impl< // decode parameters and dispatch xt.apply(); + + >::put(>::get() + 1u32); } fn final_checks(header: &System::Header) { diff --git a/substrate/runtime/timestamp/src/lib.rs b/substrate/runtime/timestamp/src/lib.rs index 300d2c22eb248..5f67345c4b05d 100644 --- a/substrate/runtime/timestamp/src/lib.rs +++ b/substrate/runtime/timestamp/src/lib.rs @@ -64,9 +64,9 @@ impl Module { fn set(aux: &T::PublicAux, now: T::Value) { assert!(aux.is_empty()); assert!(!::DidUpdate::exists(), "Timestamp must be updated only once in the block"); + assert!(>::extrinsic_index() == 0, "Timestamp must be first extrinsic in the block"); ::Now::put(now); ::DidUpdate::put(true); - assert!(>::extrinsic_index() == 0, "Timestamp must be first extrinsic in the block"); } } From 34b653034a8d917d8dba3c402a8f6d6d88f3d940 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 18:21:45 +0200 Subject: [PATCH 04/19] Fix another test --- substrate/runtime/executive/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/substrate/runtime/executive/src/lib.rs b/substrate/runtime/executive/src/lib.rs index 519d7e6e7dd8b..924c6834baffd 100644 --- a/substrate/runtime/executive/src/lib.rs +++ b/substrate/runtime/executive/src/lib.rs @@ -242,7 +242,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("9228e363883f4f5a01981985b5598d1a767e987eb3ccea017a0e14cac7acc79d").into(), + state_root: hex!("aa0cff04242e55fc780861b890aa8deba555f6ed95bd8fa575dfd80864f3b93e").into(), extrinsics_root: hex!("56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421").into(), digest: Digest { logs: vec![], }, }, @@ -276,7 +276,7 @@ mod tests { header: Header { parent_hash: [69u8; 32].into(), number: 1, - state_root: hex!("93dde1251278e65430baf291337ba219bacfa9ad583c52513b12cf1974109a97").into(), + state_root: hex!("aa0cff04242e55fc780861b890aa8deba555f6ed95bd8fa575dfd80864f3b93e").into(), extrinsics_root: [0u8; 32].into(), digest: Digest { logs: vec![], }, }, From dd3c9cc71a4bec4839cdf31aac99790175209c65 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 18:26:02 +0200 Subject: [PATCH 05/19] Fix another test. --- substrate/runtime/system/src/lib.rs | 3 ++- substrate/runtime/timestamp/src/lib.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 152bbbe299f66..c7252a0acd38a 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -189,7 +189,8 @@ impl primitives::BuildExternalities for GenesisConfig twox_128(&>::key_for(T::BlockNumber::zero())).to_vec() => [69u8; 32].encode(), twox_128(>::key()).to_vec() => 1u64.encode(), twox_128(>::key()).to_vec() => [69u8; 32].encode(), - twox_128(>::key()).to_vec() => [0u8; 32].encode() + twox_128(>::key()).to_vec() => [0u8; 32].encode(), + twox_128(>::key()).to_vec() => [0u8; 4].encode() ] } } diff --git a/substrate/runtime/timestamp/src/lib.rs b/substrate/runtime/timestamp/src/lib.rs index 5f67345c4b05d..ee6bad5c83188 100644 --- a/substrate/runtime/timestamp/src/lib.rs +++ b/substrate/runtime/timestamp/src/lib.rs @@ -125,7 +125,8 @@ mod tests { #[test] fn timestamp_works() { - let mut t = GenesisConfig:: { now: 42 }.build_externalities(); + let mut t = system::GenesisConfig::::default().build_externalities(); + t.extend(GenesisConfig:: { now: 42 }.build_externalities()); with_externalities(&mut t, || { assert_eq!(::Now::get(), 42); From 37c32a392f55543b3491e15a21069ea0b8801dc3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 4 Apr 2018 10:54:14 +0200 Subject: [PATCH 06/19] Docs in polkadot runtime. --- polkadot/runtime/src/lib.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index c8daf7101f795..330df7d8f6c3f 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -43,6 +43,7 @@ use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; pub use runtime_primitives::BuildExternalities; +/// Concrete runtime type used to parameterize the various modules. pub struct Concrete; impl HasPublicAux for Concrete { @@ -58,39 +59,47 @@ impl system::Trait for Concrete { type AccountId = AccountId; type Header = generic::Header>; } +/// System module for this concrete runtime. pub type System = system::Module; impl consensus::Trait for Concrete { type PublicAux = ::PublicAux; type SessionKey = SessionKey; } +/// Consensus module for this concrete runtime. pub type Consensus = consensus::Module; pub use consensus::Call as ConsensusCall; impl timestamp::Trait for Concrete { type Value = u64; } +/// Timestamp module for this concrete runtime. pub type Timestamp = timestamp::Module; pub use timestamp::Call as TimestampCall; impl session::Trait for Concrete { type ConvertAccountIdToSessionKey = Identity; } +/// Session module for this concrete runtime. pub type Session = session::Module; impl staking::Trait for Concrete { type Balance = Balance; type DetermineContractAddress = BlakeTwo256; } +/// Staking module for this concrete runtime. pub type Staking = staking::Module; impl democracy::Trait for Concrete { type Proposal = PrivCall; } +/// Democracy module for this concrete runtime. pub type Democracy = democracy::Module; impl council::Trait for Concrete {} +/// Council module for this concrete runtime. pub type Council = council::Module; +/// Council voting module for this concrete runtime. pub type CouncilVoting = council::voting::Module; impl parachains::Trait for Concrete {} @@ -117,10 +126,15 @@ impl_outer_dispatch! { } } +/// Block header type as expected by this runtime. pub type Header = generic::Header>; +/// Block type as expected by this runtime. pub type Block = generic::Block, AccountId, Index, Call, Signature>; +/// Unchecked extrinsic type as expected by this runtime. pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// Extrinsic type as expected by this runtime. pub type Extrinsic = generic::Extrinsic; +/// Executive: handles dispatch to the various modules. pub type Executive = executive::Executive; From 54de9476884ef560cae63317a69986cff237a35e Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 21:07:29 +0200 Subject: [PATCH 07/19] Fix up ser/de tests. --- Cargo.lock | 1 + polkadot/primitives/src/lib.rs | 3 + polkadot/runtime/Cargo.toml | 1 + polkadot/runtime/src/lib.rs | 124 ++++++++++++------------------ substrate/primitives/src/block.rs | 2 +- 5 files changed, 57 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2df35a0c8dfad..1ba16fb244623 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1263,6 +1263,7 @@ dependencies = [ "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", + "substrate-serializer 0.1.0", ] [[package]] diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index 6e387b6915e6a..378cedec71fdd 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -46,6 +46,9 @@ pub const EVERYBODY: AccountId = [255u8; 32]; /// Something that identifies a block. pub use primitives::block::Id as BlockId; +/// The type of digest item. +pub use primitives::block::Log as Log; + /// An index to a block. pub type BlockNumber = u64; diff --git a/polkadot/runtime/Cargo.toml b/polkadot/runtime/Cargo.toml index 1e41284a4bf33..cb6c99de354c0 100644 --- a/polkadot/runtime/Cargo.toml +++ b/polkadot/runtime/Cargo.toml @@ -11,6 +11,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { path = "../../safe-mix", default_features = false} substrate-codec = { path = "../../substrate/codec" } +substrate-serializer = { path = "../../substrate/serializer" } substrate-runtime-std = { path = "../../substrate/runtime-std" } substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-runtime-support = { path = "../../substrate/runtime-support" } diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 330df7d8f6c3f..9016694920a15 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -22,6 +22,7 @@ extern crate substrate_runtime_std as rstd; #[macro_use] extern crate substrate_runtime_io as runtime_io; #[macro_use] extern crate substrate_runtime_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] extern crate substrate_primitives; +#[cfg(test)] extern crate substrate_serializer; extern crate substrate_codec as codec; #[macro_use] extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_consensus as consensus; @@ -36,9 +37,8 @@ extern crate polkadot_primitives; mod parachains; -use rstd::prelude::*; use runtime_io::BlakeTwo256; -use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, SessionKey, Signature}; +use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, Log, SessionKey, Signature}; use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; pub use runtime_primitives::BuildExternalities; @@ -55,9 +55,9 @@ impl system::Trait for Concrete { type BlockNumber = BlockNumber; type Hash = Hash; type Hashing = BlakeTwo256; - type Digest = generic::Digest>; + type Digest = generic::Digest; type AccountId = AccountId; - type Header = generic::Header>; + type Header = generic::Header; } /// System module for this concrete runtime. pub type System = system::Module; @@ -127,9 +127,9 @@ impl_outer_dispatch! { } /// Block header type as expected by this runtime. -pub type Header = generic::Header>; +pub type Header = generic::Header; /// Block type as expected by this runtime. -pub type Block = generic::Block, AccountId, Index, Call, Signature>; +pub type Block = generic::Block; /// Unchecked extrinsic type as expected by this runtime. pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; /// Extrinsic type as expected by this runtime. @@ -161,12 +161,16 @@ pub mod api { validators => |()| super::Session::validators() ); } -/* + #[cfg(test)] mod tests { use super::*; - use codec::Slicable; + use substrate_primitives as primitives; + use ::codec::Slicable; + use substrate_primitives::hexdisplay::HexDisplay; use substrate_serializer as ser; + use runtime_primitives::traits::{Digest as DigestT, Header as HeaderT}; + type Digest = generic::Digest; #[test] fn test_header_serialization() { @@ -174,15 +178,15 @@ mod tests { parent_hash: 5.into(), number: 67, state_root: 3.into(), - transaction_root: 6.into(), - digest: Digest { logs: vec![Log(vec![1])] }, + extrinsics_root: 6.into(), + digest: { let mut d = Digest::default(); d.push(Log(vec![1])); d }, }; assert_eq!(ser::to_string_pretty(&header), r#"{ "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000005", "number": 67, "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000003", - "transactionRoot": "0x0000000000000000000000000000000000000000000000000000000000000006", + "extrinsicsRoot": "0x0000000000000000000000000000000000000000000000000000000000000006", "digest": { "logs": [ "0x01" @@ -197,11 +201,17 @@ mod tests { #[test] fn block_encoding_round_trip() { let mut block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 100_000_000, - transactions: Vec::new(), - } + header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()), + extrinsics: vec![ + UncheckedExtrinsic { + extrinsic: Extrinsic { + function: Call::Timestamp(timestamp::Call::set(100_000_000)), + signed: Default::default(), + index: Default::default(), + }, + signature: Default::default(), + } + ], }; let raw = block.encode(); @@ -209,11 +219,11 @@ mod tests { assert_eq!(block, decoded); - block.body.transactions.push(UncheckedTransaction { - transaction: ::transaction::Transaction { - function: Function::StakingStake, + block.extrinsics.push(UncheckedExtrinsic { + extrinsic: Extrinsic { + function: Call::Staking(staking::Call::stake()), signed: Default::default(), - nonce: 10101, + index: 10101, }, signature: Default::default(), }); @@ -227,74 +237,43 @@ mod tests { #[test] fn block_encoding_substrate_round_trip() { let mut block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 100_000_000, - transactions: Vec::new(), - } + header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()), + extrinsics: vec![ + UncheckedExtrinsic { + extrinsic: Extrinsic { + function: Call::Timestamp(timestamp::Call::set(100_000_000)), + signed: Default::default(), + index: Default::default(), + }, + signature: Default::default(), + } + ], }; - block.body.transactions.push(UncheckedTransaction { - transaction: ::transaction::Transaction { - function: Function::StakingStake, + block.extrinsics.push(UncheckedExtrinsic { + extrinsic: Extrinsic { + function: Call::Staking(staking::Call::stake()), signed: Default::default(), - nonce: 10101, + index: 10101, }, signature: Default::default(), }); let raw = block.encode(); - let decoded_substrate = ::primitives::block::Block::decode(&mut &raw[..]).unwrap(); + let decoded_substrate = primitives::block::Block::decode(&mut &raw[..]).unwrap(); let encoded_substrate = decoded_substrate.encode(); let decoded = Block::decode(&mut &encoded_substrate[..]).unwrap(); assert_eq!(block, decoded); } - #[test] - fn decode_body_without_inherents_fails() { - let substrate_blank = ::primitives::block::Block { - header: ::primitives::block::Header::from_block_number(1), - transactions: Vec::new(), - }; - - let encoded_substrate = substrate_blank.encode(); - assert!(Block::decode(&mut &encoded_substrate[..]).is_none()); - } - - #[test] - fn inherent_transactions_iter_contains_all_inherent() { - let block = Block { - header: Header::from_block_number(1), - body: Body { - timestamp: 10101, - transactions: Vec::new(), - } - }; - - let mut iter = block.inherent_transactions(); - - assert_eq!(InherentFunction::count(), 1); // following depends on this assertion. - assert_eq!(iter.next().unwrap(), UncheckedTransaction::inherent(InherentFunction::TimestampSet(10101))); - assert!(iter.next().is_none()); - } -} - - -#[cfg(test)] -mod tests { - use super::*; - use primitives; - use ::codec::Slicable; - use primitives::hexdisplay::HexDisplay; - #[test] fn serialize_unchecked() { - let tx = UncheckedTransaction { - transaction: Transaction { + let tx = UncheckedExtrinsic { + extrinsic: Extrinsic { signed: [1; 32], - nonce: 999u64, - function: Function::Inherent(InherentFunction::TimestampSet(135135)), + index: 999u64, + function: Call::Timestamp(TimestampCall::set(135135)), }, signature: primitives::hash::H512([0; 64]).into(), }; @@ -307,7 +286,6 @@ mod tests { let v = Slicable::encode(&tx); println!("{}", HexDisplay::from(&v)); - assert_eq!(UncheckedTransaction::decode(&mut &v[..]).unwrap(), tx); + assert_eq!(UncheckedExtrinsic::decode(&mut &v[..]).unwrap(), tx); } } -*/ diff --git a/substrate/primitives/src/block.rs b/substrate/primitives/src/block.rs index 6f1ec91ab76a4..eb909c93fa069 100644 --- a/substrate/primitives/src/block.rs +++ b/substrate/primitives/src/block.rs @@ -48,7 +48,7 @@ impl Slicable for Transaction { } /// Execution log (event) -#[derive(PartialEq, Eq, Clone)] +#[derive(PartialEq, Eq, Clone, Default)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] pub struct Log(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); From 0ebe496e4687c70bb8ad552796d0f87d1cd05541 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 21:18:38 +0200 Subject: [PATCH 08/19] Update god keys --- polkadot/runtime/wasm/genesis.wasm | Bin 76656 -> 134951 bytes polkadot/service/src/lib.rs | 11 +++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/polkadot/runtime/wasm/genesis.wasm b/polkadot/runtime/wasm/genesis.wasm index bc0cb89235c570beee9e2749b796933e05e9f774..14e9b61cdb68d9492e000caea44b782b5387d502 100644 GIT binary patch literal 134951 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 v{#l#0Scr@9Eji#Q8H;;^2)nTNJWBW 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 diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 7847bd410b27c..89d873afe67a3 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -139,24 +139,27 @@ impl Service { info!("Generated a new keypair: {:?}", key.public()); } - let god_key = hex!["3d866ec8a9190c8343c2fc593d21d8a6d0c5c4763aaab2349de3a6111d64d124"]; + let god_keys = vec![ + hex!["f09c0d1467d6952c92c343672bfb06a24560f400af8cf98b93df7d40b4efe1b6"], + hex!["84718cd2894bcda83beeca3a7842caf269fe93cacde0bdee0e3cbce6de253f0e"] + ]; let genesis_config = GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/genesis.wasm").to_vec(), - authorities: vec![god_key.clone()], + authorities: god_keys.clone(), }), system: None, // block_time: 5, // 5 second block time. session: Some(SessionConfig { - validators: vec![god_key.clone()], + validators: god_keys.clone(), session_length: 720, // that's 1 hour per session. }), staking: Some(StakingConfig { current_era: 0, intentions: vec![], transaction_fee: 100, - balances: vec![(god_key.clone(), 1u64 << 63)].into_iter().collect(), + balances: god_keys.iter().map(|&k|(k, 1u64 << 63)].collect(), validator_count: 12, sessions_per_era: 24, // 24 hours per era. bonding_duration: 90, // 90 days per bond. From 861c1dc7b3657f9c4fd7e0d53f2ba4abff0b5f86 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 21:18:57 +0200 Subject: [PATCH 09/19] Syntax --- polkadot/service/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 89d873afe67a3..9676bdfcb903f 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -159,7 +159,7 @@ impl Service { current_era: 0, intentions: vec![], transaction_fee: 100, - balances: god_keys.iter().map(|&k|(k, 1u64 << 63)].collect(), + balances: god_keys.iter().map(|&k|(k, 1u64 << 63)).collect(), validator_count: 12, sessions_per_era: 24, // 24 hours per era. bonding_duration: 90, // 90 days per bond. From 1abb6a5bafb2a069e64ace07ae1d4dca01a548e9 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 21:33:24 +0200 Subject: [PATCH 10/19] Fix --- polkadot/service/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 9676bdfcb903f..43245971df53c 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -159,7 +159,7 @@ impl Service { current_era: 0, intentions: vec![], transaction_fee: 100, - balances: god_keys.iter().map(|&k|(k, 1u64 << 63)).collect(), + balances: god_keys.iter().map(|&k|(k, 1u64 << 60)).collect(), validator_count: 12, sessions_per_era: 24, // 24 hours per era. bonding_duration: 90, // 90 days per bond. From e75e47cf789b6186221605b2da9ed5385c4b9246 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 21:40:53 +0200 Subject: [PATCH 11/19] Merge remote-tracking branch 'origin/master' into gav-merge-runtime --- .../release/demo_runtime.compact.wasm | Bin 196860 -> 196901 bytes .../release/demo_runtime.wasm | Bin 212578 -> 212605 bytes polkadot/runtime/src/lib.rs | 2 +- .../substrate_test_runtime.compact.wasm | Bin 16318 -> 16318 bytes .../release/substrate_test_runtime.wasm | Bin 17828 -> 17828 bytes 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 1345f8f7adf85302795547008e83d53e877c59d9..2dc1eec3ceeb591fedffe9fcc387303c9bb88cc1 100644 GIT binary patch delta 11371 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 N{K(pG>}dJ;e*yh?zRLgr delta 11284 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 diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index d89bfce37b383ec433f96f9d63e22389533e0d8f..007cf49d5e91adb41536b4864caf5b6cb2c8d9b8 100755 GIT binary patch delta 12374 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 uxng@#*=$-@u?j{sr-VGQgSZgx`P2qzW* delta 12465 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 diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 9016694920a15..a0142d0249837 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -41,7 +41,7 @@ use runtime_io::BlakeTwo256; use polkadot_primitives::{AccountId, Balance, BlockNumber, Hash, Index, Log, SessionKey, Signature}; use runtime_primitives::generic; use runtime_primitives::traits::{Identity, HasPublicAux}; -pub use runtime_primitives::BuildExternalities; +#[cfg(feature = "std")] pub use runtime_primitives::BuildExternalities; /// Concrete runtime type used to parameterize the various modules. pub struct Concrete; diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index b2a21300faab07147fcf52262248e7c285402457..ce0865268634c40f567ead6fbbb58a1f73fb3aa7 100644 GIT binary patch delta 49 zcmdm2zpsA7KR%`}Je&AmsspLXugxqOmv2@z4`Q0!ZE4L@oRgWHs-K&mqE}SBc%LO3 E02t5{)Bpeg delta 55 zcmdm2zpsA7KR%`o-c9^3)q&LH*JhTCC7V^vgO~(!GLw??i&FKAb25`t^>g!6CYM;+ KZ9ZoCgB1X6)D_17 diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 2764d09d99d7719b82618d938f34f794e8d4daa2..9d2352b34e729276d07dbc6bc4785559c25ad128 100755 GIT binary patch delta 53 zcmZ3|&A6nSal>-~rY}94UkcpN0@9NYTRSi=-^^kY#56g}&YGt-~rjFjtF9mLB0qMzytsNLkHnZ3SF$v~mCMD+=rRo>wWG1KT=jNwO N4z{z~ywvVL8vwQ<7YzUa From f8af345a1ecbfbef8287315c4510463e304ad744 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 4 Apr 2018 22:31:42 +0200 Subject: [PATCH 12/19] Permissions on init.sh --- polkadot/runtime/wasm/init.sh | 0 .../release/polkadot_runtime.wasm | Bin 207496 -> 206587 bytes 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 polkadot/runtime/wasm/init.sh diff --git a/polkadot/runtime/wasm/init.sh b/polkadot/runtime/wasm/init.sh old mode 100644 new mode 100755 diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 605e44f76afd8095e02ae1085d76537c342b41c9..10946c6207536081fdd7bf136c6c111b3fe8238b 100755 GIT binary patch delta 54931 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 delta 55683 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 Date: Thu, 5 Apr 2018 08:53:01 +0200 Subject: [PATCH 13/19] Port-over the whitespace from @rphmeier --- polkadot/runtime/src/lib.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index a0142d0249837..11c21ac079b80 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -18,13 +18,23 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[macro_use] +extern crate substrate_runtime_io as runtime_io; + +#[macro_use] +extern crate substrate_runtime_support as runtime_support; + +#[macro_use] +extern crate substrate_runtime_primitives as runtime_primitives; + +#[cfg(test)] +extern crate substrate_serializer; + +#[cfg_attr(feature = "std", macro_use)] +extern crate substrate_primitives; + extern crate substrate_runtime_std as rstd; -#[macro_use] extern crate substrate_runtime_io as runtime_io; -#[macro_use] extern crate substrate_runtime_support as runtime_support; -#[cfg_attr(feature = "std", macro_use)] extern crate substrate_primitives; -#[cfg(test)] extern crate substrate_serializer; extern crate substrate_codec as codec; -#[macro_use] extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_consensus as consensus; extern crate substrate_runtime_council as council; extern crate substrate_runtime_democracy as democracy; From 0cb074ff9c6e7608c9368ba65759ac3baf62f6c6 Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 5 Apr 2018 09:58:01 +0200 Subject: [PATCH 14/19] Rename --- polkadot/transaction-pool/src/lib.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index f7797d96095ee..45b1e45f8343a 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -47,8 +47,6 @@ pub fn truncate_id(id: &AccountId) -> TruncatedAccountId { TruncatedAccountId::from_slice(&id[..20]) } - - /// Useful functions for working with Polkadot blocks. pub struct PolkadotBlock (Block); @@ -69,7 +67,7 @@ impl PolkadotBlock { /// Create a new block, skipping any high-level well-formedness checks. WARNING: This could /// result in internal functions panicking if the block is, in fact, not well-formed. - pub fn from_known_good(known_good: Block) -> Self { + pub fn force_from(known_good: Block) -> Self { PolkadotBlock(known_good) } From 6c1149cec0d2cc17a62ec031cbd6809ba15316f5 Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 5 Apr 2018 10:06:06 +0200 Subject: [PATCH 15/19] Merge branch 'master' into gav-merge-runtime --- .../release/demo_runtime.compact.wasm | Bin 196901 -> 196909 bytes .../release/demo_runtime.wasm | Bin 212605 -> 212625 bytes polkadot/runtime/wasm/build.sh | 2 +- .../release/polkadot_runtime.compact.wasm | Bin 134951 -> 190956 bytes .../release/polkadot_runtime.wasm | Bin 206587 -> 206587 bytes .../substrate_test_runtime.compact.wasm | Bin 16318 -> 16318 bytes .../release/substrate_test_runtime.wasm | Bin 17828 -> 17828 bytes 7 files changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm index 2dc1eec3ceeb591fedffe9fcc387303c9bb88cc1..678cce19cb9ae31f9bb6759d50928d0c285e4fa7 100644 GIT binary patch delta 7804 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 Z-uP(yBxFyXIlH`X-#Jwk>&A$O{|&s;pU?mR delta 7738 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 H!L;kYx&!RJ diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm index 007cf49d5e91adb41536b4864caf5b6cb2c8d9b8..c386dfdcdd0eb467338f9111fa45912212d6fad3 100755 GIT binary patch delta 8543 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 BDLMcE diff --git a/polkadot/runtime/wasm/build.sh b/polkadot/runtime/wasm/build.sh index 53ca2a0018ce5..d48d10a062d38 100755 --- a/polkadot/runtime/wasm/build.sh +++ b/polkadot/runtime/wasm/build.sh @@ -2,7 +2,7 @@ set -e cargo +nightly build --target=wasm32-unknown-unknown --release -for i in demo_runtime +for i in polkadot_runtime do wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm done diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 14e9b61cdb68d9492e000caea44b782b5387d502..42c255a920e10b5f0ef415398aeb66944861827e 100644 GIT binary patch literal 190956 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

SlE>g6sJk&^45^v$L-+Q8hZT@7<#G7 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 F^Zy~zIh_Ci delta 9825 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 MHbNd|64$%_9}hD{RsaA1 diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index ce0865268634c40f567ead6fbbb58a1f73fb3aa7..c9da182130b78148ba2a8210612f5a6b2a5c3007 100644 GIT binary patch delta 1225 zcmZ`(OH30{6n$@6U}nmc5wRcq4W)eiKtI?*rIw5s7Jfovbiry`$^#2SM`s4DE-Wie zj2iVO#-%&mm>4G}NDRi6E;M0dV&cZ7J6*aW-f3$Js)fqoO5}Bao-T zQQn0+TzHPznq?biVUB5~vTYF2r9!n*<)uYt7Hl@7*=C7preWBGhX_^S5#7xbUJ#m^ z1OZ;qi~ZfZS%npsY=+W8*(wz6l2InT{@GHwpqDJBP3uN+f%G|txis&r4!ojWEfP_v z%Finv^|z=t%UufX=lBTk204N++>2!>4W_#n6_5Ck%Ehs&0_(B;Enmqzt`^{KymveFHGZmnS&%!3PkmAkFEKb1sd0)e+(|3l zE0Ri7B8zHu0vqQ}l3|amaB6K}S(k#(=_usI0lEVB#W0OJ&&4FAJOsA@EnhEJ3gzWMV(uDB@=KC-%U?O3R;oxwD5sz-cGYxzkb^Tj#wSoUc z{O}fhs)4^pd~g#_60JepLSl52Aaf0T3O5#UKGDdZ!I$CVPI%-T6)m$E(@WEXrUkQ^ zvjC;))f_rRI4 uV>ANGV>!7S3)lT!GjbHN*-7Zkg}ptuX%^n)LNJ*t_w?>`3-oQf1pWX>I54sR delta 1118 zcmZvbPi)&%9LL|!Y2)X_j!he&OWVmwvo>v^?VP1;+R)A#0tt!=XhT#SoIiUl$=rBy z+^t-ii4#Mb)aoZ~AR)nJ+AaubzElH^-aujpg!psiz>N#rY1;vKPQr+)T6+FIf8N*c z_xzr}_nP;byYtTr%_i&=dz--p&09p);)*N z5UXFpYYWE&BH>$Lq5$!P6u`c~&(0gU+{wIkiMiGF4@d;}AWp^JULuN;h+o3FjNZ?- zS!K&(mgko0jZ(#{I(3qctyk+MyV_t@*>)-y$O(T!n5EcMUxfPz*?v4w!;tj9Qw@NW z|3ouDz8*2dx?uiAYMO}la9T3&D<(0CMv?U`1NCqAQ4sbie${`OeowVHiJG7JQ}I$5 zB-~BheeToR9jk-$8Yit=gykTZN* zMM?9u8OrF>{*Ll;->%f!n%iwT;DWyyxN0(O*wZwvR=8 z1T|gIk~oyJA?jbvm7!;!Y6<^mY zSw(F*{!eM_h#0DQgo2LtqT~yUcLkLfX(zB1wImh_t9WHu!he=De$v|VRsQ>b^U~^g c`lzU$IF!`U*9&K{RCpHCOQ&EA*Or$41t1F$y#N3J diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 9d2352b34e729276d07dbc6bc4785559c25ad128..f648f7d54edd94cc10be5d6909d6a5c2fad254c7 100755 GIT binary patch delta 1306 zcmaJ>TW=Fb6rQsi2VY`)p%Iwew3t90E5*dIodiSB;--}lmx53wq^cX+8PZLRw_0zg z+ep|TKse?WMyQCks1iZp4WtD%yum}ODB^)10PRbwf`kNbMXglz%*Lt{8ft5G_I%%W z&Ww*|zL_e_RN+$px`q;dpfqepGAv+neArQ%-v9038d@|}Iueb?dj`~F)X1qJCQ`>=NhRM_d>NEl_DR|34~Z@b7@FA4-jUL*%ySoCvmYx{o`p`e>9wgx?@ zSR3ocwqM6WFvW7Q@W1a5VxMd*S8yTe3SW+Rl&j0KJByk1%YY78v_IMDnLCd{1;0|2 z9Zz;Zm3^1&Wlufv4x32`NNoU*EXa@$8e~CvCXC5~G;3{b+6{2an)Dt7|GC8>Ap44p zNfq|Q*R`y%I^++4FkfMLsp6l*G1hl^*=k(NhfO)lO^0D z&Q4Iu4Py#s?1#WkxWWDid<+-ZzV+Atr{eosg|}rAF0x8XdWEfqT-e&lJ5O2R)^6}W zUbeSq7Hxac%!cBT_P0y~&jAjEO~((yE%s~t6x^`1M9}`J=liz79GmZJgIV@lUlA@? zpZ0$RtLE+h;TyJ)94OsyB&3-TvKr5-1LF?N+c1t};>8%j2ahvZk9g-2e4vJ>P#0Q) zD>eKj;^8Iu;TrxB@hx>cO4J&028m>yAfq+>FfQ!I_YZ3MEW5jXoArA8UT_zTY$T^; zwipFAG`Oe3poNK?i5WpKs~a>@$Z1&`IjWCv$?d@tr4=l|we0r0-@N#qW`5mA>rS9* zc~ftCs|k3$T>rU&D)lp3^hvgnESiYAmfM8i$DvFvJx-%)G@g(SFz>E}_1Df}k)3(} t5OiK1O2a0W8QLXn#%7B~VLQUR?4pukk5VlVV!x-ZZ|YjfN5XH|$Ulxga(e&( delta 1231 zcmaJ>U1$_n6uxI>H~W{JnT^|YF&Z~(G;2t+W<&n1GA3Foia$ufADI2g7Fm)ll+=rYA>KB{OPh z#LcUt`$Ej5j*jhB^`xN=D~6s?6GY;u8uxspQ>ke9UxwQ zK?C6k;faHH@`P|42gK=gIi1Ai^0@F09D>DIS`!SB7GYOrG?~lfRV9_v(tAkM`&w_f zhnx5g^EYnLgEs?R@DLL{^{!W3Hq1#=rdYQQ;Jmqg-WCu~9x0WGTodNxzerXphEh6&Tt z)CS`7Sz%3^Ly@;Z^O^5Hv>j(L_*p#eY?zl1)0pTVOPAjV8Rgs&cNn6a6yc=b@rnOy zC}Ti~wNBVS5n`mWMRL!OLJ^*k!VwQ8Wrc=?pLs+hUgohp;-entgf_bDBOwYCI4!h( zoUa#mwoF!NKpzkE(k$)vjE3z!9abV6U$ej<4OXJ@ zabE$Bn&0*x1lM)zcutuQL=EWf1A*pQY0d^3p@Nk_Cq5qNEMBZ3BuEGe(5vU9vX%~B zD%aAF-b(TfwJ)G@jN*POV>Z5+;>}ffpN(&ze$gsiw(-9y-dcrkdymJ-18QimGAK4- zlHvnZ_=t_)z-ue|U3onn%VkpLn-!Y?*Q{LMn9pU>YHY7I+^*AUDy`{iOjq+`IfDWO zudMv3Sj(!<*sm3oj(D$U&U*I#XDR#qjQzb%t6tfy7HTD?erN@(*8KuQQn} Date: Thu, 5 Apr 2018 12:18:37 +0200 Subject: [PATCH 16/19] Fix typo. --- polkadot/transaction-pool/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index 45b1e45f8343a..1ab846bfa1ae6 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -62,7 +62,7 @@ impl PolkadotBlock { if let Call::Timestamp(TimestampCall::set(_)) = unchecked.extrinsics[0].extrinsic.function {} else { return Err(unchecked); } - Ok(Self::from_known_good(unchecked)) + Ok(Self::force_from(unchecked)) } /// Create a new block, skipping any high-level well-formedness checks. WARNING: This could From cd135abd38548d1fca463bfa01f51bf6bf3f1067 Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 5 Apr 2018 16:15:48 +0200 Subject: [PATCH 17/19] Fix grumbles. --- polkadot/runtime/src/parachains.rs | 2 +- polkadot/transaction-pool/src/lib.rs | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 6eb9a79213b44..18137427a3e85 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -54,7 +54,7 @@ impl Module { let mut roles_gua = roles_val.clone(); let h = >::random_seed(); - let mut seed = Vec::::new().and(&h).and(b"validator_role_pairs").blake2_256(); + let mut seed = h.to_vec().and(b"validator_role_pairs").blake2_256(); // shuffle for i in 0..(validator_count - 1) { diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index 1ab846bfa1ae6..d8f98d8313e14 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -48,7 +48,10 @@ pub fn truncate_id(id: &AccountId) -> TruncatedAccountId { } /// Useful functions for working with Polkadot blocks. -pub struct PolkadotBlock (Block); +pub struct PolkadotBlock { + block: Block, + location: Option<(&'static str, usize)>, +} impl PolkadotBlock { /// Create a new block, checking high-level well-formedness. @@ -62,35 +65,44 @@ impl PolkadotBlock { if let Call::Timestamp(TimestampCall::set(_)) = unchecked.extrinsics[0].extrinsic.function {} else { return Err(unchecked); } - Ok(Self::force_from(unchecked)) + Ok(PolkadotBlock { block: unchecked, location: None }) } /// Create a new block, skipping any high-level well-formedness checks. WARNING: This could /// result in internal functions panicking if the block is, in fact, not well-formed. - pub fn force_from(known_good: Block) -> Self { - PolkadotBlock(known_good) + pub fn force_from(known_good: Block, file: &'static str, line: usize) -> Self { + PolkadotBlock { block: known_good, location: Some((file, line)) } } /// Retrieve the timestamp of a Polkadot block. pub fn timestamp(&self) -> Timestamp { - if let Call::Timestamp(TimestampCall::set(t)) = self.0.extrinsics[0].extrinsic.function { + if let Call::Timestamp(TimestampCall::set(t)) = self.block.extrinsics[0].extrinsic.function { t } else { - unreachable!(); + if let Some((file, line)) = self.location { + panic!("Invalid block used in `PolkadotBlock::force_from` at {}:{}", file, line); + } else { + panic!("Invalid block made it through the PolkadotBlock verification!?"); + } } } } +#[macro_export] +macro_rules! assert_polkadot_block { + ($known_good:expr) => ( PolkadotBlock::force_from(known_good, file!(), line!()) ) +} + impl ::std::ops::Deref for PolkadotBlock { type Target = Block; fn deref(&self) -> &Block { - &self.0 + &self.block } } impl From for Block { fn from(pd: PolkadotBlock) -> Self { - pd.0 + pd.block } } From dc91a448af4676a317291d01421f7015ef297792 Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 5 Apr 2018 16:41:26 +0200 Subject: [PATCH 18/19] Make more idiomatic. --- polkadot/transaction-pool/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/polkadot/transaction-pool/src/lib.rs b/polkadot/transaction-pool/src/lib.rs index d8f98d8313e14..40b793ceb7925 100644 --- a/polkadot/transaction-pool/src/lib.rs +++ b/polkadot/transaction-pool/src/lib.rs @@ -62,9 +62,12 @@ impl PolkadotBlock { if unchecked.extrinsics[0].is_signed() { return Err(unchecked); } - if let Call::Timestamp(TimestampCall::set(_)) = unchecked.extrinsics[0].extrinsic.function {} else { - return Err(unchecked); + match unchecked.extrinsics[0].extrinsic.function { + Call::Timestamp(TimestampCall::set(_)) => return Err(unchecked), + _ => {} } + + // any further checks... Ok(PolkadotBlock { block: unchecked, location: None }) } From 45c8ffce2b4c58884156072b0263028cfce888d4 Mon Sep 17 00:00:00 2001 From: Gav Date: Thu, 5 Apr 2018 16:46:16 +0200 Subject: [PATCH 19/19] Move `Ed25519Signature` out of traits. --- demo/primitives/src/lib.rs | 2 +- polkadot/primitives/src/lib.rs | 2 +- substrate/runtime/primitives/src/lib.rs | 25 +++++++++++++++++++++- substrate/runtime/primitives/src/traits.rs | 23 +------------------- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/demo/primitives/src/lib.rs b/demo/primitives/src/lib.rs index ecfb5f7e7d214..86945c733f528 100644 --- a/demo/primitives/src/lib.rs +++ b/demo/primitives/src/lib.rs @@ -49,4 +49,4 @@ pub type Index = u64; pub type Hash = primitives::H256; /// Alias to 512-bit hash when used in the context of a signature on the relay chain. -pub type Signature = runtime_primitives::traits::Ed25519Signature; +pub type Signature = runtime_primitives::Ed25519Signature; diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index 378cedec71fdd..012cf57b3d21a 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -70,7 +70,7 @@ pub type Index = u64; pub type Hash = primitives::H256; /// Alias to 512-bit hash when used in the context of a signature on the relay chain. -pub type Signature = runtime_primitives::traits::Ed25519Signature; +pub type Signature = runtime_primitives::Ed25519Signature; /// A timestamp: seconds since the unix epoch. pub type Timestamp = u64; diff --git a/substrate/runtime/primitives/src/lib.rs b/substrate/runtime/primitives/src/lib.rs index 69a3039de6aee..3d157cc2d47b7 100644 --- a/substrate/runtime/primitives/src/lib.rs +++ b/substrate/runtime/primitives/src/lib.rs @@ -34,7 +34,10 @@ extern crate substrate_runtime_support as runtime_support; extern crate substrate_codec as codec; extern crate substrate_primitives; -#[cfg(feature = "std")] use std::collections::HashMap; +#[cfg(feature = "std")] +use std::collections::HashMap; + +use substrate_primitives::hash::H512; #[cfg(feature = "std")] pub mod testing; @@ -50,6 +53,26 @@ pub trait BuildExternalities { fn build_externalities(self) -> BuiltExternalities; } +/// Ed25519 signature verify. +#[derive(Eq, PartialEq, Clone, Default)] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] +pub struct Ed25519Signature(H512); +impl traits::Verify for Ed25519Signature { + type Signer = [u8; 32]; + fn verify(&self, msg: &[u8], signer: &Self::Signer) -> bool { + runtime_io::ed25519_verify(&(self.0).0, msg, &signer[..]) + } +} +impl codec::Slicable for Ed25519Signature { + fn decode(input: &mut I) -> Option { Some(Ed25519Signature(codec::Slicable::decode(input)?,)) } + fn using_encoded R>(&self, f: F) -> R { self.0.using_encoded(f) } +} +impl From for Ed25519Signature { + fn from(h: H512) -> Ed25519Signature { + Ed25519Signature(h) + } +} + #[macro_export] macro_rules! __impl_outer_config_types { ($concrete:ident $config:ident $snake:ident $($rest:ident)*) => { diff --git a/substrate/runtime/primitives/src/traits.rs b/substrate/runtime/primitives/src/traits.rs index 832c0c13ac2d7..cadb94f64aa2d 100644 --- a/substrate/runtime/primitives/src/traits.rs +++ b/substrate/runtime/primitives/src/traits.rs @@ -20,8 +20,7 @@ use rstd::prelude::*; use rstd; #[cfg(not(feature = "std"))] use runtime_io; use substrate_primitives; -use codec::{Input, Slicable}; -use substrate_primitives::hash::H512; +use codec::Slicable; pub use integer_sqrt::IntegerSquareRoot; pub use num_traits::{Zero, One, Bounded}; use rstd::ops::{Add, Sub, Mul, Div, Rem, AddAssign, SubAssign, MulAssign, DivAssign, RemAssign}; @@ -34,26 +33,6 @@ pub trait Verify { fn verify(&self, msg: &[u8], signer: &Self::Signer) -> bool; } -/// Ed25519 signature verify. -#[derive(Eq, PartialEq, Clone, Default)] -#[cfg_attr(feature = "std", derive(Debug, Serialize))] -pub struct Ed25519Signature(H512); -impl Verify for Ed25519Signature { - type Signer = [u8; 32]; - fn verify(&self, msg: &[u8], signer: &Self::Signer) -> bool { - ::runtime_io::ed25519_verify(&(self.0).0, msg, &signer[..]) - } -} -impl Slicable for Ed25519Signature { - fn decode(input: &mut I) -> Option { Some(Ed25519Signature(Slicable::decode(input)?,)) } - fn using_encoded R>(&self, f: F) -> R { self.0.using_encoded(f) } -} -impl From for Ed25519Signature { - fn from(h: H512) -> Ed25519Signature { - Ed25519Signature(h) - } -} - /// Simple payment making trait, operating on a single generic `AccountId` type. pub trait MakePayment { /// Make some sort of payment concerning `who`.