From 6c7e28696731e80d86abba1ff1ea59554acd9560 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 8 Feb 2018 21:07:13 +0100 Subject: [PATCH 1/5] update wasm binaries --- .../release/polkadot_runtime.compact.wasm | Bin 77991 -> 77991 bytes .../release/polkadot_runtime.wasm | Bin 78040 -> 78040 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 5418e0432c20b6e36fc79ff8ab4f65e793bcc78b..4f3bdfc57d502916d6b2c4bf1dfeac3f3fae2273 100644 GIT binary patch delta 1767 zcmZ`(du&rx7(d^+t-ae_y9*hm(AT-$tAmQe1fomOT{LlzvUMAe2}Ux#!k~s*72|*ig2v4EF5Hu)-OhS}|EheV%xflowg8JRwtX>KDY>@VueIVB;6VQB_h8a=gia~Xm`iM@Iq;d^k*Wk_jFN1ct;Rh-X zdsK^DBhTY|7M}b6x=+A7KCLlGV~Vz}u^wn#;X_OEY^o8hZqL_A_^;1@@9B5S(}|?s zGGLoGE%h02+{=GkJdDBG(2|)JTP&aw*{Y@tnqn6R>Hh$D&19`mGCPo zgEW=)pmH^zGvMMCE0c7@i0NpT#(MVPO@ePKLreg!%De5qQ)hbMsATVH4BaX}UL^hD6|Ue7WL75v`zlcP+6!6X<=f;xgsf?UPF z-q8(}THQ`JmcduOa{#Nz+r=zU$7e+gP*@y&5ujQ-5xZ-~59yQM?*tkoeA&S#QQ3QN za}MouYXzV7iBQcip4?|2Ne@t&Iyy=9Kmczz#5+$-5f;eRTI^JtphrA%_9@7J;Lc`dZ@7na zdK|4uENf=kI?)JTkufK|(f&f1MR&32AB8ZL##wZ75tPwk7Huek=`&)A)M{)ZCwXtf(AnNLwC{G7UtG%IQcM=Iv2KPpL8H5 zd`=*9K^UHxmISd(A|{F~xgmfKsEYw&RQ6-W8AUoFT6IWcAS@UX-`jSxCi>&_x$k-2 z_c`x*&gnTZr8_aD8@UCN5saXxhP)inkYg}F4u1eqc%EONm!U!3Cro71m{onz_`8|T zlyh(89u2Nm9zakxEU2U!4!X9R3u0EqAX%BkNr_ydfkE=9X3s{j{KNQU$}Gw_2`Gku zY{pE5F zH6kjzY)Ke3Ct)H5(`J5qT>^{Msr5^;@@C2vA{mwVA|;+Bt>mo5ju!83G4XXR4)CbE zTkZygif+Lo$$vrxC___1v6_;xB z)GNPUE3`_40V8+^v>%5xD z!G}ULMR2wXgIV?i{H94ZY(w4Gg4JE!U8oeXiB(ER2kYD9?+W@``r5m@f-Kn9y*cz< zIhg6VEp*ZaMKoax&2vCi;}M3^5+NlS(x>O7qfE^6_=9b%tGkc2_HOof5WJLVH&&Eo zR9u{^NU+c$2fhFid+1XKFg9uzO)<=NW@LXgmmRZ*{&Ilpi2+&6(yR&gv=V$TQ$gz{ ZKT*Qzprf@#d%DvO;!e-xRKh!1e*@*o+KvDK diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 98dabfb1bbd67a4ab372327b6b328f9d46d2355a..735533a89742f7416fa67be5b74b862d3e84dfb7 100644 GIT binary patch delta 1806 zcmZ`(Yitx%6u#%qE}eF|?a<(+u&+DY(r)Wo9tns|Bprycl`Xs5LLnl?S}Sxd3uRG* z;nCD$02LdrWY$Q`f?y;Ovtfc%in8*CNLURaRf&}N$ZC94LQRACIJ2{@HPIh;zB#Y& zoO{lh8N6W`ykSZH46>DqVo`x)0~?41P$2R@;agbBzoF-#S$|i!l24C2^y`xrTJ}D<>C0?fiq8!o#^{c@3k0s=#%%!GD zL=_`m2YSjOo^Gfzvi#m4gMqe1)IdHtV22R*1w4kbA)pBMTMpU7ihZ=7dPM_M)Jx^C z-W|LR_FM|o4hdetux140-n*oQ|64B z;#M<0VfBI>R3@`x^*oI*q9zqH_B{0xBQ{Mj@?f)P%6}R3Yt7$LaoDZq$w7HBzu5Be z|CjgyEaoeg2WVW;4=!(l@-e=Qpk#|25)@3Rnq=xrWd*A{awFxT*_aiSFnq zp|FJ4JasbP%(wtHafsH_VK?vUXyLDS7M29Po{)_&kDAF|Fl;0Ik2L|B$$C&Zz@t~3 zeB+ul9nESKiMiE&h^SaaZcuIt#SRGHivLB0kppWH26Ms@GN8v^7QGkH{Lwv-FAK1{FUkbF5 z@ZAUQL*?ZIy@fR4(w81ih!Ehv9ouUk&9+yWmg}>+-;c8o^Fsqug%&xWUl`~VjEH+r z%!jf&PGkIXqj}WP>0_drbY&M~kDJF+%Q4ZfsZB-^(UU%aMy{P=DDN`I51BCVWKRcSO=gN7&J>>JQ8l75s^}Xz`#rF9jP>f3v z28`e?7!Qj)OS%qJ*eYzHb+k?n;5^^14l9;ihrCv^R)JYIGi$EaB~o#=J?f8sUHJZn z{m4}~TfR(;ZD_51wxhF_sHYuLX{d;hYC_0N#Jdpp;j!T%_?1be1hq9Nj9K5ocbc`{ za!6uqW2`p1Hi}H$PVKEqm`#&T?JGY_rD>;jvl42W?l_U7m=Na#jw9n7371q<-x^!Z zqH8y>_O7Q}JMpLEl1kH552V|z?ePI)d)!iK9rF7ocwZX#PPw&f zKJahNxTQSf*0FW%1pg|g(7wKvsG~Wdv%L*3;lV4R+vBZ9bGCb=(seQ+l}INe+7a9F z2zZE^KZ#_t-b?R-knE>}Pq8^RbenULudVtVl1f(NhW)k-R%>gfGd H@J8O>IXA_+ delta 1810 zcmZ`(e{54#6u#%amcH$++hdtcx32B&+piAG6b*z-LwKM`H>&G4WK%?)bF$5`F*-yI zLo&fk5NNz=Yl5aML?uC8cp(fKFh>wVVytn-CWpz7cixR%F~qJIhJOIr3}!G=F*jQhvqcfI`JeDLtm9Yd1!&NY3KLm0?$9O|tTt-r z^EC^dE#psB?m~EB(SCet!9|r+$5WnuTS45Rin4>*-IOTBI*4+O=JRd@`#&DPLYZBS zl1^3ZRBRY2*YIdfrJm*Y8X0snuc12fg+2?^aJSE?Z`Sx+f+g&foh;8yN2ns|I7SsJ z*J?ZKu7f3=0(awrBIw?PfZB(eN;Iv0Inbbkf8Vgd5_6;^28~z<1_g~uuI%LxH5M$L zbA^p5e#EGN>~$?kM<81v5jVN0F{Yy-_vt=rg&1zz?nlQ<0czvr2n;U3d0X5pO)@y?P5sz%_1!&Z4 z9r+X*dDUa%S*eVxU^|CyFAXZZw__cDr7I`jt2q5;!kp@0@__Yb!vEOhql3u^D%bH1 zo2F?vX}KikP)DFs4SUq|M{?jN1f_@}jsecdc=ylLmTW)nwBv_ysEO2sfIcB!?Ze*d zfQ4QPlx89PxcwR33hY=-5l-w38^F)~yDRLoWiBEyk-;)*Kp@K~VWJv?PA1B0wHJ4n z1KgvXdiEs>K3@Oaq%#$7(BpHML5~-iL6tl4A$H1ZdEK4>63*>;gu-3iz3<(00wI+^ zNF@-|Sxg{c_+R@5;BIYTza6XNkpqXZxI2T)1Z()Cp;9#Vh8_T@)4mH|Gvdz`f9*5D z;3v{??wa&!cU(R|`I({R=>K(SR}LLxTK_u{5$d>O2|A!JvaijJCs7d z*+f?|D=X?}g#)WdgPF)HCAmqi(|#K15_FXZM^`|}L8ecJjM?<1&X&!YYBcFlM_qjE zbTcL|JhNS|@#V8_z^0xZV`#+39>+c2G=9jEE+p&Uh49>Sh0vtA&;6ov?dNZToXj-Z z(8NMvL28!x$xlyXE4IaU8MKclJpi@GuAI=-H*6}_CcZohIEZ}Us@|?QuD+eTTbjOo z3v1Du-}mKezfE1XaMP3>31w5SFRpbN(!EfOeluVz1ZL=G#&jzhrM%REr#*P!h7LyREjvIDz&SN^=)bC4z#rPb@X%xSfIUUYbd)MY&7Z&ec^#Z zI^ztjDu=3ugAAo*LW(n_kIzewF)7#E5@=`LJ$ Date: Thu, 8 Feb 2018 22:36:24 +0100 Subject: [PATCH 2/5] fix runtime_test --- .../release/polkadot_runtime.compact.wasm | Bin 77991 -> 77991 bytes .../release/polkadot_runtime.wasm | Bin 78040 -> 78040 bytes .../substrate/executor/src/wasm_executor.rs | 11 +++ substrate/substrate/executor/wasm/src/lib.rs | 81 +++++++--------- .../release/runtime_test.compact.wasm | Bin 13991 -> 14152 bytes .../release/runtime_test.wasm | Bin 14116 -> 14248 bytes substrate/substrate/runtime-io/with_std.rs | 29 +++--- substrate/substrate/runtime-io/without_std.rs | 89 ++++++++++++------ 8 files changed, 119 insertions(+), 91 deletions(-) diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 4f3bdfc57d502916d6b2c4bf1dfeac3f3fae2273..928c72939d1c2d74c34cb180a24421358565776a 100644 GIT binary patch delta 555 zcmZ4fkY)KpmJQDs#aWp+cp-p;kBgg^k(ZH!i-VDC@?S>3dS~I(iqz!NlGON;qQt!7 z#N?99{5%F1zO>A|#GK6H)cB;F{N!u~SN<{}HzlzozbHOAzcjCe!Ho+pQq17aomg6u zkzbTql9^h};K7|zT2dKblwVwuTEyVV$ z&8L{^9T7Pen^9vfptCLP+$S+`ojsNfx4c6_#j;kTtEg;mq<5A*Jg|EeTiz=agLHoY2>^9V_JeiX_6G=W);zXWY4eGfcf}@O zd+}-OQpWe1vJw-77#J)W7#J=9X)z$Z0*Kjwn89&^>U13~Mmt8;>F?DUrDR{Ia&sgI z!z4cdc@99HG+616>Fcx@H8tj_aSIp#1-XENK#GA8EV)6Ao2$4eSwFELQ?IC)!SR6F b^#59n@>~zpxY<+`@)C1Xw=dLYWMc&Y+P$I{ delta 522 zcmZ4fkY)KpmJQDs#d#rsm5GCckBgg^k(ZH!i;;_C@?S>3dI#auiqz!NlGON;qQt!7 z#N?99{5%FnzO>A|#GK6H)cB;F{N!u~C;l=ZHzlzozbHOAzcjCe!I=v#Qq17Oomg6u zkzbTql9^h};L4p+T2dKblwVwuTEyVS$ z&8L{^9T;0SdpX~7+QnUHWx_yj{9-Aj`h-75+ocwm< z5|uA1W=tQL6qp?u&6wUW18H_MrY|5q$c7If0if=!o4~qnZVC|ItkP;A#u&OeboO2r zrXQ-CMHW=D0=a!lHJCwM#baBQCU5@#Y4f!gcg40YWqhxx#PLChfq{(y2!KX$b6f!O zq`|xvRc;kV5NrBJNk&DD6{_3<2Y`}XKoMae21_{}Q03+-E=txA|#GK6H)cB;F{N!u~H~umpHzlzozbHOAzcjCe!JP{(Qq17Nomg6u zkzbTql9^h};K`j*T2dKblwVwuTEyVR$H!qGk|g%5`fci`Q8uCXRZ> z%^#S$92kFWu6DlVxOv|q12M+%&F^>YWnucFvU%O!N>(6O5Pn_n|HTOWny%k9N3wt@

