Ethereum(1)—— 基本介绍
1 环境安装
安装Ethereum 协议的Go语言的最新实现。
git clone https://github.com/ethereum/go-ethereum.git
make all
cd build/bin
sudo cp * /usr/local/bin/
2 Ethereum组成
Ethereum包含以下几大模块。
| 模块 | 介绍 |
|---|---|
geth |
基于命令行的Ethereum客户端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式. |
abigen |
源代码生成工具。将Ethereum 合约转换为Go源码包,供其它Go模块调用. |
bootnode |
bootnode是一个超简化版的Ethereum客户端,相比正常的客户端,它只运行节点发现协议,而不执行任何其它更高级的协议。 |
evm |
开发环境下的Ethereum虚拟机。 |
gethrpctest |
支持RPC测试的一个模块。 |
rlpdump |
RLP数据解析器,在开发环境中常用。 |
swarm |
一个分布式存储平台以及内容分发服务. |
puppeth |
基于命令行的向导,辅助创建一个新得Ethereum网络. |
2.1 geth
基于命令行的Ethereum客户端。使用JSON RPC格式,基于HTTP、WebSocket或者IPC(Inter-process Communications )方式.
这里能查询geth命令参数信息
通过命令能够进入JavaScript 交互环境:
geth attach ipc:/home/testuser0/.ethereum/privatechain/geth.ipc
交互环境中,可以使用 web3 JavaScript Dapp API 和 the admin API。
2.2 abigen
源代码生成工具。将Ethereum 合约转换为Go源码包,供其它Go模块调用. 输入为智能合约,输出为Go源码包。
使用示例:
$ 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消耗和内存变化。
testuser0@ubuntu:~/temp/testeth$ evm --code 60ff60ff --debug run
0x
#### TRACE ####
PUSH1 pc=00000000 gas=10000000000 cost=3
PUSH1 pc=00000002 gas=9999999997 cost=3
Stack:
00000000 00000000000000000000000000000000000000000000000000000000000000ff
STOP pc=00000004 gas=9999999994 cost=0
Stack:
00000000 00000000000000000000000000000000000000000000000000000000000000ff
00000001 00000000000000000000000000000000000000000000000000000000000000ff
#### LOGS ####
2.5 gethrpctest
支持RPC测试的一个模块。
这里可以查询ethereum RPC API.
2.6 rlpdump
RLP格式二进制代码的解析器。
这里可以查询RLP格式.
因为通常环境下RLP数据长度都不太长,熟悉RLP格式的可以自行解析。
示例是解析一个RLP格式的交易数据:
testuser0@ubuntu:~/temp/testeth$ rlpdump --hex f9016c827542843b9aca008344aa209407deced930a6a10ea7bd0b64519287cec8ada9a580b90104a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a4656467876420000000000000000000000000000000000001ba0a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51a067d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf
[
"uB",
3b9aca00,
44aa20,
07deced930a6a10ea7bd0b64519287cec8ada9a5,
"",
a1478ed0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000004033323033383138346365346334356163393463353066343838336364336530383433616161653238353933333462626461336630633536613466633031303632000000000000000000000000000000000000000000000000000000000000002e516d5444374b57386f48686f6a554e3147477a3577766366656d415a547072706b6137615357796a465646787642000000000000000000000000000000000000,
1b,
a03389252c276ac036c8c392cfcc8dd1b26c28eeed4ea970e0a628cf151ccc51,
67d49a382372b04b9d5dac3f00769f0e36dc3ebe7c9e1a4206710e7755c007bf,
]
2.7 swarm
swarm是一个分布式存储平台以及内容分发服务,是一个以太坊Web3栈的一个本土服务层。swarm的最主要目标是为以太坊公共记录,尤其是Dapp代码与数据以及区块数据提供一个足够去中心化以及足够重复的存储。
这里查询Swarm 工程的更多信息.
这里有一个Swarm简易教程.
2.8 puppeth
基于命令行的向导,辅助创建一个新的Ethereum网络。
3 引用
- [1] geth命令参数信息
- [2] web3 JavaScript Dapp API
- [3] the admin API
- [4] 智能合约与ABI定义
- [5] 在Go环境中调用智能合约
- [6] ethereum RPC API
- [7] RLP格式
- [8] Swarm 工程的更多信息
- [9] 一个Swarm简易教程
Ethereum(1)—— 基本介绍的更多相关文章
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- 一切为了解决隐私问题,绿洲实验室Ekiden协议介绍
绿洲实验室官网截图 下一代区块链平台的竞争已经悄然展开,每个月我们都能看到新成立的创业公司宣称,他们要采用区块链解决所有问题.大约80-90%的区块链项目,运行在像Ethereum这样的平台上. 创建 ...
- ethereum/EIPs-1
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md 介绍了什么是EIP等等的详细信息: eip title status type a ...
- ethereum/EIPs-100 挖矿难度计算
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-100.md 创世纪区块的难度是131,072,有一个特殊的公式用来计算之后的每个块的难度. ...
- ethereum发erc20token
以太坊发币智能合约代码简单介绍: 发币代码如下(https://ethereum.org/token#the-code网站中获得): pragma solidity ^; interface toke ...
- 以太坊客户端Ethereum Wallet与Geth区别简介
以太坊客户端Ethereum Wallet与Geth区别简介 最近有不少朋友在搭建交易平台,在咨询和技术交流的过程中发现很多朋友不太清楚Ethereum Wallet和Geth区别.甚至有朋友使用Ge ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
- Ethereum以太网搭建本地开放环境简明教程
引言: 区块链技术的风起云涌预示着一个去中心化时代的来临,ethereum技术栈是目前业界最为应用广泛的基于区块链技术的技术方案,本文将记录如何基于本地环境来搭建私有区块链的开发环境. 部署私有区块链 ...
- Browser-Solidity的本地安装及使用介绍
Browser-Solidity的本地安装及使用介绍 正所谓工欲善其事必先利其器,巧妇也难为无米之炊,所以在学习智能合约之前,必须要先把工具准备好.Browser-Solidity 是 Ethereu ...
随机推荐
- Python 离线 安装requests第三方库
一.介绍 requests是Python的一个HTTP客户端库,跟urllib,urllib2类似,不过requests的优势在于使用简单,相同一个功能,用requests实现起来代码量要少很多.毕竟 ...
- 【XSY3126】异或II 数学
题目描述 给你一个序列 \(a_0,a_1,\ldots,a_{n-1}\).你要进行 \(t\) 次操作,每次操作是把序列 \(x\) 变为序列 \(y\),满足 \(y_i=\oplus_{j=0 ...
- CF1120D(神奇的构造+最小生成树)
考虑把树展开,单独把叶子节点拿出来 于是可以把控制点\(x\)的,抽象成是在它叶子节点间连权值为\(c_x\)的边 显然只用在\(x\)子树的最左边的叶子节点和最右边的叶子节点的下一个节点连边(最后一 ...
- Matlab常用函数集锦
ndims(A)返回A的维数size(A)返回A各个维的最大元素个数length(A)返回max(size(A))[m,n]=size(A)如果A是二维数组,返回行数和列数nnz(A)返回A中非0元素 ...
- java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API
增加了一系列的字符串处理方法 如以下所示. // 判断字符串是否为空白 " ".isBlank(); // true // 去除首尾空白 " Javastack &quo ...
- android实用软件tasker应用设置
设置连接wifi和充电两个调试都满足的情况下打开同步和psiphon3:在端任意wifi是断开或断电时同步和关掉psiphon3. 其他没有问题去到关掉psiphon3时出现小意外,不能直接关闭程序( ...
- 使用vue-cli创建vue项目
vue-cli是官方发布的vue.js项目脚手架工具,使用它可以快速创建vue项目,github地址:https://github.com/vuejs/vue-cli 1.安装vue-cli //设置 ...
- Kubernetes之Deployment控制器
Deployment 简介 deployment 是用来管理无状态应用的,面向的集群的管理,而不是面向的是一个不可变的个体,举例:有一群鸭子,要吃掉一个,只需要再放一个新的鸭仔就好了,不会影响什么,而 ...
- MySQL查看SQL语句执行效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好 ...
- linux在线安装JDK(1.8版本)
在线下载JDK 命令: wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-sec ...