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

@dashevo/dashcore-lib

Package Overview
Dependencies
Maintainers
11
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 1.0.0-alpha.5 to 1.0.0-alpha.8

lib/transaction/payload/abstractpayload.js

2

lib/transaction/index.js

@@ -8,2 +8,2 @@ module.exports = require('./transaction');

module.exports.Sighash = require('./sighash');
module.exports.SpecialTransactions = require('./specialtransactions');
module.exports.Payload = require('./payload');

@@ -28,5 +28,4 @@ 'use strict';

var BN = require('../crypto/bn');
var registeredTransactionTypes = require('./specialtransactions/constants').registeredTransactionTypes;
var payloadParser = require('./specialtransactions/payload/payloadparser');
var specialTransactionConstants = require('./specialtransactions/constants');
var Payload = require('./payload');
var registeredTransactionTypes = Payload.constants.registeredTransactionTypes;

@@ -92,3 +91,3 @@ /**

Transaction.TYPES = specialTransactionConstants.registeredTransactionTypes;
Transaction.TYPES = registeredTransactionTypes;

@@ -311,3 +310,3 @@ /* Constructors and Serialization */

if (this.isSpecialTransaction() && this.hasExtraPayload()) {
var payload = payloadParser.serializePayloadToBuffer(this.extraPayload);
var payload = Payload.serializeToBuffer(this.extraPayload);
writer.writeVarintNum(payload.length);

@@ -349,3 +348,3 @@ writer.write(payload);

var payloadBuffer = reader.read(extraPayloadSize);
this.setExtraPayload(payloadParser.parsePayloadBuffer(this.type, payloadBuffer));
this.setExtraPayload(Payload.parseBuffer(this.type, payloadBuffer));
}

@@ -389,3 +388,3 @@ }

obj.type = this.type;
obj.extraPayload = payloadParser.serializePayloadToJSON(this.extraPayload);
obj.extraPayload = Payload.serializeToJSON(this.extraPayload);
}

@@ -441,3 +440,3 @@ return obj;

this.type = transaction.type;
this.setExtraPayload(payloadParser.parsePayloadJSON(transaction.type, transaction.extraPayload))
this.setExtraPayload(Payload.parseJSON(transaction.type, transaction.extraPayload))
}

@@ -1288,9 +1287,15 @@ this._checkConsistency(arg);

