【区块链2.0实战学习笔记】————11、搭建以太坊私有链

前期准备

1、创建私有链专门的data目录:

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第1张图片

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"
}

各个参数说明:

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第2张图片

Chainid说明:

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第3张图片

如果你自己想要在创世区块中预设一些账户,可以在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

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第4张图片

之后可以使用tree命令以树结构显示datadir的目录结构(可以发现新增了不少文件)

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第5张图片

注意: 这里的/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

参数说明:

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第6张图片

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第7张图片

 

简易测试

1、创建账户(参数为账户密码)

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第8张图片

如上图所示,当账户成功创建之后,会返回一个地址,改地址是该账户公钥的后20字节,通常会以“0x”开头,并使用16进制表示。

2、查询账户列表

可以看到当查询账户时,会返回一个数组,在这种情况下如果你想知道指定账户的地址,那么你可以进行如下操作:

当然,你也可以使用以下方式获取账户列表:

3、查询账户余额

可以通过以下三种方式获取账户余额,由于是新建的账户所以余额为0,也不足为奇,后面会通过挖矿来获取。

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第9张图片

4、查看矿工的账户地址

注:这里的coinbase默认为链中的第一个账户地址

5、设置矿工的账户地址,即奖励地址


设置eth.accounts[1]为挖矿的账户地址之后,再次查询挖矿的账户地址显示为eth.accounts[1]的值。

6、挖矿操作

start 的参数表示挖矿使用的线程数,第一次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢。等进度达到 100% 后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第10张图片

等DAG完成后,会出现大量的挖矿操作,如下图所示(这个图标还是挺好看的哦!)

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第11张图片

当出现好多,表明挖到了很多矿,这时可以停止挖矿,然后查看矿工账户的余额。

7、停止挖矿

注意:1 ether = 1e18 wei,使用eth.getBalance()获取到的账户余额默认返回的单位是wei

你也可以使用ether作为单位,返回账户余额,与上面的常结果相对应

8、账户转账

a、解锁账户

我们打算从eth.accounts[0]eth.accounts[1]转账,转账之前需要先解锁eth.accounts[0]

b、开始转账

在这个时候我们的交易会在交易池中等待打包,直到被打包完成后才会完成该交易,我们查看一下交易池,会发现有一个交易在padding中:

  • 查看交易池中等待被打包的交易

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第12张图片

  • 查看已提交但还未被处理的交易,pending表示已提交但还未被处理的交易

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第13张图片

  • 查看当前待确认交易

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第14张图片

为了完成交易我们需要再次挖矿,之后再次看交易信息:

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第15张图片

之后我们查看已提交但还未被处理的交易,目前没有已提交但还未被处理的交易

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第16张图片

9、查看交易和区块总数

a.查看当前区块总数

b.根据刚才发起的交易hash值查询发起交易时的详情

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第17张图片

c、根据刚刚执行eth.sendTransaction()返回的交易hash值,返回一个交易的收据。

注意:处于pending状态的交易,收据是不可用的。

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第18张图片

10、查询区块

a、查询最新区块

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第19张图片

b、根据区块Number或Hash查询区块

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第20张图片

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第21张图片

写作不易,请作者喝杯奶茶或可乐吧!

【区块链2.0实战学习笔记】————11、搭建以太坊私有链_第22张图片

你可能感兴趣的:(【区块链】,————区块链2.0研读)