區塊鏈(一) - 建立以太坊私有鏈

本文重點在機上區塊鏈操作,不涉及基礎知識。以macOS為例,操作基於程式語言基礎,但在Windows系統上差異不大。


注意:文內所使用的系統是 macOS,版本的不同在操作上也有不同喔!

不過根據我自己的操作經驗,如果是 Windows 系統其實也沒有差太多。

安裝套件

首先第一步先行安裝管理套件 Homebrew,如果已經安裝過的話,可以直接進行下一個步驟。

這項工具主要用以簡化在 macOS 系統上安裝軟體的過程和易於管理的工具,讓我們更方便的安裝需要的套件。



從 Ethereum GitHub 可以進入到 Go Ethereum 的網站,在下載的頁面可以看到 Install on macOS via Homebrew 的連結。

brew tap ethereum/ethereum
brew install ethereum

構建Geth (命令行客戶端)

透過 Git 指令來複製一份 Ethereum 在 Github 專案到本機端。

git clone https://github.com/ethereum/go-ethereum


檔案位置基本上會放在 “使用者的資料夾底下”,名為 go-ethereum 的資料夾。

再來從 cmd 中直接 cd 到該資料夾中,在執行以下指令:

cd go-ethereum
make geth

如此一來就可以在 cmd 上面直接使用有關 geth 的指令了。

啟動以太坊

在當前的路徑底下,應該會出現 go-ethereum 的資料夾,大致上經過以上的步驟,我們就可以來啟動以太坊,輸入以下的指令:

geth console

啟動的過程中,會不斷的一直跑訊息,要稍微讓它跑完後,再直接把整個 cmd 給關掉,因為這不是我們需要的鏈。


接下來,我們要去找到這一個被啟動的區塊鏈,它的資料夾被放在哪裡,存放的位置在:$HOME/Library/Ethereum/。


該資料夾中的內容物,並不是我們需要的,所以可以整個刪除掉。

建立以太坊私有鏈

終於到我們今天的重頭戲了,還有幾個步驟需要去完成,就是要先制定一份關於私有鏈它的「創世區塊」,也稱為 genesis 的 json 檔案。

你們可以根據我的設定方式,再依照需求去修改它即可。

  • genesis.json
{
  "config": {
    "chainId": 10,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
  },
  "nonce": "0x0",
  "timestamp": "0x5e4a53b2",
  "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x80000",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "0000000000000000000000000000000000000088": {
      "balance": "0x200000000000000000000000000000000000000000000000000000000000000"
    }
  },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

建立好了以後,把這個檔案丟進去 Ethereum 的資料夾中,要重新來建立一個初始區塊。

啟動以太坊私有鏈

請從 cmd 移動這目錄底下執行指令,就完成啟動私有鏈了!!

geth init genesis.json
如此一來就完成囉!!!

張貼留言

較新的 較舊