IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 搭建以太坊私链记录 -> 正文阅读

[区块链]搭建以太坊私链记录

这篇文档,是记录自己搭建以太坊私链的过程。

安装

以太坊搭建私链的安装方式有很多,其中之一就是源码安装。

源码安装

下载go-ethereum源码,编译:

git clone https://github.com/ethereum/go-ethereum.git

在目录下,编译:

make geth

显示:
env GO111MODULE=on go run build/ci.go install ./cmd/geth
......
......
github.com/ethereum/go-ethereum/cmd/geth
Done building.
Run "./build/bin/geth" to launch geth.

编译后的文件,在./build/bin/geth下,会产生geth二进制文件。

之后,配置环境变量:

export PATH=$PATH:/root/eth/go-ethereum/build/bin

即可在任意地方使用。

官网下载

在官网上,直接下载编译好的二进制文件:

Downloads | Go Ethereum

初始化

在开始搭建私链之前,需要配置一个创世文件:genesis.json,一般的配置如下所示:

{
  "config": {
    "chainId": 10,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5ddf8f3e",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x00200",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": { },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

配置好后,创建一个空的文件夹,比如datachain,之后,一个节点的产生的数据都存储在这个目录文件下。

创建好后,开启初始化节点,运行命令:

geth --datadir ./datachain init genesis.json

# --datadir 指定数据存储的文件夹
# init      创世配置文件

显示日志:

root@cchui-virtual-machine:~/eth# geth --datadir ./datachain init genesis.json
INFO [07-26|20:32:06.444] Maximum peer count                       ETH=50 LES=0 total=50
INFO [07-26|20:32:06.444] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [07-26|20:32:06.445] Set global gas cap                       cap=50,000,000
INFO [07-26|20:32:06.445] Allocated cache and file handles         database=/root/eth/datachain/geth/chaindata cache=16.00MiB handles=16
INFO [07-26|20:32:06.449] Writing custom genesis block 
INFO [07-26|20:32:06.449] Persisted trie from memory database      nodes=0 size=0.00B time="8.341μs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-26|20:32:06.451] Successfully wrote genesis state         database=chaindata                          hash=d3d6bb..c5304a
INFO [07-26|20:32:06.451] Allocated cache and file handles         database=/root/eth/datachain/geth/lightchaindata cache=16.00MiB handles=16
INFO [07-26|20:32:06.454] Writing custom genesis block 
INFO [07-26|20:32:06.454] Persisted trie from memory database      nodes=0 size=0.00B time="1.497μs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-26|20:32:06.456] Successfully wrote genesis state         database=lightchaindata                          hash=d3d6bb..c5304a

即,表示成功初始以太坊网络。

启动以太坊私链

启动

开启一个Geth节点,输入下面的命令:

geth --identity "test Chain" --datadir ./datachain --rpc --rpcport 8547 --ws --ws.port=8546 --http.port=8548 --rpccorsdomain "*" --port 1718 --nodiscover --nat "any" --networkid 1108 --rpcapi "eth,net,web3,personal" console

# --datadir 后面跟的是你指定的工作目录
# --identity 后面跟的是你的区块链标识,随便写
# --networkid 后面跟的是你的网络id,这个是区别区块链网络的关键
# --port 和 --rpcport 你随便给一个就行,别跟在用的端口重复就行
# --nodiscover 不去发现节点
# 2>output.log 输出到这个日志里面
# --rpc --rpcport=8547 :开启RPC连接方式,并设置端口为8547
# --ws --wsport=8546 :开启WebSocket连接方式,并设置端口为8546
# --http.port=8548 : http连接,端口为8548
# --rpccorsdomain="*" :RPC允许所有跨域连接,这个设置主要是为了Remix在线连接本地开发网络
# console :Geth启动后仍可接收命令行命令,如不开启又需要使用命令行也可以通过geth attach ipc:\\.\pipe\geth.ipc方式连接到当前节点
# --ipcpath ./datachain/geth.ipc
# --rpcapi "eth,admin,web3,net,personal"  不加的话,很多rpc api是无法使用的

启动节点后,即可进入节点控制台,和节点进行交互。

创建账户

> eth.accounts
["0x471144a5fec2d48450d6e14438a448be839dcd04"]
> personal.newAccount()
Passphrase: 
Repeat passphrase: 
INFO [07-26|20:46:17.128] Your new key was generated               address=0x487366D8E76b5aD71dfA047997681F8A3AD8B75B
WARN [07-26|20:46:17.128] Please backup your key file!             path=/root/eth/datachain/keystore/UTC--2021-07-26T12-46-15.974003905Z--487366d8e76b5ad71dfa047997681f8a3ad8b75b
WARN [07-26|20:46:17.128] Please remember your password! 
"0x487366d8e76b5ad71dfa047997681f8a3ad8b75b"
> eth.accounts
["0x471144a5fec2d48450d6e14438a448be839dcd04", "0x487366d8e76b5ad71dfa047997681f8a3ad8b75b"]

账户余额

> eth.getBalance(eth.accounts[0])
0

挖矿

注意,在节点第一次挖矿的时候,时间会比较长。需要进行DAG的初始化,等到DAG 进程加载到 100 时,才会开始挖矿。

> miner.start(1)      ## 开启一个线程进行挖矿
INFO [07-26|20:49:45.475] Generating DAG in progress               epoch=0 percentage=95 elapsed=1m13.544s
INFO [07-26|20:49:46.189] Generating DAG in progress               epoch=0 percentage=96 elapsed=1m14.258s
INFO [07-26|20:49:46.901] Generating DAG in progress               epoch=0 percentage=97 elapsed=1m14.969s
INFO [07-26|20:49:47.607] Generating DAG in progress               epoch=0 percentage=98 elapsed=1m15.676s
INFO [07-26|20:49:48.368] Generating DAG in progress               epoch=0 percentage=99 elapsed=1m16.437s
INFO [07-26|20:49:48.369] Generated ethash verification cache      epoch=0 elapsed=1m16.438s
INFO [07-26|20:49:48.581] Successfully sealed new block            number=1 sealhash=cfc590..c87647 hash=30c2a3..4ca68a elapsed=1m17.119s
INFO [07-26|20:49:48.581] 🔨 mined potential block                  number=1 hash=30c2a3..4ca68a
INFO [07-26|20:49:48.581] Commit new mining work                   number=2 sealhash=f57a2e..1f5426 uncles=0 txs=0 gas=0 fees=0 elapsed="137.234μs"

> miner.stop()   ## 停止挖矿

多节点组网

帮助

root@cchui-virtual-machine:~/eth# geth -h

总结:

参考

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:33:57  更:2021-08-01 14:33:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:20:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码