做淘宝必备网站,天津有哪些有名的网站建设公司,上海企业免费建站,广西南宁最新新闻事件1、搭建私链所需环境
操作系统#xff1a;ubuntu16.04#xff0c;开虚拟机的话要至少4G#xff0c;否则会影响测试挖矿时的速度
软件#xff1a; geth客户端 Mist和Ethereum Wallet#xff1a;Releases ethereum/mist GitHub
2、安装geth客户端 sudo apt-get update
…
1、搭建私链所需环境
操作系统ubuntu16.04开虚拟机的话要至少4G否则会影响测试挖矿时的速度
软件 geth客户端 Mist和Ethereum WalletReleases · ethereum/mist · GitHub
2、安装geth客户端 sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereum 安装完成后输入geth -h如果有列出信息则说明安装成功可查看列出信息方便后续的操作 3、创建创始块
1创建以太坊初始区块文件 genesis.json
作为区块链链子总要有个头所以需要创建一个创世块作为头部才好往下添加创世文件名称命名为genesis.json数据目录存放在/home/cll/privateDemo/data1genesis.json存放在/home/cll/ privateDemo/
cat genesis.json
输入 {config: {chainId: 411,homesteadBlock: 0,eip155Block: 0,eip158Block: 0},nonce: 0x0000000000000033,timestamp: 0x0,parentHash: 0x0000000000000000000000000000000000000000000000000000000000000000,gasLimit: 0x8000000,difficulty: 0x100,mixhash: 0x0000000000000000000000000000000000000000000000000000000000000000,coinbase:0x0000000000000000000000000000000000000000,alloc: {0x1C83C95473e1e93A2C8560c73976dAFA9C3f0a79:{balance:1000000}}
} 查看
cat genesis.json
部分字段解释
chainId : 以太坊区块链网络Idethereum主链是1私有链只用不要与主链冲突即可。
alloc : 预留账户如下
coinbase: 旷工账户
difficulty: 挖矿难度
extraData相当于备注
gasLimit最小消耗gas
nonce : 64位随机数用于挖矿注意他和mixhash的设置需要满足以太坊黄皮书中的要求
parentHash : 上一个区块的Hash值因为是创世块没有在它前面的所以是0
timestamp : 时间戳
2初始化区块节点
geth --datadir data1 init genesis.json
3启动geth客户端节点
geth --identity data1 --rpc --rpcport 8000 --rpccorsdomain * --datadir data1 --port 30303 --rpcapi db,eth,net,web3 --networkid 999 console 2data1/geth.log
geth常用属性
--Identity : 节点身份标识起个名字
--datadir : 指定节点存在位置“data1”
--rpc : 启用http-rpc服务器
--rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db...
--rpcaddr : http-rpc服务器接口地址默认“127.0.0.1”
--rpcport : http-rpc 端口(多节点时不要重复)
--port : 节点端口号多节点时不要重复
--networkid : 网络标识符 随便指定一个id确保多节点是统一网络保持一致 4geth常用命令 #创建账户
personal.newAccount(123456)#获取账户数组
eth.accounts#解锁账户转账时可使用
personal.unlockAccount(eth.accounts[0], 123456)#节点主账户
eth.coinbase#查看账户余额
eth.getBalance(eth.accounts[0])#启动结束挖矿写区块
miner.start() miner.stop()#查看区块数量
eth.blockNumber4、配置多节点服务
1再初始化一个节点与上一个节点使用同一个genesis.json
privateDemo目录
geth --datadir data2 init genesis.json
2启动新节点
privateDemo目录
geth --identity data2 --rpc --rpcport 8001 --rpccorsdomain * --datadir data2 --port 30306 --rpcapi db,eth,net,web3 --networkid 999 console 2data2/geth.log
注如果在同一台电脑上这两个端口号与之前的节点不能相同
3查看新节点enode信息
admin.nodeInfo.enode
4主节点添加新节点使两节点连在同一个私有链上
在data1终端下输入新节点data2的enode信息
例如
admin.addpeer(enode://d4f64272de882d2e2ccefc6466c6580ddecd253f5c9d87f977ac3881cbea7b141c07681ea605c53af5815cbfc25b5138b9ddb07be61b757850a55b7197939ba4127.0.0.1:30306)
5检查两节点是否已连接
首先使用命令admin.nodeInfo查看结果是否为空[]或者net.peerCount查看是否为0这里有点问题有时候由于某些原因可能网络不稳定添加完后是[]和0有时候又显示有同伴另外在其中一个节点启动挖矿命令 miner.start()看另一个节点是否也同步可以使用命令行跟踪data1目录tail -f geth.log。 4、Mist连接私链
1以rpc方式打开访问ipc接口方式打开mist钱包
“mist应用所在路径” –rpc “节点geth.ipc所在目录”
例如
“/home/cll/ethereum/mist/mist” –rpc “/home/cll/privateDemo/data1/geth.ipc”
2只读的http方式打开钱包。不能转账不能部署合约
“/home/cll/ethereum/mist/mist” –rpc http://127.0.0.1:8000
5、在Mist上部署智能合约
点击CONTRACTS-点击DEPLOY NEW CONTRACT-选择账户编写合约内容-最底下点击DEPLOY。成功提交后等待挖矿确认确认的合约会显示在CONTRACTS页面点击合约即可进行相关操作。