日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我们为什么用GO语言来做区块链?

發(fā)布時(shí)間:2024/3/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我们为什么用GO语言来做区块链? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


作者:思想的葦草

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

我們稍微對(duì)比較有名的項(xiàng)目采用的編程語言做個(gè)統(tǒng)計(jì),如下圖:

老一代的公鏈,比如Bitcoin,Litcoin一般使用C/C++較多(我們看看那個(gè)時(shí)間,當(dāng)時(shí)Go還沒起來呢),新一代的公鏈比如以太坊,聯(lián)盟鏈翹楚超級(jí)賬本,開始較多使用Go語言,當(dāng)然我們看到Rust的發(fā)展勢(shì)頭也很猛,近兩年的很多公鏈比如波卡,Grin都開始采用Rust語言開發(fā)了。

Go語言的優(yōu)勢(shì)

部署簡(jiǎn)單

Go 編譯生成的是一個(gè)靜態(tài)可執(zhí)行文件,除了 glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標(biāo)機(jī)器上只需要一個(gè)基礎(chǔ)的系統(tǒng)和必要的管理、監(jiān)控工具,完全不需要操心應(yīng)用所需的各種包、庫(kù)的依賴關(guān)系,大大減輕了維護(hù)的負(fù)擔(dān)。可直接編譯成機(jī)器碼,不依賴其他庫(kù),glibc的版本有一定要求,部署就是扔一個(gè)文件上去就完成了。

性能優(yōu)秀

雖然不如 C 和 Java,但通常比原生 Python 應(yīng)用還是高一個(gè)數(shù)量級(jí)的,適合編寫一些瓶頸業(yè)務(wù)。內(nèi)存占用也非常省。

并發(fā)性&通道

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

良好的語言設(shè)計(jì)

Go 非常簡(jiǎn)單,且易于學(xué)習(xí)。從學(xué)術(shù)的角度講 Go 語言其實(shí)非常平庸,不支持許多高級(jí)的語言特性;但從工程的角度講,Go 的設(shè)計(jì)是非常優(yōu)秀的:規(guī)范足夠簡(jiǎn)單靈活。正是由于 Go 的簡(jiǎn)單性,任何的 Python、Elixir、C++、Scala 或者 Java 開發(fā)者皆可在一月內(nèi)組建成一個(gè)高效的 Go 團(tuán)隊(duì)。

標(biāo)準(zhǔn)庫(kù)&工具

Go目前已經(jīng)內(nèi)置了大量的庫(kù),特別是網(wǎng)絡(luò)庫(kù)非常強(qiáng)大。更重要的是 Go 自帶完善的工具鏈,大大提高了團(tuán)隊(duì)協(xié)作的一致性。比如 gofmt 自動(dòng)排版 Go 代碼,很大程度上杜絕了不同人寫的代碼排版風(fēng)格不一致的問題。把編輯器配置成在編輯存檔的時(shí)候自動(dòng)運(yùn)行 gofmt,這樣在編寫代碼的時(shí)候可以隨意擺放位置,存檔的時(shí)候自動(dòng)變成正確排版的代碼。此外還有 gofix, govet 等非常有用的工具。

團(tuán)隊(duì)牛逼

Go語言后面的支持者是Google,語言足夠在各種場(chǎng)景下得到檢驗(yàn),同時(shí)創(chuàng)始人還是C語言之父,對(duì)后續(xù)的發(fā)展和創(chuàng)新可期。

Go成功的項(xiàng)目

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

nsq:bitly開源的消息隊(duì)列系統(tǒng),性能非常高,目前他們每天處理數(shù)十億條的消息

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

skynet:分布式調(diào)度框架 Doozer:分布式同步工具,類似ZooKeeper

Heka:mazila開源的日志處理系統(tǒng)

cbfs:couchbase開源的分布式文件系統(tǒng)

tsuru:開源的PAAS平臺(tái),和SAE實(shí)現(xiàn)的功能一模一樣

groupcache:memcahe作者寫的用于Google下載系統(tǒng)的緩存系統(tǒng)

god:類似redis的緩存系統(tǒng),但是支持分布式和擴(kuò)展性

gor:網(wǎng)絡(luò)流量抓包和重放工具

生態(tài)卡位和隱性標(biāo)準(zhǔn)

除了打鐵還需自身硬之外,還有些機(jī)遇和運(yùn)勢(shì),讓區(qū)塊鏈選擇的了Go語言。我們來看區(qū)塊鏈2.0以來最成功的公鏈和聯(lián)盟鏈代表,以太坊和超級(jí)賬本Fabric,無一例外都選擇使用Go作為開發(fā)語言(雖然以太坊其實(shí)也有其他語言的客戶端版本,但進(jìn)入到Homestead階段以后,Go客戶端占據(jù)了主導(dǎo)地位),這兩大超級(jí)區(qū)塊鏈的影響力可不是一般項(xiàng)目可以比擬的,不僅在生態(tài)中占據(jù)了大的坑位,事實(shí)上還隱性的制定了區(qū)塊鏈的標(biāo)準(zhǔn),不論是公鏈中的智能合約,還是聯(lián)盟鏈的技術(shù),都繞不開以太坊和Fabric,那么對(duì)于一家想要做區(qū)塊鏈技術(shù)選型的公司來說,最快捷的實(shí)現(xiàn)是什么?

