From 1df4790fb416bbeec7c034a70a8837f0bc086501 Mon Sep 17 00:00:00 2001 From: saymrwulf Date: Thu, 23 Apr 2026 13:20:30 +0200 Subject: [PATCH] Initial implementation of the Crisis protocol (Richter, 2019) Complete Python PoC of "Probabilistically Self Organizing Total Order in Unstructured P2P Networks". Implements all 10 algorithms from the paper: message generation, integrity checks, Lamport graphs, virtual synchronous rounds, safe voting patterns, virtual leader election (BA*), longest chain rule, total order via Kahn's algorithm, and push/pull gossip. Includes simulation harness, full node binary, and 72 passing tests. Co-Authored-By: Claude Opus 4.6 --- .gitignore | 26 ++ Crisis.mirco-richter-2019.pdf | Bin 0 -> 494839 bytes pyproject.toml | 30 ++ src/crisis/__init__.py | 21 ++ src/crisis/crypto.py | 104 +++++++ src/crisis/demo.py | 356 +++++++++++++++++++++++ src/crisis/gossip.py | 414 ++++++++++++++++++++++++++ src/crisis/graph.py | 479 ++++++++++++++++++++++++++++++ src/crisis/message.py | 250 ++++++++++++++++ src/crisis/node.py | 336 ++++++++++++++++++++++ src/crisis/order.py | 254 ++++++++++++++++ src/crisis/rounds.py | 231 +++++++++++++++ src/crisis/voting.py | 527 ++++++++++++++++++++++++++++++++++ src/crisis/weight.py | 190 ++++++++++++ tests/__init__.py | 0 tests/test_crypto.py | 57 ++++ tests/test_graph.py | 218 ++++++++++++++ tests/test_message.py | 125 ++++++++ tests/test_order.py | 126 ++++++++ tests/test_rounds.py | 110 +++++++ tests/test_simulation.py | 55 ++++ tests/test_weight.py | 78 +++++ 22 files changed, 3987 insertions(+) create mode 100644 .gitignore create mode 100644 Crisis.mirco-richter-2019.pdf create mode 100644 pyproject.toml create mode 100644 src/crisis/__init__.py create mode 100644 src/crisis/crypto.py create mode 100644 src/crisis/demo.py create mode 100644 src/crisis/gossip.py create mode 100644 src/crisis/graph.py create mode 100644 src/crisis/message.py create mode 100644 src/crisis/node.py create mode 100644 src/crisis/order.py create mode 100644 src/crisis/rounds.py create mode 100644 src/crisis/voting.py create mode 100644 src/crisis/weight.py create mode 100644 tests/__init__.py create mode 100644 tests/test_crypto.py create mode 100644 tests/test_graph.py create mode 100644 tests/test_message.py create mode 100644 tests/test_order.py create mode 100644 tests/test_rounds.py create mode 100644 tests/test_simulation.py create mode 100644 tests/test_weight.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1b5921 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.egg-info/ +dist/ +build/ +*.egg + +# Virtual environment +.venv/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Testing +.pytest_cache/ +.coverage +htmlcov/ diff --git a/Crisis.mirco-richter-2019.pdf b/Crisis.mirco-richter-2019.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e24014a0302a0e38dafbe387abeb8b64265076e2 GIT binary patch literal 494839 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 z z1!=sDmwv3ZZf4$%-Y+kvDG+5QFP~T|0K^N%2KW%3j zo090(XBit1#RVtW_KOZB)RlU-C*fGTB~~gZU8a}D4o7}bSxy;oY+7y+a8(5!AoH?g zuCjC*H4xuyg#OuQ&Xl9>w#KgO-3oUGe?1zXx;ux;n0>^OKbJyXYzUAJuWwaH|H#K% z;2MVl4MEfddRPJxLag&`FU$uM8Qlq`ddZU_ykM+oKfRP$&m0~DCdpjz2KETNMHmy< zc?730%#S^yK4v!Uxi zf>q_;einDud1AgUZydFw_r49x{#jUCZ#O>|#0t+w61JDa2rp~fRbF!H42~AinF>wD{ z4`L`{J(uv|>`hK#<#t=^V1mHQuB$%U=cczT%x_e!VW|-1BY5)1t-=o}@DG@2=y8@jkXF`W zy3UFu0o~{b-$F-@_sKOvd`AZM1M@?XQfPHBo$V-2e469EH<5@@%@EKqq5x{IL#4qc zC=8a2KG92Um0H$}2;?s6==PWAnPyIeQBS$T`UhDKeuHnT|CrXa3(^=Ox4l zvzm%Bp!wA&M?FqKV;q}`q~%LZk>!?7q)O1!p7G5ML}At7Snw8MP@1kf|Cdj@Qy#rS zZFDECgB~4D-sGJ2kN8e+wR1+4E8t)DqDP_$Yc6-7nNgkL+7 zc^VpPDkeD556`MHEE)0gzYFWJ>fRXk$Xk?+e8?8eT-0b({b z1({|&_GQF{!KiCul8+$JzsLMkNynq6B(al3xZqHX%u2!0RQ32dyuC?I%LKbFBHqkL z5apgwAhvu(Sc9C@oGX)laO7Oi%SXFLLCIDi6Fyc+)Dv*YgzHpwWZbQsG}%)gilu+h zl}$WNm_=UZ;E-b38Fwhs{}D}y$0W)_tmKTVoV;cG2==Eocoe!*aSYOF_J5{j8KF6G zogzpGfL5q!IQ$9=?|pBpO9u8!(SuH)eLpN8&V!gfiC^h+uIxFr_5tDLl*K0EK|=52 zdm97-|)T6^;N;0X_Vc02|Nh|6Wa&>jFLzJ< z`Llr^Q+al(=;;!UcvJ1Wy8L?h2QyIj?&1qu=*(2Pc%JTTTT7KC+fzLX%;$7{R@mKz zImqklB7fso(L*dAziO-0ivt$hT8)2IP-w?N2OwH~dwku@owL<6a9Az5iErd|7Ca@I z%3aR8ohzN4xvrio`~bYoVE*HejP(6 zs{|wAZ3;eChp25Z@v{FOl0` zt!xA}o3RI}(zQ20j6I&t)dens5kW_BEQ{!li*d4oU3FtX3y@|=JjSb-ktgLpQG9mB zn4UldM`tr+D+xva$_{tPMkvD2#>iFbvRqk~J0G!}JvnJsB}|CmUbdZj!`(bqMU4%m z-Rha7EJl+veXkyn()FuuLEZT)mEn89r2*cG`<+VYE*+^Cb6TU&*8QwW_^GBW!#U@@ z9uhG7?_4GST#LjNqIM}ros$zxn-vs9jt8jPm3kioFs;Y`Cj8PQeh2Zmd%8}j(>q?k z6xXtoPgD7rY1eyu$Vx5{_?r~pK4gjHsB}Z*QI)x@cm}5R+Z*vofhwUglaaL+W*(E2 zW*|LSp7>M06UrvpkZuP9PALbfIWuqj>`f-26yjPVDl4wk=h>|07IWLIZ7k35i%P~z z%4T>ix)~*ve4rA+5-oZwT?NX2ou7M8DN>f#oQ{-cf6BB!wZNP)nnkU}f(xy(0Hvo# z=Rmn#0ZgSrX5=6e8hXaXJXLdaM~yU1fIR)It6YQA>Bk@)0pYRKPMyk4?o75ZHBe!yF+R^jrd7pB3kR>WQDE(IXe0wtX%MojPQ+C z1fH*-S{Tn~#7(Hh#v4ovO17C0f-`E>oHZ1h=K|tJU4&>Xs;m98vR3LSC5TIF?wH=% zTXa{c=lb>ArUR=FqC0XV%0hjMAR{&V>L@k$#K_8#DHN$Nb}j3uPQ!+qTEhD;%5s)N zEHD#sE6bsERiHC?!oYW5sdkb~$+yU<5!2Jm8fdp0^C6Y$+q6`W$TpGs9PzBf8Rn@) z<%hqnoBZhi2Zu}y|3i~C3kw^|{}vpsXxqjgwZgH24OzYA?~sw=JhFbLV}%RI>N9cA9(joDpCch$NzD(x{0w@}-LY5S1xajldDq55|B~}>YvTH}cZL6X!ouGL z$u87T*Zg{jx6JAE)Mk}&?Ec*U#_Ri~)+nWpl8r75t@JQXmLkIc#&->aeeC$6WbPX$ z@*7To-N;pCot1@3Rx(+)(;bbSc1**KeA0G*AXHR5xn|q9U$yow3A%0fjC?ps>EX$L zG*4OM;6;3UnDZoTqg{0$WW{73?nel#xWAD>7Bn8ba*R*Ly3lkG?b(<%6m6qi)r96j zCqG6Z;nv8z=BB$d*i4}|;FwgxMfole@y_Y!^FH6abF2b0>MW^!+c*_fURebJyG#UB zkuu$5Cj-5pDyTe7d04o*-_>Haf@a}Y{qzb2<-h-M<6wY5{5@YfuB84xgOSZIjxU0u z^52V#PRM7p^jq3u06=PLtDGR^4x3?L?N`!m;zX0Z^TF)A6+&y4HRD01MyJN}!VE_9 zq;o+drMuiPM4S@hJH%VlwRII8aJI2V!lfu9an%IZ7V625M_e}V-CMiy09^@${j*Dn zN^`~!pB$A#Lv@c1;wyx&64u0tJW}0?24c~Axs(Y62NbFv7Gfzr&W!BROJ;!E$0vK~$loFTJjt~+9j?F8n2m`)AP0r>!);5zRQ zG9l69#CLDvr<=%-_QoXEu2!7Vw7r!*SAi;G)jZNmfo9+H+Vx>U=7Z(S(W(>ndeD5l z2o!B>)*#u?L>JeSh5kAaNdI*Tnq3r5v90NH^bcD85Ej+S6zLDfi3lx1o(b(_#hU6I ze}_d6oq2@P_C^U?FcTlBwAuV@wv%Vg$%bA%)JFR4?zOM}vKK`>-fm-~cxr7EQ~jy1 z06DG?RU|TPj(F@U0wAmz76VE(F#jSnASB=d z=i9pL!W4ILZ$;!qTwm5zJ+*jj;9*Z-Zj>}kA<5LNt1KGbb-QVQ+ib*q8BiWlHepgW zC%Z3AMmdL#rd*{xCsxL<=2%^d-8Fwn%a9Sn6bW9BGY21slCbFY7Z?aM+#~L5z`k^p zwRY(_6NPQqRa4WsF%2oh=1OO5DxJ~4W5zI>p^3O&9}j`z6*UBUmxL3={jGh#?;v0G ze1xvNAifKcruz)xVxe;6-Am0dH9p9=SGN2FL(kOGfMW&~frJ)S7s%~*L-F%Dv^Yb`s@(V)duZNsCQc5GBf%+^=hk4kw{}nm)fJ3g)QqM6*dtT=c|PsaUP87XbnANFw`Esli^lN2nl{$neN2(S;-T zpd@28&xQVh2t66blg!|Rxj{SB!5u)sOo2~tBKCnUO-SKlCt!HoPttjp?H zZj0EPCC3WmO+0HcCdP?8N8F%*iUP-s90Q!uLxJHl?9Qy@UKKFNLht5PTFMz7p2v=Z zabEk7C&vISmnGS~FI$RKsC8gJ=^Gg@5|Ar z=+`N5HDdiQV*Y#elbye7QHYRZfgF5Pcw^=3@w5YfUe{?HM7#8Ga8k^3+n9szHzStZ#DL3&js-z=VZtW(gB33Ju2S7@WSg*&_?uc7V; zny2>eX7k>YASm!X;CK3ESAx|oeLi;fBr4SRJz0WqQpUH8#2h#mf=CvIDpU45V-m8_ zc^vEz!4t46!2tmX7H-aUk|N=7EtFn&+bCu9#2I^(8LPN}u+MuC zf{BTqks!m4);n@pWr6kl(iqeY6Fp1x?S0JkOnrWX<;t`Z!S&^J$~hE6r{ z*zX*%qkMnA1i}KFEQM!+Lc@I1j7R{pnd>$DmxaV~)L@)L5P$5G3bOM!e$=bLDRTP#qp>1#t|7|^GpfTN08*S%}NA_ zo>@lED9hbIXg15jti`B7-{7hiT3ExOvu_i!3TNVf{&I1>GQIb%`YnrlZOL;`-!(w; z{CxwvM$anoP>xlCPL8Rv`ezh8SV@=^FH<8HBiIJVapW8PBT+}^Atn3ZK!+MBRW$JU z>VitN^vKo3wjfgHoOpeanHGTXq6rqYRPVGAKos)eVS2&Jwj}|`xpQAmj0k*uwiZ*! zN(Bb$+4B=I5Zgest0vcd&oyLxGQ?+^euqtH5%~hPOv{??$Xfdipr!xM;;zPJfz6DMC!LeV27V_(Y2Gges62~;y7HSy2$ znKli%0)~olJ~?#@XvtPvEGG`4!3|UHd{_XYRR=(*8L;W-A%L%Mkr$6yl)1KBIQqB7`#iKGc33xhLkfJ`Zj4Vym!|MIoxe?kb@C8 zQ#ucnv1`>G8UZsdSk>zyYHj;bjPp?4dmpgh>eqcA&16P2i@2NbADA|Mz2BC~hXjyH?EaJ;84EP&Y1gm?BLXiyUU!9jd+>Vr$t))U?oAgB^Sn?F; zN%ABlRqxeO*fs|=64Yrh>)B*dO0eS0XKV!Rn)DL5zU7bC=DAHwH{#hd@Ch-Es9;Qy z2Ao;Bf1Im%r1G>UR1&!Rz+u><>u@*8r;{xo{%UaV4XS+X_HrVCHwV!lOXjG z4k!?vMtU(Pakr7eV2*Pe-?OVLb& zvc$unB_9t0{?sVRtxi z0FCigygDojSj-3NE&c?X33yj4cB!f+X(I`rA7j(Lj^Tw2vi zijg8cI97mVX!gIw#@E%yZu^yhPULPs4{WrMReqgaZ60zADyUsPr3fB2P)b$!8clI@2*TiK~Xby-CFwNM> z+m!&YC>~gwHE_@=0!oG`=aCws?&Mun?Jf=_N!}I@(;1{wjKP--)v)tLpwT+Jf}R(F z4`#m_AByR-H_~N$>n2CMiJdDj>8WF!=kKwmbPD(_vB374eajyTLs&zbA*{{q;6z^b zE&VxKLQY?&EZ=KEf#eLb_eFDjYjSt{MRFp|d5YLw0q?(S(&y0_@EkN$aXM373!|>- zLA*W(`sb~T(HHX0Nt?|X01V^|nk39OAan?DjY?5cuKqwz8xeRf=ZBCldH~NpPz`YD zHC2ABbjJ2#{`0?{Ayb^ujLB0T@%D-{i&6P*m)QIfB~Aed>EBP25P?f4nq-}M|8L2& ztP{3MiN9`z#2y%`tY%ODmdHg(yvSc~0Ex#*n9KcJA!~%v&?g!@R9uZ76kig;_h|zI z8B|)XzC<<*YUR4vkc9MnBJ>RmR~F|1vBS|-D58=nxY3`xVF-vC-i+Fknr$n88yX@; zJBSFvA(QF;a<3U}itK-vBRieU4-#Z8E9RrYooljwS0`z5tyF zM5P&Ukx}-7rTHZ-^~V0l)~xKu0A`>u48Ai3s}Npyv#bzLC+NNzfq%Y+5X z>9EG(5{zw1a{MMvFFUL`^N@=K9bRc*OD9sPZ%pp%Ak8(Pt>Br|_LFUHDBh8WO~8aNno;s`m|r0pR3FJOP{6p=G<3DsMN z$PpnJa0>$a^9HoXd+P%PA~PIcz+x~oES9hv^`An4#PmUzc;9gI!8Z~A#ud|fwg1AP z+|DgjpC*^#Du39=y}2n?$gLZ95JL4pJYKE`8(We;I1Ii0o_u;lxGM~ZTEdA=@$<31 zHxzK05$ysv4b_rrACUBiqtd&J@$hRdq@EjW=DwfFv4;wU@nyS`DDRkdsI zh-jT(X)OKr#cKA;8BWZJnrA|}@c>Gsr%&K^*p-ihm==V9Q6&}FhhDS_XFB)@*VM1# zMc_+x4yK<8s{zDDV^(o~M&&`B-&7BLOpyN4g&%MC#1!6;>sM?Q?CuStl7Es8&~CFE z=u!k^K2fRVge8GC;DqqEl%`-y2B0wtTaySelNx(`Ho<)3wa*aJxK+_av^2~G#czm1 z2AWI{ZpM{<c2newBw*X)Tbz;kk7v zS*Pa?Ii3t89}m0&haXCeE0xG7dB3lf(i z?JNtFju$;B8K)DkQ4z}hU`n%9fuD1>NAb-RDKp2d2=ehhAK86f4e_&eC6(=!Ho#CX z#lwlsYht-_aMu|2S4D-DS#8B{hb+a^H%?oJ{NcVi$!{BTvFUKY^U7h}(7zmi#zp=l z=O6Oc5_jkY(YS5j+7uOc@;fSuD$kWfRgd-VjBV*!sy;ioEdI317GKJg15_g&5~~~# zT;0H7(a#$XD2`l`1eQ=jK!)aR1(f^Ev@EmWuR&X6O*Q;KYmG~SdLA-=y44T7knQv$Xf4i11l^|ZT z{n12+q(VUw)WokAU+Z*qYN_CEUUgVy2*;Tla0M@u|L6FgB=Y2HA$K5eCWu`kohC zh#ry29-!18qa4~$4^8S7K;ElG(h#Lxt?ZxqrUNlQNdIz0evpIYsL2qKG3SjPB;yj{ z4z&^=Fh*TM#0y$6RrL2VM3XBqTKTYs9e~vy!6T9dFt$J&T$oUynQ)d0x+)Y=ez1%y zNvgrgK^VeZI8aX*7cAHKzb1BVTNVb7vxDo_fm3gy9kZ9_7%kMM8JkD8o%P!+cGEK!*_~T?S zeqZn?QSqz8TXvf0L+13T7&0>ohURIT&@gtbl))0K_MS|(z;0LN9Uc^KJ2lFKCzxI? zP0ogAU3XOH$}E%mG^~sfy>+_Wu&u^17-1vT!Y;a03jAR&X}gf$Xkj|BFfqZa*x9|& zN&Hm`y~<+YRxq+dN3(gieFqyIDanN9Kyy71r~WS=1TX`tBV4yEk3JVW9=4NEvupqs zk?R8;zo!^64`ZgXqPcBbqeljyzmHjt+Q4t`gv4y_9jOxsE8!TkCI-LO0nbM%sOyxw}9 zuGkqgZfm}g zL%^_hYT)?^sHY7iQBFCS$H{tJqy$UNELQ)O8~k0Zr3Qvd(kMHHy(ofhDB2hiP$5u7 zRZx5hjd9rIX?{AU@}nQCm$_kRSg(uw@0O!t9!$g}1BVC?0_UKHJ#u}WZDrdLw?`ng z7@dL!5KsjG)4yxm-ChFPHpz(r9B8#UHUmE9X5Dst!q#B&T&_;k9oO5LB%^K`X>}f6 zSO;bt$r=Qkh-3CZ$isdkB2EXS)&dt0Lj{d=5R01v3?!x-lmwCk6-I7dWFH0Q?UVo$ z{$}u>QU6&ds7YDUgy7#NMMxu;q@)3)b|zr}C}@bc|DDkLz%Tu5DQ(30I)Hj?{A{9I z-F%b*q#~4mp=HTv%xTcjhV#r5KDXz96RQxBl8(cc34??&L0w1>6T>25LMsLBLf)G- z>M7=UgCH{CS!blN!gDOaV`mIRbRj{wk#q9ZIqgTfM$yg*M|MNa4ZMwVA{P+2=CQ3( z!`=`W-lktg9Ig>gTJ`HZxGbkf?-(+cpPRRfrjbwZmygTNwJ=GF_CC@b2k-}o-cAv?!jou2bIU+OZf+C^}L;c%X^rOJE2m5FGx_uAt_AM;NyG>yHhj+B$fR1 zvdv`y6kpK>ksXoOZ4WtAqtJ?8*4nmtiu`L#F;5bErPu4GA*?gn%%4+)Ty+rw?spFd zutyVD{FIPn0bV&$)nB-<>+Bd$^xP5?+b=d3feTZhBP=w78h#Ix;K!IBiD|%L{yllT zpUvi~>d)j)rncrbuE0t9cX0W)4OZ$1RY%m50sft%J`XY!U*>c(fV#jLyIaUW zGH^$BY6Z{iG`^0+>DOP&Zk@}i5#{97_^J=j7bH#%XR`n`A7zf;ZgGYSG1H-ixzm)Tv27pDH z^G6Nt`5E^)_uX?Uqk!&slqE!g@8$0Y6Vtk(Rhp?o{G(NLX`W|IJ8*j*bqheaLz-8X zC3M&;LIS!&t8`bI_WV;NKT8ZwyF#m-M%BBxQJbSnd~FHdBFgji>Hui4Fdy?_jiL!N zW5vLu4IR*yd@|0g?diR-!Jnv3hSLVW;qH>Y5L4yR;EV!)(Q^^GMJ6rX9sXe zU<($L*5bjv4*)`vkr}{8qXQr6UjgcfJ|xvg1v3Pg3MP~_@K<=U7RUjqtiI_u`V;gi z)*$1%B!hNm&CF( zYUCWy?Ks{yqrdfpIGCg14ro(z?gyGb*wY7=t{jt&8vQ;=DEy+25*NC3uz8`0*u1G| zoE@-wHvOpwr{0u{QUTPzmG^k$-Z_r0C*$pQRN{_Cs`9C6md8S9BsjZX6BSQCWKTu# znC|o6C?UckUe%Z3|MtqnR=C!Da%{6RVvrBES#%25FM#Q4){unYGSU%$QqwbN(FBTm z^=Y8NrTP5hrZ`ibueSoS?3*nUo&HXNqbLVxKOtI z=bJ|(w*DHS<7G-*CTh}m#Sdsd;nvoW4b@57WE;VLVnCDbm-(P1l|jxq>US=S&j9;V z<;C%99kfWv3vTRLqvDk_y6X3%sm~!JuxpwnYQ}0VMk}ahnNs%N#a!Q;B#pC^a$P^& z8dNlWsRC2g(!M<)pfiaE5H(TtaW@wO8rD35aN37lu@;O>)^ zEO)mG;gS-sJIhQ5kq6!>+es0Keqd05fo#(?Qh36@>8uk5JYPSYruaxfP$092P_>Ec zHss^(;Iw?F>we8p$(*Zh;pNotRe>K5nD56g$T^3+7<_06H@xic{E zq!hZ|*9L_5Tm~@yqyO4HByh0lDo>*DC#uK1oj7Av_D+6i)aXcFE0sj@hFI(Mu|rm$<;rF3&r^Id?4{+}FJ~+-5)kgWTgF;BR`2CkzZg!`6u! zeqd>lwNc&SO*#6w6z?-*^K&Fi!2n>n52SBYK2_AfL{CN92Ug~Jum4&NZv5Q~1}wz2 z#O1+1){y_OBG}6GuA!+PESzih4SV;DTkNq#1K-2c5jy^jD?|pTN?qJ@ld*uSKIdN0 z5?s(Y^lU$S0Rn>$Y$5Sr1-p&WL2U&}i$ZNpNdz1`+=6n_yqR#xo7~6K8 zKTo`4l?Y!pE$@BR$tkZ>RuHxL^;E3i!_z1EQArOgf+i8x@ztPt3;KWu+a|K+o2I8i zn5cm4cV<3Ez(;FLr7*InOrF)r#igfk4JY%1gNO9>r!iJ zNpv32!R^%8;E8XNUE@0pLe*avPa!d8-f&+QXar@+shZ2349{K+KgQEG2UF?jX@()d zItbV9mW!Jr^BTT{XU1~2(XIFUI5F#5IS9b><__e=9<>jo65^ADT zU%%Ds?eXG279r&DKi~%@_WuDtu&}fLZ}CH|_J3{l?Ww(Q_47L0Dk7xW00T3)d@k`j zym=33OQ=iWTi_JQlO-c0O&uvDf1jS%5)8;nsxjm)5;nt+_p5h;6FU!d9bXUCB7S{; z?6+rksgwURQeo#=41ZOv*E}y8$?CXxpVop@BR&o_^$Oj89$8=l`GG{ ze*MPm@v!Ln7NjQM6uG>22Ab~t7sKLzq?cKQ(XmM_V(f=AdO-hqFD341ae|8CERV>;|hjGj5?afBa#ClGwo((ipIOf@t-lDW;hYV=d3^!j zW~nm`Y_6;{csJ%}n5u-3gAwIoarvQD#B?4Xhb<{I0HC6*S;M8SSx%9|y%zeW;v%AT z=Csoy5+C@se93TN71U$3$gKddx2=4Kt7q^^RqUES~rLdhfF$1@4&o# z`d6kX>e4FT{FYeVu;^tec9OR(L_a>j!UEqELEGHip!X!QxCGV_u+B+arCMd--7eq2 zppYeY+m@?=RHH*vp=Q{Rgu;c9*1083u0`>EqCNI2tU(w^MJC3?^~pP1k}31<%(1U~ z1T~J_;K1xSx4SrQqnfhrRY%)^@DF#@s=do+4+2+_rBRi}&;b80L%h?_w^VCUiE+;u z{UPf<(N^28n@wST)#dwy3BnaI-C@oFIhlfu;@?LH;*97MA*FH?qxpkasNa)tnwJ|S zIn^OewMWq&5v9x;N7#4~jau7k%{-$I;p?@%WEzN#k<{uoP9D=7d+RcH_Ct7@V^zBD?*X5(#KczY;74p_om*#SMU=8?J0Ls@;;#IpP*xC8 zNSPlaGGZEN;B06Xr*ImwWKR1X zhr-#(uqw*VmTNVW+6vPZIfo*iueZ0ZLe;d_2^XwP3ow0!j`<7+8>>Q$V zX}~TU+qP}nwr$(C-y}D-ZQHhOTQ|0o+uxuEy;lE&e_Ep&)mn9)ea?=kBLS|;oL@4+ zX6AqMYf)6tyi)@wow}3}$l^yPP_O+DGCe*Tv*%)oW&H`{IznGg?Q{WM$SdWx;@B>z znv`90Um($Q>lRA;T1P&TK*|xTEgD8W4aQHtYVN`>=8Z{49O^mrAgJEpaP;y?DmelulRlkIpYkttnS)7WEhuSNH(v40e1du~B z-U%$sYDU=j)ivKDm@&JiPL_xuwLwZ~TrR%DUw!tqG5C?{5)WaM^Wh+X&g*rP3HH!@ zMuG>NtdRK@<4&gUfkTlj7($b57qg41oVP-BMOKmJuDk@(#feEUmih`^V9Db{T^!1y*Qu%zh` zIL{LoqmF0`M)NB z?f4&@L6q-4Bul^6dJvSJ+(c|kH=HJ?MJkffCyhsNL>of2y6^HCH>ARo5MUN|bC}Pf@L-EV z2-CGld#_%t^DHpII5cz|t;M1?$Sh_g7)^+GK{FGx-gUzGMR&X|=4pmIJnnrfU)att zH9cm?3x1j7Q@l#Zw;yp5Sai52MY|6U?a}%Q* z_p}5rl1O=NA3i4%U^1bfh>Ob!hOjy`+Q%t(&S@9C*y%oPQo%kE@0@@J7FP*cY0yEx z8rFO29_Krfrd4>7Xr@yTJ`iK!?qa%h8W8vC+q|ff+QGX+x5GDKYKiK=v zC6txFP)DfiQk?^LgkOmsLJ&cW9Q-%U`f;^Y3;)|YkyxP2K8|GEVts3sv zGz62^8$wm(B?=={#4bi*m9$)+i1NCQL5uxcm)dv4 z^um*c!aNR0yw4?SjlHPond6>5j*tRdGyEeIO(r}&Hpo4ZIuG6!=Wb4Ns^qvWkIkUx z?LLFE5#@4tDp)2V#nd(Xuc3E1)d3Vx*{?>rQb`SuTtJ~tJ<7~X3FJw4!$a`lQL#zB zV(~|?DnS>7t}qZ7?{9_J+>6@c2heS^g0_{)VH!$dW4fdHf5Fn-E_FYAlJp>X*arxc z9AVC&Y&O|0JJgzZE}mEhA$gN%%wPfh=Xts+De;AvY$-h)Gi!qp6LfHy#}%N>le{aE zNEb@oDJcbtBM96f$6=QPU=PR&$(b_mB=rmPZaB6H)@h?w11$Vn_mrH7`J5MsDj1mh zIx6NzeHdsqk&=3fM~H%OKgn`p?jDLcf^?+;_JcFhoqD!fnsDsb%@%h*iwtn9h@|b@ zTU`qwbUfx1a$*S6E~#8P6hT(o97s^aG!jAXgZXB5)l5oG#DNpV2~OsS2Ga}Ay6G~Z zt7*<9;?rjA8Cr!u!5jm2ol}^e*xg)-5{CDP?mBm-BnFvG>Be8Ou5HPFzj-1LVF(qD zbtBiHGGVX`4cRLg-vn26V;R>(v-tm#EVCs-kNUFSoD!n!{#_DCGZSI(~DFWlF}vY2I=$st&3KGzVNN#s^i4JQXEk zt=gHE580r!hSx^(twOUpOWjucjwo9T(<3+JzzFbr^2V*TwSEdLkn|2&4XM|BbLo2L zfA$y>^9zgSOBq_Dp4i|^8J1-vwQE8vWlL2BJwLVqz4)z*lQ;>z`xC+#-gDcnF{>qk3oXQ_{##Wg7z<(UPQA=vFkn!erM*6${jh4z@GU zO&#_?0u`~~Ty58xY6y9YUi8I|{atR=$VD%R6;F^^8z6x zV>DIfR1FY6SD-AoJv~8@Pr{c@FjB`(%|QAY$InN~87|N;2#LSc|CSt`LgmU3CS~J} z{_4Bl)@bI0*JPGzIoa0KJ?YLrF3M-@l`Vw?fJPoy!@A-r8}jh5Tw-_Fn>5ocpK5cZ zf~3>W1>P4pi$jTfJUBaWz`dbR|t zjO+|XW>}#fDSX&|0XZXkn#xHm7vhau)&{MCOELJt?yxjydl%P3kkiW`MUzfn{q9A zIV3wNv^i*@=X%G#4Bjmw)}DID_Yc?RC~$g*!4g~SO%7uqpdpbj05hD2<^!>>aMt%O z((ITv9Hpu*8DH_LA_V*7V-Gi;44(hfOp#uCXIbSwLpt6$JD!u;$A;&wJd?!s+7qG6 z--~|tKNMAU$WfDhln*ZNUV0?Z5D}-#g|Cl;_rb{#2;`^?Ls3a` zn7RXz27qrpu`jL+Bq)YQTyFyQcpy|dQ4N)(*%8T;)UHyEH3jg(*){56rJPJC0bNYXrq#l`9F zgU1}8B^U1)s#WnCvAhbC74ByxswZwe5hQyPB5#|bviVkoYn{&DP1^kwuFOy8)xv$#l6%Kf^2&KqTxNK;w*SGWnwNR1BT z>ixD_XC}|W#X|jNjni;p>uP4T$`b=(sJ%o&YIV^JL`w%pRK>vK7EVw z(`!eM>IWZR>UVQhAnFo*d^Tv`*GTSHnVtiU-IcfZL7#hPck~V1qKR-`LKl(3+0>&VOtmJH8yT2PpW&wK#Za4gOa0%4BDubF_nU4;?#`=uTvFw6v5l!4-^@2#L#?>e3 z(?72c#OJy>XBj&~bp~k>KJhK0$?Ee`y4*9Zby-oqvOLS>_YHj4xDFhvO;!7-@FXWj z+CCesM8*T6&5WAI=Ae)1=Fv;1M*_ZzENW+de2asSo z9_>t9Gyk48?kmduI}b6G)Q%1!++&qo2NGA4h=UM!q^sFij|qf>cBM4g+AOpjrbOQ$ zpkoBQiF_*8$m4?WIo@KzOtZuMdVPm}HgAm_4C=1#ZYvzpp`C?o7YBGatKQa^Hmz@^JQHN1C?c7w!4}3TdMalNq zuyUVjyo-VK)vP}`3PX?&4u@D5wgz|uR=(dWGX=$;q5r$Q6$XNhKL4gpv?MNrUXTd- z0wt^hWrv#Tuwy_u(ah@_Dqt>z=LO$*d+9hI} zHB(c9QI!Aa`Tc}E+GCC!6H0{$RvW=mS1pKRsz7TnaGd!bDWJ9x!sNzcop8uZYX(e2 zk=UL353M+7vNKIGU2qzM4aof0YoTr_1&%JqDyVe}X~CGts>5}&P%i8SreOv|n15mi zNX;Y+Z<=!+I8vvDU_Y<=zL$?EBjf+BO0t_VL;x#dQWxB7Gf03HI1&X>cuQnXA3{lx z#Q~kG{bbmGFatvyxhjv)rD?%vNxdG(DIr7#xT7Dw17}f@^*LlX`<@Zj)3B(Xpz>fb z>W(0F*lf<1X#UgD08@FOuo$Ie8wBHme@-@$%$Hs#WQj^GIg zbhCxy)u2PhXx!%)#`2;uGw;IReY!Tr3gCHdJ3}qyKw@lD2QqcznFeKI6&`uGCjGJ% zj7Al#`|=Wv*H4M%rydAq@3X;l79;wTxgMENE$A3=R&L92m=i_mrxDsOb8AEkW@_@< z3F6tXmqb*4?Wy3va?8a6O`K~PVCJBuXtE%*bnsYEwT?=Dw!(=CqR)gSL_jLEsa_82 zm?JVR2@CDe2@bM|b5mlz!xtRcrh8$v;g^^!DOYgz) zQ;!w%NrOA5M14=qhfBk16trR-ea+&eFsYV%a;S&Vp<7Q)Q}0Yr__2RA?!=>cbWp_j z)73xJj(1n1&Tz!6lwE?4@%;t_bVeUxBS&r};D?7<`h(uJ9xgyrFP=GTCZj?v7DD^x zN7JQ=y(Or>rAaJHXs&Y$BUX^(I&sTf^0b4CLRrg=^ESESl!IRWUJ&J++{>ZoFQ747 zKHd2c$)NYT40{P5l#A-t-cKN~tOvI3mHLm38bxcaRmPtZTs-`lPGg93tg@P6#!`~T zhal=m@6{Ivjtr{e*MN3D4tOZ^jUV7;o0igh?JqrsYWbhIxUorIP=Yi;V)FZvil}Fmipu@-9*MQm)iX15YpOaDB%@F6Kc1N z*}~!max(>9%+Qb0GUBR#`0j3q$RWHj@}XwJh9nmq=LSKtMAMMs0h7$dQQYTsB9!Ic zOewj$^n6PA#*q7Lx!y8E1g2caU{vItTmTFV(TNCiGht(NY{r3kEce0vpc{0=+osI- zGfrZ8(Q63Ah(~<#?}}Nk%rh}g^Cz`dV)vQuxTXn?dp@_C%QBsC=jq3dSMMt%s4B!l z(tE5VkqKARtZM$1$(Zf5B|jhm&594hi)UhP>yqr8eZUhhM0_a!?xeTq6C>icH8{`$ zx?m^JT!3FstJ*6g-v0aI&^w+=HpHP9CfG>WWza@Uhul#?CK;SCD?WVsdV*Ko;F2a= zs>?49N<2woIa{7BTFn*=1H!|T{!1_}GPx{#v^M|j-z71{7X)WelQ44NnGvn9JYoO%ac+yHuZ7Gamci)sWK`@{hd&S2v$?noh>_ut zKM?#Q2mpa`@x)IylLFGg4;Ou~+aQEBzy{41b78Rqsv3DM_}5OnOT6jIR?T{DbXoNt z6=6rDMus6C6wUWG z@=9TMc`}l}sv}Sw9b;zBI@2dbG%%;|40ob`p#=!m;FD3kEGkVPuN|t|91zVZiLBEY zmgDZeP$DsDES>U?yP&QMlM)Z9;uil~P=XaIW+BXR>bD(ymSymVQio@1N+5nyd|^ac zAy97+;zW-~)$0T;A~cUe+Fb(VFu>=uo=!EYw;m#kxou!+wv|+CS5QGk=4_x+wJ{zB z_hHc4F?a??bVxuEAj>`DTd*A|-gV~O{73VsZ`j%#CRLO0NI+)s8%Zm5+FluPh^}|} z1z1RI0z#nEAU;jtbDoXRF&@iExO^+2=FB+GaXOgjdkhjo}lv;m# z=AZ->C3A8=^0f$6`GE_0+nlc?e{ZI+8)x&7aZy^(ufed_(-i40;FJ;I?dQ;t+~q)q zY~o7wf}?^|U96bOGnAgp!$BBWDmx-Z8Q`ot{;Oy2Ug40#wq3dz6GnD*q>-z2oVMwP zbiH>7zbAT2jQadwJM&Ewa=_R_x^FMChA_$2{yUG4C@T_Sj%T+eT1vp25Kf^>dl)s= zzuVg_B!fVApO3tm{za=9I|f}*oocHjFn*6Cm&!w=;1&Rj)9_wYM24vC7<>fB5mZ@( zjslzw@T|m@og)05mk`ICC=1z76tX2^j+Kp3D^TD}_bAZVnA-L&}uApEd!;=>>TnsB}c$8d7W4<;nPlVh+&u2YVd81q&{=8rr?_6tlIdYGi+8<{>NJB88+Zp{kqU3F1xh zR)W*mtWo-~^+RU5VsXTiKNTkJJ&7K;Coa5~mjQ>F3X~*PFIl8HT%DM3wuCPBlSH&~ z>#g6eay4k^=xGn|6-8(uW`YW{f|!fB!Mr5$Gv54Ukixk3i-c%s8N0kwyeZsj`$oDm zE|>%Z@Dq5-z6P1G`LwE*WtheF01n8kOv zz%NI;SQmyf1JqNdOwe|#^7>R3?hIfh!(Hl&lc#MM%O`CaBU$4iY00D@w3n z`Nqmgc!uUy^8z;s2IHz&B{if|#d~UbA=G>Sd))Xqo=3@YkiSk<0Su037#;v}YL(Y! zmi#AQsfbcTaygbeQ1zvq6{x6@EMI57_|iTYYQ6*}?7Px-2xi4;>dOlqz@8V1N!MAL(uk^y+4*%?C(|4Y~)HE(qF#<3S%4JUF20uZU21zM`wsLcJMs*qa6PZo@7%+56ij#1WUKkG+4i#AlLeNjz3Jf#g3vZ2`4oX=!{u18PE zhhhg7a#rWBYX5OqY75|bI%i($^l5yUL^UjKA*YVdw@y=D!Ol-)xlKbcl&?-3YKl+jm_T?SSk(8}~^kGtca# zh2G2~kHJg9LJiMVV%g)IHZ)f(rQQsnmWc!X)B*}S11g^ySUmUKCmmJF68pNPu!*~M zx1#^j!2BNbI8Rdqu7ii7{AaTXOvD(Kftl`0(TCDJ@#hkm4!#p85l`>&_oo0k!~=AI zm$hu7-w1^M?oL@XDLDGlV$Gtnb1Uj~-E?;+K$Tvgc)o@kmcH1Qgno2bTFZhXFjcd1@p3h- zY)OCYpNe^ANz<(CUp#P_jt-Js(4$>hZ1hi@ZEhD>R+{Xf@p%k7E>x(rgKrsY)og^NSx_)OC9@*w<7z)J=_uEGDYDRVp(qE0v!!6S>uxUrzy^KJEJ?9i zMSDNk8Tf)ORKk(2N_1jn;kxF8j8>P>rBlyWU@lA%8eFJP8e>`Y=NG&IQxZqq?a6 zh@DGKK7nJD8 z*Fkr&7#>go38kO6$13B-i~%ZUX8 zOl7d~bwKoxl_mR%lRpfAfUP&E9WBvXpobG5kZ#Na5&Wi59Nv-L@(0s+w z+idQ@p=XybLbHku)-8a!7ks+?JbY$Y{s(e3(dF_#?K>*6Tk^8U_I=ZzyKww9xrd=iD{iv)#)7|xUu-}Iar&3>%qOHz9 zU?77wS@I4g;rGC-W%tryQcbwuc>n!--0c|XR87Jd!&DuQNIOnUttqjsC)NAu)&FVx z>a2^uSD$*M-CdgnlT1>rn4<2_z3~ z#qr&>LItk6LC*@^Hqwl=(}-{Fow3STlY+6vEdZ`_#jo|OlLk#4$1MV$rcRq7^$)#& z5zg=?l?#Jrs0TruJl0G3+mN~X6ZxVbx$E>k*H|kOi6xvQFl^C_RZTH7S4Ej*sC=9# zh96hLqf`ESmC?de-SIyNQ-CnReB*6{IJER4{3EZHJ8S)xc^$#pzl3BF|`{`_)A&jBw~n<$JuGFzc0{ZC~MoS>c64(Cs=Bu zS3%C>Zkl}SG-~n+1^#mk=3&(hpud2=LCSuKTqOg&r2F%v7wA*(u5l}r7(&*b68L7Y zaSdB4+^kY0P$SL5B^A-=LWjQ)6C8epLg`6wloyZq{0wh&1iemWfuC)o$QWpv<(+6O ztP`L=x{|*qJpJEom{}V_5H)K#{%aDyk{MJY#NFqbkUBO=cUgWb{*QHQXL8b+;XJKe zE~|q^s7$5fU%hFC>2HQw4|Yz++d3TgH`OCinsyb6uB)-$n-@xJwgo7vdX<><9?gIT zY~NGP?*cRwLBiO6D)W)|#5s(WBT{;On+%8^4=P_AN#(UPF;qb&l*LOBjqFMN_F*HXdyK zp1+W*WqkQGSy3);UUrur-Q$`b>Z=zmMT2P^<3G!twF)Z<>(&|mG;iqeoX?RGw&60) zo(h?`z-O86A!~XFi)UMIt}>#$ZMuFeh;JwuGa;R{7<9ql(ANTgs$A(iv%w`9JfjS) zXJd4R>vlD>KMBsE4W-^hhvt(NciD|dlrY){vzRiV5)KnHR)DTbQ#R`)b{I;#y4+}5 z-8%n?9pXo@hwv|u_5B1!tRCYO4D{`#!uPVNd-D)n4x3U9&zd%$FUPbS$vd+;{kIq@ zm71IHn%5nmP~UDVr=$GTh=-s=b8MXg6FFrdT8UQ>NF1H2ac@n#7jn!M83=r@2Fl~H zu%ey;(^Y~sSEvE&YE{z7f>P}YE%R*~GZF#-sd)%V%qY4d_^|JwYT)^!4xCL9MV=jQ z@JGu{#`x@$B0yS;G}(0lN7J|#-2%o|_-c*;G$xt)rL3;pf7XzJIb;$&@^gJ~O5wj6 zI(kJ@lf1Vl$ch_h)Okvp8b2jc>xNsVu**tzdc`>GE}7TWD0t?HEaHgtFYfbqyLRU0 zB6SdV_ZO-OPy_18?#K1PZbq;t>Nh6Bl$iVvreb!>3xs{T8O3&52D&lonNa9yTvCbh z)p)HVW^nq-CLv!BPY+~E5cEGqEOTO#Z@^TW+ks|MAs{Z1^!B4 zmFJ#X(2A&J8P`vtJFacAFP-z9nDiqTa3mjbD2>nBCxFsM8J~KJKj#F0>nyS{>d*CW z&!EO5*tEKo(g*G7zy*fKS^S3bt8d5!N>>Q`OPd&ePUUw&c{+g-^ z*z@-m+%EvyeukafNka=x2yC-XP=DgE#3%aex0?2H9}^$mUm@usdBccdX2i*S z|7`~fMg4+qWy+n~Y(?U591URI&*^-B8-zMLSnBOnj`P|;4YaV?Ts)OQxofQxaO{qF z>U}Nc-m$=8^hCX4uc)&_?`+}uA#;}+$UO7W#}cID5_D_{JT*RaDsGDz z(tl=-j;zFe%9OR8o3Mrc`0UwL-VkubYe@*jjaHXg%ZxqbJqB5*eP)brjJgBV6y3e9 zfroB8ic!a+=juDrJ6B(?oOMl?(EhgAnu@s08d$rtjWL^Z>@iliqIwlc`O1&>o|%vQ z^Uk<|bJx#R5@d|$oyQ)PNrvTlqo-V&qC3Q4N0t7W zzVQH#J%kaw(+#P-o}Rv6OV^4zuceZ%O(Qk87}$~Y*=!Zgr-=KQ$7m^mA{})`A@}iK zXt+yUb3)|H#_cRYB~cZg<#|f&R*czY+Din9d2a+kzs}Ku1o|XefILY@IH(lA^AB8E zKJIoYTqz2FLZ=fZPekk&lSkxn%d~Q-NJW4obJ~%cSfJ3mx~1LL?qmwSicf4j#WimV zJ*zByIhl#@_Plok2oSmJCp`h30KD5RJOSOS2-gb+;_E1A=93ZNkUR7=s+{&-;GxE= zZL|Pe4vfR3>u?bA7K}uCD>U5><}(fHR=%W{*$C;QV_PIw8O9Vm2;Xa~*7O1z zn>aTNCy{s4r$mFXYVQ?JiW|lQSYAeL_?oJA7g8qY_dpXYq|nh!B;=~V`l(I0(mzH# z%=S)Q{?H(#;;?tA7?2Mnh#1${gV$)AAP{ndOeZk>Suz165o~`tM>9~Ag<8g~qU3QO z*-?EE<_tvzG*F+%NSzD03R*m;Ri9N>>P&^;lp9%5xG}sPLN}tAtGWG3zb>v9Xxj`HK=$4HD8-k+@Eo=$ zMaDSrZT^c{Lqp9@a|u-?Jd1if;<6E8PhKua zp&}V|M^?6q3rA^^Dyu<`Fnzv8R}gO^2}K}dO2-`roeiKUHH(@|8^$}@hN(|GI7API zOzG37r}PWBD`HII#t64_IB*dfW^F!s?(P`}2{!s0w*YI&u$es2S+F+Rq8YV=s2F^B z@dq6_5`99(!{AR$X>`hoq$}S`(z}-yoU~}If z!OO>3NzJBjlWhzHlOljZe#Mi2FXDa>639Mg`5E@AeJd1g1%2#sB#*W*ZbM3 z4^o1(@$iO(M=GUerbtdObMfIt>*mGy$x6-(DJQX186sfopG{bGhTlQLS)c=v+9w>4 zIp1BZM3aQCLh9=|Itxqq#m?`hQQ@5KfcL9ax1en-s-$b?cKb+vL9_v3hZBbpCyDph zy$~Be(o4?%2s(3YmB-puWJ!gt2{%+0)XEC_)0$&oF#RSZ!flXOL3|5N z=XAx4?7ip5~ z3B+;-IPyhV_+=?a7@s@Q1a94Q&YxIdaUXx;c9%8fKs~d{x_J}S*$-Z6tD!qrU{+9in z?T^5F(0Y41AfC2!;M}(13r{YUgAcO%9Y%mqH=z%Ff$UTL(99pTL00^siz26={&C4! zZ{b5FLC$8B|KJt%Z5ebI$nTXXYzfF+ksW}n?qhA`sW1mP7S zkkEet4ABcj@M)MzW6t>U0`wvWF92uHE+i?_gJqAfENh;If>K&*EJBb4ctgESX~?DUucT4S9X({G`dL2h;i{5 zbcPhgr0L+b4(l>Z@QA-gB<@VD$4hv{#2IxL z12YEh{B}~?QEaL!*%D}+O4p^$oyeKzUvCx}AiKhA;-l3AHa;?{=l`}|?6B15YIMqC z^y9Vo$*JhM!09WS^iMUP(G23lDzvydhHC->R8K00-Ryo+zWKUH8v~848+RG*{|iz@ zdCg~?9>kF8Y|GQ{;XiPe_%aZD;E=YU)s=U_=ZuU$)5u*oMJgtFVvVzV zhLWc9wyl#4d>EVj;li_(f_r%*?zfrFUOW>(vvv6oDZYeCfF`KXiRf##GhQ3o5Ff`^ z!5j;@2Y0}*1jmKn72h28<0mWVcX|0=sJrm>YDr}P$eR<>zw^qP#7xaU`gB9?TKp~PLR5zsUWhRg z3zVzJDKF}s7uJc-8m9_+yVX7YJyVsS!aH(8ViG7S7*=#jsIAW&eCJT2fA1Q!c}K&L z9X}H1?l5@B2JiKP9;_+=a4^8GKZAgOkicJ;eGJaqwe;(ohyls$YQ3@c&xbuLP`iHF z+e9st_!P~-0sJSA7(wP*`_tp5a{^!&{++F&{q zd$GIgi%CGP$0_nSChJYmW+Gip;idzi*AcXpcr)%T!7|wP>T;;0QFIHxf>|{j`s_Sj z!ULFHH4)0ORtZB`P#sF92H7!Yz}>%TOC=;tm%=viHj&XY%zgzaCg#u{vDBh&JhDg@ zQ)#-KI~>lvN=qW!4KB#9XSsVdjWUiOO(qTn2_m=FZKDj7yMYFfO7Q*;&(gK9+)t9L z|0OPOPIkId(Dg0{Yh4A22x>I5*!1t0AUWs{KAPTnVMhV>J=~KZ>G2}U69-CG3?YGv zZrowIhy&XX0}mmL7cvR}%>5QaWO8Ib)%hbjgiB)m7S)hlWDclNMJ(`R+-e0V{(})6 z!8IBZa~aqd9}0Ou*PnuYP^I{_xoyf|5+f>D{KKq}0qx|RyM=-Ebdnh#k|+>ic^|*s zpnch(U2x)e!5DSu)N4YErGHNIU%3aJ&sS_$*p~+lG3BcSSMbAC>J!sTWcbx#4*hh5 zRfhY3m#k9n5LAuH2Np(P-B+naz(o1De}7}$-j3+IY=>|@bbBS4;Go8O!3B}Ljy@Ko z9u)is>Dnt+1FYJ({GJ<1Vq~5Fk%#YU2J~##y*ASrh~mHB5P9}dAm`h^`Fh}H^&tqU zQx=NnqW)V5jfEDQyPc&=#J1r5RS4rx$7xZYTHG9fppE%|^uy^t=r-l5s6;s+Fa5-a zymvDH5y(*IZZyAdDOS=Qo`&LyKWI~gQ?p4);hSQ>&juAR(Kq#Ed;6*in>(xasz)_n z-wx)AYPZhGD5@TaGA3Bd;&OWXMNT11WaQ)B4`P|bU=LD`Kdo|9)%>|q!ch?tp}U>GH= zU0mIWxVV^M82_&$l!cY`e;w}j>d43AwIlb=*B>x zOrZKAdsAxH0-f)l_ul5Y&)?2Pc#OM}_;zK{CA}D^H%jPbE4CBV;@LcVn+kQA21Si-~Km7FZtVvi#o!opRAbE@CF538;cm3bLH zY*A@(3m;X)W<3Mc+-yPwz)fR8*NJlTH4tf_6*DAOnIN9m`RGV0pv|%ij<3z!c*bnP z%}>IEI|;t&^h4L8;&B50LQl0~xJ;pq;c&;g!E(D+X)G{TEaB&lAp|g+mlvs;6YGn3 z9JZAvRGYlUDGYPKvQ6YZkzI3pfab;^yvj7%94D8B#5Jle1~Y`*wB+FtL`I#NktIjx9 z4^#)tm)F35+J~bN`I^zEvUE=F?oXM16Z4qUgqr#5hIN8<0*HRx-_JfT%cl{TSNlV} zQ)ooJ9{%yx0(!@~Ov6;K-tP*3St9xO`C>f1cr!=y@LCK_eV_@<|SoGTaW{t;p7Q zOv#U-29htaJx6rxVhQRbLTOP!R5*Nc6%jEnf&b~6-nc0$fzGi^H!wmzPq^|=5a4DY zj7$K5cmDvb+y5El_8_czPQVk1&1k(#-%d!YHWD9CSi|6*#lE(dbDs{3FUt*x_psrQ z@+kS>-=jwDkAXEwVQ)LN_50a2jj^4$(Udi}29{TX|ZjNH?3yhN9 zR~{-Hk%KHp@X(4#5A=WeoP|cN!@))@{u>jE9%-TlcWJvypmsc5p1;1H&e{Ks^Wx@% zML}R9INvyQL7zTB)rA(%?w?9BqGK;9>?aF{P=Psu`%|Dd7qZJuCBaK;@pbB8iXYm( z+!YOd7MUNx(r!GAPm%#i>Uy>T!*galg`q!FROJ0Wlp>u!g2BIU8qE-I9?j7xW~;ib zh@DDg5|04Vbk@jPOhwN_-@Lxjm4l4aDSnnEQ3dn|mmVBC99>I+8jrpGR4s97(WUy#)H)gH!Uv77eZ*}is08vfVUS4Y;m4&N`j7jyjQ~+h zPz|;tp$%Fh>COvYj3U?p+*CiP6K;lUzo2DQtski5Sac%gfM)VegkvC`-&e-S!{>3> zoIXHf(h0uN1pk)qKOKAMErNu%9BT-CC|S$c_@2n_AahY~d4s-fy$GR!Z2Kx{8zQACFdxp@kOP*1297ZYx5!Sxl7yoK~ zN6K|%-WOZjoThM9k>2sDK-1FY!L=BoJXJo9d*^p!GcZbpZ%Nv1LfjpvzHu>8Z-<_7 z)+?5WkvQ0ArcVMX8ykcB4o-pVI9i&ZwR53mcacmbCm^pRYonbX^3IvQ>@yNNFsy4L zGwKE5P8eOA&H=D^An~V`)e$B8Q#7Pu#e{1^*4}*5h4ig&|QLN-h`5#mmo9$ zIuEf`sy$N^KVURoySzP#c}j3?4P^*97`pJMIo0ft;x&(>#9fLpdE1OPgt^x=)~fPy zzw#j`=dLt1GpK~c;ZY2TP+pJmI_h|B|3)|u=9+DhQ{dI`^6@4iowh1a584*JT)S69 z3Mycw54YhX1Bh{rZqSwEy6vBNkc{7oUqFu-`&kF=*SPGK>SCzkLqmNMv_wyc#5~=|rpvWC&*GE2KQAh`tFy z{UQ#Hd}>5nJr}NQpNU+v2~XSGMv#JGln%c}9d?mzRg?Oc5N9g={tsj4)LaR)cI(*e z*fu*hI_%iCZQHidv27$gB-5BG6$bNMj1%5g$B9r{z2FgNK$$1$r%6VYQc{}fqJDfLEf(HUE$HmXNGOaJr zh=C;y=pYcxB=m3)_|-wV3E6Bv)xbI36-eU#IJ5m zWsQ?q-w;;H;DaDaPabu(_SPO0L_}A71o+WAC>!@;38Sj{GxPM3cSbNFR1vbn1*0%t zP`)y0lcU~nI7NlZ9t-LJk)^9kDTpqXb7w3nkQUL&QSdH#WQqg7;`(dznhoM%S?Pd7 zc0m>OCJNAJtw!dLg{sD;nJus^%o$Qw%3cCzz!tlucv?EU=)Vae$KeZ|yiP8_G@stB zn%=9%oZ?TSvagND{~X6yINATdaqRz%TWnlEfBx^uI2ZAU97*2-{-HO@TYVa+L|&j> z@HR-C9hU?g-fN)O0pvtW99=cd4BSb4@gG2SCaDye=P4sB@R)JZVTlF}V3m<;r{_*_ z_RVhb{rmPi=PuwM*h=Y`XSdsbBLyzXEZJPFP`1_6f9<2$_gNv!c2)3Frljp!*%$B! zUu~+@Y~$7wdpq+tQTE-Kisi?(VOi^R@J5_By{jzzF#%@yopAc*EMLaXSIxh>Aas`N zhTPlzJ!z&sujB@omNKs7=d0Tk3oo_4Kx3fLtsQXhcWz-nd#v6#2Yt zx8++QOAou)-`hxbsbu03Z*X-L>^5CERP}ng9tX~QI(C86qo`3fDbxr7u(Y*?%_;d- zyvchU5Rr2HA}3#fC1HzHO5xH$WTC!TrVXF(uJJ|q9SwT)q^Dv&O?z9MEWz|uethHT z##D5Fbw5dC%g`2c<+qJ}jSk3a-kv)t?ku!U$H#K7HwcYl%ER})05Qa*Y;~ywX4-@& ztZ3eEI%m*-xmXNu-Wu%A_!2G!*ay!>y`p3zgCMWO0Q|vy{vKoZw){N!En}@%9efUa z;O?C|mRuHxx*`QQC5XrIeq{*;8TuB6n-Aw%KjvSn}jx1oF%| z_@x(F8?LqbMGus=5gEoVu#I3ZcNoUM^i1TmX4} zJl9fw69Dy5Xg6nR^Q6A!;L_#OB?>zC4c#r&v2ksUp0DE_=p6FPvMg3dtdrol(DcbxGUUe=r9{QjrgEn!Mm}!BS2wC8=x)G&jEV{~?IaBQh2Z>k4BE*#JCiJ)Ib#antj3<4MZ)|R} zNbzwfqAmRG`wRJ!hIAE-$w4uz@AJv$<&AIDA8no|kV}nM4my<9Aic$y1!&p?uVA*# zV6Q`0epWNYizW*n;{ssdX)NntPlRNdsXt+ zxsN}U_>6zCV|IYRug55;otv(&KB^i~s{R}I9<(A>=KbC8k2V74c5uYl?$wPZh}rsE z^Ku9clB#P%v83l5j@OlMy}N}6=Hjz#@FK|b;I~nTC%nj;yP$k5fOh@xSV`NN_X7x*ItE!oYEL$uoe~Y*?WC z=_{m`g1RC^!4WJ8YHKIhF$l5sk#)Bc?8~o1@Js|b(NL$O75I1=^(ZR~U|w(>2N+Lz zA7k{X7yj+Icg`xQ8!!1C)nYP01qVuwjf9-yK>p8wEFjc46MWtSJqd#HTm-#QJznG# zV}<3D=!LI|)$OpYPX}UvM!N(`3sKbqUH=|Zc`iDDNaXl(h>#AAfsOO)3>psl&7s4c zYIF*{2>(#`CiaI0BA6Fk;$ww)dIBUojg7u@Kdr(o5hAI7GwxgI<8HzQh_3ZlrdZ5{ zNpLxLBYkJi`vqTqtx|k-1GdNON^uNGqTk=_9`xUxw9Vl=0-%Ya=zi;l_7DyzlVnvI zIO-uQvpvobPEj@aS0hFCYLcn+SV zWd2;N@O4;~0j}AnX_FW5^v?%SAcfGQAPJL$_`|}&lu#OVJJraX|Kgu<^31e!KFr7$ z=qg!3o|ih*7#>)h7TI0J*?bjn%0}s=4HX+1uSP#Pg#$N*adEfkEzKD~2fOgLZJTx!f% z`YO0*JJ+O=Q2o_e%SzJd*?|4j8|R2WR%zud;i*)ujqr?&o(UP18xT2Pd%|Z|5tUNt zDGCaWc)~QA3KPdF%SuX>)i4ytrz)Efq7}u=i%$<@l442eCzBsEfT3Lakz5BFjs~gl zt=~g|E1F7}>$u_#Xr>~tpd{M@`v3BfiOw=`I@EY)%C*nf42DesHMIiyxC1PI{f*6D zNsaJ@UtVe|KG=hexDmsTHqh1~)XMXbb_^2)`t|Auk9>?F@oUTkgGl4g1nb=bHy`Ow z#Ee92slviYGmh}|Emq@!#=*Httovamf##GtMYfqH#4edMNtNiHZ?nX|qO~)AYK8fb z#uLQ-(9QI;r7DH>qiIEN8U6~0)YF(XVjb?Kg#~Q4{rqvw0o5-3vQ3}IixBSKKyW8C zXb!rBn|K{KX^l4xk`91mz2k_}MMbA`wq{Sj763Km_W&c!mM0Rpv!50uWzi6A7}1CL zj0o0tkEjjw#U7|3#&;RPC65r^R>EzEhlZzZwmNfpmffo+)qG)|DLXelU6aCGX(u*- z6A6Nh5XT}9+FhLdB}EBJ$&2(-oTLqPHm;k)?_lHa<2%DDK4f_N?Y!c_LDaxV)^3vsUEC@NmA*Yl?8n|%2q?sT1J z{(fZJ+QYfTS%<(d%3r&Y!kzrenIBx4fvg_B=BVw47KHL(&Aw*|MK{lf>w-TT9|K6} zd_wS}CE8gbw4~#r&F-tAd+X7EMdFYm5S14=@_eP{pZA<%!;;bw^{BcPaMlBSc;ZAS z=%_cw+4PxtX5ea#fZonSrBYFvTM@oeT#ygTI@|I|akGJ2qQvJlqML>(eA@kN1B>DX z{YCC74i(f!q0*<4Karwpj~`pDoW2tT^|X;FqU!^^4m48EhO7Ji|u z2=J5vP7HiCYRo?Uno&XtPA&6asK?6^rk*uiP%V`+ zaUOr0iz3X6fW#edRNf?|k1acBJ$cGC1M>%T6M@nXc<`B+T)hUPshUTKEOR0#WfHC2 zLEnK>Exp%}@&Kgra;StupA>lt&yv*}dT0QL0SgP!s8-F~p8Gl-9YkF{9AA;lUBbW$ z_cTCK@`)4uj4A|CM0%`)kTmlon&l^*A`Wg(SqQm=@pRtjx-thda>CVz zkKz*}IZY(-&N;eMcSC{xpA~5*&M_Th;tW2#2a=Z8ju81SnLU(5rbdgjOUrE7Kf&OJ zVAhFHCC{Y2{(%!LjyzG1u+r zmv<2{{NHO~ivMN8=m%itSfYFm(FakXa)xO*0`TeZ{If=FFvMrHnpTFv2$087RZ0i* zh^C9viwF7S=e4V4gBhyJ;AH!@x%OBVD{sw`WQdNn`S0v4D9aFPalXcgTfVItqX%up z)h~aCK_ofxUOt7FVMmQbOl;uR{&Fw*Sq%jL2iJ(5#+$w=U1eL@R_cPu z;+=0iszMikQEFjIEjSR9Zn+rxMpUJjRt9q%N*JUECW(E}YLnz6Ta^y`Sw})Cq5CE6 zP0c58ghxvn3}0sjt;m%4bu>2Y0Y`deV2#vM?^p^^LTHLV1Dd|t%*~(3RYc^s34PW= zG7IJlB-Htim(b5rAtPJ@)i)O}5&E-qdD6H$+7dpWkl#KIk!dI|%Ct@6S{}WWIHF0v zdGe$V`e|G;2BH3B@$e&M6K6stC(_;exNu7^S8z{`$Py>>ss^rUrSvxbP=8yExI7;^ zx=7YUNTK4%(dpLzX5a{0=o9I}Ee4xWqd;Jf1?4QPyieVMLrfk3p~oNDVwlt351~|? zsJ43^7@(-oDzDkJWe9s=_o{#oQO4k+UI)tz#S7Ms7)7mKBfDd+RV0Vn|9MudlE3~f zMhW4oXfd%ORaG*eVP^}F^p7#ZPPUj6h1)YQ{1)T6nD+1Xf7ryM@EF*jSIqZyfgJ4b zxSqB5d!yLK&qrkgyKLF=DXul=QxubM-1zvM{&sNsTsYCxfEg=egr6H*Ru@ZXgmhks zM{>}rchv>FozzEo9cSDrV36CCU}4FegX8>k76wQXc{4Po$;%l(|uclz;I^ulRZ1{i zOiFO#tUMYFJFKyh{!9&nUD#wBQw<-MLLawL5&GKefKLhD6Rm&x+Qk)Jyrk}unWaMd zlQh@dSF~gPr`B!;tIP{NqKzqq)9$heT4|sO`lQjbB6z7oukL9xLu{+K5uS>fO9#rwO#l9t_nPK$6yb;6!tAJBiDH_Z9aEt4tKI0+(hHK2h z5UXOFYCuM&tGoMkghcfwhhO9>SCNl4(+5E-5x%urIr$Dka2=VW0#-O7%Ox48B3G$tRuVa>h^{z1|3w?)V*O8TjGg%(edzz5|FfvHaWQowW)inCbTJh*HMTb~g%c2fb9Qku zHME8E*r?Hwc0L?S1kBdW>9rQXpay$^hOPq*FJ0q%2zl}GZ2zH#KoS!mIAI+?6s)cc z{ohZD;HZVflx*c)LO{@?fKwm$lhvZ;objCN)5yCf*Kd>ZyFTxVlXxTx3)r3yfA>oh zI6G*RDyF8(wx{*clCw5rQ5MMk?cVNGuIxE0na3M$_Qc6Iy|CL&&fXeuvTJ)j-^;$g zo{D;C7Fp7{TQj$9L^HLt9g=%(?KzdskLongMuNVFrcd$wpS$eylN^{l^A&ENd0$dz zl5d_jwJnp&O0V(k$_QVzt`;|AXKWh78-!D@S=FlDuWPDY<3sDdwOiU6B}YnoFn-6{ z%P8?bx%!rCSMSksvf*WcFrdmCco2-d1w72i+%Lq)dz2+Bzjs{SjxsUy@~H7Q3vg_n zoOR;0pX{bXmDK%n;Jq+-H^!^b*SXPl^I;OB0RuTdm!jKbAtJ zMrKs6pC0U07h>AQC&=@1&r44m0kvVZwi}}w&xp-skajnK_3bB`B&RKcF3jg2D6+i&^i^*uq+1tluA{7J5)!L>y8UF*FErsTDS zq42hG6@9Z|J5ff3j%{hkfIRA}ya+xMyo4OJ`4(y~lrJZzcXv0(Cy*F*YwXH*Z>8Ep zXW?GE?S}Txb3rM_WSHhblN^3NxA#~NLlv;Pf5Z`<7lfK3msHvR*~!~d+vCkd?C@Px z)_Dx~O^7#ilWp4qt)f)9$Dk6S9h_!=v{~Ki>FxOd4m&vBmUHB-ki`A-6eSH5D969c=S>@g45C~{ro~>6+`E@=#Ym)RNhn!*th zek%NDPf+Ajxlj~5P>}Z?4KH#E2Ud~sin2ChCTVvN%!MRai0n)zi4?V;(!#VN{GqR( zJn{&mHfQj3#gXclbT@26K5wGHSV5>OSf7`}?W z8U~YD#|nR@`k5c;s5;1BG!YC(pd~*eNIl_Fijiu1z->2B+gi4RoQ%?hz~PRK`vjZ_>LBhmaT<7@l9eoOkXr3@3UB96 zC>}&nrsX{8&s2tRHJ79t{rC9I3wvI8xGdVshl7&aNptc4Q5A}TsL+8p$w2rkR1AkN z-+QBBzT;kve#r}XY#R0^hQ*3tT^v!WI|FxvVGege-^mJ{FN}y3ZJsmXm1^2cn^U{^ zBR@S;rkU>*BkOwE%-4A#vPt!FVHK-Ne0XQk&bD91dx-O*vU^Ohj8c4EW^9rsLAg9wqu%2sU5xLf0r}ti`1CaF3#H`VHIR@C`TGI*?@Tufs1P6H3~01oWq^ zjR5RcMxSY-`Lz{elRB|nDSq2yl%I!tN#)J-OPe6##q8Ny?3y0}3tEX<+?h|_xR`~A z*d^(4_FnWy5y@cNw(`*Bl=H%SU{Mz0otSgYG^d#Xej7)EcS@oXq@dmS{mTyjA2zOI^gP5@}_209h3 zlwqey#u}!D?Z)+yc8X#;_F!Z%xb+SBCz zjeD;UZX)WRkt665tzP+n`)AlWI0zRKk=Ivbkne6uK>TBf^}U)>ot$PFB)#g~Fv2(8 zB^xWDm>4LOf`;R73QujyIq*$f(n{T^rrgx$sdKu%d{`wwdx@v-W(IS`gz8*Ib{;jB zwC<5|I1A<9ip-kHXT^fSX|G)*`ZUNkp>S;>X>hw?a9-=nnLfnOn6*3ah;xZrVWuG^ zK{fcM47Q9ZKCEECZQZ_?kiUlS`LOuOUiFd>t7{K9P@RG z#YxUY?a+JT#5n4h;H)sxNJTV0D0rnDM@l_di2wFa9LG+-rSRskm2+DvXjOmJGW*Y~ zWkzY5#jl|kdWOVN{}7h%G=_2~GemYUfKPT&om`Bt8_dt|K)_BASr=p$8OoP;l?E6)`=52$GPL(dbIo>e=ywtIT)4i%X6e5Heo}-DW zxU#~3nIQ7S`f@0e3_C|bROH|l=tCe~pdb)bL`cXJ;H;?{rYbApZ4J#9;a9^G1UZn( zj9yHgsdjSq87|lAi4Mi=Yat3ofQli_j}|J!%p#zne;f^f!*}q9LkVFW`^NeAU(dz2 z9B}SQ76ju$lh<geV{hfNsUx6@!!J{-`awfS?aW45+WeSu2 zWD>msW2KKKz&#^&HCOgOxd5JCvZpgbp`goGRM`T8Or>#F(R6@*>+%) z16|?vvu{&}NLRcRk*%ct>@2M!%hP^|#Rz{Hko^Q!8x+6KN6bfK?hMU|1TW#I#r+Fj zAlgO}>XM5U>#xNWH0>-8#GYhSs0fIFg2@8z5ruzVx6X}!|IyBz;VG?O1UJ8@ln>`} zet&etK2Hp}kj|X*RKD&$Yw8#X7l*{wAt8AFiYcW9PfAd_U{03#9(oYig@ zCry)}wc7W(Dni0>&YB^B@B;*7oon|uLflfyx>v$s_FXcK7ij==1PtzZYDaVnESpgr zuD=~`e%&1XOp#24pl5Rv>jp!cObG3ega#fw8HP^;WapJ!qOR4l^lpsn7B76ckPi`h zdlQ6gJavc|u~BKOpNPkSp(0hts89CW0mv zbl@=d_Q&ZpW}@9j`V>$sQawcX0{s6ObI??FXT$>~C&h;TX$*m*k!9nhwXA4l_2QT$}xWhmE+2B6bDa5t* zJH&!Btr+LU+ePsbU+U1FPK(ekwQw(H?4SYmTd8qjkx^{Iv|xaBxA3A_E=~dMY(3(z zeOY?JRrtSaz&{uzpR4E&ZT2IM`VYP>hxT~Xppdz|d{?f*5oMhlhD-U>NxN|$S@anr zQ%Qs$uU_t07pY_rp%0JyZyIf`v%75;au9tBR`355P#%YZk2HtU=EB2^9P1&~Q5$_J zir|un++Ou=Eb8-mi9fLhWjd{fEtbmX%Jtse5*p1{8);6^r}5Z(SoZSU54TGMMOgZ; z$J0FigW)U!idN)N2K^l*84vr7C%V*QLFSq*_ybu#?i4?9(_L?dv3mnDe`L>;@higx z9E7;2LO60#!zYs#dcm9cJVg{5#Dsaobq*O|ZzOyt!Ml9PK#b+-2Hc_@yG%C$@25h^ zp%GGD=sWc25M-6?rc;o`jl%WG?~;xW&XYj-Qk~h%v{+gqhKfGn%(BH+Fs4D;g@tQg zHnLt_-prqvjLQf*RW3u0GFd(9$uI5q2;T8L0H9S0DOG*RlbpkR)q!;w`k4KSCCT5> zV&UWpkFFpFf03fO$xnsuWVHLLQhcDbg`o;2o_UexISiuj`C|U+WWD0}nL0VFPt;}c zjjH$EZa57S?@DMeDRR-&Dsq`#@v8RGs~99wC7(=K26W&rqc*ue*DV}IQ`NdGsW2|+ zI>*s!izg?=fYijDei6=9W#4Lp8lEf&%3UhuAPz^~mNfRJKp1hXeh;u?7#_`C2 z>}W`iT&Jyb3DkLoo_~@8;Vu+7I#8>OQJ{08yJcfDHPCqkt*>c#ARi4=x5LDuFFB_5 z&0j86zBOqvkr&h19_h?ym&NR|nA$5;SUFSs*u2%(nm=HPF#!r3#DwYl$;jqYY(Y%1b=s44n? zZ!OMN^}J^OK>lUHsL~keXv$}CNnrW|xvr9)esDywc28%i!2G%A(i6{-H0hMXT~!+&Kp< z(St*wHLf$sp3d!vev2FmhJ%f6rqd`GqwG>SS$GW}$#|QU{9N^v8zzN}5iH^umzJeY zyL@$Y^l%t0yV=8p=!b{Hyndmhc%J_kf!x@C2JUkKYC#Q9vxKayekzl`5aESrejKdk z0bcz(NxTLBiwwy9-*Ds1-0c5b8E{%hyKYm`$?soz+~z$98PdDB8}#o0SQb{^YGvQhIdd5yB4Oruv!Z{2oZ6Sit)7a!#ruLC_w_QiC`RX5dp zAAEiFRBW;*J&9gBC-~TI!cR8CYsT-7^7cy#B|9%>EOIctE~hyYF?B1O4vfQ{z2*cu z`mpmi%;1?yJ8!dVlq?-sw!?p1bPs;hp6QO+#|>w)Egs5<^V}@zWL8+O8Evk1RUW!I zPMo!sfu-}MI}{}4-aKKw`t9D{IB)VDic-j`Kf5}g2p`c-3#(unzpy)J!oYngXSZeV zpYQ7RJExz(b04Uyyw$gGNb3|rfi=rotPylU#@lZuPY!_ zK0`Ayb?ny!{rzW=f=+DFOuHmfQEFR`OUvIl{1bju!H|c{%+$d?E^p3A_x$eoWyohJ zU~;%%vk~kcfz(kC%9F4`yj%CY3Lf&MY0dedMd03)qNmcUd+v_RC_iCL!Aqd!irFfn z5m#3eM*(!V?v@VQ{ZhCaCeCP2z5`TwRlH(rt002E&{|s+=(6f7r__QRxR<-H4TC>R ziP~d}(s*mG(=U^xC!TJB#VTs2f4Et`b@CXqmiJbh4nxUHeHr2i6298$e`e8mLj{&A z;3}}>v+{6`6HC|&&y;a))Zw{!G9kL%XWkZ1Fc(J?I_a;|P#PEDmywcToz8_UwTL{FzGJN8vT2zNf)vwk zD~VJs1|jWdt5xHdzkXXi3_SqrG*3voq%^Tx7%lXV6MZr4uIch{&-QKf6PI>g(Jvh! zuWEW9uaJkUe@vw@+%B%52mhn}FKnb)n?1jUZ$D@`rv7fQHMI^WoxYN?Br*lx10YaV z5IJ^Xr#yEaPqunhYbnLLbk+Bw_Lwy;onG4sHo;2X;#;v30Smd2YeM7gYEtDGQ+Q&T z2rkpW3)&{RUuuon$*pE6c{FESTSOC!&LW>}d5v)J^(@4wSK_JjTI5yx7@_1!X#YAghMpkcgL z!kfgyn*LT^eYzr>Ah05Cx1_L-=n7?yPQLFuh;@0WBl&CZ$%osqrS&lA+0{S77x#^b zg%wD&*C79uxE-k>Z{YODJ&z^VJyFfzVZ(74+M+^L(pHh){L2^835%(cM3`G!mos{_Urihit$T0JI1#nmvc&gH=TJpsvp&YDhSW! znq|11Ejh~{KWS(DoUDa{wS+1dm=$q;Lz6{)2}r_?O%!zZ1F3;nQ+j}k`VEh-g|)V=%Y#ai#)3ph$SSk6lQ zmGl*$XEQbsm<4sxy=>C!T+&fyzvt-{LwQ-jX0$4uG)5c{<>v0dd?%$Z1)XNL)PD(A z;Y@T>;1`>t3^sNg!Ou|;8yhge9v6l3Pl9JfZ-d^bdHYdqU{+nlnPLqK2&083FnrFJ zn8WkqmB>g?>JBnavb0c=3K&`)G9GBXhJMF1!VikRC~)Nc_cVf8S@ zGf>+-C|i}IvRZlWrll`&xvYM=$qM-Ws1xUDL#YT zd*qxj_VEtiTix`Y28qYpLnh#q;2(ltQjeqV_^rSHiR6NDPUEyGsi=AYb&^%;8kqM* zEx^b!e4r7EbEsNx4k;G!Qt4KWy?8fPAZzgk`LwWO$i%9VI$gaWBurY8j^l`$_;#Ju zKkiQGgWsbArYU%&51;-4ZPRZ?da5m|$HOe9j)YEP6wJ;p6*_cL2x^+dZwHOo?sP)I zoAIyznApnDzLywZ8%Gm``^X)C3r;uO3>d7aZ)`ufzb{`~0!QOD`+IR#NsQ5}V zng%sgPW)`9GQlmSPW}v5e^8^Glx7973BN>Sr6VnHn84#f?B{2CgRF?Caj2cqQs)^?_^0XCr1ArYHDYy&Sr>S(MW{B-*IVrl2tu-A@ z-#y^K-6#mm*OO$xck#XoUB4L;$_r_z#%MoVdbWgOH<^WY^h@#x)6ZSQ&7#w4C7$#z zqdnIOlvoIV!KLo@6Bvg$Me=MbnhyxNcsP&9X;dnYZiC%$6^V(Z>qrI`ygWuIU{_M% zx1Kq#jQyd{fvRtuQjhPlKpRH5n6m^2y1!)r_Xxu5VDf%pjhiZe*t~NjD~B(8x0gls z&FGnQL<65O!#RK$p!*c)Js z@IXa~8t4-KtWDk_8_2KwjTPv4E zzaI#AQlcs)I0irqGOD+=FV@_7{^?^2Q2o>eLkn3sU4+`@VJ4J0H!3PQ3+X5`FubRn zac1Vh#PAROM1rM7_ne=RI6rBI1ia+CI&lxbpkbdv2tO^mt#vcDWOgX+m%Sn6f}uT? zKu|JckbtAPS|mJMjWrtxj|&7^aann(D+90x0M`~?C}7WmK6$x~{fTP19keca4oW`UWOD~1vf4)VsiYt zAg-H4QUh6mA#{eW;xh2k_gUdXHv^qYSd5E2b=VgI*$8eeUKP@o!xs2kXITL1cL9+f z>2&A4qv-U9!Th{C3)9LmtZ+|bIHaKdO(kEruIki195sP@66!o~Ks)MHlRbu7dS>~C zU*DBJl3L0$@TlTZYD0G|#dvzrxmaenix7T>H-Ag!arLtfzeNTD7)ysNzg}gdjrs?$q z=gSH`g%#B-^^SDb7?&ge<@CqE7C0DkUS^y1s%O`W@YxcXJ`z2HpFheec0mPPeX_Od zvq0`*-ASz%LI5aRJ=3t6nHf5`%SP7`(bsQW?JQmg=5@WuUBXP^(9~A!_p#+4n={~m zG&whVaF}Sfxlma3pAlk7a+Pc>1%_jMvGVg0GIKpXqoJc@pfY{j2>R4H@tL&|tkCTr zCCpJ$H4p9w)P{00KA;KCoQwGDEcI+ow}DDnp7oOocPNz;thblydS={|q)@jxa)=de zdj}m+3Z}BEP@JZqgNNE(OIVhQ<+IqVlHP`OO#$})QiGQ#PgMg=+64@zn7)rBiPdU= zj#g|El2mWd*hS?(4TlT9gS|eq5R6<>8o8DepCSH1Az^XpwBkMY4J3Y<#!BGyi^Nha z_ctS#K5mbx0U|-bScpngKRm4JM#mGJXsK3L`-yv2bEkr));8?c3@Moa!$j`))rK zpH(_3FB)tl<FF6?7WS_)O(I zL{UdwqktrJukx8dO>PYIbr9n*^7cfy)2@zPkhY$DJMQ@rYY43HC^CTSve-EJ%>s&e zvR~YKu)`sJPCmB z0B$v(aL`u(emvElImJC9@;C!cQo$}{XS#J-j$8GjGnGuz7(pJ`!0!3fK3X>><7S2G z7Lhd9k<4^XNvI|gq?EnrRGRk*T)vX#Y8$YYN*_twgMO2WhhR*2n^j*dUYsk(3~gXt zf&>L-h}3L*7zGI=LK9=n$=(5V;V<CBPSK6TQHd}#I){bQ}T zG{t!bqv+j3!+84x!XfBm*`BHQcwj9}W5>?%W(%0mhfc^*LpS~?S&SG57fuq7;v&@0 zL8CE|YmfPBb+|C&?=yQIWThYn1Zd%A{NTYsmND8(Wy}TFQpDBuRf8ae+zK4|h!}Im z17VTG0k9`sS@R1xxA;EN1Clm)o}Vu%6oiaiui$l(he8CEGNUSd;RJVv+s@i8TlzDs z?i?$q91nw$yxkg-TwD5@kn}}zhZqQ3x^DS9?^YJ(7LG$u#A5AEw9tr}VvC|0MAIJ0 z31d+96q*nOFF(y_|MF>kTb(1GzP!+oN)<=a|6^NAigot$=LRTYh9#QaBKg6b;&%>E zY^~DMgSBTq#^$*z6;*k8asgbbsS79Y7(VP~em5f|sq@=KYH(JLMxPl4r#wmfv>KDP2?WItC z1kO;(_*ngdWd`O$m$Wml z1e0081IP5>Ip#8V8?OHrV+QP;66}wc>=FeN>8eC+%C=pTfd0IUD(0%;ThB7>*>4su{JE$3iAH}LAunbbn(7$(p5cfn zLyH^_57%E~Q=^SvF+FyOfBUZo_Acc9{8@K+oHfb_RG}H1o9VSZMeB+6v|BV8eo`8e zF6^6P?&OpGcD9N1^=~5VS8fMVJmaC`?r%eBf9HX^7at#%0kuwFfwV5#%H@kuk_qC( z5Lf9BDnMKlw@`BBCF&|^UD^F$4pr0k5tqar-kb93%^IeXOYwtJI=C-LX1|z z;Y9D*%O#k;Dzv_YV{Y_&-vkS3sT}@OH)Lhz`Y-lDF7E#|$>d5$J9&%4&2P0XqwP^; ziR~KX*tPYK)TPc7Ntaq9@>6M4*2z@!avQ}uYt|=_`xJy6lw)nND7D#IT}svJ2l#>0 zHS`OJo2&b9Ex>vY6dJn&iR}7`c}j_~b@|;I+wN+2!&tc& zpeGd;tCGXy(+6iL`mz%$ul4P?)eSdf3tyKGFa8h1|)du$n^82ppS^aa- z9}vXoQZSI$!zGOBGhn!|K~i9~J0&24<7HhrP06`t1>aQC0h*5U5CqxVw(Ph#zxC;j z{m8|sFEaqz+x1pzw^^xa|I2sR;@51uJDLgn30;l`u_uFDDASP6k$wfHYP6}L)XV5o z#npKYlTI7J<|eg>5Lf%PcUSLW*iocAw5`&2!}QfPn5@VCsq3==G7iUJtrzu}F!CRG z3>RO%L&JT)4cNOJMvJPN`)ge^BEPtTQ?<PC{;!G+!K zE3|x@mAm@;GY`o1c5N=UR^p^ z#Q@(g)QsX9e@{7E6GLY!U-DLvB?A#B!Oum^e_7yru48a58A++tVb z3e=sOC9r`uQ)Rshx-5Gwa$@>7Rw*h}IH}QZ=Ie7_Y?g(f{xC6soq?f}mIoF{bE~}) zEfg4B-u2XUyq@zCytCrRGGs7(T6_&Ja-yh9L9HZ2D>IqN8j9WwDX@G& zfBw30G}vH{z+Ar(l z;SIwW2Yp2O3K|t`EcTHBK|L&DmL(5l`z3&+(0yUQub*i6DWS^;RyfOE62{_frIEU~ zBJ=$KT_}0|`(KTbWzhG6dlFDXr|m#nwmMcc&T8sWL(UG55(S^~05vKR{){eskt`ds zz20}Y?ZX}9nu19DaT0PeTi^b}&aPS4QJsPkg7>2QLr#*Xu}1*944RnoZdOjT0dZ}m z{X5Ad83R;eCG#6gbZpy}l7uslEneZMQkC;iSbi*W!8Z6S%5Fcdi^nOENILn{GUop< zb`H^*gzFZLZQHhO+crB+{-9&q9oroz9ox2T+cs{__@2QT)T$cPq}KYXYQ6j0dp~2H zd~Df_-G7nQ!srgc7}M}tUVVOnH33LzJ5TjtfMJd=7Tyvhml@J<-7V|e(B&vy=+&7} z1cR;V<`7i@NCV_z!$mUTgtX~2bkPju^Y1?`Cv^Z44Tv6#>RAG`usmgAGIE-t?rR$sjj%eoBBpquBbQw*Q2|Q&Ig(HeEGvrKwrOWq z`?dG$Kgxxr??GN+s;wnyG*jl4sSvqXz18i2n4A$pYb>$0#0gHQL4AhuI3kH(SVOE` z`nivnXEf#ar#|ne-l#BpcOYip-wFXKx@r~ZMa*dwHtkx+FP3)1LxU|0xJt=u#TCCX zz<3mW5Q8O8!;q3v zh#g5!?~J6q$pE}W7=8PnoBI7hE@Am3G7Gd0hNZ_cVNgrP~)^v137VfF! zvB2J5?4>cQ_V&Fl8J2Em$Gr;w>vY8slSEM>BZF-iV ziBInUmh^G)l&3LE6ATshj22ojx+4Me)m6-@HC6+kl1Ty;80()>A_-s>XVq&b{b8=5;?In5? zXHvi-nJxVJ!jGQDJ;w&px9Lf0&THK>2I7NRkxtOYDYVmNRAwf}=x8Fsrh?U!)Ag2e zK#;$oN%mp>PP$AICc;h)S7z>a{SG^gnqfVKU14N~I{?q`9foi|1MyKaNS=129Mu~{Ch zgv1MU8XoP<(i>xc1`Bx8jvu4&26iApr`1HJAmkZeD6-{O&8xwm+to}#CG&BaHMq9P zp?8$a6SIKxzo=}V(qM;kmpGrCv;SEW-aOeUNPS813O3~RB$3F~o(2-=9tWi;3@FrH z?j6-Z4$~8GV&-rQ0tSL(A}wP4Ol-??;901Al}mZ$M@KEUb$tiI z#Xty8@5g70qn|YIg0b=4;v+iX!61i4F7CG_|GL@W`)xx~Q;!5Yh zln|3pN{7K*cSIqE5=GB8Jug(;{N!Iiy%Ao>(04t5a0^vRXR>QQ!!^9a^E-Tja}9*J zy%tCBvYfvK!5TQmpCj2?Dk$e!G<{%_qRa5+KEVxeF?g70bN-B?;_{(>w%WBz-}>7g z=3HYTWD+=N{>EvM={0{7;Mt+_oVDhEj5moPVL%Dc?Rff&i|aj93nFDkUt9&iRTx5A z=0@<|2kTdEFn2YqfrlFx5eqXEFX%ccSH^&@1<{Zi26p)FmM6%dd%D19U%CgDelY%F zFfwn|u&~Ul6JrgO-d|}W#3%ubvG}`Z4fwO7NQD)Hgv$T=hX0&T4*7+ju+yDh-N$j( zfiO4Oj)^N`9;ilwW_&3SiGfTIzFE=J(+ewEe2ee-k4)s;_u&jMj>5rcVwh7~0Lw*s zprH%E!B}{PWcIQrx1JS|Z_pNZxUAs3q!@QLE zV3f%c{_=^>DtAbXwQe__H$9^Vvn*bzs$fOGGk zRM&FxPAwBK-iCijT(o@GND}m!x{*C_`*!Oe?KSm>@+javl|A1dfj20jYR2Sen$f#y*ygQck`-TtxeL&rh+##B5w z@J~R4({a+&k-}2Dk@(&WC6j>s;3Xrd0Lzv4Yl~4yAigH2hC;1LiDk~J}yM&3?GQ(P5`~iY!T_!H^PBzH@CZmm{ z<4V$i(Kl*f8RAcsxq}hELP2~zlO{Zky?5jA*Qy6=qRe@q!)K%6t#@20V>UREs-L(m zT{`b8s3T{#y5>F zmSt)(0@bah9)tyT`pY#ouALefYg&NLv71Mew!e^Y=E%{| zc7OCPfRyz^uK0YDI+B9DSrnh0Q%I&9A;pt!)#pT#NG+sepa%Whh2WzGUCUceAxW*j~g^VIg)?X+Ix(Zp28HXU>!s18P3jKi}K z2nO{gMQ+C9lk<7^f#q3%9xeU4jNZtm8UK2wkw#Ku_-3e>#&R{F7JsBEWr_t&k6rQkxew7|lVL14=R|0OHgha0Yh-+3R^ebRR@eNUq8T$H)Aen_m=ZJ~ z3l~y2C1z3yodmb)@ZL{ zsQM@BVVwxsXv|s-Uy-G9S#4TFk&yaI_FVr)>CW6vJ1l)4YYQW@zxdjRFG01Y6S-F; z=e;qsGU2YNTE$=6-rfZF#K$=A5zJqBjiO=KPRE`h2ZmFj;i*_dhX3GS`#yYH@kc9t zg$KCdcndYLaY5!;W%PcDX<3UI&9zWrV#hPED!~g^$YV&?Atz%gudLIUf&kQ`TT`(z zojt(C^owK>3sp$~nTRh)#J@@;Jyq;ikezrizt=I#Mps|9y^p}yCBZgaBbdy@s_81A z$g3Du*oTQ&l>&pL1T77(YY>Rs@GakMV zANm*vxOKGHudxi^kyak2sfSq3erhLVO+HA;LdLHjrecupZCOA99KS)jPED()}}t;wWa zk?6d7VcBD6-92fE+e1~^EY-KqQOUC%J5Kj7L*Q_8{cMpc@ee}z2fNj6O;5JDgCwup zZL~(%xFong#Gu>XgWsQj_Gekvc!h*=J1@WQ#Q7q^L8Ep2klcNB#_ZVG?ybDuyuwKCX32aPVYsl$@ofkEa~tAf2cs^t}^SCK6F=(RIR zcP$0$D0HUK7{_?I%pNbV2 zW#$b=-LTqM>-tar3@FgYp~p?YcVlm8k7zf&bdMvA_O&OGunA*8=+a}H-T9D>lvW$- zSW!;i8ij!Sf#6;|)-xx*N#gm9m+Iw5KW~SGtMYSECOmNIjYoGoHwTo_aD_E=NU$hO zZe!S4@mA&b`~qL3SO7>#D1DAQ%-5Lx1#AcO{)fD`du=%as4)?N1#oli@t_b|I~a>a|!w4xHBccDMDp{>o5!+qW0T!lJSs zI#-o}{ZcKwCn5;YCAjJ+8uz$SBg1#Nd9FUYMKM7vm4v;hw!om~f!Tgv7wq31%Vvbv z90;XVx*w)-TD}X&tx1)EI3U6x3$ia$UO_z@a8%u$WEyi?^H5I&re$}_z#$F1)oALr zz+;*W+)3xc?O2G&=_@LYJJ^YlarFe9U|~x1>g!S5p+1IQL)r#ajE^-MTJq2c5I372 z87L}=koVk1L_7;cL?a`i14cX!Tp($w>wcDmfoaM~)LTHCqDq5{>^s;H22jEn`$213 z&yZc63Ro5Qw9Kiis>k!|Fmd`Hc4+uW;Vo8_7u9b+KC$@j=sm$mYtT&$hLG!kV;x1gbj68^IP!J6ql*V1U*+7 z1mT-KbpAQmZ_BjReY2|ke70eM$QNx&k{Setzn080`zh8x&MV}6{k*@=-Z|}6i`4TY zC*Rj&#`8-#L+DkDE{{Ha?`7|rI#nCBrOx*A&mHaxv9A@l@?^de zRxggKufOq&hy7lU_9>FS_R;0kq$sQ5;ctYeoH;GB)UB~0FHUInk$o1BRZceZ7kFQp?G?K>S4^!<3Tj$d6^cW^ruX1t$$ z%=~qt*wv}bfNfrWm9jLkH2$03S4m@(X$g}0=?jA*7`$c7IR)XkWA$j%$>1c^qpbPp z%;%agR7y~P0APR<=J3JGwOD%*j1-)2iRVmv^IL|oc;fG}ju~pQ6qB4)qG^(JgFI|rD4Z`PX`Ot$Mv*I5fz*8^h*ME< z9j%5FZCk321BPkWK?8r}^0m-SB+DxnaW1elRo78vUtfItT$$??xiU~$=IG6451FZW zR8d$+!ekW9q)^S0HAd<$^(fC_%LQILGujY^C~uS5lGLj6!>8zjMBQnqLoZg~7+AY=$0|rbY&^Pp@{udgk*b+=YKDo9ia4iT z-Pw0=*rZ@!m?mnK`nQPTKYGYIUCHlF1DvSCHy*{s31SC_eL1y*C-OJVGWIL-w|=x@ znywp=2~0izSHBJ*Aa080aFLlE5E0UeA%A&4UZZ)SVb@J);{pDj@O!A10A}qJ5@e0F zK;pP1pw0pr?V`gf^2wu7eY{G?@^A=`>3x{=#EPpJIsAUC0{0Y#7B z>3_((0?XLmV4hw@%)w#i7#xq=A&o%(mY>F2$TsL;_C%;2HqslUy{fD;0z`zaQrJB0 zKY=W#Wg#dBu%e!S$suPUg&Hu(I%~Q9Uf1M91>e&_H~blfpl)#a5(iCkALW2ZbcDpO zS0R!!g5#=9xhq1(HBoD@Pf&XGlVm$;8T>aFWkP_-S$)J6Dk_1%0YTH3_Ou6d`a0QETE??2g}A&4HlW2f~ZKl@~X zkJZi3V0UX`@@vCY;U_?KyuibnmwpkcJR}bGFt@DMFNryDIDOImW*vDCLosr{y|GUj zulTZMujd|PNb_XM1-$;5+zDCOY6sm}uq^dr~i!@Jk-+y5f7DZ6BEgQAec)Z*4E+&t1`aB&Ja+ zW@z^p#v2!lflvJ_?!O+7%Uw8TJgrB!{c_?Vht>}&iE$Q4gvqiuEyrHeJpMT49@67F|X_%Uv2J)SaFjpu-N`1}^Tax-ywb znefOb!_A8_TFJMPf#_L-yfWR{!n-O4;$_Pb$*%B<_9XQxIG0Hcop<~2>f@g7z~|FR zCx3Tl15z|J8p<<$4zwA+F2R7@a*SaLl2#&jki4=XYxF;x3VKQ)14D*rSG*W=;eV%& z*O%(Cinz#U@y3zxGr1mY4l8~%2#wj}G%h!n0gOm)O6w69n8bYhz%Z!t4`~?wf{T>P zBBJ}Jg?iSP(U(rjNf1CUQo9?`gA2TkFk3J;y55QT4JPqYVhK~Q6~k6QCrUw47*%tc zAe!gAB`xhs@Q|DT-14)5<#R*eMKCv_r0D$mHE)ecLQMvZ2BDtds|?=is#VulJHxgK zoAmsZUnWU{zhM8au-40VFoC6XIxYFlGv>oqRMtl$G2po4gpad(^h|bMyw^Ugc(XJn zCgBh1bMi?-!0ai_gzn)GZRQD*`WgC`$7O;rRR7Ii)>desmvqEeY;v!$TR<_owmY zw)hFbYZip|XDGo)UhYSTP!OJ>q+Xn*h#sKCO%%&JvCg=^S2p;7H4hU{Y%51N`hWcNs2#S9=a&+sW^5uHCQJsbFV% z^;@~BX!{)XM~6eU^VC`?qOX<$$SWBq_!si#f>><1VqN%6qswiV8#l{VBb-7o8nzzM zLeAda`e*;5FxcI(LYC@5Db22e($T@nvG^TG=TUpUGWAB7DM;C~0R`rnb5kPfhrJz` zF8~Da_zp`X?U8Crsv`D6LG@QgbRKC&g|#Qi!p3$tY81d02QNemhi_Jtlh%hr)v2TN z_@`AjkYV}R@FN#c>goF=cEn~W(DFTFsCnCK+vI2|&t{6rvlt=QZ%~0DSE#Gxw8t|Z zX_A1Mu8&Rza84YYd%6_754RzA7l>;6n3Z%K;T9~`!;*8V(Jh$)Bst+lY9fEov??>Y zY%mibbBT9atpD`9-zxgLVL;D;n6s55-kr7}SDoj`lCiEijiBh2{Dq=Q*SP{Q;9lbW zLx-))RouzC^Q*>+HamVl0Jy0_ZukViXHcXlM{hx)zJ@T`y(anBYJPen^Vq>)zy)A4u7AKaN%P0D_p_l z&I`K)Q#oLxSfdsGmsu3GQlY5_%sI#UAQKBj%E5ryoy?HgOTw=tDYqfFm>5AfQ1H6^ z)8@IoKf}dW&DRP-+t*}@g;8pTp&S9&@#vM|*^48A`{}`;ILl3204-dId~%4p7+?_5 z`TXkZYX|}fJ&100x6hX&pQI+gmukVaq&*Y`o&C(gX2A$_{E?x|N}WPt zqxNcU9DV2Ic*w+wOg_^C3Vo8Vl?jXtyq5NpD9Y9>#I#i zWCoFe0}2ah!h^plez*b+FZPdMVoC;`bV4k16$3yrL0eWe0XbKT$0vn7EBmD4sqfqV}>S<|r{YS8eVe+My(vQfjh~Zai+6F}0cvuSrRdXt7K)U-@C9CBH4xs)i zNm;N@IEdm9>iPx(uJRz|12Q|Gt}k+b*4>AR$ZOVN8Bn`QO!q>lRKT37DO*K0KwKkI zBRVDXfq@BcSk286$LQqS_YfLqXh#N>f8!)=fE5zCtX zJ)yNle1pj($Bfdc5g-Wywlg$2LIiH08=(+_s~(YMo6azY(=2MraOSV8u!wM};kT;V z(L7xMM(`pA{--K`{qr82EJo%9sDg@T!5EH64`2dRINwgzgRK=RjIXTjqN*tbo#h72 zW0^M5ybUP@{|$yEP<42aU7g>tRiyk8sB7NsitGK(L^;}TBrE-GrR}Ya(jZg+8oxsW zeYV7{q^l=39Z<}Qu)C30?8YUhxRVc}2lb5xo1@88W5#E~I9HsUErPC_T*gMr7?}2; z@XyOkNTrs#A0!CqO;zTC0o9?c?tvgYiL`O8mHcrEQJ1+rQ=Hx(T$@SEJZ0f^CKXz-yZBKqN zS2TPpXOyw{%h$5=y%Hh!z3Jvh)!H1vs&kjO?*zo?>^M(tFo{&!Am+*SDr?tZ8a?cI z4?W%#?P@~LG@5nDozG^!!0?WSYz~z*nCPB0gd&41mX~X=YngGpat{rTFx_DS+{oTM z9`68nf^So zCTQPhm*SU}q3&m`fmsN9RNU#SH#Df9ED$9jl3LD<`k9sELKTGj;lE&*DspV3_Z{c{ z=+6t9;XJ|i;2Dnhu*Cx@V`YEo0Zj>KPTX-*v1+t3=d(=1p@TAN492DVa6focjMqc* z2;*a5^>I+56}!_V4!dhNlwJ^i927J^UQ{QBRU@I{e||}VydF638SPw>LiwF6ug&&9 z8K^p3J{VSm2Xnlq>b=>K@O0m)n>BUh;=(2I9l~3K~RMIoT_kuSH~Bol?l+ zzW!tnY9^kRZi#egQCyFZ5;6z^6t)$nrG7~U=BlP;wCxGkRk%QAHMYTv(lF5#ZGbvJ z=%oDhSgZ^aPRql}VuNr14ismKOmj2D4ZhoGU<2MtHx^e3<;49A!pi3Jp@*r^tyDjF zTun8u5v64E*Yx#u#**20%x}hzV5kG}9*J~wu(|LtjSOuq`p+enVBCH}=%2D2H9^_l zNj-CzahS8fP&6w5@tjcrg(BNpFe<_wbC_=FNIpb=0BC8HLdpmB)50C{dwOjPFA6JU zJ1ua2&N(I9%TL^U2(P3?ox!pCgJdDu(5$Id-qxOAjyPopbkNm5dv4{IZzc7%k;|w+ zJ;UL3N3<)Q>O5iSt_nFhuiQx6{!LUjO+UrAnrUPxE!~zmi$O09aV5^z-sI>#5X_BA zw&;hYy?FfZf>f#R#Ia2O09{~EPT>>Fxd%`}Utc7fqp(w2Pn*fIUGh#$0bi&My{}Uc zYImSu^cBQm*&};)h?|#f;EXFnvHv19vHq6=NH#9k|2g^n9|z}tQ?hTaVZKjY+gJ>e zTTj)6M#uTesDio8_lAoi zN4nkrzd;v_w$c;#KSjZb^XuJ&0N1{ zNmO>UB(2GO%w;(}eOTp*Z;g??;kTlCugHJa}3soNRFO^5T$ujqUj* z#5VQOx^9aKufui!UQsxO33dKw^tt@z(&5ca2AXu{{)$lBMYNv1F> zli-UZxAtwizCI)2-}{*Enu0vmb|6-TWK7#hY@925qz#M<-T{a2my7IrP4bnS3Dw>%^(&2!1=im1b3oOLf=@)uRcQ>DHl+=}wl4TP6JMzWb5Sy8a){X(u&*77 z-F;S)d#=P=b$lMs$IJh@+QiL4l>4Z+YMTgq8W>HwZZkBU(=>mXKkl>`*rjlR9XltH zcf2*XLQOn-4@2^A``DyK>>AW(CplpWC4#8++1$~~A%(_?SIYuKd5MMAcI%xqU*CSW zR{AT*Srvi{+y%Z(JMCL)IaHnSHPBzXs#k9tEVN?}VAZTQ88l$(;%&G)u^cRfS=TyL zn3rz8*qk!vK$>etZ4A2YsAIiyOn?w@39r0GY`&I<)rF`#bWJI5$WoJ>!B`X>2V`p1 zS7JP(NC$E%lw`5303nz0d`NxhNSH-vt1CAuffY|;V!Mtck_ zGOAI4Q<8{(njD@4@#@;{t!v7>?7C%iKMmyU@TSTrW!)-qCFTU?qyjXZDZ$`g1u4P8 zqJ)udbDh~Lf24Hr*Ma1wX8P-Ewf19h*{r6M8Fo{Np39@Fv2!MGZmnX>9 zm(qTcp9re>9lt6Z1|tAmTQ-SA-zj{o4f3kGzi=?tx402C_aR?)uWuYxjG(xAyv0*RR>A@yJ~80>ok0) zw7d@*ebTr-*4BL6=A6k^xZqafV(jVEX_jw<0j2AFT%>RK!@7kCT(@XUOKXs2yf|$!1sYP@fA~^*a7JIlGydGFQ?c|4kgi^6- zOuOykbJ7HWuvfX(@Mt}Z6(Q$35g+^q6$A#9Ig$$9vFa+{%C!1et3r3juu z!;u|o$&(7Et?;-T-9RC-VlP2;=D^>Nh zq7d!?p-3@r69FBPq;zq+u3I~;4JnjSuY@o1X!Asayao1`KUr9;ETu2s+|k}x80in- zQ436-mR`BNuqF*$v>tttX&I9a5`FW$4lHHE+d zv*}1AkvjXt#5Kp%{_8g!Zq>SoJ6BuU!UHzE&x%Xj1Jpz~MQjqbSt*D&MmWF#Po-O$ zf}U0XR22MH=M>;Lh%C7Lpd)C&as~n%>Z@kLjW80WbQd4ZYvf7bQ~^hP+KlO5(|Dm+ z_|gU37LZnkK_NcwAv1@JZ&u9QLwGx2RAa-mm73=Y}J`;Gp-J8FpetXI|XhtX(o;tC)fq&OqGkoq&Z9)ymTeP zdEN{?Yg|ub>*F79wP9s}WznttHTJG11pP(3Qp>URGg}>0l0R`^B7||!gfGUwQCa9= zb7AHiWZ8_ZtHYA8(o6S%(Bd;xb9!4q3epGOjFyqk8GS~JdUkl+>oZV=a=|Q8i6ZR| zOVH2h7_9uUtBa4}hU1ky7h_+bLKJugJfEwsoaPR*Y) zFXvm%=$C91e}m(MymD!VFC$0R2@%~C+T{(}^&d7~j9MR>|7fC6wO5QY2$H>Vy)zz8 zU+sFX+jqk_{Axe0_DRkDCMvbE3fga*t}| z{crfL7N54q0_$Rh^vL#jo9*i@Zq?od2}c~)ooL$n%jeX&-#5!w@Ncec<7tyq9!X?w zZ|kB7nh@^@G%rCGv5>PVnFtsya93I2y|n zW92Do=yGKb*tF%m2 z)nGPHumD7%K{Y=1Q-uC`-FQs@fMo?F%=*$kFVV35>S5NsQz7+izrewu6IzA4n>>dW zw-y_Ck|s*NMMrn}zpH0W?4X-|JCBb_Yksr_7=_*t{aOrSfJGa z>X^<8YrlY`A3ll)VMDClQ*30i0ABb?Es6t31>;x5VIR3RWl)|9wLR19opoZii8cQ^1O%LevIn{XR-qsd>6{>%NzJqd*7?ERPcDZvd+Ip?jH&{> zgbA=pJVa^yKmqp66_uww1v@Vqp3~3BwTC&B8)SNMVa8 ziI95bHu@l8#N5@C;h_vJO4BO@Bn?@;9zHdo=oWbF8LcGF?Fwb?^ zhY*}DaevGOlMd$;TiX@)2SV{~9snC)CC(&Zl*s2q9v*ji@x^Ta?)D#{Rt z%>=B)%e=_?1*?_N1bCrg_Q+>C&%nH~acU4IzN2oHad{DGDs2Ssu~IWDS1S(b1grW2 zh&bz%v6g`#3k&T9Nu5bJwS!1lRt-F9JQZ)<2D$y3Q-{9Cq-jktUn={!Acg`*7-n{? z7u8DiHMaS#a&ysLIM(1~pnw>pI(kS^FuCRWjWziG={7&_!U5c7e554t>-u&2LRq=( zVoSy(zJ8rqb`E>F$)T`v3qUKs|5%bmrA6s1B3|%HXn?xuRd)FCVaUur(Kd=mH;NnzBCA~=!U&Q1& zddX({;9{mI(uHD2p`H{ZonShI@&&s;<+=#H8do1x}iy7PwAe z(H<&qp(pphCaV+18IR3lydiNYH;NC&rpPvOgdut~W|AbIP_Wa|7I@IWHRL$c6y^$y zhlmSYtm32WD7^|U)gnttc(N{jJ>lp419boT3cEpxa&CV?&U8wf8;%5@mS2F1lC*wz z?Io=K)^^3+7+$pscJ4IcnYUjlV7uph zOnXfCe6ZB`_OZsP@`DQWvbNCa-^o=4RCax>vlmdUw*NY` z?-DpVR5Y$7UMuv?{o=FlXq|}>TE3@{{GP?C)^A z(MFlxf`H4RsXE(zcm9?X3&4KKKMb=@|8f&?)InnN2V`jPmVo|K!|tvuTu0p~APq&L z%fiyS8GM^cXq!edy~^EMo(lwsGX|SDLsttDS95?zkmWC|nA#gU6CHKLS!=V>gsQ z0aj)O>3blPS!a+T&3ncN;2KW_FR$Z+Af8h@W5*jqZ{l!OEMh8|P=RmH94(5Qu>95z zr->K;y3{rma-{G7vw}Prx`cq<2U%{d6cRgwBT(~S<5COU%NC9(hY}wmZVP{CdB?F6 zrxCYgooqR156dWuT^Y@y_r)b?oS#YVEG=PypG$G^gqdRz8#$gs8w6kRiUs~39g+x&pucLWIgO2@xXh9t`?168ul&+Yx@wn^9-B>e5SsbO{X&K? zn;ld-+7heZ@u{Hh)YlERkd+zFQ807FNI?xfFXE7g9!?-_c46+r*gTPLDM^D3`{qCLK5Z^Wo z&j3$Jg3Zp{dk2Q!QGM)eOP|p0F9!~MVSd1|H@VUOMKfb#`~UVVb|wzi|Ftb~P**px zaOC%oW~Qu2z*B%5&ncymLP{3m*4U)_(N>0YM*!j1n zU(t+0+CU*^+-*v_ZqqUKvdbfN^#1x9jjuj?4c#;K*yGIY{l5MBJLM8#=51I%1;f1d zUCw8U_n%LOF6iO>RlD2w>y;bf*5{dxg{!&F5zn@ddx5fE{F>AAZq2*E>*Y`H>*R}f zmlx9(#n+Vs;nzz=wa_}1+V>*HNVsFx|j&Mm9)>Y z5P4f4@acFJpB}Si5SF`+{_*1a{PdjHpGKixd>(!!g@j;%!j7t%e^g}3#pvY9^JUkG zm)mu1%;!MK+0gEFnP(jG&|QX2n2Yi|ai)=;mCUQO&s@JA3Q;Vsg+6Phjg^{pY!ii! zss0lgcIJm$%w8I;-AYsIXFi-SoWxD^ecW7f5ui`*;?}Rtu_L(jCUm`B1aeWPP0?bS z4Wd#1ppXcOr&SV8zU;S1hQ1iP*#9N+zj zj>~Q}5~*1RQ>w*n6QmGIxRARl`z5sxL$=}>nItYRSBGRm7@VEoaFHgaaEGesmsqYP z`gaZ=SO;d9WE1}Jci|$J=aRu_qb}ZJzkI}^9$ACpivaG0RL| z*H&7k(V-tEBlOCn%0$~o>8yWk8nTSz!YO|^Fo}IdSv~J#fc8VV4#I!8?SvKu1_Do# zDGjHt*I6As;;w_BSC;(q^Lx&_r(4ZyQYp)MoTEL+SrUY5oyHB)W}1FfbH+Xjqvds(mq+{CdY=eO8JCyI3|M)>; zHmGv!BFMSdY|jHR5=o^5P|O>G2#*L1OO4P{Wn_=@pE3?9US>ayPS-?Fkg@ONLMC4f z7u&R&V^#R#waBd{%H$$(E`Dl#lewtP(v6{6amcQeq=run=Yd%QfPJ5(Ie&Z^mLC*y zs|}N&zK9ctLg)efK0wG+*{Hj=<@1|CA%ot1`YxuEjU`pbA|Z&mS!ZWTvZ_5K(+1Qq?-g3Wr^XbSgQ&b3~97U;Vcr4Y$?45&-*EwDv`ok6#e z;E528z_}^X;(9T$vsE-)B_D?PIBJ&DmKw*=Rk;$(@wHomKkKV#f9g?H7 zqu2;+-iJ(oIH<9^vM=@}LMn|3TQgBMMLJ(wZSGm-1s^pF@dX zJsu?;vHoW5E{pZi&jnTpn!|f#PYVkJKkTn{Gh=(&Ov$oI#kfb%ns9(^=O_bhi4nOl zKy~$(%`w++D{?~&VNC1}q-n%hcDfA97-v7N#^DTI+#Sn@C_|R6wDdYt&~UeX!x8gW zFD6FxtUXqg7c`I-PARarOR43BfEPAJ*wBk#55<3eL5{#!2<7qS9COQ+>`qkJ< z!4akDN3xQ@Y%9DMq^gU!p)reEbnWzG8_#K5%FVdqnRze}L&^cnERGC{cKYbp9Qs&v4HxwJpuDc$x4RBZ`b6Sr@Y<$zK;+Rl02F}!gwHyp*}(_*$o7e7r4Y|G>*y?wjQB*m$MN1k8ZHKLdk07xB_klB>T{U zanQ}G+(RlMslP^ib-_gO*4*F$-eo@p!7LWVV;3(f_@Nn0E=D2*>>6H?5lKGvBp6<8 zt4%;eFJR;Ei~EC0X}a{EqL&HFEKkBIo1K(MN&Kpb22KP>&sM%yWcVl}=L*?hwh*a< za15gly;nU#aS*#*fqvKqfM!y3!4QCmXR_PvTxH4HV0UdiTYHPK$#<~=xT(u6?z zKxu!SPHpmxCd1U@+27J>S;gRw=_vykrDgA=YhDAJN^Hir&>XX;RMo4J-dL>^OtlDc z(Ri51{$){g<;@ooT#yS9UcnL-<5x8(QRU*ej_V*T=tiQ7Z}O05*n-yk`^C35qZR7D zU^X#9aXD)7=)(TOz}j`fZ;i)V&L5Lx3K5FTkPh18L1LD%`DM?yvkN# zvdYr5s2Nc|PYU(G*!=Df#U0Q8w+HDt2Srj#*XA3A1@2zpoaLxGRJXc*VaCv;tRw`C z06_9@)vY#gDS^PR*At^F;?6TO^iEIGNv@rRS&Nb}$*$EJ9Ut{gr)w>yArmwXo^^CAQGPuk#KXYyjBmi;K@xgBXnY9ICG;zA1^#Z?6hp3 z71$c%wl|U3NA-z)Bzp6v)7y78T3M@Y70T%aS$i{~0VXwjYjUbpP((O2pv%Lp8M^O9 zlmwlYwuCapSLGE;k&8Ru{qT%UXz%F6Q3VR)!WaF1^NJAeH(j{(NSDo5+EY!1DIkYfSyxu(B%u@QY zpSSDW&|qI@Li^&geCW9_6XN@P&W%OBHXL&RCx!lrPZy=lj2yQO4PW}!(++XJ7ut1J zZ#YLm73)YN0r`FJ3nE%9_+#1)J%9>4fnZETJ=PnsKa39&931Tw0SO77F-9n6vGgNM z;H42=UEPa_+ryL!F<^u!O>dhU^RBFg3PN*#jBC)r&fVm^%Hw=Ao6eBMS*c1vFAAS* z1CVYbU+DgUA^l3eN~LJ{Tvxcn$ol3KD+OC%cI$)qe1dhp`dc{Wi_msBlY8adi#v(v zqVB5RL^a#8!e3l*SjnG&p;>QNE%i*Vr(>n8r-YI`ihvusEbO4BcE5ipbv_gJ zc#Dju5Nf?rjE9=#!)n+=Mj2@;V%hPkC#8ZhV4sXRQ2;<9txZ2uSL3g$4y_N9X#CN3L22(FtJW>;B01( z6O3+h>m-rJg)bD}jbc>X;EMKsTCx8Wb;YN39;QE2K`1Nya|i8%==kEcg_;fxiCJye z$`c_F%|vh@42yir=}q~H~-@IyrCg6A+5-qX`410tfBPd;XdJy6CL7A{&MC%_H1 zXLI-z!qQ#|bz|ZJ$UBQlVZE$xjq6X`gH-yWzfRybuk{&PjmoxB2r^9Ih>Tp&TL}Kg z327c&br7VW)nfxu`i{mwia?Ut1s0WI+%&@l^RI7)C#&!0Dm}_tx(`eZ_jeVK)xI1O z*&%<5Xd+v5TP*SI^Y-hEpqmQnHBqAe%*?cpN>uNJi1}PH9|$zKHocFKMW5cm2U~|8~)GYXTwgAP#D0~~8 zDuT`mnnS#?;`AWxcpPpzW-dVGep88z?_BOq4O{YT$jxd7#;MS*8CZyiCT3rpddd{; zQ;n@KX`!TRvZ)i0XZe$gzOXM^ILX7_aHxv`dpilXB;1M};68MO15U9X#ifdX zyTdxD&TmLd2Is^x0>&IkpVKnSFy4=99F9g3VMKt-f%6;1<;xdUEBuXbkltb8R1Oxm ziU`HpafYesc$AvQY;xAToR&&-%V{ST?DpS2vjZ;J%0Ar~7^-*oHi`#+VF+kpPb!Y9 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 z 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

