区块链研究实验室|比特币的智能合约OP_PUSH_TX

  • 时间:
  • 浏览:36
  • 来源:区块链技术网

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

OP_CHECKSIG

OP_CHECKSIG是验证ECDSA签名的操作码。如果验证成功,则返回true,否则返回false。它从堆栈中获取两个输入,一个公共密钥和一个签名。另外它将当前事务作为输入。交易是要签名的消息。在ECDSA中,对消息进行哈希处理,然后将摘要用于签名生成和验证。在OP_CHECKSIG中,摘要算法计算以下原像的double SHA256:

OP_PUSH_TX

通常OP_CHECKSIG中使用的签名是链外生成的,并在解锁脚本中推送到堆栈中。为了获得当前交易,我们改为在ON CHAIN上生成签名。使用脚本实现OP_PUSH_TX算法,如下所示:1.推送当前事务(更精确地说是摘要preimage)2.推送一个虚拟私钥3.使用脚本中的ECDSA签名算法,使用事务和步骤1和2中推送的私钥生成签名。4.推入从步骤2中推入的私钥派生的公钥5.OP_CHECKSIG步骤1、2和4在解锁脚本中完成,步骤3和5在锁定脚本中完成。如果OP_CHECKSIG返回true,则可以确定在步骤1中推送的事务是当前事务,因为OP_CHECKSIG仅在签名是针对当前事务时才成功,而不管签名是如何生成的。值得注意的是,通常在步骤2中的脚本在此处公开了通常被保密的私钥。这不是问题,因为它仅用于验证交易是否最新,而不是证明比特币的所有权。实际上,它甚至可以重复使用。

脚本实施

sCrypt实现OP_PUSH_TX算法并将其打包在称为Tx的标准智能合约中。例如我们使用它来开发一个称为CheckLockTimeVerify的合约,该合约可确保代币被锁定时间,并且在达到成熟时间之前不能花费,类似于OP_CLTV。仅需两行代码(第5行和第7行),就可以获取当前事务。

OP_PUSH_TX允许检查智能合约内部的整个交易,包括所有输入和输出。我们可以在智能合约中对它们进行任意约束。这将为比特币上的各种智能合约开辟无限的可能性,我们将演示。本文是有关比特币智能合约可以做什么以及如何实现它们的系列文章的第一篇。

猜你喜欢

OpenDAO一夜暴富后,小狐狸DAO又要面世了

这两天热度最高,炒的最热的就是SOS,一天40倍,连上了六大交易所。要热度有热度,要流量有流量。交易所就喜欢这样的项目。毕竟上线了能带去流量的同时还能带来收益,叫谁不喜呢?

2021-12-27

Genopets--SOL上的免费游戏

今天我们就解析在SOL上的一款免费游戏游戏 — Genopets(重生)

2021-12-23

NFT海外市场被OpenSea占据,国内阿里、网易、腾讯等互联网巨头开始布局

其核心观点认为,目前NFT海外市场火爆,其价值来自虚拟货币+资产权证+流动性;NFT海外开放生态逐步完善,综合性交易平台OpenSea占据大部分市场份额;国内NFT市场的发展进度明显慢于海外,阿里、网易、腾讯等互联网巨头从今年开始起步布局,国内的一些科技公司、艺术家、互联网企业也纷纷进场。

2021-12-17

以太坊交易信息及event、input、logs、topics等概念机制

以太坊交易信息及event、input、logs、topics等概念机制

2021-12-09

计划IPO的OpenSea,让羊毛变成了营收

昨晚的NFT社群热闹极了,OpenSea又被骂了。起因是美国头部网约车企业Lyft CFO Brian Roberts成为了OpenSea的新任CFO。

2021-12-07