1、创建私有链专门的data目录:
2、创建创世区块json文件,一般命名为genesis.json,并将其放到私有链目录下:
{
"config": {
"chainId": 111,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
各个参数说明:
Chainid说明:
如果你自己想要在创世区块中预设一些账户,可以在alloc中加入参数配置,例如:
{
"config": {
"chainId": 111,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
可以使用以下命令初始化创世区块,注意,需要指定私有链数据的存放目录、创世区块文件genesis.json的
目录(根据自己的情况来调整):
geth --datadir /home/r00t/Private_eth/eth1 init genesis.json
之后可以使用tree命令以树结构显示datadir的目录结构(可以发现新增了不少文件)
注意: 这里的/geth/chaindata用于存放区块数据,/keysotre用于存放账户数据。
启动命令如下(注意:以上命令中的端口号、ip地址、以及networkid要自己更换成自己的才可以使用,根据环境而定。):
sudo geth --networkid 111 --datadir /home/r00t/Private_eth/eth1 --identity "node1" --rpc --rpcport "8545" --rpcaddr "192.168.11.193" --nodiscover --rpcapi "eth,net,web3,personal.admin,shhh,txpool,debug,miner" console
参数说明:
1、创建账户(参数为账户密码)
如上图所示,当账户成功创建之后,会返回一个地址,改地址是该账户公钥的后20字节,通常会以“0x”开头,并使用16进制表示。
2、查询账户列表
可以看到当查询账户时,会返回一个数组,在这种情况下如果你想知道指定账户的地址,那么你可以进行如下操作:
当然,你也可以使用以下方式获取账户列表:
3、查询账户余额
可以通过以下三种方式获取账户余额,由于是新建的账户所以余额为0,也不足为奇,后面会通过挖矿来获取。
4、查看矿工的账户地址
注:这里的coinbase默认为链中的第一个账户地址
5、设置矿工的账户地址,即奖励地址
设置eth.accounts[1]为挖矿的账户地址之后,再次查询挖矿的账户地址显示为eth.accounts[1]的值。
6、挖矿操作
start 的参数表示挖矿使用的线程数,第一次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢。等进度达到 100% 后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
等DAG完成后,会出现大量的挖矿操作,如下图所示(这个图标还是挺好看的哦!)
当出现好多,表明挖到了很多矿,这时可以停止挖矿,然后查看矿工账户的余额。
7、停止挖矿
注意:1 ether = 1e18 wei,使用eth.getBalance()获取到的账户余额默认返回的单位是wei
你也可以使用ether作为单位,返回账户余额,与上面的常结果相对应
8、账户转账
a、解锁账户
我们打算从eth.accounts[0]
向eth.accounts[1]
转账,转账之前需要先解锁eth.accounts[0]
:
b、开始转账
在这个时候我们的交易会在交易池中等待打包,直到被打包完成后才会完成该交易,我们查看一下交易池,会发现有一个交易在padding中:
为了完成交易我们需要再次挖矿,之后再次看交易信息:
之后我们查看已提交但还未被处理的交易,目前没有已提交但还未被处理的交易
9、查看交易和区块总数
a.查看当前区块总数
b.根据刚才发起的交易hash值查询发起交易时的详情
c、根据刚刚执行eth.sendTransaction()返回的交易hash值,返回一个交易的收据。
注意:处于pending状态的交易,收据是不可用的。
10、查询区块
a、查询最新区块
b、根据区块Number或Hash查询区块
写作不易,请作者喝杯奶茶或可乐吧!