http://www.7klian.com

比特币(btc)的智能合约OP_PUSH_TX

步调1、2和4在解锁剧本中完成,步调3和5在锁定剧本中完成。假如OP_CHECKSIG返回true,则可以确定在步调1中推送的事务是当前事务,因为OP_CHECKSIG仅在签名是针对当前事务时才乐成,而不管签名是如何生成的。



凡是OP_CHECKSIG中利用的签名是链外生成的,并在解锁剧本中推送到仓库中。为了获恰当前生意业务,我们改为在ON CHAIN上生成签名。利用剧本实现OP_PUSH_TX算法,如下所示:
剧本实施


OP_PUSH_TX

OP_CHECKSIG是验证ECDSA签名的操纵码。假如验证乐成,则返回true,不然返回false。它从仓库中获取两个输入,一个民众密钥和一个签名。别的它将当前事务作为输入。生意业务是要签名的动静。在ECDSA中,对动静举办哈希处理惩罚,然后将摘要用于签名生成和验证。在OP_CHECKSIG中,摘要算法计较以下原像的double SHA256:

值得留意的是,凡是在步调2中的剧本在此处果真了凡是被保密的私钥。这不是问题,因为它仅用于验证生意业务是否最新,而不是证明比特币的所有权。实际上,它甚至可以反复利用。
sCrypt实现OP_PUSH_TX算法并将其打包在称为Tx的尺度智能合约中。譬喻我们利用它来开拓一个称为CheckLockTimeVerify的合约,该合约可确保代币被锁按时间,而且在到达成熟时间之前不能耗费,,雷同于OP_CLTV。仅需两行代码(第5行和第7行),就可以获取当前事务。
2.推送一个虚拟私钥

关于比特币剧本的一个常见误解是,其会见仅限于锁定剧本和相应的解锁剧本中提供的数据。因此其范畴和本领受到极大限制。我们设计了一种算法来获取包括正在评估的剧本的当前事务。我们将其称为OP_PUSH_TX,因为它用作将当前事务推送到仓库中的伪操纵码。我们利用sCrypt(一种可编译为本机剧本的高级语言)来实现它,并通过示例演示其用法。


4.推入从步调2中推入的私钥派生的公钥


OP_CHECKSIG


1.推送当前事务(更准确地说是摘要preimage)

5.OP_CHECKSIG
3.利用剧本中的ECDSA签名算法,利用事务和步调1和2中推送的私钥生成签名。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读