fshy

fshy / Storage

walrus

docs.wal.app · Storage · 3 records · JSON

Walrus Testnet public publishers (Mysten Labs + community) Storage

caveatanonymousno cardRper-object-cap

docs.wal.app/docs/system-overview/public-aggregators-and-pub · p2p · storage/walrus-testnet-public-publishers · JSON · compare

Free tierNo account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by default'. In practice the reference publisher accepted 300 MiB and 1 GiB. Max storage duration is 53 epochs; on Testnet 1 epoch = 1 day.
unit mixed; metered on stored-bytes
Pricenone stated
Per-object capper-object-cap: 1 GiB (1073741824 bytes)
Retentionretention: 53 epochs max, 1 day per epoch on Testnet = 53 days, and 'Walrus wipes the data periodically without warning' (1 days)
Egressunmetered. Reads are served by ~55 independent community aggregators plus the Mysten reference aggregator; all returned CORS-open bytes with no metering observed and no auth header.
Identityanonymous derived from the record's prose, not from an identity field, and no signup was executed: No account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by de
Limits
  • retention-clamped retention: 53 epochs max, 1 day source
  • per-object-cap per-object-cap: 1 GiB source
per-object-cap: 1 GiB verified write; read path has a per-object-cap of 500 MiB on the Mysten reference aggregator (403 SIZE_EXCEEDED, 'the blob size exceeds the maximum allowed size: 524288000') while community aggregators served the same 1 GiB blob fine. retention: 53 epochs max, 1 day per epoch on Testnet = 53 days, and 'Walrus wipes the data periodically without warning'. request-rate: 10 x 1 MiB PUTs back-to-back all returned 200, no shaping seen; no rate limit documented on Testnet.
Bindingper-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota
Interfacerest, cli rest
ToolingPlain HTTP: PUT $PUBLISHER/v1/blobs?epochs=N --upload-file; GET $AGGREGATOR/v1/blobs/<blobId>. OpenAPI at /v1/api. Machine-readable operator list at https://docs.wal.app/operators.json (updated weekly). Walrus CLI + TypeScript SDK also exist (github.com/MystenLabs/walrus).
Composes with16 public Testnet publishers in operators.json (3 live-tested: walrus.space, tududes, banansen) x unlimited keyless PUTs x unlimited blobs. Any number of blobs per publisher; distinct content hashes so no account dimension is needed at all. Store 10 TiB as 20,000 x 500 MiB blobs, or 10,000 x 1 GiB against community aggregators. Also: 53-epoch max means re-upload on a rolling schedule, so 'capacity' = (publishers x disk) not a per-identity tier.
ReliabilityTestnet is periodically wiped without warning and publishers are volunteer-run (2 of 5 tested endpoints were down: h2o-nodes 502, atalma connection refused); treat as ephemeral, not archive.
NotesNo account, no key, no quota. Docs quote only a per-request limit: 'Most aggregators and publishers limit requests to 10 MiB by default'. In practice the reference publisher accepted 300 MiB and 1 GiB. Max storage duration is 53 epochs; on Testnet 1 epoch = 1 day.
Evidence rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Parsed numbers
  • $.limits[1].value limit:per-object-cap 1.0 GiB
Evidence (5)
datesourcewhat it proved
2026-10-21docs.wal.app/docs/system-overview/public-aggregators-and-pub'You do not need to run your own daemon... community operators expose public aggregator and publisher services'; 'Most aggregators and publishers limit requests to 10 MiB by default'
2026-10-21docs.wal.app/docs/network-referenceepoch duration Testnet 1 day, Mainnet 2 weeks; 'Maximum number of epochs for which storage can be bought 53'; 'Data persistence ... Walrus wipes the data periodically without warning'
2026-10-21publisher.walrus-testnet.walrus.space/v1/blobs?epochs=53probe: PUT --upload-file <1 GiB random> -> 200 in 165 s, blobId AzBDr3weHh3aHfjIdql5DT8z357Y1FGK3nDIJC5KEeI, storageSize 4888852000
2026-10-21aggregator.walrus-testnet.walrus.space/v1/blobs/<1probe: GET GiB id> -> 403 SIZE_EXCEEDED 524288000; GET https://walrus-testnet-aggregator.stakely.io/v1/blobs/<same id> -> 200, 1073741824 bytes, sha256 matches original byte-for-byte
2026-10-21withheldprobe: 16 parallel 3 MiB ranged GETs of a 50 MiB blob -> 200/206, 50,331,648 bytes in 1.98 s (25.4 MB/s) vs 3.97 MB/s single-stream (13.2 s) — 6.4x from concurrency
More fields (1)
{
 "unit_note": "free_tier.unit is 'mixed' because the headline is denominated in MiB or KiB, which the schema enum does not carry; the verbatim free_tier.stated keeps the true unit. See the storage-dossier handover."
}
Unknown or withheld values (4)
  • $.evidence[4].url private-url
  • $.free_tier.notes process
  • $.per_object_cap.notes not-extracted
  • $.retention.notes not-extracted

