說區(qū)塊鏈技術(shù)很吸引人,這是一種輕描淡寫的說法。數(shù)以百計的區(qū)塊鏈項目已經(jīng)被部署,還有數(shù)百個項目將在未來幾個月推出。隨著公司開發(fā)更先進(jìn)的區(qū)塊鏈基礎(chǔ)設(shè)施和應(yīng)用程序,圍繞區(qū)塊鏈技術(shù)展開的未來將變得更加確定。
在區(qū)塊鏈平臺開發(fā)中使用的一些最著名的編程語言是面向?qū)ο蟮恼Z言。到目前為止,像C++、Python和Ruby這樣的語言已經(jīng)主導(dǎo)了區(qū)塊鏈的發(fā)展場景。
如果最近的發(fā)展有什么可說的,那么非函數(shù)式編程語言莫屬了。他們提供區(qū)塊鏈技術(shù)的獨特功能,幫助展示其重要的比較優(yōu)勢。
那么,目前正在使用哪些函數(shù)式編程語言來開發(fā)開放區(qū)塊鏈協(xié)議呢?這里有幾個例子。
函數(shù)式編程語言
·OCaml
OCaml是一種函數(shù)式編程語言,它經(jīng)受住了時間的考驗。它有一個靜態(tài)類型系統(tǒng),它有助于消除運行時錯誤。與用corJava編寫的程序相比,用OCaml編寫的程序通常會更快地啟動和運行,并且消耗更少的內(nèi)存。
OCaml的其他特性還包括一流的詞法閉包、參數(shù)多態(tài)性、異常處理、尾遞歸和模式匹配,以及支持鏈接到C原語的外部函數(shù)接口。還有用于自動內(nèi)存管理的垃圾收集器特性。
·Haskell
Haskell是一種基于lambda演算的純函數(shù)編程語言。它具有用戶友好的語法、廣泛的物理庫集合和用于支持教育的奇妙資源。這些對于開發(fā)人員的參考資料起著重要的作用。
Haskell還具有頂級的工具、聲明式的風(fēng)格和靜態(tài)的強類型。在構(gòu)建高性能應(yīng)用程序時,這些特性使Haskell成為一個很好的選擇。
·Erlang
Erlang是一種函數(shù)式編程語言,用于構(gòu)建在計算機網(wǎng)絡(luò)上分布的強大的程序系統(tǒng)。它已經(jīng)在電信行業(yè)使用了30多年,目前90%的互聯(lián)網(wǎng)流量都是通過erlang-受控節(jié)點進(jìn)行的。作為一種函數(shù)式語言,它更側(cè)重于對表達(dá)式的評估。表達(dá)式使用函數(shù)來獲取基本值。
Erlang在任何其他編程語言之前就開始支持多線程。它提供垃圾收集,使用虛擬機,并具有模式匹配,這允許進(jìn)行緊湊和清晰的程序。Erlang為其他編程語言(如C、C++和Rust)提供了接口。
Erlang被認(rèn)為是一種高級語言,特別是在開發(fā)需要的后端系統(tǒng)時。
·大量的并發(fā)活動
·實時響應(yīng)
·不間斷操作和容錯
現(xiàn)在您已經(jīng)了解了函數(shù)式編程語言的一兩個例子,讓我們來看看是什么使它們特別適合于區(qū)塊鏈。
函數(shù)式編程語言的優(yōu)點
·不變性
一般來說,函數(shù)式編程語言沒有可變的變量;一旦你設(shè)置了一個值,它就不能被改變。這使得代碼行為更容易預(yù)測,并減少了系統(tǒng)錯誤的數(shù)量,提高了系統(tǒng)的穩(wěn)定性。
·容錯
容錯是系統(tǒng)繼續(xù)運行的地方,即使發(fā)生了故障。一些函數(shù)式編程語言,比如Erlang,默認(rèn)特性是容錯。
·易于并行化,高度分布
函數(shù)式編程語言使您能夠創(chuàng)建高度并行且高度分布的系統(tǒng)。內(nèi)置的迭代功能,如map和reduce,在區(qū)塊鏈開發(fā)中很有用。
雖然有更多的優(yōu)勢讓我們深入研究更有趣的東西。但您聽說過任何包含函數(shù)式編程的區(qū)塊鏈嗎?繼續(xù)閱讀…
使用函數(shù)式編程的區(qū)塊鏈協(xié)議
·Tezos
Tezos是一個區(qū)塊鏈項目,旨在提供“世界上第一個”自我修正的“加密貨幣”。它是一個自治的、分散的區(qū)塊鏈平臺,它使用區(qū)塊鏈治理來幫助它隨著時間的推移升級它的協(xié)議。在另一種授權(quán)的(DPoS)方法中,即與所謂的“流動性證明”方法達(dá)成了共識。
Tezos是在OCaml中實現(xiàn)的,它是一種函數(shù)式編程語言,提供高速度、明確的語法和語義,以及一個使Tezos成為證明正確性的良好候選的生態(tài)系統(tǒng)。正式驗證是開發(fā)人員能夠在數(shù)學(xué)上證明他們的智能合約代碼的準(zhǔn)確性的時候。
·Cardano(卡爾達(dá)諾)
Cardano是一個分散的、基于區(qū)塊鏈的開源平臺,它使用的是一種叫做Ouroboros的數(shù)學(xué)計算方法。Ouroboros可以通過由持票人投票產(chǎn)生共識。
Cardano區(qū)塊鏈?zhǔn)怯肏askell編寫的,它使用的是一種純函數(shù)式編程語言,使用強大的靜態(tài)類型和正式的規(guī)范,來定義它的智能合約。Plutus的語法相當(dāng)類似于Haskell,但與Haskell不同的是,該語言受到了熱切的評價。
·?ternity
“?ternity”是一個基于區(qū)塊鏈的平臺,它擁有智能合約和分散的應(yīng)用程序。和Tezos和Cardano一樣,“?ternity”是用Erlang編寫的。
Sophia是ML家族的一種編程語言。它沒有一個任意的可變狀態(tài),但是對于每個契約實例,有一個有限的狀態(tài)形式。它是一種健壯的語言,能夠指定并自動證明智能合約的屬性,因此它非常適合于高價值、系統(tǒng)關(guān)鍵的智能合約。
除了Erlang之外,核心協(xié)議中還包含了許多其他的技術(shù)特性,這些特性使其脫穎而出:
·狀態(tài)通道——該技術(shù)用于顯著提高事務(wù)的可伸縮性和智能合約,方法是將它們從較慢的主鏈(非鏈)轉(zhuǎn)移到其他地方。除了可伸縮性之外,對狀態(tài)通道的額外好處是增加了隱私,因為參與通道的各方之間的所有事務(wù)或合同都是私有的。此外,由于用戶之間的所有交互都是私有的,所以可以并行執(zhí)行智能合同和事務(wù)。
·Bitcoin-NG——為了提高移動分散應(yīng)用程序的可用性,還必須增加主鏈的事務(wù)速度。這是通過實現(xiàn)Bitcoin-NG實現(xiàn)的,這是一種下一代的共識協(xié)議,它支持更高的交易速度,同時保持系統(tǒng)的分散。
·命名系統(tǒng)——一個集成的命名系統(tǒng)也是一種統(tǒng)一的一部分。任何地址、智能合約或oracle都可以有一個人類可讀的名字,而不是一串?dāng)?shù)字和字母,就像大多數(shù)其他區(qū)塊鏈平臺一樣。這改善了用戶友好性,并幫助了智能合約開發(fā)者。
·IntegratedOracles——任何一個AE用戶都可以成為或使用一個oracle,在這個區(qū)塊鏈上有一種特殊的交易。Oracles報告了真實世界的事件,為智能合約提供了觸發(fā)器。這提高了智能合約的效用,并實現(xiàn)了它們的全部破壞性潛力。
·在鏈上的治理——實現(xiàn)了一種股權(quán)的變更,允許AE用戶正式地表達(dá)他們對任何主題的意見。任何AE用戶都可以用他們的AE余額簽署一個交易來提出問題或回答問題。?ternity治理體系類似于在區(qū)塊鏈中實現(xiàn)的一種流動性民主形式。投票結(jié)果向開發(fā)人員表明,社區(qū)對各種主題的看法是什么,包括基本的系統(tǒng)變量,如塊大小、塊獎勵或塊時間。投票結(jié)果不具約束力,但形式上具有象征性意義。
·工作證明的挖掘——與許多新的區(qū)塊鏈平臺不同,它采用了有爭議的治理機制,并建立了有爭議的共識構(gòu)建機制,而這種機制依賴于經(jīng)過驗證的工作量證明方法。
如果您對terof背后的團(tuán)隊感到好奇——你會知道這個項目得到了Erlang和區(qū)塊鏈社區(qū)中一些最有經(jīng)驗的開發(fā)人員的支持。RobertVirding,Erlang的聯(lián)合創(chuàng)建者,是開源的Erlang社區(qū)中最多產(chǎn)、最著名的成員之一,SaschaHanse,世界級的區(qū)塊鏈開發(fā)者,都是這個團(tuán)隊的一部分。在這場運動的最前線是創(chuàng)始人YanislavMalahov,,他被稱為以太坊的教父,因為他一開始就參與了這個項目。
結(jié)論
函數(shù)式編程語言正在進(jìn)入?yún)^(qū)塊鏈領(lǐng)域。它們的特性可以使它們特別適合于分布式賬本協(xié)議和智能合約的開發(fā)。在區(qū)塊鏈空間中,一些技術(shù)最先進(jìn)的項目轉(zhuǎn)向了可伸縮性、穩(wěn)定性和容錯能力的函數(shù)式編程。那些關(guān)注區(qū)塊鏈技術(shù)的開發(fā)人員應(yīng)該考慮探索函數(shù)式編程。很有可能的是,它是最實用智能合約平臺的基礎(chǔ)。