以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

栏目: 编程语言 · 发布时间: 5年前

内容简介:作者 / Blockgeeks编译 / Aholiab

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

作者 / Blockgeeks

编译 / Aholiab

在之前的文章中,营长从特性、规则和应用的角度,向大家全面介绍了以太坊新的合约语言Vyper的内容,很多朋友表示想看Vyper编程的实例。

在今天的文章中,营长就对Vyper这门新语言做更加深入的分析,并实际展示给大家看看Vyper写成的合约到底是什么样的。

另一方面,由原以太坊联合创始人Charles Hoskinson创办的第三代加密货币Cardano也推出了自己的合约语言Plutus,这门语言随着Cardano的背书,一经推出就呼声很高,经常被认为是可以跟Vyper分庭抗礼。

那么,这两种语言,到底谁才能一统未来智能合约的江湖?

对于区块链开发者来说,保持一颗学习的心态至关重要, 这不,刚学会Solidity的你,眼看这门语言就要被Vyper取代了

之前营长分享了以太坊新编程语言Vyper的介绍,朋友们纷纷表示想看Vyper编写代码的实例 。为了满足大家,今天营长就给大家看一下用Vyper编写的代码到底长啥样。

没看过的同学赶紧来补课: V神绞尽脑汁开发Vyper,Python、Solidity要失宠?十分钟,看完这份12岁儿童都能看懂的智能合约指南,你就明白了…

不过另一方面, 作为 Cardano的主打合约编程语言, Plutus一直被认为是Vyper的核心竞争者

那么, 这两门语言到底有什么差别 对于开发者来说该如何选择 哪个才能代表智能合约的未来

智能合约的未来,Vyper vs. Plutus

在讲Vyper之前,我们先来看看现在以太坊的合约语言Solidity。Solidity是由Gavin Wood、Christian Reitwiessner、Alex Beregszaszi、Yoichi Hirai,以及其他一些以太坊核心开发者开发的。

这门语言在设计之初参考了很多著名的项目和编程理念, 如面向对象编程、web编程、汇编等 ,也覆盖了大量的使用场景。然而, Soldity并不完美 ,用它写出来的合约在审校上非常困难,原因在于过于多变,造成代码结构十分复杂。

因此, 以太坊期望用Vyper来解决这些问题, 由于有以太坊的背书, Vyper 一直都受到无数开发者的关注

而另一方面,Plutus作为一个被认为是能与Vyper对标的语言,则显得有点被低估了

作为前以太坊联合创始人,Charles Hoskinson深刻理解第二代加密货币平台(以太坊)的种种弊端,如可扩展性等,因此Plutus在设计上采用了函数式编程方式,针对其前辈Haskell做了大幅升级,语法简洁,也拥有更强大的数学运算能力。

下面,就让我们一起来对比一下这两门语言吧。

毒蛇之信:Vyper

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

而Vyper语言的设计则正是针对Solidity的这些痛点,先来看看Vyper的官方定位:

Vyper是一门直接、简单的编程语言,对于智能合约的阅读和审计非常友好,可以帮助开发者更好地把注意力放在业务逻辑的实现上。

从这一定位就可以看出, Vyper的使用更简便、高效,尤其在代码审计上较之Solidity的提升很大 。这一特性,主要归功于Vyper是基于 Python 的。而Python这门语言设计的初衷,就是让非技术人员都能编写合约的编程语言,语法结构十分简洁易懂。

不过, 虽然Vyper很好地继承了Python简单易懂的特性,但也牺牲了很多Solidity的灵活性 ,因此,Vyper更适合写一些「小需求」,像写DApp这种大工程就有点捉襟见肘了。

我们不难理解以太坊之所以强推Vyper,主要有以下两点原因:

  1. 以太坊的Sharding(分片技术)及Casper FFG的应用,都是用Vyper写成的;

  2. 以太坊的核心开发者,都背书Vyper,希望它可以作为以太坊智能合约的默认语言。

除此之外,虽然继承了Python的简洁易懂,但Vyper安全方面,避免了一些状态修饰符递归调用和运算符重载造成的gasLimit向量攻击。此外, Vyper还包含大量针对算术运算的溢出检查 。这样就杜绝了在合约审计过程中插入的恶意代码。

下面我们就一起来看一个由Vyper写成的智能合约,这个合约使用的是ERC-20标准。代码如下:

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

在上面代码中:

  • self 函数用来在当前类中指定实例变量(instance variables);

  • @public @private 则设定当前合约的ABI(Application Binary Interface,应用二进制接口)的能见度和曝光度,并允许外部函数(如其他合约或钱包地址)的调用。

手持函数式秘密武器的Plutus

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

说完了Vyper,咱们再来介绍介绍本文的另一位主角Plutus。说起Plutus,可能国内的开发者不是特别熟悉,它是由Cardano推出的函数式编程语言,用来编写智能合约。