/**
* Set special transaction type
* Set special transaction type and create an empty extraPayload
* @param {number} type
* @returns {Transaction}
*/
Transaction.prototype.setSpecialTransactionType = function(type) {
Transaction.prototype.setType = function(type) {
if (Boolean(this.type)) {
throw new Error('Type is already set');
}
$.checkArgumentType(type, 'number');
this.type = type;
this.setExtraPayload(Payload.create(type));
return this;

@@ -1320,2 +1325,8 @@ };

Transaction.prototype.setExtraPayload = function(payload) {
if (!Boolean(this.type)) {
throw new Error('Transaction type is not set');
}
if (!Payload.hasCorrectType(this.type, payload)) {
throw new Error('Payload doesn\'t match the transaction type');
}
this.extraPayload = payload;

@@ -1330,5 +1341,14 @@ return this;

Transaction.prototype.getExtraPayloadSize = function getExtraPayloadSize() {
return payloadParser.serializePayloadToBuffer(this.extraPayload).length;
return Payload.serializeToBuffer(this.extraPayload).length;
};
Transaction.prototype.addFundingOutput = function addFundingOutput(fundingAmount) {
var script = new Script().add('OP_RETURN');
var output = new Output({
satoshis: fundingAmount,
script: script
});
this.addOutput(output);
};
module.exports = Transaction;
{
"name": "@dashevo/dashcore-lib",
"version": "1.0.0-alpha.5",
"version": "1.0.0-alpha.8",
"description": "A pure and powerful JavaScript Dash library.",

@@ -5,0 +5,0 @@ "author": "BitPay <dev@bitpay.com>",

@@ -18,9 +18,7 @@ 'use strict';

var Address = bitcore.Address;
var Networks = bitcore.Networks;
var Opcode = bitcore.Opcode;
var errors = bitcore.errors;
var BufferUtil = bitcore.util.buffer;
var SpecialTransactions = bitcore.Transaction.SpecialTransactions;
var SubTxRegisterPayload = SpecialTransactions.payload.SubTxRegisterPayload;
var RegisteredTransactionTypes = SpecialTransactions.constants.registeredTransactionTypes;
var Payload = bitcore.Transaction.Payload;
var SubTxRegisterPayload = Payload.SubTxRegisterPayload;
var RegisteredTransactionTypes = Payload.constants.registeredTransactionTypes;

@@ -1290,6 +1288,7 @@ var transactionVector = require('../data/tx_creation');

var transaction = Transaction()
.setType(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER)
.setExtraPayload(validPayload);
// 2 bytes for payload version, 1 byte for username size
var expectedPayloadSize = 2 + 1 + nameSize + SpecialTransactions.constants.PUBKEY_ID_SIZE;
// 2 bytes for payload version, 1 byte for username size, and 1 is empty signature
var expectedPayloadSize = 2 + 1 + nameSize + Payload.constants.PUBKEY_ID_SIZE + 1;
var payloadSize = transaction.getExtraPayloadSize();

@@ -1304,4 +1303,4 @@ expect(payloadSize).to.be.equal(expectedPayloadSize);

.change(fromAddress)
.setType(RegisteredTransactionTypes.TRANSACTION_SUBTX_REGISTER)
.setExtraPayload(validPayload)
.setSpecialTransactionType(RegisteredTransactionTypes.TRANSACTION_SUBTX_REGISTER)
.sign(privateKey);

@@ -1315,2 +1314,12 @@

});
it('Should not be possible to set extra payload if transaction type is not set', function () {
expect(function () {
var transaction = Transaction()
.from(simpleUtxoWith1BTC)
.to(fromAddress, 10000)
.change(fromAddress)
.setExtraPayload(validPayload)
.sign(privateKey);
}).to.throw('Transaction type is not set');
});
it('Should be possible to serialize and deserialize special transaction from object', function() {

@@ -1321,4 +1330,4 @@ var transaction = Transaction()

.change(fromAddress)
.setType(RegisteredTransactionTypes.TRANSACTION_SUBTX_REGISTER)
.setExtraPayload(validPayload)
.setSpecialTransactionType(RegisteredTransactionTypes.TRANSACTION_SUBTX_REGISTER)
.sign(privateKey);

@@ -1337,6 +1346,7 @@

.change(fromAddress)
.setSpecialTransactionType(1)
.sign(privateKey);
.setType(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER);
expect(function () { transaction.serialize(); }).to.throw('Transaction payload size is invalid');
delete transaction.extraPayload;
expect(function () { transaction.sign(privateKey).serialize(); }).to.throw('Transaction payload size is invalid');
});

@@ -1348,6 +1358,8 @@ it('Should throw when extra payload is set, but special transaction type is not set', function () {

.change(fromAddress)
.setType(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER)
.setExtraPayload(validPayload)
.sign(privateKey);
transaction.extraPayloadSize = 1;
delete transaction.type;
expect(function () { transaction.serialize(); }).to.throw('Special transaction type is not set');

@@ -1358,3 +1370,3 @@ });

it('Should return true if a transaction is qualified to be a special transaction', function () {
var transaction = Transaction().setSpecialTransactionType(1);
var transaction = Transaction().setType(Transaction.TYPES.TRANSACTION_COINBASE);

@@ -1369,2 +1381,26 @@ expect(transaction.isSpecialTransaction()).to.be.true;

});
describe('setType', function () {
it('Should set type and create payload', function () {
var transaction = new Transaction().setType(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER);
expect(transaction.type).to.be.equal(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER);
expect(transaction.extraPayload).to.be.an.instanceOf(SubTxRegisterPayload);
});
it('Should not be able to set transaction type after it was already set', function () {
var transaction = new Transaction().setType(Transaction.TYPES.TRANSACTION_SUBTX_REGISTER);
expect(transaction.extraPayload).to.be.an.instanceOf(SubTxRegisterPayload);
expect(function() {
transaction.setType(Transaction.TYPES.TRANSACTION_NORMAL)
}).to.throw('Type is already set');
});
it('Should throw if transaction type is unknown', function () {
expect(function () {
var transaction = new Transaction().setType(123367);
}).to.throw('Unknown special transaction type');
});
});
});

@@ -1371,0 +1407,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