蓋索林 Gasolin

人們總是高估一年可以完成的事,卻低估十年能完成的事

0%

為何要從 gitbook 遷移

以前曾在 gitbooks 發表一些電子書。 在 gitbook 發表電子書除了可以用 Markdown 語法外,也支援一些外掛如 Mermaid 圖表等。隨著 gitbook 業務調整,已經不再維護原來的平台,因此興起了遷移的想法。

選擇 Docusaurus

在一番比較後決定使用 Facebook 的 Docusaurus。Docusaurus 裝好後同時提供首頁,部落格,文件。支援 Markdown 並支援在文件中嵌入 React 元件。

Docusaurus 還有一個非常適合技術文件的Versioning功能,如 React 函式庫需要同時提供舊版本文件供參考時,相當有用。

經過設定後,Docusaurus 可以只使用文件或部落格的部分,在加入支援 Mermaid圖表後,可以滿足我的需求。

遷移的成果

遷移的成果可參考 http://gasolin.idv.tw/learndapp/

Imgur

原始碼在 https://github.com/gasolin/learndapp

後續行動

現在我的部落格用的 Hexo 要升級模板有點複雜。以後考慮把部落格也改成Docusaurus。

在前篇發布後至今一個月,以太坊官方的 Modalla 測試網已經啟動,ETH 2 的驗證者啟動頁面(launchpad)也首次就緒。雖然尚未有新版的 EthereumOnARM ROM,但做完以下設定後,我也順利遷移到了新測試網。

Imgur

0. 準備

照著前一篇 的教學安裝好樹莓派,按照設定驗證者 (Validator) 資訊 一節做完後,跟著本篇做 Modalla 測試網的設定。

接著打開 https://medalla.launchpad.ethereum.org 網頁,我們將跟著一步步完成驗證者的設定 (使用 prysm 客戶端)。

Imgur

1. 存入 32 (test) ETH

Imgur

https://faucet.goerli.mudit.blog/ 取得 > 32 goerli (測試網) ETH

Imgur

請及早準備好 32 ETH,從存入到完成遷移 ETH 2 網路,預計需要花8小時以上。

2. 設定樹莓派

ssh 登入樹莓派,確認相關的軟體都升級到最新版本

$ sudo apt update && sudo apt upgrade

3. 產生驗證者所需檔案

下載並執行 eth2.0-deposit-cli 命令,以產生驗證者所需檔案3

cd ~
sudo apt-get install python3-pip
git clone https://github.com/ethereum/eth2.0-deposit-cli.git
cd eth2.0-deposit-cli
sudo ./deposit.sh install
./deposit.sh --num_validators 1 --chain medalla

將產生的檔案(/eth2.0-deposit-cli/validator_keys)從樹莓派複製到本機4

scp [email protected]://home/ethereum/eth2.0-deposit-cli/validator_keys/deposit_data-1596511852.json deposit_data-1596511852.json

將檔案上傳到 Launchpad https://medalla.launchpad.ethereum.org/upload-validator

Imgur

4. 設定 validator

在樹莓派上,將產生的驗證者檔案匯入 prysm

$ /usr/bin/validator accounts-v2 import --keys-dir=$HOME//eth2.0-deposit-cli/validator_keys
Enter a wallet directory (default: /home/ethereum/.eth2validators/prysm-wallet-v2):

Directory where passwords will be stored (default: /home/ethereum/.eth2validators/prysm-wallet-v2-passwords):

[2020-08-04 12:14:33] INFO accounts-v2: Successfully created new wallet wallet-path=/home/ethereum/.eth2validators/prysm-wallet-v2
New wallet password:
Confirm password:
Enter the password for your imported accounts:
Importing accounts, this may take a while...
Importing accounts... 100% [===========================================================================================================================================] [36s:0s]
Successfully imported 1 accounts, view all of them by running accounts-v2 list

可以使用 $ /usr/bin/validator accounts-v2 list 命令查看是否成功匯入。

5. 啟動 beacon 服務

如果你和我一樣有跑之前的測試網,需要先清空之前測試網的資料庫紀錄,才能順利啟動 beacon 服務。

/usr/bin/beacon-chain --force-clear-db

接著啟動 beacon 服務 (用的是 EthereumOnARM ROM 提供的 service)

sudo systemctl start prysm-beacon

