Slide 1

Slide 1 text

Web3:バリデーターのクラウド移設、 運用自動化、コスト最適化への取り組み グリー株式会社 インフラエンジニア 橋本 順之

Slide 2

Slide 2 text

橋本順之 2013年3月にグリー株式会社に入社。現在に至るまでインフラスト ラクチャ部に所属し、NoSQL・KVSのサーバーの開発や運用を専 門とする。 社内KVSであるFlareの開発を経て、Webゲーム開発を経験。 「アナザーエデン 時空を超える猫」のDynamoDBの調整に機械学 習を導入後、機械学習のOSSやプロジェクトに参加。 現在はWeb3のバリデーターの導入と運用に取り組んでいる。 グリー株式会社 インフラエンジニア 2

Slide 3

Slide 3 text

目次 ● バリデーターとは ● バリデーターの運用の課題 ● サーバー費用の改善 ● 運用の改善 ● まとめ 3

Slide 4

Slide 4 text

バリデーターとは? 4 ● BLRD PTE. LTD.はグリーの子会社 ● ブロックチェーンに関わる仕事 ○ バリデータの運用によるトークン運用 ○ ゲーム開発 ● チェーンのブロックの検証をバリデーターがしている。

Slide 5

Slide 5 text

バリデーターの運用 5 ● 月一回のトークンの確認&移動 ○ 売り上げの確認のため(経理要件) ● チェーンの運営とのやり取り ○ ソフトウェアのアップデート ● サーバーの維持 ○ 障害対応 ○ バックアップ

Slide 6

Slide 6 text

バリデーターの課題 ● 固定費が高い。 ○ インフラ費用が高い。 ■ ハイスペックなサーバーが必要。 ■ ネットワークのトラフィックが多い。 ● 運用がスケールしない。 ○ チェーンが増えた分だけ作業が増える。 ■ ブロックチェーンの運用はチェーンが増えると手順書が増える。 ● 例:MySQLの運用はサーバーが増えても手順書は増えない。 ■ バリデーターのためのマネージドサービスがない。 ○ 運営からの連絡がチャット(DiscordやTelegram) ■ チェーンが増えただけチャットも増える。 ■ 専門用語が多く属人化しやすい。 ■ Discord・Telegramは会社でアカウントが管理できない。(IdPがコントロールできない。) ○ 深夜対応が多い。 ■ 早く対応しないとリスクが増える。 6

Slide 7

Slide 7 text

バリデーターの課題に対する対策 ● 固定費が高い。 ○ インフラ費用が高い。ー>費用が最適なクラウドに移設できる構成にする。 ● 運用がスケールしない。 ○ チェーンが増えた分だけ作業が増える。ー>サーバーの構成を定型化する。 ○ 運営からの連絡がチャット(DiscordやTelegram)ー>LLMで要約、タスク抽出。 ○ 深夜対応が多いー>LLMでタスクを自動実行。 7

Slide 8

Slide 8 text

バリデーターのインフラ費用 ● ネットワークのegressが高い。 ○ インスタンスの最適化をしても変わらない部分。 8 チェーン egress(Mbps) egress(TB/Month) SUI 58 18 Polygon 51 16 Avalanche 2 0.6 Oasys 2 0.6

Slide 9

Slide 9 text

バリデーターのインフラ費用 ● ネットワークのegressの費用はAWSやGoogle Cloudで約半分。 ○ Google CloudならStandard Tierがおすすめ。 ○ 費用は公式の電卓で計算。 9 egressの種類 コスト 40TBの費用(例) 20TBの費用(例) AWS USD 0.089/GB (月40TB) $3,901 $2,078 GCP Premium Tier USD 0.085/GB (月40TB) $6,553 $3,481 GCP Standard Tier USD 0.075/GB (月40TB) $3,408 $1,872 Linode インスタンスあたり 20TBまで無料 0 (2インスタンス) 0

Slide 10

Slide 10 text

バリデーターの移設 ● サーバーのコスト最適化のため移設が必要。 ○ AWSからGoogle Cloudに移設。 ● 移設の注意点 ○ 移設時のダウンタイムを減らす。 ■ TBサイズのデータのコピーに数時間かかる。 ○ サーバーの構築を特定のディレクトリまとめる。 ■ /usr/bin以下や/homeの下にファイルを置かない。 ■ 注意:ブロックチェーンのアプリはシングルバイナリで動くのでパッケージのイン ストールはいらない。 ○ rsyncで移設する。 ■ 複数回rsyncを実行して、最後にサーバーを止めてからrsync。 ■ 注意:levelDBはレプリケーションのようなものをサポートしてない。 10

