BTC

1. UTXO (Unspent Transaction Output)

  • txid: 交易编号
  • vout :第几个输出
  • scriptPubKey :一个很重要的东西
  • value: 价值
  • address: 持有者的地址

2.谁持有比特币 == 持有多少UTXO

BTC_第1张图片
图1

3.交易

3.1 场景1

A要花掉1.5BTC,给C


BTC_第2张图片
图3-1

A经过这次消费之后,只剩A3这个UTXO.

3.2 场景2

A要转给C 1 BTC
B也要转给C 1BTC
A 和 B 经过商量决定共同构造 一次交易
A3(1.4) + B2(2.0) = A4(0.35) + B3(0.95) + C1(2.0) + 矿工费(0.1) 成功的概率比较高

4. 设计

  • 找到 有关地址的交易输出UTXO,进行存储并进行余额变更
  • 找到 有关地址的交易输入UTXO, 进行状态变更
    BTC_第3张图片
    图4

5.演示

浏览器
https://testnet.blockchain.info

获取测试环境的比特币
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


矿工费为0的交易好像无法确认
比如这笔交易 , 交易额0.39 BTC
b2eabaacf277ea66e770ee3e2616d9e48a44229f6a136129d82eb089291882d6
和这笔交易,交易额0.82892903 BTC
0028005db8ecf28948436dbc90275357aef68071467199797009ad24ae500905

6.真实环境的比特币 地址区分

1L4oQbocsydfCMUSz9Ek9hiDgVNCTDBEjJ
3B7wg4tG7jkkeoSf9JYkHowytr3JR3qo22
为什么有的地址 是以 “1” 开头,有的是以“3”开头

6.1

6.2比特币多重签名

巴比特对此的介绍

2 of 3多重签名常用个用法是,一个用户生成两个密钥:一个保存为备份,另一个存放在钱包内;剩下的一个秘钥由钱包服务商生成和保存。支付比特币时,用户和钱包服务商共同签署交易。如果用户或者钱包服务商丢失了秘钥,备份的秘钥就可以动用,转移资金。但是钱包服务商却不能私自动用用户的资金。

生成3个地址,那1,2的地址,和地址3的公钥,生成一个多签名地址

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

由于是测试环境,多签名地址是以2开头的。保存好addressredeemScript。如果redeemScript丢失你可以重新生成。但是如果同时3个地址你丢失了其中一个。那么如果多签名地址中有钱的话,你将永远不能使用它。

拿多签名地址的utxo进行交易构造
bitcoin-cli -regtest createrawtransaction '''
    [
      {
        "txid": "'$UTXO_TXID'",
        "vout": '$UTXO_VOUT'
      }
   ]
   ''' '''
   {
     "'$NEW_ADDRESS4'": 9.998
   }'''

3个地址中的任意两个的私钥,可进行签名
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'"
    ]'''

你可能感兴趣的:(BTC)