6 - 3 簡化的多簽交易
上一回講的實在是很複雜,不過在 Bitcoin Core 0.10 之後有簡化的指令
在錢包裡產生多簽地址
為了讓送到多簽地址的資金容易被使用,我們需要做些準備,用 addmultisigaddress 指令。
先收集要用到的 P2PKH 地址
machine1$ address3=$(bitcoin-cli getnewaddress)
machine1$ echo $address3
mkMkhbUzcSPdEHUoRQkBKHe8otP1SzWWeb
machine1$ bitcoin-cli -named validateaddress address=$address3 | jq -r '. | .pubkey'
02e7356952f4bb1daf475c04b95a2f7e0d9a12cf5b5c48a25b2303783d91849ba4
machine2$ address4=$(bitcoin-cli getnewaddress)
$ echo $address4
mkyeUBPDoeyFrfLE4V5oAQfee99pT2W1E3
$ bitcoin-cli -named validateaddress address=$address4 | jq -r '. | .pubkey'
030186d2b55de166389aefe209f508ce1fbd79966d9ac417adef74b7c1b5e07776
在任意處建立多簽地址
接著在每一台有提供簽章的機器上建立多簽地址,用的是 addmultisigaddress,
machine1$ bitcoin-cli -named addmultisigaddress nrequired=2 keys='''["'$address3'","030186d2b55de166389aefe209f508ce1fbd79966d9ac417adef74b7c1b5e07776"]'''
2Mzw7WBvh9RAQ4ssKqxyNyP7L9NAojLqSW8
machine2$ bitcoin-cli -named addmultisigaddress nrequired=2 keys='''["02e7356952f4bb1daf475c04b95a2f7e0d9a12cf5b5c48a25b2303783d91849ba4","'$address4'"]'''
2Mzw7WBvh9RAQ4ssKqxyNyP7L9NAojLqSW8
注意:順序要一致才會得到相同的多簽地址
然後要把多簽地址匯入到錢包,比特幣才會去檢查是不是有資金進來
machine1$ bitcoin-cli -named importaddress address=2Mzw7WBvh9RAQ4ssKqxyNyP7L9NAojLqSW8
machine2$ bitcoin-cli -named importaddress address=2Mzw7WBvh9RAQ4ssKqxyNyP7L9NAojLqSW8
匯入後就可以用多簽地址收錢,而且已經匯入,所以 signer 就可以方便的跟以前一樣使用交易。
不必再擔心 scriptPubKey
, reddemScript
machine1$ utxo_txid=$(bitcoin-cli listunspent | jq -r '.[1] | .txid')
machine1$ utxo_vout=$(bitcoin-cli listunspent | jq -r '.[1] | .vout')
machine1$ recipient=$(bitcoin-cli getrawchangeaddress)