Skip to content

Can't serialize or deserialize PSBT with no inputs #2293

@andrewtoth

Description

@andrewtoth
const { Psbt } = require("bitcoinjs-lib");

const psbt = new Psbt();
psbt.addOutput({
  address: "1BM1sAcrfV6d4zPKytzziu4McLQDsFC2Qc",
  value: 100000n,
});
const base64 = psbt.toBase64();

console.log(base64); // cHNidP8BACwCAAAAAAGghgEAAAAAABl2qRRxekyQdFd6Ba+UJxwysknSmKItmIisAAAAAAAAAA==
Psbt.fromBase64(base64); // Throws
bitcoin-cli decodepsbt cHNidP8BACwCAAAAAAGghgEAAAAAABl2qRRxekyQdFd6Ba+UJxwysknSmKItmIisAAAAAAAAAA==
error code: -22
error message:
TX decode failed extra data after PSBT

bitcoin-cli createpsbt '[]' '[{"1BM1sAcrfV6d4zPKytzziu4McLQDsFC2Qc": 1000000}]'
cHNidP8BACwCAAAAAAEAoHJOGAkAABl2qRRxekyQdFd6Ba+UJxwysknSmKItmIisAAAAAAAA

bitcoin-cli decodepsbt cHNidP8BACwCAAAAAAEAoHJOGAkAABl2qRRxekyQdFd6Ba+UJxwysknSmKItmIisAAAAAAAA
{
  "tx": {
    "txid": "3b029267c47308599062841be4d19b8894c5521792091399a972516439f89f21",
    "hash": "3b029267c47308599062841be4d19b8894c5521792091399a972516439f89f21",
    "version": 2,
    "size": 44,
    "vsize": 44,
    "weight": 176,
    "locktime": 0,
    "vin": [
    ],
    "vout": [
      {
        "value": 100000.00000000,
        "n": 0,
        "scriptPubKey": {
          "asm": "OP_DUP OP_HASH160 717a4c9074577a05af94271c32b249d298a22d98 OP_EQUALVERIFY OP_CHECKSIG",
          "desc": "addr(1BM1sAcrfV6d4zPKytzziu4McLQDsFC2Qc)#ed77rxnh",
          "hex": "76a914717a4c9074577a05af94271c32b249d298a22d9888ac",
          "address": "1BM1sAcrfV6d4zPKytzziu4McLQDsFC2Qc",
          "type": "pubkeyhash"
        }
      }
    ]
  },
  "global_xpubs": [
  ],
  "psbt_version": 0,
  "proprietary": [
  ],
  "unknown": {
  },
  "inputs": [
  ],
  "outputs": [
    {
    }
  ],
  "fee": -100000.00000000
}
Psbt.fromBase64(
  "cHNidP8BACwCAAAAAAEAoHJOGAkAABl2qRRxekyQdFd6Ba+UJxwysknSmKItmIisAAAAAAAA"
); // Throws

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions