29

基于 BTC 的智能合约是什么?| 火星技术帖

 4 years ago
source link: https://news.huoxing24.com/20191130114819198956.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

u6Bfuq2.jpg!web

作者: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 的智能合约总的来说是一个非常有趣,非常值得深入探索的领域。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK