Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@dashevo/dashcore-lib

Package Overview
Dependencies
Maintainers
12
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dashevo/dashcore-lib - npm Package Compare versions

Comparing version 0.17.1 to 0.17.2

24

lib/transaction/payload/coinbasepayload.js

@@ -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 @@ };

2

package.json
{
"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 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc