主页 > imtoken 官网 > 区块链技术精髓:40个智能合约支撑平台(三)

区块链技术精髓:40个智能合约支撑平台(三)

imtoken 官网 2024-01-20 05:08:20

摘要: 智能合约是以数字形式定义的承诺,控制数字资产并涵盖合约参与者约定的权利和义务。 它由计算机系统自动执行。 在基于区块链的智能合约中,数据管理、交易验证、状态处理都在区块链上完成,区块链提供了一个完整的状态机来接受和处理各种智能合约程序。 这里我们系统地列出了40个支持或用于开发智能合约的平台或项目,并介绍了影响智能合约功能的主要因素。 本文是本系列的第三篇文章。 我们继续给予9个支持平台,包括著名的BOSCoin、ByteBall等。

区块链技术精髓:40个智能合约支持平台(一)

区块链技术精髓:四十个智能合约支撑平台(二)

文本:

正如您已经看到的,区块链正在改变我们的世界。

区块链解决了人类一直面临的一个重大问题,信任问题。 区块链可以通过为任何需要信任的事物创建一个不可更改的可追溯印记来解决信任问题。

当然,技术的力量不止于此。

它在以上特性上不断扩展,创造出一旦制定就必须遵守的规则,其中的每一个动作都会产生相应的反应。 其实就是一个智能合约。

本文列出了四十个支持或用于开发智能合约的平台或项目,所有这些平台或项目都在不断发展。 如果读者发现本文有任何遗漏或错误,欢迎在评论中提出。 另外,随着本文作者对这些平台或项目的深入研究,本文内容会定期更新。

Github上提供了原文,读者可以拉下来提出修改建议。

附:本文对智能合约平台/项目的评价主要考虑影响智能合约功能的一些因素比特币具有智能合约功能吗,而不是整体的功能评价。

这篇文章是原作者花了几天时间才完成的。 如果读者喜欢阅读此类内容,想表达感谢和支持,可以在这里或下方ETH地址邀请作者喝杯咖啡:

           a93e64a691d5aff8f78cd63130cf23b89182d235

下面详细列出四十个智能合约平台/项目。 本文是本系列的第三篇文章。 我们继续给予9个支持平台,包括著名的BOSCoin、ByteBall等。

21.维亚币

智能合约语言:Java

状态:活跃。

阐明:

Viacoin 使用 RSK (Rootstock) 来支持其智能合约功能,并与以太坊兼容。

Rootstock 是一个双向挂钩(Two-way Peg)智能合约平台。 Rootstock 运行一个图灵完备的虚拟机,称为“Rootstock 虚拟机”,它也是 EVM 兼容的,支持运行 Solidity 编译的智能合约。

Viacoin即将发布0.15.0核心版本,该版本将实现默克尔化抽象语法树(MAST,Merkelized Abstract Syntax Trees)。 MAST结构非常简单,支持更小规模的交易,因此更容易执行智能合约。 0.15.0 版本对于 RSK 智能合约的实施至关重要,将为 Viacoin 提供类似于以太坊的智能合约。 RSK 最近发布了其比特币智能合约平台的第一个测试版。

比特币的合约交易什么意思_比特币合约交易教程_比特币具有智能合约功能吗

学习资源:Viacoin 的 Github 存储库。

22.卡尔达诺

优势:

智能合约语言:Solidity、Plutus。

状态:活跃

阐明:

Cardano 的智能合约平台称为 CCL(Cardano Computation Layer)。 CCL特别注重以最简单的方式确保智能合约的行为设计没有潜在的漏洞。 CCL包括两层,一层是正式指定的虚拟机和语言框架,另一层是正式指定的语言,便于自动验证人类可读的智能合约代码。

\

图 Cardano 智能合约和虚拟机

CCL的底层称为IELE。 IELE 提供了一个虚拟机和一个通用语言框架。 虚拟机旨在简化形式化验证工具的构建,语言框架用于将智能合约从高级语言翻译成可执行指令。 IELE的研发由运行时验证(Runtime Verification)的提出者UIUC教授Grigore Rosu牵头,IOHK资助。 为了构建更安全高效的虚拟机,Rosu教授的团队正在将他们最新的研究成果应用在KEVM和KLLVM上。 其中,KEVM是EVM使用的K-frame形式语义,KLLVM是LLVM使用的K-frame形式语义。

