為什么說Erlang是構(gòu)建區(qū)塊鏈的最佳編程語言
每個區(qū)塊鏈在其底層都混合了不同的機制來進行工作。不管使用的是什么機制通常來說都沒有對錯之分。即使是“分叉”(現(xiàn)有區(qū)塊鏈的復(fù)本),在開發(fā)人員追求處理分布式系統(tǒng)的規(guī)模、速度和其他方面的更好方法時,在某些方面也會有所不同。
區(qū)塊鏈的核心是工程師選擇的編程語言。比特幣是用c++寫的;以太坊是用 Go, C++, 寫的,現(xiàn)在是 Rust。要在以太坊上建立智能合約,必須有堅實的基礎(chǔ)。大多數(shù)人都聽說過這些語言;即使是業(yè)余愛好者也會在日常閱讀中遇到這樣或那樣的情況。
然而,有一種語言已經(jīng)進入了人們的視野。Erlang雖然不是一個家喻戶曉的名字,但實際上是33年前創(chuàng)建的。事實上,它是我們今天使用的互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的一個活躍部分。盡管Erlang不如其他更常見的編程語言流行,但Tobias Lindahl斷言Erlang是構(gòu)建區(qū)塊鏈的完美編程語言和學(xué)科基礎(chǔ)。
Lindahl是利用Erlang的20年老手,擁有工程物理科學(xué)碩士學(xué)位,他花了幾年時間在虛擬機(VM)上進行研究和工作。
從頭開始:設(shè)計一個更好的區(qū)塊鏈
根據(jù)Lindahl的說法,Erlang和區(qū)塊鏈有如此多的共同點,只有在從頭開始重新構(gòu)思時,才會將其用于核心區(qū)塊鏈協(xié)議。
Lindahl解釋說:“既然區(qū)塊鏈如此嚴重地依賴于通信,那么把它放在Erlang中本來是很自然的事情。”該語言是為在電信中構(gòu)建分布式系統(tǒng)而構(gòu)建的。因此,在Erlang中實現(xiàn)節(jié)點之間的通信非常容易。”
他補充說,除了為可伸縮的全球節(jié)點網(wǎng)絡(luò)開發(fā),Erlang中程序員思考問題的方式在處理區(qū)塊鏈中的問題時給他們帶來了顯著的優(yōu)勢。
Erlang語言的不變性類似于區(qū)塊鏈的不變性。有些東西一旦進入鏈條,就永遠不會改變。這與您考慮Erlang問題的方式非常相似。
為什么Erlang非常適合構(gòu)建區(qū)塊鏈
在競爭激烈的區(qū)塊鏈領(lǐng)域,很容易聲稱一種解決方案比另一種更好,這種說法太常見了。為了支持他的觀點,Lindahl解釋了為什么他認為Erlang是構(gòu)建區(qū)塊鏈的最佳編程語言。
“有了Erlang,數(shù)據(jù)就不會變,所以不會有破壞性的更新。它使得對程序進行推理變得更容易,甚至可以證明一些關(guān)于程序的東西。它也使測試程序變得更容易。他補充說,Erlang不僅能夠快速分發(fā)大量的交易數(shù)據(jù),還允許多個進程同時運行而不會相互沖突。
“當一個進程處理某些東西時,它不需要擔(dān)心任何其他進程進入并改變其數(shù)據(jù)狀態(tài)。對我來說,這是主要的好處。當然還有并發(fā)性這一優(yōu)勢。你可以讓數(shù)千個進程同時運行,而不會相互影響。”
因此, Lindahl和開發(fā)團隊?ternity能夠無縫部署重要功能。升級的第一個協(xié)議(硬分叉)證明了Tobias的說法——它是在沒有任何問題的情況下執(zhí)行的。
“我們使用噪聲協(xié)議在節(jié)點之間進行通信。很容易設(shè)置到其他節(jié)點的獨立節(jié)點連接,而不會相互干擾。這是erlang的另一個內(nèi)置特性——無需處理信號量或程序的關(guān)鍵部分,就可以輕松管理單獨的連接,”他說。
用Erlang實現(xiàn)類似于噪音的協(xié)議要簡單得多。處理不同節(jié)點之間的連接很容易,因為關(guān)注點是分離的。您可以只分配一個Erlang進程來處理一個到另一個節(jié)點的連接,這可以一直進行下去。你知道沒有其他過程會干擾這個。所以你不用擔(dān)心其他的連接。”)
他補充說,Erlang支持一個非常有彈性的系統(tǒng),可以根據(jù)需要伸縮。
Lindahl解釋說:“如果一個連接死亡,另一個進程會自動接手。”Erlang有很多內(nèi)置組件專門用于處理錯誤恢復(fù)和容錯。因此,很容易運行許多Erlang進程。您可以或多或少地?zé)o限伸縮,或者更準確地說,您可以通過Erlang伸縮到您需要的任何位置。并且你不還需要擔(dān)心規(guī)模,這是區(qū)塊鏈行業(yè)目前面臨的最大問題之一?!?/p>
為什么其他人不使用Erlang來構(gòu)建區(qū)塊鏈?
Lindahl的觀點非常有說服力,這就引出了一個問題:為什么區(qū)塊鏈技術(shù)從一開始就不是建立在Erlang之上的,為什么許多著名的區(qū)塊鏈平臺沒有在自己的解決方案中包含Erlang。“Erlang社區(qū)沒有那么大。使用Erlang的人并不多?!?/p>
“我不認為從一開始就沒有使用它的根本原因。顯然,Erlang并不是最適合所有情況的。也許工作量證明(PoW)才是問題所在。您不會在Erlang中實現(xiàn)它?!?/p>
區(qū)塊鏈:高級還是低級?
最終,Lindahl說,高級編程和低級編程之間的區(qū)別決定了如何構(gòu)建區(qū)塊鏈的復(fù)雜性,這將影響到您可以擴展平臺可能性的程度。在區(qū)塊鏈行業(yè),這是一個游戲規(guī)則的改變:它可以意味著一個平臺在其他網(wǎng)絡(luò)上的全球規(guī)模的成功。
Lindahl補充說:“我認為,由于Erlang的高級特性,您思考問題的方式是抽象的。你抽象了,是因為你有高層次的背景”。在低級程序設(shè)計中,程序員為每個操作提供指令。在高級編程中,程序員給出一個目標,而計算機知道實現(xiàn)該目標所需的所有單獨操作。
對于那些有興趣學(xué)習(xí)更多的人, Lindahl建議查閱?ternity 的Documentation中心。他們的Github存儲庫也是一個很好的起點。除此之外,一個由社區(qū)支持的名為Dacade團隊還為?ternity的發(fā)展創(chuàng)建了一個教程(成功的完成者從中可以獲得100美元的AE代幣)。對于那些非常想?yún)⑴c其中的人,他們有一個即將召開的會議,ternity Universe,開發(fā)者和企業(yè)家可以直接從他們的開發(fā)者和創(chuàng)始人那里得到問題的答案。