目錄
Go語言的優勢
#部署簡單
效能優秀
並發性&通道
好的語言設計
標準函式庫&工具
團隊牛逼
Go成功的專案
生態卡位與隱性標準
比原鏈在Go語言中的實踐
Go在區塊鏈上的一個Case
統一的協作
小結
首頁 後端開發 Golang 為什麼用go語言寫區塊鏈

為什麼用go語言寫區塊鏈

Mar 04, 2021 pm 03:42 PM
go語言 區塊鏈

原因:1.Go語言具有部署簡單、效能優秀、並行執行效能好、良好語言設計、內建大量函式庫、團隊牛逼等優勢。 2.以太坊和超級帳本都選擇使用Go作為開發語言;這兩大超級區塊鏈的影響力很大,不僅在生態中佔據了大的坑位,事實上還隱性的製定了區塊鏈的標準。

為什麼用go語言寫區塊鏈

本教學操作環境:windows10系統、GO 1.18、thinkpad t480電腦。

在區塊鏈公鏈的開發圈裡,我們找到了一些流行的程式語言,有C 、Golang、Python和最近新起的Rust等等。

我們稍微對比較有名的專案所採用的程式語言做個統計,如下圖:

為什麼用go語言寫區塊鏈

#老一代的公鏈,例如Bitcoin,Litcoin一般使用C/C 較多(我們看看那個時間,當時Go還沒起來呢),新一代的公鏈比如以太坊,聯盟鏈翹楚超級賬本,開始較多使用Go語言,當然我們看到Rust的發展勢頭也很猛,近兩年的許多公鏈例如波卡,Grin都開始採用Rust語言開發了。

Go語言的優勢

#部署簡單

Go 編譯產生的是一個靜態可執行文件,除了glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種套件、庫的依賴關係,大大減輕了維護的負擔。可直接編譯成機器碼,不依賴其他函式庫,glibc的版本有一定要求,部署就是丟一個檔案上去就完成了。

效能優秀

雖然不如 C 和 Java,但通常比原生 Python 應用程式還是高一個數量級的,適合寫一些瓶頸業務。記憶體佔用也非常省。

並發性&通道

Goroutine 和channel 使得編寫高並發的服務端軟體變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單一 Go 應用也能有效的利用多個 CPU 核,並行執行的效能好。

好的語言設計

Go 非常簡單,而且很容易學習。從學術的角度講 Go 語言其實非常平庸,不支援許多高階的語言特性;但從工程的角度講,Go 的設計是非常優秀的:規範夠簡單、靈活。正是由於 Go 的簡單性,任何的 Python、Elixir、C 、Scala 或 Java 開發者皆可在一月內組建成一個高效的 Go 團隊。

標準函式庫&工具

Go目前已經內建了大量的函式庫,特別是網路庫非常強大。更重要的是 Go 自帶完善的工具鏈,大大提升了團隊協作的一致性。例如 gofmt 自動排版 Go 程式碼,很大程度上杜絕了不同人寫的程式碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動執行 gofmt,這樣在寫程式碼的時候可以隨意擺放位置,存檔的時候會自動變成正確排版的程式碼。另外還有 gofix, govet 等非常有用的工具。

團隊牛逼

Go語言後面的支持者是Google,語言足夠在各種場景下得到檢驗,同時創始人還是C語言之父,後續的發展和創新可期。

Go成功的專案

Go語言在雲端時代得到了比較廣泛的應用,特別是Docker和K8s這樣的殺手級產品的出現讓Go語言在工程界佔有一席之地除此之外Go語言還有非常多的成功運行中的軟體:

nsq:bitly開源的消息隊列系統,性能非常高,目前他們每天處理數十億條的訊息

packer:用來產生不同平台的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者

skynet:分散式調度框架Doozer:分散式同步工具,類似ZooKeeper

Heka:mazila開源的日誌處理系統

cbfs:couchbase開源的分散式檔案系統

tsuru:開源的PAAS平台,和SAE實現的功能一模一樣

groupcache:memcahe作者寫的谷歌下載系統的快取系統

god:類似redis的快取系統,但是支援分散式和擴充性

gor:網路流量抓包與重播工具

生態卡位與隱性標準

