比特币标准交易脚本

在最初几年的比特币版本中,开发者对可被标准客户端处理的脚本设定了一些限制。这些限制被编码进一个函数,isStandard(),它定义了5种类型的“标准”交易。这些限制是临时性的,可能在你阅读本书时已经被移除了。限制取消之前,标准客户端仅能接受这5种标准类型的交易脚本。现实中,实际上大多数矿工都是运行标准客户端。虽然创建非标准的,即不属于5种标准脚本类型的交易是允许的,但是你首先要找到愿意不遵守这些限制的矿工,并将你的交易含进区块

检查比特币核心客户端(标准程序)的源码,查看一下目前哪些交易脚本是被允许的。

5个标准类型的交易脚本包括:支付到公钥哈希(P2PKH)、支付到公钥多重签名(限定最多15个密钥)、支付到脚本哈希(P2SH),以及数据输出(OP_RETURN),这些将在接下来的几小节中详细介绍。

支付到公钥哈希(P2PKH)

绝大多数在比特币网络上处理的交易都是P2PKH交易。这种交易包含一个锁定脚本,锁定脚本通过公钥哈希(通常被称为比特币地址)阻碍了交易输出。对比特币地址进行支付的交易包含一个P2PKH脚本。一个被P2PKH脚本锁定的输出,可以通过提供公钥及与之对应的私钥签署的数字签名进行解锁(花费)。

让我们再来看看爱丽丝向鲍勃咖啡店发起支付的例子。爱丽丝发起一笔支付交易,向咖啡店的比特币地址支付0.015比特币。交易的输出应该会有一个类似这样的锁定脚本。

blob.png

咖啡店的公钥哈希等同于它的比特币地址,只是没有进行Base58Check编码。大多数应用以十六进制编码形式显示公钥哈希,而不是我们熟悉的Base58Check格式并以“1”开头的比特币地址。

以上的锁定脚本,可以被一个这样形式的解锁脚本满足。

blob.png

将两个脚本组合成下列验证脚本。

blob.png

当且仅当解锁脚本匹配锁定脚本设置的条件时,这个组合脚本的执行结果才会为“真”(TRUE)。换句话说,当解锁脚本拥有咖啡店私钥的有效签名,而这个私钥又与设置为受限的公钥哈希相对应时,脚本执行结果为真(TRUE)。

图5.3和5.4(分两部分)一步步展示了组合交易执行的过程,这将证明交易的有效性。

868区块链学习网为您整理《比特币标准交易脚本》仅供参考。