xNzqLW3+_Tual?fO|dPu^U3tE#4Ne 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%0A))mliL!?RN)A+pB_Z->;^G<~4!cQQ{Vuph) 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.0", +] + +[project.optional-dependencies] +dev = [ + "pytest>=8.0", + "rich>=13.0", +] + +[project.scripts] +crisis-node = "crisis.node:main" +crisis-demo = "crisis.demo:main" + +[build-system] +requires = ["setuptools>=68.0"] +build-backend = "setuptools.build_meta" + +[tool.pytest.ini_options] +testpaths = ["tests"] diff --git a/src/crisis/__init__.py b/src/crisis/__init__.py new file mode 100644 index 0000000..f56df7f --- /dev/null +++ b/src/crisis/__init__.py @@ -0,0 +1,21 @@ +""" +Crisis: Probabilistically Self Organizing Total Order in Unstructured P2P Networks + +A Python implementation of the Crisis protocol described by Mirco Richter (2019). + +The protocol achieves total order on messages in fully open, unstructured +Peer-to-Peer networks through virtual voting -- votes are never sent explicitly +but are deduced from the causal relationships between messages encoded in +Lamport graphs. + +Key components: + - crypto: Random oracle model (SHA-256 hash function) + - message: Message and Vertex data structures + - weight: Weight systems (PoW-based Sybil resistance) + - graph: Lamport graphs with integrity checking + - rounds: Virtual synchronous rounds + - voting: Safe voting patterns and virtual leader election (BA*) + - order: Total order via leader stream and topological sorting + - gossip: Push/pull gossip for member discovery and message dissemination + - node: Full Crisis node tying all components together +""" diff --git a/src/crisis/crypto.py b/src/crisis/crypto.py new file mode 100644 index 0000000..55897f2 --- /dev/null +++ b/src/crisis/crypto.py @@ -0,0 +1,104 @@ +""" +Random Oracle Model (Section 2.1) + +We work in the random oracle model, assuming the existence of a cryptographic +hash function that behaves like a random oracle: + + H : {0,1}* -> {0,1}^p (Eq. 1) + +We use SHA-256 as our concrete instantiation. H is assumed to be collision-, +preimage-, and second-preimage-resistant. + +We call H(b) the *digest* of the binary string b. +""" + +import hashlib +from typing import Union + +# The digest length in bytes (SHA-256 produces 32 bytes = 256 bits). +DIGEST_LENGTH = 32 + + +def digest(data: Union[bytes, bytearray]) -> bytes: + """Compute the SHA-256 digest of arbitrary binary data. + + This is the core random oracle H used throughout the protocol. + Every reference to "the digest of" a message or byte string in the + paper maps to this function. + + Returns: + 32-byte digest (256 bits). + """ + return hashlib.sha256(data).digest() + + +def digest_hex(data: Union[bytes, bytearray]) -> str: + """Convenience: return the digest as a hex string for display.""" + return digest(data).hex() + + +def verify_digest(data: bytes, expected: bytes) -> bool: + """Check that H(data) equals the expected digest.""" + return digest(data) == expected + + +# --------------------------------------------------------------------------- +# Least significant bit helper (used in the virtual coin flip, Algorithm 7) +# --------------------------------------------------------------------------- + +def least_significant_bit(h: bytes) -> int: + """Return the least significant bit of a hash value. + + Used in Algorithm 7 (virtual leader election) for the "genuine coin flip" + stage, where the LSB of H(v_hat.m) determines the binary vote. + + The paper defines: + b_coin := lsb(H(x.m)) for max weight x in S + """ + return h[-1] & 1 + + +# --------------------------------------------------------------------------- +# Proof-of-Work helpers (used by the weight system, Section 3.1.1) +# --------------------------------------------------------------------------- + +def count_leading_zero_bits(h: bytes) -> int: + """Count the number of leading zero bits in a hash value. + + This is the standard measure of proof-of-work difficulty: a hash with + k leading zero bits required roughly 2^k hash evaluations to find. + """ + count = 0 + for byte in h: + if byte == 0: + count += 8 + else: + # Count leading zeros in this byte + count += (byte ^ 0xFF).bit_length() - (255 - byte).bit_length() + # Simpler: count leading zeros via bit tricks + for bit_pos in range(7, -1, -1): + if byte & (1 << bit_pos): + return count + count += 1 + break + return count + + +def count_leading_zero_bits(h: bytes) -> int: + """Count the number of leading zero bits in a hash value. + + A hash with k leading zero bits required roughly 2^k evaluations to find. + Used by the PoW weight function to assign weight to messages. + """ + count = 0 + for byte in h: + if byte == 0: + count += 8 + continue + # Count leading zeros in this non-zero byte + for bit_pos in range(7, -1, -1): + if byte & (1 << bit_pos): + return count + count += 1 + break + return count diff --git a/src/crisis/demo.py b/src/crisis/demo.py new file mode 100644 index 0000000..66f7da1 --- /dev/null +++ b/src/crisis/demo.py @@ -0,0 +1,356 @@ +""" +Demonstration / Simulation Harness + +This module provides a deterministic, single-process simulation of the Crisis +protocol with N virtual nodes. It is designed as the foundation for a lecture +series: each phase of the protocol can be observed step by step. + +The simulation bypasses the network layer entirely -- messages are delivered +directly between in-memory Lamport graphs. This makes the consensus mechanism +visible without network noise. + +Usage: + python -m crisis.demo # Run the full demo + python -m crisis.demo --nodes 5 # 5 honest nodes + python -m crisis.demo --byzantine 1 # 1 byzantine node + python -m crisis.demo --rounds 10 # Run for 10 message rounds +""" + +from __future__ import annotations + +import os +import random +import time +from dataclasses import dataclass, field +from typing import Optional + +from crisis.crypto import digest +from crisis.graph import LamportGraph +from crisis.message import Message, Vertex, ID_LENGTH, NONCE_LENGTH +from crisis.order import LeaderStream, compute_order +from crisis.rounds import compute_rounds, max_round, last_vertices_in_round +from crisis.voting import compute_safe_voting_pattern, compute_virtual_leader_election +from crisis.weight import ProofOfWorkWeight, DifficultyOracle + + +# --------------------------------------------------------------------------- +# Simulated Node +# --------------------------------------------------------------------------- + +@dataclass +class SimulatedNode: + """A simulated Crisis node running in-memory. + + Each node has its own Lamport graph and process id. Messages are + exchanged by directly sharing Message objects (no serialization needed). + """ + name: str + process_id: bytes + graph: LamportGraph + leader_stream: LeaderStream = field(default_factory=LeaderStream) + is_byzantine: bool = False + messages_created: int = 0 + + def generate_message(self, payload: str) -> Message: + """Generate a new message from this node.""" + self.messages_created += 1 + return self.graph.generate_message( + self.process_id, + payload.encode(), + ) + + +# --------------------------------------------------------------------------- +# Simulation Engine +# --------------------------------------------------------------------------- + +class Simulation: + """Deterministic simulation of N Crisis nodes. + + Runs the protocol in lock-step rounds: + 1. Each node generates a message + 2. Messages are gossiped (delivered to all nodes) + 3. Consensus is computed on each node + 4. State is displayed + + This allows observing how the Lamport graph grows, rounds emerge, + and total order converges. + """ + + def __init__(self, num_honest: int = 3, num_byzantine: int = 0, + pow_zeros: int = 0, difficulty: int = 2, + connectivity_k: int = 1, seed: int = 42): + self.difficulty_oracle = DifficultyOracle(constant_difficulty=difficulty) + self.connectivity_k = connectivity_k + self.weight_system = ProofOfWorkWeight(min_leading_zeros=pow_zeros) + self.seed = seed + random.seed(seed) + + # Create nodes + self.nodes: list[SimulatedNode] = [] + for i in range(num_honest): + name = f"honest-{i}" + pid = digest(name.encode())[:ID_LENGTH] + graph = LamportGraph(weight_system=self.weight_system) + self.nodes.append(SimulatedNode( + name=name, process_id=pid, graph=graph + )) + + for i in range(num_byzantine): + name = f"byzantine-{i}" + pid = digest(name.encode())[:ID_LENGTH] + graph = LamportGraph(weight_system=self.weight_system) + self.nodes.append(SimulatedNode( + name=name, process_id=pid, graph=graph, is_byzantine=True + )) + + self.step_count = 0 + self.all_messages: list[Message] = [] + + def step(self) -> dict: + """Execute one simulation step. + + Returns a dict with step results for display. + """ + self.step_count += 1 + step_results = { + "step": self.step_count, + "new_messages": [], + "node_states": [], + } + + # Phase 1: Each node generates a message + new_messages: list[tuple[SimulatedNode, Message]] = [] + for node in self.nodes: + if node.is_byzantine: + msg = self._byzantine_message(node) + else: + payload = f"step-{self.step_count}-{node.name}" + msg = node.generate_message(payload) + + if msg is not None: + new_messages.append((node, msg)) + step_results["new_messages"].append({ + "from": node.name, + "digest": msg.compute_digest().hex()[:12], + "weight": self.weight_system.weight(msg), + "payload": msg.payload.decode(errors="replace"), + }) + + # Phase 2: Gossip -- deliver all messages to all nodes + for source_node, msg in new_messages: + self.all_messages.append(msg) + for target_node in self.nodes: + # Deliver to all nodes (including source, for consistency) + target_node.graph.extend(msg) + + # Also re-deliver older messages that nodes might be missing + # (simulates pull gossip catching up) + for msg in self.all_messages: + for node in self.nodes: + node.graph.extend(msg) # extend() is idempotent (integrity check) + + # Phase 3: Compute consensus on each node + for node in self.nodes: + compute_rounds(node.graph, self.difficulty_oracle, self.connectivity_k) + + for vertex in node.graph.all_vertices(): + if vertex.is_last: + compute_safe_voting_pattern( + vertex, node.graph, self.difficulty_oracle, + self.connectivity_k + ) + + leader_dict: dict[int, list[tuple[int, Message]]] = {} + for vertex in node.graph.all_vertices(): + if vertex.svp: + compute_virtual_leader_election( + vertex, node.graph, self.difficulty_oracle, + self.connectivity_k, leader_dict + ) + + for round_num, entries in leader_dict.items(): + for deciding_round, leader_msg in entries: + node.leader_stream.update(round_num, deciding_round, leader_msg) + + ordered = compute_order(node.graph, node.leader_stream) + + mr = max_round(node.graph) + step_results["node_states"].append({ + "name": node.name, + "vertices": node.graph.vertex_count(), + "max_round": mr, + "leaders": len(node.leader_stream.leaders), + "ordered": len(ordered), + "is_byzantine": node.is_byzantine, + }) + + return step_results + + def _byzantine_message(self, node: SimulatedNode) -> Optional[Message]: + """Generate a byzantine message. + + Byzantine nodes can exhibit several faulty behaviors: + - Mutations: same id, forking the causal chain + - Strategic distribution: different messages to different peers + - Time travel: referencing old rounds + + For this demo, we generate a message with a random payload that + may not reference the latest same-id message (creating a mutation). + """ + payload = f"byz-{self.step_count}-{node.name}-{random.randint(0, 999)}" + + # 50% chance of creating a mutation (not referencing last same-id vertex) + if random.random() < 0.5 and node.graph.vertex_count() > 0: + # Pick random digests instead of following the chain + available = list(node.graph.vertices.keys()) + num_refs = min(random.randint(1, 3), len(available)) + digests = tuple(random.sample(available, num_refs)) + nonce = os.urandom(NONCE_LENGTH) + return Message( + nonce=nonce, id=node.process_id, + digests=digests, payload=payload.encode() + ) + else: + return node.generate_message(payload) + + def run(self, num_steps: int = 10, verbose: bool = True) -> list[dict]: + """Run the simulation for a number of steps.""" + results = [] + for _ in range(num_steps): + result = self.step() + results.append(result) + if verbose: + _print_step(result) + + if verbose: + _print_convergence_summary(self) + + return results + + +# --------------------------------------------------------------------------- +# Display functions +# --------------------------------------------------------------------------- + +def _print_step(result: dict) -> None: + """Print the results of a simulation step.""" + print(f"\n{'='*70}") + print(f" Step {result['step']}") + print(f"{'='*70}") + + print(f"\n New messages:") + for msg in result["new_messages"]: + print(f" {msg['from']:>15s} -> {msg['digest']} " + f"w={msg['weight']} {msg['payload'][:40]}") + + print(f"\n Node states:") + print(f" {'Name':>15s} {'Vertices':>8s} {'Round':>5s} " + f"{'Leaders':>7s} {'Ordered':>7s}") + print(f" {'-'*15} {'-'*8} {'-'*5} {'-'*7} {'-'*7}") + for ns in result["node_states"]: + byz = " [BYZ]" if ns["is_byzantine"] else "" + print(f" {ns['name']:>15s} {ns['vertices']:>8d} " + f"{ns['max_round']:>5d} {ns['leaders']:>7d} " + f"{ns['ordered']:>7d}{byz}") + + +def _print_convergence_summary(sim: Simulation) -> None: + """Print a summary showing whether honest nodes have converged.""" + print(f"\n{'='*70}") + print(f" Convergence Summary") + print(f"{'='*70}") + + honest_nodes = [n for n in sim.nodes if not n.is_byzantine] + + # Check if all honest nodes have the same total order + orders = [] + for node in honest_nodes: + ordered = compute_order(node.graph, node.leader_stream) + order_digests = [v.message_digest.hex()[:12] for v in ordered] + orders.append(order_digests) + + if len(orders) >= 2: + # Compare pairwise + all_agree = all(o == orders[0] for o in orders[1:]) + if all_agree: + print(f"\n All {len(honest_nodes)} honest nodes AGREE " + f"on total order ({len(orders[0])} messages)") + else: + print(f"\n Honest nodes have DIVERGENT total orders " + f"(convergence in progress)") + for i, (node, order) in enumerate(zip(honest_nodes, orders)): + print(f" {node.name}: {len(order)} ordered messages") + + # Show the total order from the first honest node + if orders and orders[0]: + print(f"\n Total order (from {honest_nodes[0].name}):") + first_node = honest_nodes[0] + ordered = compute_order(first_node.graph, first_node.leader_stream) + for v in ordered[:20]: # Show first 20 + print(f" pos={v.total_position:>3d} " + f"hash={v.message_digest.hex()[:12]} " + f"r={v.round} " + f"payload={v.payload.decode(errors='replace')[:40]}") + if len(ordered) > 20: + print(f" ... and {len(ordered) - 20} more") + + # Show leader stream + if honest_nodes: + ls = honest_nodes[0].leader_stream + if ls.leaders: + print(f"\n Leader stream ({honest_nodes[0].name}):") + for round_num, (dec_round, msg) in sorted(ls.leaders.items()): + print(f" round {round_num}: leader={msg.compute_digest().hex()[:12]} " + f"decided_in_round={dec_round}") + + print() + + +# --------------------------------------------------------------------------- +# CLI entry point +# --------------------------------------------------------------------------- + +def main(): + import argparse + + parser = argparse.ArgumentParser( + description="Crisis Protocol Simulation", + epilog="Demonstrates probabilistic total order convergence" + ) + parser.add_argument("--nodes", type=int, default=3, + help="Number of honest nodes (default: 3)") + parser.add_argument("--byzantine", type=int, default=0, + help="Number of byzantine nodes (default: 0)") + parser.add_argument("--steps", type=int, default=10, + help="Number of simulation steps (default: 10)") + parser.add_argument("--pow-zeros", type=int, default=0, + help="Min PoW leading zeros (default: 0 = no PoW)") + parser.add_argument("--difficulty", type=int, default=2, + help="Difficulty oracle constant (default: 2)") + parser.add_argument("--seed", type=int, default=42, + help="Random seed for reproducibility (default: 42)") + + args = parser.parse_args() + + print(f"Crisis Protocol Simulation") + print(f" Honest nodes: {args.nodes}") + print(f" Byzantine nodes: {args.byzantine}") + print(f" Steps: {args.steps}") + print(f" PoW zeros: {args.pow_zeros}") + print(f" Difficulty: {args.difficulty}") + print(f" Seed: {args.seed}") + + sim = Simulation( + num_honest=args.nodes, + num_byzantine=args.byzantine, + pow_zeros=args.pow_zeros, + difficulty=args.difficulty, + seed=args.seed, + ) + + sim.run(num_steps=args.steps) + + +if __name__ == "__main__": + main() diff --git a/src/crisis/gossip.py b/src/crisis/gossip.py new file mode 100644 index 0000000..6b8fa58 --- /dev/null +++ b/src/crisis/gossip.py @@ -0,0 +1,414 @@ +""" +Communication (Section 4) + +Crisis is built on top of two simple push & pull gossip protocols: +1. Member discovery gossip (Algorithm 3) +2. Message gossip (Algorithm 4) + +These are well suited for communication in unstructured P2P networks. +All the system needs is a way to distribute messages in a byzantine-prone +environment. + +4.3 Member Discovery Gossip (Algorithm 3): + Each process maintains a partial view Π_j(t) of the network. + Periodically, a process pushes its neighbor list to a random peer + and pulls neighbor lists from other peers. + +4.4 Message Gossip (Algorithm 4): + Processes push unordered messages to random peers and pull missing + messages. Already ordered messages are pushed only as responses + to pull requests (stop criterion for push gossip). + +This module implements both gossip protocols using asyncio for the +"run in parallel forever" loops described in the paper. +""" + +from __future__ import annotations + +import asyncio +import json +import logging +import os +import random +import struct +from dataclasses import dataclass, field +from typing import Optional + +from crisis.graph import LamportGraph +from crisis.message import Message, Vertex, NONCE_LENGTH, ID_LENGTH +from crisis.crypto import DIGEST_LENGTH + +logger = logging.getLogger(__name__) + + +# --------------------------------------------------------------------------- +# Peer identity and network view +# --------------------------------------------------------------------------- + +@dataclass +class PeerInfo: + """Information about a known peer in the network.""" + host: str + port: int + process_id: bytes = b"" # The peer's virtual process id, if known + + @property + def address(self) -> tuple[str, int]: + return (self.host, self.port) + + def __hash__(self): + return hash((self.host, self.port)) + + def __eq__(self, other): + if not isinstance(other, PeerInfo): + return NotImplemented + return self.host == other.host and self.port == other.port + + +@dataclass +class NetworkView: + """Π_j(t): a process's partial view of the network at time t. + + "No process must know the entire system and each j ∈ Π(t) might + have a partial view Π_j(t) only." (Section 4.3) + """ + peers: set[PeerInfo] = field(default_factory=set) + max_peers: int = 50 # Limit to prevent unbounded growth + + def add_peer(self, peer: PeerInfo) -> None: + if len(self.peers) < self.max_peers: + self.peers.add(peer) + + def remove_peer(self, peer: PeerInfo) -> None: + self.peers.discard(peer) + + def random_peer(self) -> Optional[PeerInfo]: + if not self.peers: + return None + return random.choice(list(self.peers)) + + def random_subset(self, k: int) -> list[PeerInfo]: + peers_list = list(self.peers) + return random.sample(peers_list, min(k, len(peers_list))) + + +# --------------------------------------------------------------------------- +# Message serialization for network transport +# --------------------------------------------------------------------------- + +def serialize_message(message: Message) -> bytes: + """Serialize a Message for network transmission. + + Format: [total_length:4][nonce:8][id:32][num_digests:2][digests...][payload] + """ + body = message.serialize() + length = len(body) + return struct.pack("!I", length) + body + + +def deserialize_message(data: bytes) -> Message: + """Deserialize a Message from network bytes. + + Parses the fixed-size fields and reconstructs the Message object. + """ + offset = 0 + nonce = data[offset:offset + NONCE_LENGTH] + offset += NONCE_LENGTH + + id_bytes = data[offset:offset + ID_LENGTH] + offset += ID_LENGTH + + num_digests = int.from_bytes(data[offset:offset + 2], "big") + offset += 2 + + digests = [] + for _ in range(num_digests): + d = data[offset:offset + DIGEST_LENGTH] + digests.append(d) + offset += DIGEST_LENGTH + + payload = data[offset:] + + return Message( + nonce=nonce, + id=id_bytes, + digests=tuple(digests), + payload=payload, + ) + + +# --------------------------------------------------------------------------- +# Protocol message types +# --------------------------------------------------------------------------- + +# Simple protocol: 1-byte type prefix +MSG_TYPE_PUSH_MESSAGE = b"\x01" # Push a crisis message +MSG_TYPE_PULL_REQUEST = b"\x02" # Request missing messages +MSG_TYPE_PULL_RESPONSE = b"\x03" # Response with requested messages +MSG_TYPE_PEER_PUSH = b"\x04" # Push peer list +MSG_TYPE_PEER_PULL = b"\x05" # Request peer list +MSG_TYPE_PEER_RESPONSE = b"\x06" # Response with peer list + + +# --------------------------------------------------------------------------- +# Gossip Server +# --------------------------------------------------------------------------- + +class GossipServer: + """Asyncio-based gossip server implementing Algorithms 3 and 4. + + Runs two parallel loops: + 1. Member discovery push & pull (Algorithm 3) + 2. Message push & pull (Algorithm 4) + + Plus a listener that handles incoming connections. + """ + + def __init__(self, host: str, port: int, graph: LamportGraph, + network_view: NetworkView, + push_interval: float = 2.0, + discovery_interval: float = 5.0): + self.host = host + self.port = port + self.graph = graph + self.network_view = network_view + self.push_interval = push_interval + self.discovery_interval = discovery_interval + self._server: Optional[asyncio.Server] = None + self._running = False + + async def start(self) -> None: + """Start the gossip server and all gossip loops.""" + self._running = True + self._server = await asyncio.start_server( + self._handle_connection, self.host, self.port + ) + logger.info(f"Gossip server listening on {self.host}:{self.port}") + + # Run the gossip loops concurrently (paper: "run in parallel forever") + await asyncio.gather( + self._server.serve_forever(), + self._discovery_push_loop(), + self._message_push_loop(), + ) + + async def stop(self) -> None: + """Stop the gossip server.""" + self._running = False + if self._server: + self._server.close() + await self._server.wait_closed() + + # ------------------------------------------------------------------ + # Algorithm 3: Member discovery push & pull + # ------------------------------------------------------------------ + + async def _discovery_push_loop(self) -> None: + """Algorithm 3, lines 1-5: periodically push peer list to random peers.""" + while self._running: + await asyncio.sleep(self.discovery_interval) + + peer = self.network_view.random_peer() + if peer is None: + continue + + try: + await self._send_peer_push(peer) + await self._send_peer_pull(peer) + except (ConnectionError, OSError) as e: + logger.debug(f"Discovery push to {peer.address} failed: {e}") + self.network_view.remove_peer(peer) + + async def _send_peer_push(self, peer: PeerInfo) -> None: + """Push our peer list to a remote peer.""" + peer_data = self._encode_peer_list(list(self.network_view.peers)) + await self._send_to_peer(peer, MSG_TYPE_PEER_PUSH + peer_data) + + async def _send_peer_pull(self, peer: PeerInfo) -> None: + """Request a peer list from a remote peer.""" + response = await self._send_and_receive(peer, MSG_TYPE_PEER_PULL) + if response and response[0:1] == MSG_TYPE_PEER_RESPONSE: + new_peers = self._decode_peer_list(response[1:]) + for p in new_peers: + if p.host != self.host or p.port != self.port: + self.network_view.add_peer(p) + + # ------------------------------------------------------------------ + # Algorithm 4: Message gossip push & pull + # ------------------------------------------------------------------ + + async def _message_push_loop(self) -> None: + """Algorithm 4, lines 1-5: push unordered messages to random peers. + + "Messages are retransmitted via push gossip, only if they don't + have a total order yet." (Section 4.4) + """ + while self._running: + await asyncio.sleep(self.push_interval) + + peer = self.network_view.random_peer() + if peer is None: + continue + + # Push messages that don't have total_position yet + unordered = [ + v for v in self.graph.all_vertices() + if v.total_position is None + ] + + if not unordered: + continue + + try: + for vertex in unordered: + msg_bytes = serialize_message(vertex.m) + await self._send_to_peer( + peer, MSG_TYPE_PUSH_MESSAGE + msg_bytes + ) + except (ConnectionError, OSError) as e: + logger.debug(f"Message push to {peer.address} failed: {e}") + + # ------------------------------------------------------------------ + # Connection handler (incoming) + # ------------------------------------------------------------------ + + async def _handle_connection(self, reader: asyncio.StreamReader, + writer: asyncio.StreamWriter) -> None: + """Handle an incoming gossip connection. + + Algorithm 3, lines 6-13 (peer data) and Algorithm 4, lines 6-13 + (message data). + """ + try: + data = await asyncio.wait_for(reader.read(65536), timeout=10.0) + if not data: + return + + msg_type = data[0:1] + payload = data[1:] + + if msg_type == MSG_TYPE_PUSH_MESSAGE: + # Received a message: try to extend our Lamport graph + self._handle_push_message(payload) + + elif msg_type == MSG_TYPE_PULL_REQUEST: + # Someone wants messages: send what we have + response = self._handle_pull_request(payload) + writer.write(response) + await writer.drain() + + elif msg_type == MSG_TYPE_PEER_PUSH: + # Received a peer list: update our view + new_peers = self._decode_peer_list(payload) + for p in new_peers: + if p.host != self.host or p.port != self.port: + self.network_view.add_peer(p) + + elif msg_type == MSG_TYPE_PEER_PULL: + # Someone wants our peer list + response = MSG_TYPE_PEER_RESPONSE + self._encode_peer_list( + list(self.network_view.peers) + ) + writer.write(response) + await writer.drain() + + except (asyncio.TimeoutError, ConnectionError): + pass + finally: + writer.close() + + def _handle_push_message(self, data: bytes) -> Optional[Vertex]: + """Process a pushed message: validate and extend graph if valid. + + Algorithm 4, lines 7-8: "if MESSAGE_INTEGRITY(m, G) then + expand G with vertex v, such that v.m = m" + """ + try: + # Parse length prefix + if len(data) < 4: + return None + length = struct.unpack("!I", data[:4])[0] + msg_data = data[4:4 + length] + + message = deserialize_message(msg_data) + return self.graph.extend(message) + except Exception as e: + logger.debug(f"Failed to process pushed message: {e}") + return None + + def _handle_pull_request(self, data: bytes) -> bytes: + """Respond to a pull request with messages the requester is missing. + + Algorithm 4, lines 10-11: "respond with appropriate set of messages" + """ + # Data contains a list of digests the requester already has + known_digests = set() + offset = 0 + while offset + DIGEST_LENGTH <= len(data): + known_digests.add(data[offset:offset + DIGEST_LENGTH]) + offset += DIGEST_LENGTH + + # Send messages the requester doesn't have + response_parts = [MSG_TYPE_PULL_RESPONSE] + for d, vertex in self.graph.vertices.items(): + if d not in known_digests: + response_parts.append(serialize_message(vertex.m)) + return b"".join(response_parts) + + # ------------------------------------------------------------------ + # Network I/O helpers + # ------------------------------------------------------------------ + + async def _send_to_peer(self, peer: PeerInfo, data: bytes) -> None: + """Send data to a peer (fire-and-forget).""" + reader, writer = await asyncio.open_connection(peer.host, peer.port) + writer.write(data) + await writer.drain() + writer.close() + + async def _send_and_receive(self, peer: PeerInfo, data: bytes) -> Optional[bytes]: + """Send data and wait for a response.""" + try: + reader, writer = await asyncio.open_connection(peer.host, peer.port) + writer.write(data) + await writer.drain() + response = await asyncio.wait_for(reader.read(65536), timeout=5.0) + writer.close() + return response + except Exception: + return None + + # ------------------------------------------------------------------ + # Peer list encoding + # ------------------------------------------------------------------ + + @staticmethod + def _encode_peer_list(peers: list[PeerInfo]) -> bytes: + """Encode a list of peers as bytes: [count:2][host_len:1][host][port:2]...""" + parts = [struct.pack("!H", len(peers))] + for peer in peers: + host_bytes = peer.host.encode("utf-8") + parts.append(struct.pack("!B", len(host_bytes))) + parts.append(host_bytes) + parts.append(struct.pack("!H", peer.port)) + return b"".join(parts) + + @staticmethod + def _decode_peer_list(data: bytes) -> list[PeerInfo]: + """Decode a peer list from bytes.""" + if len(data) < 2: + return [] + count = struct.unpack("!H", data[:2])[0] + offset = 2 + peers = [] + for _ in range(count): + if offset >= len(data): + break + host_len = data[offset] + offset += 1 + host = data[offset:offset + host_len].decode("utf-8") + offset += host_len + port = struct.unpack("!H", data[offset:offset + 2])[0] + offset += 2 + peers.append(PeerInfo(host=host, port=port)) + return peers diff --git a/src/crisis/graph.py b/src/crisis/graph.py new file mode 100644 index 0000000..f32682b --- /dev/null +++ b/src/crisis/graph.py @@ -0,0 +1,479 @@ +""" +Lamport Graphs (Section 3.2) + +Lamport graphs represent the causal partial order between messages as a +directed acyclic graph. They are the central data structure of the Crisis +protocol -- all consensus state is derived from the graph structure. + +Definition 3.5 (Lamport Graph): + Let V ⊂ VERTEX be a finite set of vertices, such that all vertices + v_hat with v_hat ≤ v for all v ∈ V are in V, but no two vertices in V + are equivalent. Then the graph G = (V, A) with (v, v_hat) ∈ A if and + only if v -> v_hat is called a *Lamport graph*. + +Key properties: + - Directed and acyclic (Proposition 3.6) + - The past of a vertex is invariant across Lamport graphs (Theorem 3.7) + - No two equivalent vertices exist in the same graph + +This module implements: + - Algorithm 1: Message generation + - Algorithm 2: Message integrity checking and graph extension + - Causality queries (past, future, timelike, spacelike) +""" + +from __future__ import annotations + +import os +from typing import Optional + +from crisis.crypto import digest +from crisis.message import Message, Vertex, Vote, ID_LENGTH, NONCE_LENGTH +from crisis.weight import ProofOfWorkWeight, WeightSystem + + +class LamportGraph: + """A Lamport graph: a DAG of vertices connected by causal acknowledgement. + + The graph is stored as: + - vertices: dict mapping message digest -> Vertex + - edges: dict mapping digest -> set of digests it references + (i.e. v -> v_hat means v acknowledges v_hat) + + Invariants maintained: + - No two vertices have the same underlying message (no equivalence) + - All referenced digests either exist in the graph or are the empty digest + - The graph is acyclic (guaranteed by hash function properties) + """ + + def __init__(self, weight_system: WeightSystem | None = None): + self.weight_system: WeightSystem = weight_system or ProofOfWorkWeight(min_leading_zeros=0) + + # digest -> Vertex + self.vertices: dict[bytes, Vertex] = {} + + # digest -> set of digests this vertex references (outgoing causal edges) + # An edge v -> v_hat means "v acknowledges v_hat" i.e. H(v_hat.m) ∈ v.m.digests + self.edges: dict[bytes, set[bytes]] = {} + + # Reverse edges for efficient "future" queries + # digest -> set of digests that reference this vertex + self.reverse_edges: dict[bytes, set[bytes]] = {} + + # ------------------------------------------------------------------ + # Graph queries + # ------------------------------------------------------------------ + + def __len__(self) -> int: + return len(self.vertices) + + def __contains__(self, digest_or_vertex) -> bool: + if isinstance(digest_or_vertex, Vertex): + return digest_or_vertex.message_digest in self.vertices + return digest_or_vertex in self.vertices + + def get_vertex(self, msg_digest: bytes) -> Optional[Vertex]: + return self.vertices.get(msg_digest) + + def all_vertices(self) -> list[Vertex]: + return list(self.vertices.values()) + + def vertex_count(self) -> int: + return len(self.vertices) + + # ------------------------------------------------------------------ + # Causality (Definition 3.2) + # ------------------------------------------------------------------ + # m -> m_hat (m happens before m_hat) iff: + # - m = m_hat, OR + # - there is a chain m -> m1 -> ... -> mk -> m_hat + # In our DAG: v has an edge to v_hat means v acknowledges v_hat. + # So v is in the *future* of v_hat, and v_hat is in the *past* of v. + + def direct_causes(self, v: Vertex) -> list[Vertex]: + """Return the direct causes of v (vertices that v acknowledges). + + These are the vertices whose digests appear in v.m.digests. + In graph terms: the outgoing neighbors of v. + """ + result = [] + for d in self.edges.get(v.message_digest, set()): + vertex = self.vertices.get(d) + if vertex is not None: + result.append(vertex) + return result + + def direct_effects(self, v: Vertex) -> list[Vertex]: + """Return the direct effects of v (vertices that acknowledge v). + + In graph terms: the incoming neighbors of v (who references v). + """ + result = [] + for d in self.reverse_edges.get(v.message_digest, set()): + vertex = self.vertices.get(d) + if vertex is not None: + result.append(vertex) + return result + + def past(self, v: Vertex) -> set[Vertex]: + """G_v: the subgraph of G containing all causes of v. + + Definition 3.5: "the subgraph G_v of G that contains all causes + of v is called the *past* of v". + + Returns the set of all vertices that are causally before v + (including v itself -- reflexivity). + """ + visited: set[bytes] = set() + stack = [v.message_digest] + + while stack: + current = stack.pop() + if current in visited: + continue + visited.add(current) + for neighbor in self.edges.get(current, set()): + if neighbor in self.vertices and neighbor not in visited: + stack.append(neighbor) + + return {self.vertices[d] for d in visited if d in self.vertices} + + def future(self, v: Vertex) -> set[Vertex]: + """All vertices that are causally after v (including v itself).""" + visited: set[bytes] = set() + stack = [v.message_digest] + + while stack: + current = stack.pop() + if current in visited: + continue + visited.add(current) + for neighbor in self.reverse_edges.get(current, set()): + if neighbor in self.vertices and neighbor not in visited: + stack.append(neighbor) + + return {self.vertices[d] for d in visited if d in self.vertices} + + def is_cause_of(self, v: Vertex, v_hat: Vertex) -> bool: + """Check if v ≤ v_hat (v is in the past of v_hat). + + Definition 3.4: v is said to happen before v_hat (v ≤ v_hat) + if there is a causality chain from v to v_hat. + """ + if v == v_hat: + return True + return v in self.past(v_hat) + + def are_timelike(self, v: Vertex, v_hat: Vertex) -> bool: + """Check if v and v_hat are timelike (comparable / causally related).""" + return self.is_cause_of(v, v_hat) or self.is_cause_of(v_hat, v) + + def are_spacelike(self, v: Vertex, v_hat: Vertex) -> bool: + """Check if v and v_hat are spacelike (incomparable / no causal relation). + + Spacelike vertices are the ones that need the total order protocol + to become comparable. The protocol extends the timelike partial + order to cover spacelike vertices as well. + """ + return not self.are_timelike(v, v_hat) + + # ------------------------------------------------------------------ + # Mutations (Definition 4.2) + # ------------------------------------------------------------------ + + def find_mutations(self, vertex_id: bytes) -> list[list[Vertex]]: + """Find mutations: vertices with the same id that are spacelike. + + Definition 4.2: Two vertices v and v_hat in G are called a *mutation* + of a virtual process if they have the same id and are spacelike, + i.e. neither v ≤ v_hat nor v_hat ≤ v holds. + + Mutations are the virtual voting equivalent of equivocation -- a + byzantine actor sending different votes to different processes. + + Returns a list of groups of mutually spacelike same-id vertices. + """ + # Group vertices by id + by_id: dict[bytes, list[Vertex]] = {} + for v in self.vertices.values(): + by_id.setdefault(v.id, []).append(v) + + mutations = [] + for vid, group in by_id.items(): + if vid != vertex_id: + continue + # Find spacelike pairs within the group + spacelike_group = [] + for i, v1 in enumerate(group): + for v2 in group[i + 1:]: + if self.are_spacelike(v1, v2): + if v1 not in spacelike_group: + spacelike_group.append(v1) + if v2 not in spacelike_group: + spacelike_group.append(v2) + if spacelike_group: + mutations.append(spacelike_group) + return mutations + + # ------------------------------------------------------------------ + # Byte-level correctness (part of Algorithm 2) + # ------------------------------------------------------------------ + + def _bytelevel_correctness(self, message: Message) -> bool: + """BYTELEVEL_CORRECTNESS: basic structural validation of a message. + + Checks that the message has valid field lengths and is well-formed. + """ + if len(message.nonce) != NONCE_LENGTH: + return False + if len(message.id) != ID_LENGTH: + return False + for d in message.digests: + if len(d) != 32: # DIGEST_LENGTH + return False + return True + + def _payload_correctness(self, message: Message) -> bool: + """PAYLOAD_CORRECTNESS: validate the payload against system rules. + + In this PoC, any payload is accepted. A real system would enforce + application-specific validation here. + """ + return True + + # ------------------------------------------------------------------ + # Algorithm 2: Message integrity (Section 4.2) + # ------------------------------------------------------------------ + + def message_integrity(self, message: Message) -> bool: + """Check whether a message can be validly added to this Lamport graph. + + Algorithm 2 from the paper: + + 1. Check BYTELEVEL_CORRECTNESS(m) + 2. Check w(m) > c_min (weight threshold) + 3. Check PAYLOAD_CORRECTNESS(m.payload) + 4. Check no equivalent vertex exists (no vertex with same digest) + 5. For each digest in m.digests: + - It must reference a vertex in G + - All referenced vertices must have different id's + 6. If there is a vertex v in G with v.id = m.id: + - One of m.digests must reference v (or a vertex in v's past) + Ensures the virtual process forms a chain, not a tree. + + Returns True if the message passes integrity checks. + """ + # Step 1: byte-level structure + if not self._bytelevel_correctness(message): + return False + + # Step 2: weight threshold + if not self.weight_system.is_valid_weight(message): + return False + + # Step 3: payload rules + if not self._payload_correctness(message): + return False + + msg_digest = message.compute_digest() + + # Step 4: no duplicate (no equivalent vertex) + if msg_digest in self.vertices: + return False + + # Step 5: all referenced digests must exist in G + # and all referenced vertices must have different ids + referenced_ids: set[bytes] = set() + for ref_digest in message.digests: + if ref_digest not in self.vertices: + return False + ref_vertex = self.vertices[ref_digest] + if ref_vertex.id in referenced_ids: + return False # Two references to same id + referenced_ids.add(ref_vertex.id) + + # Step 6: if same id exists, must reference it (chain constraint) + # Find the "last vertex" with this id (not referenced by any other + # vertex with the same id) + same_id_vertices = [v for v in self.vertices.values() if v.id == message.id] + if same_id_vertices: + # Check that at least one digest references a same-id vertex + referenced_digests = set(message.digests) + found_chain_link = False + for v in same_id_vertices: + if v.message_digest in referenced_digests: + found_chain_link = True + break + if not found_chain_link: + return False + + return True + + # ------------------------------------------------------------------ + # Lamport graph extension (Section 4.2) + # ------------------------------------------------------------------ + + def extend(self, message: Message) -> Optional[Vertex]: + """Attempt to extend the Lamport graph with a new message. + + If the message passes integrity checks (Algorithm 2), create a new + vertex and add it to the graph with appropriate edges. + + Proposition 4.1 guarantees that the extension of a Lamport graph + by a valid message is itself a Lamport graph. + + Returns the new Vertex if successful, None if integrity check fails. + """ + if not self.message_integrity(message): + return None + + vertex = Vertex(m=message) + msg_digest = message.compute_digest() + + # Add vertex + self.vertices[msg_digest] = vertex + + # Add edges: this vertex -> each referenced vertex + self.edges[msg_digest] = set() + for ref_digest in message.digests: + self.edges[msg_digest].add(ref_digest) + # Reverse edge + if ref_digest not in self.reverse_edges: + self.reverse_edges[ref_digest] = set() + self.reverse_edges[ref_digest].add(msg_digest) + + # Initialize reverse_edges entry for this vertex + if msg_digest not in self.reverse_edges: + self.reverse_edges[msg_digest] = set() + + return vertex + + # ------------------------------------------------------------------ + # Algorithm 1: Message generation (Section 4.1) + # ------------------------------------------------------------------ + + def generate_message(self, process_id: bytes, payload: bytes, + weight_system: WeightSystem | None = None) -> Message: + """Generate a valid message for a given virtual process id. + + Algorithm 1 from the paper: + 1. Find the last vertex v with v.id = id in G + 2. Choose S ⊂ {v.m | v ∈ G ∧ v ∉ G_v} such that all have different ids + 3. Return message with digests = {H(v.m)} ∪ {H(m) | m ∈ S ∪ {v.m}} + + The nonce is chosen so that w(m) > c_min (via mining if PoW). + """ + ws = weight_system or self.weight_system + + # Find the last vertex with this process id + last_vertex = self._find_last_vertex(process_id) + + # Collect digests: last same-id vertex + a sample of other vertices + digests_list: list[bytes] = [] + + if last_vertex is not None: + # Must reference the last vertex with same id + digests_list.append(last_vertex.message_digest) + + # Add cross-references to vertices NOT in last_vertex's past + past_digests = {v.message_digest for v in self.past(last_vertex)} + candidates = [ + v for d, v in self.vertices.items() + if d not in past_digests + and v.id != process_id + and d != last_vertex.message_digest + ] + + # Include candidates with different ids + seen_ids: set[bytes] = {process_id} + for candidate in candidates: + if candidate.id not in seen_ids: + digests_list.append(candidate.message_digest) + seen_ids.add(candidate.id) + else: + # First message for this id: reference a sample of existing vertices + seen_ids = {process_id} + for v in self.vertices.values(): + if v.id not in seen_ids: + digests_list.append(v.message_digest) + seen_ids.add(v.id) + + digests_tuple = tuple(digests_list) + + # Mine a valid nonce (or just find one that meets threshold) + if isinstance(ws, ProofOfWorkWeight): + message = ws.mine_nonce(process_id, digests_tuple, payload) + else: + # For non-PoW systems, use a random nonce + nonce = os.urandom(NONCE_LENGTH) + message = Message(nonce=nonce, id=process_id, digests=digests_tuple, payload=payload) + + return message + + def _find_last_vertex(self, process_id: bytes) -> Optional[Vertex]: + """Find the last vertex with a given process id. + + A vertex is "last" for an id if no other vertex with the same id + references it (i.e. it has no same-id successor). + """ + same_id = [v for v in self.vertices.values() if v.id == process_id] + if not same_id: + return None + + # Find the one that is not referenced by any other same-id vertex + referenced_by_same_id: set[bytes] = set() + for v in same_id: + for d in v.digests: + ref = self.vertices.get(d) + if ref is not None and ref.id == process_id: + referenced_by_same_id.add(d) + + for v in same_id: + if v.message_digest not in referenced_by_same_id: + return v + + # Fallback: return the one added most recently (by convention) + return same_id[-1] + + # ------------------------------------------------------------------ + # Vertices by id (for virtual process queries) + # ------------------------------------------------------------------ + + def vertices_by_id(self, process_id: bytes) -> list[Vertex]: + """Return all vertices belonging to a given virtual process id.""" + return [v for v in self.vertices.values() if v.id == process_id] + + def all_process_ids(self) -> set[bytes]: + """Return all unique virtual process ids in this graph.""" + return {v.id for v in self.vertices.values()} + + def last_vertices_by_id(self) -> dict[bytes, Vertex]: + """Return the last vertex for each virtual process id.""" + result = {} + for pid in self.all_process_ids(): + last = self._find_last_vertex(pid) + if last is not None: + result[pid] = last + return result + + # ------------------------------------------------------------------ + # Weight queries + # ------------------------------------------------------------------ + + def vertex_weight(self, v: Vertex) -> int: + """w(v) = w(v.m): the weight of a vertex is the weight of its message.""" + return self.weight_system.weight(v.m) + + def set_weight(self, vertices: set[Vertex] | list[Vertex]) -> int: + """w(M) := ⊕_{m ∈ M} w(m): the combined weight of a set of vertices.""" + total = 0 + for v in vertices: + total = self.weight_system.weight_sum(total, self.vertex_weight(v)) + return total + + # ------------------------------------------------------------------ + # Display + # ------------------------------------------------------------------ + + def __repr__(self) -> str: + return f"LamportGraph(vertices={len(self.vertices)}, ids={len(self.all_process_ids())})" diff --git a/src/crisis/message.py b/src/crisis/message.py new file mode 100644 index 0000000..e2423f5 --- /dev/null +++ b/src/crisis/message.py @@ -0,0 +1,250 @@ +""" +Data Structures (Section 3) + +3.1 Messages +------------- +Messages distribute payload across the network. The purpose of the protocol +is to establish a total order on those messages that respects causality. + +A message is a byte string of variable length with the following structure +(paper, page 3): + + struct Message { + byte[c1] nonce, + byte[c2] id, + byte[c3] num_digests, + byte[p * num_digests] digests, + byte[] payload + } + +Where c1, c2, c3 are fixed protocol constants and p is the digest length. + +The *nonce* is used by the weight function (e.g. PoW grinding). +The *id* groups messages into virtual processes. +The *digests* field encodes causal acknowledgement of other messages. + +Key insight: a message that acknowledges other messages defines an inherent +natural causality -- this is the Lamport "happens-before" relation (1978). + + m -> m_hat iff H(m_hat) is contained in m.digests (Eq. 2) + +3.1.3 Vertices +--------------- +To establish total order, messages are extended by local voting data that is +NOT transmitted. Votes are deduced from the causal relation between messages. +This is the key characteristic of virtual voting (Moser & Melliar-Smith). + + struct Vertex { + Message m, + Option round, + Option is_last, + Option> svp, # safe voting pattern + Option<(Message, Option)> vote, + Option total_position + } +""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Optional + +from crisis.crypto import digest, DIGEST_LENGTH + + +# --------------------------------------------------------------------------- +# Protocol constants (c1, c2, c3 from the paper) +# --------------------------------------------------------------------------- +# These define the byte-lengths of the fixed-size fields in a message. +# Chosen for a practical PoC: generous enough for real use, compact enough +# for clarity. + +NONCE_LENGTH = 8 # c1: 8 bytes of nonce (plenty for PoW search space) +ID_LENGTH = 32 # c2: 32 bytes for virtual process id (a hash) +NUM_DIGESTS_LENGTH = 2 # c3: 2 bytes => up to 65535 referenced digests + + +# --------------------------------------------------------------------------- +# Message +# --------------------------------------------------------------------------- + +@dataclass(frozen=True) +class Message: + """An immutable Crisis message as defined in Section 3.1. + + A message is the atomic unit of communication in the Crisis protocol. + It carries a payload and encodes causal history through its digests field. + + Attributes: + nonce: Used by the weight function (e.g. PoW nonce grinding). + id: Groups this message into a virtual process. + digests: Tuple of digests of causally prior messages (H values). + payload: The actual application data being ordered. + """ + nonce: bytes + id: bytes + digests: tuple[bytes, ...] = () + payload: bytes = b"" + + def __post_init__(self): + if len(self.nonce) != NONCE_LENGTH: + raise ValueError(f"nonce must be {NONCE_LENGTH} bytes, got {len(self.nonce)}") + if len(self.id) != ID_LENGTH: + raise ValueError(f"id must be {ID_LENGTH} bytes, got {len(self.id)}") + for i, d in enumerate(self.digests): + if len(d) != DIGEST_LENGTH: + raise ValueError(f"digest[{i}] must be {DIGEST_LENGTH} bytes") + + def serialize(self) -> bytes: + """Serialize this message to a canonical byte string. + + The serialized form is what gets hashed to produce the message's digest. + Format: nonce | id | num_digests (2 bytes big-endian) | digests... | payload + """ + num = len(self.digests) + parts = [ + self.nonce, + self.id, + num.to_bytes(NUM_DIGESTS_LENGTH, "big"), + ] + for d in self.digests: + parts.append(d) + parts.append(self.payload) + return b"".join(parts) + + def compute_digest(self) -> bytes: + """Compute H(m) -- the digest of this message. + + This is the value other messages include in their digests field + to acknowledge this message (establishing causality, Eq. 2). + """ + return digest(self.serialize()) + + @property + def num_digests(self) -> int: + return len(self.digests) + + def __repr__(self) -> str: + h = self.compute_digest().hex()[:12] + return f"Message(id={self.id.hex()[:8]}..., digests={self.num_digests}, hash={h}...)" + + +# --------------------------------------------------------------------------- +# The empty message (paper: ∅ ∈ MESSAGE) +# --------------------------------------------------------------------------- +# "We postulate a special non-message ∅ ∈ MESSAGE" (Section 3.1) +# Acknowledgement of ∅ is defined as H(empty string). + +EMPTY_MESSAGE_DIGEST = digest(b"") + + +# --------------------------------------------------------------------------- +# Vote +# --------------------------------------------------------------------------- + +@dataclass(frozen=True) +class Vote: + """A virtual vote as computed locally by each vertex. + + From the paper (Algorithm 7): v.vote(r) = (l, b) describes v's vote + on some message l, together with a possibly undecided binary value + b ∈ {⊥, 0, 1} in a round r. + + Attributes: + message: The message l being voted on (None = ∅, the non-leader). + binary: The binary part of the vote: None=⊥ (undecided), 0, or 1. + """ + message: Optional[Message] = None + binary: Optional[int] = None # None = ⊥, 0, or 1 + + def __repr__(self) -> str: + msg_str = "∅" if self.message is None else self.message.compute_digest().hex()[:8] + bin_str = "⊥" if self.binary is None else str(self.binary) + return f"Vote({msg_str}, {bin_str})" + + +# --------------------------------------------------------------------------- +# Vertex +# --------------------------------------------------------------------------- + +@dataclass +class Vertex: + """A vertex in a Lamport graph (Section 3.1.3). + + A vertex wraps a message and adds locally-computed consensus state. + The additional fields (round, is_last, svp, vote, total_position) are + never transmitted -- they are deduced from the causal structure. + + From the paper (page 5, Eq. 6): + w(v) <- w(v.m) + v.nonce <- v.m.nonce + v.id <- v.m.id + v.num_digests <- v.m.num_digests + v.digests <- v.m.digests + v.payload <- v.m.payload + + Attributes: + m: The underlying message. + round: The virtual round number (Algorithm 5). + is_last: Whether this is a "last vertex" of its round (Alg 5). + svp: Safe voting pattern -- ordered set of round numbers. + vote: Per-round votes: round -> Vote. + total_position: Final position in the total order (Algorithm 9/10). + """ + m: Message + + # Locally computed consensus state (initialized to None / ⊥) + round: Optional[int] = None + is_last: Optional[bool] = None + svp: list[int] = field(default_factory=list) + vote: dict[int, Vote] = field(default_factory=dict) + total_position: Optional[int] = None + + # ------------------------------------------------------------------ + # Convenience accessors that delegate to the underlying message + # ------------------------------------------------------------------ + + @property + def nonce(self) -> bytes: + return self.m.nonce + + @property + def id(self) -> bytes: + return self.m.id + + @property + def digests(self) -> tuple[bytes, ...]: + return self.m.digests + + @property + def payload(self) -> bytes: + return self.m.payload + + @property + def message_digest(self) -> bytes: + """H(v.m) -- the digest that uniquely identifies this vertex's message.""" + return self.m.compute_digest() + + # ------------------------------------------------------------------ + # Equivalence (Definition 3.3) + # ------------------------------------------------------------------ + # "Two vertices v and v_hat are equivalent if v.m = v_hat.m" + # i.e. they wrap the same underlying message. + + def equivalent_to(self, other: Vertex) -> bool: + """Check vertex equivalence: same underlying message.""" + return self.message_digest == other.message_digest + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Vertex): + return NotImplemented + return self.message_digest == other.message_digest + + def __hash__(self) -> int: + return hash(self.message_digest) + + def __repr__(self) -> str: + h = self.message_digest.hex()[:12] + round_str = str(self.round) if self.round is not None else "?" + last_str = "*" if self.is_last else "" + return f"Vertex({h}..., r={round_str}{last_str})" diff --git a/src/crisis/node.py b/src/crisis/node.py new file mode 100644 index 0000000..fcfcd4d --- /dev/null +++ b/src/crisis/node.py @@ -0,0 +1,336 @@ +""" +Crisis Node (Section 5.9 -- The Crisis Protocol) + +This module ties all components together into a full Crisis node. + +From the paper (Section 5.9): + "The overall algorithm works as follows: Member discovery (3) and + message gossip (4) are executed in infinite loops, concurrently to + the rest of the system. Ideally the message sending loop is executed + on as many parallel threads as possible. This implies that an overall + unbounded amount of new messages arrive over time due to our liveness + assumption. In addition each process may generate messages and write + them into its own Lamport graph." + +The full node runs these concurrent loops: + 1. Gossip: member discovery + message dissemination + 2. Message generation: create new messages with PoW + 3. Consensus: compute rounds, voting patterns, leader elections, order + +Each loop runs independently and they communicate through the shared +Lamport graph. +""" + +from __future__ import annotations + +import asyncio +import logging +import os +import time +from typing import Optional + +from crisis.crypto import digest +from crisis.graph import LamportGraph +from crisis.gossip import GossipServer, NetworkView, PeerInfo +from crisis.message import Message, Vertex, ID_LENGTH, NONCE_LENGTH +from crisis.order import LeaderStream, compute_order +from crisis.rounds import compute_rounds +from crisis.voting import compute_virtual_leader_election, compute_safe_voting_pattern +from crisis.weight import ProofOfWorkWeight, DifficultyOracle + +logger = logging.getLogger(__name__) + + +class CrisisNode: + """A full Crisis protocol node. + + Combines all protocol components into a single running process: + - Lamport graph (the shared DAG) + - Weight system (PoW) + - Difficulty oracle + - Gossip server (member discovery + message dissemination) + - Consensus engine (rounds, voting, ordering) + + Attributes: + process_id: This node's virtual process identity. + graph: The local Lamport graph. + leader_stream: The evolving total order leader stream. + network_view: Known peers in the network. + """ + + def __init__(self, host: str = "127.0.0.1", port: int = 9000, + min_pow_zeros: int = 1, + difficulty_constant: int = 4, + connectivity_k: int = 2, + message_interval: float = 3.0, + consensus_interval: float = 5.0, + seed_peers: list[tuple[str, int]] | None = None): + # Identity: use a hash of host:port as this node's virtual process id + self.process_id = digest(f"{host}:{port}".encode())[:ID_LENGTH] + self.host = host + self.port = port + + # Protocol components + self.weight_system = ProofOfWorkWeight(min_leading_zeros=min_pow_zeros) + self.difficulty = DifficultyOracle(constant_difficulty=difficulty_constant) + self.connectivity_k = connectivity_k + self.graph = LamportGraph(weight_system=self.weight_system) + self.leader_stream = LeaderStream() + + # Timing + self.message_interval = message_interval + self.consensus_interval = consensus_interval + + # Network + self.network_view = NetworkView() + if seed_peers: + for h, p in seed_peers: + self.network_view.add_peer(PeerInfo(host=h, port=p)) + + self.gossip = GossipServer( + host=host, port=port, + graph=self.graph, + network_view=self.network_view, + ) + + # State + self._running = False + self._message_count = 0 + + # Callbacks for monitoring + self.on_new_vertex: Optional[callable] = None + self.on_round_update: Optional[callable] = None + self.on_order_update: Optional[callable] = None + + # ------------------------------------------------------------------ + # Main entry point + # ------------------------------------------------------------------ + + async def run(self) -> None: + """Start all protocol loops concurrently. + + This is the Crisis protocol (Section 5.9): three concurrent loops. + """ + self._running = True + logger.info( + f"Crisis node starting on {self.host}:{self.port} " + f"(id={self.process_id.hex()[:16]}...)" + ) + + try: + await asyncio.gather( + self._gossip_loop(), + self._message_generation_loop(), + self._consensus_loop(), + ) + except asyncio.CancelledError: + logger.info("Crisis node shutting down") + finally: + self._running = False + + async def stop(self) -> None: + self._running = False + await self.gossip.stop() + + # ------------------------------------------------------------------ + # Loop 1: Gossip (Algorithms 3 & 4) + # ------------------------------------------------------------------ + + async def _gossip_loop(self) -> None: + """Run the gossip server (member discovery + message dissemination).""" + try: + await self.gossip.start() + except Exception as e: + logger.error(f"Gossip loop error: {e}") + + # ------------------------------------------------------------------ + # Loop 2: Message generation (Algorithm 1) + # ------------------------------------------------------------------ + + async def _message_generation_loop(self) -> None: + """Periodically generate new messages and add them to the graph. + + Each message: + 1. References the last same-id message (chain constraint) + 2. References a sample of other vertices (cross-links for connectivity) + 3. Has a PoW nonce meeting the weight threshold + 4. Carries an application payload + """ + while self._running: + await asyncio.sleep(self.message_interval) + + try: + payload = self._generate_payload() + message = self.graph.generate_message( + self.process_id, payload, self.weight_system + ) + vertex = self.graph.extend(message) + + if vertex is not None: + self._message_count += 1 + logger.debug( + f"Generated message #{self._message_count}: {vertex}" + ) + if self.on_new_vertex: + self.on_new_vertex(vertex) + + except Exception as e: + logger.error(f"Message generation error: {e}") + + def _generate_payload(self) -> bytes: + """Generate a payload for a new message. + + In this PoC, payloads are simple timestamped entries. + A real application would put actual data here. + """ + self._message_count += 1 + return f"msg-{self._message_count}-{time.time():.3f}".encode() + + # ------------------------------------------------------------------ + # Loop 3: Consensus (Algorithms 5, 6, 7, 9, 10) + # ------------------------------------------------------------------ + + async def _consensus_loop(self) -> None: + """Periodically recompute consensus state. + + From Section 5.9 and the proof section (Section 6): + "algorithms (5), (6) and (7) are executed in that order concurrently + on each vertex from V... the total order loop (9) runs concurrently + and waits for updates of the leader stream." + """ + while self._running: + await asyncio.sleep(self.consensus_interval) + + if self.graph.vertex_count() == 0: + continue + + try: + # Step 1: Compute rounds (Algorithm 5) + compute_rounds(self.graph, self.difficulty, self.connectivity_k) + + if self.on_round_update: + self.on_round_update(self.graph) + + # Step 2: Compute safe voting patterns (Algorithm 6) + for vertex in self.graph.all_vertices(): + if vertex.is_last: + compute_safe_voting_pattern( + vertex, self.graph, self.difficulty, + self.connectivity_k + ) + + # Step 3: Virtual leader election (Algorithm 7) + leader_dict: dict[int, list[tuple[int, Message]]] = {} + for vertex in self.graph.all_vertices(): + if vertex.svp: + compute_virtual_leader_election( + vertex, self.graph, self.difficulty, + self.connectivity_k, leader_dict + ) + + # Update leader stream from election results + for round_num, entries in leader_dict.items(): + for deciding_round, leader_msg in entries: + self.leader_stream.update( + round_num, deciding_round, leader_msg + ) + + # Step 4: Compute total order (Algorithms 9 & 10) + ordered = compute_order(self.graph, self.leader_stream) + + if ordered and self.on_order_update: + self.on_order_update(ordered) + + logger.debug( + f"Consensus: {self.graph.vertex_count()} vertices, " + f"{len(self.leader_stream.leaders)} leaders, " + f"{len(ordered)} ordered" + ) + + except Exception as e: + logger.error(f"Consensus loop error: {e}") + + # ------------------------------------------------------------------ + # Public API + # ------------------------------------------------------------------ + + def submit_message(self, payload: bytes) -> Optional[Vertex]: + """Submit an application message to be ordered by the protocol.""" + message = self.graph.generate_message( + self.process_id, payload, self.weight_system + ) + return self.graph.extend(message) + + def get_total_order(self) -> list[tuple[int, bytes]]: + """Get the current total order as (position, payload) pairs.""" + ordered = compute_order(self.graph, self.leader_stream) + return [ + (v.total_position, v.payload) + for v in ordered + if v.total_position is not None + ] + + def status(self) -> dict: + """Return a summary of this node's current state.""" + from crisis.rounds import max_round as get_max_round + return { + "process_id": self.process_id.hex()[:16], + "address": f"{self.host}:{self.port}", + "vertices": self.graph.vertex_count(), + "process_ids": len(self.graph.all_process_ids()), + "max_round": get_max_round(self.graph), + "leaders": len(self.leader_stream.leaders), + "peers": len(self.network_view.peers), + "messages_generated": self._message_count, + } + + +# --------------------------------------------------------------------------- +# CLI entry point +# --------------------------------------------------------------------------- + +def main(): + """Run a Crisis node from the command line.""" + import argparse + + parser = argparse.ArgumentParser( + description="Crisis Protocol Node", + epilog="Probabilistically self-organizing total order in P2P networks" + ) + parser.add_argument("--host", default="127.0.0.1", help="Listen address") + parser.add_argument("--port", type=int, default=9000, help="Listen port") + parser.add_argument("--pow-zeros", type=int, default=1, + help="Min PoW leading zeros (weight threshold)") + parser.add_argument("--difficulty", type=int, default=4, + help="Difficulty oracle constant") + parser.add_argument("--msg-interval", type=float, default=3.0, + help="Seconds between message generation") + parser.add_argument("--peers", nargs="*", default=[], + help="Seed peers as host:port") + + args = parser.parse_args() + + seed_peers = [] + for peer_str in args.peers: + h, p = peer_str.rsplit(":", 1) + seed_peers.append((h, int(p))) + + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(name)s] %(levelname)s: %(message)s" + ) + + node = CrisisNode( + host=args.host, + port=args.port, + min_pow_zeros=args.pow_zeros, + difficulty_constant=args.difficulty, + seed_peers=seed_peers, + message_interval=args.msg_interval, + ) + + asyncio.run(node.run()) + + +if __name__ == "__main__": + main() diff --git a/src/crisis/order.py b/src/crisis/order.py new file mode 100644 index 0000000..3c7e264 --- /dev/null +++ b/src/crisis/order.py @@ -0,0 +1,254 @@ +""" +Total Order (Section 5.8) + +As time goes by and the Lamport graph grows, more and more round leaders +are computed and incorporated into the global leader stream LEADER_G(·). + +Algorithm 9 (Order loop): watches for leader stream updates and recomputes +total order. Total order is achieved by topological sorting on the past +of appropriate vertices. + +Algorithm 10 (Total order using Kahn's algorithm): generates total order +in linear runtime by processing vertices without outgoing causal edges first, +using voting weight to break ties among spacelike vertices. + +The total order converges probabilistically: any two non-byzantine processes +will eventually compute the same total order (Proposition 6.21). + +Definition 5.17 (Leader Stream): + LEADER_G : N -> Option<(uint, MESSAGE)> + is called the *global leader stream* of the Lamport graph. + +Corollary 6.19 (Leader stream convergence): + If the probability for new rounds and safe voting pattern is not zero, + the leader streams of any two honest processes will converge. +""" + +from __future__ import annotations + +from typing import Optional + +from crisis.graph import LamportGraph +from crisis.message import Message, Vertex + + +# --------------------------------------------------------------------------- +# Leader Stream (Definition 5.17) +# --------------------------------------------------------------------------- + +class LeaderStream: + """The global leader stream of a Lamport graph. + + Maps round numbers to (deciding_round, leader_message) pairs. + Uses the Nakamoto longest chain rule: when a new leader is decided + in a later round, it may replace leaders decided in earlier rounds. + + The leader stream converges to contain a single element per round + (Theorem 6.18), and honest processes' leader streams converge to + the same values (Corollary 6.19). + """ + + def __init__(self): + # round_number -> (deciding_round, leader_message) + self.leaders: dict[int, tuple[int, Message]] = {} + + def update(self, round_number: int, deciding_round: int, + leader_message: Message) -> bool: + """Update the leader for a round via the Nakamoto longest chain rule. + + Algorithm 8 (LONG_CHAIN): keep only the leader decided in the + highest round. Delete leaders from previous rounds that have + lower deciding rounds. + + Returns True if the leader stream was modified. + """ + current = self.leaders.get(round_number) + + if current is not None: + existing_deciding_round, _ = current + if existing_deciding_round >= deciding_round: + return False # Already have a leader from a higher round + + self.leaders[round_number] = (deciding_round, leader_message) + + # Prune: remove leaders with lower deciding rounds + # (longest chain rule -- keep only the longest) + max_deciding = max(dr for dr, _ in self.leaders.values()) + to_remove = [] + for r, (dr, _) in self.leaders.items(): + if dr < max_deciding and r < round_number: + to_remove.append(r) + for r in to_remove: + del self.leaders[r] + + return True + + def get_leader(self, round_number: int) -> Optional[Message]: + """Get the current leader message for a round, if any.""" + entry = self.leaders.get(round_number) + return entry[1] if entry else None + + def max_round(self) -> int: + """Highest round with a decided leader.""" + return max(self.leaders.keys()) if self.leaders else -1 + + def all_leaders(self) -> list[tuple[int, Message]]: + """Return all leaders ordered by round number.""" + return [(r, msg) for r, (_, msg) in sorted(self.leaders.items())] + + def __repr__(self) -> str: + rounds = sorted(self.leaders.keys()) + return f"LeaderStream(rounds={rounds})" + + +# --------------------------------------------------------------------------- +# Algorithm 9: Order Loop +# --------------------------------------------------------------------------- + +def compute_order(graph: LamportGraph, leader_stream: LeaderStream) -> list[Vertex]: + """Algorithm 9: compute total order from the leader stream. + + Pseudocode: + 1: loop order update loop + 2: wait for LEADER_G(·) to change + 3: s <- min round of all changed LEADER_G(t) + 4: r <- max round of all LEADER_G(t) ≠ ∅ + 5: v_{l_r} <- leader in highest round, smallest s in G + 6: n <- max(v.total_position | v ∈ Ord_G(v_{l_{r-1}})) + 7: for x ≤ t ≤ r do + 8: randomly choose (p, l_t) ∈ LEADER_G(t) + 9: if l_t ≠ ∅ then + 10: ORDER(Ord_G(v_t), n) ▷ v_t.m = l_t + 11: end if + 12: end for + 13: end loop + + For this PoC, we compute the order in a single pass over the current + leader stream state. + """ + if not leader_stream.leaders: + return [] + + ordered: list[Vertex] = [] + position = 0 + + # Process leaders in round order + for round_number, leader_message in leader_stream.all_leaders(): + # Find the vertex corresponding to this leader message + leader_digest = leader_message.compute_digest() + leader_vertex = graph.get_vertex(leader_digest) + + if leader_vertex is None: + continue + + # Order the past of this leader vertex (excluding already-ordered) + past_vertices = graph.past(leader_vertex) + already_ordered = {v.message_digest for v in ordered} + new_vertices = [ + v for v in past_vertices + if v.message_digest not in already_ordered + ] + + # Sort new vertices using Kahn's algorithm (Algorithm 10) + sorted_new = _kahns_total_order(new_vertices, graph) + + for v in sorted_new: + v.total_position = position + ordered.append(v) + position += 1 + + return ordered + + +# --------------------------------------------------------------------------- +# Algorithm 10: Total Order using Kahn's Algorithm +# --------------------------------------------------------------------------- + +def _kahns_total_order(vertices: list[Vertex], graph: LamportGraph) -> list[Vertex]: + """Algorithm 10: generate total order using Kahn's algorithm. + + Kahn's algorithm in its "arrow reversed" incarnation: we want to order + the past before the future in our Lamport graph. + + Pseudocode from the paper: + 1: procedure ORDER(dag:Ord(v), uint:last) + 2: n <- last + 1 + 3: S <- set of all elements of Ord(v) with no outgoing edges + 4: while S ≠ ∅ do + 5: remove x with highest weight w(x) from S + 6: x.total_position <- n + 7: n <- n + 1 + 8: for each vertex y ∈ Ord(v) with edge e : y -> x do + 9: remove edge e from Ord(v) + 10: if y has no other outgoing edge then + 11: S <- S ∪ {y} + 12: end if + 13: end for + 14: end while + 15: end procedure + + Tie-breaking by voting weight ensures that all honest processes produce + the same total order from equivalent Lamport graphs. + """ + if not vertices: + return [] + + # Build a local subgraph for just these vertices + vertex_set = {v.message_digest for v in vertices} + + # out_degree: for each vertex, count edges to other vertices in this set + out_edges: dict[bytes, set[bytes]] = {} + in_edges: dict[bytes, set[bytes]] = {} + + for v in vertices: + d = v.message_digest + out_edges[d] = set() + in_edges[d] = set() + + for v in vertices: + d = v.message_digest + for cause_d in graph.edges.get(d, set()): + if cause_d in vertex_set: + out_edges[d].add(cause_d) + in_edges[cause_d].add(d) + + # Start with vertices that have no outgoing edges (sinks = earliest causes) + result: list[Vertex] = [] + available = [ + v for v in vertices + if len(out_edges[v.message_digest]) == 0 + ] + + while available: + # Remove the vertex with highest weight (deterministic tie-breaking) + available.sort(key=lambda v: graph.vertex_weight(v), reverse=True) + chosen = available.pop(0) + result.append(chosen) + + # Remove edges pointing to chosen + chosen_d = chosen.message_digest + for referrer_d in list(in_edges.get(chosen_d, set())): + out_edges[referrer_d].discard(chosen_d) + if len(out_edges[referrer_d]) == 0: + referrer_vertex = graph.get_vertex(referrer_d) + if referrer_vertex is not None and referrer_vertex not in result: + available.append(referrer_vertex) + + return result + + +# --------------------------------------------------------------------------- +# Convenience: full pipeline +# --------------------------------------------------------------------------- + +def total_order_positions(graph: LamportGraph, + leader_stream: LeaderStream) -> dict[bytes, int]: + """Return a mapping of message digest -> total order position. + + This is the final output of the Crisis protocol: a total order on + messages that respects causality and is probabilistically invariant + among all honest participants. + """ + ordered = compute_order(graph, leader_stream) + return {v.message_digest: v.total_position for v in ordered + if v.total_position is not None} diff --git a/src/crisis/rounds.py b/src/crisis/rounds.py new file mode 100644 index 0000000..227991a --- /dev/null +++ b/src/crisis/rounds.py @@ -0,0 +1,231 @@ +""" +Virtual Synchronous Rounds (Section 5.3) + +Lamport graphs represent a timelike order between vertices that we interpret +as virtual communication channels. Going one step further, we can think from +inside the Lamport graph to define a virtual clock tick as a transition from +one vertex to another. + +This simple idea allows for internal synchronism that enables us to execute +strongly synchronous agreement protocols like Feldman & Micali's BA* +virtually, but without any compromise in external asynchronism. + +Algorithm 5 (Virtual synchronous rounds): + The algorithm computes *round numbers* and the *is_last* property + of any vertex. + + - The round number is computed by taking the largest round of all + direct causes. + - If the vertex is a direct effect of a current round vertex with + the is_last property, a new round begins. + - If the vertex has enough last vertices of the previous round in its + past and it is k-reachable from all of them, the vertex becomes a + last vertex in its own round. + +Definition 5.1 (k-reachability): + v_hat is said to be k-reachable from v, if the overall weight of all + vertices in all paths from v to v_hat is greater than k. + +Proposition 5.3 (Round invariance): + The round number and is_last property do not depend on the actual + Lamport graph, but are the same for equivalent vertices. +""" + +from __future__ import annotations + +from crisis.graph import LamportGraph +from crisis.message import Vertex +from crisis.weight import DifficultyOracle + + +def compute_rounds(graph: LamportGraph, difficulty: DifficultyOracle, + connectivity_k: int = 2) -> None: + """Execute Algorithm 5 on all vertices in the graph. + + This computes v.round and v.is_last for every vertex v in the graph. + The algorithm processes vertices in causal order (causes before effects) + to ensure dependencies are resolved before they are needed. + + Args: + graph: The Lamport graph to process. + difficulty: The difficulty oracle d : N -> W. + connectivity_k: The connectivity parameter k for k-reachability. + """ + # Process vertices in topological order (causes first) + ordered = _topological_sort(graph) + + for vertex in ordered: + _compute_round_for_vertex(vertex, graph, difficulty, connectivity_k) + + +def _compute_round_for_vertex(vertex: Vertex, graph: LamportGraph, + difficulty: DifficultyOracle, + connectivity_k: int) -> None: + """Algorithm 5: compute round number and is_last for a single vertex. + + Pseudocode from the paper: + 1: procedure ROUND(vertex:v, lamport_graph:G) + 2: N_v <- {v_hat ∈ G | v -> v_hat} # direct causes + 3: r <- max({v_hat.round | v_hat ∈ N_v} ∪ {0}) + 4: if there is a v_hat ∈ N_v with v_hat.is_last and v_hat.round = r then + 5: v.round <- r + 1 + 6: else + 7: v.round <- r + 8: end if + 9: S_r <- {v_hat ∈ G | v_hat.round = v.round - 1, v_hat.is_last, v_hat ≤_k v} + 10: if w(S_r) > 3 * d_r then + 11: v.is_last <- true + 12: else + 13: v.is_last <- (r = 0) + 14: end if + 15: end procedure + """ + # Step 2: direct causes + direct_causes = graph.direct_causes(vertex) + + # Step 3: max round of direct causes (default 0 if no causes) + if direct_causes: + max_round = max( + (dc.round if dc.round is not None else 0) for dc in direct_causes + ) + else: + max_round = 0 + + # Steps 4-8: determine this vertex's round + # If any direct cause is a "last vertex" of the current max round, + # this vertex starts a new round. + has_last_cause_in_max_round = any( + dc.is_last and dc.round == max_round + for dc in direct_causes + if dc.round is not None and dc.is_last is not None + ) + + if has_last_cause_in_max_round: + vertex.round = max_round + 1 + else: + vertex.round = max_round + + # Steps 9-14: determine is_last + r = vertex.round + if r == 0: + # All round-0 vertices are "last" (bootstrapping) + vertex.is_last = True + return + + # Find last vertices of the previous round that are k-reachable from v + d_r = difficulty.difficulty(r) + + previous_round_lasts = [ + v_hat for v_hat in graph.all_vertices() + if v_hat.round == r - 1 + and v_hat.is_last + and _is_k_reachable(v_hat, vertex, graph, connectivity_k) + ] + + # Weight of k-reachable last vertices from previous round + weight_of_previous_lasts = graph.set_weight(previous_round_lasts) + + if weight_of_previous_lasts > 3 * d_r: + vertex.is_last = True + else: + vertex.is_last = False + + +def _is_k_reachable(v_from: Vertex, v_to: Vertex, + graph: LamportGraph, k: int) -> bool: + """Check k-reachability (Definition 5.1). + + v_hat is k-reachable from v if the overall weight of all vertices in + all paths from v to v_hat is greater than k. + + For simplicity in this PoC, we approximate this by checking if v_from + is in the past of v_to and the total weight along the path exceeds k. + + The paper notes (page 11): "counting disjoint paths is computationally + expensive and not really necessary in our setting... all we need is some + insurance that information flows through enough real world processes." + We use total path weight as a simpler proxy. + """ + if v_from not in graph.past(v_to): + return False + + # Compute the weight of all vertices in the path from v_from to v_to + # (all vertices that are in both the future of v_from and the past of v_to) + past_of_to = graph.past(v_to) + future_of_from = graph.future(v_from) + + path_vertices = past_of_to & future_of_from + total_weight = graph.set_weight(path_vertices) + + return total_weight > k + + +def _topological_sort(graph: LamportGraph) -> list[Vertex]: + """Sort vertices in causal order: causes come before their effects. + + Uses Kahn's algorithm. Vertices with no causes (sources) come first. + This ensures that when we process a vertex, all its causes already + have their round numbers computed. + """ + # Compute in-degree (number of causes each vertex has within the graph) + in_degree: dict[bytes, int] = {} + for d, v in graph.vertices.items(): + in_degree[d] = 0 + + for d, v in graph.vertices.items(): + for ref_d in graph.edges.get(d, set()): + if ref_d in graph.vertices: + # ref_d is a cause of d, so d has an additional in-edge + # But we want causal order: causes first + # edges go from effect -> cause, so we need reverse + pass + + # Actually: edges[d] contains the causes of d (d -> cause). + # For topological sort where causes come first, we need: + # in_degree[d] = number of digests in edges[d] that are in the graph + for d in graph.vertices: + count = 0 + for cause_d in graph.edges.get(d, set()): + if cause_d in graph.vertices: + count += 1 + in_degree[d] = count + + # Start with vertices that have no causes (in_degree = 0) + queue = [d for d, deg in in_degree.items() if deg == 0] + result = [] + + while queue: + current = queue.pop(0) + result.append(graph.vertices[current]) + + # For each vertex that current is a cause of (reverse edges) + for effect_d in graph.reverse_edges.get(current, set()): + if effect_d in in_degree: + in_degree[effect_d] -= 1 + if in_degree[effect_d] == 0: + queue.append(effect_d) + + return result + + +# --------------------------------------------------------------------------- +# Queries on computed rounds +# --------------------------------------------------------------------------- + +def last_vertices_in_round(graph: LamportGraph, round_number: int) -> list[Vertex]: + """Return all last vertices in a given round.""" + return [ + v for v in graph.all_vertices() + if v.round == round_number and v.is_last + ] + + +def max_round(graph: LamportGraph) -> int: + """Return the highest round number in the graph.""" + rounds = [v.round for v in graph.all_vertices() if v.round is not None] + return max(rounds) if rounds else 0 + + +def vertices_in_round(graph: LamportGraph, round_number: int) -> list[Vertex]: + """Return all vertices in a given round.""" + return [v for v in graph.all_vertices() if v.round == round_number] diff --git a/src/crisis/voting.py b/src/crisis/voting.py new file mode 100644 index 0000000..02e08cd --- /dev/null +++ b/src/crisis/voting.py @@ -0,0 +1,527 @@ +""" +Virtual Voting, Safe Voting Patterns, and Leader Election (Section 5) + +This module implements the heart of the Crisis protocol: the virtual voting +mechanism that achieves total order without ever sending explicit vote messages. + +Key concepts: + +5.5 Virtual Process Sortition & Knowledge Graphs + - Knowledge graph (Def 5.8): quotient graph projecting vertices to virtual + processes, representing what each process "knows" about others. + - Quorum selector (Def 5.11): deterministically chooses a subset of virtual + processes for each round -- the quorum that participates in agreement. + +5.6 Safe Voting Pattern + - Voting sets (Def 5.12): the set of vertices participating in round s + agreement, reachable with connectivity k from vertex v. + - Algorithm 6: computes the safe voting pattern -- a nested sequence of + rounds where voting took place with appropriately bounded byzantine weight. + +5.7 Local Leader Election + - Algorithm 7: virtual leader elections -- an adaptation of Chen, Feldman + & Micali's BA* to virtual voting on Lamport graphs. + - Three stage types: initial proposal (δ=0), presorting/gradecast (δ∈{1,2}), + and BBA* binary agreement (δ≥3) with "coin fixed to 0/1" and "genuine + coin flip" sub-stages. + +5.8 Longest Chain Rule + - Algorithm 8: maintains the leader stream by keeping only the longest + chain of round leaders (similar to Nakamoto's longest chain rule). +""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Optional + +from crisis.crypto import digest, least_significant_bit +from crisis.graph import LamportGraph +from crisis.message import Message, Vertex, Vote, EMPTY_MESSAGE_DIGEST +from crisis.rounds import last_vertices_in_round, max_round +from crisis.weight import DifficultyOracle + + +# --------------------------------------------------------------------------- +# Knowledge Graph (Definition 5.8) +# --------------------------------------------------------------------------- + +@dataclass +class KnowledgeGraph: + """The round s knowledge graph of vertex v (Definition 5.8). + + Given rounds s < r, a Lamport graph G, and v a last message in round r, + the knowledge graph Π^s_v is the quotient graph G^s_v / ≃_id. + + Each node in the knowledge graph represents a virtual process (identified + by its id). An edge from process id to id' means that some vertex with + v.id = id in round s has a vertex with v_hat.id = id' in its past. + + This represents what each virtual process "knows" about others. + """ + # id -> set of ids that this process has edges to + edges: dict[bytes, set[bytes]] = field(default_factory=dict) + # id -> total weight of vertices in this equivalence class + weights: dict[bytes, int] = field(default_factory=dict) + + +def build_knowledge_graph(vertex: Vertex, round_s: int, + graph: LamportGraph) -> KnowledgeGraph: + """Build the round s knowledge graph for vertex v. + + Collects all round-s vertices in v's past, groups them by id, + and builds the quotient graph. + """ + kg = KnowledgeGraph() + past = graph.past(vertex) + + # Find all round-s vertices in v's past + round_s_vertices = [v for v in past if v.round == round_s] + + # Group by id and compute edges + for v_s in round_s_vertices: + vid = v_s.id + if vid not in kg.edges: + kg.edges[vid] = set() + if vid not in kg.weights: + kg.weights[vid] = 0 + + kg.weights[vid] = graph.weight_system.weight_sum( + kg.weights[vid], graph.vertex_weight(v_s) + ) + + # Add edges based on what this vertex references + for cause in graph.direct_causes(v_s): + if cause.round is not None and cause.round == round_s: + kg.edges[vid].add(cause.id) + + return kg + + +# --------------------------------------------------------------------------- +# Quorum Selector (Definition 5.11) +# --------------------------------------------------------------------------- + +def select_quorum(knowledge_graph: KnowledgeGraph, n: int = 3) -> set[bytes]: + """Select a quorum from a knowledge graph (Definition 5.11). + + Example 3 (Highest voting weight quorum): + Choose the weakly connected component with the highest combined voting + weight, then take the heaviest n virtual processes from it. + + The quorum selector serves as a filter to reduce byzantine noise that + might appear in the voting process. By restricting to a heavily + connected component, faulty behavior based on graph partition is reduced. + """ + if not knowledge_graph.edges: + return set() + + # Find weakly connected components using simple BFS + all_ids = set(knowledge_graph.edges.keys()) + visited: set[bytes] = set() + components: list[set[bytes]] = [] + + for start_id in all_ids: + if start_id in visited: + continue + component: set[bytes] = set() + queue = [start_id] + while queue: + current = queue.pop(0) + if current in visited: + continue + visited.add(current) + component.add(current) + # Follow edges in both directions (weakly connected) + for neighbor in knowledge_graph.edges.get(current, set()): + if neighbor not in visited and neighbor in all_ids: + queue.append(neighbor) + # Reverse edges + for other_id, neighbors in knowledge_graph.edges.items(): + if current in neighbors and other_id not in visited: + queue.append(other_id) + components.append(component) + + # Choose the component with highest total weight + def component_weight(comp: set[bytes]) -> int: + return sum(knowledge_graph.weights.get(pid, 0) for pid in comp) + + best_component = max(components, key=component_weight) + + # Take the n heaviest processes from this component + sorted_by_weight = sorted( + best_component, + key=lambda pid: knowledge_graph.weights.get(pid, 0), + reverse=True + ) + + return set(sorted_by_weight[:n]) + + +# --------------------------------------------------------------------------- +# Voting Sets (Definition 5.12) +# --------------------------------------------------------------------------- + +def voting_set(vertex: Vertex, round_s: int, connectivity_k: int, + graph: LamportGraph) -> set[Vertex]: + """Compute S_v(s,k): v's round s voting set (Definition 5.12). + + S_v(s,k) := { x | x.id ∈ Q(v,s) ∧ x ≤_{(r-s)*k} v + ∧ x.round = s ∧ x.is_last = true } + + The voting set consists of all last vertices in round s that: + 1. Belong to a quorum-selected virtual process + 2. Are k-reachable from v (with distance scaled by round gap) + 3. Are in v's past + """ + if vertex.round is None: + return set() + + r = vertex.round + if round_s >= r: + return set() + + # Build knowledge graph and select quorum + kg = build_knowledge_graph(vertex, round_s, graph) + quorum = select_quorum(kg) + + past_of_v = graph.past(vertex) + + result = set() + for v_hat in past_of_v: + if (v_hat.round == round_s + and v_hat.is_last + and v_hat.id in quorum): + result.add(v_hat) + + return result + + +# --------------------------------------------------------------------------- +# Algorithm 6: Safe Voting Pattern (Section 5.6) +# --------------------------------------------------------------------------- + +def compute_safe_voting_pattern(vertex: Vertex, graph: LamportGraph, + difficulty: DifficultyOracle, + connectivity_k: int = 2) -> None: + """Algorithm 6: compute the safe voting pattern for a vertex. + + The safe voting pattern v.svp is a totally ordered set of round numbers + where "safe" voting took place. Safe means: + - The voting set has enough overall weight + - The svp of all members agree + - Byzantine weight is bounded + + Pseudocode from the paper: + 1: procedure SVP(vertex:v, lamport_graph:G) + 2: v.svp <- ∅ + 3: if v.is_last and [safe voting pattern conditions are met] then + 4: s <- maximum of all such k + 5: v.svp <- v.svp ∪ {s} for all t ≤ s + 6: end if + 7: end procedure + + The procedure checks if the current vertex's round qualifies as a new + entry in the safe voting pattern by verifying weight and agreement + conditions from its voting set. + """ + vertex.svp = [] + + if not vertex.is_last or vertex.round is None or vertex.round == 0: + return + + r = vertex.round + + # Check each previous round for safe voting pattern membership + for s in range(r): + d_s = difficulty.difficulty(s) + + # Get voting set for round s + vs = voting_set(vertex, s, connectivity_k, graph) + if not vs: + continue + + total_weight = graph.set_weight(vs) + + # Check if voting weight exceeds threshold (6 * d_s from Eq. 8) + if total_weight <= 6 * d_s: + continue + + # Check that all members of the voting set have compatible svp + svps_agree = True + for x in vs: + for y in vs: + if x.svp != y.svp: + # Allow prefix agreement + min_len = min(len(x.svp), len(y.svp)) + if x.svp[:min_len] != y.svp[:min_len]: + svps_agree = False + break + if not svps_agree: + break + + if svps_agree: + vertex.svp.append(s) + + # svp is a nested sequence: add current round + if vertex.svp: + vertex.svp.append(r) + + +# --------------------------------------------------------------------------- +# Initial Vote Function (Definition 5.16, Example 4) +# --------------------------------------------------------------------------- + +def initial_vote(vertices: set[Vertex], graph: LamportGraph) -> Optional[Message]: + """INITIAL_VOTE: deterministically choose a leader proposal (Def 5.16). + + Example 4 (Highest weight): Choose the underlying message of the highest + voting weight vertex. Since we assume it is infeasible to have different + vertices of equal weight, this is practically deterministic. + + The initial vote function is a system parameter. Different choices lead + to different long-term behavior. Ideally all members of a safe voting + pattern would compute the same initial vote. + """ + if not vertices: + return None + + best_vertex = max(vertices, key=lambda v: graph.vertex_weight(v)) + return best_vertex.m + + +# --------------------------------------------------------------------------- +# Algorithm 7: Virtual Leader Elections (Section 5.7) +# --------------------------------------------------------------------------- + +def compute_virtual_leader_election(vertex: Vertex, graph: LamportGraph, + difficulty: DifficultyOracle, + connectivity_k: int, + leader_stream: dict[int, list[tuple[int, Message]]]) -> None: + """Algorithm 7: compute votes for all rounds in v's safe voting pattern. + + This is the core virtual BA* protocol. For each element t in v.svp, + the vertex computes a vote v.vote(t) = (l, b) based on the stage δ + (the position of that round in the svp). + + Stage types (determined by δ = d_{v.svp}(s, t)): + δ = 0: Initial leader proposal + δ = 1: Leader presorting (gradecast step) + δ = 2: BBA* initialization (gradecast step) + δ ≥ 3: Binary agreement rounds + δ mod 3 = 0: Coin fixed to 0 + δ mod 3 = 1: Coin fixed to 1 + δ mod 3 = 2: Genuine coin flip + + The paper notes: "every step is entirely virtual and no votes are + actually sent to other real world processes." + """ + if not vertex.svp: + return + + s = max(vertex.svp) if vertex.svp else None + if s is None: + return + + for t_idx, t in enumerate(vertex.svp): + delta = t_idx # stage = position in svp + _compute_vote_for_stage(vertex, t, delta, s, graph, difficulty, + connectivity_k, leader_stream) + + +def _compute_vote_for_stage(vertex: Vertex, t: int, delta: int, s: int, + graph: LamportGraph, difficulty: DifficultyOracle, + connectivity_k: int, + leader_stream: dict[int, list[tuple[int, Message]]]) -> None: + """Compute vertex's vote for a specific stage of the virtual leader election. + + Implements the branching logic of Algorithm 7 (pages 19-20 of the paper). + """ + d_s = difficulty.difficulty(s) + vs = voting_set(vertex, t, connectivity_k, graph) + n = graph.set_weight(vs) + + NON_LEADER = None # ∅ in the paper + + if delta == 0: + # Stage 0: Initial leader proposal + l = initial_vote(vs, graph) + vertex.vote[t] = Vote(message=l, binary=None) # (INITIAL_VOTE(S), ⊥) + + elif delta == 1: + # Stage 1: Leader presorting + # Find message with highest round-t voting weight in S + l = _highest_weight_message(vs, graph) + + if l is not None: + # Check if l has super majority weight + l_weight = _vote_weight_for(vs, t, l, None, graph) # votes for (l, ⊥) + if l_weight > n - d_s: + vertex.vote[t] = Vote(message=l, binary=None) # (l, ⊥) + else: + vertex.vote[t] = Vote(message=NON_LEADER, binary=None) # (∅, ⊥) + else: + vertex.vote[t] = Vote(message=NON_LEADER, binary=None) + + elif delta == 2: + # Stage 2: BBA* initialization (gradecast) + l = _highest_weight_message(vs, graph) + + if l is not None: + l_weight_undecided = _vote_weight_for(vs, t, l, None, graph) + if l_weight_undecided > n - d_s: + vertex.vote[t] = Vote(message=l, binary=0) + else: + l_weight_1 = _vote_weight_for(vs, t, l, 1, graph) + if l_weight_1 > d_s: + vertex.vote[t] = Vote(message=l, binary=1) + else: + vertex.vote[t] = Vote(message=NON_LEADER, binary=1) + else: + vertex.vote[t] = Vote(message=NON_LEADER, binary=1) + + else: + # Stage δ ≥ 3: Binary agreement (BBA*) + coin_stage = delta % 3 + l = _highest_weight_message(vs, graph) + + if coin_stage == 0: + # Coin fixed to 0 + _bba_coin_fixed(vertex, t, vs, l, n, d_s, graph, + leader_stream, s, fixed_value=0) + elif coin_stage == 1: + # Coin fixed to 1 + _bba_coin_fixed(vertex, t, vs, l, n, d_s, graph, + leader_stream, s, fixed_value=1) + else: + # Genuine coin flip (coin_stage == 2) + _bba_genuine_coin(vertex, t, vs, l, n, d_s, graph) + + +def _bba_coin_fixed(vertex: Vertex, t: int, vs: set[Vertex], + l: Optional[Message], n: int, d_s: int, + graph: LamportGraph, + leader_stream: dict[int, list[tuple[int, Message]]], + s: int, fixed_value: int) -> None: + """BBA* stage with coin fixed to 0 or 1.""" + other_value = 1 - fixed_value + + if l is not None: + weight_for_fixed = _vote_weight_for_binary(vs, t, fixed_value, graph) + if weight_for_fixed > n - d_s: + vertex.vote[t] = Vote(message=l, binary=fixed_value) + # If weight = n, we have agreement: update leader stream + if weight_for_fixed == n: + _update_leader_stream(leader_stream, l, s) + return + + weight_for_other = _vote_weight_for_binary(vs, t, other_value, graph) + if weight_for_other > n - d_s: + vertex.vote[t] = Vote(message=l, binary=other_value) + return + + vertex.vote[t] = Vote(message=l, binary=fixed_value) + + +def _bba_genuine_coin(vertex: Vertex, t: int, vs: set[Vertex], + l: Optional[Message], n: int, d_s: int, + graph: LamportGraph) -> None: + """BBA* stage with genuine coin flip.""" + if l is not None: + weight_0 = _vote_weight_for_binary(vs, t, 0, graph) + if weight_0 > n - d_s: + vertex.vote[t] = Vote(message=l, binary=0) + return + + weight_1 = _vote_weight_for_binary(vs, t, 1, graph) + if weight_1 > n - d_s: + vertex.vote[t] = Vote(message=l, binary=1) + return + + # Genuine coin flip: use LSB of hash of heaviest vertex's message + if vs: + heaviest = max(vs, key=lambda v: graph.vertex_weight(v)) + h = heaviest.m.compute_digest() + b_coin = least_significant_bit(h) + vertex.vote[t] = Vote(message=l, binary=b_coin) + else: + vertex.vote[t] = Vote(message=l, binary=0) + + +# --------------------------------------------------------------------------- +# Helper functions for vote weight computation +# --------------------------------------------------------------------------- + +def _highest_weight_message(vs: set[Vertex], graph: LamportGraph) -> Optional[Message]: + """Find the message with the highest voting weight in a set.""" + if not vs: + return None + best = max(vs, key=lambda v: graph.vertex_weight(v)) + return best.m + + +def _vote_weight_for(vs: set[Vertex], round_t: int, + target_msg: Optional[Message], target_binary: Optional[int], + graph: LamportGraph) -> int: + """Compute total voting weight for a specific vote (l, b) in a voting set.""" + total = 0 + for v in vs: + vote = v.vote.get(round_t) + if vote is None: + continue + msg_match = (vote.message is None and target_msg is None) or \ + (vote.message is not None and target_msg is not None and + vote.message.compute_digest() == target_msg.compute_digest()) + bin_match = vote.binary == target_binary + if msg_match and bin_match: + total = graph.weight_system.weight_sum(total, graph.vertex_weight(v)) + return total + + +def _vote_weight_for_binary(vs: set[Vertex], round_t: int, + target_binary: int, + graph: LamportGraph) -> int: + """Compute total voting weight for a specific binary value in a voting set.""" + total = 0 + for v in vs: + vote = v.vote.get(round_t) + if vote is not None and vote.binary == target_binary: + total = graph.weight_system.weight_sum(total, graph.vertex_weight(v)) + return total + + +# --------------------------------------------------------------------------- +# Algorithm 8: Longest Chain Rule (Section 5.8) +# --------------------------------------------------------------------------- + +def _update_leader_stream(leader_stream: dict[int, list[tuple[int, Message]]], + message: Message, round_number: int) -> None: + """Algorithm 8: update the leader stream with a new leader candidate. + + The longest chain rule keeps only the chain with the highest deciding + round for each round leader. When a new round leader is decided at a + higher deciding round, previous entries with lower deciding rounds are + replaced. + + Pseudocode: + 1: procedure LONG_CHAIN(set{(uint,MESSAGE)}:S, MESSAGE:m, uint:s) + 2: if there is no (l, t) ∈ S with t > s then + 3: S <- {(l, t) ∈ S | t < s} ∪ (s, m) + 4: end if + 5: return S + 6: end procedure + """ + if round_number not in leader_stream: + leader_stream[round_number] = [] + + entries = leader_stream[round_number] + + # Check if there's already an entry with a higher deciding round + has_higher = any(t > round_number for (t, _) in entries) + if has_higher: + return + + # Remove entries with lower deciding rounds, add new one + leader_stream[round_number] = [ + (t, m) for (t, m) in entries if t < round_number + ] + [(round_number, message)] diff --git a/src/crisis/weight.py b/src/crisis/weight.py new file mode 100644 index 0000000..b81ea41 --- /dev/null +++ b/src/crisis/weight.py @@ -0,0 +1,190 @@ +""" +Weight Systems (Section 3.1.1) + +Definition 3.1 (Weight system): Let MESSAGE be the metric space of all +messages and (W, ≤) a totally ordered set. Then the tuple (W, w, ⊕, c_min) +is a *weight system* if w is a function + + w : MESSAGE -> W (Eq. 3) + +that assigns an element of W to any message, c_min ∈ W is a constant called +the *weight threshold*, and ⊕ is a function + + ⊕ : W × W -> W (Eq. 4) + +called the *weight sum*, such that: + + - Tamper proof: w(m) >= c_min and m_hat ≠ m implies w(m_hat) < c_min + with high probability. + - Uniqueness: m ≠ m_hat implies w(m) ≠ w(m_hat) with high probability. + - Summability: (W, ⊕) is a totally ordered, abelian group. + +The weight w(m) is interpreted as the amount of voting power m holds to +influence total order generation. + +This module provides: + 1. An abstract WeightSystem protocol + 2. A concrete Proof-of-Work implementation (Hashcash-style) + +The PoW weight function counts leading zero bits of H(m), similar to Bitcoin's +difficulty mechanism (Nakamoto, 2009; Beck, 2002). +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Protocol + +from crisis.crypto import digest, count_leading_zero_bits +from crisis.message import Message + + +# --------------------------------------------------------------------------- +# Abstract weight system +# --------------------------------------------------------------------------- + +class WeightSystem(Protocol): + """Protocol defining the weight system interface (Definition 3.1). + + Any concrete weight system must provide: + - weight(): Compute w(m) for a message + - threshold: The minimum weight c_min + - weight_sum(): Compute ⊕ for two weights + """ + + @property + def threshold(self) -> int: + """c_min: the minimum weight threshold. + + Messages with weight below this are rejected. This prevents Sybil + attacks by ensuring every message requires a minimum investment. + """ + ... + + def weight(self, message: Message) -> int: + """w(m): compute the weight of a message. + + The weight represents the voting power of this message in the + consensus protocol. + """ + ... + + def weight_sum(self, a: int, b: int) -> int: + """⊕: combine two weights. + + Must form a totally ordered abelian group. + For our purposes, ordinary integer addition suffices. + """ + ... + + def is_valid_weight(self, message: Message) -> bool: + """Check whether w(m) >= c_min.""" + ... + + +# --------------------------------------------------------------------------- +# Proof-of-Work weight system +# --------------------------------------------------------------------------- + +@dataclass +class ProofOfWorkWeight: + """A Hashcash-style Proof-of-Work weight system. + + The weight of a message is the number of leading zero bits in H(m). + This is similar to Bitcoin's mining: finding a message whose hash starts + with k zero bits requires approximately 2^k hash evaluations on average. + + The nonce field of the message is used to search for a valid hash, + analogous to Bitcoin's block header nonce. + + Attributes: + min_leading_zeros: c_min -- minimum leading zero bits required. + A value of 1 means every message needs at least + 1 leading zero bit (50% of hashes qualify). + """ + min_leading_zeros: int = 1 + + @property + def threshold(self) -> int: + return self.min_leading_zeros + + def weight(self, message: Message) -> int: + """Count leading zero bits in H(m). + + More leading zeros = more work performed = higher voting weight. + """ + h = message.compute_digest() + return count_leading_zero_bits(h) + + def weight_sum(self, a: int, b: int) -> int: + """Simple integer addition for combining weights. + + This satisfies the abelian group requirement: (Z, +) is a totally + ordered abelian group with identity 0. + """ + return a + b + + def is_valid_weight(self, message: Message) -> bool: + """Check w(m) >= c_min.""" + return self.weight(message) >= self.threshold + + def mine_nonce(self, id_bytes: bytes, digests: tuple[bytes, ...], + payload: bytes, target_weight: int | None = None) -> Message: + """Search for a nonce that produces a message meeting the weight target. + + This is the "nonce grinding" step: try successive nonce values until + H(m) has enough leading zero bits. + + Args: + id_bytes: The virtual process id for this message. + digests: Causal acknowledgements (digests of prior messages). + payload: The application payload. + target_weight: Minimum weight to achieve. Defaults to c_min. + + Returns: + A Message with a valid nonce. + """ + if target_weight is None: + target_weight = self.threshold + + nonce_int = 0 + while True: + nonce = nonce_int.to_bytes(8, "big") + msg = Message(nonce=nonce, id=id_bytes, digests=digests, payload=payload) + if self.weight(msg) >= target_weight: + return msg + nonce_int += 1 + + +# --------------------------------------------------------------------------- +# Difficulty Oracle (Section 5.4, Definition 5.2) +# --------------------------------------------------------------------------- + +@dataclass +class DifficultyOracle: + """Maps round numbers to difficulty values (Definition 5.2). + + The difficulty oracle d : N -> W maps natural numbers (rounds) onto + weights. The value d_r := d(r) is called the *round r difficulty*. + + The difficulty is designed so that the overall voting weight per round + is bounded: + + lim sum(w_s^G / d_s) <= 6 (Eq. 8) + + for all time parameters t, where w_s^G is the overall voting weight of + last vertices in round s. + + Example 1 (paper): A fixed constant that does not change over time. + This is the simplest starting point for a PoC. + """ + constant_difficulty: int = 4 + + def difficulty(self, round_number: int) -> int: + """d(r): return the difficulty for round r. + + For this PoC we use a fixed constant (paper Example 1). + A production system might adapt this based on observed voting + weight, similar to Bitcoin's difficulty adjustment. + """ + return self.constant_difficulty diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_crypto.py b/tests/test_crypto.py new file mode 100644 index 0000000..375d9e8 --- /dev/null +++ b/tests/test_crypto.py @@ -0,0 +1,57 @@ +"""Tests for the crypto module (random oracle model).""" + +from crisis.crypto import ( + digest, digest_hex, verify_digest, + least_significant_bit, count_leading_zero_bits, + DIGEST_LENGTH, +) + + +def test_digest_returns_32_bytes(): + h = digest(b"hello") + assert len(h) == DIGEST_LENGTH == 32 + + +def test_digest_is_deterministic(): + assert digest(b"test") == digest(b"test") + + +def test_digest_different_inputs_different_outputs(): + assert digest(b"a") != digest(b"b") + + +def test_digest_hex_matches(): + h = digest(b"hello") + assert digest_hex(b"hello") == h.hex() + + +def test_verify_digest(): + h = digest(b"data") + assert verify_digest(b"data", h) + assert not verify_digest(b"other", h) + + +def test_least_significant_bit(): + # 0x00 -> LSB = 0, 0x01 -> LSB = 1 + assert least_significant_bit(b"\x00") == 0 + assert least_significant_bit(b"\x01") == 1 + assert least_significant_bit(b"\x02") == 0 + assert least_significant_bit(b"\x03") == 1 + assert least_significant_bit(b"\xff") == 1 + assert least_significant_bit(b"\xfe") == 0 + + +def test_count_leading_zero_bits(): + assert count_leading_zero_bits(b"\xff") == 0 + assert count_leading_zero_bits(b"\x7f") == 1 + assert count_leading_zero_bits(b"\x3f") == 2 + assert count_leading_zero_bits(b"\x00\xff") == 8 + assert count_leading_zero_bits(b"\x00\x00\x01") == 23 + assert count_leading_zero_bits(b"\x00") == 8 + + +def test_empty_digest_is_well_defined(): + """Paper: 'Acknowledgement of the empty string is defined as H(∅)'.""" + h = digest(b"") + assert len(h) == 32 + assert h == digest(b"") # deterministic diff --git a/tests/test_graph.py b/tests/test_graph.py new file mode 100644 index 0000000..cb1676d --- /dev/null +++ b/tests/test_graph.py @@ -0,0 +1,218 @@ +"""Tests for the Lamport graph with integrity checks.""" + +import os +import pytest +from crisis.crypto import digest +from crisis.graph import LamportGraph +from crisis.message import Message, Vertex, ID_LENGTH, NONCE_LENGTH +from crisis.weight import ProofOfWorkWeight + + +def make_id(name: str) -> bytes: + return digest(name.encode())[:ID_LENGTH] + + +def make_nonce(n: int = 0) -> bytes: + return n.to_bytes(NONCE_LENGTH, "big") + + +def make_graph(pow_zeros: int = 0) -> LamportGraph: + return LamportGraph(weight_system=ProofOfWorkWeight(min_leading_zeros=pow_zeros)) + + +class TestLamportGraphExtension: + + def test_extend_single_message(self): + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("alice"), payload=b"hello") + v = g.extend(msg) + assert v is not None + assert g.vertex_count() == 1 + + def test_extend_chain(self): + """Messages from the same id must form a chain.""" + g = make_graph() + m1 = Message(nonce=make_nonce(0), id=make_id("alice"), payload=b"first") + v1 = g.extend(m1) + assert v1 is not None + + m2 = Message( + nonce=make_nonce(1), id=make_id("alice"), + digests=(m1.compute_digest(),), + payload=b"second" + ) + v2 = g.extend(m2) + assert v2 is not None + assert g.vertex_count() == 2 + + def test_reject_duplicate(self): + """No two equivalent vertices in the same graph.""" + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("alice"), payload=b"x") + g.extend(msg) + v2 = g.extend(msg) + assert v2 is None # Rejected: duplicate + assert g.vertex_count() == 1 + + def test_reject_missing_reference(self): + """Digests must reference existing vertices.""" + g = make_graph() + fake_digest = digest(b"nonexistent") + msg = Message( + nonce=make_nonce(), id=make_id("alice"), + digests=(fake_digest,), payload=b"orphan" + ) + v = g.extend(msg) + assert v is None # Rejected + + def test_reject_broken_chain(self): + """Second message from same id must reference a same-id vertex.""" + g = make_graph() + id_a = make_id("alice") + id_b = make_id("bob") + + m1 = Message(nonce=make_nonce(0), id=id_a, payload=b"first") + g.extend(m1) + + m_bob = Message(nonce=make_nonce(1), id=id_b, payload=b"bob's msg") + g.extend(m_bob) + + # Alice's second message references bob but not herself -> rejected + m2 = Message( + nonce=make_nonce(2), id=id_a, + digests=(m_bob.compute_digest(),), + payload=b"broken chain" + ) + v = g.extend(m2) + assert v is None + + +class TestCausality: + + def _build_chain(self): + """Build a simple 3-message chain: m1 <- m2 <- m3.""" + g = make_graph() + id_a = make_id("alice") + m1 = Message(nonce=make_nonce(0), id=id_a, payload=b"m1") + v1 = g.extend(m1) + + m2 = Message(nonce=make_nonce(1), id=id_a, + digests=(m1.compute_digest(),), payload=b"m2") + v2 = g.extend(m2) + + m3 = Message(nonce=make_nonce(2), id=id_a, + digests=(m2.compute_digest(),), payload=b"m3") + v3 = g.extend(m3) + + return g, v1, v2, v3 + + def test_direct_causes(self): + g, v1, v2, v3 = self._build_chain() + causes_of_v3 = g.direct_causes(v3) + assert v2 in causes_of_v3 + assert v1 not in causes_of_v3 + + def test_direct_effects(self): + g, v1, v2, v3 = self._build_chain() + effects_of_v1 = g.direct_effects(v1) + assert v2 in effects_of_v1 + assert v3 not in effects_of_v1 # v3 is indirect + + def test_past(self): + """G_v: the past of v contains all its causes.""" + g, v1, v2, v3 = self._build_chain() + past_of_v3 = g.past(v3) + assert v1 in past_of_v3 + assert v2 in past_of_v3 + assert v3 in past_of_v3 # reflexive + + def test_future(self): + g, v1, v2, v3 = self._build_chain() + future_of_v1 = g.future(v1) + assert v2 in future_of_v1 + assert v3 in future_of_v1 + assert v1 in future_of_v1 # reflexive + + def test_is_cause_of(self): + g, v1, v2, v3 = self._build_chain() + assert g.is_cause_of(v1, v3) + assert g.is_cause_of(v1, v2) + assert not g.is_cause_of(v3, v1) + + def test_timelike(self): + g, v1, v2, v3 = self._build_chain() + assert g.are_timelike(v1, v3) + assert g.are_timelike(v3, v1) + + def test_spacelike(self): + """Two independent vertices are spacelike.""" + g = make_graph() + m_a = Message(nonce=make_nonce(0), id=make_id("alice"), payload=b"a") + m_b = Message(nonce=make_nonce(0), id=make_id("bob"), payload=b"b") + va = g.extend(m_a) + vb = g.extend(m_b) + assert g.are_spacelike(va, vb) + assert not g.are_timelike(va, vb) + + +class TestInvarianceOfThePast: + """Theorem 3.7: The past of equivalent vertices in two Lamport graphs + have the same cardinality.""" + + def test_past_invariance_simple(self): + """Same message in two different graphs has same-size past.""" + g1 = make_graph() + g2 = make_graph() + id_a = make_id("alice") + + m1 = Message(nonce=make_nonce(0), id=id_a, payload=b"genesis") + m2 = Message(nonce=make_nonce(1), id=id_a, + digests=(m1.compute_digest(),), payload=b"second") + + # Add to both graphs + g1.extend(m1) + v1_in_g1 = g1.extend(m2) + + g2.extend(m1) + v1_in_g2 = g2.extend(m2) + + # Past should be the same size + assert len(g1.past(v1_in_g1)) == len(g2.past(v1_in_g2)) + + +class TestMessageGeneration: + + def test_generate_first_message(self): + g = make_graph() + msg = g.generate_message(make_id("alice"), b"hello") + v = g.extend(msg) + assert v is not None + assert v.payload == b"hello" + + def test_generate_chain(self): + g = make_graph() + pid = make_id("alice") + m1 = g.generate_message(pid, b"first") + g.extend(m1) + + m2 = g.generate_message(pid, b"second") + v2 = g.extend(m2) + assert v2 is not None + # Second message should reference the first + assert m1.compute_digest() in m2.digests + + def test_generate_cross_references(self): + """Messages should reference vertices from other process ids.""" + g = make_graph() + pid_a = make_id("alice") + pid_b = make_id("bob") + + m_a = g.generate_message(pid_a, b"alice's msg") + g.extend(m_a) + + m_b = g.generate_message(pid_b, b"bob's msg") + g.extend(m_b) + + # Alice's second message should reference bob's message + m_a2 = g.generate_message(pid_a, b"alice second") + assert m_b.compute_digest() in m_a2.digests or m_a.compute_digest() in m_a2.digests diff --git a/tests/test_message.py b/tests/test_message.py new file mode 100644 index 0000000..dee516e --- /dev/null +++ b/tests/test_message.py @@ -0,0 +1,125 @@ +"""Tests for the message and vertex data structures.""" + +import pytest +from crisis.crypto import digest, DIGEST_LENGTH +from crisis.message import ( + Message, Vertex, Vote, + NONCE_LENGTH, ID_LENGTH, NUM_DIGESTS_LENGTH, + EMPTY_MESSAGE_DIGEST, +) + + +def make_id(name: str) -> bytes: + return digest(name.encode())[:ID_LENGTH] + + +def make_nonce(n: int = 0) -> bytes: + return n.to_bytes(NONCE_LENGTH, "big") + + +class TestMessage: + + def test_create_minimal_message(self): + msg = Message(nonce=make_nonce(), id=make_id("test"), digests=(), payload=b"") + assert msg.num_digests == 0 + + def test_nonce_length_validation(self): + with pytest.raises(ValueError, match="nonce"): + Message(nonce=b"\x00", id=make_id("x")) + + def test_id_length_validation(self): + with pytest.raises(ValueError, match="id"): + Message(nonce=make_nonce(), id=b"\x00") + + def test_digest_length_validation(self): + with pytest.raises(ValueError, match="digest"): + Message(nonce=make_nonce(), id=make_id("x"), + digests=(b"\x00",)) + + def test_serialize_roundtrip_deterministic(self): + msg = Message(nonce=make_nonce(42), id=make_id("proc1"), + digests=(), payload=b"hello world") + serialized = msg.serialize() + assert isinstance(serialized, bytes) + # Same message serializes the same way + assert msg.serialize() == serialized + + def test_compute_digest_deterministic(self): + msg = Message(nonce=make_nonce(), id=make_id("test"), payload=b"data") + d1 = msg.compute_digest() + d2 = msg.compute_digest() + assert d1 == d2 + assert len(d1) == DIGEST_LENGTH + + def test_different_messages_different_digests(self): + m1 = Message(nonce=make_nonce(1), id=make_id("a"), payload=b"x") + m2 = Message(nonce=make_nonce(2), id=make_id("a"), payload=b"x") + assert m1.compute_digest() != m2.compute_digest() + + def test_message_with_digests(self): + parent = Message(nonce=make_nonce(), id=make_id("a"), payload=b"parent") + child = Message( + nonce=make_nonce(1), id=make_id("a"), + digests=(parent.compute_digest(),), + payload=b"child" + ) + assert child.num_digests == 1 + assert child.digests[0] == parent.compute_digest() + + def test_message_is_immutable(self): + msg = Message(nonce=make_nonce(), id=make_id("x"), payload=b"y") + with pytest.raises(AttributeError): + msg.nonce = b"\x00" * NONCE_LENGTH + + +class TestVertex: + + def test_vertex_wraps_message(self): + msg = Message(nonce=make_nonce(), id=make_id("proc"), payload=b"data") + v = Vertex(m=msg) + assert v.nonce == msg.nonce + assert v.id == msg.id + assert v.payload == msg.payload + assert v.digests == msg.digests + + def test_vertex_default_state(self): + msg = Message(nonce=make_nonce(), id=make_id("x")) + v = Vertex(m=msg) + assert v.round is None + assert v.is_last is None + assert v.svp == [] + assert v.vote == {} + assert v.total_position is None + + def test_vertex_equivalence(self): + """Definition 3.3: two vertices are equivalent if v.m = v_hat.m""" + msg = Message(nonce=make_nonce(), id=make_id("x"), payload=b"same") + v1 = Vertex(m=msg) + v2 = Vertex(m=msg) + assert v1.equivalent_to(v2) + assert v1 == v2 + assert hash(v1) == hash(v2) + + def test_vertex_non_equivalence(self): + m1 = Message(nonce=make_nonce(1), id=make_id("x")) + m2 = Message(nonce=make_nonce(2), id=make_id("x")) + v1 = Vertex(m=m1) + v2 = Vertex(m=m2) + assert not v1.equivalent_to(v2) + assert v1 != v2 + + +class TestVote: + + def test_vote_undecided(self): + v = Vote(message=None, binary=None) + assert "∅" in repr(v) + assert "⊥" in repr(v) + + def test_vote_with_message(self): + msg = Message(nonce=make_nonce(), id=make_id("x")) + v = Vote(message=msg, binary=1) + assert v.binary == 1 + + def test_empty_message_digest(self): + assert EMPTY_MESSAGE_DIGEST == digest(b"") diff --git a/tests/test_order.py b/tests/test_order.py new file mode 100644 index 0000000..239b0e6 --- /dev/null +++ b/tests/test_order.py @@ -0,0 +1,126 @@ +"""Tests for total order computation.""" + +from crisis.crypto import digest +from crisis.graph import LamportGraph +from crisis.message import Message, ID_LENGTH, NONCE_LENGTH +from crisis.order import LeaderStream, compute_order, _kahns_total_order +from crisis.weight import ProofOfWorkWeight + + +def make_id(name: str) -> bytes: + return digest(name.encode())[:ID_LENGTH] + + +def make_nonce(n: int = 0) -> bytes: + return n.to_bytes(NONCE_LENGTH, "big") + + +def make_graph() -> LamportGraph: + return LamportGraph(weight_system=ProofOfWorkWeight(min_leading_zeros=0)) + + +class TestLeaderStream: + + def test_empty_stream(self): + ls = LeaderStream() + assert ls.max_round() == -1 + assert ls.get_leader(0) is None + + def test_add_leader(self): + ls = LeaderStream() + msg = Message(nonce=make_nonce(), id=make_id("leader"), payload=b"L") + updated = ls.update(0, 1, msg) + assert updated is True + assert ls.get_leader(0) is msg + + def test_higher_deciding_round_replaces(self): + ls = LeaderStream() + m1 = Message(nonce=make_nonce(1), id=make_id("l1"), payload=b"old") + m2 = Message(nonce=make_nonce(2), id=make_id("l2"), payload=b"new") + + ls.update(0, 1, m1) + ls.update(0, 2, m2) + + assert ls.get_leader(0) is m2 + + def test_lower_deciding_round_rejected(self): + ls = LeaderStream() + m1 = Message(nonce=make_nonce(1), id=make_id("l1"), payload=b"first") + m2 = Message(nonce=make_nonce(2), id=make_id("l2"), payload=b"late") + + ls.update(0, 5, m1) + updated = ls.update(0, 3, m2) + + assert updated is False + assert ls.get_leader(0) is m1 + + def test_all_leaders_sorted(self): + ls = LeaderStream() + m0 = Message(nonce=make_nonce(0), id=make_id("l0"), payload=b"r0") + m1 = Message(nonce=make_nonce(1), id=make_id("l1"), payload=b"r1") + m2 = Message(nonce=make_nonce(2), id=make_id("l2"), payload=b"r2") + + ls.update(2, 3, m2) + ls.update(0, 1, m0) + ls.update(1, 2, m1) + + leaders = ls.all_leaders() + rounds = [r for r, _ in leaders] + assert rounds == sorted(rounds) + + +class TestKahnsAlgorithm: + + def test_empty_input(self): + g = make_graph() + result = _kahns_total_order([], g) + assert result == [] + + def test_single_vertex(self): + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("x"), payload=b"only") + v = g.extend(msg) + result = _kahns_total_order([v], g) + assert result == [v] + + def test_chain_order(self): + """A chain should be ordered causes-first.""" + g = make_graph() + pid = make_id("alice") + m1 = Message(nonce=make_nonce(0), id=pid, payload=b"first") + v1 = g.extend(m1) + + m2 = Message(nonce=make_nonce(1), id=pid, + digests=(m1.compute_digest(),), payload=b"second") + v2 = g.extend(m2) + + m3 = Message(nonce=make_nonce(2), id=pid, + digests=(m2.compute_digest(),), payload=b"third") + v3 = g.extend(m3) + + result = _kahns_total_order([v1, v2, v3], g) + # Causes come first + assert result.index(v1) < result.index(v2) + assert result.index(v2) < result.index(v3) + + def test_respects_causality(self): + """Total order must be consistent with causal order.""" + g = make_graph() + m_a = Message(nonce=make_nonce(0), id=make_id("alice"), payload=b"a") + va = g.extend(m_a) + + m_b = Message(nonce=make_nonce(0), id=make_id("bob"), payload=b"b") + vb = g.extend(m_b) + + # Carol references both alice and bob + m_c = Message( + nonce=make_nonce(1), id=make_id("carol"), + digests=(m_a.compute_digest(), m_b.compute_digest()), + payload=b"c" + ) + vc = g.extend(m_c) + + result = _kahns_total_order([va, vb, vc], g) + # Carol must come after both alice and bob + assert result.index(va) < result.index(vc) + assert result.index(vb) < result.index(vc) diff --git a/tests/test_rounds.py b/tests/test_rounds.py new file mode 100644 index 0000000..96feb6f --- /dev/null +++ b/tests/test_rounds.py @@ -0,0 +1,110 @@ +"""Tests for virtual synchronous rounds.""" + +from crisis.crypto import digest +from crisis.graph import LamportGraph +from crisis.message import Message, ID_LENGTH, NONCE_LENGTH +from crisis.rounds import compute_rounds, max_round, last_vertices_in_round, vertices_in_round +from crisis.weight import ProofOfWorkWeight, DifficultyOracle + + +def make_id(name: str) -> bytes: + return digest(name.encode())[:ID_LENGTH] + + +def make_nonce(n: int = 0) -> bytes: + return n.to_bytes(NONCE_LENGTH, "big") + + +def make_graph() -> LamportGraph: + return LamportGraph(weight_system=ProofOfWorkWeight(min_leading_zeros=0)) + + +class TestRoundComputation: + + def test_single_vertex_round_zero(self): + """A single vertex with no causes is in round 0.""" + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("alice"), payload=b"genesis") + v = g.extend(msg) + compute_rounds(g, DifficultyOracle(constant_difficulty=1)) + assert v.round == 0 + + def test_single_vertex_is_last(self): + """Round 0 vertices are always 'last' (bootstrapping).""" + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("alice")) + v = g.extend(msg) + compute_rounds(g, DifficultyOracle(constant_difficulty=1)) + assert v.is_last is True + + def test_chain_grows_rounds(self): + """A chain of messages should produce increasing round numbers.""" + g = make_graph() + pid = make_id("alice") + difficulty = DifficultyOracle(constant_difficulty=0) # Low difficulty + + # Create a chain + prev_msg = None + vertices = [] + for i in range(5): + digests = (prev_msg.compute_digest(),) if prev_msg else () + msg = Message(nonce=make_nonce(i), id=pid, digests=digests, payload=f"msg{i}".encode()) + v = g.extend(msg) + vertices.append(v) + prev_msg = msg + + compute_rounds(g, difficulty, connectivity_k=0) + + # All should have round numbers assigned + for v in vertices: + assert v.round is not None + + # First vertex is round 0 + assert vertices[0].round == 0 + + def test_max_round_empty_graph(self): + g = make_graph() + assert max_round(g) == 0 + + def test_max_round_with_vertices(self): + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("x")) + g.extend(msg) + compute_rounds(g, DifficultyOracle(constant_difficulty=1)) + assert max_round(g) == 0 + + def test_last_vertices_in_round(self): + g = make_graph() + msg = Message(nonce=make_nonce(), id=make_id("alice")) + g.extend(msg) + compute_rounds(g, DifficultyOracle(constant_difficulty=1)) + lasts = last_vertices_in_round(g, 0) + assert len(lasts) == 1 + + def test_multiple_ids_same_round(self): + """Multiple independent vertices are all in round 0.""" + g = make_graph() + for name in ["alice", "bob", "carol"]: + msg = Message(nonce=make_nonce(), id=make_id(name), payload=name.encode()) + g.extend(msg) + + compute_rounds(g, DifficultyOracle(constant_difficulty=1)) + + r0 = vertices_in_round(g, 0) + assert len(r0) == 3 + + def test_round_invariance(self): + """Proposition 5.3: equivalent vertices in different graphs have same round.""" + g1 = make_graph() + g2 = make_graph() + difficulty = DifficultyOracle(constant_difficulty=1) + + msg = Message(nonce=make_nonce(), id=make_id("alice"), payload=b"genesis") + v1 = g1.extend(msg) + v2 = g2.extend(msg) + + compute_rounds(g1, difficulty) + compute_rounds(g2, difficulty) + + assert v1.round == v2.round + assert v1.is_last == v2.is_last diff --git a/tests/test_simulation.py b/tests/test_simulation.py new file mode 100644 index 0000000..a19705f --- /dev/null +++ b/tests/test_simulation.py @@ -0,0 +1,55 @@ +"""Integration test: run the full simulation and verify basic properties.""" + +from crisis.demo import Simulation + + +class TestSimulation: + + def test_simulation_runs(self): + """The simulation should complete without errors.""" + sim = Simulation(num_honest=3, num_byzantine=0, seed=42) + results = sim.run(num_steps=5, verbose=False) + assert len(results) == 5 + + def test_graphs_grow(self): + """Each step should add messages to the graphs.""" + sim = Simulation(num_honest=2, seed=42) + sim.run(num_steps=3, verbose=False) + for node in sim.nodes: + assert node.graph.vertex_count() > 0 + + def test_honest_nodes_same_graph_size(self): + """All honest nodes should have the same number of vertices + (since all messages are delivered to all nodes).""" + sim = Simulation(num_honest=3, seed=42) + sim.run(num_steps=5, verbose=False) + sizes = [n.graph.vertex_count() for n in sim.nodes] + assert all(s == sizes[0] for s in sizes) + + def test_rounds_are_computed(self): + """After running, vertices should have round numbers.""" + sim = Simulation(num_honest=3, seed=42) + sim.run(num_steps=5, verbose=False) + for node in sim.nodes: + for v in node.graph.all_vertices(): + assert v.round is not None + + def test_with_byzantine_node(self): + """Simulation should handle byzantine nodes without crashing.""" + sim = Simulation(num_honest=3, num_byzantine=1, seed=42) + results = sim.run(num_steps=5, verbose=False) + assert len(results) == 5 + + def test_deterministic_with_seed(self): + """Same seed should produce the same results.""" + sim1 = Simulation(num_honest=3, seed=123) + r1 = sim1.run(num_steps=3, verbose=False) + + sim2 = Simulation(num_honest=3, seed=123) + r2 = sim2.run(num_steps=3, verbose=False) + + # Same number of messages at each step + for s1, s2 in zip(r1, r2): + assert len(s1["new_messages"]) == len(s2["new_messages"]) + for ns1, ns2 in zip(s1["node_states"], s2["node_states"]): + assert ns1["vertices"] == ns2["vertices"] diff --git a/tests/test_weight.py b/tests/test_weight.py new file mode 100644 index 0000000..e318312 --- /dev/null +++ b/tests/test_weight.py @@ -0,0 +1,78 @@ +"""Tests for the weight system and difficulty oracle.""" + +from crisis.crypto import digest +from crisis.message import Message, ID_LENGTH, NONCE_LENGTH +from crisis.weight import ProofOfWorkWeight, DifficultyOracle + + +def make_id(name: str) -> bytes: + return digest(name.encode())[:ID_LENGTH] + + +def make_nonce(n: int = 0) -> bytes: + return n.to_bytes(NONCE_LENGTH, "big") + + +class TestProofOfWorkWeight: + + def test_weight_is_non_negative(self): + ws = ProofOfWorkWeight(min_leading_zeros=0) + msg = Message(nonce=make_nonce(), id=make_id("x"), payload=b"test") + assert ws.weight(msg) >= 0 + + def test_weight_sum_is_additive(self): + ws = ProofOfWorkWeight() + assert ws.weight_sum(3, 5) == 8 + assert ws.weight_sum(0, 0) == 0 + + def test_threshold(self): + ws = ProofOfWorkWeight(min_leading_zeros=2) + assert ws.threshold == 2 + + def test_is_valid_weight_with_zero_threshold(self): + ws = ProofOfWorkWeight(min_leading_zeros=0) + msg = Message(nonce=make_nonce(), id=make_id("x")) + assert ws.is_valid_weight(msg) # Everything passes with 0 + + def test_mine_nonce_finds_valid_message(self): + ws = ProofOfWorkWeight(min_leading_zeros=1) + msg = ws.mine_nonce( + id_bytes=make_id("miner"), + digests=(), + payload=b"test payload", + target_weight=1 + ) + assert ws.weight(msg) >= 1 + assert ws.is_valid_weight(msg) + + def test_different_nonces_different_weights(self): + """Uniqueness property: different messages have different weights (w.h.p.).""" + ws = ProofOfWorkWeight() + weights = set() + for i in range(20): + msg = Message(nonce=make_nonce(i), id=make_id("x"), payload=b"same") + weights.add(ws.weight(msg)) + # Not all the same (with overwhelming probability) + assert len(weights) > 1 + + def test_tamper_proof(self): + """Changing a message should change its weight (w.h.p.).""" + ws = ProofOfWorkWeight() + msg1 = Message(nonce=make_nonce(42), id=make_id("x"), payload=b"original") + msg2 = Message(nonce=make_nonce(42), id=make_id("x"), payload=b"tampered") + # Weights differ because digests differ + # (this is probabilistic, but extremely likely) + assert msg1.compute_digest() != msg2.compute_digest() + + +class TestDifficultyOracle: + + def test_constant_difficulty(self): + d = DifficultyOracle(constant_difficulty=5) + assert d.difficulty(0) == 5 + assert d.difficulty(100) == 5 + assert d.difficulty(999) == 5 + + def test_default_difficulty(self): + d = DifficultyOracle() + assert d.difficulty(0) == 4

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