麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

以太坊聯合創始人發明了新語言叫板Vyper,主鏈之后語言將引領新一輪大戰?區塊鏈

區塊鏈大本營 2018-08-17 18:45
分享到:
導讀

Vyper與Plutus這對CP,到底誰是合約語言一哥?

對于區塊鏈開發者來說,保持一顆學習的心態至關重要,這不,剛學會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

blob.png

而Vyper語言的設計則正是針對Solidity的這些痛點,先來看看Vyper的官方定位:

Vyper是一門直接、簡單的編程語言,對于智能合約的閱讀和審計非常友好,可以幫助開發者更好地把注意力放在業務邏輯的實現上。

從這一定位就可以看出,Vyper的使用更簡便、高效,尤其在代碼審計上較之Solidity的提升很大。這一特性,主要歸功于Vyper是基于Python的。而Python這門語言設計的初衷,就是讓非技術人員都能編寫合約的編程語言,語法結構十分簡潔易懂。

不過,雖然Vyper很好地繼承了Python簡單易懂的特性,但也犧牲了很多Solidity的靈活性,因此,Vyper更適合寫一些「小需求」,像寫DApp這種大工程就有點捉襟見肘了。

我們不難理解以太坊之所以強推Vyper,主要有以下兩點原因:

以太坊的Sharding(分片技術)及Casper FFG的應用,都是用Vyper寫成的;

以太坊的核心開發者,都背書Vyper,希望它可以作為以太坊智能合約的默認語言。

除此之外,雖然繼承了Python的簡潔易懂,但Vyper安全方面,避免了一些狀態修飾符遞歸調用和運算符重載造成的gasLimit向量攻擊。此外,Vyper還包含大量針對算術運算的溢出檢查。這樣就杜絕了在合約審計過程中插入的惡意代碼。

下面我們就一起來看一個由Vyper寫成的智能合約,這個合約使用的是ERC-20標準。代碼如下:

blob.png

blob.png

在上面代碼中:

self函數用來在當前類中指定實例變量(instance variables);

@public和@private則設定當前合約的ABI(Application Binary Interface,應用二進制接口)的能見度和曝光度,并允許外部函數(如其他合約或錢包地址)的調用。

手持函數式秘密武器的Plutus

說完了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=?,那么代碼應該是:

blob.png

從上面代碼中可以看出,要實現這樣一個簡單的運算,需要4個步驟,即:

首先聲明一個整數a,為其賦值5;

再聲明一個整數b,為其賦值3;

聲明一個整數c;

將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代碼展示了加法、乘法和階乘運算:

blob.png

從上面代碼中,可以看出函數式編程比指令式編程簡潔了多少,就跟算術題一樣。

寫在最后

「幣圈一天,人間一年」,區塊鏈的發展一天一個樣,作為開發者,了解最新的趨勢和技術發展至關重要。

作為以太坊和Cardano最重要的新的編程語言,我們需要有敏銳的嗅覺和不懈的努力去更新自己的知識庫。

Vyper 函數 合約 Plutus 編程
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 亚洲国产成人资源在线桃色 | 九哥草逼网 | 青草视频免费观看 | 亚洲国内精品久久 | 美女和男人免费网站视频 | 色综合视频一区二区观看 | 我和黑色丝袜班主任 | 日本加勒比一区 | 国产免费精彩视频 | 国产成人亚洲综合a∨婷婷 国产成人亚洲精品乱码在线观看 | 国产视频播放 | 久久99国产精品二区不卡 | 欧美精品国产一区二区三区 | 国内自拍视频在线观看 | 国产香蕉久久 | 国产精品久久久久无毒 | 毛片大全免费看 | 久青草国产在视频在线观看 | 香蕉久久一区二区不卡无毒影院 | 国产精品最新 | 亚洲 欧美 国产 综合久久 | 深夜福利影院 | 草久社区| 日本色女| 农村妇女野外性生话免费视频 | 15一16japanese破 | 日韩毛片免费在线观看 | xxxxyoujizz护士 | 日韩欧美三级视频 | fistingvideos头交尿眼 | 国产成人精品午夜视频' | 日本黄大片影院一区二区 | 国内精品中文字幕 | 国产高清路线一路线二2022 | 日韩色综合| 热99在线视频 | 全色黄大色黄大片爽一次 | 国产精品毛片va一区二区三区 | 男人天堂网页 | 桃色导航 | 欧美日韩国产一区二区三区在线观看 |