主页 > imtoken官网版下载地址 > 打造以太坊私链挖矿

打造以太坊私链挖矿

imtoken官网版下载地址 2023-03-31 07:53:56

安装客户端

安装 Gth,这是用 Go 语言实现的以太坊客户端(go-ethereum)。

brew tap ethereum/ethereum
brew install ethereum

配置初始状态

创建一个新的 ethdev 目录

mkdir ethdev
cd ethdev

配置私有链网络初始状态以太坊私链搭建,新建genesis.json

{  
    "config": {  
          "chainId": 22,  
          "homesteadBlock": 0,  
          "eip155Block": 0,  
          "eip158Block": 0  
      },  
    "alloc"      : {},  
    "coinbase"   : "0x0000000000000000000000000000000000000000",  
    "difficulty" : "0x20000",  
    "extraData"  : "",  
    "gasLimit"   : "0x2fefd8",  
    "nonce"      : "0x0000000000000042",  

如何在以太坊上获得私链代币_以太坊搭建私有链_以太坊私链搭建

"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }

chainId 指定一个独立的区块链网络的ID,不同网络的节点不能相互连接。 配置文件还配置了当前挖矿难度difficulty和区块gas消耗上限gasLimit。

参数详解:Genesis block

geth --datadir "~/ethdev" init ethdev/genesis.json

此时会在当前geths目录下新增两个文件夹geth和keystore

geth中存储的是区块链的相关数据

keystore 将用户信息保存在链中

以太坊客户端启动:

geth  --datadir   ./   console  

登录成功后可以查看账户信息,当前有哪些账户

> eth.accounts
["0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"]

创建账户

我在本地创建了两个帐户

创建另一个:

以太坊私链搭建_如何在以太坊上获得私链代币_以太坊搭建私有链

> personal.newAccount('123')
"0x49d2b94b9da2b7f224b5b6b00aa77692dcad31fc"

通过上面的personal.newAccount传入password参数可以创建一个新的账号,并返回新的账号地址;

在keystore中可以看到新建的账户文件

以太坊私链搭建_以太坊搭建私有链_如何在以太坊上获得私链代币

图片.png

本文件应妥善保管,不得泄露给他人。

可以将帐户分配给以太坊客户端中的变量

 > user1=eth.accounts[0]
"0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"

然后您可以查看当前账户余额:

> eth.getBalance(user1)
0

> eth.blockNumber
0

可以查看user1当前余额为0,默认也是0块,因为还没有开始挖矿

开始挖矿

> miner.start()
true

以太坊私链搭建_如何在以太坊上获得私链代币_以太坊搭建私有链

打开上面的开发文件监控界面,可以看到挖矿区块的状态:

然后切换回以太坊挖矿平台以太坊私链搭建,查看用户余额:

> eth.getBalance(user1)
1.25890625e+21

> eth.getBalance(user2)
0

我看到1号账户,已经有余额了,2号账户还是0,因为挖矿的奖励进入了第一个账户。

立即停止挖矿:

> miner.stop()
true

已经停止成功,日志界面也停止输出

再次查看当前区块高度:

> eth.blockNumber
288

现在账户 2 没有余额,我们将一些以太币从账户 1 转移到账户 2:

> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

以太坊搭建私有链_以太坊私链搭建_如何在以太坊上获得私链代币

account is locked at web3.js:3119:20 at web3.js:6023:15 at web3.js:4995:36 at :1:1

由于默认账户被锁定,先解锁账户,再转账,先查看当前账户,再解锁:

> eth.accounts
["0x73e8655a84a37685d98891b7a9333a7423e12cb3", "0xa9d6dfff13c1050f19a8ffc2811c68842797d01c", "0xe30cecc37776895389b94033ac65eb3b98294659"]

> personal.unlockAccount('0x73e8655a84a37685d98891b7a9333a7423e12cb3','11111111')
true

以上已经说明解锁成功,接下来继续传输:

> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

以太坊搭建私有链_以太坊私链搭建_如何在以太坊上获得私链代币

"0x8f164a1296b618bdd64fcc007f6d39ce022b57e257beefeb76288cdef220ad80" > eth.getBalance(user2) 0

上面已经说明转账成功了,但是user2的账户余额还是0,因为没有矿工挖矿。 我们启动一个矿工并在另一个终端上检查日志

日志已经显示开始挖矿并发交易是在区块 293 中处理的,

> miner.start()
true

> miner.stop()
true

> eth.getBalance(user2)
3000000000000000000

再次查看余额时,user2已经有3个以太币,转账交易完成;

快速搭建以太坊私有链脚本