简单说,是以太坊客户端。以太坊客户端主要分成两类。
如:geth(go语言),parity(Rust语言),他们是一个与以太坊网络交互的命令行客户端。
另外的命令行客户端还有 ethereumjs-lib(javascript),pyethapp(python),ruby-ethereum(ruby),其中geth 使用的比较普遍。
Etherum Wallet 是属于可视化钱包,提供界面展示,更为直观。我们在geth 客户端中生成的用户,以太坊币数量可以通过Etherum Wallet 钱包可视化展示。当然Etherum Wallet 不只有这些简单的功能,最重要的是能部署智能合约,发布,调用。其他还有很多轻钱包,如 lightWallet,metamask等
1.ubuntu16.04 64位
2.golang (1.10.3)
3.geth (1.8.12)
4.Etherum Wallet (Etherum-Wallet-liunx64-0-11-1.zip)
geth依赖golang(版本不能低于1.7),
下载:https://golang.org/dl/
本文下载的是go1.10.3.liunx-amd64.tar.gz
下载后,解压到/usr/local/目录
> tar -C /usr/local/ -xvf go1.10.3.linux-amd64.tar.gz
添加环境变量:
> vi /etc/profile
在打开的文件profile中追加内容:
#golang
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOARCH=amd64 # 注意这个坑
坑描述:
跨平台交叉编译涉及两个重要的环境变量:GOOS和GOARCH,分别代表Target Host OS和Target Host ARCH,如果没有显式设置这些环境变量,我们通过go env可以看到go编译器眼中这两个环境变量的当前值:
> go env
GOARCH 为386 或者amd64。如果此项配置错误,在编译安装其他程序时会报错:
go install: cannot install cross-compiled binaries when GOBIN is set
执行命令,使profile生效:
> source /etc/profile
golang安装部署完成,测试:
> go version
go version go1.10.3 linux/amd64
编写hello world程序,测试:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
存储为hello.go
运行hello.go
> go run hello.go
Hello World!
geth官网:https://geth.ethereum.org/
geth下载地址:https://github.com/ethereum/go-ethereum
解压 go-ethereum-master.zip,编译安装
> unzip go-ethereum-master.zip
> cd go-ethereum-master
> make all
在go-ethereum-master目录下会生成build目录,在build目录下执行命令,查看是否安装成功:
> ./bin/geth help
将build文件夹移动到/usr/local/,并重命名为geth。
将geth配置到环境变量,在/etc/profile文件中追加一下内容:
> mv ./build /usr/local/ETH/geth
> vi /etc/profile
...
#geth
export GETH_HOME=/usr/local/ETH/geth/bin
export PATH=$PATH:$GETH_HOME
...
> source /etc/profile
> geth help
...
ETH官网:https://www.ethereum.org/
Etherum Wallet下载地址:https://github.com/ethereum/mist/releases/tag/v0.11.0
注意:
此下载地址中有Etherum Wallet、Mist;ubuntu系统下,Mist链接私链后,账户能显示,但不能做其他操作(原因未知),换用Etherum Wallet后,转账等可正常操作
下载后,解压到/usr/local/ETH/mist目录
直接运行etherumwallet文件即可
将Etherum Wallet配置到环境变量,在/etc/profile文件中追加一下内容:
> vi /etc/profile
...
#Etherum Wallet
export EW_HOME=/usr/local/ETH/EtherumWallet/
export PATH=$PATH:$EW_HOME
...
> source /etc/profile
> etherumwallet
...
新建文件genesis.json,内容如下
{
"config": {
"chainId": 101,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x400",
"extraData": "",
"gasLimit": "0xffffffff",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
参数说明:
chainId : 以太坊区块链网络Id,ethereum主链是1,私有链只用不要与主链冲突即可。
alloc : 预留账户,如下
“alloc”:{
“0x0000000000000000000000000000000000000001”:{“balance”:”121312321”},
“0x0000000000000000000000000000000000000002”:{“balance”:”121312321”},
}
Coinbase: 旷工账户
Difficulty: 挖矿难度,0x400,这个是简单。
extraData:相当于备注
gasLimit:最小消耗gas
nonce : 64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊黄皮书中的要求
parentHash : 上一个区块的Hash值,因为是创世块,石头里蹦出来的,没有在它前面的,所以是0
Timestamp : 时间戳
在桌面新建目录EthDBSpace,执行初始化命令:
> cd ~/Desktop
> mkdir EthDBSpace
> geth --datadir EthDBSpace init genesis.json # genesis.json文件在桌面
注意:
记得去查看下EthDBSpace文件夹下的文件变化
简洁点的命令:
> geth --datadir ./ console # ./是你之前创建的EthDBSpace文件夹地址
> geth --identity node1 --datadir ./EthDBSpace --rpc
--rpcapi db,eth,net,web3 --rpcaddr 127.0.0.1
--rpcport 8481 --port 30301 --networkid 29381 console
使用命令 geth -h 可以查看geth 相关的帮助文档。这里我说几个常用的属性。
- -Identity : 节点身份标识,起个名字
- -datadir : 指定节点存在位置,“data0”
- -rpc : 启用http-rpc服务器
- -rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db…
- -rpcaddr : http-rpc服务器接口地址:默认“127.0.0.1”
- -rpcport : http-rpc 端口(多节点时,不要重复)
- -port : 节点端口号(多节点时,不要重复)
- -networkid : 网络标识符 随便指定一个id(确保多节点是统一网络,保持一致)
执行6.1命令后,会进入命令行,在命令行下,创建账户,并启动挖矿:
> personal.newAccount("123456")
> miner.start()
其他geth常用命令:
1.创建账户(可创建多个)
> personal.newAccount("123456")
2.获取账户数组
> eth.accounts
3.解锁账户,转账时可使用
> personal.unlockAccount(eth.accounts[0], "123456")
4.节点主账户
> eth.coinbase
5.查看账户余额
> eth.getBalance(eth.accounts[0])
6.启动,结束挖矿,写区块
> miner.start()
> ...
> miner.stop()
在执行6.1命令时,最后一行打印的是url,即geth.ipc文件路径,在这里会用到:
开启新的终端,执行Etherum Wallet启动命令:
> ethereumwallet --rpc geth.ipc文件路径
Etherum Walle启动后的界面:(我这里创建了3个账户)
选中某个账户,点击Etherum Wallet上方的“SEND”,进入转账界面,填入收款账户,提交即可。
注:
开启挖矿,才能转出成功。
如果你的Etherum Wallet中某个账户一直显示没有收到账款,可以尝试重启下Etherum Wallet。
注:
Transfer Ether & Tokens 为收款功能
参考资料:https://www.cnblogs.com/sumingk/articles/9030469.html