利用geth创建私有链

        在geth安装完成的情况下,我们就可以利用geth来创建我们的私有链或是同步公链上的数据。具体如何操作请看下文:

目录

创建私有链

准备工作

初始化

 常用参数说明

启动私链


创建私有链

准备工作

创建创世区块所需的JSON脚本文件:genesis.json

{
	"config" : {
		"chainId" : 168,
		"homesteadBlock": 0,
		"eip150Block" : 0,
		"eip155Block" : 0,
		"eip158Block" : 0
	},
	"coinbase" : "0x0000000000000000000000000000000000000000",
	"difficulty" : "0x20000",
	"extraData" : "",
	"gasLimit" : "0xffffffff",
	"nonce" : "0x0000000000000042",
	"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
	"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
	"timestamp" : "0x00",
	"alloc" : { }
}
参数说明
参数说明
chainId私有链的ID,不要和公链的ID重复即可,后期启动稀有链需要使用,只有当chainId、network、创世区块配置相同时,才是同一条链。
homesteadBlock升级区块所在的高度,签名算法是homesteadBlock->eip150Block->eip155Block->eip158Block,从homesteadBlock之前的区块都通过homestead相关算法来验证,homesteadBlock到eip150Block之间的用eip150Block算法来验证,以此类推。
coinbase初始的挖矿奖励地址,一般我们在挖矿开始之前都会自己指定地址,所以这个参数随便填。
difficulty挖矿的难度,值越大难度越大,出块的时间越长,根据自己的需要设置。
extraData附加说明,根据自己的需求可填可不填。
gasLimit预定此区块链中gas的上限。
nonce64位的随机数,初始设置成0x0000000000000042 即可。
mixhash配合nonce用于挖矿,由上一个区块的一部分生成的hash
parentHash上一个区块的hash,由于是创世区块,所以填0即可。
timestamp时间信息,设置创世区块的开始时间。
alloc预置资产,可以在创世时就给某此区块预置一些资产。

初始化

1、创建存放区块链的目录(目录名自己定义即可,这里用“privateChain”来做演示,datas1用来存放私有链的数据文件):

cd 自定义的数据目录
mkdir privateChain
cd privateChain
mkdir datas1

2、将genesis.json 放入到privateChain目录下

3、执行命令:

geth --datadir datas1 init genesis.json

得到如下图的返回信息,最后有“Successfully wrote genesis state”则表示初始化成功:

 常用参数说明

geth init 是初始化的主体命令,上文初始化命令中还有一个 --datadir 是命令的可选参数,如果不带此参数则默认的数据目录是在geth主目录下。geth初始化命令或启动命令还有一些可选参数如下表:

可选参数说明
参数说明
datadir当前区块链数据文件存放的目录。
identity当前区块链的标识,即可以给它设置名字。
rpc

用于开启RPC通信,此功能主要是提供给智能合约通信(http的形式)。方便后面使用钱包软件进行连接。

注意:这个参数在1.10的版本里已废弃,使用http来代替

httpgeth 1.10版本将rpc换成了http,功能相同
rpcportRPC通信的端口,默认端口是8545,可以通过此参数更改端口。
rpcapi通过此参数可以设置连接区块链的客户端,默认情况下只有eth、net、web3可以连接。
rpccorsdomain设置通过域名访问RPC的白名单,多个域名中间用逗号隔开【如果是使用浏览器访问,推荐配置此参数】。
console带此参数可以直接进入命令行模式,此模式下可以直接输入命令操作区块链上的数据,是javascrip的可执行环境。
networkid设置要访问的区块链网络ID,一般与初始化的chanId一致。
dev如果是开发者的话,可以使用此参数,直接在启动的时候就会创建一个开发者账户。不需要指定networkid

启动私链

启动私链:

geth --datadir datas1 --networkid 168 console

如下图则成功启动并进入console环境:

控制台有时会打印特别多的日志,所以为了第一时间看到我们命令的返回结果,我们需要将多余的日志信息打印到日志文件中,使用如下命令即可:

geth --datadir datas1 --networkid 168 console 2>output.log

 开发者模式

私链之间相互转账每次都需要输入密码,而且初始情况下无币,还需要启动矿工进行挖矿,这样耽误太多的时间,这时我们就需要启动开发者模式,此模式下默认会创建一个开发者账号,此账号拥有巨额货币

使用如下命令新开一个数据文件目录,创建开发环境私链:

geth --datadir datas2 --dev console 2>output.log

 到此私链创建成功,并成功运行。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yezhijing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值