From f32d94c4eba3075aa5b4d4f26a9110876326832b Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 10 Apr 2018 15:30:02 +0200 Subject: [PATCH 1/3] initialise dummy block before API calls --- polkadot/api/src/lib.rs | 22 ++++++++++++++++++---- polkadot/runtime/src/parachains.rs | 17 +++++++---------- substrate/runtime/system/src/lib.rs | 7 ------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index bf747624c3945..d47430d66f71a 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -153,17 +153,30 @@ impl CheckedBlockId for CheckedId { } } -// set up the necessary scaffolding to execute the runtime. +// set up the necessary scaffolding to execute a set of calls to the runtime. +// this creates a new block on top of the given ID and initialises it. macro_rules! with_runtime { ($client: ident, $at: expr, $exec: expr) => {{ - $client.state_at($at.block_id()).map_err(Error::from).and_then(|state| { + let parent = $at.block_id(); + let header = Header { + parent_hash: $client.block_hash_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))?, + number: $client.block_number_from_id(parent)?.ok_or(ErrorKind::UnknownBlock(*parent))? + 1, + state_root: Default::default(), + extrinsics_root: Default::default(), + digest: Default::default(), + }; + + $client.state_at(parent).map_err(Error::from).and_then(|state| { let mut changes = Default::default(); let mut ext = state_machine::Ext { overlay: &mut changes, backend: &state, }; - ::substrate_executor::with_native_environment(&mut ext, $exec).map_err(Into::into) + ::substrate_executor::with_native_environment(&mut ext, || { + ::runtime::Executive::initialise_block(&header); + ($exec)() + }).map_err(Into::into) }) }} } @@ -204,7 +217,8 @@ impl PolkadotApi for Client> with_runtime!(self, at, || { ::runtime::System::initialise(&number, &parent_hash, &Default::default()); - ::runtime::Parachains::calculate_duty_roster() + let random_seed = ::runtime::System::random_seed(); + ::runtime::Parachains::calculate_duty_roster(random_seed) }) } diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index ef46a25146e62..3a62a8c95c872 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -40,8 +40,9 @@ decl_storage! { } impl Module { - /// Calculate the current block's duty roster. - pub fn calculate_duty_roster() -> DutyRoster { + /// Calculate the current block's with given random seed. + /// In normal operation, this will be called with `System::random_seed()`. + pub fn calculate_duty_roster(random_seed: T::Hash) -> DutyRoster { let parachain_count = Self::count(); let validator_count = >::validator_count(); let validators_per_parachain = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 }; @@ -53,8 +54,7 @@ impl Module { }).collect::>(); let mut roles_gua = roles_val.clone(); - let h = >::random_seed(); - let mut seed = h.to_vec().and(b"validator_role_pairs").blake2_256(); + let mut seed = random_seed.to_vec().and(b"validator_role_pairs").blake2_256(); // shuffle for i in 0..(validator_count - 1) { @@ -191,17 +191,14 @@ mod tests { 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(); + let duty_roster_0 = Parachains::calculate_duty_roster([0u8; 32].into()); check_roster(&duty_roster_0); - System::set_random_seed([1u8; 32].into()); - let duty_roster_1 = Parachains::calculate_duty_roster(); + let duty_roster_1 = Parachains::calculate_duty_roster([1u8; 32].into()); 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(); + let duty_roster_2 = Parachains::calculate_duty_roster([2u8; 32].into()); check_roster(&duty_roster_2); assert!(duty_roster_0 != duty_roster_2); assert!(duty_roster_1 != duty_roster_2); diff --git a/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 864a007726238..76d3122469bf7 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -157,13 +157,6 @@ impl Module { >::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()); From 72757ebc1a52f5000759a4b54f715bc972427728 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 8 May 2018 11:07:22 +0200 Subject: [PATCH 2/3] test for random-seed --- .../release/demo_runtime.compact.wasm | Bin 237462 -> 237616 bytes .../release/demo_runtime.wasm | Bin 259212 -> 259323 bytes polkadot/api/src/lib.rs | 8 ++++++++ .../release/polkadot_runtime.compact.wasm | Bin 233155 -> 233318 bytes .../release/polkadot_runtime.wasm | Bin 255070 -> 255214 bytes .../release/runtime_test.compact.wasm | Bin 11121 -> 11129 bytes .../release/runtime_test.wasm | Bin 11789 -> 11797 bytes .../substrate_test_runtime.compact.wasm | Bin 16186 -> 16187 bytes .../release/substrate_test_runtime.wasm | Bin 17932 -> 17933 bytes 9 files changed, 8 insertions(+) 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 2823d62ae5865afffa2131340e994ac50fd21098..3a11483da2abd45668fc1e7955a12e391a036093 100644 GIT binary patch delta 17054 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 PM@`1SgMYn2)vNwL`Nv*_ delta 17136 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 KY(;d3r2hjxPd#V= 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 d95558e2ed6ac7f05a3f5757d487b3626061d63c..4a4d907df7d04631a667f499fb3ad08542f0cfa1 100755 GIT binary patch delta 19258 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 d((V*&avl5Q5*0GhR-F>&0{m`V4 delta 19316 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 diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index d47430d66f71a..83b09f8937115 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -436,4 +436,12 @@ mod tests { fn fails_to_check_id_for_unknown_block() { assert!(client().check_id(BlockId::Number(100)).is_err()); } + + #[test] + fn gets_random_seed_with_genesis() { + let client = client(); + + let id = client.check_id(BlockId::Number(0)).unwrap(); + assert!(client.random_seed(&id).is_ok()); + } } 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 05ff2f4505ecc9101c2c807d72d996ce4be6848b..3f05418e5e6e68884f77ec2e5091b27d4af22f98 100644 GIT binary patch delta 17139 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%0DMDdIYZ#50BuR80=0T$+fy; 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 XME&)=pArheec`Bx{4ky{eA@p2s*_Sc 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 4bb8fff698606d580795c8a9f0ac8bff1bee958d..4d67e2c5514a7f13093a8d855ec96bc94dc5e8e9 100755 GIT binary patch delta 19069 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 delta 19122 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 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 c7e6b0e25f79e4752f09aee93de4a49256d06155..7c16bd90033dd8fd0180894617b4995714957a76 100644 GIT binary patch delta 808 zcmY+BO-NKx6vywq^WnUCXm`|^)Uj#48YhRC_cianNeHiy5EvSjv?||wbDw39qShj! z395DCZRet*RV#(Js8!e^kSJ(VSP)3HabYAy=*q5xLal!P^FRN4IETAAx;?tIf#4SZ zfu8Ygl;?fHF__>F0(E~OcnS5+$v6k(2%wJ};w=uKI=tOf&jGp&u4aRIfcn$08PHWf z-^39-`1FMozOX7~00kK+(@zqWF{0lk8cKsS#38ya(I$-2hyoJ<`ctBTG{WIb0QHMW zsE9xo()ys7xcBteZX(cl`iEm&P3=e~0BJyj6BLxe-DqE<3XAF(xF6-?xZJrS<1CPI z8<2xw0LmeNON}Ge_#z>l29bT=lzS-4L$w?${u&w|)@neA{bbC)+PVxWjM87h@lz zCMt?eKMN{?U;N{Vmq;YHJGADtC=K8q;aU^)8@DWMVVD9Wpnay72Z!%|iD*Hry&2qLo z_9_TKI{@H)1b~pB$~UsflV^pBKma7cu&_(J9l@C3u<+x81EP)!4(%}`bn0K9pUx%W zoPQ;E0%D`)c+6CoTGdt8FbRL2pNUmeVt9^jnVM5|428t_WT6*p6<1S9MK{eFAxh2T z*N=>2PqzuPHN~hY#I)`BZnD*KHBG5GL}R+A5LQVH@~J|Rj}%(4%3Q_L6=vw3ZJR{p z*9s+`C}7mFpGon}!o61A^IW32c9kivY8d3ue!B(RhHKcC=2RGQT%A<-yPi|nwk*rh zO-o!t^r}YuLUA5qB9^snv5o6GhM3~796bjQFxRx0LcEH|GOfx>B@?TPWogW;Dz>Yt Htfu`1VkgHj delta 843 zcmZvZO=#3W6vyAprtPNjV^XcPw(9P7-L4kxY(6GQ1#wi0f}nzmCvB2V>K7Fi6hvK* zo;!kq7eNntsuB=EP%nZ9kyR)NdZ{PH59&#ZC_dME5WM8~{{OuHn|aLK{;&J*ex_tr zeW7<$Sv#xxG+oWnvU->s%dTsO=(@`W8vr8@@>;8S&T_OtE_O5qKt6$EC9Mo}bAc=b z+04ovijwY|5A^l}O}z*bio}pFb!jjv-|Dih00qL@wW41XW5KF#x&SDE)Q(CRhVS~umTE_}9)9R*oDKIrF<1!< zwge0fwh*HY*idVU*J_IGCbN@fA8BU&WM%ZAiDlh`9}G@5$RFad&mCqXH{Fune+#fxP|Es7cklT@Y0-z&*q8>v2?cardH|i10cOtjVvxxPo|M+F}aKs{j z1s%taOdLBhF`lEBvy%gx2y>l~bKgw@m)Cia#_DnTbXUl&APFt*C%zqvSeSw0m8yBz z7xgG~YM$r2+~rQJF02_h{Uovz*RCgt<9UJA-Rf00DyG^{@zsY4qdoKS)Q&AjI5FpS zkJsWv-K+RrwZ!8#kG-^Racjp!xf5z2PO}ZwNy5UYF6>l9X@tuNS7gn#d&%N3i2NYNb)!Jo VZmR4d!P1%|+(d+KYK0<9-Cq%(#nAu& 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 index d9d13ededb2358097b90cf309a674805c4f74934..6c6b8d63a9e281a49d7a2072183004bcce2dffdf 100755 GIT binary patch delta 752 zcmY+9Pe@cj9LHzguDZLAYTo*X-BongEnQRD_kZ3}L1U~@1Qii6P*@a5Ss+COMS2Kq6c2U!{C?m0&hVLuf$Iaa`yzM+ z_DAl)(a2V~5go*7_!>DME=R|t#H38RkQ_to4qT{f!}H;E9Y{EH*GklO&&P9!p&XXk z+c=Yn#1`YMCX2F|#Mn}t)e$KxF=R`K{eVG|so!Y*jI&5Kvfla)6QtC-8n+S3A{MPO zR795&JJz>avGtel2D_+2Dm1`wK^G%z=#ck6`OQUAs8IG-c zCC^l8xdFa+GNN0)u2IXd?Fyx8C4kEvpah0XxvQ&YMWwdumQ!ohq~q(lTJfmPjX;*-GxDTFL=KYCXFEQsqVWauKJp3(sEYZJV9L3 zH(f{fEKWV&pcZ`Y@`>v>j%V18(5FU8r{S^fbC^&e=(<9{_dQd*5O(xj!CSa*J6xrK aCAwTM!K2=til#b_&h3)w`kKZodigIEJ;u}k delta 828 zcmZvaJxmlq6vt=w7P!6Du*(6$LEsJ*4gs0{nAu%FiWQHjiBYJDvb(p7ph07Sg&MFh zAu1M*M(8A3V1>y=?T8j8nizAEkdSDDT9~K=D+)j2No%Y`_G&AlDX42(f8r*ZAcJ(++e_5@A*{0Nb zjEj6q?dCr#7T`3Wd;#`ke`D)dy`X<4IEKD^IB*2Bj)9N_^k|VYH*2RPyQ#!!4 zhunAkajlP2ye8HEkH5sPrn+&e@H+KD#9s@ujh8T<;q95*(p?c29gE8={8eToKH!aX zcAY&R^4_K%ey{1l=t@GK#8gB`MF=$klfaJxLM6Z_peupJ_=au;b1io(wxPSBo&`M& zJOqqmge2f^&~3oK`D5T$f!+i66TpL;%&esv{!`ci9`rzHOWB#h;nRb|12JK|u)O^S zR;cL_V$;x}Bu|_u;MaCeCq1G&p{El&w2goTELYjXM_c#vb1h;y%ln?GS(Z%+C1${H zHuG{j^o@`j`7kss%h5S$>Ec#agLGu?U%s2C);wN{n;o|7K&r!cwe7o0&T^DkLHZmMLunE#^6b!gi*$ zvi3==EM08AbKo@J$6~d3zwA~0_Nw~Oxfy;jxj_5NqQ@xs>c{5(}pt+IzzKP#t{ zgKlL4Ez7-os71^WjMXw|@=3TsIl)Qccvc(o&KN@AK*^cB^}hASXi@Lmg80RT5g+kz&-gGJ=tKQvKUTBv)SW(1X5`st?gcc=-i^S z<+r(Dkq1XHM+-z;S>E~yRZJ)zI8Q=l(uu4o-^WKRgYbev<_;x#CCldYhM~?zlM+Z) LYHM71p1%D7_qtb- delta 289 zcmW;FyGlbr6op|%Y%D_Ngaok@#6~dgx$nt|0Sim97A>5s3W*4UWjZ^xndcCN)0x)F z-WRd6bFf;)&*EDxKbG(3J<@a+y`NE?)1A#V((kTzKbwtbx_;{xi9B}F?2|sX$w7`x z86kD_hjy3(G(n3 zMjFR#&K^5I4TMH1P+?UiH!K2_@52L{03_ocRWvSSk;`y)O*3c>P_IfE;4+n`+1np7 C6jVb1 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 c80254075723fd6a415a6dbab119f42579d1987b..063e3c5ed25c9b20f7471bcba2949bb564dbeb02 100755 GIT binary patch delta 294 zcmWN@J4ypV7yw{KtOAlHMg*&LL4-K}ya#kwLl#RFPcZY(OqE!wh2R4Vixnl)T6hFu zODhYzcm-Q8-~mkaeN9828uEVEB`@uLcd@zTcsN`k^Y(JP>2)6atLJVO$!)(~+w&w3 z$|B$FzZEPb@JdVWCA!E=-YtK63Y}33El|K{RH`>JlrcY4X9a+_R!4MbF@TNvx0yK&(1qYodliJXz8+1d7qby?AsN?N7y)c~ zZH>++<7pA7HyBdTfJlX=?PB~&3MQzhG%}G;M${@_O?Z)jIfgz_W4U#L=a0#CVP#Sh O1+%ER)XLLldu-C2r>gRi^NnMloyDnKa_ubWAoAbe7gS<3Xhjp*>xU;!%^GN>s&DL>A zy39rgDNw1oP@%-z(HkyC+X&C;XV+WC@f4 OXjdsUFcI;r`1%LxXj*0f From 38fa831c67c2e68877171579bf7a76698179b197 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 8 May 2018 13:11:45 +0200 Subject: [PATCH 3/3] revert polkadot-runtime changes --- polkadot/api/src/lib.rs | 12 +----------- polkadot/runtime/src/parachains.rs | 17 ++++++++++------- substrate/runtime/system/src/lib.rs | 7 +++++++ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/polkadot/api/src/lib.rs b/polkadot/api/src/lib.rs index 83b09f8937115..731c19a49637d 100644 --- a/polkadot/api/src/lib.rs +++ b/polkadot/api/src/lib.rs @@ -209,17 +209,7 @@ impl PolkadotApi for Client> } fn duty_roster(&self, at: &CheckedId) -> Result { - // duty roster can only be queried at the start of a block, - // so we create a dummy. - let id = at.block_id(); - let parent_hash = self.block_hash_from_id(id)?.ok_or(ErrorKind::UnknownBlock(*id))?; - let number = self.block_number_from_id(id)?.ok_or(ErrorKind::UnknownBlock(*id))? + 1; - - with_runtime!(self, at, || { - ::runtime::System::initialise(&number, &parent_hash, &Default::default()); - let random_seed = ::runtime::System::random_seed(); - ::runtime::Parachains::calculate_duty_roster(random_seed) - }) + with_runtime!(self, at, ::runtime::Parachains::calculate_duty_roster) } fn timestamp(&self, at: &CheckedId) -> Result { diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index 3a62a8c95c872..ef46a25146e62 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -40,9 +40,8 @@ decl_storage! { } impl Module { - /// Calculate the current block's with given random seed. - /// In normal operation, this will be called with `System::random_seed()`. - pub fn calculate_duty_roster(random_seed: T::Hash) -> DutyRoster { + /// 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 = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 }; @@ -54,7 +53,8 @@ impl Module { }).collect::>(); let mut roles_gua = roles_val.clone(); - let mut seed = random_seed.to_vec().and(b"validator_role_pairs").blake2_256(); + let h = >::random_seed(); + let mut seed = h.to_vec().and(b"validator_role_pairs").blake2_256(); // shuffle for i in 0..(validator_count - 1) { @@ -191,14 +191,17 @@ mod tests { assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2); }; - let duty_roster_0 = Parachains::calculate_duty_roster([0u8; 32].into()); + System::set_random_seed([0u8; 32].into()); + let duty_roster_0 = Parachains::calculate_duty_roster(); check_roster(&duty_roster_0); - let duty_roster_1 = Parachains::calculate_duty_roster([1u8; 32].into()); + 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); - let duty_roster_2 = Parachains::calculate_duty_roster([2u8; 32].into()); + 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/substrate/runtime/system/src/lib.rs b/substrate/runtime/system/src/lib.rs index 76d3122469bf7..864a007726238 100644 --- a/substrate/runtime/system/src/lib.rs +++ b/substrate/runtime/system/src/lib.rs @@ -157,6 +157,13 @@ impl Module { >::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());