Components
From a developer perspective, some Walrus components are objects and smart contracts on Sui, and some components are Walrus-specific binaries and services. As a rule, Sui is used to manage blob and storage node metadata, while Walrus-specific services are used to store and read blob contents, which can be very large.
Sui components
Walrus defines a number of objects and smart contracts on Sui:
-
A shared system object records and manages the current committee of storage nodes.
-
Storage resources represent empty storage space that you can use to store blobs.
-
Blob resources represent blobs being registered and certified as stored.
-
Changes to these objects emit Walrus-related events.
You can find the Walrus system object ID in the Walrus client_config.yaml file. You can use any Sui explorer to look at its content. There is more information about these in the [quick reference to the Walrus Sui structures].
Walrus components
Walrus is also composed of a number of Walrus-specific services and binaries:
-
A client (binary) can be executed locally and provides the following tools to perform Walrus operations:
-
Aggregator services that allow reading blobs through HTTP requests.
-
Publisher services used to store blobs to Walrus.
-
A set of storage nodes that store encoded blobs. These nodes form the decentralized storage infrastructure of Walrus.
Aggregators, publishers, and other services use the client APIs to interact with Walrus. End users of services using Walrus interact with the store through custom services, aggregators, or publishers that expose HTTP APIs to avoid the need to run a binary client locally.