比特币交易
交易是由签名确认的⼀系列数据。它被发送到⽐特币⽹络并形成块。它通常包含对前⾯交易的引⽤,并将⼀定数量的⽐特币与⼀个或多个公钥(⽐特币地址)相关联。它没有加密,因为在⽐特币系统中没有什么可以加密的。区块链浏览器是所有交易以区块链的形式组合在⼀起的地⽅。他们可以找到并验证。这对确定技术交易参数以及验证付款细节是必要的。
目录
⽐特币交易的⼀般格式编辑
领域 | 描述 | 大小 |
---|---|---|
版本号 | 目前1 | 4 字节 |
输入柜台 | 正整数VI = Varlnt | 1-9 字节 |
输入列表 | 第一笔交易的第一笔投入也被称为conbase | <输入柜台> 很多输入 |
输出柜台 | 正整数VI = Varlnt | 1-9 字节 |
输出列表 | 第一笔交易的第一笔输出使用为该块找到的比特币 | <输出柜台> 很多输出 |
销定时间 | 如果不等于0且序列号低于 OxFFFFFFFF: 块高度或时间戳(用于最终事务) | 4 字节 |
具有输⼊和输出的⽐特币交易⽰例编辑
数据编辑
Input: Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 Index: 0 scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Output: Value: 5000000000 scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG
注释编辑
在此交易中输⼊从输出#0导⼊50BTC于交易f5d8…,然后输出将50 BTC发送到⽐特币地址(在此以⼗六进制形式表⽰ - 4043 ...)。如果收款⼈想要消费,他会为他⾃⼰的交易输⼊⽽参考本次交易的输出#0来获取他⾃⼰的交易输⼊。
输⼊编辑
输⼊是对另⼀个事务输出的引⽤。交易往往具有多种投⼊。这些参考值的值被恢复,⽐特币的总值可⽤于当前的交易输出。前⼀个tx是前⼀个事务的散列。指数是该交易的特定输出。 ScriptSig是脚本的前半部分(有关详细信息,请参阅下⾯的内容)。
该脚本由两个元素组成:签名和公钥。公钥属于应⽤交易输出并确认交易的创建者有权获得从输出中获得的资⾦总和的⽤户。另⼀个要素是EDCSA(交易简化版本的散列签名)。结合公钥,该签名证实交易是由该⽐特币地址的真正所有者创建的。
输出编辑
输出包含关于发送⽐特币的说明。该值是satoshi中的⾦额(1 BTC = 100000000 satoshi),可⽤于当前交易为输⼊的交易。 ScriptPubKey是脚本的后半部分(这将在后⾯详细说明)。这⾥可以有多个输出,它们将共享从输⼊发送的数量。每个交易输出只能⽤作后续交易的输⼊⼀次,其结果是必须在输出中使⽤所有当前交易输⼊的总和。否则交易投⼊的剩余⾦额将会丢失。例如,如果输⼊等于50BTC并且⽤户只能发送25BTC,⽐特币则创建两个25BTC的输出:⼀个将到达⽬的地,另⼀个将再次到达资⾦的所有者(所谓的'改变“ - ⽤户实际上向他⾃⼰汇款的交易)。从交易中未使⽤的⽐特币输⼊中剩余的任何⾦额将成为交易的费⽤。产⽣该区块的⼈将收到此费⽤。
交易验证编辑
为了验证是否允许输⼊从前⾯事务的输出中收集必要的总和,⽐特币使⽤脚本的标准系统(参见下⽂),该脚本输⼊和scriptPubKey输出是该事务引⽤的。它们使⽤scriptSig堆栈中的剩余值在scriptPubKey的帮助下进⾏评估。如果scriptPubKey脚本返回“true”值,则确认输⼊。使⽤脚本系统,发件⼈可以创建⾮常复杂的条件,去满⾜希望获得输出值的⼈。例如,创建任何⽤户未经授权⽽获得的输⼊是完全可以实现的。同时,要求输⼊由10个不同的密钥签名或通过密码验证也是可以实现的。
每笔交易输⼊的⼀般格式 - Txin编辑
Field | Description | Size |
---|---|---|
Hash of preceding transaction | Hashed double SHA256 of preceding transaction | 32 bytes |
Previous Txout-index | Arithmetical integer. It indexes outputs of the preceding transaction | 4 bytes |
List of inputs | The first input of the first transaction is also called a coinbase | <In-counter> many inputs |
Length of Txin script | Arithmetical integer VI = Varlnt | 1-9 bytes |
Txin-script / scriptSig | Script | <length within the script> many bytes |
Sequence number | Normally 0[FFFFFFFF; functions in the case that the lock time of the transaction > 0 | 4 bytes |
该输⼊充分描述了获得⽐特币的数量的来源和途径以及可以由其新主⼈兑换的⽐特数。如果它是块中第⼀个事务的唯⼀输⼊,则它被称为⽣成的事务输⼊。其内容可完全被忽略。
每个交易输出的⼀般格式 - Txout编辑
Field | Description | Size |
---|---|---|
Value | Arithmetical integer giving a satoshi amount (BTE/10^8) necessary for transactions | 8 bytes |
Length of Txout-script | Arithmetical stack | 1-9 bytes |
Txout-script / scriptPubKey | Script | <length of output script> many bytes |
输出决定了在以下交易中使⽤⽐特币数据的条件,该区块中第⼀笔交易的输出值的总和是该区块采⽤的⽐特币值。这⾥从添加到此块的其他交易中添加费⽤⾦额。
交易确认编辑
- 主页: 交易确认
交易是包含在区块链中的⽐特币钱包之间的价值转移。⽐特币如何⼯作?⽐特币交易不是直接的。当⽤户希望发送⽐特币时,信息从她的钱包⼴播到⽹络中的(⽤户),他们确认她有⾜够的硬币,⽽且他们以前从未⽤过。⼀旦通过验证,矿⼯将在区块链的⼀个新区块中包含此次交易以及其他交易。这被称为交易确认。该交易现在被称为“0 /未确认”每次将新块添加到链中(每⼗分钟⼀次),交易就会被再次确认。作为共识,许多⽤户在接受付款前等待交易确认六次(⼤约六⼗分钟后),以避免双重⽀出。⽤户通常会将交易显⽰为“n /未确认”,直到其深度为六个区块为⽌。
交易佣⾦编辑
- 主页: 交易佣⾦
⽬前⼤量交易的处理⽅式不需要佣⾦。 同时,如果交易有很多⼊⼜点(例如它携带⼤量数据),⼩额佣⾦并不少见。任何矿⼯都可以成为处理交易并获得佣⾦的⼈。 当⽹络发现⼀个新的区块时,它会包含有关交易的所有信息,包括其佣⾦。因此,发现该区块的⽤户群的任何⽤户将获得该区块的奖励以及包含在其中的每个交易的佣⾦。在交易中包括佣⾦是⾃愿决定,但发现⼀个块的⽤户可以将他想要的任何交易附加到该块。 这样⼀来,即使是可能的最低佣⾦(当前时刻约为0.0001 BTC)的交易具有标准优先级,并且更有可能包含在该区块中,那么与0佣⾦交易的优先级最低。