与 EVM 等基于堆栈的虚拟机不同,IELE 将作为 LLVM 等基于寄存器的虚拟机来实现。 IELE 将支持无限数量的寄存器并支持无界整数。 IELE 避免使用无界栈,无需担心栈或算术溢出,大大简化了智能合约的定义和验证。 与以太坊类似,IELE 也使用 gas 来指示资源使用情况并防止 DoS 攻击。 这避免了形式验证中一些被研究团队认为“hard but managed”的具有挑战性的问题。 IELE 使用 K 框架来简化用于验证智能合约是否符合规范的自动化工具的开发,这使得 IELE 能够支持使用任何在 K 框架中具有形式语义的编程语言来编写智能合约。

西蒙是其中一种编程语言。 Simon 是 Cardano 的愿景论文中提出的一种高度受限的、领域特定的交易语言,它给出了一组精确定义的基本金融交易原语。 这些原语可以组合起来创建更复杂和可验证的合约。 关于 Simon 的介绍内容不多,但据说 Simon 是受到了 Simon Peyton Jones 及其研究同事的论文《Composing contracts: an adventure in financial engineering》的启发。

Simon Peyton Jones 是 Haskell 的主要设计者之一。 Haskell 是一种静态类型的全功能语言,通常用于实现运行时软件错误代价高昂的应用程序,并已用于实现 Ouroboros。 Haskell 的设计非常适合实现自动化验证工具,这些工具可以在软件开发过程的早期发现并消除软件缺陷。 ACM Fellow 和 Haskell 的另一位设计师 Phil Wadler 也曾担任 IOHK 编程语言的指导专家。 因此,Cardano主打的高级通用智能合约语言Plutus自然而然地集成了大量Haskell的底层机制。

Plutus 是一种静态类型的函数式编程语言,具有类似于 Haskell 的人类可读语法。 与 Haskell 一样,Plutus 也将被转换为更简单的语言 Plutus Core,从而简化形式验证。 形式化验证工具可帮助开发人员对合约进行推理并验证智能合约行为的特定属性。 这些验证是标记和消除合约漏洞的强大工具,包括非法输入处理、类型不匹配、不明显的意外代码路径、范围模糊、拼写错误、溢出等。例如,如果可以证明没有代码路径这可以改变合同的所有者,可以防止导致同时利用奇偶多重签名钱包 ( ) 的漏洞。 现在回想起来,很明显那个特定的属性是必要的。 因此,完全有可能一些重要的属性并没有包含在正式的规范中,而是在被一些漏洞利用后才发现它们的重要性。 因此,虽然形式验证是一种非常强大的工具,但其有效性仅取决于人类在创建规范时覆盖所有基础的能力。

Cardano 计划支持包括 Solidity 在内的更多高级语言。 但是,它仅支持“将 Solidity 用于低保证应用程序,将 Plutus 用于需要形式验证的高保证应用程序”。 虽然很难想象任何智能合约编写者会考虑低保证应用程序,但 Cardano 提供了对 Solhere 的支持,这使得以太坊开发人员和一些现有合约更容易迁移到 Cardano。 然而,开发人员和合约迁移到 Cardano 的主要原因不是它对 Solidity 的支持,而是 Cardano 减少了使资金面临风险的漏洞数量。 如果通过实践验证IELE、Plutus及其配套验证工具开发的智能合约能够避免困扰Solidity代码的各类漏洞,那么对于那些需要使用智能合约的人来说,为所控制的资金获得更好的安全性(它应该说都是智能合约),Cardano无疑是首选平台。

学习资源:Cardano官方文档

23.特所思

优势:

智能合约语言:Michelson

状态:活跃

比特币的合约交易什么意思_比特币合约交易教程_比特币具有智能合约功能吗

阐明:

