BTC

1. UTXO (Unspent Transaction Output)

  • txid: 交易編號
  • vout :第幾個輸出
  • scriptPubKey :一個很重要的東西
  • value: 價(jià)值
  • address: 持有者的地址

2.誰持有比特幣 == 持有多少UTXO

圖1

3.交易

3.1 場景1

A要花掉1.5BTC,給C


圖3-1

A經(jīng)過這次消費(fèi)之后,只剩A3這個UTXO.

3.2 場景2

A要轉(zhuǎn)給C 1 BTC
B也要轉(zhuǎn)給C 1BTC
A 和 B 經(jīng)過商量決定共同構(gòu)造 一次交易
A3(1.4) + B2(2.0) = A4(0.35) + B3(0.95) + C1(2.0) + 礦工費(fèi)(0.1) 成功的概率比較高

4. 設(shè)計(jì)

  • 找到 有關(guān)地址的交易輸出UTXO,進(jìn)行存儲并進(jìn)行余額變更
  • 找到 有關(guān)地址的交易輸入UTXO, 進(jìn)行狀態(tài)變更
    圖4

5.演示

瀏覽器
https://testnet.blockchain.info

獲取測試環(huán)境的比特幣
https://testnet.coinfaucet.eu/en/

冷錢包地址
mnTjb2QnJrTtssXan9WFwheERn3VpEs9YU
cRg6dQNCGKZsmyccjTUtv95M4yat5QYbCxrgFWVYBgjSHKuahJwK


地址1 -- 余額:0.6 BTC
n22qbkmhfip9Ks5ehxZqCT8CHR23FDw4ka
cVFUSKKxCf9uQdqV56VyDHNdQV42D2Xx2A2f7jZyaKpDHTcjnCvK

地址2 -- 余額:0.7 BTC
mktt7K5TH6aieW2xUV6fBjJyEbxPs6QjgG
cMhxcte2mdrku9KGhTsrp5HadjPzqGERVRZfWs3Ud4HZ6uPJdFM8

地址3 -- 余額:0.8 BTC
myc1x6qKivfuxqcGovfMXhbmZWbBrx5TKz
cR4khtLfZ9jKeVMHUb9UJnuGNwT2FuVdtt2yBJr8UzCWZmccbyqa


礦工費(fèi)為0的交易好像無法確認(rèn)
比如這筆交易 , 交易額0.39 BTC
b2eabaacf277ea66e770ee3e2616d9e48a44229f6a136129d82eb089291882d6
和這筆交易,交易額0.82892903 BTC
0028005db8ecf28948436dbc90275357aef68071467199797009ad24ae500905

6.真實(shí)環(huán)境的比特幣 地址區(qū)分

1L4oQbocsydfCMUSz9Ek9hiDgVNCTDBEjJ
3B7wg4tG7jkkeoSf9JYkHowytr3JR3qo22
為什么有的地址 是以 “1” 開頭,有的是以“3”開頭

6.1

6.2比特幣多重簽名

巴比特對此的介紹

2 of 3多重簽名常用個用法是,一個用戶生成兩個密鑰:一個保存為備份,另一個存放在錢包內(nèi);剩下的一個秘鑰由錢包服務(wù)商生成和保存。支付比特幣時(shí),用戶和錢包服務(wù)商共同簽署交易。如果用戶或者錢包服務(wù)商丟失了秘鑰,備份的秘鑰就可以動用,轉(zhuǎn)移資金。但是錢包服務(wù)商卻不能私自動用用戶的資金。

生成3個地址,那1,2的地址,和地址3的公鑰,生成一個多簽名地址

bitcoin-cli -regtest createmultisig 2 '''
    [
      "'$NEW_ADDRESS1'",
      "'$NEW_ADDRESS2'", 
      "'$NEW_ADDRESS3_PUBLIC_KEY'"
    ]'''
{
    "address" : "2N7NaqSKYQUeM8VNgBy8D9xQQbiA8yiJayk",
    "redeemScript" : "522103310188e911026cf18c3ce274e0ebb5f95b00\
    7f230d8cb7d09879d96dbeab1aff210243930746e6ed6552e03359db521b\
    088134652905bd2d1541fa9124303a41e95621029e03a901b85534ff1e92\
    c43c74431f7ce72046060fcf7a95c37e148f78c7725553ae"
}

由于是測試環(huán)境,多簽名地址是以2開頭的。保存好addressredeemScript。如果redeemScript丟失你可以重新生成。但是如果同時(shí)3個地址你丟失了其中一個。那么如果多簽名地址中有錢的話,你將永遠(yuǎn)不能使用它。

拿多簽名地址的utxo進(jìn)行交易構(gòu)造
bitcoin-cli -regtest createrawtransaction '''
    [
      {
        "txid": "'$UTXO_TXID'",
        "vout": '$UTXO_VOUT'
      }
   ]
   ''' '''
   {
     "'$NEW_ADDRESS4'": 9.998
   }'''

3個地址中的任意兩個的私鑰,可進(jìn)行簽名
bitcoin-cli -regtest signrawtransaction $RAW_TX '''
    [
      {
        "txid": "'$UTXO_TXID'", 
        "vout": '$UTXO_VOUT', 
        "scriptPubKey": "'$UTXO_OUTPUT_SCRIPT'", 
        "redeemScript": "'$P2SH_REDEEM_SCRIPT'"
      }
    ]
    ''' '''
    [
      "'$NEW_ADDRESS1_PRIVATE_KEY'"
      "'$NEW_ADDRESS2_PRIVATE_KEY'"
    ]'''
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容