Geth搭建一条简单的私有链

tech2024-10-06  19

搭建一条属于自己的测试链

为了能快速了解Geth,熟悉一些常用的命令,试着搭建一条属于自己的私链。

创建网络的“创世“状态。将下面的代码写在一个json文件里面,将其命名为genesis.json:{ “config”:{ “chainId”:23 }, “difficulty”:“2000”, “gasLimit”:“2100000”, “alloc”:{ “0xeBB667B76F3Ca6877e9A38d0F7b39E939337e0E6”:{"balance:“800000000000000000000”} } } (chainId是自己设置的,不要和现有的公开运行的区块链相同,查看已经被使用的chainId。不了解chainId和networkid的可以看这里的简单介绍。初始化的时候alloc给0xeBB667B76F3Ca6877e9A38d0F7b39E939337e0E6这个地址预置了800ether。这是我自己在metamask上创建的账户地址)以genesis.json初始化私有链 geth --datadir . init genesis.json

–datadir 参数后面指定genesis.json文件的位置路径,此处的.表示在当前目录下。

启动私链(并打开geth控制台) geth --datadir . --networkid 23 console 2>geth.log

2>是重定向的意思,2>xx.log将日志输出到xx.log文件里。如果不加2>geth.log,日志会输出到当前控制台,影响使用,将日志输出到其他文件或终端。除了这篇文章提到的方法外,我们还可以打开一个新的终端,输入linux命令tail -f geth.log,在新终端实时动态显示日志信息,方便查看。

进入控制台之后就可以使用命令与区块链进行交互 Geth Console是一个交互式的JavScript执行环境,里面内置了一些用来操作以太坊的JavaScript对象,我们可以直接调用这些对象来获取区块链上的相关信息。Geth命令详解

查看余额

eth.getBalance("0xeBB667B76F3Ca6877e9A38d0F7b39E939337e0E6")

输出时单位默认是wei,太长了,可以用web3命令将单位换算成ether

web3.fromWei(eth.getBalance("0xeBB667B76F3Ca6877e9A38d0F7b39E939337e0E6"),'ether')

查看此时geth管理的账户,输出[] 为空,因为还没有创建账户。

eth.accounts

创建一个新账户,会提示输入密码,输入完成后会生成一个地址。账户创建成功。

personal.newAccount()

查看新建账户余额,为0。

eth.getBalance(eth.accounts[0])

将我自己的metamask上的账户导入到geth客户端。成功导入后会输出我的地址

personal.importRawKey("privatekey","password")

现在geth客户端上就有两个账户了,并且其中一个有币,可以进行交易了。如果没有币的想进行交易的话,可以通过挖矿来获得币,有了币之后就可以发送交易啦。

挖矿

给miner.start()传入参数1,一直不停地挖矿。

miner.start(1)

默认挖矿奖励是给geth中的第一个账户的,我们可以用下面的命令查看得到挖矿奖励的账户

eth.coinbase

稍等片刻查看区块数量

eth.blockNumber

查看第一个账户挖矿得到的奖励

web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')

结果是每个区块奖励5 ether,因为我们的genesis.json文件没有设置这个区块奖励,所以默认按照以太坊最初的一个块奖励5个ether。

最新回复(0)