经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
Ethereum(1)—— 基本介绍
来源:cnblogs  作者:翻书  时间:2018/9/25 19:10:27  对本文有异议

1 环境安装

安装Ethereum 协议的Go语言的最新实现。

  1. git clone https://github.com/ethereum/go-ethereum.git
  2. make all
  3. cd build/bin
  4. sudo cp * /usr/local/bin/

2 Ethereum组成

Ethereum包含以下几大模块。

模块介绍
geth基于命令行的Ethereum客户端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式.
abigen源代码生成工具。将Ethereum 合约转换为Go源码包,供其它Go模块调用.
bootnodebootnode是一个超简化版的Ethereum客户端,相比正常的客户端,它只运行节点发现协议,而不执行任何其它更高级的协议。
evm开发环境下的Ethereum虚拟机。
gethrpctest支持RPC测试的一个模块。
rlpdumpRLP数据解析器,在开发环境中常用。
swarm一个分布式存储平台以及内容分发服务.
puppeth基于命令行的向导,辅助创建一个新得Ethereum网络.

2.1 geth

基于命令行的Ethereum客户端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式.

这里能查询geth命令参数信息

通过命令能够进入JavaScript 交互环境:

  1. geth attach ipc:/home/testuser0/.ethereum/privatechain/geth.ipc

交互环境中,可以使用 web3 JavaScript Dapp APIthe admin API

2.2 abigen

源代码生成工具。将Ethereum 合约转换为Go源码包,供其它Go模块调用. 输入为智能合约,输出为Go源码包。
使用示例:

  1. $ abigen --abi token.abi --pkg main --type Token --out token.go

这里可以查询智能合约与ABI定义
这里可以查询在Go环境中调用智能合约

2.3 bootnode

bootnode是一个超简化版的Ethereum客户端,相比正常的客户端,它只运行节点发现协议,而不执行任何其它更高级的协议。
从用途上来讲,** bootnode是一个节点发现工具 ** 。Ethereum节点在启动时需要告之至少一个对等节点,这样才能接入整个以太坊网络,bootnode相当于一个第三方的中介,node在启动时会将自己的信息注册到bootnode的路由中,并且会从bootnode得到其它节点的路由信息,一旦有了对等节点信息后就可以不需要连接bootnode。

注意:公有链的节点硬编码了一些bootnode节点地址;在私链中该模块也常常用于引导发现p2p节点。

2.4 evm

开发环境下的Ethereum虚拟机。 该模块可以隔离运行字节代码,用于Ethereum字节代码(EVM opcodes)调试。

例如调试字节代码"60ff60ff",可以看到gas消耗和内存变化。

  1. testuser0@ubuntu:~/temp/testeth$ evm --code 60ff60ff --debug run
  2. 0x
  3. #### TRACE ####
  4. PUSH1           pc=00000000 gas=10000000000 cost=3
  5.  
  6. PUSH1           pc=00000002 gas=9999999997 cost=3
  7. Stack:
  8. 00000000  00000000000000000000000000000000000000000000000000000000000000ff
  9.  
  10. STOP            pc=00000004 gas=9999999994 cost=0
  11. Stack:
  12. 00000000  00000000000000000000000000000000000000000000000000000000000000ff
  13. 00000001  00000000000000000000000000000000000000000000000000000000000000ff
  14.  
  15. #### LOGS ####

2.5 gethrpctest

支持RPC测试的一个模块。
这里可以查询ethereum RPC API.

2.6 rlpdump

RLP格式二进制代码的解析器。
这里可以查询RLP格式.
因为通常环境下RLP数据长度都不太长,熟悉RLP格式的可以自行解析。
示例是解析一个RLP格式的交易数据:

  1. testuser0@ubuntu:~/temp/testeth$ rlpdump --hex f9016c827542843b9aca008344aa209407deced930a6a10ea7bd0b64519287cec8ada9a580b90104a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a4656467876420000000000000000000000000000000000001ba0a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51a067d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf
  2. [
  3.   "uB",
  4.   3b9aca00,
  5.   44aa20,
  6.   07deced930a6a10ea7bd0b64519287cec8ada9a5,
  7.   "",
  8.   a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a465646787642000000000000000000000000000000000000,
  9.   1b,
  10.   a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51,
  11.   67d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf,
  12. ]

2.7 swarm

swarm是一个分布式存储平台以及内容分发服务,是一个以太坊Web3栈的一个本土服务层。swarm的最主要目标是为以太坊公共记录,尤其是Dapp代码与数据以及区块数据提供一个足够去中心化以及足够重复的存储。
这里查询Swarm 工程的更多信息.
这里有一个Swarm简易教程.

2.8 puppeth

基于命令行的向导,辅助创建一个新的Ethereum网络。

3 引用

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号