這篇文章主要介紹“Tendermint開發(fā)環(huán)境搭建與測試方法是什么”,在日常操作中,相信很多人在Tendermint開發(fā)環(huán)境搭建與測試方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Tendermint開發(fā)環(huán)境搭建與測試方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的服務(wù)器機(jī)柜租賃服務(wù)
區(qū)塊鏈應(yīng)用已經(jīng)從單純電子現(xiàn)金發(fā)展到去中心化投票等更多的領(lǐng)域,但是區(qū)塊鏈這樣的分布式系統(tǒng)的開發(fā)還存在一些困難的問題:安全、可靠性、敏捷度、以及一致性保證等等。Tendermint的目的就是致力于解決分布式系統(tǒng)開發(fā)中像公示算法這樣的技術(shù)難點(diǎn),而讓Tendermint區(qū)塊鏈應(yīng)用開發(fā)者可以將關(guān)注點(diǎn)集中在業(yè)務(wù)邏輯上。
Tendermint萌芽于比特幣、以太坊這樣的加密貨幣,它的目標(biāo)是提供一個比比特幣的工作量證明(PoW)更加高效和安全的共識算法。簡單地說,Tendermint是一個可供二次開發(fā)的軟件包,可以在多臺機(jī)器上安全、一致地實(shí)現(xiàn)應(yīng)用狀態(tài)的復(fù)制。
Tendermint可以在不超過1/3的機(jī)器失效時依然正常工作,無論失效的原因是什么。Tendermint實(shí)現(xiàn)了拜占庭容錯。
任何正常工作的機(jī)器都會收到相同的交易日志,并分別推導(dǎo)出相同的狀態(tài)。
Tendermint的特性如下圖所示:
Tendermint包含兩個主要的組件:
區(qū)塊鏈共識引擎,即:Tendermint內(nèi)核。
應(yīng)用與區(qū)塊鏈接口,即:Application BlockChain Interface。
Tendermint內(nèi)核可以托管任意的應(yīng)用狀態(tài),因此可以使用任何語言開發(fā)區(qū)塊鏈軟件:Haskell、GoLang、或者Rust都可以用來開發(fā)ABCI應(yīng)用。
其他區(qū)塊鏈的一個問題是,它們都是單體設(shè)計(jì)思維的軟件。以比特幣為例,比特幣的設(shè)計(jì)就是單體的,其區(qū)塊鏈技術(shù)棧都包含在單一程序里,需要處理從P2P鏈接到交易廣播、達(dá)成共識乃至檢查賬戶余額的一切事情。
單體應(yīng)用通常不容易擴(kuò)展、升級或再利用,而Tendermint則致力于將區(qū)塊鏈技術(shù)棧的兩個核心組件與其他部分解耦:共識引擎和P2P連接——事實(shí)上這也是開發(fā)區(qū)塊鏈的最困難的兩個技術(shù)環(huán)節(jié) —— 從而可以使用任何開發(fā)語言來開發(fā)ABCI應(yīng)用。
廢話不多說了,讓我們擼起袖子開干!
tendermint內(nèi)核采用Go開發(fā),有官方預(yù)編譯程序,下載地址:Tendermint Core。
下載后直接解壓,并將tendermint程序目錄添加到環(huán)境變量PATH的設(shè)置里。
執(zhí)行如下命令初始化Tendermint:
~$ tendermint init
應(yīng)當(dāng)可以在終端看到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節(jié)點(diǎn):
~$ tendermint node -proxy_app=kvstore
-proxy_app
運(yùn)行標(biāo)志用來指定一個內(nèi)置的ABCI應(yīng)用,例如kvstore是tendermint程序內(nèi)置的鍵值對應(yīng)用。你應(yīng)該可以看到如下的tendermint程序輸出:
I[10–18|20:16:40.037] Starting multiAppConn module=proxy impl=multiAppConn ... I[10–18|20:16:42.051] enterPropose: Our turn to propose module=consensus height=2 round=0 proposer=601302EBD1F8B4BCE9F99B219965F2796AB6BB10 privValidator=”PrivValidator{601302EBD1F8B4BCE9F99B219965F2796AB6BB10 LH:1, LR:0, LS:3}” I[10–18|20:16:42.055] Signed proposal module=consensus height=2 round=0 proposal=”Proposal{2/0 1:48B45F4423A5 (-1,:0:000000000000) F52DF1F111D8 @ 2018–10–18T14:46:42.051967933Z}” I[10–18|20:16:42.056] Received proposal module=consensus proposal=”Proposal{2/0 1:48B45F4423A5 (-1,
要提交一個交易,可以使用curl向Tendermint節(jié)點(diǎn)的RPC服務(wù)發(fā)出請求,例如:
~$ curl http://localhost:26657/broadcast_tx_commit?tx=\"niharika\"
響應(yīng)結(jié)果如下:
{ "jsonrpc":"2.0", "id": "", "result": { "check_tx": { "gasWanted": "1" }, "deliver_tx": { "tags": [ { "key": "YXBwLmNyZWF0b3I=", "value": "amFl" }, { "key": "YXBwLmtleQ==", "value": "bmloYXJpa2E=" } ] }, "hash": "EAAD936D3EDCCCF5DD214E02BB4065E5511CA5AC", "height": "3533" } }
注意結(jié)果中的value字段,例如bmloYXJpa2E
,這其實(shí)是字符串niharika
的base64編碼。
現(xiàn)在讓我們查詢一下:
~$ curl -s 'localhost:26657/abci_query?data="niharika"'
響應(yīng)結(jié)果如下:
{ "jsonrpc":"2.0", "id": "", "result": { "response": { "log": "exists", "index": "-1", "key": "bmloYXJpa2E=", "value": "bmloYXJpa2E=" } } }
很好,看起來我們的Tendermint內(nèi)核與ABCI接口的工作一切正常!
到此,關(guān)于“Tendermint開發(fā)環(huán)境搭建與測試方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
文章標(biāo)題:Tendermint開發(fā)環(huán)境搭建與測試方法是什么
本文地址:http://m.newbst.com/article16/pepddg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站設(shè)計(jì)、App開發(fā)、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)