比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Coinw > Info

我們為什么用GO語言來做區塊鏈?_ULT

Author:

Time:1900/1/1 0:00:00

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

我們稍微對比較有名的項目采用的編程語言做個統計,如下圖:

老一代的公鏈,比如Bitcoin,Litcoin一般使用C/C++較多,新一代的公鏈比如以太坊,聯盟鏈翹楚超級賬本,開始較多使用Go語言,當然我們看到Rust的發展勢頭也很猛,近兩年的很多公鏈比如波卡,Grin都開始采用Rust語言開發了。

Go語言的優勢

部署簡單

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

Coinbase首席法務官:我們已經對SEC的意向聲明做出了回應:金色財經報道,Coinbase首席法務官paulgrewal.eth發推表示,我們已經對SEC的意向聲明做出了回應,該聲明旨在打擊Coinbase根植于重大問題原則、濫用自由裁量權、公平禁止反言、不干凈的手段和懈怠的辯護。我們期待明天早上在法庭上發言。[2023/7/13 10:52:07]

性能優秀

雖然不如C和Java,但通常比原生Python應用還是高一個數量級的,適合編寫一些瓶頸業務。內存占用也非常省。

并發性&通道

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

良好的語言設計

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

美聯儲梅斯特:我們不永遠排除加息75個基點的可能性:5月10日消息,美聯儲梅斯特:我們不永遠排除加息75個基點的可能性。在下半年,如果通脹不緩解,我們可能不得不加快速度。我們現在的步伐似乎是正確的,但我不想排除任何下半年加息的可能性。(金十)[2022/5/11 3:05:03]

標準庫&工具

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

團隊牛逼

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

Go成功的項目

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

Paxful首席執行官:DeFi可能是一個泡沫,但它使我們更強大:Paxful首席執行官Ray Youssef發文表示,目前我們只是處在日益膨脹的DeFi泡沫的開端,而且已經有比比特幣(BTC)更值錢的代幣了。DeFi每天都有新的優秀項目出現,有一天可能會比互聯網更大。他在文章中稱,有17億人無法使用傳統金融服務。如果比特幣是第一層,那么DeFi是第二層,而P2P網絡提供的“人員”層是第三層。Ray Youssef在文中還說,請做好準備,當泡沫破裂時,下一輪比特幣牛市將開始。當世界陷入混亂時,要記住“加密貨幣是好事”,因為加密貨幣是防止金融世界崩潰的對沖工具。比特幣和以太坊堅如磐石,因為它們現在作為真實的用例使用。他還提醒稱,DeFi代幣簡直是在玩火,你可能會被燒傷。比特幣將永遠是加密經濟的支柱,它將繼續增長。(Cointelegraph)[2020/10/11]

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

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

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

聲音 | BM:實質上我們并不擁有任何東西,所有的軟件使用都要得到權力者的許可:BM昨晚發推表示:是時候重新開始購買實體書籍了,在數字世界中,刻錄書籍太容易了。你們應該假設自己不擁有/控制手機上的任何東西。我們越來越處于所有軟件都要得到權力者“許可”的道路上。他還表示:今天發生的是YouTube審查加密內容,明天可能是亞馬遜審查書籍。在還沒禁止之前,趕緊獲取你想要的書籍吧. 隨后 BM 在推特發布其 2020 年推薦閱讀書單。[2019/12/28]

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

cbfs:couchbase開源的分布式文件系統

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

groupcache:memcahe作者寫的用于Google下載系統的緩存系統

god:類似redis的緩存系統,但是支持分布式和擴展性

gor:網絡流量抓包和重放工具

生態卡位和隱性標準

除了打鐵還需自身硬之外,還有些機遇和運勢,讓區塊鏈選擇的了Go語言。我們來看區塊鏈2.0以來最成功的公鏈和聯盟鏈代表,以太坊和超級賬本Fabric,無一例外都選擇使用Go作為開發語言,這兩大超級區塊鏈的影響力可不是一般項目可以比擬的,不僅在生態中占據了大的坑位,事實上還隱性的制定了區塊鏈的標準,不論是公鏈中的智能合約,還是聯盟鏈的技術,都繞不開以太坊和Fabric,那么對于一家想要做區塊鏈技術選型的公司來說,最快捷的實現是什么?自然是直接照搬這兩個項目的創新,再捷徑一點就是直接拿開源代碼改,那么自然Go語言就成為后來者的首選,換種語言重新實現一遍難度也不小,而且如果選擇一些創新但不是非常成熟的語言還會缺失一些特定庫的支持從而導致項目無法開展。

