今天主要任务:
-
本地搭建私有链
-
启动私有链
-
进入私有链控制台
1. 本地搭建私有链
⚠️注意:本文针对的mac os操作系统下
安装geth
geth是go-ethereum的简写,以太坊智能合约常用的命令行工具。
如果没有安装brew,请先安装brew,打开终端terminal并输入:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
mac通过brew包管理工具下载:
brew tap ethereum/ethereum brew install ethereum
具体见官方文档:https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac
安装完成后,在终端terminal输入:
geth -h
出现下面结果,就说明安装成功:
NAME: geth - the go-ethereum command line interface Copyright 2013-2018 The go-ethereum Authors USAGE: geth [options] command [command options] [arguments...] VERSION: 1.8.27-stable COMMANDS: account Manage accounts attach Start an interactive JavaScript environment (connect to node)
...
...
geth也装好了,可以开始后续的步骤了。
初始化创始区块
1. 为了方便操作,我在桌面新建一个文件夹privatechain,用来存放私有链节点node1
node1所在的位置:
/Users/xxxx/Desktop/privatechain/node1
⚠️这里的xxxx是自己电脑用户名称
2. 在node1中创建 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" }
3. 初始化
打开terminal,进入到node1中,开始初始化创始区块:
cd /Users/xxxx/Desktop/privatechain/node1 geth init ./genesis.json --datadir ./
初始化完成,node1下会生成geth和keystore两个文件夹
- geth:保存链上的区块数据
- keystore:保存链上的账户信息
2. 启动私有链
通过终端terminal进入node1,启动私有链:
cd /Users/xxxx/Desktop/privatechain/node1 geth --identity "node1" --rpc --rpcport 1111 --rpccorsdomain "*" --datadir "./" --port 6666 --ipcpath "geth/geth1.ipc" --networkid 10 --rpcapi eth,web3,admin,personal,net --ethash.dagdir=./geth/ethash
关于参数:
--identity "node1" 自定义节点名node1
--rpc 启用HTTP-RPC服务器
--rpcport 1111 设置HTTP-RPC服务器监听端口1111(默认值:8545)
--rpccorsdomain "*" 允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--datadir "./" 存放数据库和keystore密钥的数据目录
--port 6666 设置网卡监听端口6666(默认值:30303)
--ipcpath "geth/geth1.ipc" 包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--networkid 10 网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)
--rpcapi eth,web3,admin,personal,net 基于HTTP-RPC接口提供的API
--ethash.dagdir=./geth/ethash 存ethash DAGs目录 (默认 = 用户hom目录)
成功启动私有链:
INFO [06-03|21:46:50.366] Maximum peer count ETH=25 LES=0 total=25 INFO [06-03|21:46:50.380] Starting peer-to-peer node instance=Geth/node1/v1.8.27-stable/darwin-amd64/go1.12.4 INFO [06-03|21:46:50.380] Allocated cache and file handles database=/Users/xxxx/Desktop/privatechain/node1/geth/chaindata cache=512 handles=5120 INFO [06-03|21:46:50.412] Initialised chain configuration config="{ChainID: 10 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> ConstantinopleFix: <nil> Engine: unknown}" INFO [06-03|21:46:50.412] Disk storage enabled for ethash caches dir=/Users/woshinixxk/Desktop/privatechain/geth/ethash count=3 INFO [06-03|21:46:50.412] Disk storage enabled for ethash DAGs dir=geth/ethash count=2 INFO [06-03|21:46:50.412] Initialising Ethereum protocol versions="[63 62]" network=10
...
...
3. 进入私有链控制台
保持上面的已启动好的私有链,另外再打开一个终端
通过终端terminal进入node1节点,并输入命令进入控制台:
geth attach geth/geth1.ipc
新建一个账户:
personal.newAccount('123456')
123456是账户的密码
控制台返回的内容就是账户地址
有了账户后,就可以开始挖矿了:
miner.start()
未完待续~