文章目录
前言
搭建pow私有链
一、私有链搭建
1. 下载并安装geth
-
Geth 又名Go Ethereum.是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目。Geth可以被安装在很多操作系统上,包括Windows、Linux、Mac的OSX、Android或者IOS系统.
-
geth的作用:Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户的新建编辑删除,开启挖矿,ether币的转移,智能合约的部署和执行等等
-
Geth官网:https://geth.ethereum.org/
-
Geth的Github地址:https://github.com/ethereum/go-ethereum
根据需要下载相应版本的geth。
这里我用的是64位Windows版本,也就是图片上第三个。下载完成后,点开,在电脑上完成安装,并根据需要进行环境变量的配置。
2. 启动节点
(1)验证geth是否安装完成
win+R打开cmd窗口,输入
geth version
如果安装成功,就会出现如下显示
(2)准备创世块
这里创建基于pow(工作量证明)共识算法的创世块,我们首先要创建genesis.json
文件。(可以直接讲下述文本复制,打开记事本粘贴,然后重命名文件)
{
"config": {
"chainId": 2021,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x00002",
"alloc": { },
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"number": "0x0",
"gasUsed": "0x0",
"gasLimit": "0x989680"
}
- 这里大概介绍下一块区块的结构,如图所示,上述文本可以对应一下
- 关于chainID,尽量不要与这些ID重复即可 (https://chainlist.org/)
(3)初始化创世块
打开控制台,cd到 genesis.json
所在目录,键入命令
geth --datadir data init genesis.json
- 这里我用data2 创建新的创世块,因为我已经有一个data1的节点了。
出现红框中的内容就说明创世块初始化成功,这时文件夹会出现一个data2的文件夹
(4)启动节点
打开控制台,cd到 genesis.json
所在目录,键入命令
geth --datadir data --networkid 2021 --http --http.corsdomain "*" --http.api " admin,net,miner,personal,eth,web3,txpool" --http.addr 0.0.0.0 --allow-insecure-unlock console
上述是单节点的启动,如果要使用多节点,并有节点内的通信的,要打开三个端口,如下所示
geth --datadir data2 --networkid 2021 --http --http.port 2545 --ws --ws.port 2546 --port 20303 --http.corsdomain "*" --http.api " admin,net,miner,personal,eth,web3,txpool" --http.addr 0.0.0.0 --allow-insecure-unlock console
如上所示,节点启动成功。、
3. 创建链
(1)相连窗口
上述窗口由于一直在跳动,为方便查看,再开一个窗口与它相连:
geth attach http://127.0.0.1:2545
由于http的窗口,我设置的是2545,默认是8545,于是出现如下所示的样子
- 最后一行:
modules: admin:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
这是命令模块,有admin、eth、miner、net、personal、rpc、txpool、web3,直接在窗口输入模块,即可查询命令,也可以在https://geth.ethereum.org/docs/interface/command-line-options查询相关命令。
(2)创建aacount
在窗口输入
personal.newAccount("0000")
其中的0000是account密码
(3)创建块
miner.start()
我使用2个线程进行创块,于是有
运行的那个窗口就会开始创块:
总结
不想写了==