@dashevo/dashcore-lib
Advanced tools
Comparing version 0.17.1 to 0.17.2
@@ -22,2 +22,3 @@ /* eslint-disable */ | ||
* @property {string} merkleRootMNList | ||
* @property {string} merkleRootQuorums | ||
*/ | ||
@@ -30,2 +31,3 @@ | ||
* @property {string} merkleRootMNList | ||
* @property {string} merkleRootQuorums | ||
*/ | ||
@@ -53,2 +55,5 @@ function CoinbasePayload() { | ||
payload.merkleRootMNList = payloadBufferReader.read(HASH_SIZE).reverse().toString('hex'); | ||
if (payload.version >= 2) { | ||
payload.merkleRootQuorums = payloadBufferReader.read(HASH_SIZE).reverse().toString('hex'); | ||
} | ||
@@ -73,2 +78,5 @@ if (!payloadBufferReader.finished()) { | ||
payload.merkleRootMNList = payloadJson.merkleRootMNList; | ||
if (payload.version >= 2) { | ||
payload.merkleRootQuorums = payloadJson.merkleRootQuorums; | ||
} | ||
@@ -90,2 +98,6 @@ payload.validate(); | ||
Preconditions.checkArgument(this.merkleRootMNList.length === constants.SHA256_HASH_SIZE * 2, 'Invalid merkleRootMNList size'); | ||
if (this.version >= 2) { | ||
Preconditions.checkArgument(isHexString(this.merkleRootQuorums), 'expect merkleRootQuorums to be a hex string but got ' + typeof this.merkleRootQuorums); | ||
Preconditions.checkArgument(this.merkleRootQuorums.length === constants.SHA256_HASH_SIZE * 2, 'Invalid merkleRootQuorums size'); | ||
} | ||
return true; | ||
@@ -100,7 +112,11 @@ }; | ||
this.validate(); | ||
return { | ||
const json = { | ||
version: this.version, | ||
height: this.height, | ||
merkleRootMNList: this.merkleRootMNList | ||
merkleRootMNList: this.merkleRootMNList, | ||
}; | ||
if (this.version >= 2) { | ||
json.merkleRootQuorums = this.merkleRootQuorums | ||
} | ||
return json; | ||
}; | ||
@@ -121,2 +137,6 @@ | ||
if (this.version >= 2) { | ||
payloadBufferWriter.write(Buffer.from(this.merkleRootQuorums, 'hex').reverse()); | ||
} | ||
return payloadBufferWriter.toBuffer(); | ||
@@ -123,0 +143,0 @@ }; |
{ | ||
"name": "@dashevo/dashcore-lib", | ||
"version": "0.17.1", | ||
"version": "0.17.2", | ||
"description": "A pure and powerful JavaScript Dash library.", | ||
@@ -5,0 +5,0 @@ "author": "Dash Core Group, Inc. <dev@dash.org>", |
@@ -11,12 +11,14 @@ /* eslint-disable */ | ||
var merkleRootMNList = 'e83c76065797d4542f1cd02e00d02093bea6fb53f5ad6aaa160fd3ccb30001b9'; | ||
var merkleRootMNList = 'a1d4f77f5c85a9d56293878edda45ba6fb3e433e6b9bc278c0f4c5799748b975'; | ||
var merkleRootQuorums = '9491099bb93b789d8628acce8f8a84c0f4af8196d3dd6c2427aca0ee702fcc90'; | ||
var validCoinbasePayloadJSON = { | ||
version: 10, | ||
height: 20, | ||
merkleRootMNList: merkleRootMNList | ||
version: 2, | ||
height: 80672, | ||
merkleRootMNList: merkleRootMNList, | ||
merkleRootQuorums: merkleRootQuorums | ||
}; | ||
// Contains same data as JSON above | ||
// 0a00 is 16-bit unsigned 10, 14000000 is 32 bit unsigned 20, everything else is a hash. | ||
var validCoinbasePayloadHexString = '0a0014000000b90100b3ccd30f16aa6aadf553fba6be9320d0002ed01c2f54d4975706763ce8'; | ||
// 0200 is 16-bit unsigned 2, 203b0100 is 32 bit unsigned 80672, everything else is a hash. | ||
var validCoinbasePayloadHexString = '0200203b010075b9489779c5f4c078c29b6b3e433efba65ba4dd8e879362d5a9855c7ff7d4a190cc2f70eea0ac27246cddd39681aff4c0848a8fceac28869d783bb99b099194'; | ||
var validCoinbasePayloadBuffer = Buffer.from(validCoinbasePayloadHexString, 'hex'); | ||
@@ -41,5 +43,6 @@ var validCoinbasePayload = CoinbasePayload.fromJSON(validCoinbasePayloadJSON); | ||
expect(payload).to.be.an.instanceOf(CoinbasePayload); | ||
expect(payload.version).to.be.equal(10); | ||
expect(payload.height).to.be.equal(20); | ||
expect(payload.version).to.be.equal(2); | ||
expect(payload.height).to.be.equal(80672); | ||
expect(payload.merkleRootMNList).to.be.equal(merkleRootMNList); | ||
expect(payload.merkleRootQuorums).to.be.equal(merkleRootQuorums); | ||
expect(payload.validate.callCount).to.be.equal(1); | ||
@@ -67,4 +70,4 @@ }); | ||
expect(payload).to.be.an.instanceOf(CoinbasePayload); | ||
expect(payload.version).to.be.equal(10); | ||
expect(payload.height).to.be.equal(20); | ||
expect(payload.version).to.be.equal(2); | ||
expect(payload.height).to.be.equal(80672); | ||
expect(payload.merkleRootMNList).to.be.equal(merkleRootMNList); | ||
@@ -179,2 +182,37 @@ expect(payload.validate.callCount).to.be.equal(1); | ||
}); | ||
it('Should allow only sha256 hash as merkleRootQuorums', function () { | ||
var payload = validCoinbasePayload.copy(); | ||
if (payload.version >= 2) { | ||
payload.merkleRootQuorums = -1; | ||
expect(function () { | ||
payload.validate() | ||
}).to.throw('Invalid Argument: expect merkleRootQuorums to be a hex string'); | ||
payload.merkleRootQuorums = 1.5; | ||
expect(function () { | ||
payload.validate() | ||
}).to.throw('Invalid Argument: expect merkleRootQuorums to be a hex string'); | ||
payload.merkleRootQuorums = '12'; | ||
expect(function () { | ||
payload.validate() | ||
}).to.throw('Invalid Argument: Invalid merkleRootQuorums size'); | ||
payload.merkleRootQuorums = Buffer.from('0a0f', 'hex'); | ||
expect(function () { | ||
payload.validate() | ||
}).to.throw('Invalid Argument: expect merkleRootQuorums to be a hex string'); | ||
payload.merkleRootQuorums = merkleRootMNList; | ||
expect(function () { | ||
payload.validate() | ||
}).not.to.throw; | ||
} | ||
}); | ||
}); | ||
@@ -181,0 +219,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2803737
39968