Vyper解读:简单美的以太坊新编程语言

Lucas Cullen (https://www.linkedin.com/in/lucascullen/) 在2018年8月22日视频直播了介绍 Vyper ,以太坊新的编程语言

Vyper编程语言的Github网址: https://github.com/ethereum/vyper

Vyper网站: https://vyper.online/#

Vyper is a contract-oriented, pythonic programming language that targets the Ethereum Virtual Machine (EVM)

什么是Vyper?

Vyper是面向合约、类似Python的以太坊编程语言,运行在以太坊虚拟机(EVM)上。

以太坊虚拟机(EVM)概览

  • 高级语言:Solidity 和Vyper

-Solidity:面向对象(object-oriented)

-Vyper: 面向合约(contract-oriented)

  • 编译器

-编译器将高级语言解析成操作码

-Solc编译器是用C++来编译的

-Vyper编译器是用Python来编译的

  • 操作码

-见黄皮书

Vyper的设计原则:

安全性:在Vyper中建立安全的智能合约应该是可能和自然的。

语言和编译器的简单性:语言和编译器的实现应该变得简单。

可审计性:Vyper代码应该是最易于人类阅读的。 此外,编写误导性代码应该是最困难的。 对于读者的简单性比对于作者的简单性更为重要,而对Vyper先前经验较少的读者(以及一般的编程经验较少)的简单性尤为重要。

入门(详见https://vyper.readthedocs.io/en/latest/installing-vyper.html#

  • 需要Python3.6版本以上

运行命令行:

git clone https://github.com/ethereum/vyper.git

cd vyper

make

make test

  • 一旦Vyper安装了,编译合约

vyper yourFileName.vy

  • 有Docker图片

相比Solidity而言,Vyper有以下特征:

1、没有修改器(modifiers)

Vyper没有modifier,因为太容易写出误导性的代码了

2、没有继承(inheritance)

继承需要参考不同文件,来理解程序在做什么。并需要理解在逻辑冲突时,当前谁在优先执行(实际生效的是哪个function)。因此,使得代码难于理解。

3、没有内联汇编(inline assembly)

内联汇编无法实现特定变量的搜索。

4、没有函数重载(function overloading)

函数重载会引起混淆,有时候不容易搞清楚调用的是哪个函数。另外,函数重载使得代码更加难查询,因为你必须追踪你调用了哪个函数。

5、没有运算符重载Operator overloading)

太容易写误导性的代码了,运算符重载会经常引起写入错误

6、没有无限循环(Infinite loops)

不能设置gas限制的上线,为gas限制攻击开启可能性

7、没有二进制小数(Binary decimals)

十进制固定精度更好。因为在代码中表示的任何十进制固定精度都具有精确的表示,而二进制固定精度导致不直观的结果。

社区讨论:https://gitter.im/ethereum/vyper

为您推荐

发表评论