其实,Cardano推出过两种编程语言,一个是大名鼎鼎的Haskell,另一个则是Plutus。与Vyper一样,在讲Plutus之前,我们也看一下官方给这门语言下的定义:

Plutus是一门纯净的函数式编程语言,用来在Cardano上编写智能合约。其语法类似Haskell,比如在定义数据类型是,开发者可以直接调用类型名称、类型参数,以及构造函数替代(constructor alternative)列表,与Haskell一样,每个构造函数替代都有自己的类型参数。

更多关于Plutus的内容,可以参考官网:

https://cardanodocs.com/technical/plutus/introduction/

正如上面所说, Plutus是一种函数式的编程语言 ,要理解Plutus的精妙之处,就需要先知道什么是「函数式编程」。

目前,所有的编程语言,都可以被分为两大类: 函数式编程 (Functional programming)和 指令式编程 (Imperative programming)。

让我们先来看看「指令式编程」。

指令式编程

简单来说,指令式编程是指 ,开发者需要把所有计算机需要的运算步骤都写在代码里,每一步都是指令

几乎所有传统的编程语言都是命令式的编程语言,如C++、Java,甚至Solidity。因此有时我们也称指令式编程为「算法编程」(algorithmic Programming)。

举个栗,如果我们在C++上实现一个需求:5+3=?,那么代码应该是:

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

从上面代码中可以看出, 要实现这样一个简单的运算,需要4个步骤 ,即:

  1. 首先声明一个整数a,为其赋值5;

  2. 再声明一个整数b,为其赋值3;

  3. 声明一个整数c;

  4. 将a与b的值相加,存储到c

因此,这样一个加法运算要花费很多步骤,每个步骤都会对整个程序的状态产生影响,每个步骤也都有自己独立的运行结果。

函数式编程

函数式编程则不然。

它是指将电脑运算视为函数的编程方式 。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。

和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。

举个例:假如现在有一个函数f(x),我们希望用它来计算另一个函数g(x),然后再用结果与第三个函数h(x)进行运算。 与指令式编程不同的是,我们不需要一行行的去运行和计算,只需要写一行代码即可

h(g(f(x)))

因此, 函数式编程对解决数学类问题更友好也更安全,另外,函数式语言还可以帮助做形式化验证 ,即从数学的角度审计合约代码到底执行的是什么逻辑。这也是Cardano之所以使用函数式语言来写合约的原因(Haskell也是函数式语言)。

搞清楚了什么是函数式编程,让我们回到正题, 接着说说Plutus这门语言

简单来说, 我们可以把Plutus看做是一个升级版的Haskell,只是语法更为简洁 。与其说它是为编程而生,不如说它是为数学而生。

正因为这一特性,Cardano把Plutus定位在: 金融机构、电商、股票期权交易 等场景。

说了这么多,让我们实际看一下用Plutus写成的合约长啥样吧,

感兴趣的话可以在这里找到合约的源文件:

https://cardanodocs.com/technical/plutus/examples/

以下Plutus代码展示了加法、乘法和阶乘运算:

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

从上面代码中,可以看出函数式编程比指令式编程简洁了多少,就跟算术题一样。

写在最后

「币圈一天,人间一年」,区块链的发展一天一个样,作为开发者,了解最新的趋势和技术发展至关重要。

作为以太坊和Cardano最重要的新的编程语言,我们需要有敏锐的嗅觉和不懈的努力去更新自己的知识库。

希望今天的文章能让你对Vyper和Plutus有更深的认识,喜欢就分享给好基友吧~

内容转载请联系微信:

qk15732632926(备注:微信公众号+转载)

商务合作请联系微信:

fengyan-1101 (备注:区块链大本营+商务合作)

最新热文:

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

大力戳↑↑↑  加入区块链大本营读者⑦号群

(群满加微信 qk15732632926 入群)

(内容转载请联系微信:qk15732632926)

(商务合作请联系微信:fengyan-1101)

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?

了解更多区块链技术及应用内容

敬请关注:

以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?


以上所述就是小编给大家介绍的《以太坊联合创始人发明了新语言叫板Vyper,主链之后语言将引领新一轮大战?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法与数据结构

算法与数据结构

张乃孝 / 高等教育出版社 / 2006-1 / 31.00元

《算法与数据结构:C语言描述(第2版)》以数据结构为主线,算法为辅线组织教学内容。全书共分10章:绪论、线性表、字符串、栈与队列、二叉树与树、集合与字典、高级字典结构、排序、图和算法分析与设计。《算法与数据结构:C语言描述(第2版)》体系完整,概念清楚,内容充实,取材适当。第一版被列入“面向21世纪课程教材”,2004年被评为“北京市高等教育精品教材”,第二版被列入普通高等教育“十一五”国家级规划......一起来看看 《算法与数据结构》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具