一、搭建环境
1、Windows 7 64位
2、Ubuntu 16.04 64位
二、安装工具—— 以太坊客户端
以太坊客户端用于接入以太坊网络,进行账户管理、交易、挖矿、智能合约相关的操作。目前有多种语言实现的客户端,常用的有 Go 语言实现的 go-ethereum 客户端 Geth,支持接入以太坊网络并成为一个完整节点。
1、Windows 7环境下安装Geth客户端
下载地址:https://geth.ethereum.org/downloads/
下载完成后,按照引导步骤安装即可。
安装时Geth会被直接添加到系统环境变量中,安装完成后,打开cmd,键入 geth version
·可查看是否安装成功。
2、Ubuntu 16.04 环境下安装Geth客户端
安装必要的工具包:
sudo apt-get install software-properties-common
添加以太坊源:
add-apt-repository -y ppa:ethereum/ethereum
apt-get update
安装go-ethereum:
sudo apt-get install ethereum
安装完成后,使用 geth version
查看是否安装成功。
Tips: 本文直接使用 Geth 的命令控制台进行操作,所以无需再安装以太坊钱包。以太坊钱包是基于以太坊客户端开发的图形化操作工具,可以让用户更加方便的进行账户管理、交易等。常用的以太坊钱包是Ethereum Wallet 和 Mist。下载地址:https://github.com/ethereum/mist/releases
以下操作不区分系统环境,Windows 7 和 Ubuntu 16.04 下操作基本一致。
三、创建初始文件
要创建以太坊私有链,需要定义自己的创世区块,创世区块信息写在一个 JSON 格式的配置文件中。首先将下面的内容保存到一个 JSON 文件中,命名 genesis.json 。
{
"config": {
"chainID": 6666,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x400",
"extraData": "0x00",
"gasLimit": "0x2fefd8",
"nonce": "0xdeadbeefdeadbeef",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
其中,chainID 指定了独立的区块链网络 ID。网络 ID 在连接到其他节点的时候会用到,以太坊公网的网络 ID 是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络 ID。不同 ID 网络的节点无法相互连接。配置文件还对当前挖矿难度 difficulty、区块 Gas 消耗限制 gasLimit 等参数进行了设置。
四、初始化:写入创世区块
在系统上新建一个目录mychain
,将之前创建的genesis.json
保存该目录下,同时再新建一个目录mydata
用以存放区块链数据。此时目录结构为:
mychain
├── mydata
└── genesis.json
进入mychain目录中,执行命令:
geth --datadir mydata init genesis.json
运行上面的命令,会读取 genesis.json
文件,根据其中的内容,将创世区块写入到区块链中。如果看到以下的输出内容,说明初始化成功了。
初始化成功后,会在数据目录 mydata
中生成 geth
和 keystore
两个文件夹。其中 geth/chaindata
中存放的是区块数据,keystore
中存放的是账户数据。
五、启动私有链
初始化完成后,就有了一条自己的私有链,之后就可以启动自己的私有链节点并做一些操作,在mychain
目录下打开终端输入以下命令即可启动节点:
geth --identity "TestNode" --rpc --rpcport "8545" --datadir mydata --port "30303" --networkid 6666 --nodiscover console
- –identity:指定节点 ID;
- –rpc:表示开启 HTTP-RPC 服务;
- –rpcport:指定 HTTP-RPC 服务监听端口号(默认为 8545);
- –datadir:指定区块链数据的存储位置;
- –port:指定和其他节点连接所用的端口号(默认为 30303);
- –networkid: 指定私有链网络号;
- –nodiscover:关闭节点发现机制,防止加入有同样初始配置的陌生节点。
运行上面的命令后,就启动了区块链节点并进入了该节点的控制台:
...
Welcome to the Geth JavaScript console!
instance: Geth/TestNode/v1.8.5-stable-cbdaa0ca/linux-amd64/go1.10.1
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
进入控制台后,可对私有链进行创建账户、交易、挖矿、部署智能合约等一系列操作。具体内容将在下一篇以太坊私有链Geth控制台操作教程中介绍。
原文地址:https://g2ex.github.io/2017/09/12/ethereum-guidance/
本文只在此基础上做小修整,仅用以个人备忘。