Skip to content

Instantly share code, notes, and snippets.

@justinmoon
Created April 11, 2020 20:21
Show Gist options
  • Save justinmoon/dddf884d8aee7b0a0441469bac822a9c to your computer and use it in GitHub Desktop.
Save justinmoon/dddf884d8aee7b0a0441469bac822a9c to your computer and use it in GitHub Desktop.
playing with psbts and bitcoinjs-lib
const bitcoin = require('bitcoinjs-lib')
// const raw = 'cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEHakcwRAIgR1lmF5fAGwNrJZKJSGhiGDR9iYZLcZ4ff89X0eURZYcCIFMJ6r9Wqk2Ikf/REf3xM286KdqGbX+EhtdVRs7tr5MZASEDXNxh/HupccC1AaZGoqg7ECy0OIEhfKaC3Ibi1z+ogpIAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIAAAA'
// P2WPKH ledger-regtest-2
const raw = 'cHNidP8BAHICAAAAAbuKj5iuve6fDpK5pAj24ufiRXcA8312D6SRzg/QY2FxAAAAAAD+////AgDh9QUAAAAAF6kUbsH1OtmyE+5ByjQx5kEXQvgNK+yH6AUQJAEAAAAWABTv6SHVcAkCx33yCGcyQommoRfT3wAAAAAAAQEfAPIFKgEAAAAWABSa3W1HMiPOr9PK6zrzlZMCROA9qSIGA3pc9nuIbfhNan9xRt6Cxvth725E2MBD9U1G0jv29MX4GGuz1AMwAACAAAAAgAAAAIAAAAAAAQAAAAAAIgIDxKTMwYqQ9fXjc9KMVCI5s9dALIubvzjXNb4hpJrT79AYa7PUAzAAAIAAAACAAAAAgAEAAAAAAAAAAA=='
const psbt = bitcoin.Psbt.fromBase64(raw)
const signed = bitcoin.Psbt.fromBase64('cHNidP8BAHICAAAAAV4ooISur9b203NCRhzrtpTenLXJGwgmEHin/ANG4p/NAAAAAAD+////AgDC6wsAAAAAF6kU6vr0d66LXd8cFxE9paQ2lKv+nBKH6CQaHgEAAAAWABTv6SHVcAkCx33yCGcyQommoRfT3wAAAAAAAQEfAPIFKgEAAAAWABSa3W1HMiPOr9PK6zrzlZMCROA9qSICA3pc9nuIbfhNan9xRt6Cxvth725E2MBD9U1G0jv29MX4SDBFAiEAxfyzHJQdDhszb1IrcoMyRhlwaelcW+95g9UX8wcr8CICIF2hgiK11MHn+AopLTMQVuUIqmPZrMt00DMTOCkLdkPCASIGA3pc9nuIbfhNan9xRt6Cxvth725E2MBD9U1G0jv29MX4GGuz1AMwAACAAAAAgAAAAIAAAAAAAQAAAAAAIgIDxKTMwYqQ9fXjc9KMVCI5s9dALIubvzjXNb4hpJrT79AYa7PUAzAAAIAAAACAAAAAgAEAAAAAAAAAAA==')
//
// transaction
//
const tx = psbt.__CACHE.__TX;
const id = tx.getId()
//
// inputs
//
const input = psbt.data.inputs[0]
const fingerprint = input.bip32Derivation[0].masterFingerprint.toString('hex')
const patth = input.bip32Derivation[0].path
// will this key always be "witnessUtxo"?
const sats = input.witnessUtxo.value
//
// outputs
//
const address = bitcoin.address.fromOutputScript(tx.outs[0].script, bitcoin.networks.regtest)
module.exports = {
tx,
psbt,
bitcoin,
signed,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment