ETH篇——MAC系統(tǒng)搭建基于以太坊的私鏈(含連接Mist錢包)

1. 安裝Geth(Go-Ethereum)

Geth 又名Go Ethereum. 是以太坊協(xié)議的三種實現(xiàn)之一,由Go語言開發(fā),完全開源的項目。Geth 可以被安裝在很多操作系統(tǒng)上,包括Windows、Linux、Mac的OSX、Android或者IOS系統(tǒng)

前提

Geth依賴GO環(huán)境,所以安裝之前先要進行GO的安裝:https://golang.org/doc/install

Mac

mac系統(tǒng)通過homebrew安裝:

brew tap ethereum/ethereum
brew install ethereum

檢查版本號,正常顯示表示安裝成功

JianjiangdeMacBook-Pro:~ user$ geth version
Geth
Version: 1.8.0-stable
Git Commit: 6e613cf3de6ebfd14edd5a332baf6e4079c1c86f
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1

接下來的操作都以mac環(huán)境為準

其他

其他操作系統(tǒng)可前往官網(wǎng)參考:https://geth.ethereum.org/install/

2. 創(chuàng)建以太坊私有鏈

2.1 初始化一個創(chuàng)世區(qū)塊

新建一個項目目錄后進入,在目錄中新建一個genesis.json的配置文件,內容如下:
genesis.json:

{
    "nonce": "0x0000000000000042",
    "difficulty": "0x020000",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
    "gasLimit": "0x4c4b40",
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "alloc": {}
}

接下來使用geth init ./genesis.json --datadir ./mychain命令,初始化創(chuàng)世區(qū)塊,--datadir ./mychain用于指定區(qū)塊鏈數(shù)據(jù)的存放位置為當前目錄下的mychain目錄中

JianjiangdeMacBook-Pro:personal-eth user$ geth init genesis.json --datadir ./mychain
WARN [03-21|09:54:38] No etherbase set and no accounts found as default
INFO [03-21|09:54:38] Allocated cache and file handles         database=/Users/jianjiangwang/Desktop/mychain/chain/geth/chaindata cache=16 handles=16
INFO [03-21|09:54:38] Successfully wrote genesis state         database=chaindata                                                 hash=ee3898…ae7194
INFO [03-21|09:54:38] Allocated cache and file handles         database=/Users/jianjiangwang/Desktop/mychain/chain/geth/lightchaindata cache=16 handles=16
INFO [03-21|09:54:38] Successfully wrote genesis state         database=lightchaindata

出現(xiàn)上面的輸出后表示創(chuàng)建完成,打開mychain目錄,會看到gethkeystore這兩個子目錄

2.2 啟用私有鏈

啟動方式1:

使用以下命令,啟動私有鏈:

JianjiangdeMacBook-Pro:personal-eth user$ geth --datadir ./mychain --nodiscover console 2>>eth_output.log
Welcome to the Geth JavaScript console!

instance: Geth/v1.8.0-unstable-6e613cf3/darwin-amd64/go1.9.2
 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

>

--datadir : 指定區(qū)塊鏈網(wǎng)絡數(shù)據(jù)的存放位置
console : 啟動命令行模式,可以在geth中執(zhí)行命令
--nodiscover : 指定為私有鏈,不會被網(wǎng)上看到
另外看到指令中的>>eth_output.log表示在當前文件夾下用eth_output.log文件來記錄輸出
執(zhí)行tail -f eth_output.log, 可以看到輸出日志

啟動方式2:

geth --networkid 10 --datadir ./mychain --rpc --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" rpcaddr "0.0.0.0" --rpccorsdomain "*" --nodiscover --dev console

再打開一個終端,輸入下面的命令,進入基于該私鏈環(huán)境的控制臺

geth attach "http://127.0.0.1:8545"

2.3 賬戶的添加和查看

成功啟動geth控制臺后,查看當前賬戶:

> web3.eth.accounts

目前沒有賬戶,需要創(chuàng)建賬戶,c創(chuàng)建時需要設置密碼:

> web3.personal.newAccount('123456')
"0xdaa65af5d348c25266a5588148a9c0e9e4c056f8"

返回的0xdaa65af5d348c25266a5588148a9c0e9e4c056f8是賬戶地址, 123456是賬戶的密碼

這時再查看賬戶,看到剛剛創(chuàng)建的賬戶已經(jīng)存在了

> web3.eth.accounts
["0xdaa65af5d348c25266a5588148a9c0e9e4c056f8"]

2.4 開始挖礦和停止挖礦

第一次執(zhí)行挖礦前先要調用miner.setEtherbase設置挖礦的賬戶,這里設置為剛剛創(chuàng)建的賬戶

> miner.setEtherbase("0xdaa65af5d348c25266a5588148a9c0e9e4c056f8")

執(zhí)行miner.start()開啟挖礦:

> miner.start()
INFO [03-21|15:19:54] Starting mining operation
INFO [03-21|15:19:54] Commit new mining work                   number=59 txs=0 uncles=0 elapsed=276.402μs
INFO [03-21|15:19:55] Successfully sealed new block            number=59 hash=14de08…85cdfe
INFO [03-21|15:19:55] ?? mined potential block                  number=59 hash=14de08…85cdfe
INFO [03-21|15:19:55] Commit new mining work                   number=60 txs=0 uncles=0 elapsed=143.737μs
INFO [03-21|15:19:56] Successfully sealed new block            number=60 hash=ce1660…12c6a5
INFO [03-21|15:19:56] ?? mined potential block                  number=60 hash=ce1660…12c6a5
INFO [03-21|15:19:56] Commit new mining work                   number=61 txs=0 uncles=0 elapsed=229.035μs

