如何在MAC系統(tǒng)上搭建一個以太坊的私有鏈袜炕!
1衔蹲、安裝MAC包管理神器HomeBrew
官網(wǎng)地址:https://brew.sh/
Homebrew是一款Mac OS平臺下的軟件包管理工具仲义,擁有安裝、卸載、更新背苦、查看、搜索等很多實用的功能潘明,首先安裝Homebrew行剂。
打開終端命令行,運行下面的URL
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(命令會更改钳降,建議上官網(wǎng)復制)
檢測
1 brew -v
2 Homebrew 2.1.16
2厚宰、用Homebrew安裝go語言版本的以太坊客戶端geth
geth是go版本客戶端,是目前主流的鏈接以太坊網(wǎng)絡(luò)的客戶端遂填。
1 brew tap ethereum/ethereum
2 brew install ethereum
測試是否安裝成功
1 geth --help //能成功顯示輸出幫助铲觉,則表示已經(jīng)成功安裝
3、搭建私有鏈
準備創(chuàng)世區(qū)塊的json文件:genesis.json
{
"config": {
"chainId": 628, //值自定義
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
初始化吓坚,創(chuàng)建創(chuàng)世區(qū)塊
- 創(chuàng)建genesis.json文件
mkdir TestChainDemo
cd TestChainDemo
vi genesis.json
- 創(chuàng)建私有鏈
#這個init 務(wù)必要加上
geth --datadir data0 init genesis.json
- 執(zhí)行效果
運行上面的命令撵幽,會讀取genesis.json文件,根據(jù)其中的內(nèi)容礁击,將創(chuàng)世區(qū)塊寫入到區(qū)塊鏈中盐杂。如果看到以下的輸出內(nèi)容,說明初始化成功了哆窿。
[ddgod ~/eth/TestChainDemo]$ geth --datadir data0 init genesis.json
INFO [07-16|07:49:26] Maximum peer count ETH=25 LES=0 total=25
INFO [07-16|07:49:26] Allocated cache and file handles database=/Users/duke/ethStudy/myPrivateNet/node1/geth/chaindata cache=16 handles=16
INFO [07-16|07:49:26] Writing custom genesis block
INFO [07-16|07:49:26] Persisted trie from memory database nodes=0 size=0.00B time=8.302μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-16|07:49:26] Successfully wrote genesis state database=chaindata hash=942f59…a2588a
INFO [07-16|07:49:26] Allocated cache and file handles database=/Users/duke/ethStudy/myPrivateNet/node1/geth/lightchaindata cache=16 handles=16
INFO [07-16|07:49:26] Writing custom genesis block
INFO [07-16|07:49:26] Persisted trie from memory database nodes=0 size=0.00B time=1.506μs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-16|07:49:26] Successfully wrote genesis state database=lightchaindata hash=942f59…a2588a
初始化成功后链烈,會在數(shù)據(jù)目錄data0中生成geth和keystore兩個文件夾,此時目錄結(jié)構(gòu)如下:
data0
├── geth
│ ├── chaindata
│ │ ├── 000001.log
│ │ ├── CURRENT
│ │ ├── LOCK
│ │ ├── LOG
│ │ └── MANIFEST-000000
│ └── lightchaindata
│ ├── 000001.log
│ ├── CURRENT
│ ├── LOCK
│ ├── LOG
│ └── MANIFEST-000000
└── keystore
四更耻、啟動私有鏈節(jié)點
geth --datadir data0 --networkid 1024 console
上面命令的主體是geth console测垛,表示啟動節(jié)點并進入交互式控制臺,--datadir選項指定使用data0作為數(shù)據(jù)目錄秧均,--networkid選項后面跟一個數(shù)字食侮,這里是1024,表示指定這個私有鏈的網(wǎng)絡(luò)id為1024目胡。網(wǎng)絡(luò)id在連接到其他節(jié)點的時候會用到锯七,以太坊公網(wǎng)的網(wǎng)絡(luò)id是1,為了不與公有鏈網(wǎng)絡(luò)沖突誉己,運行私有鏈節(jié)點的時候要指定自己的網(wǎng)絡(luò)id眉尸。
運行上面的命令后,就啟動了區(qū)塊鏈節(jié)點并進入了Javascript Console:
INFO [07-16|07:50:02] IPC endpoint opened url=/Users/duke/ethStudy/myPrivateNet/node1/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.11-stable-dea1ce05/darwin-amd64/go1.10.3
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
> INFO [07-16|07:50:02] Mapped network port proto=tcp extport=30301 intport=30301 interface="UPNP IGDv1-IP1"
>
>