Win10使用Geth客户端搭建以太坊私有链、连接可视化钱包及挖矿 多图 保姆级教程

一、下载并安装Geth客户端

下载地址https://geth.ethereum.org/downloads/*

下载最新版本的geth(win10版本Stable releases)(选择自己电脑对应的版本)
选第3个,下载并安装(安装时选择一个自己方便操作的路径即可):
在这里插入图片描述

注意:如果电脑开了代理可能无法下载,如遇到下面提示关闭代理即可。

在这里插入图片描述
在这里插入图片描述

下载完成后打开文件夹:

在这里插入图片描述

验证是否安装成功:

打开cmd,输入以下指令(查看帮助文档):geth -help

出现以下内容即为安装成功

在这里插入图片描述

至此以太坊客户端已经安装完毕

测试geth同步主网络(配置私链的话这步不做也可)

直接打开geth.exe

geth会自动运行同步,在一开始的提示中也有说明区块的存储路径在哪里

我的路径是:C:\Users\Edward\AppData\Roaming\Ethereum (一般为管理员账户路径里)

在这里插入图片描述
在这里插入图片描述

注意:要查看AppData,需要在查看里勾选查看隐藏的项目
在这里插入图片描述

二、创世区块配置文件(开始搭建私链:注意关闭正在同步主网的geth)

新建创世区块文件

在geth安装目录下新建*genesis.json*(此为文件名)文件,输入以下内容(并保存)

{
    
    
  "config": {
    
    
    "chainId": 8434,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4,
    "alien": {
    
    
      "period": 2,
      "epoch": 300,
      "maxSignersCount": 5,
      "minVoterBalance": 100000000000000000000,
      "genesisTimestamp": 1536136198,
      "signers": [
            "0x393faea80893ba357db03c03ee73ad3e31257469",
            "0x30d342865deef24ac6b3ec2f3f8dba5109351571",
            "0xd410f95ede1d2da66b1870ac671cc18b66a97778"
      ]
    }
  },
  "nonce": "0x0",
  "timestamp": "0x5b8f92c2",
  "extraData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x1",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    
    
    "cbfc29c31a31c869f9eb59a084d9019965978a7e": {
    
    
      "balance": "0x31d450f18af132720000000"
    },
    "393faea80893ba357db03c03ee73ad3e31257469": {
    
    
      "balance": "0xd3c21bcecceda1000000"
    },
    "30d342865deef24ac6b3ec2f3f8dba5109351571": {
    
    
      "balance": "0xd3c21bcecceda1000000"
    },
    "d410f95ede1d2da66b1870ac671cc18b66a97778": {
    
    
      "balance": "0xd3c21bcecceda1000000"
    },
    "a25dc63609ea7ea999033e062f2ace42231c0b69": {
    
    
      "balance": "0xd3c21bcecceda1000000"
    }

  },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

重要参数说明

参数名 描述
chainID 指定了独立的区块链网络 ID。网络 ID 在连接到其他节点的时候会用到,以太坊公网的网络 ID 是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络 ID。不同 ID 网络的节点无法相互连接

homesteadBlock

取值为0表示正在使用homesteadBlock版本。以太坊的发展分成了四个阶段:(每个阶段进步到下一个阶段都是通过硬分叉的方式实现的)1.Frontier(前沿):2015年7月30日,以太坊发布了Frontier阶段,此时的软件还不太成熟,但可以进行基本的挖矿测试去中心化应用(Dapps),该阶段参与者主要为开发者。 2.HomesteadBlock(家园):在2016年3月14日(圆周率节),以太坊发布了HomesteadBlock阶段。以太坊开始平稳运行,提供了图形界面的钱包,普通用户也可以体验和使用以太坊。 3.Metropolis(大都会):Metropolis被分成了两个阶段:Byzantium(拜占庭)和Constantinople (居士坦丁堡)。 2017.10.16,以太坊拜占庭硬分叉成功,引入了包括:zk-SNARKs(简明非交互零知识证明)、revert功能、return和抽象账户。 2019年2月底,以太坊区块链的第7,080,000区块作为激活点正式开启君士坦丁堡硬分叉,点在于将以太坊的共识机制由PoW向PoW+PoS混合机制过渡,从而使整个以太坊网络更加的轻盈、快捷与安全。按官方说法,具体在现有以太坊PoW主网上进行升级的有以下5个方面:1).EIP 145:给EVM增加移位相关指令,包括左移SHL,逻辑右移SHR,算术右移SAR(2).EIP 1014:产生合约地址的一种新规则,与状态通道有关。规则为keccak256( 0xff ++ address ++ salt ++ keccak256(init_code)))[12:](3).EIP 1052:为EVM增加EXTCODEHASH指令,这个指令可以获得一个合约bytecode的keccak256的hash值;(4).EIP 1283:修改EVM的SSTORE指令gas计算方式,预计会减少许多合约的gas消耗,需要硬分叉支持;(5).EIP 1234:将是潜在最有争议的提案,也需要硬分叉支持,它包括难度炸弹(Difficulty Bomb)协议推迟12个月和挖矿奖励调整,难度炸弹使挖矿难度随时间推移越来越高,挖矿奖励调整将挖矿奖励从3个降低到2个4.Serenity(宁静)
eip155Block eip是ethereum improvement proposal的缩写,你的链不会因为因为这些提议分叉,故设置为“0”即可
mixhash 一个 256 位的哈希证明,与 nonce 结合使用,证明已经对该块进行了足够的计算:工作量证明(PoW)。
nonce 一个64位的哈希证明,与mixhash结合使用,证明在该块上进行了足够的计算:工作量证明(PoW)。
difficulty 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
alloc 以太坊账户信息,可以留空,等待部署完成后再启动以太坊创建账户;也可以预先配置好以太坊账户及其余额。这里的账户余额以wei为单位。
coinbase 矿工的账号,随便填
timestamp 设置创世块的时间戳
parentHash 上一个区块的hash值,因为是创世块,所以这个值是0
extraData 附加信息,随便填,可以填你的个性信息
gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