Tezos 计划通过一种名为“Michelson”的新智能合约语言来大幅提高安全性。 Michelson 的设计侧重于简化链代码的形式验证。 与 Solidity 不同,Michelson 不会编译成任何输出。 它是一种低级的、基于堆栈的、图灵完备的编程语言,由 Tezos 虚拟机直接解释和执行。 所以从技术角度来说,Michelson 比 Solidity 更适合 EVM 字节码。 Michelson 还包含了一些高级结构,例如 Map、集合、Lambdas 表达式、加密原语,以及一些专用于合约的操作,这使得开发人员更容易读写。 Michelson 是一种纯函数式、强类型和静态类型检查的语言,可简化构造正确性证明并消除多个可能破坏 Solidity 合约的漏洞。

正确性证明并不能提供不会发生任何坏事的一般性证明,而是证明程序满足特定规范中列举的所有断言。 因此,如果开发人员创建的规范包含只有授权用户才能更改合约所有者的断言,验证者将在部署之前发现 Parity 多重签名钱包中的漏洞。 但是为了效率,开发者需要考虑断言(复习一下,这是很明显的),在部署的代码受到攻击之前,在规范中添加断言。

虽然人类的分析和推理在防止漏洞方面是不可替代的,但形式验证也可以作为一个强大的补充工具。 形式化验证适用于那些漏洞可能导致灾难性后果的情况,例如控制大量资产的飞行器软件和智能合约。 以太坊社区也认识到了这一点,并启动了多个项目来研究智能合约和以太坊虚拟机本身的形式化验证。 以太坊社区也在研究新的编程语言,比如 Bamboo 和 Viper,它们更适合形式化验证,限制也更多,允许编译器而不是黑客发现很多漏洞。 由于这些语言也会编译成EVM代码,所以有必要对高层代码和它生成的EVM字节码(和/或生成字节码的编译器)做形式化验证。 与以太坊不同,Michelson 由 Tezos 虚拟机直接解释,因此只需要证明合约代码的正确性即可。

Tezos 区块链推出后,Michelson 将提供编程环境。 其中,开发者无需具备专家级能力,即可开发出比Solidity更安全的智能合约。 目前,精通迈克尔逊的程序员屈指可数。 另外,Michelson作为一种新的基于栈的语言,仍然有一些程序员不习惯的功能。 因此比特币具有智能合约功能吗,Michelson 的学习曲线可能成为开发人员采用它的障碍。 尽管如此,Michelson 为开发更高层次、对开发人员更友好的函数式语言提供了基础,促进了“全栈”形式验证的实施。 目前,还有一种名为“Liquidity”的编程语言正在积极开发中。 该语言提供类似 OCaml 的语法,可以使用 Michelson 进行转换。

在以太坊中,正在研究一些互补的可扩展性技术,例如分片、支付通道、侧链和链下计算。 虽然Tezos认识到小额支付需要支付通道等链下机制,但在他们看来,实现大规模链上可扩展性的最佳方式不是分片等技术,而是递归SNARK技术。 SNARKs 可以为任意复杂度的交易提供密码学证明,并递归地为交易证明块提供单一证明,使大量交易能够在廉价硬件上快速验证。 根据 Breitman 的说法,该技术可以完全消除对气体限制的需求,并允许用户在不到一秒的时间内同步整个区块链,从而消除了集中化和吞吐量权衡的需要。 采用 SNARK 的两个主要障碍是生成递归证明的计算成本和对可信设置的要求。 但最新的发展表明,这种大规模可扩展的方法可能很快就会实用。

学习资源:Tezos Michelson 文档、Tezos Medium 博客。

24.无限

智能合约语言:Solidity

状态:无效

阐明:

DFINITY 自称是以太坊的“疯狂姐妹”,这是对它们基因相似性的隐喻。 但 DFINITY 更侧重于性能,并使用基于神经元运行的治理模型。

DFINITY 的理念是,一些合约和去中心化应用程序可能更适合采用算法治理的平台,而不是像以太坊这样的“代码即法律”类型的平台。 DFINITY 项目目前处于原型系统和生产就绪环境之间的状态。 在编写 DFINITY 项目时,还没有支持智能合约部署的公链。

区块链神经系统(BNS,Blockchain Nervous System)与高性能和可扩展性是DFINITY的两大卖点。 但是,用户要理解DFINITY智能合约,首先要理解“链上治理”机制。

\

