一笔比特币交易的生命周期起始于它被创建的那一刻,也就是诞生(origination)。随后,比特币交易会被一个或者多个签名加密,这些签名标志着对该交易指向的比特币资金的使用许可。接下来,比特币交易被广播到比特币网络中。在比特币网络中,每一个节点(比特币交易参与者)验证、并将交易在网络中进行广播,直到这笔交易被网络中大多数节点接收。最终,比特币交易被一个挖矿节点验证,并被添加到区块链上一个记录着许多比特币交易的区块中。
一笔比特币交易一旦被记录到区块链上并被足够多的后续区块确认,便成为比特币总账簿的一部分,并被所有比特币交易参与者认可为有效交易。这笔交易分配到一个新所有者名下的比特币资金可以在新的交易中被使用——这使得所有权链得以延伸且再次开启一个新的比特币交易生命周期。
一笔比特币交易是一个含有输入值和输出值的数据结构,该数据结构植入了将一笔资金从初始点(输入值)转移至目标地址(输出值)的代码信息。比特币交易的输入值和输出值与账号或者身份信息无关。你应该将它们理解成一种被特定秘密信息锁定的一定数量的比特币。只有拥有者或知晓这个秘密信息的人可以解锁。一笔比特币交易包含一些字段,如下表 所示。
大小 |
字段描述 |
4字节 | 版本明确这笔交易参照的规则 |
1-9 字节 | 输入计数器被包含的输入的数量 |
不定 | 输入一个或多个交易输入 |
1-9 字节 | 输出计数器被包含的输入的数量 |
不定 | 输出一个或多个交易输出 |
4 字节 | 时钟时间一个UNIX 时间戳或区块号 |
交易的输出和输入
比特币交易的基本单位是未经使用的一个交易输出,简称UTXO。UTXO 是不能再分割、被所有者锁住或记录于区块链中的并被整个网络识别成货币单位的一定量的比特币货币。比特币网络监测着以百万为单位的所有可用的(未花费的)UTXO。当一个用户接收比特币时,金额被当作UTXO 记录到区块链里。这样,一个用户的比特币会被当作UTXO 分散到数百个交易和数百个区块中。实际上,并不存在储存比特币地址或账户余额的地点,只有被所有者锁住的、分散的UTXO。“一个用户的比特币余额”,这个概念是一个通过比特币钱包应用创建的派生之物。比特币钱包通过扫描区块链并聚合所有属于该用户的UTXO 来计算该用户的余额。可以看一笔交易,hash为 cbc9e8868706883bf9cb1dd161c99cd26de0dfc2e3e5b1d4d3a5065f6647377a
{
"iscoinbase": false,
"fee": 0,
"hash": "cbc9e8868706883bf9cb1dd161c99cd26de0dfc2e3e5b1d4d3a5065f6647377a",
"vout": [
{
"scriptPubKey": {
"reqSigs": 1,
"hex": "76a91444d536ee64dc86087c11538b3b70f480a6be2b2e88ac",
"addresses": [
"17GxNTGRZy41h5iQfgH5Rni6AWvMmLfCTF"
],
"asm": "OP_DUP OP_HASH160 44d536ee64dc86087c11538b3b70f480a6be2b2e OP_EQUALVERIFY OP_CHECKSIG",
"type": "pubkeyhash"
},
"value": 8.97360825,
"n": 0
},
{
"scriptPubKey": {
"reqSigs": 1,
"hex": "76a914d67ff32caa93c4cb66becf0592b865e1431d3e9388ac",
"addresses": [
"1LZAtAfZu6fbnYU3YhS4HFUrL2QVpd3sd8"
],
"asm": "OP_DUP OP_HASH160 d67ff32caa93c4cb66becf0592b865e1431d3e93 OP_EQUALVERIFY OP_CHECKSIG",
"type": "pubkeyhash"
},
"value": 348.84,
"n": 1
}
],
"weight": 1748,
"timestamp": 1308190685,
"blockhash": "000000000000090a09560457d8d026afcbc92680366a6d63619e7475c6b7eedb",
"vin": [
{
"addresses": [
"1MbBZkxfT7W9iuGbQmv1oPZ3yctAiJ9BB2"
],
"vout": 0,
"sequence": 4294967295,
"value": 300,
"txid": "10f08da13c3ae66e0f4c5f6d170495d1dda31d99e6546a7e4cc7e9aff99c54ad",
"scriptSig": {
"hex": "4730440220554252f1472321ef7707447ffaa5bde05e9df471bfa8abc5dbf2fb301078268f0220214ca7fe8869ac72b0fa3aaeb91212d37d344d0942bfc334ca1797f054c3035a014104ef1cd29b88bdfaffb265421003a77345200e03cb0c9230c126aedb9b9a1f5854674cdacfe0fa1ba29357619656073a8c661ee7867875a463f46923240dd61f2a",
"asm": "30440220554252f1472321ef7707447ffaa5bde05e9df471bfa8abc5dbf2fb301078268f0220214ca7fe8869ac72b0fa3aaeb91212d37d344d0942bfc334ca1797f054c3035a[ALL] 04ef1cd29b88bdfaffb265421003a77345200e03cb0c9230c126aedb9b9a1f5854674cdacfe0fa1ba29357619656073a8c661ee7867875a463f46923240dd61f2a"
}
},
{
"addresses": [
"12F56FdztHyPG3DgbJMPL6DdEMCYdGZp8x"
],
"vout": 0,
"sequence": 4294967295,
"value": 57.81360825,
"txid": "89a7bded6964350615e572c047acf475b17eeff22c72b3d1f70fd9d5b0390e95",
"scriptSig": {
"hex": "4830450221008fe405e67a0d1f513b2a587e82aae83d27d07d7665eab5f5c776c0b46d7b57d5022003be4face79ff5df81ef20a4f12d0f374c804759eef783c9330e6bff49b67b4901410428abe71371ef8a5d45be5d6faf90ad1c0faa95787f0786fb35dc12180e65688c55954feeefc1826761b3bc30f059987761e35678018405091ac74c1819b2bb7e",
"asm": "30450221008fe405e67a0d1f513b2a587e82aae83d27d07d7665eab5f5c776c0b46d7b57d5022003be4face79ff5df81ef20a4f12d0f374c804759eef783c9330e6bff49b67b49[ALL] 0428abe71371ef8a5d45be5d6faf90ad1c0faa95787f0786fb35dc12180e65688c55954feeefc1826761b3bc30f059987761e35678018405091ac74c1819b2bb7e"
}
}
],
"volume": 357.81360825,
"version": 1,
"blockheight": 131166,
"locktime": 0,
"vsize": 437,
"size": 437
}