walrus-overview について
walrus-overviewは、Walrusの分散型バイナリデータストレージの構造や用語、ツール選択を案内するスキルです。具体的な作業には関連する専用スキルへ誘導します。
主な機能
- 01Walrusの構造と用語の解説
- 02ツール選択の案内
- 03作業別スキルへの誘導
- 04Blob IDとライフサイクルの説明
活用シーン
- 01アプリ向けのWalrusインターフェース選択
- 02Blob IDと保存期間の把握
- 03データの保存・読み取り方法の確認
- 04費用・セキュリティ・問題解決の情報探し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mystenlabs/ walrus-skills --skill walrus-overviewインストール後、Claude Code で/walrus-overviewを入力して読み込まれたか確認します。
同梱ファイルevals/evals.json
詳細
Walrus の概要
出典に関する制約: このスキルのすべての情報は、 Walrus のドキュメントと Walrus のホワイトペーパーを出典としています。 このスキルを拡張する場合は、これらの出典のみを使用してください。
Walrus は、Sui ブロックチェーン上に構築された分散型ストレージプロトコルです。消失訂正符号を使用して、独立したストレージノードのネットワーク全体に任意のバイナリデータ(「blob」)を保存します。Sui スマートコントラクトは、blob の登録、認証、支払い、メタデータを管理します。
このスキルは、Walrus を理解するための入り口です。アーキテクチャ、基本的な用語、ユースケースに適したツールの選び方を説明します。具体的なツールの使い方については、該当するスキルを読み込んでください。
関連スキル
| トピック | スキル | 読み込むタイミング |
|---|---|---|
| CLI | walrus-cli | walrus バイナリを使用するとき |
| HTTP API | walrus-http-api | REST 経由で保存/読み取りするとき |
| TypeScript SDK | walrus-ts-sdk | TypeScript からプログラムでアクセスするとき |
| Move 連携 | walrus-move-integration | blob を Move コントラクトでラップするとき |
| ストレージコスト | walrus-storage-costs | 料金、見積もり、コスト最適化について調べるとき |
| blob のライフサイクル | walrus-blob-lifecycle | blob の期間延長、削除、共有を行うとき |
| サイト | walrus-sites | 静的ウェブサイトをデプロイするとき |
| Quilts | walrus-quilts | 多数の小さな blob をまとめるとき |
| 機密性 | walrus-data-security | 保存前に暗号化するとき。Walrus が保証するのは可用性と完全性であり、機密性ではありません |
| トラブルシューティング | walrus-troubleshooting | 一般的なエラーとその解決方法を調べるとき |
選択ガイド
| タスク | 読み込むスキル |
|---|---|
| 「Walrus とは何ですか?」/「どのように動作しますか?」 | 以下のスキルの内容 |
| 「どのツールを使えばよいですか?」 | 以下の判断ツリー |
| 「blob/blob ID/オブジェクト ID とは何ですか?」 | 以下の用語 |
| ファイルを保存する | walrus-cli または walrus-http-api または walrus-ts-sdk |
| コストを見積もる | walrus-storage-costs |
| ウェブサイトをデプロイする | walrus-sites |
| データを暗号化する | walrus-data-security |
| エラーを解決する | walrus-troubleshooting |
スキルの内容
Walrus とは?
Walrus は分散型 blob ストレージプロトコルです。ファイルをアップロードすると、Walrus はそのファイルをフラグメントに符号化して独立したストレージノードに分散し、Sui ブロックチェーンが所有権と可用性を追跡します。その結果、ノード障害に耐え、単一の制御点を持たず、データが改ざんされていないことを暗号学的に証明できるストレージが実現します。
主な特性:
- デフォルトで公開されています。 blob ID を知っている人なら誰でも、すべての blob を読み取れます。プライバシーが必要な場合は、アップロード前に暗号化してください(
walrus-data-securityを参照)。 - コンテンツアドレス方式です。 同じファイルの内容からは、常に同じ blob ID が生成されます。
- 保存期間に制限があります。 ストレージの期間は一定のエポック数で、最長約 2 年です。より長く保存するには、blob の期間を延長するか、再アップロードする必要があります。
- 障害耐性があります。 ストレージノードの最大 2/3 が停止しても、データは利用可能な状態を保ちます。
3 層アーキテクチャ
-
クライアント層。 コード(CLI、SDK、または HTTP リクエスト)が blob を符号化し、フラグメントをストレージノードに分散して、登録と認証のために Sui とやり取りします。
-
ストレージノード層。 独立した運営者がストレージノードを稼働させ、blob の消失訂正符号化されたフラグメント(「sliver」)を保持します。各ノードは 1 つ以上のシャードを保持します。ノードは sliver を検証し、受領証に署名して、エポックの移行に参加します。メインネットでは 60 を超える運営者がノードを稼働させています。
-
Sui ブロックチェーン層。 Sui 上のスマートコントラクトが、支払い(WAL トークン)、ストレージリソースの割り当て、シャードとノードの割り当て、blob の登録/認証、メタデータを管理します。ブロックチェーンは調整層であり、データ層ではありません。
保存の仕組み
- クライアントは RedStuff 消失訂正符号を使って blob をエンコードし、すべてのシャードに分散するスリバーを生成します(ストレージのオーバーヘッドは約 4.5 倍です)。
- クライアントは Sui に blob を登録し、ストレージ料金として WAL、ガス代として SUI を支払います。
- スリバーがストレージノードに並行して送信されます。各ノードは検証を行い、受領証に署名します。
- ノードの 2/3 が確認すると、署名が 可用性証明書に集約され、Sui に送信されます。
- **可用性ポイント(PoA)**は、Walrus が blob の保存期間全体にわたって利用可能であることを保証する時点を示します。
読み取りの仕組み
- クライアントはストレージノードにスリバーを要求します。
- ノードの 1/3 を超える数からスリバーを収集すると、元の blob を再構築します。
- または、アグリゲーターが代わりにこの処理を行い、HTTP 経由で blob を提供します。
主な用語
| 用語 | 定義 |
|---|---|
| Blob | Walrus に保存されるあらゆるバイナリデータ(ファイル、画像、JSON、動画など)。最大約 13.6 GiB です。 |
| Blob ID | blob の内容を識別する、URL セーフな base64 文字列です。コンテンツアドレス方式で、同じ内容には同じ ID が割り当てられます。読み取りに使用します。 |
| Sui オブジェクト ID | オンチェーンの Blob Sui オブジェクトを識別する 0x... 形式の 16 進文字列です。同じ内容でもアップロードごとに異なります。ライフサイクル操作(延長、削除、共有)に使用します。 |
| エポック | 一定の期間です。メインネットでは 14 日間です。ストレージ期間はエポック単位で計測されます。 |
| スリバー | 消失訂正符号でエンコードされた blob の断片で、単一のシャードに保存されます。 |
| シャード | ストレージ領域を分割した単位で、各エポックにストレージノードへ割り当てられます。 |
| パブリッシャー | blob データを受け付ける HTTP サービス(PUT)です。自身が資金を用意したウォレットを使い、エンコード、配布、オンチェーン登録を処理します。Walrus はメインネットで公開の未認証パブリッシャーを運用しておらず、今後運用する予定もありません。認証を設定して独自に運用してください。公開テストネットパブリッシャーは利用できます。 |
| アグリゲーター | ストレージノードからスリバーを取得して blob を読み取る HTTP サービス(GET)です。両ネットワークには、無料で利用できる公開アグリゲーターが多数あります。 |
| アップロードリレー | 帯域幅が限られたクライアント(ブラウザーなど)に代わって、エンコードとスリバーの配布を処理するサードパーティーサービスです。チップを請求する場合があります。 |
| WAL | ストレージ料金の支払いに使用する Walrus トークンです。 |
| SUI | オンチェーンのガス代の支払いに使用する Sui トークンです。 |
| 可用性ポイント(PoA) | 可用性証明書がオンチェーンに投稿される時点です。この時点以降、Walrus は blob が利用可能であることを保証します。 |
| 削除可能な blob | 有効期限前であれば、所有者が削除できる blob です(デフォルト)。 |
| 永続 blob | アップロードしたユーザーであっても、有効期限前に削除できない blob です。 |
| キルト | 複数の blob を格納する単一のストレージ単位で、blob ごとのオーバーヘッドを削減します。 |
| 共有 blob | Sui の共有オブジェクトでラップされた Blob で、誰でも資金を追加して保存期間を延長できます。Walrus コントラクトは参照実装として SharedBlob を提供しています。開発者は独自の共有ラッパーも作成できます。 |
| ストレージプール | プレビュー機能です。1 つの前払いストレージ予約を複数の blob で共有するため、各保存で支払うのは書き込み料金のみとなり、プール内のすべての blob が同時に期限切れになります。Rust SDK と Move のみで利用でき、CLI、HTTP API、TypeScript SDK ではまだ利用できません。 |
Blob ID と Sui オブジェクト ID の違い
新規ユーザーが最も混乱しやすい点です。
| Blob ID | Sui オブジェクト ID | |
|---|---|---|
| 形式 | URL セーフな base64(例:M4hsZGQ1oCk...) | 0x プレフィックス付きの 16 進数(例:0xe91eee8c...) |
| 由来 | blob の内容(コンテンツアドレス方式) | Sui トランザクション(アップロードごとに固有) |
| 同じ内容を 2 回アップロードした場合 | 同じ blob ID | 異なるオブジェクト ID |
| 用途 | blob の内容の読み取り | ライフサイクル操作(延長、削除、共有、バーン) |
| 取得元 | 保存レスポンス(blobId フィールド) | 保存レスポンス(blobObject.id フィールド) |
使用するツールの選択ツリー
| 目的 | 使用するもの | スキル |
|---|---|---|
| ターミナルからファイルをアップロードする | walrus store CLI | walrus-cli |
| CI/CD パイプラインでアップロードをスクリプト化する | walrus json CLI(JSON モード) | walrus-cli |
| HTTP 経由で任意の言語から保存/読み込みを行う | Publisher/aggregator REST API | walrus-http-api |
| TypeScript/JavaScript アプリを構築する | @mysten/walrus SDK | walrus-ts-sdk |
| ブラウザーからアップロードする | TypeScript SDK + upload relay | walrus-ts-sdk |
| Move コントラクトで blob を参照する | Walrus Move dependency | walrus-move-integration |
| 静的ウェブサイトをデプロイする | site-builder CLI | walrus-sites |
| 多数の小さなファイルを低コストで保存する | Quilts(CLI または HTTP) | walrus-quilts |
| 機密データ/プライベートデータを保存する | クライアント側で(たとえば Seal を使って)暗号化してから保存する | walrus-data-security |
| SUI や WAL を保有していないユーザーがアップロードできるようにする | バックエンドパブリッシャー(スポンサー付き、ウォレット不要)、upload relay、またはバックエンド署名者を使う SDK | walrus-http-api |
| 依存する前に blob が永続的に保存されていることを確認する | walrus blob-status / getBlobObject | walrus-blob-lifecycle |
Walrus と従来のストレージの比較
| Walrus | AWS S3 / Cloud Storage | |
|---|---|---|
| 制御 | データを制御する単一の運営者がいません | プロバイダーがすべてを制御します |
| 信頼モデル | 暗号学的検証 | プラットフォームへの信頼 |
| 耐障害性 | ノードの 2/3 が故障しても存続します | プロバイダーの SLA |
| プライバシー | すべてのデータはデフォルトで公開されます | デフォルトで非公開です |
| 料金モデル | WAL + SUI トークン、エポック単位 | USD、月単位 |
| 期間 | 1 回の購入につき最大約 2 年、更新可能 | 無期限 |
| 構造 | フラットな blob ストレージ(ディレクトリなし) | ディレクトリ/バケット |
| 検証可能性 | 暗号学的 blob ID、オンチェーン証明書 | なし |
Walrus は、検閲耐性、検証可能性、分散型の可用性、またはプログラム可能なアクセス制御を必要とするユースケースに最適です。あらゆるクラウドストレージをそのまま置き換えるものではなく、オブジェクト/blob ストレージ部分のみを置き換えるものです。
サービスを選ぶ
実際の制約に合わせて選択してください。
- 呼び出し元が blob を読み込む場合:aggregator を使用します。
- 呼び出し元が SUI や WAL を保有できない場合:publisher を使用し、Mainnet では独自に運用して認証します。
- 呼び出し元がウォレットを保有しているものの、ブラウザーまたはモバイルで実行される場合:upload relay を使用します。
- 呼び出し元が資金のあるウォレットを持ち、サーバー側で実行される場合:ストレージノードと直接通信する TypeScript SDK を使って書き込みます。
ルール
- すべての blob は公開されます。 プライバシーが必要な場合は、アップロード前に暗号化してください。
- ストレージの利用期間には上限があります。 更新を計画してください。最大は 53 エポック(mainnet で約 2 年)です。
- WAL と SUI の両方が必要です。 WAL はストレージ料金、SUI はガス代に使用します。
- 公開の mainnet publisher はありません。 upload relay、TypeScript SDK、CLI を使用するか、独自の publisher を運用してください。
- 小さな blob を個別に保存すると高コストです。 小さなファイルをまとめて保存するには quilts を使用してください。
- Blob ID は object ID ではありません。 コンテンツハッシュ(読み込み用)とオンチェーンオブジェクト(管理用)の違いです。混同しないでください。