@dashevo/dash-spv 5.1.0 → 5.2.0-dev.1
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/.ultra.cache.json +1 -1
- package/lib/consensus.js +6 -0
- package/package.json +1 -1
- package/test/index.js +21 -0
package/.ultra.cache.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"files":{".gitignore":"095d365a56f423d4fab2345c95c137e7c6ea45c0",".mocharc.yml":"f6d924f143da5bc22530e55dcec6922aff69d8e1","LICENSE":"95bf3c7cb642fb61c1bbbb319fd3c83e47a5af96","README.md":"3659fd1bfb44b5e6916679ae586ccbff18683e59","config/config.js":"267c3536b5fe54c88080a56241c34d7393a54ac2","eslint.config.mjs":"cdf50e57d0d206e17f37b855643f55f73717fcd2","index.js":"4413accedb71ffb73ea7ce4ad45a2035c2ce92ca","lib/blockstore.js":"1ed82a8c1cfb4bc3aa96f0669a27c94d2e76b164","lib/consensus.js":"
|
|
1
|
+
{"files":{".gitignore":"095d365a56f423d4fab2345c95c137e7c6ea45c0",".mocharc.yml":"f6d924f143da5bc22530e55dcec6922aff69d8e1","LICENSE":"95bf3c7cb642fb61c1bbbb319fd3c83e47a5af96","README.md":"3659fd1bfb44b5e6916679ae586ccbff18683e59","config/config.js":"267c3536b5fe54c88080a56241c34d7393a54ac2","eslint.config.mjs":"cdf50e57d0d206e17f37b855643f55f73717fcd2","index.js":"4413accedb71ffb73ea7ce4ad45a2035c2ce92ca","lib/blockstore.js":"1ed82a8c1cfb4bc3aa96f0669a27c94d2e76b164","lib/consensus.js":"8e9bbb54c55ae3cf3d4caceca6f299635d1904bf","lib/errors/SPVError.js":"08b7af972c146bcdf29ffaa06eb90ca2c5660914","lib/merkleproofs.js":"1bba2c774e52e3cdfd4b99973c11229e6cf2cf6d","lib/spvchain.js":"314adc7f2e810bcceb5f30f4c90b6e566cf7650a","lib/test/bootstrap.js":"e2b2b2b17a9bf0ebff7721d8cb1e5cb75efb0f0f","lib/utils.js":"4ca99de11dd84867be29f1bab1ef09000fa8b5df","lib/x11.js":"d85e555bad579a8b3e2e92447331933ce9b0c4b1","package.json":"a695d0c671f26f294c6b8565ed42128c523ca75c","test/data/headers.js":"eb9cae85ee11027338fbf1f69e373d22388286d6","test/data/merkleproofs.js":"49ea4c29fb1f0cf6378ed7ee46b0a1db3bb555c1","test/data/rawHeaders.js":"03fed6ca2f8c2d1b63cfa13743431a2d551c7ad9","test/index.js":"00e843c3cd1f055dc3b9004a28e3a77dbb58db1a","test/spvchain.js":"f6441870e91b7faf2e6b23d034f40d007a697652"},"deps":{}}
|
package/lib/consensus.js
CHANGED
|
@@ -65,6 +65,12 @@ function isValidBlockHeader(newHeader, previousHeaders, network = 'mainnet') {
|
|
|
65
65
|
return false;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
// Dash Core disables difficulty retargeting on regtest.
|
|
69
|
+
if (network === 'regtest' && normalizedPreviousHeaders.length > 0) {
|
|
70
|
+
const previousHeader = normalizedPreviousHeaders[normalizedPreviousHeaders.length - 1];
|
|
71
|
+
return normalizedHeader.bits === previousHeader.bits;
|
|
72
|
+
}
|
|
73
|
+
|
|
68
74
|
// A trusted checkpoint may contain fewer than a full DGW window. Proof of
|
|
69
75
|
// work, the network pow limit, and timestamp rules still apply immediately;
|
|
70
76
|
// exact difficulty validation begins as soon as the required history exists.
|
package/package.json
CHANGED
package/test/index.js
CHANGED
|
@@ -159,6 +159,27 @@ describe('Block header consensus validation', () => {
|
|
|
159
159
|
consensus.isValidBlockHeader(nextHeader, wrongHistory, 'mainnet')
|
|
160
160
|
.should.equal(false);
|
|
161
161
|
});
|
|
162
|
+
|
|
163
|
+
it('should accept fast-mined regtest headers when Core retargeting is disabled', () => {
|
|
164
|
+
const previousHeaders = [new Blockchain('regtest').genesis];
|
|
165
|
+
|
|
166
|
+
while (previousHeaders.length < 24) {
|
|
167
|
+
previousHeaders.push(utils.createBlock(previousHeaders.at(-1), 0x207fffff));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const nextHeader = utils.createBlock(previousHeaders.at(-1), 0x207fffff);
|
|
171
|
+
|
|
172
|
+
consensus.isValidBlockHeader(nextHeader, previousHeaders, 'regtest')
|
|
173
|
+
.should.equal(true);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('should reject a changed regtest target before the DGW history window', () => {
|
|
177
|
+
const { genesis } = new Blockchain('regtest');
|
|
178
|
+
const changedTargetHeader = utils.createBlock(genesis, 0x2070ffff);
|
|
179
|
+
|
|
180
|
+
consensus.isValidBlockHeader(changedTargetHeader, [genesis], 'regtest')
|
|
181
|
+
.should.equal(false);
|
|
182
|
+
});
|
|
162
183
|
});
|
|
163
184
|
|
|
164
185
|
describe('SPV-DASH (addHeaders) add many headers for testnet', () => {
|