Slide 11

Slide 11 text

運用の課題:運用がスケールしない。 ● チェーンが増えた分だけ作業が増える。 ○ MySQLの運用はサーバーが増えても手順書は増えない。 ○ ブロックチェーンの運用はチェーンが増えると手順書が増える。 ○ バリデーターのためのマネージドサービスがない。 ● 運営からの連絡がチャット(DiscordやTelegram)。 ○ チェーンが増えただけチャットも増える。 ■ サーバーは運営が管理していて、こちらではコントロールできない。 ○ 専門用語が多く属人化しやすい。 ● 深夜対応が多い。 ○ 早く対応しないとリスクが増える。 11

Slide 12

Slide 12 text

運用の課題:運用がスケールしない。 ● チェーンが増えた分だけ作業が増える。 ○ チャットの確認が大変。チャネルが多すぎて迷子になる。 ○ ブロックチェーンの運用はチェーンが増えると手順書が増える。 ○ バリデーターのためのマネージドサービスがない。 ● 運営からの連絡がチャット(DiscordやTelegram)。 ○ チェーンが増えただけチャットも増える。 ■ サーバーは運営が管理していて、こちらではコントロールできない。 ○ 専門用語が多く属人化しやすい。 ● 深夜対応が多い ○ 早く対応しないとリスクが増える。 12 ● チャットの分析基盤を作る。 ● チャットの確認、要約、課題抽出の自動化 ○ チャットの収集 ○ LLMによる分析

Slide 13

Slide 13 text

チャットの分析基盤 13 各チェーンの DiscordやTelegramの チャネル S3 ChatGPT 社内チャット チャットのデータをS3に集約して分析 (直近のチャットだけ分析すればいい。)

Slide 14

Slide 14 text

チャットの分析と要約の例 14

Slide 15

Slide 15 text

アップデートの自動化 ● 課題 ○ チャットの集約だけでは作業自体は減らない。 ○ 休日対応が辛い。 ○ 運営から不定形なフォーマットでアップデートの連絡がくる。 ○ LLMで任意のコマンドを実行させるのはNG。 ○ 正規表現で重要なところを抜き出すのが困難。 15

Slide 16

Slide 16 text

アップデートのメッセージ中の多様なバージョン表記 16 ● 通常のメッセージにあるバージョン ○ New version of Bor v1.4.0 has been released for Polygon Mainnet. ● アップデートのリンクが渡されるケース ○ 新しいバージョンがリリースされたことご連絡いたします。 https://github.com/oasysgames/oasys-validator/releases/tag/v1.1.0 ● バージョンがハイフン付きで書かれている場合 ○ Instructions to upgrade: https://forum.polygon.technology/t/bor-v1-3-6-release/19554

Slide 17

Slide 17 text

アップデートの自動化 ● 課題 ○ チャットの集約だけでは作業自体は減らない。 ○ 休日対応が辛い。 ○ 運営から不定形なフォーマットでアップデートの連絡がくる。 ○ LLMで任意のコマンドを実行させるのはNG。 ○ 正規表現で重要なところを抜き出すのが困難。 ● 解決方法 ○ LLMでバージョンを抜き出す。 ■ Structured Outputを使う。 ● JSON SchemaでLLMの出力の型を定義。 ○ 定型のタスクを自動実行する。 17

Slide 18

Slide 18 text

アップデートの自動化:Structured Output ● LLMでバージョンを抜き出すためのJSON Schema 18 { "properties":{ "hash":{ "description":"A sha1 that system outputs.", "type":"string" } }, "required":["hash"], "type":"object" } ● LLMがSchema通りの出力をしてくれる。 ○ 特別なパーサーがいらない。

Slide 19

Slide 19 text

アップデートの自動化 ● 課題 ○ 一つのチャットに複数のプログラムのアップデート情報がながれる。 ○ LLMが誤認識をする。 ■ アップデートするプログラム取り違える。 ○ 自分自身の出力に反応する。 ■ アップデート完了メッセージで、またアップデートしようとする。 ○ 表記揺れがある。 ■ バージョン番号の表記にぶれがある。v2.1といったり2.1といったり。 ○ プロンプトインジェクション ■ バージョンの代わりになにかコマンドを埋め込まれるとか。 19