利用DFINITY的链上治理机制,无需硬分叉网络(Hard Fork)即可实现协议升级等功能。 这有点类似于 Tezos 的哲学,但 DFINITY 使用 EVM 和 Solidity。 因此,任何可以部署在以太坊上的协议也可以部署在 DFINITY 上。

将自己的代币“押注”在“神经元”上的用户,将根据投票份额获得相应的投票权。 BNS 代表网络中的所有神经元。 任何人都可以向网络提交提案(Proposal),质押代币的用户可以对提案进行投票。 提案可以是:

学习资源:DFINITY官方文档,Dominic Williams' Medium blog。

25. BOS币

智能合约语言:网络本体语言

比特币合约交易教程_比特币的合约交易什么意思_比特币具有智能合约功能吗

状态:无效

阐明:

与上述大多数智能合约不同,BOSCoin的可信合约在设计上采用了网络本体语言(OWL,Ontology Web Language),采用自动机理论来实现可确定性。 下面详细介绍各个组件,以及组件之间的交互机制。

猫头鹰

OWL即Web Ontology Language,是基于W3C(World Wide Web Consortium)的语义Web语言提出的。 OWL组件用于BOS平台的可信合约,用于解释智能合约中的语言结构,包括编码和语句串。

W3C是一个提出Web数据开放标准以支持万维网长期发展的国际组织。 OWL 的职责之一是创建用于表示事物以及事物之间丰富而复杂的关系的 OWL 语言。

OWL 有五个主要组成部分:

BOS 平台将通过 W3C 的语义网使用 OWL。 本体是术语的形式化词汇表,它定义了描述本身与本体中其他术语之间的关系。 OWL 是应用程序用来处理信息(与人工处理相对)的工具,允许系统解释词汇表的含义。 其中,信息可以是标准的文字句子,也可以是代码。 使用 OWL 的优势在于可以从 OWL 存储库中包含的众多本体中提供信息。

时间自动机语言(TAL,Timed Automata Language)

BOS平台可信合约上的智能合约需要进行验证,由好未来作为BOS平台的验证代理实现。 TAL 源自有限状态自动机理论,并为函数添加了时间考虑因素。 因此,我们最好先了解自动机理论。 幸运的是,有几篇关于此的出版物。 其中,斯坦福大学给出了很好的描述如下:

“(自动机)是执行特定过程的自动化过程......自动机理论解决了称为“自动机”的单个机器中的计算逻辑。计算机科学家使用自动机理论来理解机器的计算功能并解决问题. 更重要的是,自动机理论询问哪些函数可以定义为可计算的,哪些问题可以定义为可判定的。 ——斯坦福大学教程

如上所述,有限状态自动机是自动机理论的扩展。 有限状态自动机是一种用于对有限数据的逻辑进行建模以理解自动机的最终生成状态的工具。 下面给出一个实际例子。 本示例模拟一扇自动滑动门,其中左图代表门,右图代表状态。

\

推拉门示意图。 摘自 Miachael Sipser 的“计算机理论导论”。

\

图 2. 滑动门的状态图。 摘自 Miachael Sipser 的“计算机理论导论”。

在上面的模型中,圆圈代表状态,箭头代表状态转换。 图中最左边的箭头表示开始状态。 系统的状态(即本例中的推拉门)有两种状态,开门(OPEN)和关门(CLOSED)。 对于此示例,下表列出了输出:

\

图 推拉门状态表

如果系统经历了如下事件序列:“FRONT, REAR, NEITHER, FRONT, BOTH, NEITHER, REAR, NEITHER”,那么状态转换如下图所示:

比特币的合约交易什么意思_比特币具有智能合约功能吗_比特币合约交易教程

\

图滑动门的状态转移

时间自动机(TA,Timed Automata)将时间引入到自动机的输入中。 灯的状态是使用系统时钟的一个很好的例子。 如果开关被按下一定时间,台灯会变暗,而不是仅仅打开或关闭。 台灯的状态图如下:

\

图.调整台灯状态图。 例子来自澳大利亚新南威尔士大学Ansgar Fehnker的COMP4151课程Lecture 11a“Algorithm Verification”。