除了打鐵還需自身硬之外,還有些機會與運勢,讓區塊鏈選擇的了Go語言。我們來看區塊鏈2.0以來最成功的公鏈和聯盟鏈代表,以太坊和超級帳本Fabric,無一例外都選擇使用Go作為開發語言(雖然以太坊其實也有其他語言的客戶端版本,但進入到Homestead階段以後,Go客戶端佔據了主導地位),這兩大超級區塊鏈的影響力可不是一般項目可以比擬的,不僅在生態中佔據了大的坑位,事實上還隱性的製定了區塊鏈的標準,不論是公鏈中的智慧合約,還是聯盟鏈的技術,都繞不開以太坊和Fabric,那麼對於想要做區塊鏈技術選型的公司來說,最快捷的實現是什麼?

自然是直接複製這兩個專案的創新,再捷徑一點就是直接拿開源程式碼改,那麼自然Go語言就成為後來者的首選,換種語言重新實現一遍難度也不小,而且如果選擇一些創新但不是非常成熟的語言還會缺少一些特定庫的支援從而導致專案無法開展。

許多人對以太坊的影響力毋庸置疑,但實際上Fabric在企業區塊鏈部署上的影響力更不容小覷:

為什麼用go語言寫區塊鏈

圖表來源《2019年全球企業區塊鏈基準研究報告》

Hyperledger Fabric是已部署的企業區塊鏈網路中使用最多的協定框架,超級帳本Hyperledger(其中Fabric作為旗艦協定)是整合商和軟體開發平台最常支援的協定框架,比例達到了53%。而在所有的區塊鏈技術書籍裡面,有關超級帳本的書籍是賣的最為火爆這個事實也是側面印證了超級帳本Hyperledger的影響力。

比原鏈在Go語言中的實踐

#我們在選型程式語言的過程中,考慮了C,C , Java ,但C/C 大專案維護難度大,而Java又略顯笨重,此時Go語言已經在區塊鏈專案上大放異彩,也逐漸形成技術和人才的一個頭部效應,那麼順應潮流進行技術選型自然也會減少初始比原鏈專案所遇到的阻力,當然在逐漸開發過程中,我們也感受到了選用Go語言帶來的便利與優勢。

Go在區塊鏈上的一個Case

從技術上來說,區塊鏈節點是需要多模組非同步協同工作的,所以Go語言並發性和通道就顯得非常有優勢,我們看下面交易驗證的例子:

func ValidateTxs(txs []*bc.Tx, block *bc.Block) []*ValidateTxResult {
    txSize := len(txs)
    //init the goroutine validate worker
    var wg sync.WaitGroup
    workCh := make(chan *validateTxWork, txSize)
    resultCh := make(chan *ValidateTxResult, txSize)
    closeCh := make(chan struct{})
    for i := 0; i <= validateWorkerNum && i < txSize; i++ {
        wg.Add(1)
        go validateTxWorker(workCh, resultCh, closeCh, &wg)
    }

    //sent the works
    for i, tx := range txs {
        workCh <- &validateTxWork{i: i, tx: tx, block: block}
    }

    //collect validate results
    results := make([]*ValidateTxResult, txSize)
    for i := 0; i < txSize; i++ {
        result := <-resultCh
        results[result.i] = result
    }

    close(closeCh)
    wg.Wait()
    close(workCh)
    close(resultCh)
    return results
}
登入後複製

我們使用Routine Ch WaitGroup在30行程式碼之內,就可以建立一個並發的驗證交易的功能,在高配置的伺服器的情況下,可以跑出10萬以上的TPS。

輕鬆變成Go語言大師

從人才上來說,比原鏈核心開發團隊的部分成員之前也沒有做過Go語言開發,但都能夠很快上手,基本上在半個月內能夠參與核心程式碼的開發和維護了(對於從C/C /Java有經驗的開發者尤其輕鬆),這就是語言簡單對團隊建立的好處。

統一的協作

從協作上來說,透過gofmt 自動排版Go 程式碼,能夠讓核心團隊成員甚至社群開發者提交的程式碼風格的差異性降到最小,提升專案的整體品質和可維護性。

小結

Go語言本身的特質和優勢為其做好了鋪墊,而以太坊和超級帳本兩個超級區塊鏈專案的加持也讓Go語言成為了許多區塊鏈專案的首選,比原鏈選用Go語言也充分體會到了其開發區塊鏈底層的優勢,但是無需落入語言之爭的陷阱,講求實用主義才是做工程應有之義,比原鏈核心專案是用Go語言完成,但是周邊的很多子專案也有用Java,Python或JavaScript實現,畢竟生態的多樣性才是一個專案長久的根本。