Slide 20

Slide 20 text

アップデートの自動化 ● 課題 ○ 一つのチャットに複数のプログラムのアップデート情報がながれる。 ○ LLMが誤認識をする。 ○ 自分自身の出力に反応する。 ○ 表記揺れがある。 ○ プロンプトインジェクション ● 解決方法 ○ テストをちゃんと書く。 ○ フォーマットバリデータを書く。 ○ プロンプトを改善する。 ○ デグレが起きてないことを確認。 ○ モデルを変える。(GPT-4からGPT-4oにする。) 20

Slide 21

Slide 21 text

プロンプトの例:違うプログラムのアップデート 21 タスク アップデートするOasysのverifierのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). When a new verifier(oasvlfy, verse-verifier) is released, get the version of the released verifier. User message is as follows: --- 新しいバージョンがリリースされたことご連絡いたします。 https://github.com/oasysgames/oasys-validator/releases/tag/v1.1.0 出力 v1.1.0

Slide 22

Slide 22 text

プロンプトの例:違うプログラムのアップデート:修正 22 タスク アップデートするOasysのverifierのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). The server has verifier(oasvlfy, verse-verifier) and validator(oasys-validator) programs. When a new verifier(oasvlfy, verse-verifier) is released, get the version of the released verifier. Don't return the version of validator. User message is as follows: --- 新しいバージョンがリリースされたことご連絡いたします。 https://github.com/oasysgames/oasys-validator/releases/tag/v1.1.0 出力 なにも出力しない。 対象のプログラムと対象でないプログラムを明記する。

Slide 23

Slide 23 text

プロンプトの例:表記ブレ:間違えるケース 23 タスク アップデートするOasysのvalidatorのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). The server has verifier(oasvlfy, verse-verifier) and validator(oasys-validator) programs. When a new validator(oasys-validator) is released, get the version of the released validator. User message is as follows: --- 新しいバージョンがリリースされたことご連絡いたします。 https://github.com/oasysgames/oasys-validator/releases/tag/v1.1.0 出力 1.1.0

Slide 24

Slide 24 text

プロンプトの例:表記ブレ:修正例 24 タスク アップデートするOasysのvalidatorのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). The server has verifier(oasvlfy, verse-verifier) and validator(oasys-validator) programs. When a new validator(oasys-validator) is released, get the version of the released validator. The format is like vx.x.x. The prefix is "v". User message is as follows: --- 新しいバージョンがリリースされたことご連絡いたします。 https://github.com/oasysgames/oasys-validator/releases/tag/v1.1.0 出力 v1.1.0 プロンプトの改善によるバージョンの表記ブレの修正例になっている。

Slide 25

Slide 25 text

プロンプトの例:アップデートメッセージに反応 25 タスク アップデートするOasysのvalidatorのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). The server has verifier(oasvlfy, verse-verifier) and validator(oasys-validator) programs. When a new validator(oasys-validator) is released, get the version of the released validator. User message is as follows: --- [Validator Node] Updated Oasys Validator of oasys to v1.2.4 出力 v1.2.4 アップデートしたというメッセージ(アップデート完了)で アップデートしたいわけではない。

Slide 26

Slide 26 text

プロンプトの例:アップデートメッセージ:修正例 26 タスク アップデートするOasysのvalidatorのバージョンを抜き出す。 入力 You are a validator of oasys(blockchain). The server has verifier(oasvlfy, verse-verifier) and validator(oasys-validator) programs. When a new validator(oasys-validator) is released, get the version of the released validator. Don't call the function by messages with prefixed with '[Validator Node]', which are own messages. User message is as follows: --- [Validator Node] Updated Oasys Validator of oasys to v1.2.4 出力 なにも出力しない。 回答してはいけないケースをプロンプトに書く。

Slide 27

Slide 27 text

まとめ ● バリデータはegressのコストが高め。 ● チェーンの運用がチャットで回っているので、LLMでタスクを抽出&実行 をやってみた。 ○ チャットで回っているシステムの一部を自動化。 ○ プロンプトの質が影響するのでテストを書いてプロンプトを改善。 ○ チャットの量は多くないのでLLMの費用は月額$1程度。 27

Slide 28

Slide 28 text

ご清聴ありがとうございました 28

Slide 29

Slide 29 text

No content