三、初始化

genesis.json文件夹路径下打开cmd,执行命令:geth --datadir .\db init genesis.json
在这里插入图片描述

执行完这条命令后会在geth安装目录下出现一个db文件夹,其中chaindata存放区块数据,keystore存放账户数据

在这里插入图片描述
在这里插入图片描述

四、启动节点

命令:geth --http --http.api db,eth,net,web3,personal --datadir .\db --networkid 1997 console 2>> log2020526.log

注意:搭建过程中我的geth一直是处于未关闭状态
重要参数解释:

port:指定以太坊网络监听端口,默认为30303

http:开启HTTP-RPC服务,可以进行智能合约的部署和测试

http.api:基于HTTP-RPC提供的API

http.addr:指定HTTP-RPC服务监听地址,默认为localhost

http.port:指定HTTP-RPC服务监听端口号,默认为8545

networkid:指定以太坊网络id,默认启动id为1,代表公有链,我们搭建的是私有链,因此指定为chainId(在genesis.json配置)

console:启动命令行模式

2>> log2020526.log:重定向,记录日志

启动成功后如下图所示:
在这里插入图片描述

可以验证节点信息
命令:admin.nodeInfo

在这里插入图片描述

五、新建账户

输入eth.accounts查看已存在账号:

在这里插入图片描述
[]说明暂无账号

输入以下指令创建账号:personal.newAccount()

会提示你输入密码,需要自己记住,测试不要太复杂

双引号内是自己的地址

执行成功后会产生账户的公钥(地址),然后在keystore文件夹下就会产生相应的账户文件:
在这里插入图片描述

可以通过以下命令来查看对应账户的余额

eth.accounts[0] //查看第一个账号地址

eth.getBalance(eth.accounts[0])

eth.getBalance(“0x7326bc89fe5a1d593afb5fa02479974be776a081”) //括号内也可以直接填地址
在这里插入图片描述
发现账户余额是0,因此需要通过挖矿获取以太币

六、下载钱包MetaMask并导入创建的账户

MetaMask是一个chrome插件,下载需要翻墙,算是个可视化钱包吧
下载完成之后,在右上角会出现一个小狐狸标志,点开,点击网络使其显示隐藏的网络localhost 8545(并连接)

这里有一个问题就是导入自己本地的账户小狐狸会崩掉,一直未响应(我暂时未解决)

在这里插入图片描述

所以我们采取向我们本地私链导入metamask上已创建的账号

参考:https://blog.csdn.net/weixin_43988498/article/details/108394012

在这里插入图片描述

导出私钥

在这里插入图片描述

复制私钥到本地一个txt文件中保存
在这里插入图片描述

然后输入

geth account import +你的私钥文件路径

会提示你输入密码,这个密码是在geth控制台使用的密码

发现生成的账户就是在MetaMask上的账户。

此时查看当前生成密钥文件位置:

geth account list

找到对应账户后面的存储位置,把文件放到我们创建私链项目中的keystore文件夹中即可。
在这里插入图片描述
在这里插入图片描述

在geth中输入eth.accounts查看新导入的账号

在这里插入图片描述

七、挖矿

挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户,如下图所示:指令:eth.coinbase

在这里插入图片描述

可以输入 miner.setEtherbase(账号) 设置挖矿账号

我现在设置刚刚导入的账号为挖矿地址
在这里插入图片描述

查看余额 eth.getBalance(账号)
在这里插入图片描述

通过以下命令开启挖矿,参数是线程数,这里设置为1**(提示null不必理会)**
miner.start(1)

在这里插入图片描述

输入指令和打开小狐狸都可以看到账号余额在增加

在这里插入图片描述

在这里插入图片描述

通过以下指令停止挖矿miner.stop()

在这里插入图片描述

到此我们的私链搭建就大功告成啦

参考链接

https://blog.csdn.net/cjm083121/article/details/106319518

https://blog.csdn.net/weixin_43988498/article/details/108394012

猜你喜欢

转载自blog.csdn.net/Tree_sea/article/details/121866296