推薦學習:Golang教學

以上是為什麼用go語言寫區塊鏈的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1243
24
數字貨幣app是啥軟件?全球數字貨幣十大app盤點 數字貨幣app是啥軟件?全球數字貨幣十大app盤點 Apr 30, 2025 pm 07:06 PM

隨著數字貨幣的普及和發展,越來越多的人開始關注和使用數字貨幣app。這些應用程序為用戶提供了便捷的管理和交易數字資產的方式。那麼,數字貨幣app到底是什麼軟件呢?讓我們深入了解,並盤點全球十大數字貨幣app。

量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 Apr 30, 2025 pm 07:24 PM

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

香港數字貨幣交易所app怎麼下載安裝註冊詳細步驟2025 香港數字貨幣交易所app怎麼下載安裝註冊詳細步驟2025 Apr 30, 2025 pm 07:18 PM

香港數字貨幣交易所app的下載安裝和註冊過程非常簡單,用戶可以通過本文提供的官方app下載鏈接,快速獲取並使用這款應用。本文將詳細介紹如何下載、安裝和註冊香港數字貨幣交易所app,確保每位用戶都能順利完成操作。

數字貨幣app是正規的嗎?全球正規合法虛擬幣交易app前十 數字貨幣app是正規的嗎?全球正規合法虛擬幣交易app前十 Apr 30, 2025 pm 07:09 PM

推薦的加密貨幣交易平台包括:1. Binance:全球最大交易量,支持1400 幣種,FCA、MAS認證。 2. OKX:技術實力強,支持400 幣種,香港證監會批准。 3. Coinbase:美國最大合規平台,適合新手,SEC和FinCEN監管。 4. Kraken:歐洲老牌,ISO 27001認證,持美國MSB及英國FCA牌照。 5. Gate.io:幣種最全(800 ),低交易費,獲多國牌照。 6. Huobi Global:老牌平台,提供多種服務,持日本FSA及香港TCSP牌照。 7. KuCoin

火幣數字貨幣交易app下載官網.正確地址.國內 火幣數字貨幣交易app下載官網.正確地址.國內 Apr 30, 2025 pm 07:21 PM

火幣數字貨幣交易app是全球領先的數字資產交易平台之一,受到廣大用戶的青睞。為了方便用戶快速、安全地下載和安裝火幣app,本文將為您提供詳細的下載和安裝教程。請注意,本文提供的是火幣官方app的下載鏈接,使用本文的下載鏈接即可安全下載,避免誤入山寨網站或下載到非官方版本。接下來,讓我們一步步地進行火幣app的下載和安裝。

uniswap 鏈上提幣 uniswap 鏈上提幣 Apr 30, 2025 pm 07:03 PM

Uniswap用戶可從流動性池提取代幣到錢包,確保資產安全和流動性,過程需支付gas費,受網絡擁堵影響。

香港數字貨幣交易所app如何下載 十大數字貨幣交易所APP盤點 香港數字貨幣交易所app如何下載 十大數字貨幣交易所APP盤點 Apr 30, 2025 pm 07:12 PM

下載香港數字貨幣交易所APP的方法包括:1. 選擇合規平台,如OSL、HashKey或Binance HK等;2. 通過官方渠道下載,iOS用戶在App Store下載,Android用戶通過Google Play或官網下載;3. 註冊並驗證身份,使用香港手機號或郵箱,上傳身份和地址證明;4. 設置安全措施,啟用雙重身份驗證並定期檢查賬戶活動。

數字貨幣交易app下載官網.正確地址.歐易 數字貨幣交易app下載官網.正確地址.歐易 Apr 30, 2025 pm 07:27 PM

在當今的數字經濟時代,數字貨幣交易已經成為許多投資者和交易者關注的焦點。歐易(OKX)作為全球領先的數字貨幣交易平台,提供了安全、便捷和高效的交易服務。為了讓用戶能夠更加方便地進行數字貨幣交易,歐易推出了其官方移動應用程序。本文將為您詳細介紹如何通過本文提供的官方app下載鏈接,快速下載並安裝歐易的數字貨幣交易app。

See all articles