参考链接

准备工作

  • 为方便使用可以将编译得到的二进制可执行文件geth拷贝到我们的测试工作目录${HOME}/test
  • 使用geth创建一个账户,输入密码,获得账户地址${ADDR}
1
./geth --datadir data account new 
  • 创建genesis.json,输入以下内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "40000",
    "gasLimit": "210000000",
    "alloc": {
        "${ADDR}":{
            "balance": "100000000000000000000000"
        }
    }
}
  • genesis.json的解释
    • chainId: 链id,以太坊主网id为1,测试网id为3,Rinkeby网为4。这里我们选个大于10的随机数就行
    • difficulty: 难度系数,这里设得很小,40000,这样交易确认会比较快,方便调试
    • gasLimit: block消耗gas上限,不能太小,不然合约交易无法成功。这里210000000,在官方建议的基础上多加了2个0
    • alloc 为特定账户分配balance,${ADDR}替换为上一步中获得的实际账户地址

首次启动私有网络

  • 建立创世block
1
./geth --datadir data init genesis.json
  • 启动js控制台
1
./geth --datadir data console
  • 至此,私有网络成功运行

基本console操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
eth.accouts //返回所有账户
eth.coinbase //返回挖矿账户地址,默认是eth.account[0]
eth.getBalance("${ADDR}") //返回我们最开始创建的账户余额,看看是不是genesis.json 中分配的数额
personal.newAccount() //建立新账户
personal.unlockAccount("${ADDR}") //解锁账户,以便发起交易
eth.sendTransaction({from:"${ADDR}",to:"${ADDR2}",value:web3.toWei('1', 'ether'}) //发起交易,从${ADDR}向${ADDR2}转入1ether
miner.start(4) //启动4个线程进行挖矿,需要通过挖矿,交易才能够被确认
miner.stop() //停止挖矿
eth.getBlock(${BlockNum}) //可以看到对应block的信息, 输入参数也可以是block的hash值
eth.getTransaction(${TxHash}) //获得对应交易的信息

持续学习中,理解可能有误,敬请谅解

版权所有,转载请注明来源