# 문자열을 1 epoch 동안 저장
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs" \
  -d "some string"

# 파일을 5 epoch 동안 저장
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을 저장할 스토리지 epoch 수 (기본값: 1)
send_object_to
Blob 오브젝트를 전송할 Sui 주소
deletable
Blob을 삭제 가능하게 저장할지 여부 (기본값: false)

요청 예시

# 문자열을 1 epoch 동안 저장
curl -X PUT "https://walrus-mainnet-publisher.nami.cloud/${endpoint_key}/v1/blobs" \
  -d "some string"

# 파일을 5 epoch 동안 저장
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 이벤트 ID를 반환하며, 이를 통해 Sui explorer 또는 Sui SDK를 사용하여 Sui Blob 오브젝트를 생성한 트랜잭션을 찾을 수 있습니다.