&X#%SPha;mI(;7A)&2Gjt1;qaWl-K|g_@FxZTBj1z z9JR^6I!`c$PCncf2iEm~LxBaP>klW82I_hO;)8TGZ~+-WU9R0AU7Itz_c1a$ZPw_G zWMp)n+|;)Otos9#0y9YW8)hI4)cpm-2kHI*5&-J<>Idu2>kkm#9Cd81(&nEp?}|-k zfB9+aHOBXvvJw-77#J)W7#J=9X)z$Z0*Kjwn89&^>hxGGMmt8;=?WT*QnD{pxj7Pq zVUiz!JO?088m#ok^!r+jni_M|xCIP=f?PmBAjQB4mfWDm%~f2Kte;qrsaI6Y;CMi7 ax`8&MJl6v?ZZ;K#yu{qp?U%F}*;oOPv!e6> delta 519 zcmccdkmbfhmJQDt#d#rsm5GCckBgg^k(ZH!i;;_C@;}DndPm{Ziqz!NlGON;qQt!7 z#N?99{5%FHzO>A|#GK6H)cB;F{N!u~XZ|uEHzlzozbHOAzcjCe!G#MhQq17Womg6u zkzbTql9^h};KrR&T2dKblwVwuTEyVa$H!qGk|k%5`fci`Q8uCXRZ> z%^#S$92i?RS3BQw-28DxDkEd~=I~WhnHW7Lzg?5a^hITIz*=$c7F9E*4QvV=j(=1p z7p+xdTA@05+S(J0;gjRn#evl9Uk6dsz@@+fQuA;fNX=%}_4^nZJvSfO5Xs2sHCb-c z5|uA1W=tQL6qp?u&6wUW18H_MrY|5q$c7If0if<@o4~rcHU|iA4sA6MV+`BeHhV7% z(+}0nt_vzzf!zH|HJCx%pkrH=CO`TAX*2uFyJB0fF}~N7<@g}Pz`(`;1VE#>IW7Qs z(qLYTD!0n?T4_cVEe6LGs@wtxfHGV_8DSu11gkip%FR_=l&qgvkf~Qx%;0!Ib^1ze zMtPkNs@!ZU3VDgSsSJ)kRJkPtfLbhpIs$;S7?558#1I=Ns7;U6Vzgsao35zMD7F2H IHX{ow0Ik!WOaK4? diff --git a/substrate/substrate/executor/src/wasm_executor.rs b/substrate/substrate/executor/src/wasm_executor.rs index 60f437081a..85c1e0e61b 100644 --- a/substrate/substrate/executor/src/wasm_executor.rs +++ b/substrate/substrate/executor/src/wasm_executor.rs @@ -423,6 +423,17 @@ mod tests { let mut calldata = vec![]; calldata.extend_from_slice(key.public().as_ref()); calldata.extend_from_slice(sig.as_ref()); + + assert_eq!( + WasmExecutor.call(&mut ext, &test_code[..], "test_ed25519_verify", &calldata).unwrap(), + vec![1] + ); + + let other_sig = key.sign(b"all is not ok!"); + let mut calldata = vec![]; + calldata.extend_from_slice(key.public().as_ref()); + calldata.extend_from_slice(other_sig.as_ref()); + assert_eq!( WasmExecutor.call(&mut ext, &test_code[..], "test_ed25519_verify", &calldata).unwrap(), vec![0] diff --git a/substrate/substrate/executor/wasm/src/lib.rs b/substrate/substrate/executor/wasm/src/lib.rs index 2002d3cefc..11401a39d7 100644 --- a/substrate/substrate/executor/wasm/src/lib.rs +++ b/substrate/substrate/executor/wasm/src/lib.rs @@ -13,57 +13,42 @@ use runtime_io::{ twox_128, twox_256, ed25519_verify, enumerated_trie_root }; -fn test_blake2_256(input: &[u8]) -> Vec { - blake2_256(&input).to_vec() -} +impl_stubs!( + test_data_in NO_DECODE => |input| { + print("set_storage"); + set_storage(b"input", input); -fn test_twox_256(input: &[u8]) -> Vec { - twox_256(&input).to_vec() -} + print("storage"); + let foo = storage(b"foo"); -fn test_twox_128(input: &[u8]) -> Vec { - twox_128(&input).to_vec() -} + print("set_storage"); + set_storage(b"baz", &foo); -fn test_ed25519_verify(input: &[u8]) -> Vec { - let sig = &input[0..64]; - let pubkey = &input[64..96]; - let msg = b"all ok!"; - [ed25519_verify(sig, &msg[..], pubkey) as u8].to_vec() -} + print("finished!"); + b"all ok!".to_vec() + }, + test_empty_return NO_DECODE => |_| Vec::new(), + test_panic NO_DECODE => |_| panic!("test panic"), + test_conditional_panic NO_DECODE => |input: &[u8]| { + if input.len() > 0 { + panic!("test panic") + } + input.to_vec() + }, + test_blake2_256 NO_DECODE => |input| blake2_256(input).to_vec(), + test_twox_256 NO_DECODE => |input| twox_256(input).to_vec(), + test_twox_128 NO_DECODE => |input| twox_128(input).to_vec(), + test_ed25519_verify NO_DECODE => |input: &[u8]| { + let mut pubkey = [0; 32]; + let mut sig = [0; 64]; -fn test_enumerated_trie_root(_input: &[u8]) -> Vec { - enumerated_trie_root(&[&b"zero"[..], &b"one"[..], &b"two"[..]]).to_vec() -} + pubkey.copy_from_slice(&input[0..32]); + sig.copy_from_slice(&input[32..96]); -fn test_data_in(input: &[u8]) -> Vec { - print("set_storage"); - set_storage(b"input", &input); - - print("storage"); - let foo = storage(b"foo"); - - print("set_storage"); - set_storage(b"baz", &foo); - - print("finished!"); - b"all ok!".to_vec() -} - -fn test_empty_return(_input: &[u8]) -> Vec { - Vec::new() -} - -fn test_panic(_input: &[u8]) -> Vec { - panic!("test panic"); -} - -fn test_conditional_panic(input: &[u8]) -> Vec { - if input.len() > 0 { - panic!("test panic"); + let msg = b"all ok!"; + [ed25519_verify(&sig, &msg[..], &pubkey) as u8].to_vec() + }, + test_enumerated_trie_root NO_DECODE => |_| { + enumerated_trie_root(&[&b"zero"[..], &b"one"[..], &b"two"[..]]).to_vec() } - input.to_vec() -} - -impl_stubs!(test_data_in, test_empty_return, test_panic, test_conditional_panic, - test_blake2_256, test_twox_256, test_twox_128, test_ed25519_verify, test_enumerated_trie_root); +); diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 2b8e909b3e4b2e6608e409e5a5b1cf6d86e1fa33..6296f219c64cbef48b5a3a7428b3847c0eccfa23 100644 GIT binary patch delta 2749 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 V20wZ*%fN>RvzF4GR(~Iv{2!QdG`9c% diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm index b3e3b8389158fdd46669b05e916da8b65b536052..0f00a9675481128e88540e2386816fa406722f2b 100644 GIT binary patch delta 2709 zcmZuyU2I%O6`q;BcfGr_n~d#^y}Ndj@y4;&ak6&Y*h$-zdXgrJ1ff+cQK3?twSArJ z+WW)qHTeN`{a_&;Q0sO=B_I#34r6eQbY|%r~)G_kw;V(;fFj?3*{jQA@R+% z*NJGaeeXBtJ9EyQIp@smO5t{K>8xPYDt+ZrOLhC9)jKbIfyz+xu?QZ&O=-Xi1Z)=I z6pzjH9h#_yU8mwsOlRE8M7BWowtAwIFS*wz%8olM(^>1-{}Bfv@La<(urU$~krOp};D@8qXS*Gb$P?aycC=898fzco{K9C9ESp+phhGBhZU96dM?dgo%#Zz*F{Ht~vrBE>8vW|O`# zX0dTeBSeWF&^?qZp}63xTiKFGD#B`5wFoYKii|O$PAQ-C39E-lUy5P+&g|2mw`Z^E zS7pk-PGFSQAIj6#VZy(v|04%&p$Mp>J$;6HQ-7M=Pleud=%>0rxlGeK)7wXP*!rGB z&(j_16aC%ZZcO}f?=3KA4G(|q@f(LvqnUBf{mL$N!7uN5h9r+a5g~5$ts*-vr2dp1Pel-DIjTP5`0nh zH*zsTJ)f8%bH;5v0of#Hn>H~DdhQ8QR8-hWaxTK4pkvIHa5TnBkO0>JTO^0?rzCe8 zQ`6EOW!HNA21-3G%4~0e=8y&1BK>FNcNX_@B~iUYgsX-r3-}4OcPv3b1W7fY=!z1=0zBT(*D(d6@0R~|<@QwO4 z@f5Q+e5&Eozij(&^Z}aklnlaK3Ol+0gyN6wr>sp&^y`-BORe`U6L?SoP5^G&x)M!W zD}K>me>=KP53KvQ^=J#DzYh@()o{+Vgsm5%o%^67+tlrV=*J#c{o=6xp!+-rgu)&IQz>-50KohF?!EJLCf7?PGLPk=~MD5*CCKWJNur~$PVQ8lKPh59`c zDg9cot8J@I^{BOW^(Iw~sJaKb{;S}NjP~egc#!tg$HSu*P3jLjej+vz(U)XM-34Ay zn{j=;^WQX~E3wD%eJ}Pse4mJ$u^S)7_nr9f4zI`1=0VYCvJo>Os+Ab(z&xfo)Ndr7 zK9Lw>F-g(l0cCrz>NNLF zW^S0%%Y!r7Lbh_nnZ}*Aj!O_%qb$xsXb>K9^|uCw?1O}m1N!}e_{&L*EWAX$OSyH! zDZ^Kda$m84C08-Poer;*w@zhBnW?OMUE=C3&&(CC5*!U4TZ3&Y-YvZCc>ll%2?B}Q zqI&PieHJkXB6;Lb$2NT2ekq+!zl=zHJa!4o;!Kg}Y(hGKYmljD_`t{Kbm7?C8KO2V zF2rX$WvWdEIp+e(9WR5-AI4Cw=75a*zjP%4jMeYeDWGki{8! z355u93fKth7Y2teE`)e%({Hh4exp6N%OSqU`w^9=pOQ{tTBhJ6#4RJjMTm<5dG(4@ zkd?XYRJL&0INk{9^iZOD56T)+VG6PVi~xyx0Covd6hbFj6+^H~oJX6h8&A&ezG|Fz zc+AemDsHCiR%FJ-@*A8-NF82Qvw)63{dY77FWs4D}|q!o1B}&%M&jbJk>aDWab_{uQSQ! delta 2589 zcmZ`*TWDOz8J?Lvd!2K3XLVh#h;zP~@Bin&GppDk%*1Zl9QikS>)w96S7noO6|quCtkjJn&*T%o)$TFjK^i#f7C# zXx6`N{mIB?M0Kfkp;nn%tXF?zqTOM(#nnTS@Y-I^j!CK(7Xzmq98v3yDxp@I)Q_pE zHmiR?dF|c3-)6K$|8rjtZCPuSgBERFOVy1q@1~^|y}H=&MZ^2vA$CLt5pr^7h@AvN z@V&+()+L{i`gY^l=(2B!^@F#D*kQmepYCZ&S$F(GuD#ZDk48W9Z^>cE$d?0pIF{mf zgF+In?)ybTztH{*an&ATFUpWw2A)(Kjt+MGhlaJM^C^6fc3#H!6L)RxAH;fi|L;3C zJd(+v*atKBJR$-3*n>!!%j_(5TXN(uY{n!-4Fbp^30wsuT*hQ2!L-jPI>bz!#Eg1i zBeyU1JVza^;>~Qy(XYgNsnkD+|C&bh5BI!8@9V$rX$SM)*okJx*kXzeF&hB^BzE^5 zy&mhfZiHd!|0*p$Kr|+~gr`84^zbL(&p$`bzQxD)d0tKt;qOT&=W- zuOZh0P{s+ofg}tpXfJtU4alXwn#4OW$hp1Xh0(^pUB^4K3^(wDBKenn8Rxo5mtgoPmqHNG_Iqs{>(JAlXQ0bp(bqgZzFLbS;Qr$2 zG~9cdT6@jd?z3K|v_psdopguO`>bE-tZ!wT{!}0Ix0=a*$^QYUfB8EqHz=dKvXST8 zP*7yE^(X0Zca}#^Ii{VTl2Z;Ut`HM~B*Jl7E3^LkcmXUr3fSvQ(;L|GftJLk>9lG5)ocG}6*IG{#WpS(K2tt(2 z{kZgG{yaL@z^#j!VxFiN_vCXKqFT8JHxyBlb6k+4rEw5C_VL}MQOVl#uu`w({cnjM&0z{CIu2LSI zNEgx*+46$KHC>#V&0iqu4i2qC9>rV3TaWh>*b4$NfBJHF%v@|Ab^mGdV-FX`RUITF z*47b(=HciFAw6Kv0F9y3l#oUsQ5(C?9KxBT%Pv~HZZz>Yw!#)FmGm zHTX2~{yeag(z1`sDpbQ@*MU$VH6VJo%fu}oU!r=YXI3vAu=MTTw&^?m$JTDb8jir# zeLs&Cur%4P0Kc65XMUbEiY80}>;xVI;y5`2^a00!TVXE;_^sVOrR)2_fi`tF_}KUF z9{H{XA6KzdEpvXhdT3?Bx)(7M^fESR6{%lmGLxH>Nf_bWGFzD7Ty)6`=Q252n$1pRbJND~Cg)8u zTax+tvT-$@pU+KV=Q>@oIZLH5wl)|2rV@ArFoq!_m{*$zmbPi4eq-}?w4?obg4>;o z0tBYiS1{YCAJjMPuMB$0;bH~K5;|3&nFY+5qa*$8167CD$#H~MKDSdW#EPck(3pR# zJq2K!duYSqClSKQI8iskTpWX-0fOkG5UOE)rY{z*g}HC1@|$7(=f2L=a)gU2^v#&o zfR1bMD%c$>&5x}_^h{s8u@>Qu8yhNJlIb$S+KlK^{oi8iV(r8JLCO~E*B%^vfwJ{R s-F4^$TWQj79QrA%Hm`*b&rx|j&SS^m#|&lx_~pT@#!aX7@h2z#2Wl)b7XSbN diff --git a/substrate/substrate/runtime-io/with_std.rs b/substrate/substrate/runtime-io/with_std.rs index bcedb48116..cb01133a6c 100644 --- a/substrate/substrate/runtime-io/with_std.rs +++ b/substrate/substrate/runtime-io/with_std.rs @@ -126,25 +126,30 @@ pub fn print(value: T) { #[macro_export] macro_rules! impl_stubs { - ( $( $name:ident => $invoke:expr ),* ) => { + ( $( $new_name:ident $($nodecode:ident)* => $invoke: expr ),*) => { /// Dispatch logic for the native runtime. - pub fn dispatch(method: &str, mut data: &[u8]) -> Option> { + pub fn dispatch(method: &str, data: &[u8]) -> Option> { match method { $( - stringify!($name) => { - let input = match $crate::codec::Slicable::decode(&mut data) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($name)), - }; - - let output = $invoke(input); - Some($crate::codec::Slicable::to_vec(&output)) - } + stringify!($new_name) => { impl_stubs!(@METHOD data $new_name $($nodecode)* => $invoke) } )* _ => None, } } - } + }; + (@METHOD $data: ident $new_name: ident NO_DECODE => $invoke:expr) => { + Some($invoke($data)) + }; + (@METHOD $data: ident $new_name: ident => $invoke:expr) => {{ + let mut data = $data; + let input = match $crate::codec::Slicable::decode(&mut data) { + Some(input) => input, + None => panic!("Bad input data provided to {}", stringify!($new_name)), + }; + + let output = $invoke(input); + Some($crate::codec::Slicable::to_vec(&output)) + }} } #[cfg(test)] diff --git a/substrate/substrate/runtime-io/without_std.rs b/substrate/substrate/runtime-io/without_std.rs index a4d8e4076d..ecadddeeab 100644 --- a/substrate/substrate/runtime-io/without_std.rs +++ b/substrate/substrate/runtime-io/without_std.rs @@ -14,9 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -extern crate substrate_runtime_std as rstd; + extern crate substrate_primitives as primitives; +#[doc(hidden)] +pub extern crate substrate_runtime_std as rstd; + #[doc(hidden)] pub extern crate substrate_codec as codec; @@ -141,10 +144,10 @@ pub fn twox_128(data: &[u8]) -> [u8; 16] { } /// Verify a ed25519 signature. -pub fn ed25519_verify(sig: &[u8], msg: &[u8], pubkey: &[u8]) -> bool { - sig.len() == 64 && pubkey.len() == 32 && unsafe { - ext_ed25519_verify(msg.as_ptr(), msg.len() as u32, sig.as_ptr(), pubkey.as_ptr()) - } == 0 +pub fn ed25519_verify(sig: &[u8; 64], msg: &[u8], pubkey: &[u8; 32]) -> bool { + unsafe { + ext_ed25519_verify(msg.as_ptr(), msg.len() as u32, sig.as_ptr(), pubkey.as_ptr()) == 0 + } } /// Trait for things which can be printed. @@ -181,33 +184,57 @@ pub fn print(value: T) { #[macro_export] macro_rules! impl_stubs { - ( $( $new_name:ident => $invoke:expr ),* ) => { + ( $( $new_name:ident $($nodecode:ident)* => $invoke:expr ),* ) => { $( - #[no_mangle] - pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { - let mut input = if input_len == 0 { - &[0u8; 0] - } else { - unsafe { - $crate::slice::from_raw_parts(input_data, input_len) - } - }; - - let input = match $crate::codec::Slicable::decode(&mut input) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($name)), - }; - - let output = ($invoke)(input); - let output = $crate::codec::Slicable::to_vec(&output); - let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); - - // Leak the output vector to avoid it being freed. - // This is fine in a WASM context since the heap - // will be discarded after the call. - ::core::mem::forget(output); - res - } + impl_stubs!(@METHOD $new_name $($nodecode)* => $invoke); )* + }; + ( @METHOD $new_name:ident NO_DECODE => $invoke:expr ) => { + #[no_mangle] + pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { + let input: &[u8] = if input_len == 0 { + &[0u8; 0] + } else { + unsafe { + $crate::slice::from_raw_parts(input_data, input_len) + } + }; + + let output: $crate::rstd::vec::Vec = $invoke(input); + let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); + + // Leak the output vector to avoid it being freed. + // This is fine in a WASM context since the heap + // will be discarded after the call. + ::core::mem::forget(output); + res + } + }; + ( @METHOD $new_name:ident => $invoke:expr ) => { + #[no_mangle] + pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { + let mut input = if input_len == 0 { + &[0u8; 0] + } else { + unsafe { + $crate::slice::from_raw_parts(input_data, input_len) + } + }; + + let input = match $crate::codec::Slicable::decode(&mut input) { + Some(input) => input, + None => panic!("Bad input data provided to {}", stringify!($name)), + }; + + let output = ($invoke)(input); + let output = $crate::codec::Slicable::to_vec(&output); + let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); + + // Leak the output vector to avoid it being freed. + // This is fine in a WASM context since the heap + // will be discarded after the call. + ::core::mem::forget(output); + res + } } } From ecdef68b5336198cfe33f2f5d611294c4f3d4d84 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 8 Feb 2018 22:36:24 +0100 Subject: [PATCH 3/5] fix runtime_test --- .../substrate/executor/src/wasm_executor.rs | 11 +++ substrate/substrate/executor/wasm/src/lib.rs | 81 +++++++---------- substrate/substrate/runtime-io/with_std.rs | 29 +++--- substrate/substrate/runtime-io/without_std.rs | 89 ++++++++++++------- 4 files changed, 119 insertions(+), 91 deletions(-) diff --git a/substrate/substrate/executor/src/wasm_executor.rs b/substrate/substrate/executor/src/wasm_executor.rs index fcc1b2b564..eef0df976d 100644 --- a/substrate/substrate/executor/src/wasm_executor.rs +++ b/substrate/substrate/executor/src/wasm_executor.rs @@ -423,6 +423,17 @@ mod tests { let mut calldata = vec![]; calldata.extend_from_slice(key.public().as_ref()); calldata.extend_from_slice(sig.as_ref()); + + assert_eq!( + WasmExecutor.call(&mut ext, &test_code[..], "test_ed25519_verify", &calldata).unwrap(), + vec![1] + ); + + let other_sig = key.sign(b"all is not ok!"); + let mut calldata = vec![]; + calldata.extend_from_slice(key.public().as_ref()); + calldata.extend_from_slice(other_sig.as_ref()); + assert_eq!( WasmExecutor.call(&mut ext, &test_code[..], "test_ed25519_verify", &calldata).unwrap(), vec![0] diff --git a/substrate/substrate/executor/wasm/src/lib.rs b/substrate/substrate/executor/wasm/src/lib.rs index 48bbd04dca..11401a39d7 100644 --- a/substrate/substrate/executor/wasm/src/lib.rs +++ b/substrate/substrate/executor/wasm/src/lib.rs @@ -13,57 +13,42 @@ use runtime_io::{ twox_128, twox_256, ed25519_verify, enumerated_trie_root }; -fn test_blake2_256(input: &[u8]) -> Vec { - blake2_256(&input).encode() -} +impl_stubs!( + test_data_in NO_DECODE => |input| { + print("set_storage"); + set_storage(b"input", input); -fn test_twox_256(input: &[u8]) -> Vec { - twox_256(&input).encode() -} + print("storage"); + let foo = storage(b"foo"); -fn test_twox_128(input: &[u8]) -> Vec { - twox_128(&input).encode() -} + print("set_storage"); + set_storage(b"baz", &foo); -fn test_ed25519_verify(input: &[u8]) -> Vec { - let sig = &input[0..64]; - let pubkey = &input[64..96]; - let msg = b"all ok!"; - [ed25519_verify(sig, &msg[..], pubkey) as u8].encode() -} + print("finished!"); + b"all ok!".to_vec() + }, + test_empty_return NO_DECODE => |_| Vec::new(), + test_panic NO_DECODE => |_| panic!("test panic"), + test_conditional_panic NO_DECODE => |input: &[u8]| { + if input.len() > 0 { + panic!("test panic") + } + input.to_vec() + }, + test_blake2_256 NO_DECODE => |input| blake2_256(input).to_vec(), + test_twox_256 NO_DECODE => |input| twox_256(input).to_vec(), + test_twox_128 NO_DECODE => |input| twox_128(input).to_vec(), + test_ed25519_verify NO_DECODE => |input: &[u8]| { + let mut pubkey = [0; 32]; + let mut sig = [0; 64]; -fn test_enumerated_trie_root(_input: &[u8]) -> Vec { - enumerated_trie_root(&[&b"zero"[..], &b"one"[..], &b"two"[..]]).encode() -} + pubkey.copy_from_slice(&input[0..32]); + sig.copy_from_slice(&input[32..96]); -fn test_data_in(input: &[u8]) -> Vec { - print("set_storage"); - set_storage(b"input", &input); - - print("storage"); - let foo = storage(b"foo"); - - print("set_storage"); - set_storage(b"baz", &foo); - - print("finished!"); - b"all ok!".to_vec() -} - -fn test_empty_return(_input: &[u8]) -> Vec { - Vec::new() -} - -fn test_panic(_input: &[u8]) -> Vec { - panic!("test panic"); -} - -fn test_conditional_panic(input: &[u8]) -> Vec { - if input.len() > 0 { - panic!("test panic"); + let msg = b"all ok!"; + [ed25519_verify(&sig, &msg[..], &pubkey) as u8].to_vec() + }, + test_enumerated_trie_root NO_DECODE => |_| { + enumerated_trie_root(&[&b"zero"[..], &b"one"[..], &b"two"[..]]).to_vec() } - input.encode() -} - -impl_stubs!(test_data_in, test_empty_return, test_panic, test_conditional_panic, - test_blake2_256, test_twox_256, test_twox_128, test_ed25519_verify, test_enumerated_trie_root); +); diff --git a/substrate/substrate/runtime-io/with_std.rs b/substrate/substrate/runtime-io/with_std.rs index 0eadb7a27c..cb01133a6c 100644 --- a/substrate/substrate/runtime-io/with_std.rs +++ b/substrate/substrate/runtime-io/with_std.rs @@ -126,25 +126,30 @@ pub fn print(value: T) { #[macro_export] macro_rules! impl_stubs { - ( $( $name:ident => $invoke:expr ),* ) => { + ( $( $new_name:ident $($nodecode:ident)* => $invoke: expr ),*) => { /// Dispatch logic for the native runtime. - pub fn dispatch(method: &str, mut data: &[u8]) -> Option> { + pub fn dispatch(method: &str, data: &[u8]) -> Option> { match method { $( - stringify!($name) => { - let input = match $crate::codec::Slicable::decode(&mut data) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($name)), - }; - - let output = $invoke(input); - Some($crate::codec::Slicable::encode(&output)) - } + stringify!($new_name) => { impl_stubs!(@METHOD data $new_name $($nodecode)* => $invoke) } )* _ => None, } } - } + }; + (@METHOD $data: ident $new_name: ident NO_DECODE => $invoke:expr) => { + Some($invoke($data)) + }; + (@METHOD $data: ident $new_name: ident => $invoke:expr) => {{ + let mut data = $data; + let input = match $crate::codec::Slicable::decode(&mut data) { + Some(input) => input, + None => panic!("Bad input data provided to {}", stringify!($new_name)), + }; + + let output = $invoke(input); + Some($crate::codec::Slicable::to_vec(&output)) + }} } #[cfg(test)] diff --git a/substrate/substrate/runtime-io/without_std.rs b/substrate/substrate/runtime-io/without_std.rs index 1d4e286b40..ecadddeeab 100644 --- a/substrate/substrate/runtime-io/without_std.rs +++ b/substrate/substrate/runtime-io/without_std.rs @@ -14,9 +14,12 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -extern crate substrate_runtime_std as rstd; + extern crate substrate_primitives as primitives; +#[doc(hidden)] +pub extern crate substrate_runtime_std as rstd; + #[doc(hidden)] pub extern crate substrate_codec as codec; @@ -141,10 +144,10 @@ pub fn twox_128(data: &[u8]) -> [u8; 16] { } /// Verify a ed25519 signature. -pub fn ed25519_verify(sig: &[u8], msg: &[u8], pubkey: &[u8]) -> bool { - sig.len() == 64 && pubkey.len() == 32 && unsafe { - ext_ed25519_verify(msg.as_ptr(), msg.len() as u32, sig.as_ptr(), pubkey.as_ptr()) - } == 0 +pub fn ed25519_verify(sig: &[u8; 64], msg: &[u8], pubkey: &[u8; 32]) -> bool { + unsafe { + ext_ed25519_verify(msg.as_ptr(), msg.len() as u32, sig.as_ptr(), pubkey.as_ptr()) == 0 + } } /// Trait for things which can be printed. @@ -181,33 +184,57 @@ pub fn print(value: T) { #[macro_export] macro_rules! impl_stubs { - ( $( $new_name:ident => $invoke:expr ),* ) => { + ( $( $new_name:ident $($nodecode:ident)* => $invoke:expr ),* ) => { $( - #[no_mangle] - pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { - let mut input = if input_len == 0 { - &[0u8; 0] - } else { - unsafe { - $crate::slice::from_raw_parts(input_data, input_len) - } - }; - - let input = match $crate::codec::Slicable::decode(&mut input) { - Some(input) => input, - None => panic!("Bad input data provided to {}", stringify!($name)), - }; - - let output = ($invoke)(input); - let output = $crate::codec::Slicable::encode(&output); - let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); - - // Leak the output vector to avoid it being freed. - // This is fine in a WASM context since the heap - // will be discarded after the call. - ::core::mem::forget(output); - res - } + impl_stubs!(@METHOD $new_name $($nodecode)* => $invoke); )* + }; + ( @METHOD $new_name:ident NO_DECODE => $invoke:expr ) => { + #[no_mangle] + pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { + let input: &[u8] = if input_len == 0 { + &[0u8; 0] + } else { + unsafe { + $crate::slice::from_raw_parts(input_data, input_len) + } + }; + + let output: $crate::rstd::vec::Vec = $invoke(input); + let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); + + // Leak the output vector to avoid it being freed. + // This is fine in a WASM context since the heap + // will be discarded after the call. + ::core::mem::forget(output); + res + } + }; + ( @METHOD $new_name:ident => $invoke:expr ) => { + #[no_mangle] + pub fn $new_name(input_data: *mut u8, input_len: usize) -> u64 { + let mut input = if input_len == 0 { + &[0u8; 0] + } else { + unsafe { + $crate::slice::from_raw_parts(input_data, input_len) + } + }; + + let input = match $crate::codec::Slicable::decode(&mut input) { + Some(input) => input, + None => panic!("Bad input data provided to {}", stringify!($name)), + }; + + let output = ($invoke)(input); + let output = $crate::codec::Slicable::to_vec(&output); + let res = output.as_ptr() as u64 + ((output.len() as u64) << 32); + + // Leak the output vector to avoid it being freed. + // This is fine in a WASM context since the heap + // will be discarded after the call. + ::core::mem::forget(output); + res + } } } From b20f91d69c9dafe5cb7d1ff559c9df5a6be6a62e Mon Sep 17 00:00:00 2001 From: Gav Date: Fri, 9 Feb 2018 14:17:19 +0100 Subject: [PATCH 4/5] Update builds and fix up test-runtime. --- substrate/Cargo.lock | 1 - substrate/polkadot/runtime/wasm/Cargo.lock | 1 - .../release/polkadot_runtime.compact.wasm | Bin 75751 -> 75751 bytes .../release/polkadot_runtime.wasm | Bin 75800 -> 75800 bytes .../release/runtime_test.compact.wasm | Bin 13991 -> 14152 bytes .../release/runtime_test.wasm | Bin 14116 -> 14248 bytes .../substrate/runtime-support/Cargo.toml | 5 ++--- substrate/substrate/test-runtime/src/lib.rs | 2 +- .../substrate/test-runtime/wasm/Cargo.lock | 2 +- .../substrate/test-runtime/wasm/Cargo.toml | 14 ++++++++------ .../substrate_test_runtime.compact.wasm | Bin 31904 -> 31904 bytes .../release/substrate_test_runtime.wasm | Bin 31984 -> 31984 bytes 12 files changed, 12 insertions(+), 13 deletions(-) diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index aae23858ad..a2d998ac44 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -1521,7 +1521,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", ] [[package]] diff --git a/substrate/polkadot/runtime/wasm/Cargo.lock b/substrate/polkadot/runtime/wasm/Cargo.lock index 1ed330a400..df8296ff09 100644 --- a/substrate/polkadot/runtime/wasm/Cargo.lock +++ b/substrate/polkadot/runtime/wasm/Cargo.lock @@ -649,7 +649,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", ] [[package]] diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index e56ad51f9a1de40b9ae8d68e0d63a9c4689d19d9..9caf937719dc7f57728908211949ca18015fe749 100644 GIT binary patch delta 2846 zcmah~4Qx}_6~5=%#!g-w9@KFHiOKVG6914mq!R(cPkEtXo zx-G?C7gb0@Q?|SHrJd*i(PAL$GQG8RtF%oiErHQtO_7GCsEb&-T2t0pYS=(ix1IN% z?U-uQBE6h@&Ufy2e(t%~pWiZme#PLkypKKtFv2<-4m>^X;{}!Bq)DWz95IRc ze2d5nwl-_7uv8i~b>jb7L#LGX95v}N&zMBuTb#=fo}!%sk!CA(swpZGl`2m87FN+% zYWr`1@vh@z=+82{+x6nQ!5DsGBFKmCswo3CJXkL#Nk3_#N!&?K@yf z8Qb0r)lGUuqip?-IW8-L;%-`(Pa_`X;FF&ip^f`iifrr7e;L-BG$K=6g*vArs-AK6i z_){j>r@S#F(E1dw`9a@`>H7ISNkvrycHnAp1USC zoGQ~AdtMhanz)lgOTus>UGywDCOXur9cqfHE9y|IE)h^*)yln}9R`yIvcTz;(8`8R zd+`xaE}XWe?Qg&G@6BJ^Za_v$r&xqkI8R1ACZsc}<7B{bLe(ggG@<4YN-(T)_vcHr zd-c_sA=t~lbM~8R@psNfyiuQ&F!Q_da;%bK4>WR>+5`~Zdg7{_*8z=8f85o^6S?(HTvji`LT#ZT0NMdOC-zCYEz4FLx)u zMc^B(kY`}wiyLXwrveu**>m*ssfQtU_ChVai5psNGuph1rOjASX=+N@k;_lgt8RAn z@{4rZ&GwJ&T)WsJJ@=LA+?@m)g0>0mzO7X6n^vtr_yXmRW7D))d&bb?C{EleDM32b z=7QSX7Uj3UybDX_)D&8k>%Yp&$r>0v4)#v(k@Cem?cl^TQuCz4n1e`?0FAH2?#Yko*5cdq48eCPjmeLb@*{9XB7vev-< zweTe>_u0bTq~gBuSsv_FtiS(gh4P1gu;t;XU$6+dd<{Nj+7h&7%rE2$`f^Hj(3hir z!ItvXmKle%Z_W{+7bW&qJ_ol9AiVWy zK0LZSY(CO6Sl1isA<}}2D~dcsh?@`+UrxvhlpF9f;zy)YWn57+qFz+e=(Y@c9#H|& zsw}iIgH9ltL`Gj0x?M-tA@y__XHl~V^!C;fX$GA~&>4|Tpr#B}q?`jF(ullSgiSPF zE`L`92ThjCFN@%ZGxBv29;WdM`705sAR@1JL1j4V=FEM;zPj$NZi4rav-I@`>W+7G zVX&B+Gjs*fJfZraxvQt0;Bf0oUvH4$ua&L@Ljg=R?G{A0nUvDqhi-EzWiWt9(#`RK zu23*=_}juEPfsY+b3AyMND&Wq$wtU(ET=-4EPc0jQo-d)<9go;ewTG6CO@$ zJdx%-oT;w8=P(9YK!Oq6s2)okr5$Ayza{u#Q@rv{0XFZ6dpUbwsJ%Kg(B0qhtzb3Q zb*!WNh(FXvq=c6)+@#LWWNLp9*LrnvL}$@jn}r_Dpb11Hh}LAG9T_yTnyU%)^#w!y za$`AEIVM;C?*eD#k#g9GlW?;fDyya{xuRaosWgkXKf^m)naaPX8|zQXG%*DAml9`$p4q)^8$AY7;UM6;}~ zqh*a|jiEJ(z7O(EWm)SoQEvOWqH**s!JToGH~{225MtGsl4<^BsQw5yIW%*mnsdqD etAG-D$PGC#F2CRgCyiIXXon)2td_%A^M3&4;>MN$ delta 2812 zcmah}eN0=|6@Ta2jtvjPOA5w(#m~<+{wNqo6+&pX@*tpQ3y1-QvL-1GcnO37GauO| zR#=BBG*y$QyY;zk)Y5KAtSukTUZOCmQXOR-G+7rWO%$l5ZMP1zDDZAaBVwsYSz z;7prl>G_;{e&_p~dq28m{OFc3Q9yDn**xS~@JDh1a#a_Z2k27I83KgdbJ10k2+ydW znO-CGLzASjO+@`Hd%c=`?4l2!{2QdyJNr%>pjVx1@ByCA%Vhwo^k(CsqK{qjJ(p|| z9Aci2qzsaQ(KUn6LmQe(AfFy;iv2$w)xZBKfLS`&eB}9sfFLpt^CpQf8Z}9|LboJ{ z`CZm*F;9+}hVVaS7?L+MVJGUdeOol{GUa8PsEfa}ju2zW9P0L#x`Tq@2 zds}V;iM#2Zr!O<|_oq9=dADp9x`j4o{0^}SIoo*=J;@0e@*6mzjXr8cGA4Y7J8%ALI3>ay0Umcc!J~Qq)t|Kl5lIn z7_B>am(PfxdRzD8k_TS3@3{|*&`X1T@4~A3kG>Qe%B`baH8_;GLmNt=kIaI^i%91| z=y6&}1LNnQ*~*E$U_eB)3I(*QzYphnrT=FJ=u~QWC{QPlIRL(*{`mMyIku?Q38!72 z)fo9@5v%B>HIp`5D=+MI7Ro=;B&eZ7>fy;#%Zy7AR{Yka;6e;Y`2rsf|E>7Eh?-_%{HI zGcqT0K4O%G6OyTx7)6u3)fbbGaJV-}EV!z_{N4`=w=koR2)KPn?1&wivq1r!oa@HR zpnfptHl%W5G*B zBp6&h^wt1~kAUqMy-Z%=hGff-RD#NwM(S-p-c^5or>$r}xhm zvD=>=ccJV1XYEF@SSV1x6u(AD)T3H|9wfMHj*D&d`{xVcHhuei7m2y4c(Ii>UuY)l zE{**IvI|Vw3$66q7xzPqzI$;XOTP<^Fin%^YstK3R%{V+NrN2I7EE%q<9a&MYe8=& zo+Gnv>bvv`iMna>QrqsWcIkN+Z{+RdaBoodj<(>%Y{9ikMNY_9n||?oQlh;ZsBs*d zyi;D&n+&YU-RiC@pTM>SmO_tOc{L}CyHSeVlKsFMboJU!=utns#)CPn zOtY6tsNwpj4E_8%qO|x|_t^4S-uqlLF)dx7ORtx1)7wD*`g$`PQT3@K%p!WqR@UP* zV-+?Zxx95vZS2_*%{YVWr(PwnP7lBN44cH|HyZ#F^pgc?$Flxhq|&d3M|gr>TB^pE z;ZI9BY+Co>#Pz&z7SEQERtTj;YjZbOkZy(ZqD-Rj3{_&r5$4o3JTEuLj z245tN1&xgd#cWY$7ny?2&IiT(w64Z(Ds1Scg80V#r&P>$+ISf~+P0vymYA#D%Z9wi zFh+hFTn=gvN&IRq54Q{;T)mSE`*+M(#wSAcCkKb?IlP9vVK_X(;RDN?nRs}#pTqsp z594ED4qssX5RQa6IhsBUhfyt-K8%c`+Cus;6+$GAhhw8t^<$AyPENRad*U&U^K$q@ zI#YynFMdWQke3mjMX{fqkTSFhKOIdW+K$r7476nvT}MiIYa3mZW_?CEdG!hv- z86M!|2VUMTV2e93D zeb_ZLWPMB`wIPk;w+%lWpkHYd;S1eKKX1z{11Ef9aO9X)!>XS*V{P?Qp<&F@&s(&V zzd3=eTJvu?XQ?sgC$^j`=iE>-6AS1w4vj^yApx|<^*I`1TNMvrb!fyUo=Dq=k=LtB zBD#Xo+6?sgCc28~7@{>9=-?*$Ai&pz#>c~v38lpYm1T*?|962aO4I{SLR9&U2P!HT zD|mY!=H$rmJF)3^r6QgG=m_SYQat70-aT8%+f!)b$uM~ld3`fumAsHZR6@yK!f`I7 zxa`Uc<=};sa;6*tGxI@S7%SAVvk2E~ICkBx8w1LXryht{2<7?l<$^9sWR<_ELc!p@`95jt6s5zousOi H8Lau=btt?8 diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 6341c45abc7cadb6bc9a36ffb3f1eb54d5a65db3..0dbb6b8cf5f202cd16ab85a4276ec901a2dfff78 100644 GIT binary patch delta 2830 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 G+y4NdKEc)i delta 2805 zcmah}eN0=|6@Ta2#)b#@C2@>_fUlno{wSCvN@zpUg+~Hwv_M%x14-93F1QJV05cRe zEgh)KCRDX4>D~6cE^0};G*+twx35)@R%y=KE;Q3Ncbhc+NGoefD^%qVs%9NhvToI^_x#THIrqfV=6Kqibdq9Qfe3aR{zx%EvF0Ne0Upx+Yzh%_)62fHP&lBu z^IjnAjz!jwyNKo%O`FIqFZ1pA3^JPi{_`d{q`lo30K9#yQ~=DgJ5Apyz2#MIdKH`G zruG2Im}C>D3nr* zy5%~MgpVD2;4Mxn_w1vSKE*0^N)K}7cSw;`xJIOCNl8Lq&?HC?vZ+0LVOINSPdn7L z8d2rAT`+m{3^FDUS2Bz#OI~jCBpYnq&l;Or*zHy~bL_pZA`z0d2%?fQ$h<+4KAjn7 zy?bwnIUcmG)_aS|qF+1n@E^=@h&_7bH!!ccBN=SU^W7c1-U+wflac_L09m9+CjonM zqPqmvvmbXK!6ts%{hA3nv@=Jy0PNF#ckCyHO;dWt9+xtqACzY(MtkUoa%p>!i8Rs@ z>UxrvKGh`bD-xtOQEKp%C_mLjP{okdPCv03Y&QaW;0tVSv>iHF>DT~zm>he=g8n`| zNy)M!>(?FG+KUJ}%BR*RsV&!0{<0(MvZDvayUjb79R;~RX`3Lv2w)yp1VsoCvmzar zE%n4qEy`*|ECC|mz#y?5^5<93T>o9TFE}&z*8&tzJEK0AGRj)v2Jh`k-7; zPi!=xOhI3c$pDTi$b}SX9E+^AKGR{v=k+q{w6RCdm2wB!CsM(kZ=gufx%TY29-w!D z?dZKiNeg|7txqmTVGLuz@iJYwqN~w!(D1Tp$e|zGE{ocySd8K=kxTD ze*V>yu%Fp4JkAGu?7~Da9#R&p(m|ZdN@e!0R4M~x7G$7EQ+!@%qLlA|?FldNi_1*Q zr1jbl5?2VBs?xskdYIrEXrF0gzrI)k*V$h#c96J_eS4;rjb3UdOJ4n0Fw;z?Irkv6 zvDasIL!2$n^yC{aq6tp2&o9=KNnNeXCKZ!LC9aR3>~1d-s5?6&>`wAwGT~zf-}pJ1 z^0Cj~XxqA41S9UU<+wcp4iWO+fo8N&CYeMdQz}RfZRE|rl5%}}pu{n(c%`ynR2+Eu zI<@Y%{{eZ^JcKUo@a4k%a`cmZPlg|?n^7N+iGBF)IxU`R174)My>)E~cKC(>W=vnDRFwd3(Hwb24; zGj1pS2>LM*rUleE&T;|cI2opntgL=q5m=VZgmH;{ol6}ar>LMs=PHzyqQx?`OZ9?C z?bIo4#Td|=BP%u+*0)UJ@=g){WCH23-446gj@yPuA`N4`{S5-XQPI>N9T0HsidN3< zAM6%zo{Y=zP*lLZY+RzTh@ebmFa1#zi)Swb!zebLy^KZ>N#Nz^;Aq28Y*0{=KGBt2 zCkTE4e@Mqmk#57!%o)lY!V}02@*7f)?!wPNGl;e$w>AfDSwWW&rHF=d&^;^YRF!Ds zQACD@Fx7aK=t`{>gnKJ;gj-jHlT{*sprq7%8Fr9~YW15kRFLUv^>G=(kXC;t!)7w! zS3i)U7Lw{eWvFSI_hV_I!wm!dSiy{6lp_7HXr$-+^s&KMY;Y{vBPff0(Iq(q;U09< zh;%*DIs8ocVL8=nUf2jJ^|lwvw$2AcJ!wI?9uO@J-GeidJMcj7It~%Ajb|L;l_f z)?^{LYMh70jUQh%u72c$^6_}cXl7(6hHVa^KF-Nw5k5YN5N3x;ytT=!eiY9}b}2;D z$gR&okFB8dhz=pTDF^LcK^H^frpWMcG&Z7+RY7e<@}B>lU|PLW1>0dt{Z|##)Xvt3 zt|J(eJIC(GirsWgHvYi@j6b6us0QEGiCWQ>L6xc;m8bA*j9|Q0l#+eNk6aFI-%n#64X10}b! A4FCWD diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 1bca666aa1c9f94e13be0ecefc8ea82c7875ef4a..39b6f737efc2312f442206f6204d317487855cba 100644 GIT binary patch delta 2730 zcmZuye{5Sv9ltxj=U->Xm!!2_$89cYk~v8mr|If7EVR9_j-oEKngr9djl@Y_TDz_t zoL7=osPP{aAcUq=mkov{Et)b>U}YHzFi@EyR&5n3lK&{ENC<)y34{iik^M0-O?;l6 zw3*ar-+kWq=Y8+{{ocJFoWGTy``ivTJ4-K*cxG!4onZvw!O`2yvU#dAtTSnb-7sIn$SDY&Kw9Q}*z9+D;E=@+4SaC9U(5_Qm0%WnU=f zNu9sSn@s03Vr5s;d?7!b$&Zt;`+Pc= zD~yp{#zfJwNX!?cL=o=kZjSG1ZQAXhA8P)M{$X=`NVI_8Lb(!(3!jQBQxZvqU-c@F z@JW{z~~_SX?qY%Xxtj`owe_d^M=cAqOP_4*pxd}Kpnu%*$|nEMnzzNF-Ptxsxz4pc4gR}r z?X$mN%$Q}D6~a$2LzU>cRx`y6c1+SBQCr)RrV3%^NRe%IZ6m$eR%4TN zAONLg7JgTWh{o74=O?LZ9tsl4B!RO|LLQlgGi+XoDh0v-;oTyTL`Mm}sQL>T3eu`i zXvnPNHWCBvicNw7%m6ARi}~LqI{?)#X&z!T zEp7)UTRh6yUWsOr1?iFQLHUg>;W)yL*x34_obsHp*q!?P)khBHL7=+=nS%e!PN(( z#SEC79YaYBkJ!^UOwu3iczV*%e$#ueup12Xv^|Pp`*+w znQBfCGu)zcBNp9GMt#aiv4;US^@oi~oN)$>mf_-F6{TR^@EH>YcG8jkn-8 ziZW3&tdD<-p*!A+ zIa`nc=@$v0UmD^eeRI#t=+Sg@-)tm?_FihL_U3%kW^cOCf&5zh6j25@DnUVTL^;Pb zKRjg@is>^JQE_f&@{<>AqI$XK9``VJO%w`54RF_J`jT_{xo;wq&rF@Q#&Jj9#^s4C zRTj>HSVNcF`jbR*wwVyJ2ZN}2%A+HA@ncMGVk^+VAnJ9>jZ0P${+B3s74isU1uwYq zu@dF=W9iBCSjN663%J`Sa)oJv=tRF_+mnTD|6z#q=~j z3S&LRDdHTO*E)Z9^0tc$0rduGA4L$38-lLj(Oz)7L5u($?kP&h&Z=}{o6SMkB&ysw z{p+p>UDChr>V0g@;Ptu8=vbj>B@2_zXRW$s$>ioUJv}|o5jAJ>s4!6l$JR|q7%&MM zi(vh0CeP{r?8^-zVQwxeSi}kNIxdddz82kFmZ4q;?i$cZUj>LlZgX?f&F6Gw-&LgX zj_1CcH{k}lSZCeCqb0mL`&PActU{d#3+Fsz|%mOlMx`o-nQ7H{^!15Meh3U zuk-f3bt?Mp{gH+_Kj)(tZA;?YYt2Z4GxE3n-FwS^?v)8gFa_S4pSwF{VM30edVWp; zC9eO_l^j~)4@_#A^SbI+T@HL!TKRFAfD_IQhlC5xMW>uTYvtusE;E+NpK%E7{&x4)O*$dcl_V*{!5xoE)sfX3|qja0%F2wb=;r6Nuo% zE~0MKad8@g9T3#ti=eD`_wK5z)N%J#f=eO&SZ~L3iyhZaoTu`w7>}ODx=yE+fS>NPa?Gi4wAA##6wd2sQz!oqe&0|u delta 2594 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 H`MLiAI(B2s delta 2532 zcmZuyTWDOz8J;=k>~+p+N7r5JV$H5s^2)MTmssmd(#Ye+j%n;Tq>$1&jps+*8{8Xld9emFR1?zyCB97QyFsQT=%>>N318uh(y| z?N8mN&86D>bfGvj;+#uohNd$Y)0r_6bWb@`qq!NvtDC7Dsr7)F%D(E5I!zUvBB^&z zr6wn{qolza&pQrjw2KZLjirjIp>&3H)>e)smY;DNmsBc8JSF7aQcV(2a;q@pvn|4W-nFG-H)96`VW%5^;Nku);}=N zcWCHUC!ZdlA^X(JMoUA&7obEE=ILn;?PzNX`){0#sJ-^fW{BNXKetace@!QPD0z|) z;gvt05I(s*XDT#{!0JF?pXvT(*lDM+B9#v)?i(bs8N{UUmZmfwsvslP?r>7x2?bh%^0 z6o&BecKBH}c?9s0i9C%ev%OXS-1T(*2k;se6czB|3UT0~IuP4weQx6lKa3rv8|qpt zOy|`5v3*pif5hIWLG@0@^YpH|*AW8~=sXtM2qXn| zAFnhYR1=+htm{G4WY_LjXv58Bov*NkpYHrQHi#^cSkn)2iq8dCxUaUwS%9x2QoMxsA9GML}_!%^yLJ zRR?zPR6uv_3vw!eic92#Bnj>`!RfKXBq%9&MWKsHkThvDpf3R3CEPX);1l>2oPb`3 zFb0fp1eyZ|kMvrSKq4>>mav3*RQ&V`YF@2iS=S+o(ywoAQ2f8E@A;k#Ht6B8Wmpfi zEnC%FzTcr^&-(i*U%KqStgG-J7Aq~%YUh^eR_9=EVzC>or-`(fRS9rHq|H2d(nR(G zI@iFg%T7K^WSE)Rj6-BAGx7cqDHy}^H&iHQ^Qm*-_cB*HlbbH;8ZgfTdIb^2v(R6~ zrgkKCnaDN5eB_h)8|(`}?dUWmq!CEu#v?XQz$RX0XVu5uA-bUc(%t*an#F1-(<7tVywj7-={G!) zFA!O=nCna;kvL1_tc!(-3zdd#1=s`}1|kR|yzOF>>JPmq)Zs+zD3Mp(jISe*PVzV2 z?R(6-nJB}g2J9LT3S=FKhCSlyJvWd&B zE(yE_>RzIISJ}_JBCZ7maBF_%?h@H?F^q2c83k1Q>a*^i(gJ&IVatrwRR2+nr@kYc z%$SJ731gN%!UbczOI$qfWJF;yJ(|v((~c{QHHmaVWT%Td)JS$ZGlo+&=$y@rL;}-i zGv2GOh>ruqm<58dvzd2pize~|o5j$q*l{91hkgzMUBjywQ4|L175lMC&jlD?fU9ooDBRjF+LVCvP1XsJglicH2qlp_3qM(xuzZrBF=eiv^J? zBBk{p3sh4@-M6SpP_6X6MAw$u`;(N;F1_@`NlMq$yZfKT-^Z8xuhH_-&jvD7+-zpy cBZ#X"] [dependencies] -hex-literal = "0.1.0" +hex-literal = { version = "0.1.0", optional = true } substrate-runtime-std = { path = "../runtime-std", default_features = false } substrate-runtime-io = { path = "../runtime-io", default_features = false } environmental = { path = "../environmental", optional = true } -substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../codec", default_features = false } [features] default = ["std"] std = [ + "hex-literal", "environmental", - "substrate-state-machine", "substrate-primitives/std", "substrate-runtime-io/std", "substrate-codec/std", diff --git a/substrate/substrate/test-runtime/src/lib.rs b/substrate/substrate/test-runtime/src/lib.rs index b5be15fc23..3e0f65a2b4 100644 --- a/substrate/substrate/test-runtime/src/lib.rs +++ b/substrate/substrate/test-runtime/src/lib.rs @@ -23,7 +23,7 @@ extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_support as runtime_support; extern crate substrate_codec as codec; -#[cfg_attr(test, macro_use)] extern crate hex_literal; +#[cfg(test)] #[macro_use] extern crate hex_literal; #[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives; #[cfg(feature = "std")] diff --git a/substrate/substrate/test-runtime/wasm/Cargo.lock b/substrate/substrate/test-runtime/wasm/Cargo.lock index 29ef026e0d..0d38739031 100644 --- a/substrate/substrate/test-runtime/wasm/Cargo.lock +++ b/substrate/substrate/test-runtime/wasm/Cargo.lock @@ -626,7 +626,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", ] [[package]] @@ -646,6 +645,7 @@ dependencies = [ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ + "hex-literal 0.1.0 (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", diff --git a/substrate/substrate/test-runtime/wasm/Cargo.toml b/substrate/substrate/test-runtime/wasm/Cargo.toml index 93886c1f3a..a40af49c33 100644 --- a/substrate/substrate/test-runtime/wasm/Cargo.toml +++ b/substrate/substrate/test-runtime/wasm/Cargo.toml @@ -7,20 +7,22 @@ authors = ["Parity Technologies "] crate-type = ["cdylib"] [dependencies] -substrate-codec = { path = "../../codec", 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-primitives = { path = "../../primitives", default-features = false } +hex-literal = { version = "0.1.0", optional = true } +substrate-codec = { path = "../../../substrate/codec", 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 } [features] default = [] std = [ + "hex-literal", "substrate-codec/std", "substrate-runtime-io/std", "substrate-runtime-std/std", "substrate-runtime-support/std", - "substrate-primitives/std" + "substrate-primitives/std", ] [profile.release] diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 8d1693d8f8cac9ae16a757bfa2fd46be453596c9..92d39a3789bb5ac33fd2ec72a557ef177dc9cc8a 100644 GIT binary patch delta 83 zcmZ4RlX1aM#tmB;nYr27H}7EFpw6f}Ia6~7kW|vrVbtC1uXUf1QGc_(&NML~bz_+<8GgXMub@GSm4FKFuAB6w_ delta 83 zcmZ4RlX1aM#tmB;nc3O7H}7EFpw6g2Ia6~7kW|vrVbtI3uXUf1QFpVx&NML~b Date: Fri, 9 Feb 2018 14:20:48 +0100 Subject: [PATCH 5/5] Fix warnings. --- substrate/substrate/test-runtime/src/system.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/substrate/substrate/test-runtime/src/system.rs b/substrate/substrate/test-runtime/src/system.rs index d6a9426538..82a428d458 100644 --- a/substrate/substrate/test-runtime/src/system.rs +++ b/substrate/substrate/test-runtime/src/system.rs @@ -131,10 +131,9 @@ mod tests { use super::*; use runtime_io::{with_externalities, twox_128, TestExternalities}; - use codec::{Joiner, KeyedVec, Slicable}; + use codec::{Joiner, KeyedVec}; use runtime_support::{one, two}; - use primitives::hexdisplay::HexDisplay; - use ::{Header, Digest, UncheckedTransaction, Transaction}; + use ::{Header, Digest}; fn new_test_ext() -> TestExternalities { let one = one(); @@ -153,9 +152,6 @@ mod tests { #[test] fn block_import_works() { - let one = one(); - let two = two(); - let mut t = new_test_ext(); let h = Header {