嵌入式區塊鏈Tendermint快速入門

2021-09-11 15:12:19 字數 2016 閱讀 9609

tendermint萌芽於位元幣、以太坊這樣的加密貨幣,它的目標是提供乙個比位元幣的工作量證明(pow)更加高效和安全的共識演算法。簡單地說,tendermint是乙個可供二次開發的軟體包,可以在多台機器上安全、一致地實現應用狀態的複製。

tendermint的特性如下圖所示:

tendermint包含兩個主要的元件:

tendermint核心可以託管任意的應用狀態,因此可以使用任何語言開發區塊鏈軟體:haskell、golang、或者rust都可以用來開發abci應用。

其他區塊鏈的乙個問題是,它們都是單體設計思維的軟體。以位元幣為例,位元幣的設計就是單體的,其區塊鏈技術棧都包含在單一程式裡,需要處理從p2p鏈結到交易廣播、達成共識乃至檢查賬戶餘額的一切事情。

單體應用通常不容易擴充套件、公升級或再利用,而tendermint則致力於將區塊鏈技術棧的兩個核心元件與其他部分解耦:共識引擎和p2p連線 —— 事實上這也是開發區塊鏈的最困難的兩個技術環節 —— 從而可以使用任何開發語言來開發abci應用。

廢話不多說了,讓我們擼起袖子開幹!

執行如下命令初始化tendermint:

~$ tendermint init

複製**

應當可以在終端看到tendermint的輸出資訊:

i[10–18|20:14:08.996] generated private validator module=main path=/users/niharikasingh/.tendermint/config/priv_validator.json

i[10–18|20:14:08.996] generated node key module=main path=/users/niharikasingh/.tendermint/config/node_key.json

i[10–18|20:14:08.996] generated genesis file module=main path=/users/niharikasingh/.tendermint/config/genesis.json

複製**

使用node子命令啟動tendermint節點:

複製**

...i[10–18|20:16:42.051] enterpropose: our turn to propose module=consensus height=2 round=0 proposer=601302ebd1f8b4bce9f99b219965f2796ab6bb10 privvalidator=」privvalidator」

i[10–18|20:16:42.055] signed proposal module=consensus height=2 round=0 proposal=」proposal」

i[10–18|20:16:42.056] received proposal module=consensus proposal=」proposal,

"deliver_tx": ,]},

"hash": "eaad936d3edcccf5dd214e02bb4065e5511ca5ac",

"height": "3533"

}}複製**注意結果中的value欄位,例如bmloyxjpa2e,這其實是字串niharika的base64編碼。

現在讓我們查詢一下:

~$ curl -s

'localhost:26657/abci_query?data="niharika"'

複製**

響應結果如下:

}}複製**

很好,看起來我們的tendermint核心與abci介面的工作一切正常!

在本文中,我們成功安裝並啟動了tendermint核心,然後通過節點旳abci介面提交了乙個交易來更新內建鍵值庫應用的狀態,最後通過abci介面查詢了abci應用的狀態。這就是基於tendermint進行應用開發的核心模型:可以使用任何開發語言來代替curl完成這些操作,實現自己的abci應用!

初識嵌入式 嵌入式開發概述

1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...

如何學習嵌入式 嵌入式如何入門?

學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...

非嵌入式與嵌入式的區別

非嵌入式是通過軟體控制硬體,軟硬體之間直接聯絡來實現要求。但是一旦硬體發生改變軟體也要改變,為了降低這種偶合度過高的問題,出現了嵌入式。嵌入式在軟體和硬體之間新增了作業系統,軟體通過控制作業系統進而控制硬體,硬體發生改變並不會導致軟體也發生改變,這為軟體開發人員節約了很多時間,並且嵌入式能在已有的硬...