感謝 @b24333666 的教學, 這兩天也用 Raspberry Pi 4(4GB) 試著建構
為了節省記憶體的使用, 再加上我喜歡 headless 的部署方式,
我沒有安裝桌面系統, 而是採用 SSH 進機器操作.
## 預設開啟 SSH Server
第一次開機前在SD卡的 system-boot 分割中,
產生一個命名為 ssh 的檔案(空的即可)
之後開機會自動叫起 SSH Server.
## Firefox/MetaMask
主要是當 Goerli ETH 的錢包, 可以直接在一般電腦上跑.
跑 Beacon Chain/Validator Client 建議可以使用 tmux 以避免斷線.
PS. 記得 MetaMask 切換到 Goerli Test Network, 在右上角
## Beacon Chain
跑 Beacon Chain 大約會花 2~3 小時做 init-sync, 這時候會吃非常多記憶體
建議可以在 SSD 上面暫時先開一個 swap 檔, init-sync 完可以關掉
作法如下
```
# 檔名路徑可自選一個 SSD 的空間, 8x1G 可以更大沒關係
$ sudo dd if=/dev/zero of=/var/swapfile bs=1G count=8
$ sudo mkswap /var/swapfile
$ sudo swapon /var/swapfile
$ free
total used free shared buff/cache
available
Mem: 3884376 2322780 47260 3916 1514336
2924320
Swap: 8388604 1024 8387580
```
完成 init-sync 後如不使用可以透過 `sudo swapoff /var/swapfile` 關閉
PS1.如果不使用 SWAP 的話, 有可能會遇到 Kernel Out-of-memory 的問題,
beacon chain 的程式就會被 Kernel 關掉, 而且會 hang 好一段時間..
oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=beacon-chain-v1,pid=2522,uid=1001 Out of memory: Killed process 2522 (beacon-chain-v1)
total-vm:5812104kB, anon-rss:3570120kB, file-rss:0kB, shmem-rss:0kB, UID:1001 pgtables:7652kB oom_score_adj:0
oom_reaper: reaped process 2522 (beacon-chain-v1), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
PS2.beacon chain可以不需要以 sudo 權限執行
## Validator Client
當 Beacon chain init-sync 跑完後,
Validator 會需要一段時間等你的 deposit 被處理到..(約一個多小時)
此時 Log 訊息會有 status=DEPOSITED 的字樣,
只要等到 expectedInclusionSlot == slot 就會開始分派工作了!
PS.Validator Client 可以不需要 sudo 權限執行
## 結論
- Validator 跑了約 18 小時, 總共收到 0.008 ETH 的獎勵..
請參閱 https://bit.ly/2WaQ2Py
- SSD 共額外吃了 1GB (剛剛算錯空間了 XD)
- 我的Pi4 在 init-sync 時, CPU 48度, USB 52度, 只有貼散熱片
- 離線會有 penalty, raspberry pi4 的可靠度老實說我打個問號...
- 要考慮 SSD 壽命(保固?) vs 獎勵划不划算
- 路由器 13000/tcp 做 NAT
小費箱
ETH: 0xf92512467cF72b249e621DB334391F7d11FAFcB1
simpleledger:qq2c29w68qkre380j4fc9s53a9cnnmt2uvdq5l87hd