如何在比特币上打造高级智能合约?
比特币是目前为止世界上最流行的加密货币。无论是从流动性、链上交易量、还是其他任意指标看,比特币的主导地位都不言而喻。
然而由于技术原因,开发人员常常更偏爱以太坊。因为以太坊在搭建各类应用和智能合约方面更加灵活。多年来,有许多平台都专注于开发高级智能合约功能,但显然以太坊才是这个特定领域的领头人。
就在这些技术在以太坊上如火如荼地开发的时候,比特币逐渐成为价值存储工具。有人试图通过兼容以太坊的 RSK 侧链与 TBTC ERC-20 代币等技术,缩小比特币与它的差距。
但是另一种选择是让比特币本身去升级脚本功能。这里就需要用到 Simplicity 语言。
什么是 Simplicity ?
Simplicity 是一种全新的比特币编程语言,在构建智能合约方面比当今的比特币网络更加地灵活。而这个低级语言是由 Blockstream 基础架构的开发人员 Russell O’Connor 创建的。
Blockstream 的 CEO Adam Back 在近期关于这一话题的网络研讨会上解释道:“这是面向比特币和包含 Elements、Liquid (侧链)等网络的新一代脚本语言。”
比特币创建者中本聪在项目早期出于安全原因限制了比特币脚本,而 Simplicity 则是在保证安全性的同时让比特币脚本更加灵活的一次尝试。
虽然并非图灵完备,但对那些想要搭建以太坊上现有的大部分同类应用程序的开发者来说,Simplicity 的表达能力已足够丰富。
此外,Simplicity 的目标是让开发者和用户能够更简单地验证智能合约部署是否到位、安全以及成本如何。
“处于安全考虑,我们确实希望在运行程序前先进行分析,”致力于撰写开源软件文献的技术写手 David Harding 在 Noded Bitcoin 一期博客中说道,“对比特币来说,我们不允许图灵完备,这样我们就可以静态分析程序。Simplicity 也不会达到图灵完备,这样你就可以静态地分析程序。”
值得注意的是,上面提到的 TBTC 近期在以太坊主网发布没多久就被创建者关掉了,因为他们在支持 ERC-20 代币的智能合约里发现了一个漏洞。这几年来,以太坊智能合约已经爆出了不少安全问题,比如 Parity 钱包的多签漏洞以及臭名昭著的 DAO 事件。
对比特币来说 Simplicity 意味着什么?
为了探索 Simplicity 对比特币的实质意义,LongHash 联系了 Paradigm Research Partner 的 Dan Robinson ,他对 Simplicity 和以太坊都有研究。
Robinson 告诉我们:“ Simplicity 将会是比特币脚本功能的广泛升级,而不是比特币历史上每次脚本升级的集合。作为一个’功能完备’的指令集,未来基本不再需要对比特币脚本功能再次升级,当然为了提高一些功能的效率,有些升级还是需要的。”
可以从软分叉的角度来看待这个问题。在过去,比特币脚本的升级是通过软分叉实现的,这需要达成社区共识才能在网络激活。如果启用了 Simplicity ,任何人都可以通过这个语言有效地实现一些常用的软分叉变动,而无需网络节点更新比特币共识规则。
这个方案有两大作用:比特币开发速度会比之前快,且对潜在的比特币协议僵化( Ossification )问题也有一定的帮助作用。不过,最终比特币协议僵化也是可取的,因为它有效反映了网络的基本规则,例如代币政策等,这些是不会变的,所以能够阻断潜在的社会攻击矢量对这个赋予比特币价值的首要因素产生影响。
“有趣的含义:如果今天的比特币部署了 Simplicity 这个脚本,那么它将可以进行自我扩展,”Adam Back 在 Reddit 上写道,“ Schnorr/Taproot 以及 SIGHASH_NOINPUT 等改进方案将可以直接实现。”
这里 Back 例举的就是软分叉方案,是启用 Simplicity 后,在不改变比特币共识规则的前提下能够做出的添加种类的一种。当问他对此怎么看时,他澄清道:“我认为从技术上看,Taproot 扩展方案并不能如 Pieter Wuille 所说的那样在 Simplicity 语言下实现——但 Schnorr 可以。”
就 Robinson 而言,如果 Simplicity 真的添加到了比特币上,那么首先奏效的会是开发者们现在正在研究的一些改进,比如 Eltoo 这类支付通道的设计、新的签名算法、可能还有一些隐私方面的提升方案。
Robinson 补充道:“我比较期望看到的是能开发出一种代币标准,类似以太坊的 ERC-20 ,这样就能见到一些新的应用,比如稳定币、去中心化交易所以及杠杆交易等。”
Simplicity 在以太坊和比特币上的区别
如果比特币主网上添加了 Simplicity 语言,那么显然会有人下这样的结论:我们没有理由继续使用以太坊了。但是,即使比特币有了 Simplicity ,它和以太坊之间还是会存在明显差异的。
Robinson 表示,“我之所以对 Simplicity 感兴趣,并不是因为它能让比特币变得更’以太坊’,而是能让比特币变得更’比特币’。”
尽管使用了 Simplicity ,但与以太坊以账户为基础的设置相反,比特币依旧会在 UTXO (未花费交易输出)模式下运行。
Robinson 解释道:“ UTXO 模型对于验证人效率而言是绝佳的选择,但它的权衡之处在于,它很难搭建出应用来满足多人与合约交互的需求。”
此外,以太坊在开发平台网络效应方面已经取得了很大的进步,至少在智能合约方面如此。
“围绕 Simplicity 的工具和开发者生态系统可能要很长时间才能成型,”Robinson 说,“ Simplicity 并不是一种人类可读的语言,因此可能需要有人去开发一种语言对其进行编译,然后再供普通的开发者使用。此外,开发与 UTXO 模式兼容的智能合约设计平台也需要进行大量的研究。”
从开发角度看,以太坊的网络效应正解释了为什么 RSK (以太坊风格的比特币侧链)会将平台设计成与以太坊虚拟机兼容的原因。
但最终比特币用户是否还需要一些类似于以太坊网络上的加密货币应用,目前还不得而知。
Robinson 表示,“比特币区块容量的溢出比以太坊要大,其 10 分钟出一块的速度可能也会将一些应用拒之门外。相应的,现在似乎并不清楚比特币社区是否真的希望在比特币上搭建这些应用(而不是把比特币作为简单的支付通道或金库),因为这样的应用可能会造成区块链拥堵,甚至是提高 51% 攻击的收益率——要是引入了新的矿工挖矿价值的话。”
就 Robinson 的观点而言,由于预言机问题尚存,很多比特币用户很早开始就对以太坊持批评态度。预言机问题在开发各类去中心化应用程序( DeFi )中已经成为人们越来越关注的问题。
Simplicity 什么时候可以落实?
需要注意的是,距离 Simplicity 登陆比特币主网可能还有很长一段路要走。但据预计,今年晚些时候或许能先看到这个脚本语言添加到 Liquid 侧链上。
这是压上现实世界资产开始使用 Simplicity 语言的重要一步,但有些开发者,比如致力于比特币隐私钱包的开发者,已经因为 Liquid 侧链的联邦模型而表现的兴趣乏乏。
我们问 Robinson 对此怎么看,他表示:“我不认为 Liquid 的联邦本质会破坏交易。但这确实是会让收获大量开发者或用户变得更艰难。”
根据比特币核心长期贡献者兼 Blockstream 联合创始人 Greg Maxwell (也就是 Reddit 上的 nullc )的观点,由于通过隔离见证( SegWit )升级引入了脚本多版本系统,Simplicity 可以通过软分叉的形式添加到比特币上。当然,这是建立在能够围绕比特币共识规则的更改建立起社区共识的假设上。
在 Blockstream 工作的 Grubles (化名)告诉我们,“我不确定如何通过软分叉来部署它,但它不会代替主网以及 Liquid 侧链上的任何东西。它只会是一个能够与现有地址类型(比如 Legacy、P2SH、Bech32 )一起使用的新的地址类型。”
Grubles 补充道,他认为以太坊已经损害了“智能合约”的风评,因为有很多有问题的智能合约已经在该平台部署了很多年。因此,他们觉得一直关注着以太坊的比特币用户不太会愿意看到智能合约在 Liquid 上灵活运用。
“我认为这会是一个很有趣的议题,但还需要个几年,”Back 补充道,“先例可以先在侧链上验证一下。”
上一篇:这份智能合约「避坑指南」建议收藏
下一篇:DC/EP的关键性技术