聲音 | 金雪軍:無幣區塊鏈可以讓我們扎扎實實做技術:據巴比特消息,今日IEEE區塊鏈杭州工作組成立儀式在杭州螞蟻Z空間正式舉辦。IEEE區塊鏈杭州工作組副主席單位、浙江省區塊鏈技術應用協會會長金雪軍在演講中表示,區塊鏈技術的應用可以實現信息的即時高效和真實性。螞蟻金服的區塊鏈跨境匯款就體現了即時高效性,而杭州互聯網法院的司法區塊鏈則體現了真實性。而這兩個例子也表明區塊鏈和加密貨幣是可以分離的,無幣區塊鏈可以讓我們回歸初心,扎扎實實做技術。 他表示,杭州致力于打造數字經濟第一城,伴隨IEEE區塊鏈杭州工作組的成立,未來,無論在區塊鏈還是數字金融領域,杭州都將成為全球重要的城市節點。[2018/12/21]

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

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

HyperledgerFabric是已部署的企業區塊鏈網絡中使用最多的協議框架,超級賬本Hyperledger是集成商和軟件開發平臺最常支持的協議框架,比例達到了53%。而在所有的區塊鏈技術書籍里面,有關超級賬本的書籍是賣的最為火爆這個事實也是側面印證了超級賬本Hyperledger的影響力。

比原鏈在Go語言中的實踐

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

Go在區塊鏈上的一個Case

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

funcValidateTxs(txs*bc.Tx,block*bc.Block)*ValidateTxResult{

txSize:=len(txs)

//initthegoroutinevalidateworker

varwgsync.WaitGroup

workCh:=make(chan*validateTxWork,txSize)

resultCh:=make(chan*ValidateTxResult,txSize)

closeCh:=make(chanstruct{})

fori:=0;i<=validateWorkerNum&&i<txSize;i++{

wg.Add(1)

govalidateTxWorker(workCh,resultCh,closeCh,&wg)

}

?

//senttheworks

fori,tx:=rangetxs{

workCh<-&validateTxWork{i:i,tx:tx,block:block}

}

?

//collectvalidateresults

results:=make(*ValidateTxResult,txSize)

fori:=0;i<txSize;i++{

result:=<-resultCh

results=result

}

?

close(closeCh)

wg.Wait()

close(workCh)

close(resultCh)

returnresults

}

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

輕松變成Go語言大師

從人才上來說,比原鏈核心開發團隊的部分成員之前也沒有做過Go語言開發,但都能夠很快上手,基本在半個月內能夠參與核心代碼的開發和維護了,這就是語言簡單對團隊構建帶來的好處。

統一的協作

從協作上來說,通過gofmt自動排版Go代碼,能夠讓核心團隊成員甚至社區開發者提交的代碼風格的差異性降到最小,提升項目的整體質量和可維護性。

小結

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

Tags:區塊鏈ULTRESDAT區塊鏈存證ETHVAULTUnFederalReservebigtourismdata

Coinw
直面量子計算威脅 數字貨幣在對抗中成長_比特幣

來源:科技日報 作者:陳曦 “這與‘矛’和‘盾’一樣,只要有盾,就一定有矛……”日前,華為公司創始人、首席執行官任正非在談及信息安全時如是說.

1900/1/1 0:00:00
比特幣價格與時間存在關系?一文讀懂比特幣價值的對數增長模型_EST

原文:《偽造比特幣價值的對數增長模型》 摘要 本文探討了時間與比特幣價格之間是否存在關系。針對最小二乘假設,對提出的雙對數模型進行了統計有效性檢驗,使用Engle-Granger方法進行協整,以.

1900/1/1 0:00:00
有圖有真相!中國公鏈元界DNA2019大事記_IGN

2019年全球區塊鏈行業經歷了新一輪的飛速發展。這一年,中國將區塊鏈上升為國家戰略,中國公鏈也登上了世界舞臺。元界DNA是在中國公鏈ETP安全基礎鏈上開發的一條并行的、錨定DNA通證的快鏈.

1900/1/1 0:00:00
區塊鏈+醫療研報:數據與溯源系最大痛點,區塊鏈技術或可節省每年1000億美元以上成本_okex

撰文:OKEx分析師秀秀編者注:原標題為《OKEx投研|區塊鏈賦能醫療產業報告》 前言 整體上,醫療產業可以分為醫療服務和醫藥商業兩大類,其行業痛點主要在于醫療服務方面的數據未能被充分利用.

1900/1/1 0:00:00
研究報告 | 國際匯兌區塊鏈應用調查_比特幣

Overview概述 自比特幣面世以來,市面上陸陸續續出現了許多替代加密貨幣和區塊鏈解決方案。區塊鏈這項技術已經經歷了重大的進化步驟,也為在未來幾年實現更全球化的互聯方案做出了鋪墊.

1900/1/1 0:00:00
“鏈”上實體經濟,Lava是如何做的?_LAVA

“制造信任的機器。”《經濟學人》雜志在2015年首次報道區塊鏈時,將其這般比喻。區塊鏈基于密碼學手段建立了一套完備的可追溯、不可纂改的去中心化分布式賬本,依靠獨有的共識機制和激勵措施,讓原本陌生.

1900/1/1 0:00:00
ads