- 服务器IP ``` bockchain_test 47.94.227.171(弹性) 10.200.0.175(私有) blockchain-pro 47.94.217.135(弹性) 10.200.0.176(私有)
1. 传统POW方式是在/mnt/blockchain/目录下,创建genesis.json
config”: { “chainId”: 10, “homesteadBlock”: 0, “eip155Block”: 0, “eip158Block”: 0 },
“coinbase” : “0x0000000000000000000000000000000000000000”, “difficulty” : “0x400”, “extraData” : “0x00”, “gasLimit” : “0xffffffff”, “nonce” : “0xdeadbeefdeadbeef”, “mixhash” : “0x0000000000000000000000000000000000000000000000000000000000000000”, “parentHash” : “0x0000000000000000000000000000000000000000000000000000000000000000”, “timestamp” : “0x00”, “alloc” : {} }
本次部署不采用该种方式,采用POA方式 参见:Ethereum_19_POA.md
2. init 区块链初始化
在blockchain目录下执行
geth –datadir data0 init genesis.json //#init
3. geth 安装(1.7.2)
#出现如下问题 Ethereum private chain resets back to block 0 when restarted geth版本从1.8.2退回到1.7.3,不能从apt安装
#查看版本 geth version 如果还没有安装geth,请先安装,版本选择1.7.2
#安装 git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum git checkout v1.7.2 make geth make all
4. git 安装
#查看git版本 root@blockchain-test:/mnt/blockchain# git –version git version 2.7.4
#没有请先安装git root@blockchain-test:/mnt/blockchain# apt install git
5. go 安装(1.9.1)
#make geth需要go1.7版本以上,系统apt安装最新仅为1.6版本,我们安装最新版本1.9.1
#查看版本 go version
#安装 wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz sudo tar zxvf go1.9.1.linux-amd64.tar.gz -C /usr/local
#cd /etc #vi profile 在文件末尾加入
export GOROOT=/usr/local/go export GOBIN=$GOROOT/bin export GETHBIN=/mnt/blockchain/go-ethereum/build/bin export PATH=$PATH:$GOROOT/bin:$GETHBIN
source profile
6. add-apt-repository 安装
root@blockchain-test:/mnt/blockchain# apt install software-properties-common
7. 启动geth,必须在/mnt/blockchain/目录下执行
区块链初始化化
geth –datadir data0 init genesis.json //#init
#之后启动geth客户端 geth –datadir data0 –networkid 10 –rpc –rpcaddr 10.200.0.175 –rpcport 8545 –rpcapi “web3,eth” –rpccorsdomain “*” –unlock “0” –password “password.txt” –nodiscover console
#创建账户
eth.accounts personal.newAccount() 输入两次密码
eth.blockNumber eth.getBalance(eth.accounts[0])
personal.unlockAccount(eth.accounts[0]) 解锁账户,输入密码
Generating DAG in progress epoch=0 percentage=99
让dag 100% 走完
8. explorer 和 ipfs 参加其他文档
参见 Ethereum_11_explorer.md
9. 合约部署
-
将data0目录下的keystore文件取下 #sz fileName
-
config配置文件中,配置blockServerUrl,blockAccountPassWord,blockAccountPath
#可以部署到测试环境,注意keystore文件还要放到toshare项目的mnt目录
#可以在开发环境下,但文件需放到本地开发目录对应位置,并配置在config中 C:\Users\commando\AppData\Roaming\Ethereum\testnet\keystore 并加上.json扩展名
-
调用接口deployContract生成contractAddress,调用前也需要开启挖矿miner.start()
-
把合约地址配置到config文件,重启部署,启动服务
10. 最后
1.这些机器都在一个局域网中,他们都是内网的访问地址,目前访问的公网ip地址,是弹性公网,也就是说,在阿里云以外的网络可以访问, 但是在阿里云内部服务器之间访问,需要使用内网访问 阿里云内部机器之间,使用公网ip地址应该是无法进行访问的
(内部服务器调用,使用内网IP地址)
- explorer 端口修改为80
```