# 1エポック分のストレージで文字列を保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs" \
  -d "some string"

# 5エポック分のストレージでファイルを保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?epochs=5" \
  --upload-file "some/file"

# ファイルを保存し、BLOBオブジェクトを特定のアドレスに送信
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?send_object_to=${ADDRESS}" \
  --upload-file "some/file"

# ファイルを削除可能なBLOBとして保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?deletable=true" \
  --upload-file "some/file"
Walrus Publisherは、データの保存準備、ストレージ料金の支払い、およびWalrusネットワークとのトランザクション管理を担当します。

BLOBの保存

BLOBをWalrusネットワークに追加します。BLOBデータはリクエストボディで送信されます。Publisherがデータの保存準備、ストレージ料金の支払い、Walrusネットワークとのトランザクション管理を行います。

ベースURL

https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/
ここで${endpoint_key}は、あなた専用のエンドポイントキーです。

クエリパラメータ

epochs
BLOBを保存するストレージエポック数(デフォルト: 1)
send_object_to
BLOBオブジェクトを送信するSuiアドレス
deletable
BLOBを削除可能として保存するかどうか(デフォルト: false)

リクエスト例

# 1エポック分のストレージで文字列を保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs" \
  -d "some string"

# 5エポック分のストレージでファイルを保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?epochs=5" \
  --upload-file "some/file"

# ファイルを保存し、BLOBオブジェクトを特定のアドレスに送信
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?send_object_to=${ADDRESS}" \
  --upload-file "some/file"

# ファイルを削除可能なBLOBとして保存
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs?deletable=true" \
  --upload-file "some/file"

レスポンス - 新規作成BLOB

BLOBが初めて保存された場合、newlyCreatedフィールドに新しいBLOBの情報が含まれます:
{
  "newlyCreated": {
    "blobObject": {
      "id": "0xe91eee8c5b6f35b9a250cfc29e30f0d9e5463a21fd8d1ddb0fc22d44db4eac50",
      "registeredEpoch": 34,
      "blobId": "M4hsZGQ1oCktdzegB6HnI6Mi28S2nqOPHxK-W7_4BUk",
      "size": 17,
      "encodingType": "RS2",
      "certifiedEpoch": 34,
      "storage": {
        "id": "0x4748cd83217b5ce7aa77e7f1ad6fc5f7f694e26a157381b9391ac65c47815faf",
        "startEpoch": 34,
        "endEpoch": 35,
        "storageSize": 66034000
      },
      "deletable": false
    },
    "resourceOperation": {
      "registerFromScratch": {
        "encodedLength": 66034000,
        "epochsAhead": 1
      }
    },
    "cost": 132300
  }
}

レスポンス - 既に認証済みのBLOB

Publisherが同じBLOB IDかつ有効期間が十分な認証済みBLOBを見つけた場合、alreadyCertified JSON構造が返されます:
{
  "alreadyCertified": {
    "blobId": "M4hsZGQ1oCktdzegB6HnI6Mi28S2nqOPHxK-W7_4BUk",
    "event": {
      "txDigest": "4XQHFa9S324wTzYHF3vsBSwpUZuLpmwTHYMFv9nsttSs",
      "eventSeq": "0"
    },
    "endEpoch": 35
  }
}
eventフィールドは、Sui Blobオブジェクトを作成したトランザクションをSui ExplorerやSui SDKで検索するために利用できるSuiイベントIDを返します。