ConsenSys最近宣布推出一种名为Fae的新智能合约系统。Fae其实就是一个智能合约的独立平台,从无到有地创建出来以促进可扩展性,让以太坊可以在不进行修改的情况下从这种可扩展性中受益。通过连接到以太坊区块链,Fae可以将自己的交易与以太坊同步,并提供跨平台的交互和经济性。然而,通过与以太坊虚拟机保持独立,Fae可以让用户免于在Gas上花费资金以及在其他人的计算上花费时间,而不会牺牲以太坊提供的任何共识。
Fae能做什么?
抽象地说,任何事情:像EVM一样,Fae为智能合约提供了图灵完备的计算模型,因此任何复杂程度的决策都可以在交易中进行编码。
具体来说,Fae不像EVM,因为它不是虚拟机。它实际上是一个解释器,它直接在主机上执行合约和交易代码——当然,在一个严格控制的环境中。而且因为Fae不是虚拟机,它可以使用Haskell(一种现有的高级编程语言)这就是为什么说Fae具有“功能性”的原因之一。Fae实际上只提供了一个相当小的Haskell库来表达对抗性合同规范(adversarial contract specification)的概念,但它仍然允许大量语言来表达合约的条款、保证和演变。
什么是“对抗合同规范”?当相互不信任的双方签署合约时,正是这种规范使合约安全可靠。对抗性合同规范是对价值物处置的控制,合约状态的管理,对当事人身份的保护以及对继承合约创建的限制。Fae提供了一些功能和一个环境,可以以与普通Haskell平滑一致的方式表达这些问题。
除了编程之外,Fae承诺,任何计算,无论多大,多过度,多恶意,都可以用于任何交易;它还承诺,任何缺乏硬件支持(或者认为计算不安全)的用户都不需要执行任何计算。所有Fae客户端都是“轻型”客户端,其确切内容由其运营商根据个人对交易结果的兴趣确定。
通过这种保证,Fae交易可以在没有对Gas有经济抑制的情况下运行,以限制其参与者的负担。Gas的存在是为了保护无辜的待命者:无论是否对结果感兴趣,都需要执行每笔交易的验证者。Fae使每个用户不必运行所有交易,因此无需保护他们免受不想验证甚至无法验证的交易的影响。
Fae是怎么做到的?
抛开技术细节,Fae仅基于一个原则:懒。这是一种构造程序的方法,以便按需执行代码,例如交易和调用合约的代码。Fae交易消息是关于它们所依赖合约的预先信息,这允许Fae维持合约状态的有组织存储,可以精确定位每个依赖关系而无需观察其他内容。
Fae使用Haskell作为一种实施语言,因为它本质上就是懒的,计算的延后(defer)和调度已经由专门的研究人员和开发人员实现。懒作为一个概念需要一种功能性的编程风格,因为它拒绝具体的执行顺序,就像Fae拒绝具体的交易排序一样。
Fae认识到区块链的可扩展性与其交易的“懒”执行密切相关。出于这个原因,以及使用Haskell进行合约编程,Fae必须具有功能性。
共生:Fae + Ethereum = Faeth
Fae与以太坊不同,但是通过一个简单的机制,Fae实际上可以成为以太坊的一部分。当以这种方式嵌入到以太坊交易中时,Fae交易可以使用诸如发送者和接收者地址,ETH价值和数据(联系人调用参数)之类的参数作为Fae执行的前提条件。这在Fae和以太坊交易之间建立了同步的因果关系,通过这种关系,各方可以进行交换,从而在两个系统之间转移价值和工作,而无需额外的Gas费用。
这种名为Faeth的共生既增强了以太坊的元交易逻辑(包含了一个可扩展的组件),并通过为它提供区块链来增强Fae。因此,如果实现了Faeth,Fae存储的性质将立即保证以太坊网络上的所有参与者都能收到相同的Fae交易消息,并在选择运行它们时找到相同的结果。
尝试Fae可以得到什么?
不同的人在尝试Fae时可以有不同的收获:
大型合约的设计者可以探索一种节约Gas的新方法;
交易小、不频繁的用户可以以较少的资源开销执行交易;
合约语言爱好者将在Fae的语言和抽象中找到新想法;
未来主义者可能会觉得这个东西非常令人兴奋。