walrus (sui) Storage

paidemail?card?R

docs.wal.app/docs/system-overview/storage-costs · rejected-provider · storage/walrus-2 · JSON · compare

Free tier$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e
unit none; metered on none
Pricenone stated
Per-object capnot recorded
Retentionnot recorded
Egressnot recorded
Identityemail (placeholder) not published
Bindingnone no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit
Interfaceunknown
Toolingnot recorded
Composes withnot recorded
Reliability$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e
Notes$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e
Evidence rungreported
Checked2026-10-21 (inherited); stale on 2026-11-04
Evidence (2)
datesourcewhat it proved
2026-10-21docs.wal.app/docs/system-overview/storage-costs$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e
2026-10-21docs.wal.app/docs/sponsored-uploadscited as the basis of the rejection: $0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e
More fields (1)
{
 "dead_end": {
  "failure_class": "paid",
  "why": "$0.023/GB/month with no free tier, billed on encoded size which is ~4.5x the file plus 64 MB per-blob overhead. A 50 GB file for a year is ~$62; 20 TiB would be ~$25,000/yr and rising with e",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown or withheld values (15)
  • $.chaining not-recorded
  • $.confidence_note withheld
  • $.egress.terms not-recorded
  • $.extras.dead_end.retry_when process
  • $.free_tier.notes process
  • $.identity_cost.detail defaulted
  • $.identity_cost.kind identity-defaulted
  • $.interface interface-unknown
  • $.interface_detail withheld
  • $.limits_note process
  • $.per_object_cap.notes not-recorded
  • $.per_object_cap.stated not-recorded
  • $.retention.notes process
  • $.retention.stated not-recorded
  • $.tooling not-recorded

walrus mainnet (public upload) Storage

fails: quotaemail?card?R

docs.wal.app/docs/http-api/storing-blobs · rejected-provider · storage/walrus-mainnet · JSON · compare

Free tierNo keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
unit none; metered on none
Pricenone stated
Per-object capnot recorded
Retentionnot recorded
Egressnot recorded
Identityemail (placeholder) not published
Bindingnone no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit
Interfaceunknown
Toolingnot recorded
Composes withnot recorded
ReliabilityNo keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
NotesNo keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
Evidence rungreported
Checked2026-10-21 (inherited); stale on 2026-11-04
Evidence (3)
datesourcewhat it proved
2026-10-21docs.wal.app/docs/http-api/storing-blobsNo keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
2026-10-21docs.wal.app/docs/sponsored-uploadscited as the basis of the rejection: No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
2026-10-21docs.wal.app/operators.jsoncited as the basis of the rejection: No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no
More fields (1)
{
 "dead_end": {
  "failure_class": "quota",
  "why": "No keyless publisher exists and none is planned: 'Walrus has no public unauthenticated publisher on Mainnet. There are no plans to create one.' Every store spends WAL + SUI, and 'There is no",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown or withheld values (15)
  • $.chaining not-recorded
  • $.confidence_note withheld
  • $.egress.terms not-recorded
  • $.extras.dead_end.retry_when process
  • $.free_tier.notes process
  • $.identity_cost.detail defaulted
  • $.identity_cost.kind identity-defaulted
  • $.interface interface-unknown
  • $.interface_detail withheld
  • $.limits_note process
  • $.per_object_cap.notes not-recorded
  • $.per_object_cap.stated not-recorded
  • $.retention.notes process
  • $.retention.stated not-recorded
  • $.tooling not-recorded