2019年6月18日,Facebook發布了Libra白皮書及源碼,引起了業界的廣泛關注與討論。
這里我們通過分析Libra的源碼,探索Libra的各個組件,來了解一下Libra的整體設計與實現。
Libra核心組件
在進入主題之前,我們先對Libra有一個整體的認識:
看過Libra技術白皮書的朋友,應該都記得這張圖,下面簡單介紹一下這些核心的組件:
?a.AdmissionControl服務:簡稱AC,翻譯過來叫準入控制,可以理解為Libra的網關,將跟用戶打交道的接口暴露給用戶,例如提交Transaction、獲取用戶狀態等等
?b.Mempool服務:存儲未上鏈交易
?c.Consensus組件:LibraBFT共識組件
?d.VirtualMachine組件:簡稱VM,運行Move合約的虛擬機
?e.Execution組件:VM的入口,已換成Executor組件
?f.Storage服務:存儲所有鏈上數據
?g.Network組件:上圖中隱含了一個Network組件,不論是Node啟動還是跟其他節點通信,都需要Network組件。在第一條主線中,我們重點介紹Network組件。
Coinbase 因技術問題暫停 Polygon 存取款:10月22日消息,Coinbase 因技術問題暫停 Polygon 網絡(MATIC、USDC 和 ETH)存取款,目前正在解決與 Polygon 鏈相關的技術問題。[2022/10/22 16:35:30]
注意,上面介紹各個核心組件的時候,我們區分了組件和服務,兩者的區別是:組件沒有額外監聽端口,與node共用同一個端口,而服務會單獨監聽一個端口,通常是GRPC服務。
Libra設計與實現
Libra涉及的東西比較多,我們從三條線介紹Libra的設計與實現:
通過分析Node啟動并加入到Libra網絡的過程,介紹Network組件的設計與實現;
圍繞Transaction的生命周期,分析其接收交易、打包區塊、運行上鏈的過程,介紹Libra的Mempool、Executor以及Storage、VM等核心組件;
圍繞LibraBFT,介紹Consensus組件以及區塊達成共識的過程
如果想了解或者使用Libra,我們需要先啟動一個節點,并將它加入到網絡中。接下來,我們看看第一條主線,了解一下Node的啟動以及Network的設計與實現。
Node啟動流程
我們先看一下Node大概的啟動流程,主要包含兩部分:
TON Labs首席技術官:將繼續開發TON以及分發代幣:針對Telegram首席執行官宣告終結TON項目一事,TON Labs首席技術官Mitja Goroshevsky表示,很明顯,杜羅夫是被迫發表這一聲明的。但是我同意他的所有觀點,尤其是聲明最后關于權力下放的觀點, 這與Free TON的目標完全吻合。 我們將繼續在全球開發、發展TON,以及分發代幣。 因為這是正確的事情。此前報道,由軟件開發者、13位驗證者以及用戶組成的去中心化社區Free TON于5月7日發布Free TON Blockchain。根據TON Labs的公告,社區還將向用戶提供免費的TON代幣。Free TON社區表示,任何人都可以加入該網絡,不過,美國的個人和組織在現階段無法加入該網絡 。另外,TON Labs首席執行官Alexander Filatov對Coindesk表示,Telegram沒有參與發布該網絡。( Cointelegraph)[2020/5/13]
生成configLibra的Config的模塊中,能構建3種類型的配置文件,分別是validator、faucet、fullnode的配置文件。其中faucet配置是水龍頭服務相關的一些配置,通常只有測試網絡中第一個validator節點才需要。
聲音 | 人民網:科技戰“疫” 人民在線利用區塊鏈技術實現版權保護:2月14日,人民網發表文章《科技戰“疫”:發揮版權力量優質作品陪伴人民共克時艱》,文章指出,為貫徹落實黨中央、國務院關于防控新型冠狀病肺炎疫情的決策部署,有效減少人員聚集,阻斷疫情傳播,各政府部門、相關組織機構、知識產權行業公司陸續推出知識產權事務線上辦理的舉措。人民在線作為大數據評價科技領域的領航者,順應國內產業創新轉型和科技變革大勢,率先發力“區塊鏈+版權保護”,于2019年正式推出一站式版權保護管理平臺——“人民版權”。平臺依托區塊鏈技術的加密和鏈式結構在上鏈后的數據完整性和不可篡改性,實現原創內容的自動存證、原創轉載的實時監控、侵權轉載的快速取證、侵權行為的線上維權、授權內容的線上交易,為用戶提供最完善的全流程線上服務。[2020/2/14]
啟動node
上圖中Libra-node用于啟動單節點,Libra-swarm用于批量啟動多節點。接下來,我們分別看一下這兩步的一些實現細節,以及之前的準備工作。
準備工作
在一切繼續之前,我們先準備需要依賴的環境
?1).獲取Libra代碼
聲音 | 合肥工業大學校長:運用區塊鏈技術等推動學校治理能力科學化:12月27日下午,合肥工業大學召開黨委理論學習中心組(擴大)會議,專題學習研究區塊鏈技術。校長梁樑表示,區塊鏈技術是全球互聯網技術發展的前沿陣地,作為轉型發展關鍵期的發展中大國,要緊跟世界科技發展的最前沿,發揮區塊鏈技術在國家治理體系和治理能力現代化、產業升級、金融服務領域的積極作用,實現經濟社會高質量發展。要積極推動跨學科的區塊鏈技術研究開發模式,著力攻克區塊鏈的一批關鍵核心技術。相關學院和部門要主動思考、積極謀劃設立新專業,成立學生創新社團,推出有針對性的區塊鏈技術、人工智能、大數據等新一代信息技術相關的專業培訓課程,孵化相關創新項目,培養具有新興互聯網思維的綜合性人才。充分運用包括區塊鏈技術等新興技術力量,切實推動學校治理能力和管理機制的科學化、高效化和智能化。[2019/12/31]
?gitclone?https://github.com/libra/libra.git
?2).編譯和運行環境
?a.建議使用Libra自帶的腳本script/dev_setup.sh安裝環境依賴
?b.或者自己手動安裝rust、cargo、git、pb、go、CMake等工具
?
生成config
?從前面的Node啟動流程我們了解到,啟動node首先需要生成配置。Libra包含的配置文件比較多,我們來整體看一下配置文件:
聲音 | 聯合國教科文組織專家:區塊鏈技術可以改變高考制度:據核財經消息,聯合國教科文組織PISA教育質量測試專家組專家許紅偉在2018北京數字經濟論壇區·塊鏈應用創新峰會上表示,教育傳統評價體系“高考”一直廣受詬病,區塊鏈技術可以改變傳統教育評價體系。區塊鏈可以把學生平時成績記錄下來,并一直跟蹤到高三,最終成長報告,在畢業時移交給大學。大學再結合高考成績綜合考慮,改變“一考定終生”的高考制度。他表示,目前廊坊市教育局已經參考聯合國經貿發展組織的PISA測試模式開放試點了教育評估系統。[2018/9/21]
不過沒有特殊需求的話,需要我們特別注意和關注的配置其實也不算多,主要有:
?a.Node的角色分為Validator和FullNode
?b.生成3個秘鑰,2個ed25519算法生成,分別用于打包block簽名、網絡的消息簽名,Libra提供了一個generate_keypair工具生成ed25519秘鑰(cargorun-pgenerate_keypair–-omint.key),1個是x25519算法生成,用于標識節點身份
?c.數據存儲路徑,默認會生成臨時路徑
?d.network_peers:存放網絡中Node的公鑰等信息,主要包含網絡消息簽名的公鑰和節點身份的公鑰
?e.seed_peers:當前節點加入網絡主動去連接的node的信息
?f.consensus_peers:所有Validator節點的信息,Libra網絡是一個許可形網絡
?g.各服務的端口以及其他配置,沒有特殊要求的話,默認就好
啟動Node
連接Libra的測試網絡shscripts/cli/start_cli_testnet.sh
自建節點cargorun-plibra-node或者cargorun-plibra-swarm–-s
當前node啟動起來之后,會根據seed_peers的配置,去連接相應的node節點,加入到網絡中去,如果沒有seed_peers則會啟動一個單獨的網絡。接下來,我們深入了解一下Node的Network的一些設計與核心實現。
Network組件
1.Network核心模塊
我們整體看一下Network包含哪些模塊:
上面中,從下往上看:
?a.MemSocket實現了UNIXdomainsocket的功能,一般用于測試
?b.TcpSocket網絡連接
?c.Transport可以理解為MemSocket和TcpSocket的一層抽象,封裝了socket的操作
?d.Noise是一種加密協議,前面提到的用于網絡消息簽名的ed25519私鑰,就是作用在這里
?e.Rpc是Libra自己實現的遠程過程調用協議,調用方會等待被調用方返回結果
?f.DirectSend從字面理解是直接發送,調用方發送完立即返回,不等待被調用方返回結果
?g.Negotiate可以理解為對Rpc和DirectSend的抽象
?h.MultiStream用于多路復用,使用了yamux協議。通俗的理解就是在同一個Tcp連接上,從邏輯上將每種上層協議封裝成一個單獨SubStream,以實現多個上層協議共用一個Tcp連接的情況。這一點后面我們還會提到。
以上是Libra的Network組件的一個整體實現,接下來我們介紹一下Libra的協議。
2.Libra的主要協議
上面我們對Network組件有了一個宏觀的認識,這里我們介紹一下Libra包含的協議:
上圖中,從下往上看:
?a.PeerManager封裝了網絡連接以及多路復用的操作
?b.Identity協議:前面提到的x25519私鑰,就是Identity協議用于標識當前節點的身份,協議會根據節點的Role將Validator網絡與Fullnode網絡進行隔離
?c.Health協議:定期隨機選擇一個節點發送探活消息
?d.Discovery協議:每個round從相鄰的節點同步節點信息,以發現新節點,可以理解為gossip協議
?e.AdmissionControl協議:只有RPC的實現,Fullnode節點在收到用戶提交的Transaction之后,通過AC協議將Transaction轉發給Validator節點
?f.Mempool協議:只有DirectSend實現,用于不同的Mempool之間同步Transaction
?g.Consensus協議:包含RPC和DirectSend,用于Validator之間達成共識
?h.StateSynchronizer協議:只有DirectSend實現,不同node之間尋找Block
前面我們提到了多路復用,上面的協議都是通過MultiStream分別開了SubStream,邏輯上把消息協議區分出來。其中Identity、Health、Discovery是所有node都會包含的基本協議,而Consensus是只有Validator節點才會包含的協議。
總結
最開始我們講了Node啟動流程,講述了config配置需要注意的地方以及node啟動的方式和流程。然后我們深入到Network組件,講了Network的組成模塊以及提供的協議能力。我們以單節點為例,將整個啟動以及加入網絡的過程總結如下圖:
其中黃色部分表示在Network的端口是開啟了SubStream,添加了相應的協議和協議處理過程;綠色部分部分表示服務或者組件實例化,可以看出Storage和Executor不依賴Network;初始化Discovery協議的時候,節點會去連接seed節點,并且seed節點會驗證Identity。以上是節點啟動以及加入到網絡的大概流程。
相關鏈接
https://github.com/libra/libra
https://developers.libra.org/docs/the-libra-blockchain-paper
Tags:LIBRALIBODENODELibra IncentixLIBF價格RODEOMasternode Hype Coin Exchange
來源:真本聰 今天內容包括: 1)概述比特幣期貨平臺的費用結構和激勵措施;2)DappRadar:枯燥的有錢人是如何影響菠菜應用的;3)StakingHub:NuCypherAMA; 4)比特幣.
1900/1/1 0:00:00撰文:李畫 來源:鏈聞 編者注:本文作了不改變作者原意的刪減。在經歷了被熱捧和被質疑的輪回之后,2020年,也許是區塊鏈游戲回歸的一年。回歸有兩重意思.
1900/1/1 0:00:002020年開局,肯定是過去十年中的最慘開局。先是澳大利亞史詩級山火,幾億只動物喪生;再是伊朗危機,美伊差一點就撕起來;然后新冠肺炎,數萬人確診。世界多慘淡,比特幣就顯得多絢爛.
1900/1/1 0:00:00英格蘭銀行高級經濟學家PeterZimmerman表示,投機活動破壞了加密貨幣的價格和作用。 Socios與新英格蘭愛國者隊及新英格蘭革命隊達成合作:金色財經報道.
1900/1/1 0:00:00來源:知礦大學 編者注:本文作了不改變作者原意的刪減。為了給大家解解乏,添添瑞氣,在今年的元宵佳節之際,知礦大學在微博上發起了“猜幣價,鬧元宵”的活動:預測從2月8日到比特幣減半當天這段時間內,
1900/1/1 0:00:00來源/ 鏈捕手 作者/王大樹 未經授權,謝絕轉載 疫情之下安有完卵,礦業作為區塊鏈唯一的實體產業所受沖擊較大,延期復工、停產、停售帶來產業鏈上一系列連鎖反應,華強北全部停業.
1900/1/1 0:00:00