Scilla&维珀

区块链和智能合约的出现引起了人们对构建dapp以及出于实际目的利用智能合约的广泛兴趣。 Solidity是以太坊的一种智能合约语言,是用于以太坊的公共区块链网络的主要编程语言,并且仍然是最受欢迎的广泛使用的智能合约语言。.

尽管Solidity取得了成功并广泛用于在以太坊上编写智能合约,但它是一种相对较新的编程语言,很容易受到错误和某些高级逻辑故障的影响。出于对智能合约创建的需求以及用于编写智能合约的改进安全方法的需求,出现了Vyper和Scilla等编程语言。.

Scilla&维珀

坚固性 & 智能合约

坚固性是由 加文·伍德(Gavin Wood) 早在2014年,它是编写智能合约的主要编程语言。它是专门为以太坊虚拟机(EVM)设计的,具有一些有用的功能 文件资料 关于它是什么以及如何使用它.

Solidity是一种高级编程语言,可编译为在以太坊节点上运行的EVM兼容字节码。值得注意的是,Solidity是一种相对简单的编程语言(与其他语言相比),具有类似于JavaScript的非常熟悉的语法。坚固性还需要考虑作为在区块链上执行的智能合约语言的一些重要考虑因素,包括需要确定性的智能合约。.

坚固性指南

阅读:什么是Solidity?我们的以太坊智能合约语言指南

可以在多个在线教育平台上了解Solidity,包括 乌迪米 -并且有几个广泛的 图书 写关于它。 Solidity的网络效应已将其巩固为基于以太坊构建的智能合约和dapp的编程语言.

尽管Solidity广受欢迎,但它作为EVM专用编程语言的存在限制了其在其他区块链平台上的使用。此外,围绕高级语言的安全问题及其潜在问题导致对智能合约审计的重视,以及更简单,更安全的语言。备受瞩目的 骇客 和研究 学习 揭示漏洞的绝对数量不可避免地导致迫切需要更好的智能合约实践.

维珀

Vyper是一种实验性编程语言,与Solidity类似,因为它还专门针对EVM进行了量身定制。 Vyper在语法上类似于Python,并且像Solidity一样是面向合同的.

但是,Vyper的设计目标是安全性,简单性和可审核性。这在很大程度上是早期智能合约迭代中的安全问题的结果。由于Vyper的宗旨和目标,它明确地展示了一些功能,这些功能是有目的的 概述 如:

  • 修饰符
  • 类继承
  • 功能 & 运算符重载
  • 递归调用
  • 无限循环

值得注意的是,递归调用使不可能对气体限制设置上限,并且可能导致气体限制攻击。此外,删除修饰符时要牢记可审核性,因为它们会使代码产生误导,并且难以从人类可读的角度进行解释.

Vyper取消了自身的安全弱点功能,但还添加了一些关键功能,包括边界和溢出检查,可判定性和强类型。关于气体限制,可判定性使开发人员可以计算函数调用的气体消耗的精确上限.

Vyper和Solidity之间的主要区别在于-尽管它们看起来很相似,但Vyper删除了Solidity中存在的许多面向对象的原型。 Vyper对简单性的强调还使它在需要不太熟悉编程的相关方进行审核的情况下更具可读性。因此,Vyper的潜在用途吸引了许多可以用Vyper编写的实用业务dapp.

编程语言级别的安全性考虑因素很重要。简单性通常会导致所需的逻辑复杂性降低,并且可以固有地提供更好的安全性。 Vyper并不一定要取代Solidity,而是要提供一种更简单,更安全的语言作为必要时的替代选择。.

Vyper包括 Vyper改进协议 (VIP),甚至还有一个在线文本编辑器 编译器 使用Vyper代码。以太坊的 卡斯珀FFG 实现也是用Vyper编写的.

是Zilliqa使用的中级智能合约语言。 Scilla的设计明确考虑了安全性和智能合约安全性。重要的是,它专注于提供 正式验证 智能合约.

Zilliqa指南

阅读:Zilliqa入门指南

正式验证 旨在在将智能合约一成不变地投入到区块链之前为其提供静态保证。智能合约的形式验证在该领域变得越来越普遍,并且包括Tezos和Cardano在内的多个平台都在积极地追求和应用。形式验证的使用应大大减少提交给区块链的错误代码实例,从而降低第三方对密集型智能合约审核的需求.

Scilla经过精心设计,具有足够的表现力,可以构建有用的dapp,同时仍可确保有关合同行为的正式推理。与Vyper相似,主要原理是表达的简单性和安全性。尽管需要对Scilla进行一个重要的区分,那就是 中级语言, 意味着它打算成为高级语言的翻译目标,并随后编译为可执行的字节码。因此,与Solidity等高级语言相比,该语言在理解方面更具挑战性.

Scilla将通信和计算分开,这对合同的执行方式有重大影响。合同的结构如下 通信自动机 合同内计算作为原子转换执行 没有 涉及任何其他各方。而且,另一方要求参与的情况导致过渡的明确传达结束。然后可以将诸如合同之类的特定于合同的效果与消息和发送/接收资金等区块链互动脱钩.

此外,Scilla还提供了 有效的 计算以及之间的分隔 调用延续. 关于有效和纯粹的计算,Scilla从函数式编程中汲取了灵感,并指出:

“通过精心设计纯净的和不纯净的语言方面之间交互的语义,我们确保了合同过渡的许多基本属性,例如进度和类型保留,同时还使它们可以使用独立工具进行交互和/或自动验证”

调用和延续的分离是指将合同结构化为沟通自动机以提供 CPS 计算模型。使用带有显式延续的此模型,可以将诸如Solidity之类的语言直接翻译为Scilla,而不会损害自动机结构的完整性.

Scilla的正式验证组件通过嵌入到 Coq证明助理, 正式的证明管理系统,旨在提供智能合约和分布式应用程序的经过机械验证的证明。结果是对由于以下两个原因而引起的合同的形式验证: 安全活泼. 正确性 分布式系统中的安全性可以分为安全性和活动性。根据Zilliqa的说法:

安全 那时候 ”没错” –这是对某些不良行为的保证 决不 发生。一致地,这是当没有两个过程决定不同的值时。另一个例子是分布式交易系统中没有死锁。从长远来看,安全性对智能合约的整体完整性具有重要影响.

活泼 在哪 ”某些事情最终可能会发生” –保证好事会 最终 发生。 “最终”一词也不意味着有时间限制,但是如果系统运行足够长的时间,则可以保证活动性。例如,一致同意,所有过程最终都将决定一个值。另一个例子是故障检测器的完整性,它将最终检测出故障过程.

Zilliqa对Scilla的开发与形式化及其在Coq中的嵌入并行,应该证明对于在其高通量区块链上运行的智能合约的未来安全性而言,这是一个有价值的决定.

最后,Scilla与区块链无关,可用于其他区块链。但是,它仍然在积极的研发中,主要是与Zilliqa团队合作。绵 网站 还提供了教程和 在线IDE 尝试语言.

结论

毫无疑问,智能合约开发的不断创新将带来更多面向合约的编程语言和解决方案,以解决其安全问题。考虑到通过以太坊等大型加密货币网络转移的价值金额,对dapp和智能合约的安全性需求至关重要.

智能合约的最初迭代显示了其未来功能的巨大潜力。现在,一类新的开发集中在提高编程语言级别的安全性,以确保其可持续性。.