基于比特币的智能合约是怎样的
扫描二维码
随时随地手机看文章
本文由 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的智能合约总的来说是一个非常有趣,非常值得深入探索的领域。