運行順暢後,再啟動 validator 服務。

啟動 validator 服務

先建立 password.txt 檔案,並將密碼寫入其中

touch ~/.eth2validators/prysm-wallet-v2/password.txt
vi ~/.eth2validators/prysm-wallet-v2/password.txt

編輯 /etc/ethereum/prysm-validator.conf 檔案,將內容改為

ARGS="--wallet-dir /home/ethereum/.eth2validators/prysm-wallet-v2 --wallet-password-file /home/ethereum/.eth2validators/prysm-wallet-v2/password.txt"
sudo systemctl start prysm-validator

要查看各服務的狀態,可以用以下命令

sudo systemctl status prysm-beacon
sudo systemctl status prysm-validator
sudo systemctl status geth.service

參考資料

以太坊 (Ethereum)作為 2014 年才開始區塊鏈的專案,近年發展迅速,眾多在以太坊上的活動讓目前的每秒交易速度(~13 TPS)已不符所需。經過多年的實驗與討論,以太坊 (Ethereum) 的下一代 Ethereum 2.0 路線圖也已經越來越清晰。

目前以太坊 (Ethereum) 2.0 即將進展至 Phase 0 階段。在此階段以太坊 1.0 和 2.0 的網路將並存。直到發展到 Phase 1.5 階段,1.0 網路將會融合進 2.0網路。隨著時間接近,2.0 測試網路與多種驗證節點的測試版也陸續釋出,網路上已有許多經驗可參考,正是嘗試的好時機。

這邊略過各種基礎介紹,直接從如何運行以太坊 (Ethereum) 2.0 的驗證節點開始。

如果覺得這篇文章有用,歡迎傳送小費到 0xfDa995Eb398750319a2D5E8A4766c02e54db24b8

快速入門 (硬體需求)

  • 驗證節點需要 24 小時運作(可短時間離線)
  • Passmark CPU Mark (x86, ARM) 分數至少 4000 分
  • 至少 512G 的 SSD
  • 運作期間會長期佔用 300k bps 左右的網路頻寬

參考相關文章,並考慮整體成本後,我選擇樹莓派4代 (Raspberry Pi 4) 4GB版當作主機,搭配 512G 的 USB 介面外接 SSD 來跑驗證節點(總能耗 = 機器本身最高耗能 5V * 3A = 15W,再加上家用路由器要一直開著著的能耗。樹莓派4一般能耗應該在5~9W之間)。

神奇的是,需要的硬體竟然在 PCHome 就可以一次買齊 😎 Imgur

(我已有 16G+ SD卡,SD卡讀卡機,HDMI外接螢幕,USB外接鍵盤),林林總總必要成本大概在 7000 元內。

參考 ETH 2 stacking 的即時回報率 https://beaconcha.in/calculator ,這個配置大概只要跑3個月,硬體跟電費的部分就可以回本了。

快速入門 (軟體需求)

驗證節點需要

  1. 參考 Ethereum 1.0 的區塊鏈節點
  2. 同步 Ethereum 2.0 Beacon鏈
  3. 運行 Ethereum 2.0 的 Validator(驗證者節點)

因此軟體中需要包含

graph LR
  U[Ubuntu 20.04] --> C(Ethereum 1 Chain, 不挖礦, Geth)
  U --> B(Ethereum 2 Beacon Chain, Prysm)
  U --> V(Ethereum 2 Validator, Prysm)

硬體準備好後,若想要快速開始體驗,可以參考 EthereumOnARM 專案提供的 ROM 版本 或是參考他的腳本來設定(請留意使用他人包好的 ROM 的風險)。

快速入門 (軟體設定)

把 SD 卡燒好,路由器上開 13000/30303 port forwarding,接上網路,就自動裝好自動跑。

1. 燒 ROM

下載好 EthereumOnARM ROM 之後,在電腦上使用 balena Etcher 等燒錄軟體,將ROM燒錄到SD卡中。

2. 設定機器

將網路線接到樹莓派4上,插入燒好ROM的SD卡,並將外接SSD插到藍色的USB接口上。 通上電源後,即會自動開機並執行所有的設定(系統調整,格式化 SSD,安裝所需程式)。

出現登入提示後以 ethereum/ethereum 登入。 登入後可以使用命令 hostname -I 查看機器目前分配到的 IP。

$ hostname -I
192.168.1.123

