基本は手順に沿えばいけます.
ただ, ネット回線速くないとだめでした(validator になって validator 報酬もらう場合. 100 Mbps ~ 1 gbps は必要そう).
devnet(開発用), testnet(mainnet 運用の前のテスト用) での接続例は
にあります.
testnet の場合, genesis hash や known validators を指定しないとうまくいかないっぽいようです.
運用編はこちら:
Solana testnet validator を運用するメモ
https://qiita.com/syoyo/items/359a5f7b7c81683e2acf
Solana validator 情報
validator = geth でいう full node + voting による PoS という感じでしょうか.
Solana では PoH(Proof of History)という仕組みでつよつよな PC がいります(しかし PoW のようにべらぼうにたくさん計算機を並べて処理する必要はない).
ここでは PoH あり(Voting で $SOL で報酬がもらえる)で話をしますが, full node 相当(Solana ネットワークを解析したりとか, Solana チェーンでの取引を自前サービスに組み込む)だけでよければ HW 要件などは下げることできるでしょう.
HW 構成
それなりのスペックを要求しますが, とりあえず動かすのであれば, 8 コア + 32 GB mem くらいあれば大丈夫です. ストレージは SATA SSD でもいけるかもですが, NVMe SSD がよいでしょう.
Threadripper 1900X(8 core) + 64 GB mem + NVMe SSD 1TB(空きは 500GB)で動作確認しました.
理想は VPS やクラウドで GPU インスタンスですが, GPU 月だと少なくとも月 10 万円以上コースになってしまいます...
自前でつよつよ CPU/GPU があればネットワークだけ転送して自前 PC で処理させたいですよね(=> ネットワーク太くないとダメだった)...
どうしても Solana validator 建てたいというひとは, とりあえず Solana Validator Hosting サービス使いましょう(月額 8 万円くらい)
ただ, validator のスコアはデータセンターロケーションにも影響ありますので, 他に validator がホスティングされている場合は注意が必要です.
(特定のデータセンター(地理)に集中していると, データセンターが落ちたときに validator も落ちてしまうため, スコアが下がる)
ネットワーク構成
8000 ~ 11000 あたりの port(UDP 含む)を開放する必要があります. しかしルーターで開放するのが無理か困難, (セキュリティ上)やりたくないケースもあります.
reverse ssh ポートフォワーディングでローカル PC のサービスを外部公開するメモ
https://qiita.com/syoyo/items/969f48ce2ce55713056d
という手もありますが, ポートごとにコマンド建てる必要がありめんどいです(UDP ポートで 10 個くらい必要). また UDP のフォーワードがどうもうまくいかず(UDP -> TCP ssh -> UDP), solana validator 動きませんでした.
結局のところは OpenVPN で validator node とエントリポイントとなる踏み台(proxy)ノードを同一 IP にし, nginx の udp proxy でフォワードすることで対応しました.
こんな感じです.
+---------- VPN -------------------------+
| |
<internet> --------- <global ip/10.8.0.1> --------- <10.8.0.6> |
gateway node local node node |
(nginx) (solana validator) |
OpenVPN server OpenVPN client |
| |
+----------------------------------------+
とりあえずテストしてみる
solana-test-validator
でテストできます. ここで Slot をうまく処理できるかどうか確認しましょう.
GPU
今の所 GPU 使うほどではないですが, そのうちトランザクション増えてきたら GPU で処理が必要になるかもです.
prebuilt は CUDA 10.2 までです.
CUDA 11 とか, 動かす場合は GPU module をソースからビルドする必要があります.
これをビルドすればいいです. nvcc にパス通って入ればとくにはエラーでないと思いますが, コンパイルが遅いのでビルドに時間かかります.
あと, 未検証ですが OpenCL backend もいけるかもしれません.
PoH の処理速度
PC の性能かネットワークが遅いと PoH(Proof of History) のトランザクションが捌けずエラーがでます. あとはソースからビルドしたときに debug ビルドにしたときとか(cargo build --release
でリリースビルドにしましょう)
とりあえず無理やり動かすには, エラーログにあるように
--no-poh-speed-test
を追加します. ただ, 動きはしますが処理が遅くてトランザクションをさばききれずどんどん遅れていって結局最新に追いつけない(追いつけたどうかは solana catchup
で確認できます)のでエラー出たらおとなしくどこがボトルネックか調べて対応するのがよいです.
10 MB/s なネットワークではだめでした.
40 ~ 50 MB/s くらいは必要そうです.
80 MB/s でしたら catchup できました.
建った建った! Solana☀️の Validator が testnet で建った! 🥰 Threadripper 1900X + 64 GB mem で catchup できました. ネット速度最低 20~40 MB/s(上り降り) は必要そう(80 MB/s 時 catchup +10 slots/sec でした. catchup できなかった環境での速度は 10 MB/s くらい). pic.twitter.com/NkH3lwCXdy
— Syoyo Fujita 🌸 レイトラ ® 🐯 3 周年 🎉 (@syoyo) May 7, 2021
solana catchup
private-rpc を使っている場合は --our-localhost [port]
の指定が必要です.
注意点
mmap ファイル数の増加と, nofile(一度に開けるファイル数) の上限を上げておかないと, validator がout-of-memory で落ちるので気をつけましょう.
(10~20 分くらいかけてスナップショットファイル(500 MB くらい)を落としたあとに発生するので気づきにくくてめんどい)
2021/08/31 時点では 1,800 TPS(transactions per second)でスナップショットが 1.8 GB になっていました.
Solana は最大 6.5 万トランザクション/秒対応しているっぽいので, そのうちスナップショットが数 10 GB になってしまうかもしれません.
port forward off?
port forwarding のチェックを強制的に off にして validator 動かすことも一応できます.
ただ, この場合はいくつかの機能が disable されるかもです.
snapshot の毎回ダウンロード?
validator を立ち上げ直したり, 途中でエラーやセグフォで終了すると, 再度 snapshot(500 MB)ダウンロードやり直しになるようです.
peer との帯域が遅いとこれのダウンロードに 10~20 分くらいかかるので, validator がうまく動かずデバッグするときはめんどいです.
log rotation
ログ自体結構な量になります(INFO を suppress する手もあるのかもしれませんが)
validator プロセスに USR1
を送ると log ファイルを開き直すので, これを logrotate と組み合わせるのを推奨しています.
USR1
でファイル開き直しは nginx などサーバプロセスでよく使われているようですね.
Proxy 経由にする
Validator はクラスタ化するのができますので, Proxy 経由にするのがよさそうです!
セキュリティの向上にも期待できます.
最近は DDoS 対策などのために生 UDP ではなくて QUIC 対応始まりましたが(2022/07 時点では testnet のみで有効), クラスタ化するときもその間は QUIC 化できるのカナ?
proxy で受けて, データは zstd などで圧縮すれば回線細い先で validator 動かす場合でもワンチャンあるかも!?
validator 情報
keybase(というアプリ)と連携しています. まずは keybase にアカウントを作っておきます.
を参考にしてファイルをアップロードすればいけます!
(pubkey ファイルがあるかどうかで判断し, validator 情報を更新する)
Delegation criteria
Foundation delegation を受けるための基準
commission rate の変更
デフォルトでは 100%
solana vote-update-commision ...
で変更する.
収益
まず費用として, PC の費用(クラウド, VPS など使っている場合はその費用も) + validator として参加するのに最大 1.1 SOL/day 搬出しないといけない.
(2021/04/27 時点 1 SOL 5,000 円(!)くらい)
少なくとも 1.1 SOL/day + PC 費で, 20 万/月くらいはでていきそうです(PC 代は年 50 万想定).
収入としては validation による fee 収入があります.
それに加えて, delegation による commission 収入($SOL
自体 Staking で今は年 9.5 % くらい(これは年が経つごと減っていくが)得られるので, それに delegation する. commission 率は自由に決められるようだがだいたい 8% くらい?(つまり 9.5% の収益に対する 8%))があります.
delegation fee については, 上記シートを参考にすると, validator だけの場合の break even が $SOL
320 だとするとそれのおよそ 100 倍 32,000 $SOL
くらいを集める必要があります.
ただ, 上記シートは少し古く $SOL
13 USD くらいのときです. 今は 5000 円くらいですから, $SOL
値上がりで支出も増えますから, 少し収益出すくらい(年 150 万の収益)には 10 万 $SOL
くらい必要になります. 日本円で 5 億円くらい集める必要があります.
いい(?)振る舞いをする validator node には staking の delegation が集まり, validator の手数料収入を得られる... となります(どのようにして集めるかは, 君の腕のみせどころ!).
トップの Validator は 500 億円くらいぶんの $SOL
を集めています. 単純計算で Validator の delegation 収益は 500 億円 * 9.5% * 8% = 3.2 億円/年の収益になるのでしょうか?
($SOL
価格が変わるので, 要調整(しかし基本的には $SOL が上昇すると思われるので, より収益は大きいであろう))
ただ, 自身が $SOL
を搬出せず今からここまでの $SOL
を他者から集めるには相応の苦労が必要そうな気もします...
(Delegate してくれるのは, $SOL
で財を成して余りまくっている富裕層くらいしかいなさそう...ですが, validator が分散していないっぽいので Solana 財団自体がいくらか delegate してくれるっぽい)
ステーキングでは APR 9.5% なので, 普通の庶民は DeFi で $SOL
増やしたほうが得ですし.
税金面とかで $SOL
HODL したほうがいいってひとから集めるのがいいのでしょうか?
Tour de SOL
テストネットの Validator として寄与すると $500 ぶんの Sol 報酬がもらえるっぽいプログラム(しかしそろそろ終了っぽい).
Solana 自体は Permission-less(Decentralized)なので, validator として参加するには特に登録などはいらない. なにか寄与して $SOL 報酬ほしいときに regist してね, という感じです.
Delegation program
Tour de SOL の変わりに Delegation program が始まりました. ただ申し込んでも順番待ちで数ヶ月かかるっぽいです.
TODOF
-
どれだけの性能の PC があればよいか(GPU あるといいのか?) + $SOL がどれだけ得られるか検証する
- validator fee だけだと年間 1000
$SOL
くらい稼げばいけるか - それ以上は delegation 増やして delegation の収入を狙うことになる.
- validator fee だけだと年間 1000
-
Validator のクラスタを作って処理性能上げる
- エントリポイントは VPS 上で, トランザクションさばくのだけローカルのつよつよ GPGPU マシンに転送するとかできるかな?
- https://github.com/project-serum/validators
- クラスタ構成にする場合もいずれにせよネットワーク帯域はそれなりが必要そう