以太坊_POA_部署

cd $GOPATH/src/github.com/ethereum

1. 下载源码

git clone  https://gitee.com/xgqnytz/go-ethereum.git

cd go-ethereum && git checkout v1.8.27

make geth

make all

export PATH=$PATH:/work/src/github.com/ethereum/go-ethereum/build/bin

安装后检查:

geth version

2. 初始化配置

工作路径在 /work/geth

mkdir -p /work/geth

cd /work/geth

创建两个文件夹存放节点数数据,地址信息等

mkdir node1 node2

  $ geth --datadir node1 account new

  $ geth --datadir node2 account new


这两条命令会在两个文件夹下生成两个地址

此步骤主要生成用户的keystore密钥文件,有此文件才能将账户添加进区块链

注:此命令需要输入2次账户密码,会返回账户地址以及私钥

--datadir:设置数据储存地址

account new:account:账户管理命令,new:生成新账户,会在数据目录下创建keystore目录,存放一个账

户的秘钥文件


生成genesis.json

go-ethereum自带puppeth工具, 可以方便地部署支持PoA的以太坊私链

初次使用可采用下面的流程:

$ puppeth 

依次 让你选择

1 :自定义这个网络的名称,也是你的genesis文件的名称

2 : 选择第二个 Configure new genesis 

3 : 选择第一个 Create new genesis from scratch

4 : 选择第二个  proof-of-authority (POA共识)

5 : 自定义出块的时间间隔,默认单位为s 这里测试 输入 10   输入0的话,就是有交易才出块

6 : 配置初始参与共识的地址,也就是指定矿工,这里输入上面命令生成的两个地址,每输入一个地址回车一次,不输入时直接回车进入下一环

7 : token的发放,与上一环类似,自行配置地址接受奖励

8 : 默认回车就行,给一个预编译地址预留1 wei

9 : chain/network ID 默认回车,系统会随机生成

以上 配置完成后,选择第2条 Manage existing genesis ,

然后选择导出 Export genesis configurations 导出genesis文件,可自行配置名称

以上完成后,ctr+c 终端命令 退出

默认条件下 当前目录下 生成 .json 的配置文件

3. 启动节点,在两个终端上执行,工作路径同样,


node1:

geth --datadir node1 init dev_net.json

nohup geth --datadir node1 --port 3000  --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner"  --ws --wsaddr 0.0.0.0 --wsport 7777 --wsorigins "*" --wsapi "eth,web3,net" --syncmode "full"  >nohup1.out 2>&1 &

networkid 与配置文件的chainid要相同

geth --datadir node1 --port 3000 --networkid 7777 --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner"  --ws --wsaddr 0.0.0.0 --wsport 7777 --wsorigins "*" --wsapi "eth,web3,net" --syncmode "full"  console

node2:

geth --datadir node2 init dev_net.json

nohup geth --datadir node2 --port 3001  --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8546 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner" --syncmode "full"  >nohup1.out 2>&1 &

geth --datadir node2 --port 3001  --nodiscover --rpc --rpcaddr 0.0.0.0 --rpcport 8546 --rpccorsdomain "*" --rpcapi "db,eth,net,web3,personal,miner" --syncmode "full"  console

** nohup 是挂在后台启动

调起终端

geth attach node1/geth.ipc

geth attach node2/geth.ipc

node1 node2 互相添加节点信息


两个终端分别执行下

admin.nodeInfo.enode 获取当前节点连接信息,返回的结果,用于他人跟你建立连接

admin.addPeer()      新增连接,参数为上一步的输出


常用Api:

解锁账户 地址,密码,时间

personal.unlockAccount(eth.coinbase,"123",0)

配置默认账户

eth.defaultAccount = eth.coinbase


启动挖矿

miner.start()

miner.stop()

有其他错误时,需先关闭挖矿,再重新操作

发送交易:

> var tx = {from: "7a71d798974654bc44556c67264a6485164de482", to: "ea32a2271f04f0a8671caf21c5680c9d1384dcff", value: web3.toWei(1.23, "ether")}

undefined

> personal.sendTransaction(tx, "123")

开启ws  参数为 地址  端口 要使用的跨域资源标头,api模块

admin.startWS("0.0.0.0",7000,"*","eth,net,web3")

admin.stopWS()

var tx = {from: "0x10c2d051712cd45e09a5b3d0688326c3242cf26a", to: "0xa504e4a8582306310f8c475738d8fa961366f810", value: web3.toWei(1.23, "ether")}

personal.sendTransaction(tx, "123")



以太坊浏览器

https://github.com/ethereumclassic/explorer

按照readme 修改相关配置文件  启动



安装nodejs

wget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xz

xz -d node-v9.3.0-linux-x64.tar.xz

tar cvf  node-v9.3.0-linux-x64.tar.xz -C /usr/local

mv /usr/local/node-v9.3.0-linux-x64 node

增加环境变量:

vim /etc/profile

export PATH=$PATH:/usr/local/node/bin

你可能感兴趣的:(以太坊_POA_部署)