What is Walrus 🦭?
Walrus is a Byzantine Fault Tolerant decentralized blob storage system. Data are erasure-encoded and replicated across the storage nodes. You can use Walrus to store and read blobs, and to prove and verify their availability.
Is it like IPFS/Arweave/Filecoin?
Yes, but it’s better in costs, availability, as well as performance.
So What Can I Do with Walrus (aka Project Ideas)?
- Support availability for L2s: Walrus allows parties to certify the availability of blobs, as required by L2s that need data to be stored and be attested as available to all. This may also include availability of extra audit data such as validity proofs, zero knowledge proofs of correct execution or large fraud proofs. You could build verification oracles with Walrus.
- Storage of long term archival of blockchain history: Walrus can act as a lower-cost decentralized store to store blockchain history. You could make a workflow that archives the data from ETH and sends them to Walrus
- Host your decentralized website with Walrus Sites: https://docs.wal.app/walrus-sites/intro.html
- Storage of media for NFT or dApps: Walrus can directly store and serve media such as images, sounds, sprites, videos, other game assets, and so on.
- S3 compatibility: Allow Dropbox-like frontend to directly store things to a decentralized storage backend
- AI related use cases: Walrus can store clean data sets of training data, datasets with a known and verified provenance, models, weights and proofs of correct training for AI models. It can also store and ensure the availability of an AI model output. Get more ideas from our recent AI hackathon: https://notion.sui.io/sui-agent-typhoon-handbook#17a37af41c6e815cbea2f8cc0a496de4
- See more at “Why Should I Care about Decentralized Storage” Section
Easiest and Fastest Way to Get Started
Storing Blobs
Use the HTTP API from a Walrus Publisher/Aggregator:
AGGREGATOR=https://aggregator.walrus-testnet.walrus.space
PUBLISHER=https://publisher.walrus-testnet.walrus.space
curl -X PUT "$PUBLISHER/v1/store" -d "some string" # store the string `some string` for 1 storage epoch
curl -X PUT "$PUBLISHER/v1/store?epochs=5" --upload-file "some/file" # store file `some/file` for 5 storage epochs
No authentication is needed for testnet but you are relying on a level of indirection from the publisher/aggregator. Read more about it here: https://docs.wal.app/design/architecture.html
Retrieving Blobs
curl "$AGGREGATOR/v1/<some blob ID>" -o <some file name>
Alternatively you may print the contents of a blob in the terminal with the cURL command: