bitcoinjs / bitcoinjs-lib

A javascript Bitcoin library for node.js and browsers.
MIT License
5.65k stars 2.09k forks source link

Error validating transaction: Error running script for input 0 referencing **TXID** at 1: Script was NOT verified successfully.. #1663

Closed i-am-vivek closed 3 years ago

i-am-vivek commented 3 years ago

bitcoinjs-lib version: 5.2.0 Node version: 12.20.0 Npm version: 6.14.8

Decoded Transaction

{
    "addresses": [
        "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS",
        "mx5vEBzeQuXK7jKQMTknFidzrkNSQm9tv8"
    ],
    "block_height": -1,
    "block_index": -1,
    "confirmations": 0,
    "double_spend": false,
    "fees": 90000,
    "hash": "e07eefbf4d8eb5960ab848bb5a66042c8f33a78a1301b0a7fd88dd00172a7523",
    "inputs": [
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 1,
            "output_value": 100000,
            "prev_hash": "3a2790bd1fb66d41c2a7216f55d124ede7159b37e414ab5d18be3c8da46c4006",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 0,
            "output_value": 100000,
            "prev_hash": "bf74ac1fc47c3f9f907a7d0654214676b071d84c198e1d916222e66a91db5629",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 0,
            "output_value": 100000,
            "prev_hash": "53144c8b86922cb9379ea62b7bde205d0526b27d8bc33351447d41f5d6eedc40",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 1,
            "output_value": 100000,
            "prev_hash": "44d0ccfdb3fd887a7b308c9255a9233c5ee405616ee20a2f9dde9f17ceac2459",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 0,
            "output_value": 100000,
            "prev_hash": "7697ff68e37c77a0684d9702a72042338b0cb1c8bddeff3bf5e7a40966e41475",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 0,
            "output_value": 100000,
            "prev_hash": "fb2c499e111a0716bf43522e3b6b8cbcc09632db344495f2c01c88b94d228495",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "age": 1902370,
            "output_index": 0,
            "output_value": 10000,
            "prev_hash": "30fb1d9aba906b2bca06725e2a1f39cfd4130e762ec3931d03da2f3c2add46f3",
            "script": "16001413e6b429f88647c0c3cb62c7d751617b8daae7ed",
            "script_type": "pay-to-pubkey-hash",
            "sequence": 4294967295
        }
    ],
    "outputs": [
        {
            "addresses": [
                "mx5vEBzeQuXK7jKQMTknFidzrkNSQm9tv8"
            ],
            "script": "76a914b5be039fc0af641d43f73e89a877eb53cd66caf888ac",
            "script_type": "pay-to-pubkey-hash",
            "value": 10000
        },
        {
            "addresses": [
                "mhLBWH3Z9XyT41LGcX42bm2gwrQQ1X6YFS"
            ],
            "script": "76a91413e6b429f88647c0c3cb62c7d751617b8daae7ed88ac",
            "script_type": "pay-to-pubkey-hash",
            "value": 510000
        }
    ],
    "preference": "medium",
    "received": "2021-01-05T11:28:12.194040262Z",
    "relayed_by": "54.166.208.68",
    "size": 526,
    "total": 520000,
    "ver": 2,
    "vin_sz": 7,
    "vout_sz": 2
}

