基于geth搭建以太坊私链
一、安装GETH
geth是以太坊的官方客户端,它是一个命令行工具,提供很多命令和选项,可以运行以太坊节点、创建和管理账户、发送交易、挖矿、部署智能合约等。
下面介绍geth的三种安装方法:
- 直接下载可执行文件
- 在线安装
- 从源码编译安装
方法一直接下载可执行文件
最简单的方法是直接下载可执行文件,以太坊开发团队提供了各个系统的编译好的geth可执行文件,可以去官方下载地址或国内镜像下载适合你系统版本的压缩包,解压缩后直接运行就可以。在命令行中输入 geth help 可查看geth的用法。
注意1:geth是一个命令行工具,需要在命令行中运行geth,windows用户不要直接双击geth.exe。
注意2:如果不加任何参数直接运行 geth ,会自动连接到以太坊公网,此时会开始同步区块,在Linux系统中,区块数据默认存储在~/.ethereum中。
方法二在线安装
Ubuntu用户可以选择在线安装的方式,在终端中依次执行以下命令即可:
$ sudo add-apt-repository -y ppa:ethereum/ethereum $ sudo apt-get update $ sudo apt-get install ethereum
安装完成后执行 geth help 查看geth的用法。
方法三从源码编译安装
编译安装推荐使用Linux系统,本文以64位的Ubuntu16.04系统为例。
geth是用go语言写的,编译geth源码需要go语言和C语言编译器,因此需要先安装go语言,go语言版本推荐用go1.7及以上。
使用make编译
首先下载geth源码 go-ethereum,这里以 go-ethereum-1.5.6.tar.gz 为例:
接下来解压缩源码:
$ tar -xzf go-ethereum-1.5.6.tar.gz
用make工具进行编译:
$ cd go-ethereum-1.5.6 $ make geth
make会执行build目录下的编译脚本,编译脚本会调用go语言编译器进行编译。等待十几秒,编译就完成了,此时会在 go-ethereum-1.5.6/build/bin 中生成geth可执行文件。
输入 geth help 命令,会显示geth所有的命令和选项:
$ cd build/bin $ ./geth help
使用go语言编译工具编译
如果熟悉go语言,可以直接使用go语言的编译工具编译。
首先下载go-ethereum项目源码:
$ go get -d github.com/ethereum/go-ethereum
上面的命令会下载go-ethereum源码到GOPATH/src/github.com/ethereum/go-ethereum,同时会下载相关的依赖包,在国内网络环境下,如果不FQ,下载通常会失败,此时可以参考下面的手动下载方法。
下载完成后,通过以下命令编译:
$ go install -v github.com/ethereum/go-ethereum/cmd/geth
等待十几秒,编译完成后,会在GOPATH/bin目录下生成geth可执行文件。
注:如果go get命令下载很慢或失败,可以采用手动下载:首先下载 go-ethereum-1.5.6.tar.gz ,然后解压到GOPATH/src/github.com/ethereum/go-ethereum,还要到http://www.golangtc.com/download/package下载golang.org.x.net.tar.gz,并将其解压到GOPATH/src中。解压之后的目录结构应该是这样的:
GOPATH/src ├── github.com │ └── ethereum │ └── go-ethereum └── golang.org └── x └── net
之后再通过上面的go install命令编译安装即可。
二、搭建以太坊私链
新建目录如下
geth --datadir data0 init genesis.json
genesis.json 内容如下:
{ "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x20000", "extraData" : "", "gasLimit" : "0x2fefd8", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }
其中是创世区块和配置
接下来启动节点
geth --datadir ./data0 --networkid 6223 --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --rpcport 8545 --nodiscover console
修改好自己的目录和id,等等即可