{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
2. 然后初始化私有链网络。第一次遇到问题:
第一次是因为之前运行了以太坊的公有链,默认数据存放文件夹已经有创世区块。第二次规定了新建的私有链的数据文件存放位置,创建成功,如下图:
3. 启动节点
命令为geth --datadir ./data/00 --networkid 666 console //这个666是私有链的id,要和genesis.json文件中的chainid一致,并且不能设置为1(以太坊主网id)。结果如下:
4. 私有链搭建完毕,然后使用personal.newAccount("123456")添加私有链中的账户 ,输入参数123456就是密码,账户地址保存在keystore目录下 。账户密码是以hash-128的密文形式存储的。
1. 使用miner.start(x)开始挖矿,x是挖矿的内核数可以不填。
2. 然后使用miner.stop()停止挖矿。
3. 然后我们就可以通过eth.getBalance(eth.accounts[0]) 查看挖矿账户余额(单位是wei),默认的挖矿账户是当前账户列表中的第一个。可以通过web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')将wei转换成ether。
注意:我们可以使用miner.setEtherbase(eth.accounts[1]) 设置挖矿账户;通过eth.coinbase查看挖矿账户;通过miner.start();admin.sleepBlocks(1);miner.stop() 设置账号成功挖到一次矿后就停止。
4. 我们可以通过eth.blockNumber查询私有链中的区块数量,通过eth.getBlock(X)来获取区块内容。
1. 再产生一个账户准备接受代币
2. 发送交易:在交易过程中,无论交易的代币是什么,都需要把这些代币转为 wei 存储在以太坊区块链中。所以我们首先要确定转账数量amount,之前挖矿的时间有点长了,现在账户0 有4655个币,挖出来931个区块。那就先转2000个币给账户1吧。
当然,其中的eth.account[0]和[1]可以用地址替代,amount也可以直接使用web3.toWei(2000,’ether’)。发生错误的原因是发起交易的账户必须解锁。
3. 解锁,发送交易:当然也可以使用personal.unlockAccount(地址,密码)的方式解锁。重新发送成功。
4. 不过,目前账户1是看不到账户0给他的转帐的,因为没有产生新的区块。于是,再让账户0产生一个新区块。
5. 再看一下两个账户的金额
6. 再看一下区块信息
7. 再看下交易信息
eth:包含一些跟操作区块链相关的方法
net:包含以下查看p2p网络状态的方法
admin:包含一些与管理节点相关的方法
miner:包含启动&停止挖矿的一些方法
personal:主要包含一些管理账户的方法
txpool:包含一些查看交易内存池的方法
web3:包含了以上对象,还包含一些单位换算的方法