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

前期准备

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中:

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

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

  • 查看当前待确认交易

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

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

9、查看交易和区块总数

a.查看当前区块总数

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

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

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

10、查询区块

a、查询最新区块

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值