Incomplete transactions, transaction templates and PSBT

  • A fully signed transaction is considered “complete”.
  • A transaction that is not fully signed is considered “incomplete”.
  • “PSBT” or “Partially signed Bitcoin transaction” encoding was created for Bitcoin Core to store or communicate both incomplete and complete transactions with metadata about the contents.
  • The “extended transaction” encoding was how the Electrum wallet exchanged incomplete transactions before PSBT was standardised.

PSBT

The Bitcoin Core ecosystem has standardised on PSBT. It’s integrated into their node software, their Electrum wallet has integrated it and hardware wallets are phasing out their custom protocols of communicating transaction data with PSBT integration.

Necessary compatibility

If the goal is to allow existing Bitcoin Core businesses with their own wallets, applications, libraries and tooling to easily integrate with ElectrumSV, then we must start by working with what they use. We can use their non-witness path where parent transactions will be included in each incomplete input. PSBT version 0 support is already been working.

Possible BitcoinSV adaptations

Now I think it is reasonable to say that the whole inclusion of parent transactions when the context is exchanging incomplete transactions with other parties, is odd. It’s a conceit made based on the extreme problems faced by the problematic hardware wallet use case — I’ve several other articles that go into how their paradigm does not work on Bitcoin SV, the latest being this one. And even then, the problem only occurs if the user is considered to be a mindless automaton.

  • Spent output value.
  • Script template identifiers.
  • Signing negotiation.
  • Public keys.
  • Non-BIP32 derivations.
  • P2PKH might be “standard/p2pkh”.
  • P2PK might be “standard/p2pk”.
  • Bare multi-signature might be “standard/bare-multisignature”.
  • P2SH multi-signature might be “standard/p2sh-multisignature”
  • An older version of an sCrypt contract might be “sCrypt/zk-snark-thing.3.45” (which 3.45 is an updated version of that contract).

Final thoughts

That’s pretty much it. It often helps me to write these things down to give me another perspective so that I can see if there might be anything that feels like it is missing. And to put the information out there, and hopefully receive some feedback.

Addendum

Some additional notes are provided here, but are not necessary to read unless you want to.

Electrum extended transactions

The Electrum extended transaction format is the Bitcoin transaction format but with some amendments that can be detected by compatible applications and processed.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store