3. 查看運作狀態

這時就可以透過其他設備查看樹莓派4的狀態。

開啟瀏覽器,輸入 http://[ip]:3000 ,使用 admin/ethereum 登入,可以看到以下的監視圖表:

設備狀態 Imgur

Ethereum 1.0 Imgur

Ethereum 2.0 的監視圖表在 Ethereum 1.0 區塊鏈同步完成前,都還不會正常顯示。

4. 設定網路

打開家用路由器的設定頁面,將樹莓派4分配到以上查到的固定內網IP (如上例就是 192.168.1.123)。

在 WAN(外部網路)端設定頁面的Port Forwarding,或虛擬伺服器設定中,將以下 port 綁定到樹莓派4的內網IP:

  • 13000 (TCP)
  • 12000 (UDP)
  • 30303 (TCP, UDP)

這樣從外面傳入這些 port 的封包,就會自動轉傳到樹莓派4。

設定驗證者 (Validator)資訊

在Ethereum 1.0 區塊鏈同步完後,可以透過遠端連線的方式來連線到樹莓派4

ssh [email protected]

並在瀏覽器上開啟 https://prylabs.net/participate 參照說明申請(需用以太坊錢包)。

Imgur

申請後如果 validator process 也順利啟動,可以在 Ethereum 2.0 監視圖表中看到 Validator process started 訊息。

Validator Main InfoStatus(狀態)欄位也會變成DEPOSITED(已存入)狀態。

Imgur

也可以根據你登記的 Validator pubkey,前往 https://beaconcha.in 查看 Validator 狀態

例如 https://beaconcha.in/validator/30078https://beacon.etherscan.io/validator/30078

經過實際安裝的過程,我們可以看到,以太坊 2.0 的相關工具生態已經初步搭建起來了。

運作之後

恭喜你已經上車了!🤑

同時,你也應該要知道,你放了 32ETH (現價7000+美金)在以太坊 2.0 的網路上,一兩年的時間內無法取回到以太坊 1.0 網路上使用。

…😲😱😡🤬!!!

還好,現在跑的還只是測試網路,放的不是真的 ETH 😜。

這時候,是不是更應該仔細查看一下當前 Ethereum 2.0 的說明書 (Spec) 是不是合理?

在驗證截短運作的過程中,一旦遇到網路、機器當機等各種斷線情況時,Ethereum 2.0 網路會怎麼處理

文末加註警語:

可以用文中建議的配置,用較低成本在測試網路體驗看看。但若為了投資而做,請詳閱說明書!

其他軟體設定選擇

可以參考已有一些手動安裝教學如

教你從 Ubuntu 20.04 開始從頭裝。

其他的硬體選擇

可以參考 https://www.reddit.com/r/ethstaker/comments/ggmbvd/a_comprehensive_look_at_hardware_for_staking/

參考資料

要看清一個領域怎麼發展演化,可以嘗試使用科技樹(或心智圖)來思考。 (順道測試一下在 Hexo 裡插入心智圖的效果 hexo-simple-mindmap )

2009 年前的科技樹,圍繞著瀏覽器發展

  • Browser
    • HTML
    • Javascript
      • library (jquery)
    • CSS
  • Server
    • Frameworks (RoR, Django…)

2009年後,Node.js 打開了大地圖,瀏覽器不再是唯一戰場

  • Browser (Frontend)
    • HTML
      • HTML5
    • Javascript
      • v8 engine
        • Node.js
          • Command Line
            • Pacakge manager (npm)
            • Build tool (grunt, gulp, webpack…)
          • Backend (Express…)
    • CSS
  • Server (Backend)
    • Frameworks
  • Mobile
    • Cordova

2017 年後,ES6開始的定期語言標準更新,讓Javascript語言再次煥發活力;網頁技術亦可用在多種使用者設備

  • Browser (Frontend)
    • HTML
      • HTML5
    • Javascript
      • v8 engine
        • Node.js
          • Command Line
            • Pacakge manager (npm, yarn)
            • Build tool (webpack…)
            • Linter (eslint)
          • Backend (Express…)
      • ES6
        • Transpiler (Babel)
        • TypeScript
    • CSS
    • Web Assembly
  • Server (Backend)
    • Frameworks
    • Serverless
    • Bot framework
  • Desktop
    • Electron
  • Mobile
    • React Native