From be73b235649955a9e4bba27ca30931f3c15caa34 Mon Sep 17 00:00:00 2001 From: MEUNIER Thibaud Date: Sun, 28 Jan 2024 13:13:47 +0100 Subject: [PATCH] 100 blocks --- apps.tgz | Bin 0 -> 4100 bytes blockchain.tgz | Bin 0 -> 8586 bytes blockchain/data/blocks.json | 6 ++ blockchain/data/transactions.json | 7 ++ blockchain/inc/block.php | 19 +++- blockchain/robot.php | 35 +++----- blockchain/robot.sh | 21 +---- info/robot.php | 30 +++++++ lancer2.sh | 4 +- robot.sh | 6 ++ scripts/100blocks.sh | 133 ++++++++++++++++++++++++++++ scripts/block.sh | 86 ++++++++++++++++++ scripts/blocks2.sh | 1 - scripts/blocks2.sh.back_20220819 | 105 ++++++++++++++++++++++ scripts/blocks3.sh | 52 +---------- scripts/blocks_tmp.sh | 140 ++++++++++++++++++++++++++++++ scripts/clean_data.sh | 11 ++- scripts/nonce.sh | 20 ++++- scripts/tweet.sh | 2 +- 19 files changed, 572 insertions(+), 106 deletions(-) create mode 100644 apps.tgz create mode 100644 blockchain.tgz create mode 100644 blockchain/data/transactions.json create mode 100644 info/robot.php create mode 100755 scripts/100blocks.sh create mode 100755 scripts/block.sh create mode 100755 scripts/blocks2.sh.back_20220819 create mode 100755 scripts/blocks_tmp.sh diff --git a/apps.tgz b/apps.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fa76bec9c5e3f6a4756e5f0ff11ee13cc1809aeb GIT binary patch literal 4100 zcmV+f5c}^RiwFP!000021MMBzcG^fbudT1R!DO)04M<{}Nt*N_Hfj3|F>Zsqr%xth z%TO3~ghaGBNhkT2ejNYC_{Zi}l}boLERKQ1iRyUKa_iQu?XFcNLo<8CRtwJX-rACk zsaC15|Cr+cNuJ|sHo!gGvfO!ai{9VSv~|CD zuA9Yk%^6D4mb3-%YvcH!@wCE!tH{u2^uMB36~F)0O0`7!zgnuwDgWO@`tc|1c1bE0 zA)n9t|DdHo&oT%41zZ@`xn>aY-X^a--6p3NDh-fBR?OcQb+cFGIp`?LJ&q%6zI6%8 z4FmdQOw2yjIh+_y=(djzI^8zo@`YT{CJyJlPVo}6SawnKT+6VuesU29=E5R4*(gdx z8Rv%8d(|6iC;({<*ljZQBOD|B>#G6M0G0{8A+hln41&ekrcP{NnS%x-(9;~azUmFH zuQb#BA)JXp!dP>h>nk88X!eCSBBm>f%rbz}A&O+EL$1~6bdewwVcWXn5O+I^87^Na zFL!nz3MyV8^;r~br@Wv#Ose_l(FJjz(%av3cesz)wnHd(cq!q$^*TIjv^vcl=<8$~ z0VL8JS}+00KN%AJV(1ofI3B`}U42BR9-61_+v$h2Tc)0lZF0%43rG7$r_FW?3;*fK zofo)YSYnO8W(9!B|Jri$zf@-OzgkmM`M-(8`+vO(z#{ptC>88~wN|TER9U9|ui`~2 z|2L6R`Jc-F+sS{%K~mX#N0V@Dth0>e<$sCVfYkp-O~O?EZy<^O?-@ihPpS89^{(Ir z{vV}`Hb2V$Dgvn`I!=^QwU)~Njijjm7aFFkQ~#-rqRoN6Wt!Jl^a6hwyLYH!V0w;3 zff8MPZp0?V%{{-EHvkRMy zA%6)}=s`F$mr{oAxCP7yA3#9vHg@-$c(1*A1-bWQTQ{+2^<(Z#>RS@PY;qnJv#i|0 zLxeO5t$lMa(0W*R)Dlo(0N1w0aH$jTEq5SivRfI*lh*(lIRh_+^O!rA`yt%;4ojwQ zzhmMuv)gJm4&nP!2qpthAS?Xj;pt~s7t(hF-Hag2kElIOG34EMV*&%nGdKLh0=6X5 z^p^C%9#I$f`;YMN$2URnr#?72`+!a2oD0HwMfNhv0=Rjh@M%cJgFxh1wyTpUCdPFl z+5KtFDDtN>d8@k=V+5Jkqvjz+#%aiOPIh;jos0y2K_EvmAX%grhHs+O*$sg+{Im(W zO_W@FCoFi058|}?l=@h(d36UggN9Pyf$f>5j_mw?Mv$#gPQ*o6cGAj6jpN4iX7{++ zp_lONV0ZtZdCW@ego~Usv}v942|h)^p#}Tw4J(t?k}|(7$$!6Vjm91d&izJbAImEg z3K=OBjU5qpX!VKDK72nC4<#oeP?y4^CZOAbPW!lf(1gaX&0XN#g^&H7{M^&%&L+YC zxpqg_ffUX))U;GtRpq}c|5!yC3;2JjDp!U7kJ^C9|0{B(n)3fmq(uJj4~9+h^fhy7 zpPPQX1q1c%p9BWV-$WVco1tzHIC$2n=W;;VJLJ)((oF&%KEMk^ZzA`n_oxEDe2kVB z)wmCls`?pkE)E+tYZPkM05_NB!KoZ>zj^TUes>;Vi31)!?fz>XSeb$$+!pK)3as97~>L0cL)f!#@m+F7(PpSQX_w4_@HXL-}K3?Bk%e*T}W}C*#E#1LJ zFfEJ3C9-R^dN6g znhnBW>Sr;j%o>LQXg>BjN@gD#Mf0T4ot;3B3SgNkC5M6pAuN-eV*Cc`)w0wJB`Q?l z2XHmrfIQQyco#%;7KHU_4-pVT5T104^_dysKM6cupD7JsvBZxk2#W-5>L`jOA^)9s zW^ZU)rvB&ZwSYzbf3;SP`TxrbjsK_efBh+y|94ORcP4X{)*PM&>$~PVuNX*@18af+ zd_E9$X8DjOV-`b?7Rg=tVPAe|Rh@9)gZkueiqz>gx+k4__9w}=CA0iVAP;@Q!eNLn z)o%J)(zO47^<^yJ|7Df=|4V2Is#S!f@n5A>N%{XK(vti?jRd5TfIA%tNc3LDO^#^! zTl_C{bm--X!wk`}O-B0le{BK-G)~bRC1B*(M4+OkVn zv&-7E^DNqkGkca{8@SP95rmbQxO~akqz@N{fCT6&!zXC~W0L`lTSgl`H3Bl9hb&D} zviBp6f23)>N$CIX8$#UA6#r2xbp3w?EdZ+c*I4|gl&=5WNJ{-bchCRxNk$8s;7K-1 zm%fOaEQu=hFOyFkY5?ev$V-iq-E2#Thv)RQfyyVsCT4R(k7CZt5 zD+FCg-}0%MY(9y)qykI>x<{0ly?2O9g?-DjQC_n0o*g%Tsn=9lmbSRoyS?4*p!Sjt z-l7^K^xrMsoD3aeYNNOw6Pw|a64i%EYZd9!=6?I+c&e9hGWJ2^)z2{V%cuIdAesOl zCe%8FJyvguBSUx8qAB`{I2oka8ikN;C849BiMaeBI=@qJJ@hF3SH;-O+gC`@hST5{>^?%N3=hmQ=R?yO#3*&7{=+Td6!*ne`{c$7+nf zn@KEM%mRn`mUP^H+V0MAkoyjC?v!T^ab9SaWt0*&|EUwZLI8dW~{Su4Eya}z-kff+qNzZPV=pSd+lAfsFhk+)_(e42@ zLT4@Q{j*kpFT;o!augEf2Ue;g(Eb{-CmC5(N$~A@h|4T}G{?kTMs{eoC`hT~* z*Z94j-DX@3HNTuJKVm;Q34kT7iD0Pyi870m8#{#d9Oc@pAhydL-5ij)x3jE6 z=4JU7V&m!FnDy?BS>NWEghmYQNm;xrCD@m;+|HDkdwAjQl#ug!!48!h?@@`7@`?LY zRww*E)1ruzRzQo8;pUH_A=|4G;Xr0aju^*`zQpLG4t%vqGK|M@Ddia`I@dat}S zto^5Hq5e)DcJ+G0kLG$NH` zCY53}`eI>1kz4?D?4+#{p~gPbr1|!;rGiNU(Jz_gw$a_5X*@4^!wqRmJs= zo2i#i9!|c#m|h%BP7XWMn0mwTtvfrJBj1xpjy&|YeE-f)ep9{l+0o>v z*EpSJMR`!(EO&O6*Gp0xu>b9k@9X*pGG62*0dP_^5#L18H{`@-FR#m;!nZ#9F(i-X z@1Ew}uXtU47;e*Et@?jg|2_ZD=K3EK1AYhpM`3_|l=0wS{Qpn6HuPWJdKcQ}J1UOn z{2ls_!Z73;`sa-Oi~s*A*T4S2$<#kp(`eO^Zp6Btcwl(VY+_zd===J+iOt$Jef|u z8#Jh%XE~y`eGM4%msqPUf3kK?#;RNt*BMcB)0?=Nh_sG-9F>#BWMEe0F51Y{!qrd+3 zXt4RRNCaU-zVvTuq`xA|?B|~qRQYC~Fh+uiuz&`gXulbqy_nKLUr5(#_6j-JelrK7 z75`$mB$WE$Y-2cUhL0`0(`=6CtR5aDBoKbMXof!>T}%@?Jv~4E)1YSsLQoc95#QK+ zvC3x1eQL`aU66zVMR*v9!~QhK$DP=F)5s{2n5MBTI}a%YmkCJad>3;UBOFxe|i!1%@lYiWj!G$+?t4x`+V zW*pYigeEFovb8RsonL-Eyt-qoAq^mgtGOl0^B~ zCbW%0C5@nKv0>Fmz`piV|N5K7e6BJO$J^gtD%i4G!B1ze)XcyQU_(HSg*P)GCQPSa zU7;GOE+9Kytp3o`d$^*k$~Dod8LRYAa}CzHv= z_!fW-&}|^ECiC&mTjQ>ee7yjTO798Lbu`S%-Mw{$&2B89qb;hRR9y;NE|$m!^!5Jn z)#d5=1xWSsbibPN{oO8yldH?K$t5BYSbm>=p!@Op+1c=TG8uh6JinUkui>oG`Gu@u z+t*h6vHcnKY*EM(}WL*tCbWoo1e1sx{@E>h-}Dq!b9P``+3)1nGfl` z?~W>W8%gy+6?W#n{PG?hwLlLKYc-FcAktXkI)PAmuHJYvuDf)(-R7#icBilCZil{p z@mwNs^Q^#hi_K5+&4%G!ZE^JY>SMREJ34 zqR_-f4ECFugkT8^*LQ=b!^^YLpRb04>cO^WK1GCaF=HX(R!0nrdj1sz7Oj#3FW* zQAv}4cEG3;pKR%$O0QhMny6W5hi6|MIv0{LYu^rQWL@oVT%%$X-%R! zWI=#`oyi?Noj$$1`fhl7I@~h6)OmwXSt1f08ZLBf3{-5TF%H%R#1hX%7;D>UG)9z{ ztcBNx@@*nZMJgk~Qyn|QWF%Q+H8ZJBtyYvLlu@UHC=Ik^Qg_Izt3~$pIeZnV)p&BW zU34Na3R;b+v!IY5<`zl}1W@vjGM4CAQ>{{_MI5^h9a>}FqN_3tpUKgH#ao3J>A(qY zWf}xJOkxT?bEyki62{h8rFRDRh0qTwK@mmx1bMeZNz9K zY@$HM$XR({W9F0$V;VRXf>mq}o=<68cV$5c*J05kWv^aClstKHORju7X$w zXb0^QmDhMO9DcK1`b~gG7^ZB>QsK0O2$eyZ01;BI(^zn$BM}Q_leCYG@u-Wd$LHUS zo&ow+!>S6kCt50GqGALF_@hHGNDMW~#$g&nJocX$J@O71O=#Q;tAD;4osOPfR<0Vb ztpbFNBQgcjN*8iOBgMFJN0qVI#^4PivqKqx?aWI7d!@J_!Zg>bHCxx(hbAp5;aNG$5S?!QS zMc(4V1OY!XDbf|ugBEfT++nyR*fPN-&}Yh(7RZ&tm?0K$8yW{t0+~^qfcB(iO3;u+ zvWJdAz8%30zaEXpqw}*$vy^TZVnm(fN+@aqqdoA73LdiiShD$f*#JS(kA} z2>hah*p#t|U`epyxhMb+U6aMKP&JF3dn1jm{FM!e{(s+hC1fChjNd4mwHF%7yCP@Wj z5}7o(7wHV^3Z#0&=8oL928}{$uy@pF9CA=#2AxomrU}k!GzO~}rFG|` zjLY7)y?R@-*){xheJbHUJwZ4M6pQG!UFAOrE$a3?ZU z!7aAQ`Ne2FIsbH6N(8CmiU*NKfTn>!(HOu@lPJ;-wH(4hqyv;jVPu316AskAyli2G zanyzN<^#d>{BrbSD<2%Ck3$NXjY6Tp$V5 z9b6_6<<-V&Op(Vbe+nQ}4&`4ck{HBcP>`o_s-nQH$f zz{1SIXBIV)bBIUE@>ntDb8VJ}j-v8b658y2@a&YhJ}k1vJ}z^AuJp-$8(@CYW>?N{pWW*J1D--^L{FR zncpk8kApm4+z>NZ&6{%@(=DQS{V5@7BIHqWd>cy-B@NvwEMnHS=yBn0eEoJ{Pyw z?oKxk>vL{>DfdRdQ=CUyzx^+~9d5GeH+{*G^SM7fkgLBfR;BfVt4=VT9*rmMk*==u za88`cN>WyxfzPh;>NtYR3V*J}%f8Z-ZLJJ1hO^IC#s9#_b|1nJre-y5UGkTnk2lgI zgFz#m-=&9N`r7Efrmqh#`aRP0T#wj%e_wfz+de6<{J6gTb*KKnrMZd-?dz-n1vYSR z9TeQ#+gxPRyk6@)Ml={~4r-4QoT{R%Bzl5|b|-)Hz(LjH+pN5Te&`ZC8C*vBXl^e*5G>{-Bjg z<^6TnbyVqmjC?O2T2Tq`5c_#)T{u*b%RMoXV#zGdqV8% z<;+KNnE!q=ThFB$7)^J`w;~}QIR>|4Sk+2@=m!3JA1gKk&aO^RKOEC;`_k`lpZh%L zBl)-ixJksFIW*(e2gzX+GgTrZsU}#b!#B1lU`ic(H3z&}d+4RYP2YYV+<>U=+OzN7 z+4EZ|Z!>)3$lC_veMr{5)NA$8Y14aSNuROCnI|ouwKY=RCri63Np`aYo3yE#&nt?z zzqOM2{3FzLC&=F#)Vc11Loc+$9zuUe|H0m-U;W$r6rHP|s_};iDYtX8dgw=L9bG+A za#!=@KGpk~KT`YXdMnx&>Qx;@M)S$d@>!Peb~EkW&RPhm{{HVHMAk*ZjobpQ>}ju1 zx;Lrl4C@69!kZB+uHxT*mvFRw3uhw)=N-(JYXrm*5uET$~cdff^8(H{w z@)T3UTT2ajwEs}-<%oFoHLj2s8!Y%(hjBvMWm^LN-!9yL;S$~)Jc4{5OLn&u4Qc4e6S8t zC%TBpAfAMH;Da7pfIQK@jpia2Zhq!^_iVa|llUr1bpxQCV2-Dl&iwWi#zbfu&??|} z%?hP;H+=9cN~liuNYk$`%Zv}!MWLKV({~`LbRX8(OQthC@^Z>!NWqH3IaaE667)6% zh3rPS7r3ZIyAW3m(LZo4Cj(DBnO!D}^l+UU5RW0by9L3(f}-J;1f%QkWNB*b!~hS* z!^yb~J^T&Tt&=(EHz9pN*H2PJKVI)tV zHuh%o=nAnk_LxOyhBu1vq(^dM-J<}w#e6w>+!v3~nQ(Hkv&Th{g>(_K5t<*xQz2=y z=#g*$YMm-;LrZGz zWF?vV?(hisJw2{LclsWug%a#;$9PI(9>xoPYHoh_6^to*I%oNN*XZQ}kRoM6Ar0Zf zh++@8rXs8lGfNIAWTq*{yiIt(CoBII&z{eR=P+i}WXE5_=g@}H+PMF4=xAx}?Cc*N zJU<5Q6x9`RB0}pVX$IkF^lCo6U~{mwjAZGgv1802YQ>SQnWe@KbZ8n!p@1~~L#CKg zMmOOe*otCG#|*YB1^I%jTDCG|#-Iw38e7Zit0o%F$6Cz{$;wX zDvu989@I0&y0ofE69AzB@wZfN*vy>1lNUrw7(sgj0em}7Xn1Vx;gcu@!@;;ZR2 ziF8H80fY1{n(_`>+LsBaQSfazy`&0Nk2E~}B-C^~ou4M*03MuhpyCt0dE1T`IPF&7 zQTO~HaQI)J-<6N`sBYWwI&G)Z)+4(P{8v8OJ@fQiuH&^jPODie&t}W<+L-Njsc6}` z6+wm0n5n#r88&468;nDCq&Ovpj??y>?kYmai|Ro!+s(oPK?vV>9pCNfkv+fTV6}7$ zvu$;qz=Lp|mFlgHhljTv;@elu`79j8;Avy0O`_-CLFx=@%7WL;clKu5$sX7v;N zzbLK<;^ZZ_O1|`-ku&}5i>Vm;#$xx)-)PkV*TggWj*~zBAmYv*sX^#TQd94H9fIHl zyiCrrE&fKVILa72q-!bE_IvaE=*__q19yEMCuo(>sYDtt9Ah_`Ko2T9B|m7Xe}r*# zhUdDM#nU9F7D7YXR~JR()g+=^i{OhJ5k@>Zmyd3>N21JBj{=zV@OwBJ5~?7BT^mgj zRtXY>_C(=e(lHa90e-q7MFpTm0|Rr;m!QUMW>#eZBkedE&7)xwPCkvTl5SpO&#&dj zv-^MtZ$(y^JZONQrxQxe02R3a!=CSfUYd(Gu+YpJ+6_!z6mk=+ZQ6)o47W{hZTVtz z4ujnE6zir2HPj%UTPM$Gd?Nr=TzFpayy@>^$%f&aoJTj|2p9h@!m(3p3Jvdj3XuPb*U~HD0Q+C2syI~OB^jLeH}&S{g%z#rt>x@fR$u<#TttR z^_=eFg-Eyc``v%Z-Ph#qD;P%O;U%(($v41W{KHlH6PjQ@YXR5@ zAnTuT5ec)T%qpCkYMmzGID3hZKFL~Rqzgq-HPRR8?zg&Cc5UmPD_g0uWGrnhL1`@_ zmR~|FyMSm)`5r5Xi|aU{h@c_Z3#vGs@$vY>$KxY;YZxvf;_aj`n)&`z})L~t9R39Sh71l)TjlKS_ZWmjM&hd>-wG` zmV5lm-e1hD{r_<(**%l=>EAjJJZO~9{|w*T?UetAW`O+PYyRgy|Kj}5d=DJoBuANp zDP4au)vPJD{|s({mPG0E#~~8u(`~XmfpkJ4?#4KaKheG5;W!e{=h43}<9T#SS3I_! zK7GcXQx0+#0~;dRJ!XP$CrLD)gk$8hj3%QHx4&hlX|S2w3BAX&PYLqAev(ASoWWTf zNr5hKAIURg(C+B!VRUvDQGQjrdN9}6c=a9KA|t(5N}X32)AI^|$yoPJMKE`{rXHsD z8$(*sfE5Q#jPq>}fSyvITd2R;;e^NN$f1TSJdfG33aG)+MK}Rn7{y_3q!ueVj8v7b zgW$@*Wt=QT$OV&gI2_)69YQYUdTBkn$abpJXuH>f^ZT4Rq`mF+*@e{=B7>gt9m|*;(6fkOv+A+qvUEdi|mG z-*N-5P5nQ#J$Sqx{~zEwF*k=1!pwu6jS%S>MuQ+2wY>JIISjq+?Xw^lwB2qi@;xsY zY&Tm$pO^f2_i^3KLF^8IU# zkX)lHfDpYH+=4o>_&lDHH{s+q8h(ZWoO0fi>vI?@$T{wHk4NMk{J6L!M_?+9;wwBk z>bVZIGBV(V@yNNKTu&K+{(=mqmpF|YCgejn3(33b`DAOc!EKuU_ijX_-+y}io1JR= zW~RUr{oh4rFYNsX^}mh!e-H$%_51%27uWwSeY`*==V56uOUur*#i<@spbzr{|7)xL z;ji@j&tLs-H1e~n`2B~WJ_xw}=XSgf`u}Tn{Pp|)AlHdp%HRV(*>E$iunj}JH-u{I z_=9#ka67{`eEQAd@T?Vex~|{xN8a|p5Bx44)dfSz4(a->z~cm5To)i4FFqb3@o7th zX5&BE_%$MKll&e|uF!PE5Ds|}Ptei_^AgX#-J+9~wzExLiqx*c@pK+9?!GRF=lG0x z6n$YR-qAWWHZLdSbp$pfs2BeT$Kxo$A^wYVui}^TD_|90_b;G|&%F$!ijS^7O5iHv zRlvrjc^8nlvV06w!dS|ufQ?b}Eg&&+4+E88mGUTH!_qtpNLa$ZKqXwI{0Z2&G`|9> zsp;MYs(~xxO~3-Ddliu2gl~aLxJvmFuyJWV1tc!rvp^+mr927P*ffs<5}V;ypc1%J zegtfAnm+*v&hRQwt+kc$B9H-2c@vP}IAvfZSfzXjWWd5SQm~{)fhxetc@VIHX`Tcm zFy&96lE_N=56D2K{0K;7+?znP;j@hQ02`L(ML-RorZ0g?@Jjg($bhGO2&mpx^CVEI zt(Ec|kbzBk5U@p8Z73+?Hy{I;@*iOJXy`?t+G|k8Yd{7zVUsK&qJjt3WHq?4JQmG5kwtlIOn)uyVZq7BHRPUyTWrO}_%FlC1tVDvjMg zg^DuPSL!uNar$RKQ{4Wl{qOHrkybfI{|rcq*Y-M2OnfxtaI-|b?rt$ihhqfw@zumtoK7Td&f~@{4 zU|NyI->yf+<}Wenoc=4+1(#5aF+HavsS0Cr_&q4J4?}b=j>uY_jul2RQ*4O%4U+Zgqt*`a9zSh_J Q`W~hash); + echo $block->name.' '.$the_block->hash." ".$the_block->height." ".$the_block->n_tx.PHP_EOL; + } + } + // --- // --- Accès au dernier block en cache ... // --- public static function getLastCacheBlockHash() { // on commence par le cache d'images +/* $myarray = glob(DATA_PATH.'/hasard/*.png'); if (isset($myarray[0])) { usort( $myarray, function( $a, $b ) { return filemtime($b) - filemtime($a); } ); return substr(basename($myarray[0],'.png'),0,strlen(self::$special_blocks[0]->hash)); } +*/ // S'il n'y a rien dans le cache d'images $filename=DATA_PATH.'/finished_block_list.txt'; diff --git a/blockchain/robot.php b/blockchain/robot.php index 92dc41c..cb15d8c 100644 --- a/blockchain/robot.php +++ b/blockchain/robot.php @@ -14,34 +14,25 @@ require_once '../global/inc/config.php'; // --- require_once 'inc/block.php'; -// --- -// --- Par défaut on cherche le dernier block -// --- -$block_hash = 'LAST'; - -// --- -// --- Le cas échéant, on cherche block passé en argument -// --- -if (isset($argv[1])) $block_hash = $argv[1]; - // --- // --- On interroge la blockchain // --- => Ce qui a pour effet de placer le block dans le cache // --- -$the_block = blockchain::getSpecialBlock($block_hash); +blockchain::getSpecialBlocklist(); + +$the_block = blockchain::getBlockWithHash(blockchain::getLastBlockHash()); if ($the_block === FALSE) die(); -echo $block_hash.' '.$the_block->hash." ".$the_block->height." ".$the_block->n_tx.PHP_EOL; +echo 'LAST '.$the_block->hash." ".$the_block->height." ".$the_block->n_tx.PHP_EOL; + +exit(0); -if ($block_hash == 'LAST') +// On a demandé le dernier block +// On remonte sur les huits derniers pour accélerer les prochaines navigations +for($max=0;($max<8)&&(!file_exists(DATA_PATH.'/json/'.$the_block->prev_block.'.zip'));$max++) { - // On a demandé le dernier block - // On remonte sur les huits derniers pour accélerer les prochaines navigations - for($max=0;($max<8)&&(!file_exists(DATA_PATH.'/json/'.$the_block->prev_block.'.zip'));$max++) - { - $block_hash = $the_block->prev_block; - $the_block = blockchain::getBlockWithHash($block_hash); - if ($the_block === FALSE) die(); - echo 'CACHE '.$the_block->hash." ".$the_block->height." ".$the_block->n_tx.PHP_EOL; - } + $block_hash = $the_block->prev_block; + $the_block = blockchain::getBlockWithHash($block_hash); + if ($the_block === FALSE) die(); + echo 'CACHE '.$the_block->hash." ".$the_block->height." ".$the_block->n_tx.PHP_EOL; } ?> diff --git a/blockchain/robot.sh b/blockchain/robot.sh index 0c0c372..62ac2d6 100755 --- a/blockchain/robot.sh +++ b/blockchain/robot.sh @@ -13,26 +13,7 @@ cd $APPS_PATH/blockchain rm -f $DATA_PATH/block_list.tmp -LISTBLOCKS="GENESIS THE_ANSWER LUCIFER LEET \ - TOPISTO PIZZA HALVING_1 WHALE201311 \ - JOHN_CONWAY DORMEUR_ORIGINE \ - HALVING_2 BIP_91_LOCK BCC SEGWIT_LOCK \ - SEGWIT HURRICANE_1 WHALE201810 \ - WHALE201909 WHALE20201026 \ - BLOCK21E800 GOLGOTH201909 EQUILIBRE \ - DEMISSION20200110 2020JUMP9000 \ - SOPHIA202002 EQUILIBRE202002 COVID19 \ - RIP_STEEVE HALVING_3 DORMEUR \ - FIRST_USD_TX 2020JUMP10000 \ - NO_REWARD MORNING_STAR SALVADOR \ - BAB_BRUXELLES POITIERS UKRAINE \ - ELISABETH_2_HAS_DIED BERNIQUE \ - LAST" - -for BLOCK in $LISTBLOCKS -do - php robot.php $BLOCK >> $DATA_PATH/block_list.tmp -done +php robot.php > $DATA_PATH/block_list.tmp # Sort the block list by Height sort -k3 -n $DATA_PATH/block_list.tmp > $DATA_PATH/block_list.txt diff --git a/info/robot.php b/info/robot.php new file mode 100644 index 0000000..753179a --- /dev/null +++ b/info/robot.php @@ -0,0 +1,30 @@ +height.' '.$the_block->time.' '.$the_block->n_tx.' '.$the_block->nonce.' '.$the_block->prev_block.PHP_EOL; + +?> diff --git a/lancer2.sh b/lancer2.sh index 08a0b4a..7beb14c 100755 --- a/lancer2.sh +++ b/lancer2.sh @@ -13,5 +13,7 @@ DATE=`date +%Y%m%d0000` if [ -f scripts/$1.sh ]; then - source scripts/$1.sh + script=$1 + shift + source scripts/$script.sh $* fi diff --git a/robot.sh b/robot.sh index 4f1b864..37f7b59 100755 --- a/robot.sh +++ b/robot.sh @@ -37,3 +37,9 @@ $APPS_PATH/scripts/tweet.sh # Clean OLD DATA # $APPS_PATH/scripts/clean_data.sh + +# +# the 100 lastest BLOCKS must have at least the nonce method +# +$APPS_PATH/scripts/100blocks.sh + diff --git a/scripts/100blocks.sh b/scripts/100blocks.sh new file mode 100755 index 0000000..c253abf --- /dev/null +++ b/scripts/100blocks.sh @@ -0,0 +1,133 @@ +#!/bin/bash +lescript=`basename $0 .sh` + +# +# TOOLS +# +function debug +{ + if [ -f $FLAG_PATH/debug ] + then + echo $1 + fi +} + +function sortie +{ + exit $1 +} + +function succes +{ + debug "SUCCES" + sortie 0 +} + +function echec +{ + debug "ECHEC" + exit 1 +} + +# +# PARAMETRES PAR FICHIER FLAGS +# +if [ -f $FLAG_PATH/no_blocks ] +then + debug "No blocks" + echec +fi + +BLOCK=`grep LAST $DATA_PATH/block_list.txt | awk '{print $2}'` +TODAY=$(date -d '00:00:00' +%s) + +N=0 +while [ $N -ne 100 ] +do + + echo $BLOCK + + cd $APPS_PATH/info + infos=`php robot.php $BLOCK` + HEIGHT=`echo $infos | awk '{print $1}'` + TIMETS=`echo $infos | awk '{print $2}'` + NBTX=`echo $infos | awk '{print $3}'` + NONCE=`echo $infos | awk '{print $4}'` + PREV=`echo $infos | awk '{print $5}'` + + + if [ -z "$TIMETS" ] + then + break + fi + + if [ $TIMETS -lt $TODAY ] + then + break + fi + + # + # TEST DU FLAG + # + flag=$FLAG_PATH/bot_${lescript}_${BLOCK}.flag + if [ -f $flag ] + then + debug "${lescript}_${BLOCK} already done" + continue + fi + touch $flag + + if [ ! -f $DATA_PATH/nonce/$BLOCK.png ] + then + # + # Si c'est la première fois que l'on dessine le block + # On choisit la méthode qui découle du nonce + # + cd $APPS_PATH/nonce + nbmethodes=`cat $DATA_PATH/nonce_methods_list.txt | wc -l` + lenonce=`php robot.php $BLOCK` + lamethode=$((lenonce % nbmethodes)) + if [ $lamethode -eq 0 ] + then + lamethode=$nbmethodes + fi + + LISTE_METHODE=`cat $DATA_PATH/nonce_methods_list.txt | head -n $lamethode | tail -1` + + cd $APPS_PATH/methode2 + for METHODE in $LISTE_METHODE + do + if [ ! -d $DATA_PATH/$METHODE ] + then + mkdir -p $DATA_PATH/$METHODE + fi + echo $BLOCK $NAME $METHODE + if [ ! -f $DATA_PATH/$METHODE/$BLOCK.png ] + then + php robot.php $METHODE $BLOCK $((RANDOM % 6)) $2 + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/$METHODE/$BLOCK.png + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png + fi + done + cd - >> /dev/null + + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/nonce/$BLOCK.png + fi + + rm -f $flag + + BLOCK=$PREV + + N=$(($N+1)) +done + +# +# List of finished blocks +# +rm -f $DATA_PATH/finished_block_list.txt +grep -v CACHE $DATA_PATH/block_list.txt >> $DATA_PATH/finished_block_list.txt + +# +# SORTIE AVEC SUCCES +# +succes diff --git a/scripts/block.sh b/scripts/block.sh new file mode 100755 index 0000000..d74b646 --- /dev/null +++ b/scripts/block.sh @@ -0,0 +1,86 @@ +#!/bin/bash +lescript=`basename $0 .sh` + +# +# TOOLS +# +function debug +{ + if [ -f $FLAG_PATH/debug ] + then + echo $1 + fi +} + +function sortie +{ + exit $1 +} + +function succes +{ + debug "SUCCES" + sortie 0 +} + +function echec +{ + debug "ECHEC" + exit 1 +} + +# +# PARAMETRES PAR FICHIER FLAGS +# +if [ -f $FLAG_PATH/no_blocks ] +then + debug "No blocks" + echec +fi + +BLOCK=`grep LAST $DATA_PATH/block_list.txt | awk '{print $2}'` +echo $BLOCK + +cd $APPS_PATH/info +infos=`php robot.php $BLOCK` +HEIGHT=`echo $infos | awk '{print $1}'` +TIMETS=`echo $infos | awk '{print $2}'` +NBTX=`echo $infos | awk '{print $3}'` +NONCE=`echo $infos | awk '{print $4}'` +PREV=`echo $infos | awk '{print $5}'` + +# +# TEST DU FLAG +# +flag=$FLAG_PATH/bot_${lescript}_${BLOCK}.flag +if [ -f $flag ] +then + debug "${lescript}_${BLOCK} already done" +fi +touch $flag + +LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | shuf` + +cd $APPS_PATH/methode2 +for METHODE in $LISTE_METHODE +do + if [ ! -d $DATA_PATH/$METHODE ] + then + mkdir -p $DATA_PATH/$METHODE + fi + echo $BLOCK $NAME $METHODE + if [ ! -f $DATA_PATH/$METHODE/$BLOCK.png ] + then + php robot.php $METHODE $BLOCK $((RANDOM % 6)) $2 + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/$METHODE/$BLOCK.png + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png + fi +done +cd - >> /dev/null + +cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/nonce/$BLOCK.png + +# +# SORTIE AVEC SUCCES +# +succes diff --git a/scripts/blocks2.sh b/scripts/blocks2.sh index cbe54c1..e6468f7 100755 --- a/scripts/blocks2.sh +++ b/scripts/blocks2.sh @@ -1,6 +1,5 @@ #!/bin/bash lescript=`basename $0 .sh` -flag=$TMP_PATH/bot_$lescript.flag # # TOOLS diff --git a/scripts/blocks2.sh.back_20220819 b/scripts/blocks2.sh.back_20220819 new file mode 100755 index 0000000..4afbceb --- /dev/null +++ b/scripts/blocks2.sh.back_20220819 @@ -0,0 +1,105 @@ +#!/bin/bash +lescript=blocks2 + +# +# TOOLS +# +function debug +{ + if [ -f $FLAG_PATH/debug ] + then + echo $1 + fi +} + +function sortie +{ + exit $1 +} + +function succes +{ + debug "SUCCES" + sortie 0 +} + +function echec +{ + debug "ECHEC" + exit 1 +} + +# +# PARAMETRES PAR FICHIER FLAGS +# +if [ -f $FLAG_PATH/no_blocks ] +then + debug "No blocks" + echec +fi + +while IFS='' read -r line || [[ -n "$line" ]]; do + + NAME=`echo $line | awk '{print $1}'` + BLOCK=`echo $line | awk '{print $2}'` + HEIGHT=`echo $line | awk '{print $3}'` + NBTX=`echo $line | awk '{print $4}'` + + # + # TEST DU FLAG + # + flag=$FLAG_PATH/bot_${lescript}_${BLOCK}.flag + if [ -f $flag ] + then + debug "${lescript}_${BLOCK} already done" + continue + fi + touch $flag + + # + # CHOISIR UNE METHODE2 AU HASARD + # + # LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | shuf` + # LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | shuf | head -n 1` + # en rajoutant le head, on ne fait qu'un seul dessin + LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | shuf | head -n 1` + if [ $HEIGHT -eq 1 ] + then + LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v treemap | grep -v robot | shuf | head -n 1` + fi + + cd $APPS_PATH/methode2 + for METHODE in $LISTE_METHODE + do + if [ ! -d $DATA_PATH/$METHODE ] + then + mkdir -p $DATA_PATH/$METHODE + fi + echo $BLOCK $NAME $METHODE + if [ ! -f $DATA_PATH/$METHODE/$BLOCK.png ] + then + php robot.php $METHODE $BLOCK $((RANDOM % 6)) $2 + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/$METHODE/$BLOCK.png + fi + done + cd - >> /dev/null + + if [ ! -f $DATA_PATH/hasard/$BLOCK.png ] + then + cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png + fi + + rm -f $flag + +done < $DATA_PATH/block_list.txt + +# +# List of finished blocks +# +rm -f $DATA_PATH/finished_block_list.txt +grep -v CACHE $DATA_PATH/block_list.txt >> $DATA_PATH/finished_block_list.txt + +# +# SORTIE AVEC SUCCES +# +succes diff --git a/scripts/blocks3.sh b/scripts/blocks3.sh index 1624292..30f5945 100755 --- a/scripts/blocks3.sh +++ b/scripts/blocks3.sh @@ -1,6 +1,5 @@ #!/bin/bash lescript=`basename $0 .sh` -flag=$TMP_PATH/bot_$lescript.flag # # TOOLS @@ -59,62 +58,13 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ ! -f $DATA_PATH/nonce/$BLOCK.png ] then - # - # Si c'est la première fois que l'on dessine le block - # On choisit la méthode qui découle du nonce - # - cd $APPS_PATH/nonce - nbmethodes=`cat $DATA_PATH/nonce_methods_list.txt | wc -l` - lenonce=`php robot.php $BLOCK` - lamethode=$((lenonce % nbmethodes)) - if [ $lamethode -eq 0 ] - then - lamethode=$nbmethodes - fi - LISTE_METHODE=`cat $DATA_PATH/nonce_methods_list.txt | head -n $lamethode | tail -1` - else - # - # CHOISIR UNE METHODE2 AU HASARD - # - LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | shuf` - if [ $NBTX -lt 10 ] - then - LISTE_METHODE=`ls $APPS_PATH/methode2 | grep -v robot | grep -v treemap | grep -v mondrian | shuf` - fi - fi - - cd $APPS_PATH/methode2 - for METHODE in $LISTE_METHODE - do - if [ ! -d $DATA_PATH/$METHODE ] - then - mkdir -p $DATA_PATH/$METHODE - fi - echo $BLOCK $NAME $METHODE - if [ ! -f $DATA_PATH/$METHODE/$BLOCK.png ] - then - php robot.php $METHODE $BLOCK $((RANDOM % 6)) $2 - cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/$METHODE/$BLOCK.png - cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png - fi - done - cd - >> /dev/null - - if [ ! -f $DATA_PATH/nonce/$BLOCK.png ] - then - cp $DATA_PATH/last/$BLOCK.png $DATA_PATH/nonce/$BLOCK.png + echo "Aucune image pour nonce !" fi rm -f $flag done < $DATA_PATH/block_list.txt -# -# List of finished blocks -# -rm -f $DATA_PATH/finished_block_list.txt -grep -v CACHE $DATA_PATH/block_list.txt >> $DATA_PATH/finished_block_list.txt - # # SORTIE AVEC SUCCES # diff --git a/scripts/blocks_tmp.sh b/scripts/blocks_tmp.sh new file mode 100755 index 0000000..4c3c435 --- /dev/null +++ b/scripts/blocks_tmp.sh @@ -0,0 +1,140 @@ +#!/bin/bash +lescript=`basename $0 .sh` +flag=$TMP_PATH/bot_$lescript.flag + +# +# TOOLS +# +function debug +{ + if [ -f $FLAG_PATH/debug ] + then + echo $1 + fi +} + +function sortie +{ + if [ -f $flag ] + then + rm -f $flag + fi + exit $1 +} + +function succes +{ + debug "SUCCES" + sortie 0 +} + +function echec +{ + debug "ECHEC" + exit 1 +} + +# +# TEST DU FLAG +# +if [ -f $flag ] +then + debug "$0 is already running !" + echec +fi +touch $flag + +# +# PARAMETRES PAR FICHIER FLAGS +# +if [ -f $FLAG_PATH/no_blocks ] +then + debug "No blocks" + echec +fi + +# +# CHOISIR UNE METHODE2 AU HASARD +# +ROBOT=`ls $APPS_PATH/methode2 | shuf | tail -n 1` +debug $ROBOT + +$APPS_PATH/methode2/robot.sh $ROBOT + +succes + +# +# CHOISIR UNE METHODE AU HASARD +# +ROBOT=`ls $APPS_PATH/methode | grep -v hashes | shuf | tail -n 1` +debug $ROBOT + +# +# Y A PLUS QU'A ! +# +if [ ! -f $FLAG_PATH/no_$ROBOT ] +then + cd $APPS_PATH/methode/$ROBOT + for BLOCK in `awk '{print $2}' $DATA_PATH/block_list.txt` + do + + # + # Pour renouveller l'affichage des blocs remarquables + # De temps en temps (15%), on efface le block + # + if [ $((RANDOM % 100)) -lt 15 ] + then + rm -f $DATA_PATH/$ROBOT/$BLOCK.png + fi + + # + # Si l'image n'existe pas, on la calcule + # + if [ ! -f $DATA_PATH/$ROBOT/$BLOCK.png ] + then + debug "Compute $DATA_PATH/$ROBOT/$BLOCK.png" + php robot.php $BLOCK + fi + + # + # Les actions suivantes ne sont réalisées que si + # robot.php a produit une image + # + if [ -f $DATA_PATH/$ROBOT/$BLOCK.png ] + then + # + # Les blocs remarquables sont anti datés à minuit + # Pour l'affichage et le nettoyage automatique + # + BNAME=`grep $BLOCK $DATA_PATH/block_list.txt | awk '{print $1}'` + if [ "$BNAME" != "LAST" ] + then + touch -t $DATE $DATA_PATH/$ROBOT/$BLOCK.png + if [ -f $DATA_PATH/spline/$BLOCK.png ] + then + rm -f $DATA_PATH/hasard/$BLOCK.png + ln $DATA_PATH/spline/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png + fi + fi + + # + # Maintenir le hasard + # + if [ ! -f $DATA_PATH/hasard/$BLOCK.png ] + then + ln $DATA_PATH/$ROBOT/$BLOCK.png $DATA_PATH/hasard/$BLOCK.png + fi + fi + done +fi + +# +# List of finished blocks +# +rm -f $DATA_PATH/finished_block_list.txt +grep -v CACHE $DATA_PATH/block_list.txt >> $DATA_PATH/finished_block_list.txt + +# +# SORTIE AVEC SUCCES +# +succes diff --git a/scripts/clean_data.sh b/scripts/clean_data.sh index acc04a8..d908380 100755 --- a/scripts/clean_data.sh +++ b/scripts/clean_data.sh @@ -2,7 +2,9 @@ # Antidater les données des blocks connus date=`date +%Y%m%d0000` -touch -t $date $DATA_PATH/emptybot/* + +touch -t $date $DATA_PATH/emptybot/*.{png,txt} + for BLOCK in `grep -v LAST $DATA_PATH/block_list.txt | grep -v CACHE | awk '{print $2}'` do touch -t $date $DATA_PATH/*/$BLOCK.* @@ -13,10 +15,11 @@ if [ "$#" -eq "0" ] then if [ -d $DATA_PATH ] then - find $DATA_PATH -mtime +3 -type f -name *.png -exec rm -f {} \; - find $DATA_PATH -mtime +3 -type f -name *.zip -exec rm -f {} \; + echo "CLEAN +3 $DATA_PATH" > $TMP_PATH/clean_data.log + find $DATA_PATH -mtime +3 -type f -name *.png -exec rm -f {} \; + find $DATA_PATH -mtime +3 -type f -name *.zip -exec rm -f {} \; - find $TMP_PATH -mtime +3 -type f -name *.flag -exec rm -f {} \; + find $TMP_PATH -mtime +3 -type f -name *.flag -exec rm -f {} \; fi else if [ "$1" -eq "FULL" ] diff --git a/scripts/nonce.sh b/scripts/nonce.sh index 12b6d5c..d2e98cc 100755 --- a/scripts/nonce.sh +++ b/scripts/nonce.sh @@ -48,22 +48,34 @@ touch $flag # DO IT ! # while IFS='' read -r line || [[ -n "$line" ]]; do + NAME=`echo $line | awk '{print $1}'` + BLOCK=`echo $line | awk '{print $2}'` + HEIGHT=`echo $line | awk '{print $3}'` + NBTX=`echo $line | awk '{print $4}'` + # # On choisit la méthode qui découle du nonce # cd $APPS_PATH/nonce - nbmethodes=`ls $APPS_PATH/methode2 | grep -v robot | wc -l` + nbmethodes=`cat $DATA_PATH/nonce_methods_list.txt | wc -l` lenonce=`php robot.php $BLOCK` - lamethode=$((lenonce%nbmethodes)) - [ $lamethode -eq 0 ] ; lamethode=$nbmethodes - METHODE=`ls $APPS_PATH/methode2 | grep -v robot | head -n $lamethode` + lamethode=$((lenonce % nbmethodes)) + if [ $lamethode -eq 0 ] + then + lamethode=$nbmethodes + fi + METHODE=`cat $DATA_PATH/nonce_methods_list.txt | head -n $lamethode | tail -1` + echo $NAME $METHODE $lenonce $nbmethodes $lamethode if [ -f $DATA_PATH/$METHODE/$BLOCK.png ] then cp $DATA_PATH/$METHODE/$BLOCK.png $DATA_PATH/nonce/$BLOCK.png fi done < $DATA_PATH/block_list.txt +rm -f $flag + # # SORTIE AVEC SUCCES # succes + diff --git a/scripts/tweet.sh b/scripts/tweet.sh index f9829c2..5ae3ae0 100755 --- a/scripts/tweet.sh +++ b/scripts/tweet.sh @@ -82,7 +82,7 @@ then $APPS_PATH/twitter/twitterbot/robot.sh 2>&1 # "auto likes" from Topisto - $APPS_PATH/twitter/likebot/robot.sh 2>&1 + # $APPS_PATH/twitter/likebot/robot.sh 2>&1 touch $DATA_PATH/twitterbot/$DATEHOUR else