From c56859f3317d3819bbeedf07f487e081da70baca Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Thu, 15 Feb 2018 16:38:19 +0100 Subject: [PATCH] Block builder (substrate) (#73) * Block builder (substrate) * Fix wasm build * Bulid on any block * Test for block builder. * Block import tests for client. * Tidy ups * clean up block builder instantiation * Propert block generation for tests * Fixed rpc tests --- substrate/Cargo.lock | 7 +- .../release/polkadot_runtime.compact.wasm | Bin 80217 -> 75751 bytes .../release/polkadot_runtime.wasm | Bin 80296 -> 75800 bytes substrate/substrate/client/Cargo.toml | 6 +- substrate/substrate/client/src/backend.rs | 14 +- .../substrate/client/src/block_builder.rs | 90 +++++++++ substrate/substrate/client/src/in_mem.rs | 62 ++---- substrate/substrate/client/src/lib.rs | 183 ++++++++++++++++-- .../substrate/executor/src/native_executor.rs | 8 +- .../substrate/executor/src/wasm_executor.rs | 2 +- substrate/substrate/network/Cargo.toml | 4 + substrate/substrate/network/src/lib.rs | 18 +- substrate/substrate/network/src/test/mod.rs | 69 +++++-- substrate/substrate/network/src/test/sync.rs | 32 +-- substrate/substrate/primitives/src/block.rs | 12 +- substrate/substrate/primitives/src/lib.rs | 4 +- substrate/substrate/rpc/Cargo.toml | 1 + substrate/substrate/rpc/src/chain/tests.rs | 3 +- substrate/substrate/rpc/src/lib.rs | 2 + substrate/substrate/rpc/src/state/tests.rs | 5 +- .../substrate/state-machine/src/backend.rs | 2 +- substrate/substrate/state-machine/src/lib.rs | 29 ++- .../substrate/test-runtime/src/genesismap.rs | 5 +- .../substrate_test_runtime.compact.wasm | Bin 32856 -> 31904 bytes .../release/substrate_test_runtime.wasm | Bin 32936 -> 31984 bytes 25 files changed, 422 insertions(+), 136 deletions(-) create mode 100644 substrate/substrate/client/src/block_builder.rs diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 0af4fe42e8..b12e79f998 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -1423,8 +1423,8 @@ dependencies = [ "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", "substrate-runtime-support 0.1.0", - "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "substrate-test-runtime 0.1.0", "triehash 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1483,10 +1483,14 @@ dependencies = [ "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "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-support 0.1.0", "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", + "substrate-test-runtime 0.1.0", ] [[package]] @@ -1519,6 +1523,7 @@ dependencies = [ "substrate-client 0.1.0", "substrate-executor 0.1.0", "substrate-primitives 0.1.0", + "substrate-runtime-support 0.1.0", "substrate-state-machine 0.1.0", ] 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 c6fc9b035c57be18a2c7c8e8686935e994fc47dc..84e52dbc50cfa544c0a8899aa70d307a4b0562d5 100644 GIT binary patch literal 75751 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 literal 80217 zcmeFa3yfXIndf&N_kC}7-)=U^CYz7Ce0GzfM9C7#ku95t8OxHN+KIC3I6y?lqp{r7 zgQRGU2Jo6a6Ja9Ecn6%oNQA`LWp=eO7Z@R&jT0yfWtY1U5+Um>n2odJMT~%$7>NQ* z0%B(Z2v}#F-~aon&b^mx%95;EOoAbC`}$J$E5%D7&NVUpfEelUY-b+w}O=Coeql<)@#1?ko1f^B0~w|K+bf znPtjfO!+bOiLX6-;km4(te&!-vG=m}IN`}>zVggjf7wfraQ4@x6P|zaf+x(VjR^ z_4=JokJMhT(ag{06fE;>zI{3Gx1M?Ondi>`T9M74|N8R~@5!%z?b#>3{_L-Q?b%<> zwzneE_B4zRd+G3#U-|llC!z6kUpbTg;->U`;ry4Meg4Z|x$w2;p3Ocv`zv32_RCLy z?fF#f;kg%h{N*px(lc0v zbUc6I$@AH#yR&&#W&O^-b>PU|_ZcIB;++6Zkxp`Di6LE!p;9oA?p zuTHPgSU!{W`=Ps9W&oD~6}4E6%}~-&o-(@OcMi1hRvo41jsBes85(B*gBJBFiNbvz8rJ>dr2nUa@^duY7R;*h;%8^5^^-Gs zD2FX@+oEmgG=sSG=>qL%gQ8#MqgJ1;@J1*;vka@Wz^vgphY5u9GeQ;3fp%+ACDoGG z5n97?kW*tQ1zi?eDsCtuA?vHhup4=E{pwG)3|F)M|K2Qy7aNgZFXd-O^Awt=M3s$Z z0}scFPM8;~k{t5ki7+n;3`GIqmZvNX;i$FITzQfgu4ijuwt8c0)fw*aNAYK&f{%fV z`RXPGfLb*93?=im(JYmb{kZBY#XIv5zFHEiTXEfjzR-Yu3=U-v*T9cwbK8Oxt;uZK zY{zVFJ1}Y|Wrz9I^6c^QDA@q3%DZrRnX)aBDtn<9nlZ5m?Ub#zj~*`{b7o$E6bpi> zNB(FN1ly#iLQjjK6BZp_L>wskp+Av86N51D^7B#x05TJ1ygC|rY_tHzseI^{vtdTH z)-4XETI^4?*!FgsUVB;BIZSoZc_p5m==g`$TYtQY-mxCT6ywzNj; z+|5%6Am*ei=HTnuPoXEmFu)W;u>nY%qo$$Qcn*%?$w^M7b4mnHLPiqtwfch2Jjpj<}fwPLBU1Jhf8KQ zQ0#4)jkUQ5rmC?x?k?ayL{n|PNJsWfzThaw3wTkMtF?h|WVO}pn+131 z&7niDCEw`RJ4LJZH?L*4x;22|wp*C5F4A1`QPLGCTA!K8Kz(brjZ5EXw%T+Mr^pcA z7O21|qj z1MP}uR=i(V7{6%C42YIDfRI`Q-{HKT)LnUTz z0+p)7Smu*6xP3Ts_<|cz!BOh3MwC|bplHzCxco*`3m=ebjrZQf=mR!^cx=?`je4=i znvmNLS2*KI?2T6)OBy+i8BZL6o4sNE8)0>?u!?$kukalG0Ps+|OHKx}8B6*wu|=!S zsbe4B?wl#n0PX5pM)w;1-)cS%UN!M=O8g5~yA6cC5yhX%$KnsGOXvf**9{V&f;J3;sjZ;ukl5u_cWpJxc;02n&HzDpujM5O1Gsvs{JWskxcYXK3ZWF~Jb%xh$bBy?3S!#|#s-VeA>+glR+G zSoCqTjcng50QZ_Gf*J|ed*=gs=r1sImNbg}#nFIFXAINAz6Tw2$EXuaA%Qb~Z}k6O zZo!J^yOhOAb>vJaz95eVpK27vPmK7e#=BLnV2l`3Da*RAvPWj}D4hfiXwRjJ=)tE5 zA)xNWuQ`zfUIIDd#`q*7LW{KdndM;s;~0`q&Xj$emg;CVKfI6YKm-4P1bSbvm9k#_ z{vULTeyvEZ<4X+a*g%?u8^r+zu1R<@VIL?G&x5~T-o1&(Cz|+CT|;c+#}f(G#vj!Q)Q=9+l-uQ#6W{2*9R;L_@}|)`ECr0@P*Kpmd5V+zuNFkK!5$=r|O>J#_eR z?n-BdpqB&i;SGj_5r8s5Z zsHYx#982;810zf=#o;=A#pnzW!Sjni0B4?z2nKpcVSa{UIyM$*`RIpwPg*>Q7MrfZ zNczQ*;*mX}wW$Gs$RXDdKBgkw05j!=25i2@z@lTo!tdm?4JXvlR}Ed&(7+#tI%P%R zO%g802BD@7DOj({9v8(6(k)3mOv+5zN?<98OYV@;fW>beM3=z~&M^K-iZHR5lWD98 zorR<@6hK315Mne%gXY=pL4F5~`PYl0s5K_h ze$11(USQIKzL_zY>2L*pvDP!WG;uzX10hqs$OQ=<%CsuVZ+1pu&}BE4m_u}W2|}0L z=)*Yp0AdcA9LbDXOby%dyTq~Pv)RzZo-`b{@TfwOX0L*phVCeoWgoXH=Io<Y;XwmBYs+RM ztfy8jT~ByWYnE$%ZN#a(is&R59!$&Ljt7YSU;KZYN5qN71sIIe!>u$ou*^S?7C2QEnt!ABc4b$ortnr(CK1kuaI&X5L2^GArg8ploZvD`i|Uv5dIASB^sxEw0m`VpA;Irag0a| zml%Q3osh&>O!a-gF+7;{e`^Yu5@66Ms2hg~KUVFRlfW=k83R++z~D#=n6i46W;v~alE#y`sqLXgL^(h<((1Qh=?K8ao6F(U_nt0+{SU*=VyppsAyJoKkfN#8lfhj zdY1GEtsXaMmA5{t8sa;tYjPN}Dfm1*LR?WnW$(WiI=Y4qP-GQux}VGU!m;8g*Y))` zNjXs+3~geS?gbLdFk?W~=gh&W4$GOfATM^ZOPj?DuLN9c{CVpu333%xj?d}A3 z5P&q9pGPLCwDCREh%si5D#}G{e2%ddy8PS>hD5Wx45f}_M@K*fA+xG{c)2Ri38kN8 zG8d2@o+&GWq8f{J<#*#^t<1~{!X@xT-{4KG3v{Z7 z5{7Z@%u>@u6zuI#8OY^Ez$s=^~ktvwO*)ppR2AZ;j>jyzoXiIT7Cw1TZPgqpHHu( z1g~T8LN#};y5V({R!2j)MX)3I+`TZeFhFVG;|3@25pH=Z8}^{3T7U%Drvcdz_LfG| z0(aqs>ZSoR1^gH630S9r2LUPJ^HoE@GcFe$6AK{uVvLbkCM!>(f4UVzO-Vi6G1H_$ zh7mAVXrNNGR-$Gpl;F4;m{QdckvAS|=w+1UCufRSF$*_h#g->djTIMEOd!gaMmS-N z&SS{m6Jc65WAbw%h>+gxood2k@|9yxv{FVWLT7p}>z;G|)H^(bfv`U1SFC;WIg03;UQY#z)85@fmzf(sJ_D&{V+?2J842=PEdT$h&!PropmUYM?7 zLWBnuA}mf(J4uuXR7|uwXHOHNRD+Rfos}qwPV&xLcpy^Du1}FJIs;-FXhRtdZaYpP zkM%0x3tno;kq&0XnTTJA>Me#D!fnxiw#YA*;}u&unYa>QeUx^{q<(IevEdQXu~sh&ks%dB%z3|Cr;@W93A zISXJ|@>HHA5gkQD=PrmeqjtiKf}jK+s-NcPh*R|_+EpQpyv1m&P%ktj25_s^ z()8d2Sb78yqn=Y*hHlWOmfh!YHu_eX9<5UE4^KBN5<5_3giazTu`;S1b$rsObs_Z6 z-wI2?OeUS-WyOs86@><>{=6bSu_rgJeq>$scT_*oq*(uq>XxH5xNxVst@p9+cC~N; z@xPg!JMZ1lOEXa+$N_Q`eR2kqhiN$zh!PR3liwKzkZI6SlnA=QxN`NU#A7hP?nsY@ zT!esX)x}TGpaa2rLv%rSbJsf{91n)pVmG=VUEMZZHdw_(Ukd;;vd+|fElvCgS2Y2o zhP$L@TcF6ifU4*61?E6==Fx$p`UeE;GzBCrFw<~+)4)jFW^Fot?H-`JmIfV+%;3kU z5LqShNZ0uTuxFfPW3<})=Oap^zK~hM+sIHsax;2XrDIB*E_MbTqXDc;*jnAa1}@g~ zhlM8NDBv;zXno(znb7+JTuhBcmGSWCjQsaI5rtx+RdaZk%$3u@i1dD&rn8}-Ik7}0 z*Vf|uz!zOxlXQt{20;)iXhC}oaj4cqnDeN+7hJP9WggMb0kxrlA00s23^mZgyvW%w zaN{F+v`XcLp=78&DftY&2(s{=aPJ?WodkOpIcw1d$ra$I7c;moLa$toJOd^+E&N@+3J7S~O9` zfGkShr^T6VEgT^}Nd=6_B-kuyu(%^il`)0%ilWb6LLAZc325ACSwh64LK!WKNi-6y zF5|xP)Da>l|HI|E*n=fU*izsz5hKx+4p=2-Xn>ODfFgYi-ds%xSiK~0Sv%vp3Jd=* zMcQZ&NS34F)H_Ll;`SQq6`z_Z<@AGwi9|+sVth}$?FAcg8<;Gbs!ogp683x*54ac~qrep$yug*zeO#{bxI+KC=0u#(T^iad*!hTMX}GJgG?o8eTUOi< z0EO}q&WjDDp_a^NQ@W5&8l;P$WF1rF;~^m-qkAndCjZz~FT+|*9w{LzZ4lFx`IKX; z%J5)K!OCc=H9Xf5gp@BQDiPVxyj&~3jqYkl!IpaGeEqUCcFD`)Mm!h2m<%G^V{b43 zt1X?ic%FW^>-#C_T)olun7nFlkSC@C>E20cS5oAG$gbXk0F-($%2nA=Vo+A_2>M=Y zzL7E(yemf44a~cM=p7*1=^F{h15~uoT(|l`R+E}(ziF!5vi3yv_z!EuY=Za*?7Wx_#Tf zhEf_#r2Su%m1wo9A7$u`{#1RfGzM)|>wj9Ft2)Fcs`Wmh4LKa-!fjDSlqaF2i8^)* zutgmUi@|1sGQgd3LWx2>N^quK{XQOq+zMNx-mPx*VRltQ`OtZIW?&pX0$I`(dEB1R zrr9Qm&FY`_nP?XWQSWDFV1%h04bKgDq@ubs3##%_huY;2p;(9-X{SWHTDnjzeLb3s zuBIKSn#KV046V@3N03Fci_Pkv4Qm~T5>{VT5MLw%F&9FcI?uS{6E#|^wZJj7MdwiW)EMD>l~t*E9C?;Xur5%(XWg;B`~%~$8A(cJwR zX#Sh?cS5srrqFzS;paiKf<}PZtX|*zzR--ndMlb=-)xXUaz$VBbGWi7xpws*;G|H~ipFzfe!`co17uixwm%vSYx z{_fY;s#VYW$G^*ckIf!xTD*y>J^xijM%&N7c50n}*Rz*Ky{ZH-=CXmR`WF&ER2q-4 zZ0}Tf`Ma=H@4L>EP+L9$3hCWo(+w5s`H7h|a~B#_`C#@)Xc#fq6-9BU*6ri{M% zi2K)jc&Pbszg$w@iQ&Dx-vJk-ABYPQma3~;DgySCgW&#!J5P==x8?MgR{kApqs^F zxZE0WGRq@bz+$O$VsD#@1D`Q)R_`EVn&%&U0PwFCPfx=CO3o@HcR+6Kz>UVAc?Vd9 zGO;u8z2Sdp3Vtn;+8F$!|0hdAq_qoefm5mhFWO-R<__>jIl3QEt(`Wgb$R;M$)>W;A!)y<#1zXTrZI@#| zsCFs9kdOMMLQx%Ai%kBo&6juliFNr}qlA6b`jdet+VZnWP^A8;0A&LNkJ+|PEjk7& z4Sh+oeWyJws>7HNh9BCzejDkd-0ZQ$~p>$l|DtGjw0^r4LMTo!CwHjsh-d(ixKB=c5ML*&}vT* zkb?7$dN#{2V^&XXzi5E!+3annPO#P(&N!|oI3U?ExVMM(c0x}8NG(FJ0K{h6YRg+V zN&C#Hwv5CYQ_5Cm*6$`7P4!CqNq&xAWr;S{A=~gy5~H8cV;ee%HC6(38pWWP2GtE) z6xsjj&Z2j*8Rh3{^Nji)dXk@Bb(ttkR=r~D-bp@ITrY6iSyuZN*Xpfetx~f~p|?T~ zBn&}AC8*WwU8zoH2_3hG-LoaaSv${r+7XEEf z2ca+3p$4dvu#lF)W?JdktA2=JX3(14AKP+DTLjC~_ltT(Jy9o0z9S?KZQMTzPQt49 zyj*iMpHesRcr-D{yJP56ae-^;HCe0z(ZY(H(w1Z@;C1cnOFr790 zJtWd)sIpWBZ6b9gWFmMrR6igpItd&$L_g@(jVY^HhkR;1UcLjT>S{cxg2M=L2W8be zl3lToN{ri>p6|pBMq{Le4qJ^HMVU9zV>DN)*Z&Z9WPO|g0A{cXB>q>oBpUXAf1F5> zzZ0L-*Xk9vUS`#g4mp}GYt9ICz0wqu3iU25t_dP$U^L4EC7IOO7&Fu8cps>c-lo~_ z;B(K5FZA$6F|#n(r0%k?#$a`D;Pgpwsy7Z*?F5ety^+W??axc1yvl~nnQ2ZRYI_dw zA)ifMk=OiPK$?c*z3~U$o9TaQcj3)t%NQ?iuiC@U4*&Itp83H-1Z~1jIYd$i1|t@r zm{bF{oz}@-3^%C^G}llVtCC1>BOC&A7#a5KTJW-{!ZV!lVPYu>YnvRis;I>GgjZN5 z_b@Y%C@K`LrVhY-m3`{9Z%9hCKhrd(=`NK+g;_b!As5BVbybdrY=9pKf4={6IrTv^ zuWyd9jcjHc+5Rd2=Kfs)6Kzp%tp#^ zQef6u===1OWOJrfNbgq1oNF^n#;g753pQVJaG|_L;Jh)+MKAY4lLQQIPx~2D7y<O zZl(AZPqPz>Zf?K^4@c(Mp#yg}kUnV2-P`4Rl4PyYoseYVg2=d{^cWa1|CAJ?XKD$a z=I)xGqsVG!y@{+cq70EDd3YZg2+EzLt}Ce{{Ap4r`ywrKyVTWi$q2ce8If?|P&xv| z7loTqgqavA<&R)DO(FF2A)U_u^q-hK7NUV znvRcQoQ-j*qi+;llm6II!6zB$3B{~B8=#hwH;gkaCW@>r( z5x>&86^3lacKBTqS(k#YR_f1CK(aq)JR?G z!HU#l-L8me6xIQ5PI67!I}apsmkKCI*-uiPb*&py-RvGzM@UayG(u0ghJpA8RhiwG zcEhmA=CQv=L$Lu}-3U5e;oaJ0wQw=|`VAlBCfF`a1PiPcqZnv-7tq*v< zXZO5PSs@)+*69DQOU0&ox#dk3pll*{lPx+FffmQ3gxl}J;$t+j3CAQXp1Syr;m)v0 zr+O^t62S8&X{xKaUtechD3B%Su(X>hTn@1ZhhnW}ujd@k)$~)cHtC2cvgU+DA!eQ486{wPK^VA>p9%vIj}3kF@QlU#IkFnd5%%Dl!cg~iz-)T zsDjxl==Ui5wzqrNdEBiql!H#CXz4H)IolJF0oe&1gQdorVIgJHOKOi`-y}%I`!KrU z7#GF+sl(W$7txo>*o-g3fm~`)8K4CJPZ?XV+FLy1s^d!j&O{1z48t(JtTIt#BR;`i z!l&q?=Fid!kub{HrsM>-(x?rk9EOu=0HdMqY)VuAuG*GkFyY

1pYlHczCYNfqIV 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

Pp* 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 Ol^6!hl&e2}h4eqwXm@)6 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 9f4e4cc836056cee61e8be0cab4c4a64044b6789..a92614dcc2d6fc281b868d3754d5c972ece62333 100644 GIT binary patch literal 75800 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 literal 80296 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 PT!CT0Ou70KmrMTx)ZdN4 diff --git a/substrate/substrate/client/Cargo.toml b/substrate/substrate/client/Cargo.toml index b9e0135b9e..ad9fa2d2ad 100644 --- a/substrate/substrate/client/Cargo.toml +++ b/substrate/substrate/client/Cargo.toml @@ -13,8 +13,10 @@ ed25519 = { path = "../ed25519" } substrate-codec = { path = "../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } +substrate-runtime-io = { path = "../runtime-io" } substrate-runtime-support = { path = "../runtime-support" } -substrate-serializer = { path = "../serializer" } substrate-state-machine = { path = "../state-machine" } -substrate-test-runtime = { path = "../test-runtime" } substrate-keyring = { path = "../../substrate/keyring" } + +[dev-dependencies] +substrate-test-runtime = { path = "../test-runtime" } diff --git a/substrate/substrate/client/src/backend.rs b/substrate/substrate/client/src/backend.rs index fad0f203e8..4421c82b37 100644 --- a/substrate/substrate/client/src/backend.rs +++ b/substrate/substrate/client/src/backend.rs @@ -21,22 +21,24 @@ use error; use primitives::block; use blockchain::{self, BlockId}; -/// Block insertion transction. Keeps hold if the inserted block state and data. +/// Block insertion operation. Keeps hold if the inserted block state and data. pub trait BlockImportOperation { /// Associated state backend type. type State: state_machine::backend::Backend; /// Returns pending state. - fn state(&self) -> error::Result; + fn state(&self) -> error::Result<&Self::State>; /// Append block data to the transaction. - fn import_block(&mut self, header: block::Header, body: Option, is_new_best: bool) -> error::Result<()>; + fn set_block_data(&mut self, header: block::Header, body: Option, is_new_best: bool) -> error::Result<()>; + /// Inject storage data into the database. + fn set_storage, Vec)>>(&mut self, iter: I) -> error::Result<()>; /// Inject storage data into the database. fn reset_storage, Vec)>>(&mut self, iter: I) -> error::Result<()>; } /// Client backend. Manages the data layer. pub trait Backend { - /// Associated block insertion transaction type. + /// Associated block insertion operation type. type BlockImportOperation: BlockImportOperation; /// Associated blockchain backend type. type Blockchain: blockchain::Backend; @@ -44,9 +46,9 @@ pub trait Backend { type State: state_machine::backend::Backend; /// Begin a new block insertion transaction with given parent block id. - fn begin_transaction(&self, block: BlockId) -> error::Result; + fn begin_operation(&self, block: BlockId) -> error::Result; /// Commit block insertion. - fn commit_transaction(&self, transaction: Self::BlockImportOperation) -> error::Result<()>; + fn commit_operation(&self, transaction: Self::BlockImportOperation) -> error::Result<()>; /// Returns reference to blockchain backend. fn blockchain(&self) -> &Self::Blockchain; /// Returns state backend for specified block. diff --git a/substrate/substrate/client/src/block_builder.rs b/substrate/substrate/client/src/block_builder.rs new file mode 100644 index 0000000000..323fb61c29 --- /dev/null +++ b/substrate/substrate/client/src/block_builder.rs @@ -0,0 +1,90 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate 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 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. If not, see . + +//! Utility struct to build a block. + +use std::vec::Vec; +use codec::{Joiner, Slicable}; +use state_machine::{self, CodeExecutor}; +use primitives::{Header, Block}; +use primitives::block::Transaction; +use {backend, error, BlockId, Client}; +use triehash::ordered_trie_root; + +/// Utility for building new (valid) blocks from a stream of transactions. +pub struct BlockBuilder where + B: backend::Backend, + E: CodeExecutor + Clone, + error::Error: From<<::State as state_machine::backend::Backend>::Error>, +{ + header: Header, + transactions: Vec, + executor: E, + state: B::State, + changes: state_machine::OverlayedChanges, +} + +impl BlockBuilder where + B: backend::Backend, + E: CodeExecutor + Clone, + error::Error: From<<::State as state_machine::backend::Backend>::Error>, +{ + /// Create a new instance of builder from the given client, building on the latest block. + pub fn new(client: &Client) -> error::Result { + client.info().and_then(|i| Self::at_block(&BlockId::Hash(i.chain.best_hash), client)) + } + + /// Create a new instance of builder from the given client using a particular block's ID to + /// build upon. + pub fn at_block(block_id: &BlockId, client: &Client) -> error::Result { + Ok(BlockBuilder { + header: Header { + number: client.block_number_from_id(block_id)?.ok_or(error::ErrorKind::UnknownBlock(*block_id))? + 1, + parent_hash: client.block_hash_from_id(block_id)?.ok_or(error::ErrorKind::UnknownBlock(*block_id))?, + state_root: Default::default(), + transaction_root: Default::default(), + digest: Default::default(), + }, + transactions: Default::default(), + executor: client.clone_executor(), + state: client.state_at(block_id)?, + changes: Default::default(), + }) + } + + /// Push a transaction onto the block's list of transactions. This will ensure the transaction + /// can be validly executed (by executing it); if it is invalid, it'll be returned along with + /// the error. Otherwise, it will return a mutable reference to self (in order to chain). + pub fn push(&mut self, tx: Transaction) -> error::Result<()> { + let output = state_machine::execute(&self.state, &mut self.changes, &self.executor, "execute_transaction", + &vec![].and(&self.header).and(&tx))?; + self.header = Header::decode(&mut &output[..]).expect("Header came straight out of runtime so must be valid"); + self.transactions.push(tx); + Ok(()) + } + + /// Consume the builder to return a valid `Block` containing all pushed transactions. + pub fn bake(mut self) -> error::Result { + self.header.transaction_root = ordered_trie_root(self.transactions.iter().map(Slicable::encode)).0.into(); + let output = state_machine::execute(&self.state, &mut self.changes, &self.executor, "finalise_block", + &self.header.encode())?; + self.header = Header::decode(&mut &output[..]).expect("Header came straight out of runtime so must be valid"); + Ok(Block { + header: self.header, + transactions: self.transactions, + }) + } +} diff --git a/substrate/substrate/client/src/in_mem.rs b/substrate/substrate/client/src/in_mem.rs index ce1aaf3db5..6097d12e51 100644 --- a/substrate/substrate/client/src/in_mem.rs +++ b/substrate/substrate/client/src/in_mem.rs @@ -21,13 +21,13 @@ use parking_lot::RwLock; use state_machine; use error; use backend; -use primitives; -use ser; +use runtime_support::Hashable; use primitives::block::{self, HeaderHash}; use blockchain::{self, BlockId, BlockStatus}; +use state_machine::backend::Backend as StateBackend; fn header_hash(header: &block::Header) -> block::HeaderHash { - primitives::hashing::blake2_256(&ser::encode(header)).into() + header.blake2_256().into() } struct PendingBlock { @@ -41,7 +41,7 @@ struct Block { body: Option, } -/// In-memory transaction. +/// In-memory operation. pub struct BlockImportOperation { pending_block: Option, pending_state: state_machine::backend::InMemory, @@ -156,12 +156,12 @@ impl blockchain::Backend for Blockchain { impl backend::BlockImportOperation for BlockImportOperation { type State = state_machine::backend::InMemory; - fn state(&self) -> error::Result { - Ok(self.pending_state.clone()) + fn state(&self) -> error::Result<&Self::State> { + Ok(&self.pending_state) } - fn import_block(&mut self, header: block::Header, body: Option, is_new_best: bool) -> error::Result<()> { - assert!(self.pending_block.is_none(), "Only one block per transaction is allowed"); + fn set_block_data(&mut self, header: block::Header, body: Option, is_new_best: bool) -> error::Result<()> { + assert!(self.pending_block.is_none(), "Only one block per operation is allowed"); self.pending_block = Some(PendingBlock { block: Block { header: header, @@ -172,6 +172,11 @@ impl backend::BlockImportOperation for BlockImportOperation { Ok(()) } + fn set_storage, Vec)>>(&mut self, changes: I) -> error::Result<()> { + self.pending_state.commit(changes); + Ok(()) + } + fn reset_storage, Vec)>>(&mut self, iter: I) -> error::Result<()> { self.pending_state = state_machine::backend::InMemory::from(iter.collect()); Ok(()) @@ -192,39 +197,6 @@ impl Backend { blockchain: Blockchain::new(), } } - - /// Generate and import a sequence of blocks. A user supplied function is allowed to modify each block header. Useful for testing. - pub fn generate_blocks(&self, count: usize, edit_header: F) where F: Fn(&mut block::Header) { - use backend::{Backend, BlockImportOperation}; - let info = blockchain::Backend::info(&self.blockchain).expect("In-memory backend never fails"); - let mut best_num = info.best_number; - let mut best_hash = info.best_hash; - let state_root = blockchain::Backend::header(&self.blockchain, BlockId::Hash(best_hash)) - .expect("In-memory backend never fails") - .expect("Best header always exists in the blockchain") - .state_root; - for _ in 0 .. count { - best_num = best_num + 1; - let mut header = block::Header { - parent_hash: best_hash, - number: best_num, - state_root: state_root, - transaction_root: Default::default(), - digest: Default::default(), - }; - edit_header(&mut header); - - let mut tx = self.begin_transaction(BlockId::Hash(best_hash)).expect("In-memory backend does not fail"); - best_hash = header_hash(&header); - tx.import_block(header, None, true).expect("In-memory backend does not fail"); - self.commit_transaction(tx).expect("In-memory backend does not fail"); - } - } - - /// Generate and import a sequence of blocks. Useful for testing. - pub fn push_blocks(&self, count: usize) { - self.generate_blocks(count, |_| {}) - } } impl backend::Backend for Backend { @@ -232,7 +204,7 @@ impl backend::Backend for Backend { type Blockchain = Blockchain; type State = state_machine::backend::InMemory; - fn begin_transaction(&self, block: BlockId) -> error::Result { + fn begin_operation(&self, block: BlockId) -> error::Result { let state = match block { BlockId::Hash(h) if h.is_zero() => Self::State::default(), _ => self.state_at(block)?, @@ -244,10 +216,10 @@ impl backend::Backend for Backend { }) } - fn commit_transaction(&self, transaction: Self::BlockImportOperation) -> error::Result<()> { - if let Some(pending_block) = transaction.pending_block { + fn commit_operation(&self, operation: Self::BlockImportOperation) -> error::Result<()> { + if let Some(pending_block) = operation.pending_block { let hash = header_hash(&pending_block.block.header); - self.states.write().insert(hash, transaction.pending_state); + self.states.write().insert(hash, operation.pending_state); self.blockchain.insert(hash, pending_block.block.header, pending_block.block.body, pending_block.is_best); } Ok(()) diff --git a/substrate/substrate/client/src/lib.rs b/substrate/substrate/client/src/lib.rs index 530288ca29..54f93405e1 100644 --- a/substrate/substrate/client/src/lib.rs +++ b/substrate/substrate/client/src/lib.rs @@ -18,13 +18,13 @@ #![warn(missing_docs)] +extern crate substrate_runtime_support as runtime_support; +extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_state_machine as state_machine; -extern crate substrate_serializer as ser; extern crate substrate_codec as codec; #[cfg(test)] #[macro_use] extern crate substrate_executor as executor; extern crate ed25519; -#[cfg(test)] extern crate substrate_runtime_support as runtime_support; #[cfg(test)] extern crate substrate_test_runtime as test_runtime; #[cfg(test)] extern crate substrate_keyring as keyring; @@ -39,6 +39,7 @@ pub mod blockchain; pub mod backend; pub mod in_mem; pub mod genesis; +pub mod block_builder; pub use blockchain::Info as ChainInfo; pub use blockchain::BlockId; @@ -50,6 +51,8 @@ use codec::{KeyedVec, Slicable}; use blockchain::Backend as BlockchainBackend; use backend::BlockImportOperation; use state_machine::backend::Backend as StateBackend; +use state_machine::{Ext, OverlayedChanges}; +use runtime_support::Hashable; /// Polkadot Client #[derive(Debug)] @@ -59,6 +62,7 @@ pub struct Client where B: backend::Backend { } /// Client info +// TODO: split queue info from chain info and amalgamate into single struct. #[derive(Debug)] pub struct ClientInfo { /// Best block hash. @@ -134,10 +138,10 @@ impl Client where if backend.blockchain().header(BlockId::Number(0))?.is_none() { trace!("Empty database, writing genesis block"); let (genesis_header, genesis_store) = build_genesis(); - let mut tx = backend.begin_transaction(BlockId::Hash(block::HeaderHash::default()))?; - tx.reset_storage(genesis_store.into_iter())?; - tx.import_block(genesis_header, None, true)?; - backend.commit_transaction(tx)?; + let mut op = backend.begin_operation(BlockId::Hash(block::HeaderHash::default()))?; + op.reset_storage(genesis_store.into_iter())?; + op.set_block_data(genesis_header, Some(vec![]), true)?; + backend.commit_operation(op)?; } Ok(Client { backend, @@ -167,6 +171,11 @@ impl Client where self.storage(id, &StorageKey(b":code".to_vec())).map(|data| data.0) } + /// Clone a new instance of Executor. + pub fn clone_executor(&self) -> E where E: Clone { + self.executor.clone() + } + /// Get the current set of authorities from storage. pub fn authorities_at(&self, id: &BlockId) -> error::Result> { let state = self.state_at(id)?; @@ -183,10 +192,8 @@ impl Client where /// No changes are made. pub fn call(&self, id: &BlockId, method: &str, call_data: &[u8]) -> error::Result { let mut changes = state_machine::OverlayedChanges::default(); - let state = self.state_at(id)?; - let return_data = state_machine::execute( - &state, + &self.state_at(id)?, &mut changes, &self.executor, method, @@ -195,6 +202,33 @@ impl Client where Ok(CallResult { return_data, changes }) } + /// Set up the native execution environment to call into a native runtime code. + pub fn using_environment T, T>( + &self, f: F + ) -> error::Result { + self.using_environment_at(&BlockId::Number(self.info()?.chain.best_number), &mut Default::default(), f) + } + + /// Set up the native execution environment to call into a native runtime code. + pub fn using_environment_at T, T>( + &self, + id: &BlockId, + overlay: &mut OverlayedChanges, + f: F + ) -> error::Result { + Ok(runtime_io::with_externalities(&mut Ext { backend: &self.state_at(id)?, overlay }, f)) + } + + /// Create a new block, built on the head of the chain. + pub fn new_block(&self) -> error::Result> where E: Clone { + block_builder::BlockBuilder::new(self) + } + + /// Create a new block, built on top of `parent`. + pub fn new_block_at(&self, parent: &BlockId) -> error::Result> where E: Clone { + block_builder::BlockBuilder::at_block(parent, &self) + } + /// Queue a block for import. pub fn import_block(&self, header: block::Header, body: Option) -> error::Result { // TODO: import lock @@ -204,13 +238,22 @@ impl Client where blockchain::BlockStatus::Unknown => return Ok(ImportResult::UnknownParent), } - let mut transaction = self.backend.begin_transaction(BlockId::Hash(header.parent_hash))?; - let mut _state = transaction.state()?; - // TODO: execute block on _state + let mut transaction = self.backend.begin_operation(BlockId::Hash(header.parent_hash))?; + let mut overlay = OverlayedChanges::default(); + + state_machine::execute( + transaction.state()?, + &mut overlay, + &self.executor, + "execute_block", + &block::Block { header: header.clone(), transactions: body.clone().unwrap_or_default().clone() }.encode() + )?; let is_new_best = header.number == self.backend.blockchain().info()?.best_number + 1; - transaction.import_block(header, body, is_new_best)?; - self.backend.commit_transaction(transaction)?; + trace!("Imported {}, (#{}), best={}", block::HeaderHash::from(header.blake2_256()), header.number, is_new_best); + transaction.set_block_data(header, body, is_new_best)?; + transaction.set_storage(overlay.drain())?; + self.backend.commit_operation(transaction)?; Ok(ImportResult::Queued) } @@ -238,6 +281,22 @@ impl Client where self.backend.blockchain().hash(block_number) } + /// Convert an arbitrary block ID into a block hash. + pub fn block_hash_from_id(&self, id: &BlockId) -> error::Result> { + match *id { + BlockId::Hash(h) => Ok(Some(h)), + BlockId::Number(n) => self.block_hash(n), + } + } + + /// Convert an arbitrary block ID into a block hash. + pub fn block_number_from_id(&self, id: &BlockId) -> error::Result> { + match *id { + BlockId::Hash(_) => Ok(self.header(id)?.map(|h| h.number)), + BlockId::Number(n) => Ok(Some(n)), + } + } + /// Get block header by id. pub fn header(&self, id: &BlockId) -> error::Result> { self.backend.blockchain().header(*id) @@ -254,11 +313,38 @@ mod tests { use super::*; use codec::Slicable; use keyring::Keyring; + use primitives::block::Transaction as PrimitiveTransaction; use test_runtime::genesismap::{GenesisConfig, additional_storage_with_genesis}; + use test_runtime::{UncheckedTransaction, Transaction}; use test_runtime; native_executor_instance!(Executor, test_runtime::api::dispatch, include_bytes!("../../test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm")); + fn genesis_config() -> GenesisConfig { + GenesisConfig::new_simple(vec![ + Keyring::Alice.to_raw_public(), + Keyring::Bob.to_raw_public(), + Keyring::Charlie.to_raw_public() + ], 1000) + } + + fn prepare_genesis() -> (primitives::block::Header, Vec<(Vec, Vec)>) { + let mut storage = genesis_config().genesis_map(); + let block = genesis::construct_genesis_block(&storage); + storage.extend(additional_storage_with_genesis(&block)); + (primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) + } + + #[test] + fn client_initialises_from_genesis_ok() { + let client = new_in_mem(Executor::new(), prepare_genesis).unwrap(); + let genesis_hash = client.block_hash(0).unwrap().unwrap(); + + assert_eq!(client.using_environment(|| test_runtime::system::latest_block_hash()).unwrap(), genesis_hash); + assert_eq!(client.using_environment(|| test_runtime::system::balance_of(Keyring::Alice.to_raw_public())).unwrap(), 1000); + assert_eq!(client.using_environment(|| test_runtime::system::balance_of(Keyring::Ferdie.to_raw_public())).unwrap(), 0); + } + #[test] fn authorities_call_works() { let genesis_config = GenesisConfig::new_simple(vec![ @@ -275,10 +361,79 @@ mod tests { }; let client = new_in_mem(Executor::new(), prepare_genesis).unwrap(); + assert_eq!(client.info().unwrap().chain.best_number, 0); assert_eq!(client.authorities_at(&BlockId::Number(0)).unwrap(), vec![ Keyring::Alice.to_raw_public(), Keyring::Bob.to_raw_public(), Keyring::Charlie.to_raw_public() ]); } + + #[test] + fn block_builder_works_with_no_transactions() { + let genesis_config = GenesisConfig::new_simple(vec![ + Keyring::Alice.to_raw_public(), + Keyring::Bob.to_raw_public(), + Keyring::Charlie.to_raw_public() + ], 1000); + + let prepare_genesis = || { + let mut storage = genesis_config.genesis_map(); + let block = genesis::construct_genesis_block(&storage); + storage.extend(additional_storage_with_genesis(&block)); + (primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) + }; + let client = new_in_mem(Executor::new(), prepare_genesis).unwrap(); + + let builder = client.new_block().unwrap(); + let block = builder.bake().unwrap(); + + client.import_block(block.header, Some(block.transactions)).unwrap(); + + assert_eq!(client.info().unwrap().chain.best_number, 1); + assert_eq!(client.using_environment(|| test_runtime::system::latest_block_hash()).unwrap(), client.block_hash(1).unwrap().unwrap()); + } + + trait Signable { + fn signed(self) -> PrimitiveTransaction; + } + impl Signable for Transaction { + fn signed(self) -> PrimitiveTransaction { + let signature = Keyring::from_raw_public(self.from.clone()).unwrap().sign(&self.encode()); + PrimitiveTransaction::decode(&mut UncheckedTransaction { signature, tx: self }.encode().as_ref()).unwrap() + } + } + + #[test] + fn block_builder_works_with_transactions() { + let genesis_config = GenesisConfig::new_simple(vec![ + Keyring::Alice.to_raw_public(), + Keyring::Bob.to_raw_public(), + Keyring::Charlie.to_raw_public() + ], 1000); + + let prepare_genesis = || { + let mut storage = genesis_config.genesis_map(); + let block = genesis::construct_genesis_block(&storage); + storage.extend(additional_storage_with_genesis(&block)); + (primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) + }; + let client = new_in_mem(Executor::new(), prepare_genesis).unwrap(); + + let mut builder = client.new_block().unwrap(); + + builder.push(Transaction { + from: Keyring::Alice.to_raw_public(), + to: Keyring::Ferdie.to_raw_public(), + amount: 42, + nonce: 0 + }.signed()).unwrap(); + let block = builder.bake().unwrap(); + client.import_block(block.header, Some(block.transactions)).unwrap(); + + assert_eq!(client.info().unwrap().chain.best_number, 1); + assert!(client.state_at(&BlockId::Number(1)).unwrap() != client.state_at(&BlockId::Number(0)).unwrap()); + assert_eq!(client.using_environment(|| test_runtime::system::balance_of(Keyring::Alice.to_raw_public())).unwrap(), 958); + assert_eq!(client.using_environment(|| test_runtime::system::balance_of(Keyring::Ferdie.to_raw_public())).unwrap(), 42); + } } diff --git a/substrate/substrate/executor/src/native_executor.rs b/substrate/substrate/executor/src/native_executor.rs index 99773b9f76..a759c046c6 100644 --- a/substrate/substrate/executor/src/native_executor.rs +++ b/substrate/substrate/executor/src/native_executor.rs @@ -45,12 +45,18 @@ pub trait NativeExecutionDispatch { /// A generic `CodeExecutor` implementation that uses a delegate to determine wasm code equivalence /// and dispatch to native code when possible, falling back on `WasmExecutor` when not. -#[derive(Default)] +#[derive(Debug, Default)] pub struct NativeExecutor { /// Dummy field to avoid the compiler complaining about us not using `D`. pub _dummy: ::std::marker::PhantomData, } +impl Clone for NativeExecutor { + fn clone(&self) -> Self { + NativeExecutor { _dummy: Default::default() } + } +} + impl CodeExecutor for NativeExecutor { type Error = Error; diff --git a/substrate/substrate/executor/src/wasm_executor.rs b/substrate/substrate/executor/src/wasm_executor.rs index eef0df976d..00bdb55865 100644 --- a/substrate/substrate/executor/src/wasm_executor.rs +++ b/substrate/substrate/executor/src/wasm_executor.rs @@ -276,7 +276,7 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, /// Wasm rust executor for contracts. /// /// Executes the provided code in a sandboxed wasm runtime. -#[derive(Debug, Default)] +#[derive(Debug, Default, Clone)] pub struct WasmExecutor; impl CodeExecutor for WasmExecutor { diff --git a/substrate/substrate/network/Cargo.toml b/substrate/substrate/network/Cargo.toml index 55edfb7d54..5e3314e7b7 100644 --- a/substrate/substrate/network/Cargo.toml +++ b/substrate/substrate/network/Cargo.toml @@ -22,7 +22,11 @@ substrate-primitives = { path = "../../substrate/primitives" } substrate-client = { path = "../../substrate/client" } substrate-state-machine = { path = "../../substrate/state-machine" } substrate-serializer = { path = "../../substrate/serializer" } +substrate-runtime-support = { path = "../../substrate/runtime-support" } [dev-dependencies] +substrate-test-runtime = { path = "../test-runtime" } substrate-executor = { path = "../../substrate/executor" } +substrate-keyring = { path = "../../substrate/keyring" } +substrate-codec = { path = "../../substrate/codec" } env_logger = "0.4" diff --git a/substrate/substrate/network/src/lib.rs b/substrate/substrate/network/src/lib.rs index d7053272ce..bc2ebe7196 100644 --- a/substrate/substrate/network/src/lib.rs +++ b/substrate/substrate/network/src/lib.rs @@ -27,6 +27,7 @@ extern crate substrate_primitives as primitives; extern crate substrate_state_machine as state_machine; extern crate substrate_serializer as ser; extern crate substrate_client as client; +extern crate substrate_runtime_support as runtime_support; extern crate serde; extern crate serde_json; #[macro_use] extern crate serde_derive; @@ -34,6 +35,12 @@ extern crate serde_json; #[macro_use] extern crate bitflags; #[macro_use] extern crate error_chain; +#[cfg(test)] extern crate env_logger; +#[cfg(test)] extern crate substrate_test_runtime as test_runtime; +#[cfg(test)] extern crate substrate_keyring as keyring; +#[cfg(test)] #[macro_use] extern crate substrate_executor as executor; +#[cfg(test)] extern crate substrate_codec as codec; + mod service; mod sync; mod protocol; @@ -44,13 +51,7 @@ mod config; mod chain; mod blocks; -#[cfg(test)] -mod test; - -#[cfg(test)] -extern crate substrate_executor; -#[cfg(test)] -extern crate env_logger; +#[cfg(test)] mod test; pub use service::Service; pub use protocol::{ProtocolStatus}; @@ -59,5 +60,6 @@ pub use network::{NonReservedPeerMode, ConnectionFilter, ConnectionDirection, Ne // TODO: move it elsewhere fn header_hash(header: &primitives::Header) -> primitives::block::HeaderHash { - primitives::hashing::blake2_256(&ser::encode(header)).into() + use runtime_support::Hashable; + header.blake2_256().into() } diff --git a/substrate/substrate/network/src/test/mod.rs b/substrate/substrate/network/src/test/mod.rs index d5010ed2bf..86c8cd91bd 100644 --- a/substrate/substrate/network/src/test/mod.rs +++ b/substrate/substrate/network/src/test/mod.rs @@ -19,13 +19,21 @@ mod sync; use std::collections::{VecDeque, HashSet, HashMap}; use std::sync::Arc; use parking_lot::RwLock; -use client::{self, BlockId}; -use primitives::block; -use substrate_executor as executor; +use client::{self, BlockId, genesis}; +use client::block_builder::BlockBuilder; +use primitives; +use executor; use io::SyncIo; use protocol::Protocol; use config::ProtocolConfig; use network::{PeerId, SessionInfo, Error as NetworkError}; +use test_runtime::genesismap::{GenesisConfig, additional_storage_with_genesis}; +use runtime_support::Hashable; +use test_runtime; +use keyring::Keyring; +use codec::Slicable; + +native_executor_instance!(Executor, test_runtime::api::dispatch, include_bytes!("../../../test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm")); pub struct TestIo<'p> { pub queue: &'p RwLock>, @@ -92,7 +100,7 @@ pub struct TestPacket { } pub struct Peer { - pub chain: Arc>, + chain: Arc>>, pub sync: Protocol, pub queue: RwLock>, } @@ -149,6 +157,36 @@ impl Peer { fn flush(&self) { } + + fn generate_blocks(&self, count: usize, mut edit_block: F) where F: FnMut(&mut BlockBuilder>) { + for _ in 0 .. count { + let mut builder = self.chain.new_block().unwrap(); + edit_block(&mut builder); + let block = builder.bake().unwrap(); + trace!("Generating {}, (#{})", primitives::block::HeaderHash::from(block.header.blake2_256()), block.header.number); + self.chain.import_block(block.header, Some(block.transactions)).unwrap(); + } + } + + fn push_blocks(&self, count: usize, with_tx: bool) { + let mut nonce = 0; + if with_tx { + self.generate_blocks(count, |builder| { + let tx = test_runtime::Transaction { + from: Keyring::Alice.to_raw_public(), + to: Keyring::Alice.to_raw_public(), + amount: 1, + nonce: nonce, + }; + let signature = Keyring::from_raw_public(tx.from.clone()).unwrap().sign(&tx.encode()); + let tx = primitives::block::Transaction::decode(&mut test_runtime::UncheckedTransaction { signature, tx: tx }.encode().as_ref()).unwrap(); + builder.push(tx).unwrap(); + nonce = nonce + 1; + }); + } else { + self.generate_blocks(count, |_| ()); + } + } } pub struct TestNet { @@ -158,6 +196,19 @@ pub struct TestNet { } impl TestNet { + fn genesis_config() -> GenesisConfig { + GenesisConfig::new_simple(vec![ + Keyring::Alice.to_raw_public(), + ], 1000) + } + + fn prepare_genesis() -> (primitives::block::Header, Vec<(Vec, Vec)>) { + let mut storage = Self::genesis_config().genesis_map(); + let block = genesis::construct_genesis_block(&storage); + storage.extend(additional_storage_with_genesis(&block)); + (primitives::block::Header::decode(&mut block.header.encode().as_ref()).expect("to_vec() always gives a valid serialisation; qed"), storage.into_iter().collect()) + } + pub fn new(n: usize) -> Self { Self::new_with_config(n, ProtocolConfig::default()) } @@ -168,17 +219,9 @@ impl TestNet { started: false, disconnect_events: Vec::new(), }; - let test_genesis_block = block::Header { - parent_hash: 0.into(), - number: 0, - state_root: 0.into(), - transaction_root: Default::default(), - digest: Default::default(), - }; for _ in 0..n { - let chain = Arc::new(client::new_in_mem(executor::WasmExecutor, - || (test_genesis_block.clone(), vec![])).unwrap()); + let chain = Arc::new(client::new_in_mem(Executor::new(), Self::prepare_genesis).unwrap()); let sync = Protocol::new(config.clone(), chain.clone()).unwrap(); net.peers.push(Arc::new(Peer { sync: sync, diff --git a/substrate/substrate/network/src/test/sync.rs b/substrate/substrate/network/src/test/sync.rs index 54167a2c5e..3e77c01c75 100644 --- a/substrate/substrate/network/src/test/sync.rs +++ b/substrate/substrate/network/src/test/sync.rs @@ -22,8 +22,8 @@ use super::*; fn sync_from_two_peers_works() { ::env_logger::init().ok(); let mut net = TestNet::new(3); - net.peer(1).chain.backend().push_blocks(100); - net.peer(2).chain.backend().push_blocks(100); + net.peer(1).push_blocks(100, false); + net.peer(2).push_blocks(100, false); net.sync(); assert!(net.peer(0).chain.backend().blockchain().equals_to(net.peer(1).chain.backend().blockchain())); let status = net.peer(0).sync.status(); @@ -34,9 +34,9 @@ fn sync_from_two_peers_works() { fn sync_from_two_peers_with_ancestry_search_works() { ::env_logger::init().ok(); let mut net = TestNet::new(3); - net.peer(0).chain.backend().generate_blocks(10, |header| header.state_root = 42.into()); - net.peer(1).chain.backend().push_blocks(100); - net.peer(2).chain.backend().push_blocks(100); + net.peer(0).push_blocks(10, true); + net.peer(1).push_blocks(100, false); + net.peer(2).push_blocks(100, false); net.restart_peer(0); net.sync(); assert!(net.peer(0).chain.backend().blockchain().canon_equals_to(net.peer(1).chain.backend().blockchain())); @@ -45,7 +45,7 @@ fn sync_from_two_peers_with_ancestry_search_works() { #[test] fn sync_long_chain_works() { let mut net = TestNet::new(2); - net.peer(1).chain.backend().push_blocks(5000); + net.peer(1).push_blocks(500, false); net.sync_steps(3); assert_eq!(net.peer(0).sync.status().sync.state, SyncState::Downloading); net.sync(); @@ -56,8 +56,8 @@ fn sync_long_chain_works() { fn sync_no_common_longer_chain_fails() { ::env_logger::init().ok(); let mut net = TestNet::new(3); - net.peer(0).chain.backend().generate_blocks(200, |header| header.state_root = 42.into()); - net.peer(1).chain.backend().push_blocks(200); + net.peer(0).push_blocks(20, true); + net.peer(1).push_blocks(20, false); net.sync(); assert!(!net.peer(0).chain.backend().blockchain().canon_equals_to(net.peer(1).chain.backend().blockchain())); } @@ -66,16 +66,16 @@ fn sync_no_common_longer_chain_fails() { fn sync_after_fork_works() { ::env_logger::init().ok(); let mut net = TestNet::new(3); - net.peer(0).chain.backend().push_blocks(30); - net.peer(1).chain.backend().push_blocks(30); - net.peer(2).chain.backend().push_blocks(30); + net.peer(0).push_blocks(30, false); + net.peer(1).push_blocks(30, false); + net.peer(2).push_blocks(30, false); - net.peer(0).chain.backend().generate_blocks(10, |header| header.state_root = 42.into()); // fork - net.peer(1).chain.backend().push_blocks(20); - net.peer(2).chain.backend().push_blocks(20); + net.peer(0).push_blocks(10, true); + net.peer(1).push_blocks(20, false); + net.peer(2).push_blocks(20, false); - net.peer(1).chain.backend().generate_blocks(10, |header| header.state_root = 42.into()); // second fork between 1 and 2 - net.peer(2).chain.backend().push_blocks(1); + net.peer(1).push_blocks(10, true); + net.peer(2).push_blocks(1, false); // peer 1 has the best chain let peer1_chain = net.peer(1).chain.backend().blockchain().clone(); diff --git a/substrate/substrate/primitives/src/block.rs b/substrate/substrate/primitives/src/block.rs index 225b86def8..c1799ef551 100644 --- a/substrate/substrate/primitives/src/block.rs +++ b/substrate/substrate/primitives/src/block.rs @@ -16,20 +16,20 @@ //! Block and header type definitions. +use rstd::vec::Vec; #[cfg(feature = "std")] use bytes; -use rstd::vec::Vec; +use Hash; use codec::{Input, Slicable}; -use hash::H256; /// Used to refer to a block number. pub type Number = u64; /// Hash used to refer to a block hash. -pub type HeaderHash = H256; +pub type HeaderHash = Hash; /// Hash used to refer to a transaction hash. -pub type TransactionHash = H256; +pub type TransactionHash = Hash; /// Simple generic transaction type. #[derive(PartialEq, Eq, Clone)] @@ -127,9 +127,9 @@ pub struct Header { /// Block number. pub number: Number, /// State root after this transition. - pub state_root: H256, + pub state_root: Hash, /// The root of the trie that represents this block's transactions, indexed by a 32-byte integer. - pub transaction_root: H256, + pub transaction_root: Hash, /// The digest of activity on the block. pub digest: Digest, } diff --git a/substrate/substrate/primitives/src/lib.rs b/substrate/substrate/primitives/src/lib.rs index 9563b4fad7..fe42a997ca 100644 --- a/substrate/substrate/primitives/src/lib.rs +++ b/substrate/substrate/primitives/src/lib.rs @@ -91,8 +91,10 @@ mod tests; pub use self::hash::{H160, H256}; pub use self::uint::{U256, U512}; - pub use block::{Block, Header}; +/// General hash type. +pub type Hash = H256; + /// An identifier for an authority in the consensus algorithm. The same as ed25519::Public. pub type AuthorityId = [u8; 32]; diff --git a/substrate/substrate/rpc/Cargo.toml b/substrate/substrate/rpc/Cargo.toml index 149199546e..485e08708c 100644 --- a/substrate/substrate/rpc/Cargo.toml +++ b/substrate/substrate/rpc/Cargo.toml @@ -15,3 +15,4 @@ substrate-executor = { path = "../executor" } [dev-dependencies] assert_matches = "1.1" substrate-executor = { path = "../executor" } +substrate-runtime-support = { path = "../runtime-support" } diff --git a/substrate/substrate/rpc/src/chain/tests.rs b/substrate/substrate/rpc/src/chain/tests.rs index c62981094c..f462d759ec 100644 --- a/substrate/substrate/rpc/src/chain/tests.rs +++ b/substrate/substrate/rpc/src/chain/tests.rs @@ -16,6 +16,7 @@ use substrate_executor as executor; use client; +use runtime_support::Hashable; use super::*; #[test] @@ -31,7 +32,7 @@ fn should_return_header() { let client = client::new_in_mem(executor::WasmExecutor, || (test_genesis_block.clone(), vec![])).unwrap(); assert_matches!( - ChainApi::header(&client, "af65e54217fb213853703d57b80fc5b2bb834bf923046294d7a49bff62f0a8b2".into()), + ChainApi::header(&client, test_genesis_block.blake2_256().into()), Ok(Some(ref x)) if x == &block::Header { parent_hash: 0.into(), number: 0, diff --git a/substrate/substrate/rpc/src/lib.rs b/substrate/substrate/rpc/src/lib.rs index 05d3d94685..513bc42d87 100644 --- a/substrate/substrate/rpc/src/lib.rs +++ b/substrate/substrate/rpc/src/lib.rs @@ -33,6 +33,8 @@ extern crate substrate_executor; #[cfg(test)] #[macro_use] extern crate assert_matches; +#[cfg(test)] +extern crate substrate_runtime_support as runtime_support; pub mod chain; pub mod state; diff --git a/substrate/substrate/rpc/src/state/tests.rs b/substrate/substrate/rpc/src/state/tests.rs index 687c851c5c..469b794b05 100644 --- a/substrate/substrate/rpc/src/state/tests.rs +++ b/substrate/substrate/rpc/src/state/tests.rs @@ -17,6 +17,7 @@ use super::*; use substrate_executor as executor; use self::error::{Error, ErrorKind}; +use runtime_support::Hashable; use client; #[test] @@ -30,7 +31,7 @@ fn should_return_storage() { }; let client = client::new_in_mem(executor::WasmExecutor, || (test_genesis_block.clone(), vec![])).unwrap(); - let genesis_hash = "af65e54217fb213853703d57b80fc5b2bb834bf923046294d7a49bff62f0a8b2".into(); + let genesis_hash = test_genesis_block.blake2_256().into(); assert_matches!( StateApi::storage(&client, StorageKey(vec![10]), genesis_hash), @@ -51,7 +52,7 @@ fn should_call_contract() { }; let client = client::new_in_mem(executor::WasmExecutor, || (test_genesis_block.clone(), vec![])).unwrap(); - let genesis_hash = "af65e54217fb213853703d57b80fc5b2bb834bf923046294d7a49bff62f0a8b2".into(); + let genesis_hash = test_genesis_block.blake2_256().into(); assert_matches!( StateApi::call(&client, "balanceOf".into(), vec![1,2,3], genesis_hash), diff --git a/substrate/substrate/state-machine/src/backend.rs b/substrate/substrate/state-machine/src/backend.rs index a1dec6dc3a..f77e9a59d8 100644 --- a/substrate/substrate/state-machine/src/backend.rs +++ b/substrate/substrate/state-machine/src/backend.rs @@ -57,7 +57,7 @@ impl error::Error for Void { /// In-memory backend. Fully recomputes tries on each commit but useful for /// tests. -#[derive(Default, Clone)] +#[derive(Debug, PartialEq, Default, Clone)] pub struct InMemory { inner: MemoryState, // keeps all the state in memory. } diff --git a/substrate/substrate/state-machine/src/lib.rs b/substrate/substrate/state-machine/src/lib.rs index 33dd346c1c..a3f2e3dc4b 100644 --- a/substrate/substrate/state-machine/src/lib.rs +++ b/substrate/substrate/state-machine/src/lib.rs @@ -42,13 +42,10 @@ pub use testing::TestExternalities; pub use ext::Ext; /// Updates to be committed to the state. -pub enum Update { - /// Set storage of object at given key -- empty is deletion. - Storage(Vec, Vec), -} +pub type Update = (Vec, Vec); // in-memory section of the state. -#[derive(Default, Clone)] +#[derive(Debug, PartialEq, Default, Clone)] struct MemoryState { storage: HashMap, Vec>, } @@ -63,15 +60,11 @@ impl MemoryState { } fn update(&mut self, changes: I) where I: IntoIterator { - for update in changes { - match update { - Update::Storage(key, val) => { - if val.is_empty() { - self.storage.remove(&key); - } else { - self.storage.insert(key, val); - } - } + for (key, val) in changes { + if val.is_empty() { + self.storage.remove(&key); + } else { + self.storage.insert(key, val); } } } @@ -105,10 +98,12 @@ impl OverlayedChanges { /// Commit prospective changes to state. pub fn commit_prospective(&mut self) { - let storage_updates = self.prospective.storage.drain() - .map(|(key, value)| Update::Storage(key, value)); + self.committed.update(self.prospective.storage.drain()); + } - self.committed.update(storage_updates); + /// Drain prospective changes to an iterator. + pub fn drain(&mut self) -> ::std::collections::hash_map::Drain, std::vec::Vec> { + self.committed.storage.drain() } } diff --git a/substrate/substrate/test-runtime/src/genesismap.rs b/substrate/substrate/test-runtime/src/genesismap.rs index 0dc01c0abc..1bc24d2657 100644 --- a/substrate/substrate/test-runtime/src/genesismap.rs +++ b/substrate/substrate/test-runtime/src/genesismap.rs @@ -62,7 +62,10 @@ macro_rules! map { pub fn additional_storage_with_genesis(genesis_block: &Block) -> HashMap, Vec> { use codec::Slicable; + use primitives::hexdisplay::HexDisplay; + println!("genesis hash {}", HexDisplay::from(&genesis_block.header.blake2_256())); + println!("genesis {}", HexDisplay::from(&genesis_block.header.encode())); map![ - twox_128(&b"latest"[..]).encode() => genesis_block.header.blake2_256().encode() + twox_128(&b"latest"[..]).to_vec() => genesis_block.header.blake2_256().to_vec() ] } 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 2f9b66ebfe8a8f3fc3852e05336ce2aee7b90701..c8ac9359ef120148ebdf8776a28426eea8086d98 100644 GIT binary patch literal 31904 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 literal 32856 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 DiK}pl diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 160eaf04215b29354fc6aaece97eeebb9b003093..3329885da9a60eb0dbabb75aadba95405ccefe2a 100644 GIT binary patch literal 31984 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 Rh2$Al?@wQ%S-xBGe*ps>^4kCa literal 32936 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