在当今的区块链范畴内,以太坊私链的搭建是众多开发者与爱好者所关注的重要方面。它能够让人们依据自身的需求,在一个较为独立的环境当中对以太坊的运行机制展开探索。然而,对于初次进入这个领域的人而言,在利用 Geth 搭建私链的过程当中,存在着挑战以及未知的因素。
安装Geth的准备工作
选择合适的安装方式很重要。在 Linux 环境下,主要有两种安装方式。其一为系统包管理器安装,其二为源码安装。系统包管理器安装较为便捷,适合那些只想快速安装并使用的人。源码安装的步骤相对较多,不过能够看到构建步骤,能够满足那些想深入了解的人群的需求。比如在 ubuntu 系统中,通过系统包管理器安装可以借助简单的命令行操作来完成;而进行源码安装则需要从克隆 git 仓库开始。
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
不同的人会依据自身的需求以及电脑所处的环境,来决定安装的方式,这是很有必要的。对于熟悉源码构建的开发者而言,运用源码安装的方式,他们能够更好地掌控版本以及组件的构建。而新手或许更倾向于借助简单的包管理器来进行安装。
$ git clone https://github.com/ethereum/go-ethereum.git
从源码构建Geth
$ cd go-ethereum
$ make geth
首先进行克隆 git 仓库的操作,这样就能获取源代码的副本。接着进入到下载源代码所在的目录中,然后运用 make 命令来构建 Geth。如果进展顺利,就可以看到 Go 编译器在对每一个组件进行构建,并且最终会生成 geth 可执行文件。在这个时候查看 geth version,就能够确认其安装是否正确。从理论角度看,这一操作步骤较为简单,但在实际操作过程中,可能会遇到依赖库不完整、编译出现错误等问题。
在实际情况中,进行编译操作时,可能因网络问题,致使某些依赖无法完整下载,这会影响编译结果。在某些情形下,由于版本间存在不兼容情况,会引发编译失败,此时需开发者仔细排查并解决。
build/env.sh go run build/ci.go install ./cmd/geth
>>> /usr/local/go/bin/go install -ldflags -X
main.gitCommit=58a1e13e6dd7f52a1d5e67bee47d23fd6cfdee5c -v ./cmd/geth
github.com/ethereum/go-ethereum/common/hexutil
github.com/ethereum/go-ethereum/common/math
github.com/ethereum/go-ethereum/crypto/sha3 github.com/ethereum/go-ethereum/rlp
github.com/ethereum/go-ethereum/crypto/secp256k1
github.com/ethereum/go-ethereum/common [...]
github.com/ethereum/go-ethereum/cmd/utils
github.com/ethereum/go-ethereum/cmd/geth Done building. Run "build/bin/geth" to
launch geth.
运行Geth并进行区块同步
$ ./build/bin/geth version
Geth
Version: 1.8.0-unstable
Git Commit: e37f7be97e47a032d723db16d8b195998547805a
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9
Operating System: linux
GOPATH=/home/ubuntu/project
GOROOT=/usr/local/go
安装好 Geth 后启动它,执行相关命令后,Geth 就会开始同步区块并且把区块存储在当前目录中。如果选择使用“--syncmode fast”这个参数来以快速模式同步区块,这是一个比较好的做法。这种模式能够减少最初的资源消耗以及时间成本。正常同步是从创世区块开始,逐个进行验证和下载,这个过程既耗费时间又对资源有较高的要求。
在实际的网络环境里,如果带宽比较小,或者电脑配置较低,并且不添加这个参数,那么就有可能让系统出现卡顿的情况,甚至还会致使系统崩溃。另外,之前的“--fast”这种写法,如今已经被替换成了“--syncmode fast”,这一点大家需要留意。
同步测试网络的区块
$ geth –datadir . --syncmode fast
若要对网络的区块进行同步测试,需使用“–testnet”参数。Ropsten 测试网络的区块以及交易数量比主网少。它同步速度比主网快些,即便处于快速模式,也需几个小时,这是由公共网络本身特性导致的。
一些开发者希望能够迅速对代码或功能在类似以太坊的网络中的表现进行测试,测试网络是一个比较好的选择。但是,在使用测试网络之前,需要提前安排好时间,因为即便测试网络比主网快,也还是需要花费一定时间来等待同步。
创建私链的创世状态
$ geth --testnet --datadir . --syncmode fast
创建私链时,第一步是创建网络的起始状态,也就是“创世”状态。这个状态可以通过一个 JSON 文件来界定,比如 genesis.json 这样的文件。它是私链起始状态的设定。接着,利用合适的命令,就能够创建出以这个“创世”状态作为创世块的区块链。
如果创世状态的设置存在错误,那么后续的私链运行就会导致诸多问题。这些问题包括地址方面的问题,并且交易记录也会出现异常等状况。所以,一定要谨慎地设置其中的各项参数。
启动以太坊私链
在当前目录运行 Geth ,然后将其设置为处于联网状态,同时让它与创世块配置中的 chainId 保持一致,这样就能启动私链。如果看到节点正常启动,就表明成功创建了私链。私链启动之后,可以进行很多后续操作,比如自己部署智能合约来进行测试。
完成以上这些步骤之后,就能够搭建私链了。不过,在搭建私链的过程中,需要留意安全方面的相关事宜,同时也要做好后续私链的管理维护等一系列相关工作。
{
"config": {
"chainId": 15
},
"difficulty": "2000",
"gasLimit": "2100000",
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": {
"balance": "300000"
},
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": {
"balance": "400000"
}
}
}
你是否有自己搭建以太坊私链的想法?请为本文点个赞,并且将本文分享出去,还可以在评论区分享你的经验。
geth --datadir path/to/custom/data/folder init genesis.json
转载请注明出处:usdt钱包官方下载,如有疑问,请联系()。
本文地址:https://www.hrbaixh.com/toqb/944.html