如果要停止挖礦:

> miner.stop()
true

2.5 查看賬戶余額

通過web3.eth.getBalance()來查看指定地址的余額:

> web3.eth.getBalance(0xdaa65af5d348c25266a5588148a9c0e9e4c056f8)
825000000000000000000

eth的最小單位是wei, 1 ether = 1e18 wei

3. 通過Mist客戶端(Ethereum Wallet)連接私鏈

3.1 Ethereum Wallet和geth的區(qū)別

Ethereum Wallet客戶端對應的是Mist項目,現(xiàn)在此客戶端大多都稱為Ethereum Wallet,也有稱作Mist客戶端的,知道它們兩個指的是通一個客戶端即可。此客戶端使用JavaScript進行開發(fā),支持windows、linux和OSX三類操作系統(tǒng),是一個圖形化操作界面的客戶端。

3.2 安裝Ethereum Wallet

https://github.com/ethereum/mist/releases下載操作系統(tǒng)對應的安裝包安裝

3.3 啟動Ethereum Wallet

打開Ethereum Wallet客戶端, 彈出界面,這時Ethereum Wallet默認連接的是ETH主網(wǎng)的數(shù)據(jù), mac系統(tǒng)下,數(shù)據(jù)默認存放在Geth的目錄下:~/Library/Ethereum

mist-client.png

但現(xiàn)在是要將Ethereum Wallet連接到之前創(chuàng)建的私鏈, 關閉Ethereum Wallet

3.4 啟動私鏈

按照先前的方法啟動私鏈,成功后輸出信息如下:

INFO [03-21|16:04:47] Maximum peer count                       ETH=25 LES=0 total=25
INFO [03-21|16:04:47] Starting peer-to-peer node               instance=Geth/v1.8.2-stable/darwin-amd64/go1.10
INFO [03-21|16:04:47] Allocated cache and file handles         database=/Users/jianjiangwang/Desktop/personal-eth/mychain/geth/chaindata cache=768 handles=1024
INFO [03-21|16:04:47] Initialised chain configuration          config="{ChainID: 18 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Constantinople: <nil> Engine: unknown}"
INFO [03-21|16:04:47] Disk storage enabled for ethash caches   dir=/Users/jianjiangwang/Desktop/personal-eth/mychain/geth/ethash count=3
INFO [03-21|16:04:47] Disk storage enabled for ethash DAGs     dir=/Users/jianjiangwang/.ethash                           count=2
INFO [03-21|16:04:47] Initialising Ethereum protocol           versions="[63 62]" network=10
INFO [03-21|16:04:47] Loaded most recent local header          number=165 hash=3bb44c…95201a td=22222305
INFO [03-21|16:04:47] Loaded most recent local full block      number=165 hash=3bb44c…95201a td=22222305
INFO [03-21|16:04:47] Loaded most recent local fast block      number=165 hash=3bb44c…95201a td=22222305
INFO [03-21|16:04:47] Loaded local transaction journal         transactions=0 dropped=0
INFO [03-21|16:04:47] Regenerated local transaction journal    transactions=0 accounts=0
WARN [03-21|16:04:47] Blockchain not empty, fast sync disabled
INFO [03-21|16:04:47] Starting P2P networking
INFO [03-21|16:04:47] RLPx listener up                         self="enode://6d3dccf06a620006499b2f01b5bfab40bb36af3611273abf77c4e308108bfe44d95520840f1771e71557688532fc962db9d32cec577eb4db2999012f8c92a485@[::]:30303?discport=0"
INFO [03-21|16:04:47] IPC endpoint opened                      url=/Users/jianjiangwang/Desktop/personal-eth/mychain/geth.ipc

先來讀讀信息:
INFO [03-21|16:04:47] IPC endpoint opened url=/Users/jianjiangwang/Desktop/personal-eth/mychain/geth.ipc, 寫明了私鏈的ipc端點位置, 筆者這里是/Users/jianjiangwang/Desktop/personal-eth/mychain/geth.ipc, 復制下來備用

3.5 通過命令行啟用Ethereum Wallet

啟動私鏈節(jié)點后,如果直接打開Ethereum Wallet, 會報如下錯誤:


mist-error.png

這是由于打開Ethereum Wallet時,默認連接geth主網(wǎng)的ipc:Users/jianjiangwang/Library/Ethereum/geth.ipc, 而私鏈的ipc位置是/Users/jianjiangwang/Desktop/personal-eth/mychain/geth.ipc

解決辦法是通過命令行,附加參數(shù)來啟動Ethereum Wallet客戶端, mac系統(tǒng)下,Ethereum Wallet的啟動程序位于/Applications/Ethereum\ Wallet.app/Contents/MacOS/Ethereum\ Wallet,新開一個終端,通過命令行指定ipc啟動Ethereum Wallet:

JianjiangdeMacBook-Pro:~ user$ /Applications/Ethereum\ Wallet.app/Contents/MacOS/Ethereum\ Wallet --rpc /Users/jianjiangwang/Desktop/mychain/chain/geth.ipc

通過--rpc指定私鏈的ipc端點位置/Users/jianjiangwang/Desktop/mychain/chain/geth.ipc,客戶端啟動界面可以看到右上角的private-net標識:

mist-private-loading.png

點擊LAUNCH APPLICATION:

mist-private-client.png

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容