你没看错,比特币也有智能合约:时间锁、侧链、MimbleWimble 协议与 Schnorr 签名。

原文标题:《基于 BTC 的智能合约是什么?》(Bitcoin Smart Contracts)
作者:Lumi Blockchain Wallet 团队
译者:Qtum 研究院

本文由 Lumi Blockchain Wallet 团队撰写,详细介绍了基于 BTC 的智能合约,具体内容包括其发展现状及现存的改进方法,以下为原文译文。

以太坊的智能合约很丰富,比特币呢?

人们常常将智能合约和以太坊联系起来。的确,以太坊的成功主要便是建立在为各种 Dapp 开发和实施智能合约之上的。但并非所有人都意识到,其实在 BTC 上,我们也可以使用智能合约。

在了解基于 BTC 的智能合约之前,我们首先必须明白一个问题,那就是既然我们已经有了像以太坊这样成熟的智能合约平台,为什么还要去使用 BTC 呢?

原因

抛开与生俱来的好奇心不说,相较于 ETH,使用 BTC 作为交换对象可能对于我们中的某些人来说已经是一种优势了(币种优势)。 另一方面,ETH 作为一个智能合约平台,其 Solidity 代码中的错误很难被找到,再加之臭名昭著的 DAO 事件(2016 年 6 月 18 日,黑客利用 ETH 智能合约漏洞,成功盗取并转移了超过 360 万个 ETH),因此在很多方面 ETH 还有改进的空间。

而反观 BTC,黑客们能发现漏洞并攻击的可能性非常之小,因为 BTC 区块链提供更高安全级别的操作环境。说到底,安全性才是最重要的事情,毕竟,谁会需要一个可以轻易被黑客入侵的多功能智能合约?

发展现状 & 现存改进方案

BTC 交易中包含一种脚本语言,在你需要获取一定数量 BTC 的时候,这种脚本语言可以定义所需的条件。当下执行大多数 BTC 交易时设置的条件是交易人能证明其拥有正确的私钥,这也正是智能合约的基本工作方式。但是,它的作用远不止于此,它其实可以输入很多更为复杂的脚本。

例如,你可以设置一个时间条件,来限制他人需要在规定时间内才能获取 BTC,或者需要多个签名,又或者将它们组合起来以制定更加复杂的编程合同。

如果要向基于 BTC 的智能合约添加更加高级的功能,则将会涉及到其他各种改进措施。让我们一起来看看哪些改进措施已经被使用了。

时间锁

如果以常规方式进行 BTC 转账,接收者可以在收到 BTC 之后立即花掉这些数字资产。 但是如果你想让接收者在某个日期之后才可以使用这些资产,那你要怎么做?比如说,你想为你的下个假期攒一些钱,因此你决定将这些钱锁起来,直到你旅行的第一天才能解锁。在这个例子中,一个特定的智能合约可以发挥很大的作用。但是这要如何实现呢?2015 年,在 BTC 的某次软分叉中,人们通过一个叫做 CheckLockTimeVerify 的操作码引入了时间锁的概念。这个操作码允许转账资产受到时间锁的限制。当存在时间锁时,特定的资产就只能在某个特定时间之后才能被使用。

侧链

侧链能解决很多即存的问题,比如可扩展性和交易速度等问题,事实上侧链也可以帮助来实现基于 BTC 的智能合约。
简单来说,当你想执行侧链上的 BTC 智能合约时,你需要把 BTC 转到一个特定的地址上,这些 BTC 会被自动锁定。而与此同时,你将会得到同等数量的侧链通证,你可以使用这些通证来执行智能合约。操作完成后,你可以通过双向绑定把这些通证发送回去,以此解锁主网上的 BTC。

MimbleWimble 协议

神秘的 MimbleWimble 协议建议实现一个值为 0 的、不能被花费的输出内核。 这样你就不能对转账产生任何危害,因为你必须知道可花费输出的数量。加上多重签名之后,这个协议变得几乎不可能被攻克。在早期探索 MimbleWimble 协议的时候,我们提到,不储存转账输入会使节点体积更小,从而更加的去中心化。这意味着更好的隐私性,因为你不能将转账的输入和输出对应起来。这在执行智能合约的时候极其重要。

Schnorr 签名

在确认转账的时候使用多重签名而不是单个签名很显然会安全很多。 使用 Schnorr 签名替代当前在 BTC 上使用的签名模型会减小区块的体积,并解决两个主要问题:转账积压和高转账费。这也能扩展 BTC 智能合约的边界,因为这可以让多个权益相关者使用同一个通用签名。想象一下,在一个智能合约执行过程中,每个参与者都有各自独立的公钥。这些公钥彼此关联,而每把公钥也都被单独创建的私人签名保护着。

Schnorr 签名的一个优势是这些签名体积更小,大多数计算其实在执行转账前就完成了,从而大大增加了实际转账的速度。

转账的体积也取决于签名数据的大小。所以如果签名数据更多,区块里能包含的转账就越少,转账速度也就更慢,费用更高。使用 ECDSA (BTC 公钥与私钥背后的密码学算法)的时候,如果你要从几个不同来源给朋友发送 1 个 BTC,每个来源都要有各自的签名,合起来就会占用很多宝贵的区块空间。如果使用 Schnorr 算法,你就只需要一个通用签名,只占用很少空间。

结语

以上是关于 BTC 智能合约发展现状的陈述,以及列举了一些已经将智能合约带入 BTC 生态环境中的应用实例。 基于 BTC 的智能合约总的来说是一个非常有趣,非常值得深入探索的领域。

来源链接:medium.com