自然是直接照搬這兩個(gè)項(xiàng)目的創(chuàng)新,再捷徑一點(diǎn)就是直接拿開源代碼改,那么自然Go語言就成為后來者的首選,換種語言重新實(shí)現(xiàn)一遍難度也不小,而且如果選擇一些創(chuàng)新但不是非常成熟的語言還會(huì)缺失一些特定庫(kù)的支持從而導(dǎo)致項(xiàng)目無法開展。

很多人對(duì)以太坊的影響力毋庸置疑,但實(shí)際上Fabric在企業(yè)區(qū)塊鏈部署上的影響力更不容小覷:

圖表來源《2019年全球企業(yè)區(qū)塊鏈基準(zhǔn)研究報(bào)告》

Hyperledger Fabric是已部署的企業(yè)區(qū)塊鏈網(wǎng)絡(luò)中使用最多的協(xié)議框架,超級(jí)賬本Hyperledger(其中Fabric作為旗艦協(xié)議)是集成商和軟件開發(fā)平臺(tái)最常支持的協(xié)議框架,比例達(dá)到了53%。而在所有的區(qū)塊鏈技術(shù)書籍里面,有關(guān)超級(jí)賬本的書籍是賣的最為火爆這個(gè)事實(shí)也是側(cè)面印證了超級(jí)賬本Hyperledger的影響力。

比原鏈在Go語言中的實(shí)踐

我們?cè)谶x型編程語言的過程中,考量了C,C++, Java,但C/C++大項(xiàng)目維護(hù)難度大,而Java又略顯笨重,此時(shí)Go語言已經(jīng)在區(qū)塊鏈項(xiàng)目上大放異彩,也逐漸形成技術(shù)和人才的一個(gè)頭部效應(yīng),那么順應(yīng)潮流進(jìn)行技術(shù)選型自然也會(huì)減少初始比原鏈項(xiàng)目遇到的阻力,當(dāng)然在逐漸開發(fā)過程中,我們也感受到了選用Go語言帶來的便利和優(yōu)勢(shì)。

Go在區(qū)塊鏈上的一個(gè)Case

從技術(shù)上來說,區(qū)塊鏈節(jié)點(diǎn)是需要多模塊異步協(xié)同工作的,所以Go語言并發(fā)性和通道就顯得非常有優(yōu)勢(shì),我們看下面交易驗(yàn)證的例子:

