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部署及框架解析相关推荐
- python进阶学习--- django框架解析 ---领悟编程语言共性与特性【后续详解】
python进阶学习---> django框架解析 --->领悟编程语言共性与特性 1.python语言介绍 python解释型脚本语言 2.python执行原理 python解释 ...
- Freeline框架解析
文章目录 FreeLine 框架解析 目前主流的动态编译方案对比 layoutcast Buck android studio Instant run 阿里 freeline Freeline 部署步 ...
- android 1.0框架,KOOM V1.0.5 框架解析
快手在2020年中旬开源了一个线上OOM监控上报的框架:KOOM,这里简单研究下. 一.官方项目介绍 1.1 描述: KOOM是快手性能优化团队在处理移动端OOM问题的过程中沉淀出的一套完整解决方案. ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(六) Tiny Darknet 听过很多人谈论SqueezeNet. SqueezeNet很酷,但它只是优化参数计数.当大多数高质量的 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(四)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(四) Nightmare 从前,在一所大学的大楼里,西蒙尼亚.维达第和齐瑟曼有一个很好的主意,几乎和你现在坐的大楼完全不同.他们想,嘿 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(三) ImageNet分类 您可以使用Darknet为1000级ImageNet挑战赛分类图像.如果你还没有安装Darknet,你应该 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(二)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(二) 版本3有什么新功能? YOLOv3使用了一些技巧来改进训练和提高性能,包括:多尺度预测.更好的主干分类器等等.全部细节都在我们的 ...
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)
AlexeyAB DarkNet YOLOv3框架解析与应用实践(一) Darknet: C语言中的开源神经网络 Darknet是一个用C和CUDA编写的开源神经网络框架.它速度快,易于安装,支持CP ...
最新文章
- Google 排名第一的语言,引数十万人关注:搞定它,技术大牛都甘拜下风
- python制作缩略图
- MATLAB中设置figure的边框
- 一款小清新的 SpringBoot+ Mybatis 前后端分离后台管理系统项目
- 无锁HashMap的原理与实现
- 洛谷——P1568 赛跑
- jms 教程_JMS教程–什么是JMS
- (Abstract Factory)抽象工厂模式的Java实现
- 快逸报表常见问题整理-java报表
- 阅读圣经丨变量引起的上下文
- Undefined和Null的区别
- 浅谈互联网券商港股美股证券交易软件开发如何实现
- 用只读打开服务器上的文档,打开WebDAV文档在MS Office中以IT只读方式打开WebDAV服务器...
- 针对Android平台播放器开源库NiceVieoPlayer倍速的开发
- 一款APP从设计稿到切图过程全方位揭秘
- 神经网络知识梳理——从神经元到深度学习
- U盘文件无损进行格式转换
- 在eclipse中用java代码测试是否成功连接数据库
- 兴趣爱好选择程序java+Swing界面
- 游戏项目管理经验方法
热门文章
- 分页原理+分页代码+分页类制作
- 用Python做自然语言处理必知的八个工具【转载】
- HDU 2852 KiKi's K-Number 主席树
- Leetcode题解(26)
- Asp.Net Mvc之模型注解
- asp.net后台代码动态添加JS文件和css文件的引用
- linux系统安装yum环境
- IDE (Integrated Development Environment) 集成开发环境
- 【Python】创建数组[[0]*n]*m与[[0 for _ in range(n)] for _ in range(m)]的区别
- 免费分享|linefriends手帐内页|横线方格|非卖品