Transaction Hex: 0200000000010706406CA48D3CBE185DAB14E4379B15E7ED24D1556F21A7C2416DB61FBD90273A010000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF2956DB916AE62262911D8E194CD871B076462154067D7A909F3F7CC41FAC74BF000000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF40DCEED6F5417D445133C38B7DB226055D20DE7B2BA69E37B92C92868B4C1453000000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF5924ACCE179FDE9D2F0AE26E6105E45E3C23A955928C307B7A88FDB3FDCCD044010000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF7514E46609A4E7F53BFFDEBDC8B10C8B334220A702974D68A0777CE368FF9776000000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF9584224DB9881CC0F2954434DB3296C0BC8C6B3B2E5243BF16071A119E492CFB000000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFFF346DD2A3C2FDA031D93C32E760E13D4CF391F2A5E7206CA2B6B90BA9A1DFB30000000001716001413E6B429F88647C0C3CB62C7D751617B8DAAE7EDFFFFFFFF0210270000000000001976A914B5BE039FC0AF641D43F73E89A877EB53CD66CAF888AC30C80700000000001976A91413E6B429F88647C0C3CB62C7D751617B8DAAE7ED88AC02473044022033C9EA626343C743958D74629AFE78C118AF036110750B9B5B0E1910A968347702206716E8A4E5F5CFF657AD60BB24D8FFD9795513FBB49A5F4543C15779AE8B8D530121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA02483045022100BBECB7B57FB0D8BF7CC835F5FF66FA719656E0430059DCC9612A2F8E3D4A2D5002202405C209E1F1BAB0D53E7C18ED136473CA23EC993FF9C80B2373DBCD1447F97E0121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA02483045022100878AA7839F0E5CA79F8E4A8704E4B0FE1A0C447F45148F80957AE072EC36FAE402200BE98FDF653D9D0B79AEF7DEFC0A445446A4268571B3170C744728AD328301630121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA0247304402202E299246C1209CA832B8334B558B6D5A7398F3AEEFD7D9CF9A8870BE1D378069022031C0883A81B3E8C61A76056329198FA5DD2B591C6CF5295A1E2B7D9498AC0CC00121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA02483045022100D7ED58D8A3A5DB8F46C874D55FB3BECA5FD1E07DD8770293EFEBEE319DF67EA1022023E2E7BAC5A22EC96A7D9BCCE3AAC3F5CBBBC731C796E7BBCC5087E60FF477300121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA02483045022100B2271ACDCEA2B87663FF7813B87C7592E9EC9E8F6D5B3BDC31A53F708C9073200220335F42709E9716336AB551C3B17D3C9DA0A09B781B06A886AED02621DB990DA10121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA02483045022100FCC9ABB4ECD5BD452FEB4764178934F4114615A06BA5CB261E076C31EB0DAA4E0220328D645F5AA4C2A31F5246C3783F9B757B62D5FEB427A42DE9224D3CC8797C0C0121031B96F44F1D1EA742D373B45990B4537A1BABE483AE9DA9D3B4F62A85B9FD72BA00000000

My Code:

privateKey: cNykQNJtiEuYSHAhNXMBv1DT3fXFXMjdNtKgVa4Kqsibbf3XnKjP

const testnet = bitcoin.networks.testnet;
    let keyPair = bitcoin.ECPair.fromWIF(private_key, testnet);
    const p2wpkh = bitcoin.payments.p2wpkh({ pubkey: keyPair.publicKey, network: testnet })
    const psbt = new bitcoin.Psbt({ network: testnet });
    const p2sh = bitcoin.payments.p2sh({
      redeem: p2wpkh,
      network: testnet
    });

const { txs } = await this.getLastTransacionDetail(address, type, mode);

let total = 0;
    for (let i = 0; i < txs.length; i++) {
      total += Number(txs[i].value) * 100000000;
      console.log(Number(txs[i].value) * 100000000)
      const input = {
        hash: txs[i].txid,
        index: txs[i].output_no,
        redeemScript: p2sh.redeem.output,
        witnessUtxo: {
          script: p2sh.output,
          value: Number(txs[i].value) * 100000000,
        }
      };
      psbt.addInput(input);
      // psbt.signInput(i, keyPair);
    }
    const fee = 0.0009 * 100000000;
    amount = Number(amount) * 100000000;
    const value = total - (amount + fee);

    psbt.addOutput({ address: to, value: amount });
    psbt.addOutput({ address, value });

    psbt.signAllInputs(keyPair);
    psbt.finalizeAllInputs();
    const tx = psbt.extractTransaction();

posting tx.toHex() to blockcypher API. When I'm doing that, I'm getting

Error validating transaction: Error running script for input 0 referencing 3a2790bd1fb66d41c2a7216f55d124ede7159b37e414ab5d18be3c8da46c4006 at 1: Script was NOT verified successfully..

junderw commented 3 years ago

You are trying to make a p2sh-p2wpkh transaction when all your inputs are p2pkh.

For these inputs, you will need to use p2pkh, and nonWitnessUtxo instead.

i-am-vivek commented 3 years ago

@junderw Thank you very much. I tried the code which is below, it is working now


        const last_transaction = await this.getTransactionDetail(txid);
        psbt.addInput({
            hash: last_transaction.txid,
            index:  last_transaction.vout,
            nonWitnessUtxo: Buffer.from(last_transaction.tx_hex, 'hex')
        });
        psbt.addOutput({
            address: to,
            value: send_amount,
        });
        psbt.signInput(0, keyPair);