尼克·萨博关于智能合约的工作理论迟迟没有实现,是因为需要底层协议的支持,缺乏天生能支持可编程合约的数字系统和技术;如果金融机构仍然需要手动批准资产的转移,那么智能合约的目标就没有实现,实现智能合约的一大障碍是:
现在计算机程序不能真正自动地触发支付!
区块链技术的出现和被广泛使用,正在改变阻碍智能合约实现的现状,从而使尼克·萨博的理念有了实现的机会;区块链不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约;数据无法删除、修改,不用担心合约内容会被篡改;执行合约及时、有效,不用担心系统在满足条件时不执行合约;同时,全网备份拥有完整记录,可实现事后审计,追溯历史。
1、智能合约是以太坊的标志性创新
以太坊是个创新性的区块链平台,它的创新之处就是在区块链中封装代码和数据,允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用;它既采用了区块链的原理,又增加了在区块链上创建智能合约的功能;比特币虽然在技术领域内有着巨大的创新,但是也有着诸多的不足,所以以太坊建立了一个可编码的图灵完备的区块链;图灵完备意味着该虚拟机和编程语言拥有计算能力,一切可计算的问题都能计算;在这个区块链上,程序员可以通过编写代码,创建新的数字资产;也可以通过编写智能合约的代码,来创造非数字资产的转移交行功能。
因为这是一个可以编码、图灵完备的区块链基础,通过这些编码,在区块链的基础之上,能够管理更多的非数字资产;意味着区块链交易远不止买卖货币,将会有更广泛的应用指令嵌入到区块链中,所以在以太坊平台上创立新的应用场景就变得十分简便了;智能合约是区块链和实际应用场景相结合的重要特性,也是区块链能够被称为颠覆性技术的主要原因,是可编程金融、可编程货币的技术基础;智能合约今后可能成为全球经济的基本构件,任何人都可以接入到这一全球经济中,而不需要事前审查和预付成本;智能合约无须要求用户彼此信任,因为智能合约不仅是由代码进行定义的,也是由代码强制执行的,完全自动且无法干预,也就是“代码即法律”;在金融、拍卖、借贷、遗嘱、注册、众筹、股权、投票、保险等领域,智能合约都可以发挥其重要作用。
2、要看清智能合约,我们首先要弄懂四个概念:DA、DAE、Oracle、DI
1)DA = Digital Asset
这里比较好理解,数字资产,广义的数字资产指一切以电子数据形式存在的资产,其中甚至包括数字货币,还包括商业积分, 电子股票,债券,知识产权,电子地契,基金,收益权,或其他资产包等等; 这些数字资产可能是中心化机构发行的, 也可能是去中心化的, 可能是区块链的, 也可能是非区块链链的;大家都知道区块链是从比特币系统衍生出来的技术, 区块链原来就是比特币的去中心化的账本, 它的公开性,不可篡改性并且成功的解决了双花问题, 使它天然的成为了一个非常优秀的数字资产发行, 记账, 转让和管理的技术, 我们今天讨论的数字资产是狭义的区块链上的数字资产, 它与资产证券化的概念有类似的地方,但是不同的是它是依托区块链技术表达的一种资产概念,意即由资产所有者完全掌控的一种基于互联网的流动资产,所以资产在区块链上的数字化是未来互联网金融进化的必然方向;
2)DAE = Digital Asset Exchange
数字资产交易所,或者更好的叫法是DAM(Digital Asset Management)数字资产管理平台,即针对所有数字资产的一种发行,存托,记账,交易撮合的平台,不同于传统交易所,DAM的发行, 存托, 记账和撮合服务以及资产的交割都由区块链或是它的客户端资产钱包自动完成;
3)Oracle
仲裁服务,该条是针对智能合约(smart contract)的,即发生智能合约违约时,一般进行Online仲裁的一种仲裁服务商。
4)DI = Digital Identity
数字身份,这是一个非常有意思的也是非常重要的概念;1,2,3这三条组合在一起我们统称为Fin-network,即(去中心点对点的)金融互联网,Fin-net;那么,一个实体(法/自然)人如何与Fin-net 进行关联映射呢?答案就是DI;这个DI在实体(法/自然)人这一侧应该是由法律背书的实名认证,可以按照不同的授权等级从生物人身上采取唯一的识别特征,可以是DNA片段,可以是瞳孔,也可以是指纹(身份证实在太弱了),当一个实体人使用DI进入Fin-net时,使用特征片段进行签名,获得一个临时(永久)授权进入目标DA网络,进入DA网络后根据授权码生成一个关联账户,该授权凭证表示为该实体人。
5)四元素的关联关系:
任何实体(自然/法)人,通过数字身份认证服务,利用自己的特征值(passwd/ID card/DNA/瞳孔/指纹)去签名一个授权码,定义该授权码的有效时间,再利用该授权码签名进入目标数字资产网络(DA-net),也可以直接进入交易所通过交易获取目标数字资产;VR线表示为现实与互联网的界限;在交易所提供无差别的数字资产交易服务时,所有的区块链数字资产应当遵循一定的开发标准,否则交易所的性能和安全性都难有保障;
3、智能合约在最终投产前需弄清的三件事
智能合约作为区块链的“杀手级应用程序”前途非常光明,在智能合约兑现承诺之前,支持它们的平台需要进一步发展;智能合约可以通过以下三种方法,获得我们的信任:
1)提供形式化验证功能
编写完全符合我们要求的代码是非常困难的,所有软件都非常容易出错或遭受各种攻击,但有了智能合约,实际资产将面临危险;我们需要一种更好的方法来确保这些合约的健全和安全,这种方法便是形式化验证,一种检查代码将按预期执行的数学技术:
“智能合约应以易于验证的语言实施,因此像Haskell和OCaml这样的函数式语言会比C / C ++、Java和JavaScript等命令式语言更适合智能合约代码,因为它们的结构更容易推理和形式化验证;当然,更多的程序员对JavaScript更为熟悉,但是着重点必须从易用性转向安全性;需要注意的是,形式化验证也有一些限制,它不是完全自动的,仍需要人类的技能;另外,形式化验证只能证明我们实际想要检查的属性;如果你不验证正确的事情,漏洞将依然存在。”
2)确保透明性,方便检查代码
其中一个最大的智能合约实验是The DAO;The DAO是一个虚拟化投资工具,筹集了1.5亿美元的资金,但在之后,该平台立即成为攻击者的目标,5千万美元的融资被盗走,存进了攻击者自己的账户;当安全研究人员开始分析The DAO时发现,想要理解The DAO的运作流程非常困难,因为The DAO的所有字节码(虚拟机器代码)都能在区块链上看到,但真正采用的是哪个版本的源代码并不清楚;智能合约代码在确保无漏洞的同时,也需要透明化,因此在签署协议时,我们能清楚地知道协议的内容,并能更容易地发现错误;实现这一点的方法便是使用解释而非编译型语言,因此实际代码在区块链上可见,并且可以轻松检查;另外,字节码需要准确匹配创造它的源代码,这就需要认证编译器本身。
3)提供明确的治理机制
智能合约储存在区块链上,根据定义,代码是不可改变的——意思就是,在完美世界中,代码不会改变;但软件从来不是完美的,对基础平台的更改可能并将发生,或将影响合约代码的执行方式,一个给定的区块链处理这些变化的过程是灌输对其平台的信任的关键;在没有明确的治理模式的地方,智能合约的发展绝不会是一帆风顺的,当它对他们有利时,核心开发者或任何正在运行节目的人都有权中途改变游戏的规则;当然,对于这种权力滥用而言,区块链的脆弱性在很大程度上取决于其社区,尽管如此,未来的区块链应该从一开始就制定明确的治理原则,以便以可预测的方式进行协议更改, 一旦这些问题解决,智能合约便可进入生产阶段,成为日常许多合约的支柱;