比特币火币网币种名字交易的一般格式是什么?
所有比特币交易在区块链中都是可见的,并且可以使用十六进制编辑器进行查看。甲嵌段链浏览器是在包括所述块链内的每个事务可以以人类可读的角度来看待的位点。这对于查看实际交易的技术细节和验证付款很有用,比特币交易规则详解,比特币交易的一般格式是什么?
一、比特币交易的一般格式(在区块内)
仅具有1个输入和1个输出的比特币交易的原理示例
1.数据
输入:
先前的TX:f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009c火币网 udooa73dd04470b9a6
索引:0
脚本签名:304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
输出:
价值:5000000000
scriptPubKey:OP_DUPOP_HASH160404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFYOP_CHECKSIG
说明
此事务中的输入从事务f5d8中的输出#0导入50BTC…然后输出将50BTC发送到比特币地址(此处以十六进制4043表示…而不是正常的base58)。当收款人想花这笔钱时,他将在自己的交易输入中引用该交易的输出#0。
2.输入值
一个输入是从先前事务的输出的参考。交易中通常会列出多个输入。新交易的所有输入值(即新交易的输入所引用的先前输出的总硬币值)相加,并且新交易的输出完全使用了总计(减去任何交易费用)。先前的tx是先前交易的哈希。索引是所引用事务中的特定输出。ScriptSig是脚本的前半部分(稍后将详细讨论)。
该脚本包含两个组件,一个签名和一个公共密钥。公钥必须与兑换的输出脚本中给定的哈希匹配。公钥用于验证赎回者签名,这是第二个组件。更准确地说,第二个组件是在事务的简化版本的散列上的ECDSA签名。结合公钥,证明交易是由相关比特币的真正所有者创建的。各种标志定义如何简化交易,并可用于创建不同类型的付款。
3.输出量
一个输出包含发送比特币的指令。值是中本聪(1BTC=100,000,000Satoshi)的数量,该输出在声明时将值值。ScriptPubKey是脚本的后半部分(稍后讨论)。可以有多个输出,并且它们共享输入的组合值。由于一个事务的每个输出只能被后续事务的输入引用一次,因此,如果您不想丢失整个组合的输入值,则需要在输出中发送。如果输入值等于50BTC,但您只想发送25BTC,则比特币将创建两个值25BTC的输出:一个输出到目的地,另一个返回给您(称为“更改”)“,尽管您将其发送给自己)。任何未在输出中兑换的输入比特币均被视为交易费;生成该区块的任何人都可以通过将其插入该区块的coinbase交易中来索取。
A向C发送100BTC,C生成50BTC。C向D发送101BTC,他需要给自己发送一些零钱。D将101BTC发送给其他人,但他们尚未兑现。在当前状态下只能使用D的输出和C的更改。
4.验证
为了验证输入是否有权收集参考输出的值,比特币使用了自定义的类似于Forth的脚本系统。输入的scriptSig和引用的输出的scriptPubKey(按此顺序)通过使用scriptSig在堆栈上保留的值的scriptPubKey进行评估。如果scriptPubKey返回true,则输入被授权。通过脚本系统,发送者可以创建人们必须满足的非常复杂的条件才能声明输出的价值。例如,可以创建任何人未经任何授权即可声明的输出。也可能要求输入由十个不同的键签名,或者可以用密码而不是键进行赎回。
5.交易类型
比特币当前创建两个不同的scriptSig/scriptPubKey对。这些在下面描述。
可以设计更复杂的交易类型,并将它们链接在一起以加密方式执行的协议。这些被称为合同。
6.付给钥匙哈希
scriptPubKey:OP_DUPOP_HASH160<pubKeyHash>OP_EQUALVERIFYOP_CHECKSIG
scriptSig:<sig><pubKey>
比特币地址只是一个哈希,因此发送者无法在scriptPubKey中提供完整的公共密钥。兑换已发送到比特币地址的硬币时,收件人将同时提供签名和公共密钥。该脚本验证所提供的公钥是否对scriptPubKey中的哈希进行哈希处理,然后还针对公钥检查签名。
检查过程: