1. 初始化私有链
1.1 创世区块配置文件
在绝对路径 /home/vagrant/ 下创建 genesis.json(文件名可换成其他,下面进行操作时,文件名保持一致即可)文件,内容为:
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
注意:Windows 系统下,需要注意文件编码为 UTF-8,LF 格式换行。 参数简介:
参数 | 描述 |
---|---|
alloc | 用来预置账号以及账号的以太币数量,因为私有链挖矿简单,所以不需要预置有币的账号,需要的时候可以自己创建 |
coinbase | 矿工的账号,随便填 |
difficulty | 设置当前区块的难度,值越大,难度越大,越难挖矿,私有链可将该值设置小点,容易挖矿 |
extraData | 附加信息,随便填 |
gasLimit | GAS 的消耗总量限制,用来限制区块能包含的交易信息总和,最大值:0x0000ffff |
nonce | 一个 64 位随机数,用于挖矿,注意它和 mixhash 的设置需要满足以太坊的 Yellow paper,4.3.4. Block Header Validity,(44) 章节所描述的条件 |
mixhash | 与 nonce 配合用于挖矿,由于上一个区块的一部分生成的 hash |
parentHash | 上一个区块的 hash 值,只有创世块的该值为 0,因为创世块是第一个区块 |
timestamp | 设置创世块的时间戳 |
1.2 写入创世区块
在绝对路径 /home/vagrant/ 下执行下面命令进行初始化:
geth --datadir /home/vagrant/node init genesis.json
参数简介:
参数 | 描述 |
---|---|
datadir | 指定数据目录,不同节点指定不同目录,注意所指目录权限 |
init | 初始化命令,这里指定 genesis.json 为配置文件 |
2. 启动一个私有链节点
执行下面命令进行私有链节点的启动,开发方式登录:
geth --identity "private ethereum" --rpc --rpccorsdomain "*" --datadir "/home/vagrant/node" --port "30303" --rpcapi "db,eth,net,web3" --networkid "95518" console
参数简介:
参数 | 描述 |
---|---|
identity | 区块链的标识,用于标识目前网络的名字 |
rpc | 启动 RPC 通信,可以进行智能合约的部署和测试 |
rpccorsdomain | 逗号分隔的域列表,用来接受交叉源请求(浏览器强制执行) |
datadir | 设置当前区块链网络数据存放的位置 |
port | 网络监听端口 |
rpcapi | 设置允许连接的 RPC 的客户端,一般为 db, eth,net,web3 |
networkid | 设置当前区块链的网络 ID,用于区分不同的网络 |
console | 启动命令行模式,方便执行命令 |
运行后台服务需要去掉 console,否则会自动停止:
nohup geth --identity "private etherum" --rpc --rpccorsdomain "*" --datadir "/home/vagrant/node" --port "30303" --rpcapi "db,eth,net,web3" --networkid "95518" &
会在 /home/vagrant/data0/chain 目录生成 geth.ipc 文件,可以通过执行下面命令连接 geth:
geth attach ipc:/home/vagrant/node/chain/geth.ipc
参考 get attach 可以通过下面几种方式进行连接:
geth attach ipc:/some/costom/path
geth attach http://192.168.1.1:8545
geth attach ws://192.168.1.1:8545
3. console 下的操作
3.1 用户
3.1.1 用户列表
eth.accounts
3.1.2 添加用户
personal.newAccount('密码')
3.1.3 解锁用户
personal.unlockAccount('用户值', '对应密码')
补充示例:
user1=eth.accounts[0]
user2=eth.accounts[1]
personal.unlockAccount(user1, '123456')
3.1.4 发送交易
eth.sendTransaction({from:user1, to:user2, value:web3.toWei(3,"ether")})
补充说明:交易之前,需要解锁用户 user1,交易之后,需要执行挖矿操作让交易有效。
3.1.5 查看余额
eth.getBalance(user1)
3.2 挖矿
3.2.1 开始
miner.start()
3.2.2 结束
miner.stop()
3.2.3 查看区块数量
eth.blockNumber
3.2.4 获取区块信息
eth.getBlock(1)
3.3 节点
3.3.1 获取节点信息
admin.nodeInfo
admin.nodeInfo.enode
admin.nodeInfo.id
admin.nodeInfo.ports.listener