diff --git a/src/wallet.js b/src/wallet.js index 87df650..5607c54 100644 --- a/src/wallet.js +++ b/src/wallet.js @@ -179,6 +179,8 @@ var Wallet = function (seed, options) { } this.createTx = function(to, value, fixedFee) { + checkDust(value) + var tx = new Transaction() tx.addOutput(to, value) @@ -206,6 +208,12 @@ var Wallet = function (seed, options) { return tx } + function checkDust(value){ + if (isNullOrUndefined(value) || value < 5430) { + throw new Error("Value below dust threshold") + } + } + function estimateFeePadChangeOutput(tx){ var tmpTx = tx.clone() tmpTx.addOutput(getChangeAddress(), 0) diff --git a/test/wallet.js b/test/wallet.js index dbee547..97b6e66 100644 --- a/test/wallet.js +++ b/test/wallet.js @@ -367,10 +367,6 @@ describe('Wallet', function() { } }) - function fakeTxHash(i) { - return "txtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtx" + i - } - describe('choosing utxo', function(){ it('calculates fees', function(){ var tx = wallet.createTx(to, value) @@ -441,6 +437,20 @@ describe('Wallet', function() { assert(Transaction.prototype.sign.calledWith(1, wallet.getPrivateKeyForAddress(address1))) }) }) + + describe('when value is below dust threshold', function(){ + it('throws an error', function(){ + var value = 5429 + + assert.throws(function() { + wallet.createTx(to, value) + }, Error, 'Value below dust threshold') + }) + }) + + function fakeTxHash(i) { + return "txtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtx" + i + } }) function assertEqual(obj1, obj2){