@dashevo/dash-spv 0.23.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -0
- package/.eslintrc.json +7 -0
- package/LICENSE +21 -0
- package/README.md +7 -0
- package/config/config.js +51 -0
- package/index.js +7 -0
- package/lib/blockstore.js +56 -0
- package/lib/consensus.js +65 -0
- package/lib/merkleproofs.js +21 -0
- package/lib/spvchain.js +339 -0
- package/lib/utils.js +62 -0
- package/package.json +27 -0
- package/test/data/headers.js +216 -0
- package/test/data/merkleproofs.js +36 -0
- package/test/data/rawHeaders.js +5531 -0
- package/test/index.js +455 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/* eslint no-underscore-dangle: ["error", { "allow": ["_getHash"] }] */
|
|
2
|
+
const utils = require('../../lib/utils');
|
|
3
|
+
|
|
4
|
+
const headers = [
|
|
5
|
+
{
|
|
6
|
+
version: 2,
|
|
7
|
+
previousblockhash: '00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c',
|
|
8
|
+
merkleroot: 'b4fd581bc4bfe51a5a66d8b823bd6ee2b492f0ddc44cf7e820550714cedc117f',
|
|
9
|
+
time: 1398712771,
|
|
10
|
+
bits: '1e0fffff',
|
|
11
|
+
nonce: 31475,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
version: 2,
|
|
15
|
+
previousblockhash: '0000047d24635e347be3aaaeb66c26be94901a2f962feccd4f95090191f208c1',
|
|
16
|
+
merkleroot: '0d6d332e68eb8ecc66a5baaa95dc4b10c0b32841aed57dc99a5ae0b2f9e4294d',
|
|
17
|
+
time: 1398712772,
|
|
18
|
+
nonce: 6523,
|
|
19
|
+
bits: '1e0ffff0',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
version: 2,
|
|
23
|
+
previousblockhash: '00000c6264fab4ba2d23990396f42a76aa4822f03cbc7634b79f4dfea36fccc2',
|
|
24
|
+
merkleroot: '1cc711129405a328c58d1948e748c3b8f3d610e66d9901db88c42c5247829658',
|
|
25
|
+
time: 1398712774,
|
|
26
|
+
nonce: 53194,
|
|
27
|
+
bits: '1e0ffff0',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
version: 2,
|
|
31
|
+
previousblockhash: '0000057d5c945acbe476bc17bbbaeb2fc1c1b18673e7582c48ac04af61f4d811',
|
|
32
|
+
merkleroot: '7e6b1b1457308bf6ccb1e325c64607ba7dfac05e26c08887cd28f97d4d4ab3e2',
|
|
33
|
+
time: 1398712782,
|
|
34
|
+
nonce: 193159,
|
|
35
|
+
bits: '1e0ffff0',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
version: 2,
|
|
39
|
+
previousblockhash: '000002258bd58bf4cdcde282abc030437c103dbb12d2a7dbc978d07bcf386b42',
|
|
40
|
+
merkleroot: '4cf4f3b788e8dc847a9e0ff3b279340207c555a6bc0736f93e95dbdc2e3c2f16',
|
|
41
|
+
time: 1398712784,
|
|
42
|
+
nonce: 41103,
|
|
43
|
+
bits: '1e0ffff0',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
version: 2,
|
|
47
|
+
previousblockhash: '00000b1406007f9148c4c173e2314437a315b79b5b79e73ed534a2e8b18a43fc',
|
|
48
|
+
merkleroot: '99c25e1373c0a5277157b730624d110d04322ffaac49ac0c98cc2d01c80f4c4c',
|
|
49
|
+
time: 1398712787,
|
|
50
|
+
nonce: 62295,
|
|
51
|
+
bits: '1e0ffff0',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
version: 2,
|
|
55
|
+
previousblockhash: '00000d93de4b31ec550d324876ee7c502a073911972d26c2c990b94d9d5b5a44',
|
|
56
|
+
merkleroot: '769fc473dc8e5073e4fe3f69f0603972d3d72fbeb62a64de826c64e44260b3f3',
|
|
57
|
+
time: 1398712793,
|
|
58
|
+
nonce: 127755,
|
|
59
|
+
bits: '1e0ffff0',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
version: 2,
|
|
63
|
+
previousblockhash: '00000154b50ded9d6298dc965e541cef117103c3376256185d0d70e92850853d',
|
|
64
|
+
merkleroot: '8243e732675d2936bb27917844e714ff5e2012726e3f76e374e7f6236e78669e',
|
|
65
|
+
time: 1398712796,
|
|
66
|
+
nonce: 62099,
|
|
67
|
+
bits: '1e0ffff0',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
version: 2,
|
|
71
|
+
previousblockhash: '0000089e53a33e48061fa4dbc0a52c40736c2eedddaf563ec25cfe406dd8a541',
|
|
72
|
+
merkleroot: '243786d6706421ba9ebe9a0d153a5e79d9f781825dbbb0ed26ccc647f10984ee',
|
|
73
|
+
time: 1398712802,
|
|
74
|
+
nonce: 128139,
|
|
75
|
+
bits: '1e0ffff0',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
version: 2,
|
|
79
|
+
previousblockhash: '00000e98a2b0b1505e3ed00dba28988cd81440de4ec48d817412c2178d332985',
|
|
80
|
+
merkleroot: 'b158385f441d9299732ec264442d28b6009b8d24388ee7e23a6ce7e6051bfa31',
|
|
81
|
+
time: 1398712803,
|
|
82
|
+
nonce: 23451,
|
|
83
|
+
bits: '1e0ffff0',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
version: 2,
|
|
87
|
+
previousblockhash: '000001128124cab4756edc387dce2b8762514916d953a4993971a40d78240978',
|
|
88
|
+
merkleroot: '1f966cdf6ca90f211308554f90f33935cd8e25ab329ffedfa1066b00a581d5d5',
|
|
89
|
+
time: 1398712807,
|
|
90
|
+
nonce: 58648,
|
|
91
|
+
bits: '1e0ffff0',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
version: 2,
|
|
95
|
+
previousblockhash: '00000ce430de949c85a145b02e33ebbaed3772dc8f3d668f66edc6852c24d002',
|
|
96
|
+
merkleroot: '663360403b5fba9cd8744c3706f9660c7d3fee4e5a9ee98ce0ad5e5ad7824c1d',
|
|
97
|
+
time: 1398712821,
|
|
98
|
+
nonce: 312363,
|
|
99
|
+
bits: '1e0ffff0',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
version: 2,
|
|
103
|
+
previousblockhash: '00000ac3a0c9df709260e41290d6902e5a4a073099f11fe8c1ce80aadc4bb331',
|
|
104
|
+
merkleroot: 'c2ed22a3e6712b842359dfbb6f0a133ae122ffb601e4cf60e30b8c99f9438f4f',
|
|
105
|
+
time: 1398712821,
|
|
106
|
+
nonce: 8325,
|
|
107
|
+
bits: '1e0ffff0',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
version: 2,
|
|
111
|
+
previousblockhash: '00000b526b34e733532d706c1f4cef93eefe707b87c2c3cb2978e1a84b97c501',
|
|
112
|
+
merkleroot: '8994e231d4986bbea391d08f67ff9b6da758c86aa2fc9e9816f105462d18cf1b',
|
|
113
|
+
time: 1398712824,
|
|
114
|
+
nonce: 60659,
|
|
115
|
+
bits: '1e0ffff0',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
version: 2,
|
|
119
|
+
previousblockhash: '00000799cc6963498a215e04402737fc1a08e696a91540756b0697f1ac7b23a8',
|
|
120
|
+
merkleroot: 'f57a78dd55cb4530df55a8b7ba5aed632b1d3819950e78f90d1acdba5ac595d9',
|
|
121
|
+
time: 1398712825,
|
|
122
|
+
nonce: 18064,
|
|
123
|
+
bits: '1e0ffff0',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
version: 2,
|
|
127
|
+
previousblockhash: '00000170cc708e9c3b491625dd8dc2d737730a738ebd349f2a770fb26944c04f',
|
|
128
|
+
merkleroot: '5494a90a580a4f16ff80d2b0c7507d7a565415091d88abeaa752b517da92e06d',
|
|
129
|
+
time: 1398886700,
|
|
130
|
+
nonce: 1555411,
|
|
131
|
+
bits: '1e0fffff',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
version: 2,
|
|
135
|
+
previousblockhash: '000000ab6ae22728c701e15a13dfa022c88f17a4e0fd71f073b0a720229de22b',
|
|
136
|
+
merkleroot: '0c03f4a03f47046d1295207ca99cc9db6757a6e4ff313a359d1182cfb8431a84',
|
|
137
|
+
time: 1405697551,
|
|
138
|
+
nonce: 1491503,
|
|
139
|
+
bits: '1e0fffff',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
version: 2,
|
|
143
|
+
confirmations: 86916,
|
|
144
|
+
previousblockhash: '00000541dfefddc46d4a7ef3873375db4a6f5b1c06a84b67346fb88e07f024d0',
|
|
145
|
+
merkleroot: '2d6ad1b165c8b7dd4f038d8003d0229259db52e7e828d0d25af38c2f2f7e1990',
|
|
146
|
+
time: 1405697569,
|
|
147
|
+
nonce: 966245,
|
|
148
|
+
bits: '1e0ffff0',
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
version: 2,
|
|
152
|
+
previousblockhash: '000000d275d8dc93e7bf8c358463c97e12be9b2b17d4e64770aca7af8dcb93d8',
|
|
153
|
+
merkleroot: 'e3552304f4c424ebe5bfc0911b1a3a6fcec15fe788acaf910f45238f16d522f7',
|
|
154
|
+
time: 1405697598,
|
|
155
|
+
nonce: 1661888,
|
|
156
|
+
bits: '1e0ffff0',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
version: 2,
|
|
160
|
+
previousblockhash: '0000073a769b38812ca2e3a6d4958cab3f21ed3cf4cc80590be3db4b9cb17c8a',
|
|
161
|
+
merkleroot: 'dd0e01125ffba80e7e7508d57da2725ccc648ed3ea3bac60ee19f81efcf8b934',
|
|
162
|
+
time: 1405697613,
|
|
163
|
+
nonce: 828461,
|
|
164
|
+
bits: '1e0ffff0',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
version: 2,
|
|
168
|
+
previousblockhash: '00000816a46bd5ea15161c7864b76a263f890d60d4aad6b53cceb8c39ee6b153',
|
|
169
|
+
merkleroot: '2847d5749c81f8c0b6b91a87a833532611feebb39a833d0e092ec7c8e141467e',
|
|
170
|
+
time: 1405697617,
|
|
171
|
+
nonce: 50599,
|
|
172
|
+
bits: '1e0ffff0',
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
version: 2,
|
|
176
|
+
previousblockhash: '00000976f999bcb32be3d5b7c2e684e8000d8566f22df2612f58b8574536addc',
|
|
177
|
+
merkleroot: '78d7b2982419345c34391df68ff2d10c0475d5513a6b52f8caaae4f350af1eee',
|
|
178
|
+
time: 1405697628,
|
|
179
|
+
nonce: 613213,
|
|
180
|
+
bits: '1e0ffff0',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
version: 2,
|
|
184
|
+
previousblockhash: '00000a4f6e00f23dde0b9197d5633b1637c0c22748adadda2d1a799b26115d0d',
|
|
185
|
+
merkleroot: 'bc8af9a84bc94da13dd144c4e1bff2d8580d33f7613d2e4c9c504b4df5c6d9b4',
|
|
186
|
+
time: 1405697647,
|
|
187
|
+
nonce: 1050462,
|
|
188
|
+
bits: '1e0ffff0',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
version: 2,
|
|
192
|
+
previousblockhash: '00000ad04d60ac3b1567b499c359b2f901be9826e358e071e5ffcb014d7e60ef',
|
|
193
|
+
merkleroot: '3cbf4973f43b967773b06169246fbbc80258631280ea84165a1c269b3601943f',
|
|
194
|
+
time: 1405697671,
|
|
195
|
+
nonce: 1381148,
|
|
196
|
+
bits: '1e0ffff0',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
version: 2,
|
|
200
|
+
previousblockhash: '00000df1e666a530efa28ac37c8cf8b80970c65aa69497fc4fbb3252d2e5f661',
|
|
201
|
+
merkleroot: '4050c8893b1d882da44d15e481b30e145ed6fe29ffa51ac99dc0e206696aa6dc',
|
|
202
|
+
time: 1405697678,
|
|
203
|
+
nonce: 352597,
|
|
204
|
+
bits: '1e0ffff0',
|
|
205
|
+
},
|
|
206
|
+
{ // invalid header, copy ^ with last digit of merkleroot changed
|
|
207
|
+
version: 2,
|
|
208
|
+
previousblockhash: '00000df1e666a530efa28ac37c8cf8b80970c65aa69497fc4fbb3252d2e5f661',
|
|
209
|
+
merkleroot: '4050c8893b1d882da44d15e481b30e145ed6fe29ffa51ac99dc0e206696aa6dd',
|
|
210
|
+
time: 1405697678,
|
|
211
|
+
nonce: 352597,
|
|
212
|
+
bits: '1e0ffff0',
|
|
213
|
+
},
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
module.exports = headers.map((h) => utils.normalizeHeader(h));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const merkleJSON = {
|
|
2
|
+
merkleBlock: { // Mainnet Block 300100
|
|
3
|
+
header: {
|
|
4
|
+
hash: '00000000000051b99f3fa12da6997bb54327c7b81509829467b499a7ce03136a',
|
|
5
|
+
version: 3,
|
|
6
|
+
prevHash: '0000000000154ef1f88653a6757f1182680a4d5831d815010d5fa646ae79ce35',
|
|
7
|
+
merkleRoot: 'a0055d45ad9b35e77fb01c59a4feb9976921493d2557a5ac0798b49e82ea1e99',
|
|
8
|
+
time: 1436550250,
|
|
9
|
+
bits: 454590659,
|
|
10
|
+
nonce: 2601264896,
|
|
11
|
+
},
|
|
12
|
+
numTransactions: 12,
|
|
13
|
+
hashes: [
|
|
14
|
+
'9d0a368bc9923c6cb966135a4ceda30cc5f259f72c8843ce015056375f8a06ec',
|
|
15
|
+
'39e5cd533567ac0a8602bcc4c29e2f01a4abb0fe68ffbc7be6c393db188b72e0',
|
|
16
|
+
'cd75b421157eca03eff664bdc165730f91ef2fa52df19ff415ab5acb30045425',
|
|
17
|
+
'2ef9795147caaeecee5bc2520704bb372cde06dbd2e871750f31336fd3f02be3',
|
|
18
|
+
'2241d3448560f8b1d3a07ea5c31e79eb595632984a20f50944809a61fdd9fe0b',
|
|
19
|
+
'45afbfe270014d5593cb065562f1fed726f767fe334d8b3f4379025cfa5be8c5',
|
|
20
|
+
'198c03da0ccf871db91fe436e2795908eac5cc7d164232182e9445f7f9db1ab2',
|
|
21
|
+
'ed07c181ce5ba7cb66d205bc970f43e1ca11996d611aa8e91e305eb8608c543c',
|
|
22
|
+
],
|
|
23
|
+
flags: [219, 63],
|
|
24
|
+
},
|
|
25
|
+
// merkleblock for inserted tx hash
|
|
26
|
+
// '7262476912a96b9a6226cfa3a8f231ba3e2b1f75c396e88367e532c79c43c95b' in testnet block 10000
|
|
27
|
+
// (bloom filter: '03359be1100000000000000001')
|
|
28
|
+
rawMerkleBlock: '000000200e71587f863213690c24b8ad07d0753b38abe6ff1328ef7661689404000000000f1e7ce895614047d5c8d3e7b537b26b0482302301aa104947eb09c55521b316b10b1e5cff7d191c166b25b80500000002a8f781d45a5b12abffcf52bac3b3fc7824cc91ef4f9bb04bc97500a1d98d91305bc9439cc732e56783e896c3751f2b3eba31f2a8a3cf26629a6ba91269476272011d',
|
|
29
|
+
// merkleblock for inserted tx hashes
|
|
30
|
+
// '7262476912a96b9a6226cfa3a8f231ba3e2b1f75c396e88367e532c79c43c95b'
|
|
31
|
+
// '3f3517ee8fa95621fe8abdd81c1e0dfb50e21dd4c5a3c01eee2c47cf664821b6' in testnet block 10000
|
|
32
|
+
// (bloom filter: '0797b88e7d21b31f130000000000000001')
|
|
33
|
+
rawMerkleBlock2: '000000200e71587f863213690c24b8ad07d0753b38abe6ff1328ef7661689404000000000f1e7ce895614047d5c8d3e7b537b26b0482302301aa104947eb09c55521b316b10b1e5cff7d191c166b25b80500000004acff07e45bfb50dd8e2fb10109f1988423cbcc9423ff07b7acb09715bd1a11e89153210725b8e219b91e433180092226c7b56649843fc51bc012c587f50030a1b6214866cf472cee1ec0a3c5d41de250fb0d1e1cd8bd8afe2156a98fee17353f5bc9439cc732e56783e896c3751f2b3eba31f2a8a3cf26629a6ba9126947627202eb01',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
module.exports = merkleJSON;
|