蓋索林 Gasolin

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

0%

以太坊 (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

這篇也可以叫「如何使用 JoyCon 作為鍵盤/滑鼠快捷鍵來輔助工作」。

在看「日本YouTuber的包裡面有什麼?」影片時,發現這個Youtuber隨身背包裡竟然會放一個 JoyCon(L),在剪片時當作快速鍵使用。

這真是有趣的想法。將大家手上都有Switch(?)手把,延伸做更多用途。 仔細數一數,單邊 JoyCon 就有共15個鍵(搖桿上下左右,壓下(L),方向鍵上下左右,截圖鍵,L1, L2兩個肩鍵,減號鍵,側邊2個小肩鍵)可供使用!

要將 JoyCon 連線到 Macbook 相當容易,打開藍牙偏好設定,然後按JoyCon(L)側邊的配對鍵(單邊手把兩個黑鍵之間,凹下去的那個)即可配對。

我下載了https://yukkurigames.com/enjoyable/程式,打開就可以抓到手把。按下對應的按鍵時,按下的按鍵就會出現在視窗左側。這時可以在右側的畫面中設定按鍵對應的行為(可設定包含鍵盤按鍵,滑鼠,滑鼠按鍵,滑鼠捲動等事件)。

我的初步手把配對設定:

搖桿上下左右:滑鼠方向
方向鍵上下左右:鍵盤方向鍵上下左右
壓下(L):滑鼠左鍵
減號鍵:滑鼠左鍵
截圖鍵:滑鼠右鍵
L1:鍵盤Ctrl鍵
L2:鍵盤Ctrl鍵
側邊2個小肩鍵:滑鼠上/下捲動(向下捲動速度慢,向上捲動速度快)

我目前嘗試的用法:

  1. 模擬滑鼠捲動螢幕:用左右肩鍵捲動螢幕
  2. 模擬滑鼠使用:用搖桿移動,用減號鍵,截圖鍵模擬滑鼠左右鍵。
  3. 在虛擬桌面間切換:按著 L1(Ctrl)的同時,按左,右方向鍵切換螢幕
  4. 用方向鍵快速跳轉Youtube影片

在使用時,還可以裝上黑色的肩鍵吊帶,掛在左手上以便隨時拿來使用。

JoyCon還可以怎麼用在日常/工作中哩?歡迎分享你的配置或用法。

Github 提供了「Pull Request」這種方便所有人先行審閱程式碼,在整併(merge)回各分支的方式。 有時候也會想先將程式碼下載回來執行看看效果。 目前我會使用的有兩種方式:

使用 diff

想要下載別人提交的程式,可以在 Pull Request 頁面網址後直接加上.diff,就會出現文字版的 diff 檔。

執行 git apply 1234.diff 即可使用; 測試完可執行git apply -R 1234.diff回復原狀。

使用 bash

~/.bash_profile 建立以下命令

pr() {
git fetch upstream pull/$1/head:pr-$1
git checkout pr-$1
}

初次使用時需執行 source ~/.bash_profile 或重開命令行。

之後只要執行 pr 1234 (1234 是 Pull Request 的編號),就會自動抓取對應的Pull Request並切換到相應的pr-1234分支。

這邊有範例程式 供參考。