go-ethereum 搭建本地测试私有链

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附加信息,随便填
gasLimitGAS 的消耗总量限制,用来限制区块能包含的交易信息总和,最大值: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/data0 init genesis.json

参数简介:

参数描述
datadir指定数据目录,不同节点指定不同目录,注意所指目录权限
init初始化命令,这里指定 genesis.json 为配置文件

2. 启动一个私有链节点

执行下面命令进行私有链节点的启动,开发方式登录:

geth --identity "private ethereum" --rpc --rpccorsdomain "*" --datadir "/home/vagrant/data0/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 console --dev

参数简介:

参数描述
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/data0/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 --dev &

会在 /home/vagrant/data0/chain 目录生成 geth.ipc 文件,可以通过执行下面命令连接 geth:

geth attach ipc:/home/vagrant/data0/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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值