-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmerkle_tree.js
149 lines (146 loc) · 9.58 KB
/
merkle_tree.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
var merkle = require('merkle-tree-gen');
var args = {
// The hashes must be of the same hash type as 'hashalgo'
array:[
" 0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a" ,
" 0x8f5bab218b6bb34476f51ca588e9f4553a3a7ce5e13a66c660a5283e97e9a85a",
" 0xe675f1362d82cdd1ec260b16fb046c17f61d8a84808150f5d715ccce775f575e",
" 0xd5daa825732729bb0d2fd187a1b888e6bfc890f1fc5333984740d9052afb2920",
" 0xfe43c87178f0f87c2be161389aa2d35f3065d330bb596a6d9e01529706bf040d",
" 0x573d5dc3a2376028b3b41bc922efeed44abcea77e271c06d0983c720c37376e5",
" 0x424f04bb0888e7de91196789d5b84f1897daf05df182948b42e29d95f1d44fa2",
" 0xbabc8b03fd5941867c7f94e06a5ea479476bb208526e30661e566636711e4a16"
,"0x8c6d8c0d06d15fbfaf5f88800ecb85ccc8b5d76659831f7e36deb866d08cc036"
,"0xf9a913891effa771ebc71f340c5668bf14a6e4e6839c3570d67855b646b65e9c"
,"0x206d138db2c9f30a257fab5ffc593e96ffdd96350842d1501647d24164da4bdf"
,"0x93c5c6d81dcddc2069fe47a68a39508661653a51e13f64902de9ccf5cbf26120"
,"0x98de0d0a6d58f5da8cb8177e7371e496f37ac6cf2bbf145d0deaaf2d3934915b"
,"0x10aa4db0d143ab9303a20cd99a0f8b4ad9b75a48eec9d62b9475a706acda67f5"
,"0xb5f211a29e89b28a6ded1201db1bbc7edf977a177924909bc5cdbae0e154a7b5"
,"0x06e9faea9c81854fa9f61c289cae0737634ab034e25ece9e35574e9267f78139"
,"0x0d9c671eaaa5db81cc7e973a256161ab3dc6f3f28338794c3173bf4a94f067af"
,"0x8192408ba3db53aa96a3e24a1e81218792bcf9383b760ef47e5147864ca46bc2"
,"0x19c4b1767bbf788791e37807465f78268fed824083b42e4006b58f3c56aa5365"
,"0xc8d464fc659a60a8dab9442f9b7390b3419baea76e7197e5854000ef59ab686e"
,"0x50511bd4818b02d40128781056ae373f64ce31252e6c58c40f805627813524e9"
,"0x1c5538371cc8ffaf85435b24efdee5e5f05ef4b7c4c0b2c27b1e2f8ac75f1d20"
,"0x2b3cd10d14bbec5276521476d5bb4e838ab735f95033aecabdd90a19edd8e1cc"
,"0x0e771c502f05193f3c1f391d968eb43a3d68404d559b74c583e55b535de49327"
,"0x54e0f386d2dba0e4341107843e3bd092e38199dcca210a4268b1584c831abc42"
,"0x2ff79c51b690dc13ea856af8be4c3718993ca47dcdc2f2f59a7a21748bdd6eb7"
,"0xde2e4f101a795baecfe033c15f58902c390b3eaa02d382403f05f6b570cfa172"
,"0x5194ee1ed5b7d98e326e9e8150e33888d867ed4f237035efd20090334ab12f7c"
,"0x04de0938e7aca5b66bbc650d407988189489f5d822f7446bb18524f674d8d677"
,"0x2ef5df8a40007c88a23a83159ee8abd00ff29330cd3baec86b122f7d555b7599"
,"0x5fd1a95efd13fc55070cd1056f08db2e0616df9685b1fe246019ba5136a83c2b"
,"0x9078a05cc7c3a9f4e0fb36bbccc61d10b174fe3fbb2ef0b75e9091223c519053"
,"0x15e2fb5b209037c2d8fd5e55552bc0551a2c1f871b2122482c586a17aa5d5e74"
,"0xf16ca6584bc7db91a9b4bde42d6f898841dbbf1466e869d27c4b5327e5b46ad7"
,"0xd5a3244f2eb66aadefc18b1defe1628f5b97e3ebede48a05684abf1921d30870"
,"0xddd852c105afc3423154b5d4f43613a51606d6f53a422483d18c49cdcbdb25da"
,"0x334417308d13bbdb7e8106085503776420ff9b75130ed2c943b32dca2a25995b"
,"0xaa9eed19b487aa7ea4d677c0dfd581e675a9ab241543cbfcd39ef244afdcafd1"
,"0x1536e2563135e4fd92aedf759d3e488b5997a7142d8856277bec3a9e7c451fc0"
,"0x13ea0cad222d79adacb3c0d327cd5a00a14c49d5e54576209ea715395a526516"
,"0xbbe65b260e1e4f09b5b65d970fb0f38c2365cf2283624bcc49065a78ccb98741"
,"0x4fd19b40c6c089e1a37c9656cd3ed97f7a54b3cc72c1b05e729ddf0b478de854"
,"0x5d1f3a14b23d02d56cee24423197301242ceffe5305f799877e3dbef12114244"
,"0x8c77e8805a2f658f4c798388a0bc3ce9f2c5ab31e7c4db32e0724ebc0459defb"
,"0xc72e1b1b04141ba2db09e71c7984b9595b6436051860851fe49d1545443cd2e4"
,"0x7efcd54f3a37cec3ee22011262f8b5f2ca1aca3e69354a5222f46c91454692d9"
,"0x8ff15271d8159892df96c381c7fa7554f3cb69ca8111c90280c7c17368bf2acd"
,"0x9f36f4a5b261e9bd51225181fdbc36b1050792b950293236cd15bb7d5e95b168"
,"0x4f003ef6c59d5a8f9817c92c876d08804a11bda4d5672d299d9b14f3e5ab90be"
,"0x05cd0798d12d4b8ad139e95dcee8773bbecce7835c47a195a612fe98cdda5512"
,"0x41585cef501a80e15adeec459bcb4c28f8cef325b857696a41f27ebf07497f70"
,"0xfa44fedd5524231d8559fe582a99bd74463201c2e0bebe4a3c9ce2a5db0a475c"
,"0xe6e5b0bc3a8e73cde58a313593b2d27489ce06041c189259b8d83f5f8b44f957"
,"0x387a60db3eca4f7488f9aae5b3d7a5ee0af1721fdd3142074e9fb408d53085ba"
,"0x88b133daf625abde9d48c83aee17ea2a897902b561838bd6e581a61b05761df9"
,"0x5886544fd74fdc418d80f2b749e4c390fe02553e7c5c4a2ba75e5cbce67a3727"
,"0x60143f3440cfdb64f0fc7ea91c30d6d920e5b9b252a8ef87ffe08e47ce5f4ca5"
,"0x52754c992a41dcf1828174819df68ac255e8d97b6a3f2b48088058e63b55622f"
,"0x9226e2509f8ad093ed11bae2e0f9d6ebae17a7cfb66b295219e1f7ef53f24b67"
,"0x85e34c13aefcc0b1f6d2725976886f8a66f7721efca3f9a6484699e3c4660431"
,"0x576fbaa429b49a6bed7edb8c701f6ee193dc8bc13a4bb78f6a2d292482ff750d"
,"0x04b321daf1ccd3164ac654c6af0c847a5ab2d480da8169be5a5c1045ecee4996"
,"0x418503fd9ee55cf5f1b4a747c25c7df840d0e7267f6213b5c01de59975bed694"
,"0xdfd349e34fdd1c28e09db4a9318c3bd437d99987e521a6901ad58b827e2bafe2"
,"0xd7c26a9f98654d39738fee5c7925747b30658849dab233a7b075f020825a10d0"
,"0x07034fa011fa41d7996532e9ed88f48b0d02966247d13dec19d4be2e6d3e548d"
,"0xad23508b4e8287559538804a9cc54482fdf0df82e6b2735a3804cab093e03f69"
,"0x62c099bb0753ee40959cb504ebed621d711ddae0e93c214039cf9ad855d7bbf6"
,"0xb42ebec34259512cc6e759cdf0ca76e3c97323a197f571501c3f3814b6c4efdc"
,"0xa7c8b0843c916e73fc8cc4ac65b09f1229bdd2af713f9981b32c17c9c0cb996e"
,"0x20ea4e2417db50b735e9ad79ff39572b4d51c382935f3d82268a885cdf55e04e"
,"0xf49f04a3be68019f86e812e7af59e7a84585d10cc83937c8370bd1fe6883d3b1"
,"0xa88e7f899c7e820126e544a4b06201fd04ee4fc88818f2a63b164606fa9099bc"
,"0xcfbca3cf185d8bbe28b0fc07a8650abecfd44b7acddf5b959e42240db2721007"
,"0xfc77d57ce2fd93bdfc3d4a4b9d878e493e73aab4a9b81b192e52b4355c0169ae"
,"0xe9cd14f62ffbee50cea69a98146a5b72bb7f94a98f5f8e2f2c7de8fbeff1a92a"
,"0x42a8d4de636a5ea13a57e34dc1f461673db453b5a9b19931c2ea2b8923e95e92"
,"0xc008e5d6c3347e1328b815539a7163ad12521d5fc1e054baf5335ac899bf143b"
,"0x2eb2fb9bba5f87a3254d6884d42d3ed1a32f14e45e2ecc64391d80c8d751bb7e"
,"0x728e47cc7ba0dee9399e03c1c4ff51df123ef3ba648de4396c635cd0e53580ac"
,"0x5edf710302e8b84d8db6bf9458e60239ed421dd1d91b038f75fd404d7fcaa895"
,"0xdda1f4184ce8ae6cd8d9a1cab1573c74342ffae45cd2bab2a65dcc18e86a317e"
,"0x814cfef767d72b67567c0b3b32339410cfa02f2b8523f359a10934a61c23ad36"
,"0x584b6ba53e5b661b879370637e9540ce44a114fdad5886b8cb7b8a506ff57d3b"
,"0x5a0b692d0ce6323dd96a624d9e214bf6fa8617ba2c449229ad7642784d355592"
,"0xf08c719764aecffd7496c4583de6c9c4b46d8420cd0eb4183cff05ee814873b6"
,"0x80fe089dea03f0e532e43325f1062d330035e43d6a9ffc8053adccc56fe8f23b"
,"0xa7637d48c5c690c1f5309ee298b3900ab7ca43184dff6d06ecc51834c134069e"
,"0xa502285a93f16a54f000f1d558933e50900bdb2b6be175ae3d0dda44bfc3a5e4"
,"0xf1b000806640807e4894fc263583304a4dbda49900a63741caf9ff57d484a650"
,"0xae11af45347751908d3ba6575f8078215d5eb7622612a0910ac723b47abf2538"
,"0xc296f7757f29af0c2825c57d0db4dec852e39fe85408e039b5eaae754589150f"
,"0x415d654d5347fccacd8d104973efaeb66752b7e135d0acd83480822a05e4811d"
,"0x254cf0e02588759258c5c2b069cbc15c5f2527211d4ed2e5907e495c4527a0bc"
,"0xedf330f492cfd64fa0ac12016f1925fcb16733292c75bbddccab822c8a35f537"
,"0xfd03c8881fb8ac2dec8a78b82f2f69536fe4267f6b5a56f4ff8e0df19edc6b5a"
,"0xda646a012e4aa3641d7e0aac3918e0165775a29b95faa3a6834366049e4dfca0"
,"0xf2802c590981d2cde241cc0a086cca6709a608275b9168f1f3732e7af4fd0e06"
,"0xefe8938a5816184360dcdef0a03ae1a3304bd60dc5925c244ca37004934dde9b"
,"0x7f0c419985f2227c546a9c640ee05abb3d279316426e6c79d69f6e317d6bb301"
,"0xfe50915c6b8f9ad2b4b7a94574bef70540f42f30bc1380a45b0e63a96489a60c"
,"0x9e2fb846549726469e7bccfb9716b4e30794c0410800e712f4d3bbdfcf57b057"
,"0x61f3d4fda4227589bbccb51d3c116ccb83db49284a715c098e1e17e9e6192fca"
,"0x5f1ea39c4c074efa94d7838ae93d42cb0db0fe4bc7b5ff247e3ffdf25d037df8"
,"0x4dfaf59e378249aa964efb2c2f88383d3279a2be94e0727243e81a1ffe96aae7"
,"0x4f5fa9b66fc89eb0feb0ce27f0727d5e17a723b548a044e198dcface76e430ce"
,"0x8f7fc7823f4b4396a0d499608dfab5b0e0ef8622fd6b9844ece8a244789e6d21"
,"0xbcf4924fd444f212153898ec1680f2507087109c181dbd9c5a0f514bd2542be3"
,"0xe4366b05ce0c83ffb811fb727c92abaf7e818dd42f7c7093a17bad295dbf04df"
,"0x9242ca4ccaf981c5bb12101466079a9d802613f9c1c95e9b18407f6311fa4e19"
,"0xc01018ce068e7ead9f79aa3fac024fdc1938bfe61ee5edab4a507a5d2125c665"
,"0x40543016b5bfdaa2b2e66ddfeb54d63d3344b800054129eb40ba831b6352d905"
,"0x78abf66c6ed780360e1bb2c248d7b2e0ee10b6c73ea753c42b95b21b46a34a9a"
,"0xdf80d5a5c05cd263eee90c3f652cefb9c411c59e61d5031baea840372ee4cc17"
,"0xc1241e8c7b3151cda3f6d890ab48374a9b439ffa2e6f84d97a6d7bab8c8b1010"
,"0x6c3303b9d166677eb80448c8285f716c207afc869763a9b68a5fb3a082e0322a"
,"0x68e670fee0e1700a66a6f9d099dff1e8130824c1ad90fd413ef186beecf55c76"
,"0x5cb802cc47d6ce097920e134a581577ef9f909b43c4e50865edf17724ee3a565"
,"0xbb62d31d477f3c431a5741977dacb97a3f8be53a7593d740f59abfb86c8f9325"
,"0x8faf560a8c85d142407ea46d756bf9d1f3f3dfe0ec4dc58329928bdff343aafa"
,"0xf8e68585d3a0bd9a8b422307ca47ffc20ecb7141cd23b78d44727190f7d9f39e"
,"0x83140795a5ad2bbdcb288a602fbf94a04fbcd9d30e5785ff935c2483a1cc38da"
,"0x8c8946f735a40d5c19e98a45dc1aa8cbe8674bc43c55a04235669f867b031b16"
,"0x49ac10ba2a673b5826e5d244d0edae1eb36d8046c06539b80e2cd37f334c999f"
,"0xbc847ce97c9639ce61e69e8100a93c8df1f0e71d7f2ae223c1eafc13515049e0"
,"0x531893e4c86ca7734450754056a0e6606b62d6be366d9fc070097f1e4aff3f29"
,"0x07487a8359a6e175d167ddc4cffea9bda38aed53e0b81b5272c925bff99c4d5f"
,"0xb1c2939c628165336bb4329230a1eecc7a85906422e6ee8870ed2a7118c0e46e"
] , // required
algo: 'sha256', // optional, defaults to sha256
hashlist: true // usually optional, but it is required to be set to 'true' for this example to work.
// It defaults to 'false', but when it is 'true' the array's elements are
// treated as hashes and become the leaves of the Merkle Tree
};
// merkle tree of first 0-127 blocks of goerli test net
merkle.fromArray(args, function (err, tree) {
if (!err) {
console.log('Root hash: ' + tree.root);
console.log('Number of leaves: ' + tree.leaves);
console.log('Number of levels: ' + tree.levels);
}
});