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

技術入門 | 剖析Libra的Network組件_ODE

Author:

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

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組件。

中證協:研究推進區塊鏈等新技術在投行業務領域的應用研究:金色財經報道,4月27日,中國證券業協會發布《中國證券業協會專業委員會 2020 年工作要點》。要點指出,投資銀行委員會要研究推進區塊鏈、人工智能、大數據等新技術在投行業務領域的應用研究,研究制定保薦承銷機構遠程工作標準。互聯網證券委員會要開展證券公司數字化轉型發展推動行業高質量研究,引導場外市場加強數據治理,探索以區塊鏈技術為支撐的多方數據權益保障機制;加強行業交流和培訓,推動形成行業金融科技運用的最佳實踐。( 中國證券業協會官網)[2020/4/27]

注意,上面介紹各個核心組件的時候,我們區分了組件和服務,兩者的區別是:組件沒有額外監聽端口,與node共用同一個端口,而服務會單獨監聽一個端口,通常是GRPC服務。

Libra設計與實現

Libra涉及的東西比較多,我們從三條線介紹Libra的設計與實現:

通過分析Node啟動并加入到Libra網絡的過程,介紹Network組件的設計與實現;

圍繞Transaction的生命周期,分析其接收交易、打包區塊、運行上鏈的過程,介紹Libra的Mempool、Executor以及Storage、VM等核心組件;

圍繞LibraBFT,介紹Consensus組件以及區塊達成共識的過程

聲音 | Bitfinex交易所首席技術官:CoinGecko數據報告存在問題:據BeInCrypto消息,Bitfinex交易所首席技術官Paolo Ardoino近日表示,CoinGecko對其交易所的數據報告存在問題。CoinGecko是繼CoinMarketCap之后的第二大加密貨幣市場數據平臺。Paolo Ardoino表示,CoinGecko明顯漏報了Bitfinex交易所的一些市場數據。按照他的說法,Bitfinex的深度值應為400萬美元,但是CoinGecko的數據顯示僅為26萬美元。昨天,他在推特上聯系了CoinGecko,并說明了情況,而后者則回復稱會進行更正。[2019/11/3]

如果想了解或者使用Libra,我們需要先啟動一個節點,并將它加入到網絡中。接下來,我們看看第一條主線,了解一下Node的啟動以及Network的設計與實現。

Node啟動流程

我們先看一下Node大概的啟動流程,主要包含兩部分:

生成configLibra的Config的模塊中,能構建3種類型的配置文件,分別是validator、faucet、fullnode的配置文件。其中faucet配置是水龍頭服務相關的一些配置,通常只有測試網絡中第一個validator節點才需要。

動態 | 重慶互聯網政務中心將使用區塊鏈技術升級系統:重慶日報今日刊文《加強效能監管 保障“渝快辦”的便利與品質》,文中提到,重慶市“互聯網+政務服務”指揮中心負責人在談及“構建‘渝快辦’審批服務全鏈條責任追究體系”時表示,將在人工智能方面定期對該中心的審批服務系統進行升級,“將大數據智能化、區塊鏈領先技術用于為民實踐”。[2018/12/13]

啟動node

上圖中Libra-node用于啟動單節點,Libra-swarm用于批量啟動多節點。接下來,我們分別看一下這兩步的一些實現細節,以及之前的準備工作。

準備工作

在一切繼續之前,我們先準備需要依賴的環境

?1).獲取Libra代碼

?gitclone?https://github.com/libra/libra.git

?2).編譯和運行環境

?a.建議使用Libra自帶的腳本script/dev_setup.sh安裝環境依賴

?b.或者自己手動安裝rust、cargo、git、pb、go、CMake等工具

聲音 | 螞蟻金服陳亮:螞蟻金服支付技術從擔保交易發展到區塊鏈技術:據新華網消息,近日,新華社民族品牌工程與螞蟻金服舉行座談會,共同聚焦品牌建設,螞蟻金服集團副總裁陳亮介紹,14年來,該集團打造了一系列國民級產品,這些成就背后都是科技的力量,從當年的擔保交易、快捷支付,到現在的刷臉支付、區塊鏈技術,很多人覺得螞蟻金服有個“金”字,是一個金融企業,其實我們的核心是一個科技型企業。[2018/9/7]

?

生成config

?從前面的Node啟動流程我們了解到,啟動node首先需要生成配置。Libra包含的配置文件比較多,我們來整體看一下配置文件:

不過沒有特殊需求的話,需要我們特別注意和關注的配置其實也不算多,主要有:

?a.Node的角色分為Validator和FullNode

?b.生成3個秘鑰,2個ed25519算法生成,分別用于打包block簽名、網絡的消息簽名,Libra提供了一個generate_keypair工具生成ed25519秘鑰(cargorun-pgenerate_keypair–-omint.key),1個是x25519算法生成,用于標識節點身份

Nexus與SingularityNET合作 通過3D區塊鏈技術探索人工智能:\t據Cryptoninjas消息,Nexus和SingularityNET今天宣布了一項合作,以探索區塊鏈和人工智能技術的結合。SingularityNET正在創建基于區塊鏈的分布式人工智能網絡。這種新的合作關系可能會帶來最安全、可升級、可受審查的區塊鏈人工智能基礎設施。對于SingularityNET,這種合作關系為其人工智能網絡創建了可伸縮性、可訪問性和安全性。這種關系也有助于兩家公司實現各自強大技術的共同目標。對于Nexus來說,該合作關系為部署其3D區塊鏈結構以及在其網絡層面上探索AI應用程序提供了寶貴的用例。[2018/2/7]

?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:LIBLIBRAODENODELIBERALibraFace0xnodesBNODE幣

FTX
普通人如何投資比特幣?_比特幣

本文僅作討論,不作為任何投資建議。比特幣有非常高的風險,投資需謹慎。你已經知道了比特幣是什么,你對投資比特幣有一些心動,但你又不知道應該怎么做.

1900/1/1 0:00:00
歐盟就加密資產監管開啟公眾咨詢,最終方案將在第三季度出臺_區塊鏈

歐盟委員會正在收集來自歐盟公民、企業、監管機構和其他利益相關方的意見,以便在歐洲層面上建立加密資產和市場的監管框架.

1900/1/1 0:00:00
如果有區塊鏈,對疫情防控工作有哪些巨大作用?_BAN

年前寫的一篇文章,《武漢病引發的區塊鏈思考》引發了網友不少的討論,其中幾個措施在年后各地政府措施中,貫徹實施的效果不錯,兩周后,我想從區塊鏈落地的角度再來探討一下,如果有區塊鏈.

1900/1/1 0:00:00
北京新推“區塊鏈+不動產登記”7個應用場景_EMS

文:北京青年報記者朱開云 來源:北京青年報 為進一步優化營商環境,促進利企便民,落實北京市政務服務領域區塊鏈應用行動計劃.

1900/1/1 0:00:00
研究 | 疫情中的慈善機構更需要區塊鏈_OIN

Overview概述 當前慈善組織公信力受到普遍質疑,主要原因是慈善組織缺乏有效監管,民間慈善組織缺乏合法地位以及信息不透明.

1900/1/1 0:00:00
觀點 | 瘦應用:對區塊鏈應用架構的再思考_TOKE

作者:?JoelMonegro 翻譯:?阿劍 原文來源:Placeholder 編譯:以太坊愛好者 本文是對《區塊鏈應用的棧層》(2014)和《胖協議》(2016)兩篇文章的延續思考.

1900/1/1 0:00:00
ads