1

I'm using a node.js client of Blockcypher in order to broadcast a Bitcoin transaction.

My code:

const originWalletBalance = getBalance(originAddress)
const fee = calculateFee()
const txBody = {
        fees: fee,
        inputs: [{ addresses: [originAddress] }],
        outputs: [
          { addresses: [targetAddress], value: amountToSend }
        ]
      }

    //@see https://www.blockcypher.com/dev/bitcoin/#creating-transactions 

    const txSkeleton = await this.bcapi.newTX(body)
    // build signer from WIF
    let keys: ECPair = ECPair.fromWIF(signingKey)
    //signing the transaction
    let tmptx = txSkeleton
    tmptx.pubkeys = []
    const SIGHASH_ALL = 0x01
    tmptx["signatures"] = tmptx["tosign"].map((tosign) => {
      tmptx["pubkeys"].push(keys.publicKey.toString("hex"))
      return bitcoin.script.signature.encode(
        keys.sign(Buffer.from(tosign, "hex")),
        SIGHASH_ALL
      ).toString("hex")
    })
    //broadcast tx
    return await this.bcapi.sendTX(tmptx)

Where the balance of the origin wallet is 190689, the amount to send is 74500, the fee is 25500.

txSkeleton is crated with 2 inputs and 2 outputs (one for the target address and the change to the origin address, as expected):

enter image description here

It all seem right, but I'm getting the following errors:

"error": "Error building input: Error generating scriptsig when building transaction: Invalid signature: Non-canonical signature: wrong length marker."
"error": "Error building input: Error generating scriptsig when building transaction: Invalid signature: Non-canonical signature: wrong length marker."
"error": "Not enough funds in 2 inputs to pay for 2 outputs, missing -74500."
"error": "Not enough funds in 2 inputs to pay for 2 outputs, missing -122500."
"error": "Not enough funds after fees in 0 inputs to pay for 2 outputs, missing -148000."

Any idea what am I doing wrong here?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.