From a373bc9eee044f6e646bda0b0a81dfb5d58af748 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:23:44 -0300 Subject: [PATCH 01/19] update: deps and version --- .gitignore | 2 ++ merkly/accelerator/build.sh | 2 ++ pyproject.toml | 26 ++++++++++++++------------ test/conftest.py | 10 ++++++++++ 4 files changed, 28 insertions(+), 12 deletions(-) create mode 100755 merkly/accelerator/build.sh create mode 100644 test/conftest.py diff --git a/.gitignore b/.gitignore index 4581abf..ff34216 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules +target + .hypothesis .vscode *cache* diff --git a/merkly/accelerator/build.sh b/merkly/accelerator/build.sh new file mode 100755 index 0000000..2f0eea5 --- /dev/null +++ b/merkly/accelerator/build.sh @@ -0,0 +1,2 @@ +#!/bin/sh +cargo b -r --out-dir . -Z unstable-options \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index a87b8bf..8c32d3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "merkly" -version = "1.1.0" +version = "1.2.0-beta" description = "🌳 The simple and easy implementation of Merkle Tree" authors = ["Lucas Oliveira "] repository = "https://github.com/olivmath/merkly.git" @@ -26,21 +26,22 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Security :: Cryptography" + "Topic :: Security :: Cryptography", ] [tool.poetry.dependencies] - pycryptodome = "^3.19.0" - pydantic = "^1.10.2" - python = "^3.8" +pycryptodome = "^3.19.0" +pydantic = "^1.10.2" +python = "^3.8" +keccaky = "^0.3.1" [tool.poetry.dev-dependencies] - conventional-pre-commit = "^3.0.0" - pre-commit = "^3.0.3" - coverage = "^7.2.7" - pyclean = "^2.2.0" - pytest = "^7.2.1" - black = "^23.1.0" +conventional-pre-commit = "^3.0.0" +pre-commit = "^3.0.3" +coverage = "^7.2.7" +pyclean = "^2.2.0" +pytest = "^7.2.1" +black = "^23.1.0" [build-system] requires = ["poetry-core>=1.0.0"] @@ -52,6 +53,7 @@ lint = "scripts.poetry:lint" [tool.pytest.ini_options] markers = [ + "ffi: mark test as requiring Rust FFI compilation (deselect with '-m \"not ffi\"')", "merkletreejs: marks tests as merkletreejs (deselect with '-m \"not merkletreejs\"')", "benchmark: marks tests as benchmark (deselect with '-m \"not benchmark\"')", -] \ No newline at end of file +] diff --git a/test/conftest.py b/test/conftest.py new file mode 100644 index 0000000..8022057 --- /dev/null +++ b/test/conftest.py @@ -0,0 +1,10 @@ +import subprocess + +from pytest import fixture + + +@fixture(scope="session", autouse=True) +def compile_rust_ffi(request): + if any("ffi" in item.keywords for item in request.session.items): + print("Compiling Rust FFI") + subprocess.run(["./build.sh"], cwd="./merkly/accelerator", check=True) From bc1dc4be71fa8f4312eacba317c8dc84bc76d515 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:25:18 -0300 Subject: [PATCH 02/19] add: tests to ffi mekle root --- test/accelerator/test_accelerator.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/accelerator/test_accelerator.py diff --git a/test/accelerator/test_accelerator.py b/test/accelerator/test_accelerator.py new file mode 100644 index 0000000..ba617a2 --- /dev/null +++ b/test/accelerator/test_accelerator.py @@ -0,0 +1,19 @@ +from merkly.accelerator.mtreers import MTreers +from merkly.mtree import MerkleTree +from keccaky import hash_it_bytes +from pytest import mark + + +@mark.ffi +def test_merkle_root_ffi(compile_rust_ffi): + leaves_short = ["a", "b", "c", "d"] + leaves_bytes = list(map(lambda x: hash_it_bytes(x.encode()), leaves_short)) + + tree = MerkleTree(leaves_short) + treers = MTreers() + + + root = tree.root + result = treers.make_root(leaves_bytes) + + assert list(root) == list(result) From 12d3a1097d505152893fb1feeb264f46e03909cc Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:25:44 -0300 Subject: [PATCH 03/19] add: ffi python side --- merkly/accelerator/mtreers.py | 80 +++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 merkly/accelerator/mtreers.py diff --git a/merkly/accelerator/mtreers.py b/merkly/accelerator/mtreers.py new file mode 100644 index 0000000..b8b1e6e --- /dev/null +++ b/merkly/accelerator/mtreers.py @@ -0,0 +1,80 @@ +from ctypes import CDLL, POINTER, c_size_t, c_ubyte, c_bool +from typing import List + +from merkly.node import Node + + +class MTreers: + def __init__(self) -> None: + self.lib = CDLL("./merkly/accelerator/libaccelerator.dylib") + + self.lib.make_root.argtypes = [POINTER(POINTER(c_ubyte)), c_size_t] + self.lib.make_root.restype = POINTER(c_ubyte) + + self.lib.free_root.argtypes = [POINTER(c_ubyte)] + self.lib.free_root.restype = None + + # self.lib.make_proof.argtypes = [ + # POINTER(POINTER(c_ubyte)), + # c_size_t, + # POINTER(c_ubyte), + # ] + # self.lib.make_proof.restype = POINTER(POINTER(c_ubyte)) + + # self.lib.verify.argtypes = [ + # POINTER(POINTER(c_ubyte)), + # c_size_t, + # POINTER(c_ubyte), + # ] + # self.lib.verify.restype = c_bool + + def make_root(self, leaves: List[bytes]) -> bytes: + len_leaves = len(leaves) + leaves_pointers = (POINTER(c_ubyte) * len_leaves)() + + for i, leaf in enumerate(leaves): + array_type = c_ubyte * 32 + leaves_pointers[i] = array_type(*leaf) + + root_ptr = self.lib.make_root(leaves_pointers, len_leaves) + root = bytes(root_ptr[:32]) + self.lib.free_root(root_ptr) + return root + + def make_proof(self, leaves: List[bytes], leaf: bytes) -> bytes: + leaf_pointer = (c_ubyte * 32)(*leaf) + len_leaves = len(leaves) + leaves_pointers = (POINTER(c_ubyte) * len_leaves)() + + for i, leaf in enumerate(leaves): + array_type = c_ubyte * 32 + leaves_pointers[i] = array_type(*leaf) + + result_pointers = self.lib.make_proof(leaves_pointers, len_leaves, leaf_pointer) + + result = [] + for i in range(len_leaves): + result = list(bytes(result_pointers[i][:33])) + flag = result[32] + data = result[:32] + result.append(Node(data=data, side=flag)) + return result + + def verify(self, proof: List[Node], leaf: bytes) -> bytes: + proof_bytes = [] + + for node in proof: + flag = node.side.value + data = node.data + proof_bytes.append([*data, flag]) + + len_proof = len(proof_bytes) + proof_pointers = (POINTER(c_ubyte) * len_proof)() + + for i, node in enumerate(proof_bytes): + array_type = c_ubyte * 33 + proof_pointers[i] = array_type(*node) + + leaf_pointer = (c_ubyte * 32)(*leaf) + + return self.lib.verify(proof_pointers, len_proof, leaf_pointer) From 9229f18d1c4ed10c4858695dc33b396f10bc7fb3 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:25:56 -0300 Subject: [PATCH 04/19] add: ffi rust side --- merkly/accelerator/Cargo.toml | 14 ++++ merkly/accelerator/libaccelerator.dylib | Bin 0 -> 301608 bytes merkly/accelerator/src/lib.rs | 105 ++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 merkly/accelerator/Cargo.toml create mode 100755 merkly/accelerator/libaccelerator.dylib create mode 100644 merkly/accelerator/src/lib.rs diff --git a/merkly/accelerator/Cargo.toml b/merkly/accelerator/Cargo.toml new file mode 100644 index 0000000..677d461 --- /dev/null +++ b/merkly/accelerator/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "accelerator" +version = "0.1.0" +edition = "2021" + +[dependencies] +tiny-keccak = { version = "2.0.2", features = ["keccak"] } + + +[lib] +crate-type = ["cdylib"] + +[profile.release] +strip = true diff --git a/merkly/accelerator/libaccelerator.dylib b/merkly/accelerator/libaccelerator.dylib new file mode 100755 index 0000000000000000000000000000000000000000..65dade7a4e64ca881143c845e7cd35d1623cd3f7 GIT binary patch literal 301608 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 >i+R$>42_EZ+nP3osCBG zdg_0K4??_Lw&Yf1DstUAE8B+OP-kUBdU95_9ylY$qcf5Jiwf9RcKUvbzC-KH=H~?q zYhWLG(|*?My?beQA~yH&_@>K&-6_A~OUlnv`4_GXbfGsRk9)%Ck3~B7I|y5fwOyg# ztoOIzZDIDPHD5pCcO|hjmH2|Dk6=CD`H%A{UHC7YmF`aDQ+k~EoZ>`2rQ*a{>2%)Z zo4xszyr0FZo&koC`weS<_1l6CxNBHX5nz^&P;0MrGkZ>ld|RdD*y>r`GP0ndY0XcF6KQd~x~nH?g~{U;9%Qzs@4`MK?}C5y*8~1?_wIDc`}Zg6jUE{A zH@bHdZTwYRsz$SDoHt#C*hDZNSej9BGg3D)@~2oyzmICCO*HZ?WSu{oQGK zzO>htytjjY(em*>PR_Yv?hDp^9YtEp>7vcd?$Db?`*wV#m8tkN&KrE%T5dvrZW?0P zxwRfJ7QdgF8QA}l(cUv^WO3&LBlg~XM(jiE+|OrlCJf&J>u#}p2l2_hd9~I}_qN;m zZ%*+3J*;i?6y=>L1O6uFEe}7)`s89p^LVPV$Bw2QTq!iIs>Gzcf+Llz^4<4SA%TZ|j(=oBsiRI*1!` z=+nF%Kl{Hxms7xl?oGG)siWVzegVO77~UTQ{{i?w7~QW6U8fp*)AD13U!ASGpWHlt zm0`_iC=V&Qak|m}y7J)v#YSL5 zWCn7zdmnx;6aSEhxF7j|wn3w7m5-S^f>&_sdt@wm=E&*j8EX16$O+YfJ^R-AcAl)@ z3**@%2S2Y&2y9qCG4NXB@TKkRhcA73$M8w=894Puk=v@Pnzq1c#(8F-2;S`RppPTR z*TVPjd=EU|w=A%UyLaVpWv_$tbaoys!IKQI%`6-EBfvvUulPEi#0-QNOvQ9 z56aUbn|g!$x~OwMTJkz6q|5<$GP1+IEA1l1`J$(L?Rj{TSf?-CmG*U&@s_*~jXJO$ z6>kAH&mdqU-(p|bLIaVXz`Tuf=gBb6AN|i^bWy@&9@ z^epnH<}ue7!Xr}2A9JA*`zmcY{d%xPW{ewjzwE9v^&1{X&O6Ghj|Sk~b^cWWtoPnQ6X^N6vn($js<=*04h}^YisR!xtG;)?P|Z%>w*?n!if!hpI8XG1>CU zFB--+)o;sY$+Yb)*+Jy$!#C5LGxBqMqRI~O3oa)eu%Ao2?C0jN{fu_}cl_1&5@j^*{fTn=9dgR@`|pYJ z6-M+`i$C%1&%CRK&lO^mLA%TR+1aPvf2Q~8&@}Pz*4j9X+b>yjhBo#7pS39)T5Zl}-$rc~^8Xfh_R=kd*~BS;FZZm?+`GP6egxiI z@3sKb7TyKGW8jsXQ+KL$qMOPFD*~_K(MIe!#{B=ctp@a6Ykrtx*{bZRSUG(R&V9GK zpPqai`CkM~LG%*EE7$5d2tT8#+#%#MfR2*oj^yKC-uR+?bYz_Brhkc?lP@J%CWXI` z{#iljp|1G18-Ye!N8D7D87Vks@)_gPf84yL;kH~nEn3* zX7%L9dCQ ziT|f$Aioa~^R<&X(3-&)wI>64rhcTSK7KK|$tj0@Us5*^|Is5G*e%*5cZP)Nk`A&#ev|@msn7}y}`dCOG zi_|{4W(|GS($5F9A)Zu8o&Vu?@R=JX1@_;7FZ_nhi#VqnK$a-4e&CrKq8gw6SG}FQ z!!Bfu^u=%V+CB1zIek{}UT1*fjppuXwTm&h84LGNUPU ze6{~`pZu3M7B|T;MeNS+8lGG;{k*5v5I=35hv=eDm7h+zsoae)9esH^_hU>)Cw5b2 zKmAnTgOqQfiSa$oI+Ol0qo`c|gk2RTIZG2h$QAI@^YAIk|58BN_pmdRJEV@-?*g8B zZ|Ay5!LQ{B$`7abdYz@($N#z;se!!jUmbIHA9%eg;#huJKjk!)o7#!Y;VM`jtTbS7W% zsl-)m^!tWddWvEx?7f3w!9TYt2McxhuJIZJJXWmy!8Fd-?J)z=F9J^ty}9WL`&`8s z{I103k@tr@V2^C*sKe&bo^cs5p$oCgh>P6wr^Uu9_6s-8;qIKe?FM~igR5!4dL=Ml z!5X?8zpH&Gi1NSOr2Kq5wO2Ute%q)1>Al7(@r;g>*@Fdxa2XzL2Abjnt^eb3{Il7d zw@!Qyl^e}hQdfHciu)Q*|65pVhb$kw@{8nH@i;$ayc&B0FsdAD?&%s=jcp$xi?)=w z|4X#-9nRCK+=G<+^0ng$dK!9hYIy5sivAku!@zf}xya!id58ig&(*Xw2e`D?u$SK< z(jqJ?C0{ zX{!?OJMEl_wl8ms51XjIlg3iYIF3{s^vAsm>=A^qpLHhhO!c)k@~JPJy~0>UpW>@} z9&&qQe`0+ePD9owwLjXL*X&>>@SBw7&ItB7PQP>H5d1D1K2y`r`*h^*HXS{V&VJgR zWf$1Ge3-IYlbz7{I$#;VTAV)>{H?Or=;Z;ME_Lo|1>fB_((f4C?zkgpf7{3V{m}l2 z8#vd)clJthYCh)<$vmSyP?T8fjrQ7CKT|1x@D^j$+GhLPxj#$vL7Dwa46C0AZCQIi zdEWNzL!hC(MoHNZ?DEe)Zdf*ZO*Q+iqj zPwhk2@Vt~~6Hn3JUz(fuk$S8`8A%B)fe!r;W>t96Hn>VexB#^ z?BIDW&oEEvTpsq9^LZBWJey|)Pw9p=Je9woiKpbCpQmiJ4xTwY!#uTj>)~ER$+jY% z(vK>5N^kE4P3L<8;Xl~(*YbIKplLdGZQ{FVaVK)Z zp|b|~fPe%alu2kD#m9CD@E_aOcK|Oc4Sd5ved($=2E|96G+#R?wZb@biDA9?>_zHI-~hx+Ifk*g1;o+;LGU1oI&#S zclGzZl#Z_EBJLM`w9Pb|e~%5m4S&1xIO+Vv1fF@^t3j+tRm8eo;nhS@cFT zSNowoYmx118HXSH$3t#O#hsL+1H6W9w`RyNpT?*dqF#LI-oN3&58>TMUBmfq=lyLV z51D~n`tdw(z-~*p9^O3_czW^1*#PeSQk%*Tq4&xQ)~$Ew33cSLJh}YL_s~jaNOl~# z=|9jl(5sfaxNFKl$8|B!_Wh8#r{+1=n&?uf&NgEYb8p7twTx5xjOSO}14S9-thd+S>AIss@Cr-vhsW=WbhK?tc6-_gpXsf1sSsm52_{bdR@lhqw5e=5JrEje`*X zYYr>u!&76w6OWZ%-SNE5V;#M^VL_r!xzT(-x?;!b)5}+^KfQce;=AYko4pYuMHy$9ZVFLAj6 z`088mRpr#13tivH|B4?KkA*IFRS-9QCLa4Be5A(WvEqxl-8-MVv^pV)g6kbK}g{HGEAb8EKYn}aXN#&2%7e4N7XbY#eM z@GD$)9FA|Y&a=Z~o!pZTBw*3~&;N*~lkcXVH_M@|p}}XNHUIU=w26=9DTg+RYsBs; zNPL(5^B>6MnugQMho3mTd}qD=UFBbd=dZ2hM$Kx zW8N^iw~f21Xal<2%KrAwL|gLv=i|?iT?1WW_hkpy{t~;9xp3qSeOUIs^4O}rQ*Jfo zwD$i99G?N-KZ9lMgkD(6lVGWxVZT2UEZ_YXVfl6fmNsDd1F(FV?9D;9lALU^=<>^D z?_X&rN%qckaB(Kt`$285?3IoFugF~S7e`J+k-N9R|6VJz@t`v=8O%o`Fo*{iHKqrT zCFJK^^cKm_NsRZu(ATz**L2;*KRP9sKc5_8tm!Cn?Je`a9eKx@zF@jiBM(<}D-baclEegw~4Z#2B$jK-fcO8onYZJLkm zi`{bMI@Vj`ZP5yi@p2m;-3uH6PqH1x(T8k`Sv+M^taaZW)jAq7Q1&E#WXft^T>6OS z!C<}Ye<{9NzUsD0UtI4EXg^6jReReexb_&_ zLBEYV%s7*oy)18*;Ne}nCw=R!E1!IFX5jZPev3W&MPc^YBIJqH?}L<;t|i>eWgVWw zliO}q*Yq>kisg>SI-56azt|qDiOusnbiRxb_rHX_CEBkG6Vp;nJW3NhuhMOd@9*`N ztQ^Yudfs&am-O`X6mQ@yav8LY;O;wgno7gFlcH~s@ z`?q-i#I5#xUmcGReyVoSq_*^dzE*7F4DKVC&bi*?^6I~vG1i*JV=7OiO)RE<@I-uk zC-_nM%;8>g)fhe9X}&dz^_tF{Cf7e>8Div<%S@-uYiY zx(D8a4v~)jnSuV937zzZ?zs!T+})ggoi{KHoWw^GS0o*C@V3e3;O*oYaL z8cHLFNp{2JT;|WCd3?`Xa*+Fkj+PrGo!KiUcOASU+Qq)(k#6!2>^Djx9~vdZLM$#r z9s2^kv~c01I?W4nFdg~XLY$N2zUEzd;a6F7#ht$@&z;zhBU2mm z&<$OgzC((S#=kZK8vGaA+T@|E+Jc@oLU-2O-%U;p&65cXUgqF&T9;rKs1L<^ zO1^5Gr5X!4zW2J=Yi3?qKZ|RiFZCbKB@Y{Maqnaq!{0b} zF@EypHeG8U3jYxPPNNwGXH~e6y@X=?qQD$3^v3GZ$M(}7Ip|`Nuke&j$|a}u;z4K8 zxeuMcO$TnB-E!Jmo79$xjiRBoqTS@htf>BPo(S<4aPcz?$lji5j7vYx|(+Apf4?3+B7rx+8QaV<(3 z*IfM34vuyZXW-x{&&ajzeGXE;vo?kQ4*E;~ zJU)0KcyQt{!i-IQ5C_kt5WCm?y zQbshScF8qp{m!KPqEw$HlgIMAl66>%o`c<8QZq(AoigTWyXA+O7qxMN(|6U>qxSFS zKKL07Z83%hvEKG1OZEOh0^VkFSGtf9>BzYL$PQ=j zFJSJ;yVLwNX!rZjKw*KcBlJhcUrt@+pgNyF^5O)wW_35unEu8l@xP3aQBrLVUPNxj zsxI#I0%waGpz##m&+BiDpPuNO7?!F!&WTIcLB22MZmz0I@|->f&Pw6=_%f>Eo8ha< z`vLC6W4-)VebM%U6Rd%nMUy`C=pK=Q!H|*nP8T^gw6`1~|6LmM_jv7sNvbE^Lpe!G zi4Bt6f?oD~h))9iY?{S5x{M580X%9QaH6y3XdKY=#yC2Rm%3IS6Xv}^umRIJ*Z&#m z)N%1%@ea;6@v{ctRk>GEzIUpe{GHcRZd_7-;_0i}2KtPV z)i7CS*fW74<08)Wk1%5Ba>HEj+v~tSca+_G`Gr8|3atGwGUcIaX3kGD4 z<%1)psG55@0!c8e{uf}lf&8iK>6d)L77U%VCm1yD_vqWh?-s_r7k$$WJbTe|wsNj^ zFS6Byt}ev}i?~?(oR638DcwN4G~CbD9rR9Z>`t_$a@!b#$~Ew8#piRF_zmG8Ou1(% z*8$$uei?OZcqhC+#e2bFmB)9g@*R9zsq(P_mOZ%=y3VNm&MBFzGY%g3V+DC^wf`YH z2q|~(5ONp}X_y>hKIRNrF`0Y)qBSGAZ;&#ovyzw+N9U6c=8-J{ACfJ0#_#aq4({i3 zV67iQo<#bnAF`ci!(`>^{SJNCeA5+pfPQYL9qlO`Mkml|O=%=z*7CJ)aM{Jq8+ z+czjJ@MnHU-L8`G23Lv43!mHJYQFReqdCa;8#>7e`4K+zS?03Yl*=1s>*kg{Ltff2 zc1!p(Gph9&b-PPKZq7|HNJ+i@F5?k*sIsSsXMCW`$v^^d=4ej8pI5@bN z-^3LXTXo|k@!Al)M{7e*#Xk#A6S>E9tMWOso}=#a60fzsTx}Hx%c8QaV(ZIkzr5tg zhVqgoH@W^VBL{OfcXS_Q{Q~b=;;R459H`v}Xv~8Bu>|a_OX8f{@!7S94^n3w_te7o zwbtfB*9P;VTvnmSSkugHXM%n>tIN4L>ix>SnL8Rw{0DOg9oLDiDPVrgpMhJ} z7Z*^R@^_vC9Ua+k1diZi>A-jEK@St1NT*){oy%^~8GrF!$45GpI-(P&-Yn=V0DYBG zuM@l|N5E05J^78ZEtw&EGE5H4P@!Tza;?~xk$2KJeiOx1cHzg!s4bo}5gD0WcL(iB zH#UBo@v z`+M^3t-j0ldxh|OX%DB9x;LA~FFiZZi(}r;lt)o(?-t&bHeOlcKOg(;;HXKJX@;d| z2h+^mT`#x;JAY)a{V|k{5RcGR=L$sjbDtM@?gXc@8w|7b9rgJ`!Do|4QWF71$Ma{F5=)hPUu8&gb`mbt`M-VcxTMKl4wlnbvB%>~P*G z*6#tHt@vY#fU&5tU&%h+37$EL^V-5~)dm}fSJ3tX@Ek8sA$Dv4unYty&ipPPj2urv zj+?mc%*lq;~xChfj**x6pd=FBv|G{7cR1BfOs2kq?3S=j^HN z=XbY$M@2?&fASBiKdphD_12z%bzi;a_8*n~fU?5rTN(>%0v~oPLq1b<_x*o#Nb0RL#3_i+uIvINn{VG>@1y6tDSyB0<)#m#B#_kl} zkrQnuw!kXZUWv|Qr4ImZ_*?n_Lor_(kNv-CD3+ll58rJFd3RU<+)v*T~}@+g6zI(@cv#(K&l68aNNKnp}h2O?&u4Xq@#D*?!3SZpB4D zVdGf#Ntko>VK@E<{Vp_Ok$6g=bBEDNcM_%jvdI%a=$+!aWYMrZ%v%lBHKAZS~`i!{IXOY<{7qyK1 z-a2pbV*|bI{rDXM=6$rg-z}LmH25dlu7P&YQ%fwrUebIe&q=fzd%>BP1YA#0S7+hr z$KC^AkE4~dnu;%d5ZJ=tR%_7m1Ex*0@bRKz*xc-+9gJ@}@~-z(xeDZ@_n3|Q24bTW zZ?YfwZdR@__Uzy{CCW8!B+8T}mARHO_4xcW_hHKIp`7}z_%uGg2HYgm+#~uX|7FrR z_rk*+U-xvk_%r!r`@~de-50SQ!{B@4(E-=x5f3{a+p793<6Cpl&Ezw?DmD#+J`>Urn)K>`t@&YpSQY@)$+)fV?(LNA-(ZF~HOhy@4df>Gbn z`4-`u^S`IR5i6#Rbh9{G%UPm)Vvar3(|-8Ln^8t7q42Qy=~n;eGHta&kw9;F7$kQzw+5=eI~EX@a^`TSo83L5%AA9cE^z|ibqeT zk+~Nq(FnN8PtZs{G?G5;%rtTv^Cf%PnZKL)|4G*JFPPipd7a7o0Ppl(a{AbUG<32v z$!gZjqsRvMdX3gFZF^1Q2S%&e3_n2@S$riXnH%BUT#?peo>9^SFW0(#W+r+Gzl9@} zZ94GNJw>^#pB4Ra`)5tB#Xl3h6fOP!o{shHpEYIw<+F-QqMsQ?#WC5hwdl>VUz6*H zN3Yxy{?+==JU@Tuvzlq2SoLcjdty(~4S~=6qdGn-n)88OA6lrLYBVpQjT-n?G5Uh| z#3pQZ(Rc{H$~ZP@&%NV6Z5go=+Ekerlgeymy{Z2up1QXP{RrI&n0DE9idBcZigmYO zggFXh3rS9J7M0&Afg8b9$N5*5ba;$Qgqx1@`-untV97b|<_8n}G$elds5eR<7C*fw z1)3thYB>01UBsdn@`oR3vwKuDhqmjnmyomYSLD+?W7W5zJ?yg|6eVmn{JB*_=__wO zIY1lHA*S23654MxZ(u*@S?sS|kFwiPu{t zdtG#p1Dt-!u?9D$!(;p20n%D%?p}=SSGDROsz7YIa`&vipLewR$tk*4ZB%qZ`7XRoy|mXLCR18RoCt+-*|-66Qtp-#XuJgFW(@($T(b-lfA{Pd#U@ zR_3;hWS%CTsSnLl*vdnh9lR45<-<6W??Se>bZ*bN-arQN$z$(G==B$34<~+0r|P

