Browse Source

Merge pull request #1 from eordano/dust

Add test: OP_RETURN is not dust
patch-2
Gabriel Jaldon 10 years ago
parent
commit
66d061e5b2
  1. 10
      lib/transaction/transaction.js
  2. 12
      test/transaction/transaction.js

10
lib/transaction/transaction.js

@ -151,12 +151,10 @@ Transaction.prototype._validateChange = function() {
Transaction.DUST_AMOUNT = 5460; Transaction.DUST_AMOUNT = 5460;
Transaction.prototype._hasDustOutputs = function() { Transaction.prototype._hasDustOutputs = function() {
var output; var index, output;
for (output in this.outputs) { for (index in this.outputs) {
if (this.outputs[output].script.isDataOut()) { output = this.outputs[index];
return false; if (output.satoshis < Transaction.DUST_AMOUNT && !output.script.isDataOut()) {
}
if (this.outputs[output].satoshis < Transaction.DUST_AMOUNT) {
return true; return true;
} }
} }

12
test/transaction/transaction.js

@ -279,7 +279,7 @@ describe('Transaction', function() {
return transaction.serialize(); return transaction.serialize();
}).to.throw(errors.Transaction.FeeError); }).to.throw(errors.Transaction.FeeError);
}); });
it('fails if a dust transaction is created', function() { it('fails if a dust output is created', function() {
var transaction = new Transaction() var transaction = new Transaction()
.from(simpleUtxoWith1BTC) .from(simpleUtxoWith1BTC)
.to(toAddress, 1) .to(toAddress, 1)
@ -289,6 +289,16 @@ describe('Transaction', function() {
return transaction.serialize(); return transaction.serialize();
}).to.throw(errors.Transaction.DustOutputs); }).to.throw(errors.Transaction.DustOutputs);
}); });
it('doesn\'t fail if a dust output is an op_return', function() {
var transaction = new Transaction()
.from(simpleUtxoWith1BTC)
.addData('not dust!')
.change(changeAddress)
.sign(privateKey);
expect(function() {
return transaction.serialize();
}).to.not.throw(errors.Transaction.DustOutputs);
});
}); });
describe('to and from JSON', function() { describe('to and from JSON', function() {

Loading…
Cancel
Save