Skip to content
This repository has been archived by the owner on Jun 7, 2019. It is now read-only.

Commit

Permalink
Merge pull request #137 from LiskHQ/136-createTransaction-function-mu…
Browse files Browse the repository at this point in the history
…ltisig

createTransaction function multisig - Fixes #136
  • Loading branch information
Tobias Schwarz committed Jun 21, 2017
2 parents 88ce070 + 650cb79 commit db9f25f
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 2 deletions.
46 changes: 44 additions & 2 deletions lib/transactions/multisignature.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,48 @@ var constants = require('../constants.js');
var slots = require('../time/slots.js');

/**
* @method createDapp
* @method createTransaction
* @param recipientId string
* @param amount number
* @param secret secret
* @param secondSecret secret
* @param requesterPublicKey string
*
* @return {string}
*/

function createTransaction (recipientId, amount, secret, secondSecret, requesterPublicKey) {

var transaction = {
type: 0,
amount: amount,
fee: constants.fees.send,
recipientId: recipientId,
timestamp: slots.getTime(),
asset: {}
};

var keys = crypto.getKeys(secret);
transaction.senderPublicKey = keys.publicKey;

transaction.requesterPublicKey = requesterPublicKey || transaction.senderPublicKey;


crypto.sign(transaction, keys);

if (secondSecret) {
var secondKeys = crypto.getKeys(secondSecret);
crypto.secondSign(transaction, secondKeys);
}

transaction.id = crypto.getId(transaction);
transaction.signatures = [];

return transaction;
}

/**
* @method signTransaction
* @param trs transaction object
* @param secret
*
Expand Down Expand Up @@ -81,5 +122,6 @@ function createMultisignature (secret, secondSecret, keysgroup, lifetime, min) {

module.exports = {
signTransaction: signTransaction,
createMultisignature: createMultisignature
createMultisignature: createMultisignature,
createTransaction: createTransaction
};
40 changes: 40 additions & 0 deletions test/transactions/multisignature.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,44 @@ describe('multisignature.js', function () {

});

describe('#createTransaction', function () {

var recipientId = '123456789L';
var amount = '500';
var secret = 'privateSecret';
var secondSecret = 'privateSecondSecret';
var requesterPublicKey = 'abc123';
var msigTransaction = lisk.multisignature.createTransaction(recipientId, amount, secret, secondSecret, requesterPublicKey);

it('should create a multisignature transaction', function () {

(msigTransaction.signatures).should.be.ok;

});

it('should have requesterPublicKey as property', function () {

(msigTransaction.requesterPublicKey).should.be.equal(requesterPublicKey);
});

it('should have the signatures property as empty array', function () {

(msigTransaction.signatures).should.be.an.Array;

});

it('should create a multisignature transaction without requesterPublicKey and secondSecret', function () {

var msigTransaction2 = lisk.multisignature.createTransaction(recipientId, amount, secret);
var pubKey = lisk.crypto.getPrivateAndPublicKeyFromSecret(secret).publicKey;

(msigTransaction2.requesterPublicKey).should.be.equal(pubKey);

console.log(msigTransaction2);

});


});

});

0 comments on commit db9f25f

Please sign in to comment.