在上面给出的调节台灯的状态图中,有关、暗、亮三种状态。 状态转换由按钮开关启动。 如果处于“关闭”状态,则再次按下开关,灯状态变为“变暗”。 如果在系统内部时钟的时间测量间隔(例如,一秒)内按下开关,则灯状态变为“亮”。 如果灯处于“亮”状态,或者如果在自上次按下开关后的时间测量间隔内再次按下开关,则灯的状态将变为“关”。

将区块链、OWL 和 TAL 结合在一起

OWL 和 TAL 的结合构成了可信合约的基础。 当前的智能合约是编码的,OWL组件会解释代码串的结构,TAL会建模并确认智能合约的整体逻辑。 此外,区块链存储了 OWL 和 TAL 的来源。

因此,我们可以确保在可信合约被验证和执行之前合约是可判断的,从而保证系统的完整性。

学习资源:BOScoin

26. 集市 Tauchain

状态:无效。

阐明:

要了解Agoras,首先需要介绍一下Tau链的原理。 Tau 链生态系统总结了很多中心化和去中心化的点对点网络,包括一些区块链企业。 Tau 链有许多不同的用例,从软件开发到游戏再到去中心化存储。 Agoras 是一个运行在 Tau 链上的应用程序,它提供一种专注于点对点合约的智能货币。

Agoras 专注于点对点智能合约,是一个值得企业考虑的解决方案。 企业通常希望维护隐私,考虑包含私人交易的智能合约足以实现这一点。 Agoras 希望首先关注有意义的智能合约,这些合约将始终遵循设定的设置和要求,不会给任何一方带来任何意外。

学习资源:Agoras 博客

27. 爆裂

优势:

不足的:

智能合约实施:自动化技术(C/C++)

比特币的合约交易什么意思_比特币具有智能合约功能吗_比特币合约交易教程

状态:活跃。

阐明:

Burst是第一个在真实环境中以自动交易(AT,Automated Transaction)的形式实现工作机制和图灵完备智能合约的加密货币。 下图显示了从合约创建到最终状态更改的流程。

\

图 Burst 智能合约生命周期

由于存在一些问题。 Burst跟不上其他平台的发展。 在 2018 年 4 月 4 日发表的采访中,它说:

使用 Burst AT 的主要问题是矿工需要一个 BRUST 来运行每个操作码(即一行代码)。 这使得运行一个从智能合约本身返回一个 BRUST 的非常简单的合约也需要大约 20 BRUST。 如果合约的运行成本可以降低到每个操作码 0.001 BRUST,那么在引入编译器等技术后,该平台可以与以太坊等其他平台竞争。

学习资源:BurstAT 的维基页面、Burstcoin_dev 的 Medium 博客。

28. iOlite

优势:

状态:活跃。

阐明:

iOlite是一款专注于让智能合约技术更广泛地被普罗大众采用的产品。 它提供了一个可以理解自然语言并将其编译成智能合约代码的引擎。 iOlite 是那些希望快速上手智能合约应用而无需花时间学习的用户的理想解决方案。

\

图 iOlite 用例

iOlite 是根据斯坦福大学的一项研究开发的。 本研究提出的 FAE 技术适用于将自然语言和其他一些需要的编程语言翻译成智能合约代码。 FAE 并不直接将输入的语言翻译成代码,而是取决于贡献者(即某个智能合约专家)是否定义了一些包含语言表达式的结构。 此外,这些结构将用于编写的智能合约代码中。 这允许引擎浏览这些结构并找到正确的表达式以编译成所需的智能合约。 使用结构后,贡献者将获得相应的 iOlite 代币奖励。

可见,iOlite FAE 的成功取决于社区的贡献。 FAE 通过使用机器学习技术帮助简化新结构的学习和采用。

iOlite Labs 目前专注于使用最广泛的 Solidity 以太坊智能合约。

iOlite 团队的 Travis Byrne 解释了哪些语言可以用来创建智能合约。 “这不仅意味着使用 Python、C 和 JavaScript 等常规语言的程序员可以立即利用现有技能编写智能合约,也意味着即使没有编程技能的普通人也可以使用英语等自然语言开始开发智能合约。 合同。 iOlite 正在推动创建智能合约的技术学习的界限”。

学习资源:iOlite官方指南、iOlite的Medium博客。

29.字节球