比特币交易的数据结构与签名类型

更新时间:2023-06-30 08:42:20 阅读: 评论:0

⽐特币交易的数据结构与签名类型
简介
交易(Transaction)是⽐特币系统的信息载体,最⼩单元。⽽块(Block)就是将这些基础单元打包装箱,贴上封条,并串联起来。巨⼤算⼒保障了块的安全,也就保障了单个交易的安全。
类型
交易有三种常见类型:产量交易(Generation),合成地址交易(Script Hash),通⽤地址交易(Pubkey Hash)。该分类并⾮严格意义的,只是根据交易的输⼊输出做的简单区分。
Generation TX
每个Block都对应⼀个产量交易(Generation TX),该类交易是没有输⼊交易的,挖出的新币是所有币的源头。
Script Hash TX
该类交易⽬前不是很常见,⼤部分⼈可能没有听说过,但是⾮常有意义。未来应该会在某些场合频繁使
⽤。该类交易的接受地址不是通常意义的地址,⽽是⼀个合成地址,以3开头(对,以3开头的也是!)。三对公私钥,可以⽣成⼀个合成地址。在⽣成过程时指定n of 3中的n,n范围是[1, 3],若n=1,则仅需⼀个私钥签名即可花费该地址的币,若n=3,则需要三把私钥依次签名才可以。
Pubkey Hash TX
该类是最常见的交易类型,由N个输⼊、M个输出构成。
数据结构
交易中存放的是货币所有权的流转信息,所有权登记在⽐特币地址上(Public Key)。这些信息是全⽹公开的,以明⽂形式存储(⽐特币系统⾥的所有数据都是明⽂的),只有当需要转移货币所有权时,才需要⽤私钥签名来验证。
字段⼤⼩描述数据类型解释
4version, 版本uint32_t交易数据结构的版本号
1+tx_in count, 输⼊数量var_int输⼊交易的数量
41+tx_in tx_in[]输⼊交易的数组,每个输⼊>=41字节
1+tx_out count, 输出数量var_int输出地址的数量
9+tx_out tx_out[]输⼊地址的数组,每个输⼊>=9字节
4lock_time, 锁定时间uint32_t见下⽅解释
lock_time是⼀个多意字段,表⽰在某个⾼度的Block之前或某个时间点之前该交易处于锁定态,⽆法收录进Block。上海正规电工培训学校
值含义
0⽴即⽣效
< 500000000含义为Block⾼度,处于该Block之前为锁定(不⽣效)
>= 500000000含义为Unix,处于该时刻之前为锁定(不⽣效)
若该笔交易的所有输⼊交易的quence字段,均为INT32最⼤值(0xffffffff),则忽略lock_time字段。否则,该交易在未达到Block⾼度或达到某个时刻之前,是不会被收录进Block中的。
⽰例
为了演⽰⽅便,我们读取稍早期的块数据,以⾼度116219 Block为例。
# ~ bitcoind getblock 0000000000007c639f2cbb23e4606a1d022fa4206353b9d92e99f5144bd74611 {
“hash” : “0000000000007c639f2cbb23e4606a1d022fa4206353b9d92e99f5144bd74611″,“confirmations” : 144667,
“size” : 1536,
“height” : 116219,
“version” : 1,
“merkleroot” : “587fefd748f899f84d0fa1d8a3876fdb406a4bb8f54a31445cb72564701daea6″,
“tx” : [
囧司徒
"be8f08d7f519eb863a68cf292ca51dbab7c9b49f50a96d13f2db32e432db363e",
"a387039eca66297ba51ef2da3dcc8a0fc745bcb511e20ed9505cc6762be037bb",
"2bd83162e264abf59f9124ca517050065f8c8eed2a21fbf85d454ee4e0e4c267",
"028cfae228f8a4b0caee9c566bd41aed36bcd237cdc0eb18f0331d1e87111743",
"3a06b6615756dc3363a8567fbfa8fe978ee0ba06eb33fd844886a0f01149ad62"
],
“time” : 1301705313,
“nonce” : 1826107553,
“bits” : “1b00f339″,
“difficulty” : 68977.78463021,
“previousblockhash” : “00000000000010d549135eb39bd3bbb1047df8e1512357216e8a85c57a1efbfb”,“nextblockhash” : “000000000000e9fcc59a6850f64a94476a30f5fe35d6d8c4b4ce0b1b04103a77″
海绵宝宝英文版
}
该Block⾥⾯有5笔交易,第⼀笔为Generation TX,解析出来看⼀下具体内容:
# ~ bitcoind getrawtransaction be8f08d7f519eb863a68cf292ca51dbab7c9b49f50a96d13f2db32e432db363e 1
{
“hex” :
“01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff070439f3001b0134ffffffff014034152a0 10000004341045b3aaa284d169c5ae2d20d0b0673468ed3506aa8fea5976eacaf1ff304456f6522fbce1a646a24005b8b8e771a671f564ca6 c03e484a1c394bf96e2a4ad01dceac00000000″,
“txid” : “be8f08d7f519eb863a68cf292ca51dbab7c9b49f50a96d13f2db32e432db363e”,
“version” : 1,
“locktime” : 0,
“vin” : [
{
2016高考成绩查询入口"" : "0439f3001b0134",
"quence" : 4294967295
}
],
“vout” : [
元旦晚会策划书
{
"value" : 50.01000000,
"n" : 0,
"scriptPubKey" : {
"asm" :
"045b3aaa284d169c5ae2d20d0b0673468ed3506aa8fea5976eacaf1ff304456f6522fbce1a646a24005b8b8e771a671f564ca6c03e484a1c 394bf96e2a4ad01dce OP_CHECKSIG",
"hex" :
"41045b3aaa284d169c5ae2d20d0b0673468ed3506aa8fea5976eacaf1ff304456f6522fbce1a646a24005b8b8e771a671f564ca6c03e484a 1c394bf96e2a4ad01dceac",
"reqSigs" : 1,
"type" : "pubkey",beer是什么意思
"address" : [
"1LgZTvoTJ6quJNCURmBUaJJkWWQZXkQnDn"
]
}
镇江翻译}
],
“blockhash” : “0000000000007c639f2cbb23e4606a1d022fa4206353b9d92e99f5144bd74611″,
“confirmations” : 145029,
“time” : 1301705313,
“blocktime” : 1301705313
}
Generation TX的输⼊不是⼀个交易,⽽带有coinba字段的结构。该字段的值由挖出此Block的⼈填写,这是⼀种“特权”:可以把信息写⼊货币系统(⼤家很喜欢⽤系统中的数据结构字段名来命名站点,例如blockchain、coinba等,这些词的各种后缀域名都被抢注⼀空)。在⽐特币的第⼀个交易中的写⼊的coinba值是:
“coinba”:”04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66 207365636f6e64206261696c6f757420666f722062616e6b73″
将该段16进制转换为ASCII字符,就是那段著名的创世块留⾔:
The Times 03/Jan/2009 Chancellor on brink of cond bailout for banks
接下来展⽰的是⼀个三个输⼊、两个输出的普通交易:
# ~ bitcoind getrawtransaction 028cfae228f8a4b0caee9c566bd41aed36bcd237cdc0eb18f0331d1e87111743 1
{
“hex” :
“010*******c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7000000008a473044022055bac1856ecbc377dd 5e869b1a84ed1d5228c987b098c095030c12431a4d5249022055523130a9d0af5fc27828aba43b464ecb1991172ba2a509b5fbd6cac97ff3 af0141048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7 e5ef8d1005eaafd4b3fbeffffffffc9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7010000008a47304402206b993 231adec55e6085e75f7dc5ca6c19e42e744cd60abaff957b1c352b3ef9a022022a22fec37dfa2c646c78d9a0753d56cb4393e8d0b22dc580ef
1aa6cccef208d0141042ff65bd6b3ef04253225405ccc3ab2dd926ff2ee48aac210819698440f35d785ec3cec92a51330eb0c76cf49e9e474fb
9159ab41653a9c1725c031449d31026affffffffc98620a6c40fc7b3a506ad79af339541762facd1dd80ff0881d773fb72b230da010000008b483 045022040a5d957e087ed61e80f1110bcaf4901b5317c257711a6cbc54d6b98b6a8563f02210081e3697031fe82774b8f44dd3660901e61a c5a99bff2d0efc83ad261da5b4f1d014104a7d1a57e650613d3414ebd59e3192229dc09d3613e547bdd1f83435cc4ca0a11c679d96456cae 75b1f5563728ec7da1c1f42606db15bf554dbe8a829f3a8fe2fffffffff0200bd0105000000001976a914634228c26cf40a02a05db93f2f98b768a 8e0e61b88acc096c7a6030000001976a9147514080ab2fcac0764de3a77d10cb790c71c74c288ac00000000″,
“txid” : “028cfae228f8a4b0caee9c566bd41aed36bcd237cdc0eb18f0331d1e87111743″,
“version” : 1,
“locktime” : 0,
“vin” : [
{
"txid" : "b79a4803014177ea0139c95f09c6903c01bb8f80d039631afd68cabf7eb0f3c9",
"vout" : 0,
"scriptSig" : {
"asm" :
"3044022055bac1856ecbc377dd5e869b1a84ed1d5228c987b098c095030c12431a4d5249022055523130a9d0af5fc27828aba43b464ecb 1991172ba2a509b5fbd6cac97ff3af01
048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d 1005eaafd4b3fbe",
"hex" :
"473044022055bac1856ecbc377dd5e869b1a84ed1d5228c987b098c095030c12431a4d5249022055523130a9d0af5fc27828aba43b464e cb1991172ba2a509b5fbd6cac97ff3af0141048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051 f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d1005eaafd4b3fbe"
},
"quence" : 4294967295
},
{
"txid" : "b79a4803014177ea0139c95f09c6903c01bb8f80d039631afd68cabf7eb0f3c9",
"vout" : 1,
"scriptSig" : {
"asm" :
icba
"304402206b993231adec55e6085e75f7dc5ca6c19e42e744cd60abaff957b1c352b3ef9a022022a22fec37dfa2c646c78d9a0753d56cb439 3e8d0b22dc580ef1aa6cccef208d01
042ff65bd6b3ef04253225405ccc3ab2dd926ff2ee48aac210819698440f35d785ec3cec92a51330eb0c76cf49e9e474fb9159ab41653a9c17 25c031449d31026a",
"hex" :
"47304402206b993231adec55e6085e75f7dc5ca6c19e42e744cd60abaff957b1c352b3ef9a022022a22fec37dfa2c646c78d9a0753d56cb4 393e8d0b22dc580ef1aa6cccef208d0141042ff65bd6b3ef04253225405ccc3ab2dd926ff2ee48aac210819698440f35d785ec3cec92a51330 eb0c76cf49e9e474fb9159ab41653a9c1725c031449d31026a"
},
"quence" : 4294967295
},
{
"txid" : "da30b272fb73d78108ff80ddd1ac2f76419533af79ad06a5b3c70fc4a62086c9",
"vout" : 1,
"scriptSig" : {
"asm" :
"3045022040a5d957e087ed61e80f1110bcaf4901b5317c257711a6cbc54d6b98b6a8563f02210081e3697031fe82774b8f44dd3660901e6 1ac5a99bff2d0efc83ad261da5b4f1d01
04a7d1a57e650613d3414ebd59e3192229dc09d3613e547bdd1f83435cc4ca0a11c679d96456cae75b1f5563728ec7da1c1f42606db15bf5 54dbe8a829f3a8fe2f",
"hex" :
"483045022040a5d957e087ed61e80f1110bcaf4901b5317c257711a6cbc54d6b98b6a8563f02210081e3697031fe82774b8f44dd3660901 e61ac5a99bff2d0efc83ad261da5b4f1d014104a7d1a57e650613d3414ebd59e3192229dc09d3613e547bdd1f83435cc4ca0a11c679d9645 6cae75b1f5563728ec7da1c1f42606db15bf554dbe8a829f3a8fe2f"
},
"quence" : 4294967295
}
],
“vout” : [
{
"value" : 0.84000000,
"n" : 0,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 634228c26cf40a02a05db93f2f98b768a8e0e61b OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a914634228c26cf40a02a05db93f2f98b768a8e0e61b88ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"address" : [
"1A3q9pDtR4h8wpvyb8SVpiNPpT8ZNbHY8h"
]
}
},phytomer
{
“value” : 156.83000000,
“n” : 1,
“scriptPubKey” : {
“asm” : “OP_DUP OP_HASH160 7514080ab2fcac0764de3a77d10cb790c71c74c2 OP_EQUALVERIFY OP_CHECKSIG”,
“hex” : “76a9147514080ab2fcac0764de3a77d10cb790c71c74c288ac”,
“reqSigs” : 1,
“type” : “pubkeyhash”,
“address” : [
"1Bg44FZsoTeYteRykC1XHz8facWYKhGvQ8"
]
}
}
],
“blockhash” : “0000000000007c639f2cbb23e4606a1d022fa4206353b9d92e99f5144bd74611″,
“confirmations” : 147751,
“time” : 1301705313,
“blocktime” : 1301705313
}quite的用法
字段hex记录了所有相关信息,后⾯显⽰的是hex解析出来的各类字段信息。下⾯把逐个分解hex内容(hex可以从上⾯的直接看到):01000000 // 版本号,UINT32
03 // Tx输⼊数量,变长INT。3个输⼊。
/*** 第⼀组Input Tx ***/
// Tx Hash,固定32字节
c9f3b07ebfca68fd1a6339d0808fbb013c90c6095fc93901ea77410103489ab7
00000000 // 消费的Tx位于前向交易输出的第0个,UINT32,固定4字节
8a // 签名的长度, 0x8A = 138字节
// 138字节长度的签名,含有两个部分:公钥+签名
47 // 公钥长度,0×47 = 71字节
3044022055bac1856ecbc377dd5e869b1a84ed1d5228c987b098c095030c12431a4d5249022055523130a9d0af5fc27828aba43b464ecb 1991172ba2a509b5fbd6cac97ff3af01
41 // 签名长度,0×41 = 65字节
048aefd78bba80e2d1686225b755dacea890c9ca1be10ec98173d7d5f2fefbbf881a6e918f3b051f8aaaa3fcc18bbf65097ce8d30d5a7e5ef8d 1005eaafd4b3fbe
ffffffff // quence,0xffffffff = 4294967295, UINT32, 固定4字节

本文发布于:2023-06-30 08:42:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/162408.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:交易   地址   签名   输出   信息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图