在區塊鏈公鏈的開發圈子里,我們找到了一些流行的編程語言,有C++、Golang、Python和最近新起的Rust等等。
我們稍微對比較有名的項目采用的編程語言做個統計,如下圖:
老一代的公鏈,比如Bitcoin,Litcoin一般使用C/C++較多,新一代的公鏈比如以太坊,聯盟鏈翹楚超級賬本,開始較多使用Go語言,當然我們看到Rust的發展勢頭也很猛,近兩年的很多公鏈比如波卡,Grin都開始采用Rust語言開發了。
Go語言的優勢
部署簡單
Go編譯生成的是一個靜態可執行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了。
美國總統拜登:非農就業數據表明我們正在向穩定增長過渡:金色財經報道,美國總統拜登表示,非農就業數據表明我們正在向穩定增長過渡。我們在經濟上還有更多工作要做,但“我們正在取得進展”。就業增長速度放緩,但仍為經濟提供動力。[2022/10/8 12:49:07]
性能優秀
雖然不如C和Java,但通常比原生Python應用還是高一個數量級的,適合編寫一些瓶頸業務。內存占用也非常省。
并發性&通道
Goroutine和channel使得編寫高并發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個Go應用也能有效的利用多個CPU核,并行執行的性能好。
良好的語言設計
Go非常簡單,且易于學習。從學術的角度講Go語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設計是非常優秀的:規范足夠簡單靈活。正是由于Go的簡單性,任何的Python、Elixir、C++、Scala或者Java開發者皆可在一月內組建成一個高效的Go團隊。
標準庫&工具
幣安美國CEO:我們的目標是成為受監管的實體:6月9日消息,幣安美國CEO:美國兩黨關于加密貨幣的立法是很好的一步,我們的目標是成為受監管的實體,希望讓加密貨幣權益變得更易得。(金十)[2022/6/9 4:12:37]
Go目前已經內置了大量的庫,特別是網絡庫非常強大。更重要的是Go自帶完善的工具鏈,大大提高了團隊協作的一致性。比如gofmt自動排版Go代碼,很大程度上杜絕了不同人寫的代碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動運行gofmt,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有gofix,govet等非常有用的工具。
團隊牛逼
Go語言后面的支持者是Google,語言足夠在各種場景下得到檢驗,同時創始人還是C語言之父,對后續的發展和創新可期。
Go成功的項目
Go語言在云時代得到了比較廣泛的應用,特別是Docker和K8s這樣的殺手級產品的出現讓Go語言在工程界占有一席之地除此之外Go語言還有非常多的成功運行中的軟件:
nsq:bitly開源的消息隊列系統,性能非常高,目前他們每天處理數十億條的消息
WazirX CEO評論印度加密稅法:我們已經進入痛苦時期:3月26日消息,印度周五通過嚴苛的加密稅法,印度最大加密交易所之一WazirX的首席執行官兼創始人Nischal Shetty 在接受采訪時表示,“我們已經進入了痛苦時期。這幾乎就像不讓該行業發揮作用一樣,現在所有外國技術都將在印度占據主導地位,我們不希望這種情況發生在加密領域。”
Shetty對新稅法最大的反對意見是源頭代扣稅(TDS),只要印度人購買或出售加密貨幣,就會征收該稅款。他說,“1%的TDS將扼殺流動性,這意味著最終每個人的盈利能力都會下降。這是雙輸。”
不允許不同加密貨幣間相互抵消損益的舉措甚至比對加密利潤征收30%的資本利得稅還要糟糕。他指出,在某些情況下,由于新稅收的運作方式,印度投資者可能會損失比其投資金額更多的錢。Shetty透露,與政府的討論仍在進行中,正在等待與政府舉行行業會議。
據此前報道,印度議會周五通過了一項有爭議的稅收提案,一周后,印度將開始對加密貨幣交易征收30%的資本利得稅。除了資本利得稅,印度民眾在使用加密貨幣進行交易時,還必須支付1%的源頭代扣稅(TDS),以及不抵消損益和贈與稅。印度加密稅法將于4月1日生效。(CoinDesk)[2022/3/26 14:19:20]
packer:用來生成不同平臺的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者
朱幼平:我們不能“刻舟求劍”地全靠周期來預測市場,而要通過邏輯去判斷趨勢:3月20日,New-DeFi自治共識論壇在海口落幕,并一睹了EGG Network聚合型永動金融公鏈風采。本次論壇中,中國區塊鏈經濟學者鏈改第一人、中國通信工業協會區塊鏈專委會副主任朱幼平教授做了“區塊鏈5.0與鏈改”的主題演講。他指出區塊鏈技術最重要的價值是可以突破制約數字發展的數字資產確權和雙花等問題,構建形成適應數字經濟發展的新型生產關系。雖然說加密市場有著驚人相似的“周期”,但每輪牛熊背后的邏輯都是不一樣的。我們不能“刻舟求劍”地全靠周期來預測市場,而要通過邏輯去判斷趨勢。
本次論壇的主題為New-DeFi,而作為領航者的EGG Network是區塊鏈底層開發平臺,為區塊鏈開發者提供一系列區塊鏈技術模板,幫助開發者快速創建區塊鏈應用,落實去中心化商業場景,是一個能包容千萬級應用開發的聚合型永動金融網絡。同時也是一個分布式數據庫,引入內容尋址,V8引擎等先進技術實現數據快速存儲和提取,并且采用Core Chain連接平行鏈的創新技術,實現跨鏈數據傳輸。最重要的,它有兩大代表性生態:EFTalk加密社交和去中心化競價發行IDBO。[2021/3/21 19:05:23]
skynet:分布式調度框架Doozer:分布式同步工具,類似ZooKeeper
現場丨朱嘉明:我們需要看到區塊鏈和數字轉型代表的社會變化:金色財經現場報道,10月15日,華山論劍2020網絡安全大會于西安召開,在大會的區塊鏈安全與應用創新分論壇上,數字資產研究院院長朱嘉明演講表示,把區塊鏈置于華山論劍的歷史情節,對區塊鏈行業有很大的啟發意義。華山論劍集結了當時的地緣參與者,而參與者代表著社會參與的各階層共同尋求一個“真經”,今天討論的區塊鏈,有非常多的背景因素,我們需要看到區塊鏈和數字轉型代表的社會變化,即數字化技術向民眾轉移的需求。江湖就是歷史,歷史就是江湖,區塊鏈的每個圈子,都是江湖,江湖有各自發展的體系,華山論劍就是江湖文化在特定歷史條件下的展現。在科技主導經濟的時代,我們需要更強的歷史感。[2020/10/15]
Heka:mazila開源的日志處理系統
cbfs:couchbase開源的分布式文件系統
tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣
groupcache:memcahe作者寫的用于Google下載系統的緩存系統
god:類似redis的緩存系統,但是支持分布式和擴展性
gor:網絡流量抓包和重放工具
生態卡位和隱性標準
除了打鐵還需自身硬之外,還有些機遇和運勢,讓區塊鏈選擇的了Go語言。我們來看區塊鏈2.0以來最成功的公鏈和聯盟鏈代表,以太坊和超級賬本Fabric,無一例外都選擇使用Go作為開發語言,這兩大超級區塊鏈的影響力可不是一般項目可以比擬的,不僅在生態中占據了大的坑位,事實上還隱性的制定了區塊鏈的標準,不論是公鏈中的智能合約,還是聯盟鏈的技術,都繞不開以太坊和Fabric,那么對于一家想要做區塊鏈技術選型的公司來說,最快捷的實現是什么?自然是直接照搬這兩個項目的創新,再捷徑一點就是直接拿開源代碼改,那么自然Go語言就成為后來者的首選,換種語言重新實現一遍難度也不小,而且如果選擇一些創新但不是非常成熟的語言還會缺失一些特定庫的支持從而導致項目無法開展。
很多人對以太坊的影響力毋庸置疑,但實際上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實現,畢竟生態的多樣性才是一個項目長久的根本。
一、“過氣”的去中心化 隨著傳統互聯網巨頭紛紛入局,分布式記帳、聯盟鏈類的項目好像突然成了區塊鏈行業的主流,再加上國家對于發幣和虛擬貨幣融資的打擊,傳統的公鏈被擠到了邊緣地帶.
1900/1/1 0:00:00作者:宋嘉吉、孫爽 來源:吉時通信 摘要 芝商所正式上線基于比特幣期貨的期權產品。該期權的價值基于受監管的CMECF比特幣參考匯率,并以實際交易的比特幣期貨結算.
1900/1/1 0:00:00西班牙●區塊鏈智能支付試驗運營西班牙國家支付網絡的Iberpay與薩瓦德爾銀行、桑坦德銀行、Bankia、BBVA和CaixaBank五家西班牙銀行進行了基于區塊鏈的智能支付的概念驗證.
1900/1/1 0:00:00原創:五火球教主 近些天,如死水一般的幣價波動讓區塊鏈行業內的人士無聊到了極點,幾個原本異常活躍的群也開始逐漸陷入冰點,不再有人說話.
1900/1/1 0:00:00文:AnaAlexandre編譯:Damian責編:Rose歐洲中央銀行行長克里斯汀·拉加德支持歐洲央行積極參與中央銀行數字貨幣的開發,以滿足對更快,更低成本的跨境支付的需求.
1900/1/1 0:00:00兩年多以來,比特幣的共識層一直保持不變。自2017年8月“隔離見證”啟動以來,比特幣一直沒有進行硬分叉或軟分叉協議升級,這是迄今為止比特幣維持無共識分叉最長的一段時間.
1900/1/1 0:00:00