数字货币智能合约的概念与演变
智能合约与区块链的结合,普遍被认为是区块链世界中一次里程碑式的升级。第一个结合了区块链与智能合约技术的平台–以太坊的诞生,被认为是开启了"区块链 2.0"时代。*
自 2009 年比特币开启区块链时代以来,近 10 年里,随着技术与生态的发展,基于区块链的分布式应用(dapp)呈现出井喷的趋势,而支撑着 dapp 的底层技术就是“区块链+智能合约”。
智能合约与区块链的结合,普遍被认为是区块链世界中一次里程碑式的升级。第一个结合了区块链与智能合约技术的平台–以太坊的诞生,被认为是开启了"区块链 2.0"时代。
什么是智能合约
1996 年,Nick Szabo 在文章《Smart Contracts: Building Blocks For Digital Markets》中提出了智能合约的概念。
所谓“合约Contract”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓“智能Smart”,就意味着自动化、可编程。
所以,智能合约就是可编程的合同,也可以理解为一段自动执行的条文合同,在计算机中,就是一段自动执行的程序片段。它更易于合约保存,并且由确定的算法运行,给定输入,就得到对应的输出,极大保障了合约的执行力。
以自动售货机做类比,可以帮助我们更好地理解智能合约的核心特征。
当使用者选择好要购买的货物并完成支付,出货逻辑就会被触发,用户就能得到想要的货物,而这个过程不需要人工介入,节省了售卖货物的人力成本。如果要破坏这个合约,就得物理破坏售卖机。像 POS 刷卡机、EDI(电子数据交换)等,也可作此种类比。
智能合约与区块链
智能合约在上世纪被提出,而区块链 2009 年才诞生,就定义而言,智能合约与区块链关系不大。
那为什么在这 10 年中,智能合约与区块链却产生了如此紧密的关联?因为区块链可以保证智能合约的不可篡改,不仅合约内容不可篡改,每次调用记录亦不可篡改。
智能合约产生价值的最基本前提是有一个强有力的底层介质用于储存,让其不可被物理破坏。
然而,智能合约的本体是一份代码,非常容易被篡改,如何为其提供强力的存储介质就成了问题。这正好是区块链擅长解决的——通过比特币的实践,证明了区块链可以在分布式环境下让电子记录不可被篡改。
与此同时,智能合约也在反哺着区块链,它极大地扩展了区块链的业务场景。
与智能合约结合后,区块链不再服务于单一的货币支付,可以延申到生活中的方方面面。丰富的应用场景也对区块链的能力产生了新的挑战。
区块链 2.0:以太坊的诞生
2009 年诞生的比特币,运用区块链等技术来保证生态,开创了区块链 1.0 时代。
用户可以通过脚本代码来定制一些内容,例如如何解锁一笔资金。这些脚本代码会随着交易一起保存,从而享有不可篡改的特质,并且是确定性的。所以从某种角度来说,这些脚本也可看作智能合约。可是它们并不好用。
首先,这些脚本代码不是图灵完备的,这限制了实现的功能;其次,开发门槛较高,编写复杂逻辑的体验会很差,好比用 JVM 字节码来写程序。
2013 年,一个青年 V 神提出了以太坊,其核心是通过世界状态对区块链数据进行更新和验证。以太坊与比特币最大的不同在于可通过智能合约执行复杂的逻辑操作。
在以太坊上,智能合约的语言是 Solidity,它是图灵完备且较为上层的语言,极大地扩展了智能合约的能力范畴,降低了智能合约编写难度。
正因为此,以太坊的诞生,也标志着区块链2.0时代开启。随后,智能合约技术逐步渗透了溯源、存证、供应链等多个业务场景。
智能合约技术
以太坊采用了 Solidity 作为智能合约语言,Solidity 是一门为实现智能合约而创建的高级编程语言,能在允许以太坊程序的节点上运行。该语言吸收了 C++、JavaScript 的一些特性,例如它是静态类型语言,支持继承、库等。
除了 Solidity,每个平台的智能合约技术也有所不同,接下来将从公有链、联盟链作为切入,介绍其他平台所采用的技术。
公有链
首先,不妨先认识三大公链的智能合约技术。
联盟链
除了公链,联盟链也是重要的区块链类型。比之公链,联盟链共识的复杂度被大大缩减,因此具有更高的执行效率。
联盟链受企业级机构青睐,一般而言,相关机构之间会形成联盟,通过联盟链来共享数据。联盟链可覆盖供应链金融、司法存证、溯源等多种场景,未来还会与 IOT、AI 等技术结合。
在当今联盟链生态中,除去采用 chaincode 的 Fabric,大部分平台都采用 Solidity 作为智能合约语言,FISCO BCOS 即是如此。
时下,Solidity 可谓占据了智能合约的 C 位,掌握 Solidity 是学习智能合约和区块链的重要一环。后面系列也将对如何用 Solidity 编写、运行以及测试智能合约作深入介绍解析,敬请关注。
除了 Solidity、WebAssembly、Libra 的 Move 等一些智能合约语言也在发展中,可以保持关注。