Skip to content

Instantly share code, notes, and snippets.

@kannapoix
Created January 19, 2019 14:51
Show Gist options
  • Save kannapoix/9ef66b0267cfe906239184c82711da30 to your computer and use it in GitHub Desktop.
Save kannapoix/9ef66b0267cfe906239184c82711da30 to your computer and use it in GitHub Desktop.
Build bitcoin transaction with script locked by p2pkh-multisig.
require 'pry'
require 'pp'
require 'bitcoin'
include Bitcoin::Builder
include Bitcoin::Util
Bitcoin::network = :regtest
# Prepare elements
# Previous transaction
# prev txid c37e9046d2d6cf514f49bdf0d19b88b2ae91fc87f244b8144c111ed3247d6bfb
# sender address n4H4ePNxWzF5ibmqPBLaenGV79HC9gpqfm
# dumpprivkey get WIF privkey cP9nfzGMqcJ3LrJtsTpWjEUyrybfiFXumzaAobZEBJEPWBtkzDv3
sender = Bitcoin::Key.from_base58 'cP9nfzGMqcJ3LrJtsTpWjEUyrybfiFXumzaAobZEBJEPWBtkzDv3'
# Recipient
# recipient address 'cNBfQu3fAJ1QXMrLvd4PGNAd7RzjUj62kHbkL9owNF2zN2g3M4GB', 'cPJSC2SZqW3d9EWZTWtnDdGUQY7HFWcCH3cSm4kkkDpidJxp188N', 'cMujetBk2WXGwnyA1pWZHYLrGVwk1h5V4nYnCQhr9kJshWKPgNpZ'
# dumpprivkey get WIF privkey cNBfQu3fAJ1QXMrLvd4PGNAd7RzjUj62kHbkL9owNF2zN2g3M4GB
privkeys = [
'cNBfQu3fAJ1QXMrLvd4PGNAd7RzjUj62kHbkL9owNF2zN2g3M4GB',
'cPJSC2SZqW3d9EWZTWtnDdGUQY7HFWcCH3cSm4kkkDpidJxp188N',
'cMujetBk2WXGwnyA1pWZHYLrGVwk1h5V4nYnCQhr9kJshWKPgNpZ',
]
recipients_pubkeys = privkeys.map{ |private_key| Bitcoin::Key.from_base58(private_key).pub }
tx = build_tx do |t|
t.input do |i|
i.prev_out 'c37e9046d2d6cf514f49bdf0d19b88b2ae91fc87f244b8144c111ed3247d6bfb'
i.prev_out_index 1
i.prev_out_script '76a914f9aa5ee91d95360104f173892b916d01d6a485a188ac'.htb
i.signature_key sender
end
t.output do |o|
o.value 1999000000
o.to [2, *recipients_pubkeys], :multisig
end
end
pp tx.to_hash
p tx.to_payload.unpack('H*')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment