日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ethermint部署及框架解析

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ethermint部署及框架解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ethermint是什么

Ethermint is a blazing fast Proof-of-Stake blockchain that is fully compatible with Ethereum.
Ethermint 是一款非常快速的POS區塊鏈,并整體兼容以太坊Ethereum。
簡單來說,Ethermint 做了一件事:集成Tendermint和Ethereum。Ethermint集成Tendermint并實現POS+BFT的共識機制。

框架解析

Ethermint的框架如下圖所示

Ethermint 首先通過Backend結構體的EthState與Ethereum中的區塊鏈和狀態數據結合封裝。其次通過event.TypeMuxSubscription事件監聽Ethereum中的交易數據,并將交易tx通過rpcClient.HTTPClient提交到Tendermint。最后通過EthermintApplication實現的ABCI接口連接Tendermint和Backend。

部署測試

所需文件及版本:

tendermint 0.10.5-acc161f7 ethermint 0.5.3-a5308d8 geth 1.6.7-stable
  • 1
  • 2
  • 3

1.下載編譯

首先在linux安裝好golang環境和git

## 下載ethermint git clone https://github.com/tendermint/ethermint.git cd ethermint ## 下載包 glide install make install## 下載tendermint git clone https://github.com/tendermint/tendermint cd tendermint ## 目前只支持v0.10.5 git checkout v0.10.5 make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

編譯完成后將二進制文件放到不同目錄下

2.初始化

初始化ethermint 和tendermint

## 初始化ethermint mkdir ethermint cp ethermint ethermint/ cd ethermint ./ethermint --datadir data init## 初始化tendermint mkdir tendermint cp tendermint tendermint/ cd tendermint ./tendermint --home data init
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.啟動

nohup 啟動

nohup ./tendermint --home data node 1>out.log 2>out.log &nohup ./ethermint --datadir data --rpc --rpcaddr=10.100.7.48 --ws --wsaddr=10.100.7.48 --rpcapi eth,net,web3,personal,admin 1>out.log 2>out.log &
  • 1
  • 2
  • 3
  • 4

此時啟動成功便開始產生區塊了。

4.調用和交易

查看Ethermint狀態

curl http://localhost:46657/status
  • 1

啟動geth,做相關交易

## 交易轉賬 eb3.eth.accounts web3.personal.newAccount() acc0 = web3.eth.accounts[0] acc1 = web3.eth.accounts[1] web3.personal.unlockAccount(acc0,"1234") web3.eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,"ether")})##部署智能合約 var browser_double_sol_testContract = web3.eth.contract([{"constant":true,"inputs":[{"name":"a","type":"int256"}],"name":"double","outputs":[{"name":"","type":"int256"}],"payable":false,"type":"function"}]); var browser_double_sol_test = browser_double_sol_testContract.new({from: web3.eth.accounts[0],data: '0x6060604052341561000f57600080fd5b5b60ab8061001e6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636ffa1caa14603d575b600080fd5b3415604757600080fd5b605b60048080359060200190919050506071565b6040518082815260200191505060405180910390f35b60008160020290505b9190505600a165627a7a72305820c5fd101c8bd62761d1803c865fd4af5c57f3752e6212d7ccebd5b4a23fcd23180029',gas: '4300000'}, function (e, contract){console.log(e, contract);if (typeof contract.address !== 'undefined') {console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);}})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

我們可以看到Ethermint無論是交易和部署智能合約都非常的塊,提交交易非常迅速。
坦白說,我們可以將Ethermint用于公司聯盟鏈,既可以提高交易速度,又不失去Ethereum的交易功能。

Ethermint啟動和交易流程

Ethermint啟動:


Ethermint啟動流程如圖所示:
1.初始化Ethermint和tendermint。 Ethermint初始化以太坊Ethereum數據庫、ipc、默認錢包;tendermint初始化化genesis消息,節點配置消息等。
2.啟動tendermint。啟動tendermint不開啟任何端口,等待去連接Ethermint的ABCI Server。
3.啟動Ethereum node節點。 這個步驟實際上是啟動了以太坊的node.Node。
4.啟動ethereum.Backend服務。這個部署將以太坊node.Node,eth.Ethereum和ethereum.EthState配置到Backend。同時開啟txBroadcastLoop 協程,監聽交易tx事件。
5.啟動ABCI APP服務。這里新建EthermintApplication APP對象,并開啟ABCI server。此時第一步的tendermint會連接到Ethermint。
6.tendermint 鏈接并開始產鏈。tendermint連接成功后,便回和Ethermint中的ABCI server協同,通過BFT共識產塊。

Ethermint交易流程

EthermintApplication中DeliverTx的接口更新一個個區塊中的交易,validateTx驗證一個交易,Commit的接口生成一個區塊,并加入當前的鏈中。交易總流程如下:

總結

本文講解了Ethermint部署及框架解析,希望讀者能通過這篇文章對Ethermint和tendermint有初步的了解。
目前Ethermint的開發處于暫停的狀態,團隊在重新設計軟件架構。在現在的版本中,Ethermint之前的實現方式是通過ABCI接口調用Tendermint。在最新的設計中,Ethermint將被設計成 Cosmos-SDK內的一個模塊。它可以使用geth的底層組件來支持EVM和處理以太坊交易。預計2018年的第四季度將實現這個設計。

參考

1.http://ethermint.readthedocs.io
2.https://github.com/tendermint/ethermint

本文為niyuelin1990(逆月林)原創文章,轉載請注明出處 https://blog.csdn.net/niyuelin1990/article/details/80684036

總結

以上是生活随笔為你收集整理的Ethermint部署及框架解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。