29D$H6c5Lq0xS%}Mz8_I{F6w}0iEmU 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%0DCQX&CERjFu!bh{< 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 *mut u8 { + let mut leaves = unsafe { slice::from_raw_parts(leaves_ptr, len_leaves) } + .iter() + .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 32).to_vec() }) + .collect::>>(); + let mut node = [0u8; 32]; + + while leaves.len() > 1 { + let mut next_level = Vec::new(); + + for leaf_pair in leaves.chunks(2) { + match leaf_pair { + [left, right] => hash_function(left, right, &mut node), + [left] => node.copy_from_slice(left), + _ => unreachable!(), + }; + next_level.push(node.to_vec()); + } + + leaves = next_level; + } + + let root = node; + let boxed_root = root.to_vec().into_boxed_slice(); + Box::into_raw(boxed_root) as *mut u8 +} + +/// # Safety +/// +#[no_mangle] +pub unsafe extern "C" fn free_root(ptr: *mut u8) { + unsafe { + let _ = Box::from_raw(slice::from_raw_parts_mut(ptr, 32)); + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn setup_leaves() -> Vec<[u8; 32]> { + vec![ + // a + [ + 58, 194, 37, 22, 141, 245, 66, 18, 162, 92, 28, 1, 253, 53, 190, 191, 234, 64, 143, + 218, 194, 227, 29, 221, 111, 128, 164, 187, 249, 165, 241, 203, + ], + // b + [ + 181, 85, 61, 227, 21, 224, 237, 245, 4, 217, 21, 10, 248, 45, 175, 165, 196, 102, + 127, 166, 24, 237, 10, 111, 25, 198, 155, 65, 22, 108, 85, 16, + ], + // c + [ + 11, 66, 182, 57, 60, 31, 83, 6, 15, 227, 221, 191, 205, 122, 173, 204, 168, 148, + 70, 90, 90, 67, 143, 105, 200, 125, 121, 11, 34, 153, 185, 178, + ], + // d + [ + 241, 145, 142, 133, 98, 35, 110, 177, 122, 220, 133, 2, 51, 47, 76, 156, 130, 188, + 20, 225, 155, 252, 10, 161, 10, 182, 116, 255, 117, 179, 210, 243, + ], + ] + } + + #[test] + fn test_make_root() { + let root = [ + 104, 32, 63, 144, 233, 208, 125, 197, 133, 146, 89, 215, 83, 110, 135, 166, 186, 157, + 52, 95, 37, 82, 181, 185, 222, 41, 153, 221, 206, 156, 225, 191, + ]; + let leaves = setup_leaves(); + let leaves_ptrs: Vec<*const u8> = leaves.iter().map(|leaf| leaf.as_ptr()).collect(); + + let root_ptr = unsafe { make_root(leaves_ptrs.as_ptr(), leaves.len()) }; + let result_slice = unsafe { slice::from_raw_parts(root_ptr, 32) }; + let result = result_slice.to_vec(); + + assert_eq!(result, root); + unsafe { free_root(root_ptr) }; + + let result_dangling_ptr = unsafe { slice::from_raw_parts(root_ptr, 32) }; + assert_eq!(result_dangling_ptr, [0u8; 32]); + } +} From ee513fbd6d99e4122c1fb92b50a2f7f1aa68bdf3 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:26:16 -0300 Subject: [PATCH 05/19] update: simple typing --- merkly/mtree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/merkly/mtree.py b/merkly/mtree.py index dc15319..59dba90 100644 --- a/merkly/mtree.py +++ b/merkly/mtree.py @@ -56,7 +56,7 @@ def proof(self, raw_leaf: str) -> List[Node]: self.leaves, [], self.hash_function(raw_leaf.encode(), bytes()) ) - def verify(self, proof: List[bytes], raw_leaf: str) -> bool: + def verify(self, proof: List[Node], raw_leaf: str) -> bool: full_proof = [self.hash_function(raw_leaf.encode(), bytes())] full_proof.extend(proof) From b305102ce177c95d7b1bc5e1b2b4fbb00281ad24 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:35:27 -0300 Subject: [PATCH 06/19] update: lint --- test/accelerator/test_accelerator.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/accelerator/test_accelerator.py b/test/accelerator/test_accelerator.py index ba617a2..a4d30d0 100644 --- a/test/accelerator/test_accelerator.py +++ b/test/accelerator/test_accelerator.py @@ -12,7 +12,6 @@ def test_merkle_root_ffi(compile_rust_ffi): tree = MerkleTree(leaves_short) treers = MTreers() - root = tree.root result = treers.make_root(leaves_bytes) From 0b843e6aa135131a2bb5b7e22d5e9055a070c29b Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 01:51:45 -0300 Subject: [PATCH 07/19] fix: merkle tree js tests --- .pre-commit-config.yaml | 2 +- test/conftest.py | 7 +++++++ test/merkletreejs/test_merkle_proof_compatibility.py | 5 +++-- .../merkletreejs/test_merkle_proof_verify_compatibility.py | 7 +++++-- test/merkletreejs/test_merkle_root_compatibility.py | 5 +++-- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 338d44e..f18c80b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: hooks: - id: pytest name: Unit Tests (Pytest) - entry: pytest -m "not benchmark and not merkletreejs" + entry: pytest -m "not benchmark" language: system pass_filenames: false always_run: true diff --git a/test/conftest.py b/test/conftest.py index 8022057..baf7745 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -8,3 +8,10 @@ def compile_rust_ffi(request): if any("ffi" in item.keywords for item in request.session.items): print("Compiling Rust FFI") subprocess.run(["./build.sh"], cwd="./merkly/accelerator", check=True) + + +@fixture(scope="session", autouse=True) +def install_js_deps(request): + if any("merkletreejs" in item.keywords for item in request.session.items): + print("Install js dependencies") + subprocess.run(["yarn"], cwd="./test/merkletreejs", check=True) diff --git a/test/merkletreejs/test_merkle_proof_compatibility.py b/test/merkletreejs/test_merkle_proof_compatibility.py index ad756dc..7fe5341 100644 --- a/test/merkletreejs/test_merkle_proof_compatibility.py +++ b/test/merkletreejs/test_merkle_proof_compatibility.py @@ -4,14 +4,15 @@ @mark.merkletreejs -def test_merkle_proof_compatibility_between_merkletreejs_and_merkly(): +def test_merkle_proof_compatibility_between_merkletreejs_and_merkly(install_js_deps): result = subprocess.run(["yarn"], check=False) assert result.returncode == 0, result.stderr result_js = subprocess.run( - ["node", "./test/merkletreejs/merkle_proof/merkle_proof_test.js"], + ["node", "./merkle_proof/merkle_proof_test.js"], capture_output=True, + cwd="./test/merkletreejs", text=True, check=True, ) diff --git a/test/merkletreejs/test_merkle_proof_verify_compatibility.py b/test/merkletreejs/test_merkle_proof_verify_compatibility.py index e937b23..4b22f1f 100644 --- a/test/merkletreejs/test_merkle_proof_verify_compatibility.py +++ b/test/merkletreejs/test_merkle_proof_verify_compatibility.py @@ -8,13 +8,16 @@ @mark.merkletreejs -def test_merkle_proof_verify_compatibility_between_merkletreejs_and_merkly(): +def test_merkle_proof_verify_compatibility_between_merkletreejs_and_merkly( + install_js_deps, +): result = subprocess.run(["yarn"], check=False) assert result.returncode == 0, result.stderr result_js = subprocess.run( - ["node", "./test/merkletreejs/merkle_proof/merkle_proof_test.js"], + ["node", "./merkle_proof/merkle_proof_test.js"], + cwd="./test/merkletreejs", capture_output=True, text=True, check=True, diff --git a/test/merkletreejs/test_merkle_root_compatibility.py b/test/merkletreejs/test_merkle_root_compatibility.py index 44a69a6..86c43ac 100644 --- a/test/merkletreejs/test_merkle_root_compatibility.py +++ b/test/merkletreejs/test_merkle_root_compatibility.py @@ -4,13 +4,14 @@ @mark.merkletreejs -def test_merkle_root_compatibility_between_merkletreejs_and_merkly(): +def test_merkle_root_compatibility_between_merkletreejs_and_merkly(install_js_deps): result = subprocess.run(["yarn"], check=False) assert result.returncode == 0, result.stderr result_js = subprocess.run( - ["node", "./test/merkletreejs/merkle_root/merkle_root_test.js"], + ["node", "./merkle_root/merkle_root_test.js"], + cwd="./test/merkletreejs", capture_output=True, text=True, check=False, From 0074f01bae1e5b602b072cbe07fc9129a5cd4883 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 02:01:35 -0300 Subject: [PATCH 08/19] update: ci --- .github/workflows/ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f38257..1667825 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,24 +23,32 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} + - name: Install dependencies run: | python -m pip install --upgrade pip pip install pytest pip install -e . if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: "18" + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + - name: Install Node.js dependencies run: | cd test/merkletreejs yarn install + - name: Test with pytest run: | - pytest -m "not benchmark" -vv \ No newline at end of file + pytest -m "not benchmark" -vv From e0313e87649417e2d70a4bd77e9162de214d819b Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <50037567+olivmath@users.noreply.github.com> Date: Thu, 1 Feb 2024 02:04:15 -0300 Subject: [PATCH 09/19] Update ci.yml --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1667825..da854fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,9 +41,12 @@ jobs: with: node-version: "18" - - name: Set up Rust + - name: Set up Rust Minimal Nightly uses: actions-rs/toolchain@v1 - + with: + profile: minimal + toolchain: nightly + - name: Install Node.js dependencies run: | cd test/merkletreejs From e8d2bfa2ec7ced03045cbb8c20faef44a1dabd5e Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 02:08:36 -0300 Subject: [PATCH 10/19] update: ci --- test/conftest.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/conftest.py b/test/conftest.py index baf7745..0f611e6 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -7,7 +7,17 @@ def compile_rust_ffi(request): if any("ffi" in item.keywords for item in request.session.items): print("Compiling Rust FFI") - subprocess.run(["./build.sh"], cwd="./merkly/accelerator", check=True) + result = subprocess.run( + ["./build.sh"], + cwd="./merkly/accelerator", + check=False, + capture_output=True, + text=True, + ) + print("Status:", result.returncode) + print("Output:", result.stdout) + print("Error:", result.stderr) + assert result.returncode == 0, "Falha ao compilar o código Rust" @fixture(scope="session", autouse=True) From f4eadc9592541e6bec555ff59be994ee941ddf51 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 02:11:25 -0300 Subject: [PATCH 11/19] update: ci --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da854fd..a66012d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,9 +44,9 @@ jobs: - name: Set up Rust Minimal Nightly uses: actions-rs/toolchain@v1 with: - profile: minimal toolchain: nightly - + override: true + - name: Install Node.js dependencies run: | cd test/merkletreejs From 01237a14d5f306605823738fd436fddc50ea83d9 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 1 Feb 2024 02:37:03 -0300 Subject: [PATCH 12/19] update: docker --- .devcontainer/Dockerfile | 28 ++++++++++++++++++++++++--- .devcontainer/devcontainer.json | 26 +++++++++++-------------- merkly/accelerator/libaccelerator.so | Bin 0 -> 329872 bytes 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100755 merkly/accelerator/libaccelerator.so diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a7eb71a..83f9e0e 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,8 +1,30 @@ FROM python + +# Configure Poetry ENV PYTHONPATH=. +ENV POETRY_VERSION=1.3.2 +ENV POETRY_HOME=/opt/poetry +ENV POETRY_VENV=/opt/poetry-venv +ENV POETRY_CACHE_DIR=/opt/.cache + +# Install poetry separated from system interpreter +RUN python3 -m venv $POETRY_VENV && $POETRY_VENV/bin/pip install -U pip setuptools && $POETRY_VENV/bin/pip install poetry==${POETRY_VERSION} + +# Add `poetry` to PATH +ENV PATH="${PATH}:${POETRY_VENV}/bin" # install deps -RUN apt update -y && apt install curl zsh git -y -# poetry, ohMyZsh -RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - +RUN apt update -y && apt upgrade +RUN apt install -y curl zsh git build-essential gnupg && \ + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ + echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list + +# Instalar o Yarn +RUN apt-get update && apt-get install -y yarn + +# Intall Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly +ENV PATH="/root/.cargo/bin:${PATH}" + +# ohMyZsh RUN sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 327cf00..09f7ff5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,16 +1,12 @@ { - "name": "Existing Dockerfile", - "context": "..", - "dockerFile": "./Dockerfile", - "postCreateCommand": "poetry install && pip install --upgrade pip", - "settings": { - "python.pythonPath": "." - }, - "extensions": [ - "bungcip.better-toml", - "mhutchie.git-graph", - "Tyriar.sort-lines", - "ms-python.python", - "eamodio.gitlens" - ] -} \ No newline at end of file + "name": "Existing Dockerfile", + "context": "..", + "dockerFile": "./Dockerfile", + "extensions": [ + "bungcip.better-toml", + "mhutchie.git-graph", + "Tyriar.sort-lines", + "ms-python.python", + "eamodio.gitlens" + ] +} diff --git a/merkly/accelerator/libaccelerator.so b/merkly/accelerator/libaccelerator.so new file mode 100755 index 0000000000000000000000000000000000000000..dba8041d52212e107321b8ea217b4eec2eeadbd1 GIT binary patch literal 329872 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%0DsyCYTR!$9o{l?pmiUV+762*?0fem+7^wb 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 um3r7@2spNru$@=iLk-ogD= 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%0A5RE%%8W*>s`g+NgAORN9?;6;V}GMs&I|3h!x+ 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 literal 0 HcmV?d00001 From d8696d6a5d22eed1f7fcdbeac6d4df6a5968216f Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:41:19 -0300 Subject: [PATCH 13/19] update: tests --- test/accelerator/test_accelerator.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/accelerator/test_accelerator.py b/test/accelerator/test_accelerator.py index a4d30d0..3f3b901 100644 --- a/test/accelerator/test_accelerator.py +++ b/test/accelerator/test_accelerator.py @@ -1,6 +1,7 @@ from merkly.accelerator.mtreers import MTreers from merkly.mtree import MerkleTree from keccaky import hash_it_bytes +from merkly.node import Node from pytest import mark @@ -16,3 +17,30 @@ def test_merkle_root_ffi(compile_rust_ffi): result = treers.make_root(leaves_bytes) assert list(root) == list(result) + + +@mark.ffi +def test_merkle_proof_ffi(compile_rust_ffi): + leaves_short = ["a", "b", "c", "d"] + leaves_bytes = list(map(lambda x: hash_it_bytes(x.encode()), leaves_short)) + + tree = MerkleTree(leaves_short) + treers = MTreers() + + proof = tree.proof("a") + result = treers.make_proof(leaves_bytes, leaves_bytes[0]) + assert proof == [ + Node( + data=bytes.fromhex( + "b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510" + ), + side=1, + ), + Node( + data=bytes.fromhex( + "d253a52d4cb00de2895e85f2529e2976e6aaaa5c18106b68ab66813e14415669" + ), + side=1, + ), + ] + assert result == [] From 7249b66fd32329d0130a0ea23835107af84930e2 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:42:37 -0300 Subject: [PATCH 14/19] update: for more readability --- merkly/mtree.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/merkly/mtree.py b/merkly/mtree.py index 59dba90..5ead677 100644 --- a/merkly/mtree.py +++ b/merkly/mtree.py @@ -134,10 +134,12 @@ def make_proof( left, right = half(leaves) if index < len(leaves) / 2: - proof.append(Node(data=self.make_root(right), side=Side.RIGHT)) + node = Node(data=self.make_root(right), side=Side.RIGHT) + proof.append(node) return self.make_proof(left, proof, leaf) else: - proof.append(Node(data=self.make_root(left), side=Side.LEFT)) + node = Node(data=self.make_root(left), side=Side.LEFT) + proof.append(node) return self.make_proof(right, proof, leaf) def mix_tree( From b2d054695895f18a3092e8f29e8b86a6524b192d Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:42:58 -0300 Subject: [PATCH 15/19] update: merkle proof --- merkly/accelerator/mtreers.py | 45 ++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/merkly/accelerator/mtreers.py b/merkly/accelerator/mtreers.py index b8b1e6e..dc83618 100644 --- a/merkly/accelerator/mtreers.py +++ b/merkly/accelerator/mtreers.py @@ -1,7 +1,10 @@ -from ctypes import CDLL, POINTER, c_size_t, c_ubyte, c_bool +from ctypes import CDLL, POINTER, Structure, c_size_t, c_ubyte +from merkly.node import Node from typing import List -from merkly.node import Node + +class MerkleProof(Structure): + _fields_ = [("ptr", POINTER(POINTER(c_ubyte))), ("len", c_size_t)] class MTreers: @@ -14,12 +17,15 @@ def __init__(self) -> None: self.lib.free_root.argtypes = [POINTER(c_ubyte)] self.lib.free_root.restype = None - # self.lib.make_proof.argtypes = [ - # POINTER(POINTER(c_ubyte)), - # c_size_t, - # POINTER(c_ubyte), - # ] - # self.lib.make_proof.restype = POINTER(POINTER(c_ubyte)) + self.lib.make_proof.argtypes = [ + POINTER(POINTER(c_ubyte)), + c_size_t, + POINTER(c_ubyte), + ] + self.lib.make_proof.restype = MerkleProof + + self.lib.free_proof.argtypes = [POINTER(POINTER(c_ubyte))] + self.lib.free_proof.restype = None # self.lib.verify.argtypes = [ # POINTER(POINTER(c_ubyte)), @@ -50,15 +56,22 @@ def make_proof(self, leaves: List[bytes], leaf: bytes) -> bytes: array_type = c_ubyte * 32 leaves_pointers[i] = array_type(*leaf) - result_pointers = self.lib.make_proof(leaves_pointers, len_leaves, leaf_pointer) + result_struct: MerkleProof = self.lib.make_proof( + leaves_pointers, len_leaves, leaf_pointer + ) + + proof = [] + for i in range(result_struct.len): + node_ptr = result_struct.ptr[i] + node_data = bytes(node_ptr[:33]) + + flag = node_data[32] + data = node_data[:32] + + proof.append(Node(data=data, side=flag)) - result = [] - for i in range(len_leaves): - result = list(bytes(result_pointers[i][:33])) - flag = result[32] - data = result[:32] - result.append(Node(data=data, side=flag)) - return result + self.lib.free_proof(result_struct.ptr, result_struct.len) + return proof def verify(self, proof: List[Node], leaf: bytes) -> bytes: proof_bytes = [] From d918d6825a2587b8bec34e665974f6fc580a7508 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:43:18 -0300 Subject: [PATCH 16/19] update: move utils functions --- merkly/accelerator/src/lib.rs | 108 +------------------------------- merkly/accelerator/src/utils.rs | 21 +++++++ 2 files changed, 24 insertions(+), 105 deletions(-) create mode 100644 merkly/accelerator/src/utils.rs diff --git a/merkly/accelerator/src/lib.rs b/merkly/accelerator/src/lib.rs index e05e452..54fc739 100644 --- a/merkly/accelerator/src/lib.rs +++ b/merkly/accelerator/src/lib.rs @@ -1,105 +1,3 @@ -use std::slice; -use tiny_keccak::{Hasher, Keccak}; - -pub fn hash_it(data: &[u8], buffer: &mut [u8; 32]) { - let mut k256 = Keccak::v256(); - - k256.update(data); - k256.finalize(buffer); -} - -fn hash_function(left: &[u8], right: &[u8], buffer: &mut [u8; 32]) { - let concat = [left, right].concat(); - - hash_it(&concat, buffer) -} - -/// # Safety -/// -/// FFI to Python. -#[no_mangle] -pub unsafe extern "C" fn make_root(leaves_ptr: *const *const u8, len_leaves: usize) -> *mut u8 { - let mut leaves = unsafe { slice::from_raw_parts(leaves_ptr, len_leaves) } - .iter() - .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 32).to_vec() }) - .collect::>>(); - let mut node = [0u8; 32]; - - while leaves.len() > 1 { - let mut next_level = Vec::new(); - - for leaf_pair in leaves.chunks(2) { - match leaf_pair { - [left, right] => hash_function(left, right, &mut node), - [left] => node.copy_from_slice(left), - _ => unreachable!(), - }; - next_level.push(node.to_vec()); - } - - leaves = next_level; - } - - let root = node; - let boxed_root = root.to_vec().into_boxed_slice(); - Box::into_raw(boxed_root) as *mut u8 -} - -/// # Safety -/// -#[no_mangle] -pub unsafe extern "C" fn free_root(ptr: *mut u8) { - unsafe { - let _ = Box::from_raw(slice::from_raw_parts_mut(ptr, 32)); - } -} - -#[cfg(test)] -mod tests { - use super::*; - - fn setup_leaves() -> Vec<[u8; 32]> { - vec![ - // a - [ - 58, 194, 37, 22, 141, 245, 66, 18, 162, 92, 28, 1, 253, 53, 190, 191, 234, 64, 143, - 218, 194, 227, 29, 221, 111, 128, 164, 187, 249, 165, 241, 203, - ], - // b - [ - 181, 85, 61, 227, 21, 224, 237, 245, 4, 217, 21, 10, 248, 45, 175, 165, 196, 102, - 127, 166, 24, 237, 10, 111, 25, 198, 155, 65, 22, 108, 85, 16, - ], - // c - [ - 11, 66, 182, 57, 60, 31, 83, 6, 15, 227, 221, 191, 205, 122, 173, 204, 168, 148, - 70, 90, 90, 67, 143, 105, 200, 125, 121, 11, 34, 153, 185, 178, - ], - // d - [ - 241, 145, 142, 133, 98, 35, 110, 177, 122, 220, 133, 2, 51, 47, 76, 156, 130, 188, - 20, 225, 155, 252, 10, 161, 10, 182, 116, 255, 117, 179, 210, 243, - ], - ] - } - - #[test] - fn test_make_root() { - let root = [ - 104, 32, 63, 144, 233, 208, 125, 197, 133, 146, 89, 215, 83, 110, 135, 166, 186, 157, - 52, 95, 37, 82, 181, 185, 222, 41, 153, 221, 206, 156, 225, 191, - ]; - let leaves = setup_leaves(); - let leaves_ptrs: Vec<*const u8> = leaves.iter().map(|leaf| leaf.as_ptr()).collect(); - - let root_ptr = unsafe { make_root(leaves_ptrs.as_ptr(), leaves.len()) }; - let result_slice = unsafe { slice::from_raw_parts(root_ptr, 32) }; - let result = result_slice.to_vec(); - - assert_eq!(result, root); - unsafe { free_root(root_ptr) }; - - let result_dangling_ptr = unsafe { slice::from_raw_parts(root_ptr, 32) }; - assert_eq!(result_dangling_ptr, [0u8; 32]); - } -} +pub mod merkle_proof; +pub mod merkle_root; +pub mod utils; diff --git a/merkly/accelerator/src/utils.rs b/merkly/accelerator/src/utils.rs new file mode 100644 index 0000000..26e8fc9 --- /dev/null +++ b/merkly/accelerator/src/utils.rs @@ -0,0 +1,21 @@ +use tiny_keccak::{Hasher, Keccak}; + +pub fn hash_it(data: &[u8], buffer: &mut [u8; 32]) { + let mut k256 = Keccak::v256(); + + k256.update(data); + k256.finalize(buffer); +} + +pub fn hash_function(left: &[u8], right: &[u8], buffer: &mut [u8; 32]) { + let concat = [left, right].concat(); + + hash_it(&concat, buffer) +} + +pub fn make_node(hash: [u8; 32], side: u8) -> [u8; 33] { + let mut node = [0u8; 33]; + node[..32].copy_from_slice(&hash); + node[32] = side; + node +} \ No newline at end of file From 5606b89d8d2326479b42e484422721c9e5e3dce6 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:43:28 -0300 Subject: [PATCH 17/19] update: move merkle root --- merkly/accelerator/src/merkle_root.rs | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 merkly/accelerator/src/merkle_root.rs diff --git a/merkly/accelerator/src/merkle_root.rs b/merkly/accelerator/src/merkle_root.rs new file mode 100644 index 0000000..c918194 --- /dev/null +++ b/merkly/accelerator/src/merkle_root.rs @@ -0,0 +1,92 @@ +use std::slice; +use crate::utils::hash_function; + +/// # Safety +/// +/// FFI to Python. +#[no_mangle] +pub unsafe extern "C" fn make_root(leaves_ptr: *const *const u8, len_leaves: usize) -> *mut u8 { + let mut leaves = unsafe { slice::from_raw_parts(leaves_ptr, len_leaves) } + .iter() + .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 32).to_vec() }) + .collect::>>(); + let mut node = [0u8; 32]; + + while leaves.len() > 1 { + let mut next_level = Vec::new(); + + for leaf_pair in leaves.chunks(2) { + match leaf_pair { + [left, right] => hash_function(left, right, &mut node), + [left] => node.copy_from_slice(left), + _ => unreachable!(), + }; + next_level.push(node.to_vec()); + } + + leaves = next_level; + } + + let root = node; + let boxed_root = root.to_vec().into_boxed_slice(); + Box::into_raw(boxed_root) as *mut u8 +} + +/// # Safety +/// +#[no_mangle] +pub unsafe extern "C" fn free_root(ptr: *mut u8) { + unsafe { + let _ = Box::from_raw(slice::from_raw_parts_mut(ptr, 32)); + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn setup_leaves() -> Vec<[u8; 32]> { + vec![ + // a + [ + 58, 194, 37, 22, 141, 245, 66, 18, 162, 92, 28, 1, 253, 53, 190, 191, 234, 64, 143, + 218, 194, 227, 29, 221, 111, 128, 164, 187, 249, 165, 241, 203, + ], + // b + [ + 181, 85, 61, 227, 21, 224, 237, 245, 4, 217, 21, 10, 248, 45, 175, 165, 196, 102, + 127, 166, 24, 237, 10, 111, 25, 198, 155, 65, 22, 108, 85, 16, + ], + // c + [ + 11, 66, 182, 57, 60, 31, 83, 6, 15, 227, 221, 191, 205, 122, 173, 204, 168, 148, + 70, 90, 90, 67, 143, 105, 200, 125, 121, 11, 34, 153, 185, 178, + ], + // d + [ + 241, 145, 142, 133, 98, 35, 110, 177, 122, 220, 133, 2, 51, 47, 76, 156, 130, 188, + 20, 225, 155, 252, 10, 161, 10, 182, 116, 255, 117, 179, 210, 243, + ], + ] + } + + #[test] + fn test_make_root() { + let root = [ + 104, 32, 63, 144, 233, 208, 125, 197, 133, 146, 89, 215, 83, 110, 135, 166, 186, 157, + 52, 95, 37, 82, 181, 185, 222, 41, 153, 221, 206, 156, 225, 191, + ]; + let leaves = setup_leaves(); + let leaves_ptrs: Vec<*const u8> = leaves.iter().map(|leaf| leaf.as_ptr()).collect(); + + let root_ptr = unsafe { make_root(leaves_ptrs.as_ptr(), leaves.len()) }; + let result_slice = unsafe { slice::from_raw_parts(root_ptr, 32) }; + let result = result_slice.to_vec(); + + assert_eq!(result, root); + unsafe { free_root(root_ptr) }; + + let result_dangling_ptr = unsafe { slice::from_raw_parts(root_ptr, 32) }; + assert_eq!(result_dangling_ptr, [0u8; 32]); + } +} From e2b58469bfebb1eabe97363a06266bdb4c2f3337 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 01:43:39 -0300 Subject: [PATCH 18/19] add: merkle proof --- merkly/accelerator/src/merkle_proof.rs | 148 +++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 merkly/accelerator/src/merkle_proof.rs diff --git a/merkly/accelerator/src/merkle_proof.rs b/merkly/accelerator/src/merkle_proof.rs new file mode 100644 index 0000000..69d71cb --- /dev/null +++ b/merkly/accelerator/src/merkle_proof.rs @@ -0,0 +1,148 @@ +use crate::merkle_root::make_root; +use crate::utils::make_node; +use std::slice; + +#[repr(C)] +pub struct MerkleProof { + ptr: *mut *mut u8, + len: usize, +} + +/// Constructs a Merkle proof for the given leaf. +#[no_mangle] +pub unsafe extern "C" fn make_proof( + leaves_ptr: *const *const u8, + len_leaves: usize, + leaf_ptr: *const u8, +) -> MerkleProof { + let leaf = unsafe { slice::from_raw_parts(leaf_ptr, 32).to_vec() }; + let leaves = unsafe { slice::from_raw_parts(leaves_ptr, len_leaves) } + .iter() + .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 32).to_vec() }) + .collect::>>(); + + let mut proof: Vec<[u8; 33]> = Vec::new(); + + let mut current_leaves = leaves.clone(); + while current_leaves.len() > 1 { + let half_size = current_leaves.len() / 2; + let index = match leaves.iter().position(|x| *x == leaf) { + Some(i) => i, + None => panic!("Leaf does not exist in the tree"), + }; + + // divide a lista em 2, left e right + let (left, right) = current_leaves.split_at(half_size); + + // se o index estiver em left + if index < half_size { + // faça a merkle root de right + let right_ptrs: Vec<*const u8> = right.iter().map(|vec| vec.as_ptr()).collect(); + let right_ptr: *const *const u8 = right_ptrs.as_ptr(); + + // TODO: make root must be a async (using other thread) + let right_root_ptr = make_root(right_ptr, right.len()); + let right_root_raw = slice::from_raw_parts(right_root_ptr, 32); + let right_root: [u8; 32] = right_root_raw + .try_into() + .expect("Failed to convert RIGHT to array"); + + // faça o node passando right e 1 (direita) + let node = make_node(right_root, 1); + + // adicione o node na lista de prova + proof.push(node); + + current_leaves = left.to_vec(); + } else { + // se o index estiver em right + // faça a merkle root de left + let left_ptrs: Vec<*const u8> = left.iter().map(|vec| vec.as_ptr()).collect(); + let left_ptr: *const *const u8 = left_ptrs.as_ptr(); + + // TODO: make root must be a async (using other thread) + let left_root_ptr = make_root(left_ptr, left.len()); + let left_root_raw = slice::from_raw_parts(left_root_ptr, 32); + let left_root: [u8; 32] = left_root_raw + .try_into() + .expect("Failed to convert LEFT to array"); + + // faça o node passando left e 0 (esquerda) + let node = make_node(left_root, 0); + + // adicione o node na lista de prova + proof.push(node); + + current_leaves = right.to_vec(); + } + } + + let len = proof.len(); + let proof_pointers: Vec<*mut u8> = proof + .into_iter() + .map(|node| { + let boxed_node = Box::new(node); + Box::into_raw(boxed_node) as *mut u8 + }) + .collect(); + let boxed_proof = proof_pointers.into_boxed_slice(); + let ptr = Box::into_raw(boxed_proof) as *mut *mut u8; + MerkleProof { ptr, len } +} + +#[no_mangle] +pub unsafe extern "C" fn free_proof(ptr: *mut *mut u8, len: usize) { + let slice = slice::from_raw_parts_mut(ptr, len); + for &mut inner_ptr in slice.iter_mut() { + let _ = Box::from_raw(inner_ptr); + } + let _ = Box::from_raw(ptr); +} + +#[cfg(test)] +mod tests { + use super::*; + + fn setup_leaves() -> Vec<[u8; 32]> { + vec![ + // a + [ + 58, 194, 37, 22, 141, 245, 66, 18, 162, 92, 28, 1, 253, 53, 190, 191, 234, 64, 143, + 218, 194, 227, 29, 221, 111, 128, 164, 187, 249, 165, 241, 203, + ], + // b + [ + 181, 85, 61, 227, 21, 224, 237, 245, 4, 217, 21, 10, 248, 45, 175, 165, 196, 102, + 127, 166, 24, 237, 10, 111, 25, 198, 155, 65, 22, 108, 85, 16, + ], + // c + [ + 11, 66, 182, 57, 60, 31, 83, 6, 15, 227, 221, 191, 205, 122, 173, 204, 168, 148, + 70, 90, 90, 67, 143, 105, 200, 125, 121, 11, 34, 153, 185, 178, + ], + // d + [ + 241, 145, 142, 133, 98, 35, 110, 177, 122, 220, 133, 2, 51, 47, 76, 156, 130, 188, + 20, 225, 155, 252, 10, 161, 10, 182, 116, 255, 117, 179, 210, 243, + ], + ] + } + + #[test] + fn test_make_root() { + let leaves = setup_leaves(); + let leaves_ptrs: Vec<*const u8> = leaves.iter().map(|leaf| leaf.as_ptr()).collect(); + let leaf = leaves[0]; + let leaf_ptr = leaf.as_ptr(); + + let merkle_proof = unsafe { make_proof(leaves_ptrs.as_ptr(), leaves.len(), leaf_ptr) }; + let proof_slice = unsafe { slice::from_raw_parts(merkle_proof.ptr, merkle_proof.len) } + .iter() + .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 33).to_vec() }) + .collect::>>(); + + assert_eq!(proof_slice, vec![vec![]]); + + unsafe { free_proof(merkle_proof.ptr, merkle_proof.len) } + } +} From da01efc12c59f15bad9e50abee5438878ec2e846 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Fri, 2 Feb 2024 02:10:24 -0300 Subject: [PATCH 19/19] add: merkle proof --- merkly/accelerator/libaccelerator.dylib | Bin 301608 -> 301704 bytes merkly/accelerator/src/merkle_proof.rs | 52 +++++++++++++++++++++--- merkly/accelerator/src/merkle_root.rs | 2 +- merkly/accelerator/src/utils.rs | 2 +- test/accelerator/test_accelerator.py | 16 +------- 5 files changed, 50 insertions(+), 22 deletions(-) diff --git a/merkly/accelerator/libaccelerator.dylib b/merkly/accelerator/libaccelerator.dylib index 65dade7a4e64ca881143c845e7cd35d1623cd3f7..7e3ea1e30d45e3538a3f6da6abeb23f130fd31b6 100755 GIT binary patch delta 48744 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 z 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 diff --git a/merkly/accelerator/src/merkle_proof.rs b/merkly/accelerator/src/merkle_proof.rs index 69d71cb..a8f1f50 100644 --- a/merkly/accelerator/src/merkle_proof.rs +++ b/merkly/accelerator/src/merkle_proof.rs @@ -25,11 +25,33 @@ pub unsafe extern "C" fn make_proof( let mut current_leaves = leaves.clone(); while current_leaves.len() > 1 { - let half_size = current_leaves.len() / 2; let index = match leaves.iter().position(|x| *x == leaf) { Some(i) => i, None => panic!("Leaf does not exist in the tree"), }; + if current_leaves.len() == 2 { + if index == 1 { + // proof.push(Node(data = leaves[0], side = Side.LEFT)) + let left: [u8; 32] = current_leaves[0] + .as_slice() + .try_into() + .expect("Failed to convert LEFT to array"); + let node = make_node(left, 0); + proof.push(node); + break; + } else { + // proof.append(Node(data = leaves[1], side = Side.RIGHT)) + let right: [u8; 32] = current_leaves[1] + .as_slice() + .try_into() + .expect("Failed to convert RIGHT to array"); + let node = make_node(right, 1); + proof.push(node); + break; + } + } + + let half_size = current_leaves.len() / 2; // divide a lista em 2, left e right let (left, right) = current_leaves.split_at(half_size); @@ -77,6 +99,7 @@ pub unsafe extern "C" fn make_proof( } } + proof.reverse(); let len = proof.len(); let proof_pointers: Vec<*mut u8> = proof .into_iter() @@ -128,21 +151,40 @@ mod tests { ] } + fn setup_proof() -> Vec<[u8; 33]> { + vec![ + [ + 181, 85, 61, 227, 21, 224, 237, 245, 4, 217, 21, 10, 248, 45, 175, 165, 196, 102, + 127, 166, 24, 237, 10, 111, 25, 198, 155, 65, 22, 108, 85, 16, 1, + ], + [ + 210, 83, 165, 45, 76, 176, 13, 226, 137, 94, 133, 242, 82, 158, 41, 118, 230, 170, + 170, 92, 24, 16, 107, 104, 171, 102, 129, 62, 20, 65, 86, 105, 1, + ], + ] + } #[test] fn test_make_root() { let leaves = setup_leaves(); + let proof = setup_proof(); let leaves_ptrs: Vec<*const u8> = leaves.iter().map(|leaf| leaf.as_ptr()).collect(); let leaf = leaves[0]; let leaf_ptr = leaf.as_ptr(); - let merkle_proof = unsafe { make_proof(leaves_ptrs.as_ptr(), leaves.len(), leaf_ptr) }; - let proof_slice = unsafe { slice::from_raw_parts(merkle_proof.ptr, merkle_proof.len) } + let result = unsafe { make_proof(leaves_ptrs.as_ptr(), leaves.len(), leaf_ptr) }; + let result_slice = unsafe { slice::from_raw_parts(result.ptr, result.len) } .iter() .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 33).to_vec() }) .collect::>>(); - assert_eq!(proof_slice, vec![vec![]]); + assert_eq!(result_slice, proof); - unsafe { free_proof(merkle_proof.ptr, merkle_proof.len) } + unsafe { free_proof(result.ptr, result.len) } + let result_dangling_ptr = unsafe { slice::from_raw_parts(result.ptr, result.len) } + .iter() + .map(|leaf_ptr| unsafe { slice::from_raw_parts(*leaf_ptr, 33).to_vec() }) + .collect::>>(); + let expected: Vec> = vec![vec![0; 33]; 2]; + assert_eq!(result_dangling_ptr, expected); } } diff --git a/merkly/accelerator/src/merkle_root.rs b/merkly/accelerator/src/merkle_root.rs index c918194..fc2d454 100644 --- a/merkly/accelerator/src/merkle_root.rs +++ b/merkly/accelerator/src/merkle_root.rs @@ -1,5 +1,5 @@ -use std::slice; use crate::utils::hash_function; +use std::slice; /// # Safety /// diff --git a/merkly/accelerator/src/utils.rs b/merkly/accelerator/src/utils.rs index 26e8fc9..e78f048 100644 --- a/merkly/accelerator/src/utils.rs +++ b/merkly/accelerator/src/utils.rs @@ -18,4 +18,4 @@ pub fn make_node(hash: [u8; 32], side: u8) -> [u8; 33] { node[..32].copy_from_slice(&hash); node[32] = side; node -} \ No newline at end of file +} diff --git a/test/accelerator/test_accelerator.py b/test/accelerator/test_accelerator.py index 3f3b901..a0c6211 100644 --- a/test/accelerator/test_accelerator.py +++ b/test/accelerator/test_accelerator.py @@ -29,18 +29,4 @@ def test_merkle_proof_ffi(compile_rust_ffi): proof = tree.proof("a") result = treers.make_proof(leaves_bytes, leaves_bytes[0]) - assert proof == [ - Node( - data=bytes.fromhex( - "b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510" - ), - side=1, - ), - Node( - data=bytes.fromhex( - "d253a52d4cb00de2895e85f2529e2976e6aaaa5c18106b68ab66813e14415669" - ), - side=1, - ), - ] - assert result == [] + assert proof == result