3

I got the above error when submitting this transaction:

010000000001013894a4bdcfa20ef5a6cbfe1d22c5fe5041eab586a5ea2b044f969a02dab6b3d200000000171600141a982a7d2712fc33d47c990cd8cde15c87ca2e07ffffffff015e3f01000000000017a914fb2dc3b4dd0731c8f2559506c7d0cb876b0e71298702483045022100c68dac735a3529d84fdbfc3a8a11d313d59a9791b046fc39bbfc55db71d6d2010220028f2bbfba78c393858e3cb7ad51e24e8dfd2260d4a3cbbf8feb4d4c6005967701210371b63ebaa78a70420bc36159bed610b8f788e9a7b953558f06bb40622d9cbfe400000000

A previous transaction from the same P2SH-P2WPKH address was successfully spent but I got this error whenever I try to spend this transaction:

d2b3b6da029a964f042beaa586b5ea4150fec5221dfecba6f50ea2cfbda49438

I already attempted to sign the transaction again a few time but still got the same error.

4
  • 1
    How did you create this transaction? What commands did you use? What software?
    – Andrew Chow
    Oct 21, 2017 at 5:08
  • I used the ruby gem to build and sign this transaction Oct 30, 2017 at 6:16
  • 1
    I found out it was because of a precision error in our code. The amount that used to build the input segwit transaction is incorrect leading to this error. Oct 30, 2017 at 7:00
  • 1
    Please write an answer to your own question if you found a solution. Nov 20, 2017 at 18:53

5 Answers 5

4

You will receive this error if the value you are signing is not the exact amount of the entire unspent output value.

For example, if your unspent output value is 35,000, and you only want to send 30,000, your output value would be 30,000, and your signing amount would be 35,000. If you sign for only 30,000 (not the full amount of the unspent output) you will receive this error.

Visual Example Using BitcoinJS:

//add input
txb.addInput(txid, outn, null, scriptPubkey);

//add output
txb.addOutput(receivingAddress, 30000); //amount less the mining fee

//signing
txb.sign(0, keypair, null, null, 35000); //NOTE the amount is the FULL amount of the unspent output, NOT the amount being sent
2
  • I've faced the same error and it is very confusing. I'm sure that in my case sign gets exact full amount of input, because I walk through UTXOs and pass utxo[i].satoshis as amount. Can anything else cause this error?
    – oxfn
    May 9, 2018 at 10:21
  • I'm using bgoldjs-lib - fork of bitcoinjs-lib for BTG
    – oxfn
    May 9, 2018 at 10:56
2

I have gotten this error not only when specifying an incorrect input amount, as mentioned elsewhere in this thread, but also when sorting signatures incorrectly on a multisig transaction.

1

When I try to submit that transaction I don't get that error message. To me it looks like you are only sending 1 satoshi as transaction fee in total. Try to send it with a higher fee.

1

I found out it was because of a precision error in our code. The amount that used to build the input segwit transaction is incorrect leading to this error.

0

I got the same error when create transaction via bgoldjs-lib. Say that it's confusing like say nothing. I'd no problem with bitcore-lib, bitcoincashjs to create BTC, BCH, LTC txs. Think it's open source !^_^! or I've not so deep learning in this area. I found one solution https://github.com/Ayms/bitcoin-transactions. There're tx.js script, but in min.js format. It's created success broadcasted txs for me. There're one unsuitable output that i'm going to remove in a near time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.