func ValidateTxs(txs []*bc.Tx, block *bc.Block) []*ValidateTxResult {txSize := len(txs)//init the goroutine validate workervar wg sync.WaitGroupworkCh := 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 worksfor i, tx := range txs {workCh <- &validateTxWork{i: i, tx: tx, block: block}}//collect validate resultsresults := make([]*ValidateTxResult, txSize)for i := 0; i < txSize; i++ {result := <-resultChresults[result.i] = result}close(closeCh)wg.Wait()close(workCh)close(resultCh)return results }

我們使用Routine+Ch+WaitGroup在30行代碼之內(nèi),就可以構(gòu)建一個(gè)并發(fā)的驗(yàn)證交易的功能,在高配置的服務(wù)器的情況下,可以跑出10萬以上的TPS。

輕松變成Go語言大師

從人才上來說,比原鏈核心開發(fā)團(tuán)隊(duì)的部分成員之前也沒有做過Go語言開發(fā),但都能夠很快上手,基本在半個(gè)月內(nèi)能夠參與核心代碼的開發(fā)和維護(hù)了(對(duì)于從C/C++/Java有經(jīng)驗(yàn)的開發(fā)者尤其輕松),這就是語言簡(jiǎn)單對(duì)團(tuán)隊(duì)構(gòu)建帶來的好處。

統(tǒng)一的協(xié)作

從協(xié)作上來說,通過gofmt 自動(dòng)排版 Go 代碼,能夠讓核心團(tuán)隊(duì)成員甚至社區(qū)開發(fā)者提交的代碼風(fēng)格的差異性降到最小,提升項(xiàng)目的整體質(zhì)量和可維護(hù)性。

小結(jié)

Go語言本身的特質(zhì)和優(yōu)勢(shì)為其做好了鋪墊,而以太坊和超級(jí)賬本兩個(gè)超級(jí)區(qū)塊鏈項(xiàng)目的加持也讓Go語言成為了很多區(qū)塊鏈項(xiàng)目的首選,比原鏈選用Go語言也充分體會(huì)到了其開發(fā)區(qū)塊鏈底層的優(yōu)勢(shì),但是無需落入語言之爭(zhēng)的陷阱,講求實(shí)用主義才是做工程應(yīng)有之義,比原鏈核心項(xiàng)目是用Go語言完成,但是周邊的很多子項(xiàng)目也有用Java,Python或者JavaScript實(shí)現(xiàn),畢竟生態(tài)的多樣性才是一個(gè)項(xiàng)目長(zhǎng)久的根本。

推薦閱讀

或是未來10年最強(qiáng)風(fēng)口:產(chǎn)業(yè)區(qū)塊鏈時(shí)代正式到來

區(qū)塊鏈落地應(yīng)用盤點(diǎn):五大領(lǐng)域應(yīng)用告訴你“區(qū)塊鏈能做什么”

區(qū)塊鏈將引爆跨學(xué)科研究,比特幣只是第一顆“核彈”

5分鐘看懂區(qū)塊鏈如何提升中國(guó)企業(yè)活力與效能!

一文讀懂區(qū)塊鏈項(xiàng)目的法律問題,通證激勵(lì)、鏈改可行嗎?

比特幣技術(shù)堆棧的創(chuàng)新:今非昔比

區(qū)塊鏈入門 | 什么是DAO?

更多關(guān)鍵詞:礦工?|?51%攻擊

燃點(diǎn)?|?孟巖?|?白碩?|?肖風(fēng)

長(zhǎng)鋏?|?李國(guó)權(quán)?|?螞蟻金服?|?來學(xué)嘉

總結(jié)

以上是生活随笔為你收集整理的我们为什么用GO语言来做区块链?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人在线电影网站 | 综合久久中文字幕 | 日韩经典第一页 | 超碰这里只有精品 | 动漫美女舌吻 | 亚洲一区二区三区激情 | 激情午夜视频 | 国产熟妇乱xxxxx大屁股网 | aaa人片在线| 国产免费av一区二区 | 91精品福利视频 | 色呦呦| 五月天激情啪啪 | 亚洲永久无码7777kkk | 国产精品一区二区三区免费在线观看 | 9l视频自拍九色9l视频 | 少妇高潮21p | 在线观看国产91 | 日韩一卡二卡在线 | 亚洲久草 | 亚洲免费视频播放 | 亚洲精品av中文字幕在线在线 | 99成人国产精品视频 | 久久精品国产网红主播 | 精品人妻人人做人人爽 | av丝袜在线| 色偷偷五月天 | 男女视频免费网站 | 亚洲精品国产一区二区 | 国产主播精品 | 国产乱人伦精品一区二区 | 日日操狠狠干 | www.欧美| 久久艹在线观看 | 秋霞av鲁丝片一区二区 | 台湾一级视频 | 亚洲品质自拍视频 | 美国少妇性做爰 | 欧美三级欧美一级 | 青青草97国产精品麻豆 | 欧美一区2区三区4区公司 | 在线观看理论片 | 草草色 | 男人插入女人阴道视频 | 91性视频| 国产美女又黄又爽又色视频免费 | 日韩成人影视 | 成人一二三四区 | 顶级黑人搡bbw搡bbbb搡 | 西西4444www大胆无视频 | 蜜芽在线视频 | a级大片在线观看 | 亚洲av成人无码一区二区三区在线观看 | 欧美资源在线观看 | 免费国产成人 | 成人视屏在线 | 在线看麻豆 | 美女少妇毛片 | 国产精品8888 | 日韩成人精品 | 亚洲色成人www永久在线观看 | 日日骑夜夜操 | 日韩欧美激情在线 | 免费的理伦片在线播放 | 人操人操| 懂色av一区二区三区免费 | 欧美图片一区二区三区 | 国产成人精品一区二区三区视频 | 亚洲人一区| 污片网站在线观看 | 男女视频在线免费观看 | 琪琪色av | 日日夜夜狠狠 | 中文字幕亚洲一区 | 国产内射一区二区 | 波多野结衣一本一道 | 亚洲免费av电影 | 亚洲自拍网站 | 亚洲女人天堂色在线7777 | 琪琪色在线观看 | 成年人黄色 | 91精品婷婷国产综合久久竹菊 | 女生和男生一起插插插 | 国产精品久久久久久久一区探花 | 天天拍天天射 | 蜜桃又黄又粗又爽av免 | 韩国伦理片在线播放 | 亚洲国内在线 | 亚洲熟女综合一区二区三区 | 黄色高清视频 | 中文字幕无码精品亚洲35 | 黄色网址www | 秋霞免费av | 白石茉莉奈中文字幕在 | 黄色片小视频 | 物业福利视频 | 中文字幕免费在线观看 | 91福利网址 | 免费在线观看av片 |