我们很高兴在这里发布这个开源的编译器及编写比特币智能合约的开发者环境,这里用于编译智能合约的语言Ivy是Chain创造的。Ivy能够帮助你编写自定义的比特币地址,这种地址与隔离见证(SegWit)兼容,在比特币协议(包括签名检查、hash特征值(commitment)和时间锁)的支持下,可以执行任意条件组合。
与其它用于数据操作的编程语言相比,Ivy控制数值的方法更加简单。你可以用Ivy Playground来进行测试。(请注意Ivy是未经完整测试的软件原型,仅用作教育和研究。)
比特币智能合约运作原理
如果你对区块链网络感兴趣,你或许已经听说过“智能合约”。作为区块链验证的一部分,这种程序能够通过特定逻辑控制链上(on-chain)资源。这个概念通常都和以太坊联系在一起,因为以太坊能够支持有状态的、图灵完备的智能合约。但你知道在比特币网络中也可以编写智能合约吗?
你可以用一种低门槛的编程语言Bitcoin Script(比特币脚本语言)在比特币系统上编写这类合约。每个比特币地址都对应着一个Bitcoin Script程序。
当你向某个地址发送比特币的时候,其实就已经把它们锁定在区块链中一个安全的“存款箱”里了。这些“箱子”实际上就是“未花费交易输出”,但我们可以将它们看做是“合约”。每个合约都有一个地址,每个地址对应一个程序,只有在解锁并花费特定的比特币之后才能满足启动的条件。
Bitcoin Script是低门槛的“汇编语言”,可以在比特币协议中编写特定的地址。Bitcoin Script写出来的程序是这样的:
比特币“虚拟机”——协议中负责执行Bitcoin Script程序的一部分——与以太坊或者Chain Protocol等其它智能合约平台的虚拟机相比(功能)更加有限,其指令系统甚至不是图灵完备的。但Bitcoin Script的确提供了一组很有用的基础原语(primitives)——签名校验、哈希计算以及相对和绝对的时间锁——另外还能对这些原语进行自由组合。
目前,Bitcoin Script的用户群非常小。比特币钱包、交易所和支付平台有时候会用Bitcoin Script来创建安全解决方案,比如说多重签名(multisignature)钱包。协议开发者会用Bitcoin Script来设计有趣的扩容、隐私以及互通性方案,比如Interledger和闪电网络(LN)。但很多人都认为用Bitcoin Script来开发实在太难。
其中一个原因在于虚拟机功能的限制,另一个原因就是要读懂并编写Bitcoin Script程序、创建并使用这类程序中的地址是相对较难的任务。
Ivy是什么
Ivy语言支持Bitcoin Script编译,Ivy的程序是这样的:
Ivy是用于编写合约模板的语言。每个合约模板在设置具体参数之后就可以编译到一个比特币地址(与隔离见证兼容的地址)。
你可以用Ivy Playground进行测试,设计、创建并发送模拟的比特币合约。Ivy Playground中有预先载入的模板,展示了小部分可操作的合约。
我们希望在学习比特币、智能合约和价值可编程化的过程中,Ivy能够帮助大家更简单地理解问题。我们等不及要看到你们的测试过程了。
致谢
感谢Boyma Fahnbulleh、Andrew Miller、Emin Gün Sirer、Patrick McCorry、Jeremy Rubin、Steven McKie、Olaoluwa Osuntokun、Kathleen Breitman和Nick Szabo为Ivy提供的反馈意见。特别感谢Christopher Jeffrey和其他bcoin开发者。