主页 > imtoken官网版下载地址 > 打造以太坊私链挖矿
打造以太坊私链挖矿
安装客户端
安装 Gth,这是用 Go 语言实现的以太坊客户端(go-ethereum)。
brew tap ethereum/ethereum
brew install ethereum
配置初始状态
创建一个新的 ethdev 目录
mkdir ethdev
cd ethdev
配置私有链网络初始状态以太坊私链搭建,新建genesis.json
{
"config": {
"chainId": 22,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
chainId 指定一个独立的区块链网络的ID,不同网络的节点不能相互连接。 配置文件还配置了当前挖矿难度difficulty和区块gas消耗上限gasLimit。
参数详解:Genesis block
geth --datadir "~/ethdev" init ethdev/genesis.json
此时会在当前geths目录下新增两个文件夹geth和keystore
geth中存储的是区块链的相关数据
keystore 将用户信息保存在链中
以太坊客户端启动:
geth --datadir ./ console
登录成功后可以查看账户信息,当前有哪些账户
> eth.accounts
["0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"]
创建账户
我在本地创建了两个帐户
创建另一个:
> personal.newAccount('123')
"0x49d2b94b9da2b7f224b5b6b00aa77692dcad31fc"
通过上面的personal.newAccount传入password参数可以创建一个新的账号,并返回新的账号地址;
在keystore中可以看到新建的账户文件
图片.png
本文件应妥善保管,不得泄露给他人。
可以将帐户分配给以太坊客户端中的变量
> user1=eth.accounts[0]
"0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"
然后您可以查看当前账户余额:
> eth.getBalance(user1)
0
> eth.blockNumber
0
可以查看user1当前余额为0,默认也是0块,因为还没有开始挖矿
开始挖矿
> miner.start()
true
打开上面的开发文件监控界面,可以看到挖矿区块的状态:
然后切换回以太坊挖矿平台以太坊私链搭建,查看用户余额:
> eth.getBalance(user1)
1.25890625e+21
> eth.getBalance(user2)
0
我看到1号账户,已经有余额了,2号账户还是0,因为挖矿的奖励进入了第一个账户。
立即停止挖矿:
> miner.stop()
true
已经停止成功,日志界面也停止输出
再次查看当前区块高度:
> eth.blockNumber
288
现在账户 2 没有余额,我们将一些以太币从账户 1 转移到账户 2:
> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
account is locked
at web3.js:3119:20
at web3.js:6023:15
at web3.js:4995:36
at :1:1
由于默认账户被锁定,先解锁账户,再转账,先查看当前账户,再解锁:
> eth.accounts
["0x73e8655a84a37685d98891b7a9333a7423e12cb3", "0xa9d6dfff13c1050f19a8ffc2811c68842797d01c", "0xe30cecc37776895389b94033ac65eb3b98294659"]
> personal.unlockAccount('0x73e8655a84a37685d98891b7a9333a7423e12cb3','11111111')
true
以上已经说明解锁成功,接下来继续传输:
> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
"0x8f164a1296b618bdd64fcc007f6d39ce022b57e257beefeb76288cdef220ad80"
> eth.getBalance(user2)
0
上面已经说明转账成功了,但是user2的账户余额还是0,因为没有矿工挖矿。 我们启动一个矿工并在另一个终端上检查日志
日志已经显示开始挖矿并发交易是在区块 293 中处理的,
> miner.start()
true
> miner.stop()
true
> eth.getBalance(user2)
3000000000000000000
再次查看余额时,user2已经有3个以太币,转账交易完成;
快速搭建以太坊私有链脚本