Skip to main content

Domains and Shards

Domain

A domain is a user-facing execution environment on delta. Users interact directly with domains to use applications, while domains handle settlement with the base layer on the backend.

A domain consists of three parts:

  • Application: The software and business logic that defines the domain's behavior
  • Domain operator: The signer authorized to submit SDLs and proofs to the base layer
  • Domain client: The component that handles integration with delta

Shard

A shard is slice of delta's global state. Each domain operates exactly one shard, and each (active) shard belongs to exactly one domain. The shard comprises the vaults that belong to that domain. The global state on the base layer is also called finalized state: the canonical and irrevocable record of all vaults.

Each domain locally maintains a domain state view of the vaults in its shard, which updates immediately when a user-level transaction is applied, prior to settlement.

A domain designates the execution environment, while a shard is the portion of global state it operates on.

A domain can only debit vaults in its own shard, while credits can target any shard. Since shards are independent and a vault can only exist on one shard, this separation eliminates double spend risk enabling validators to process updates from multiple domains in parallel without global ordering.

Domain Agreement

A domain's control of its shard is established through a domain agreement: a record on the base layer that registers the domain and identifies its operator and shard.

Before a domain can submit SDLs or proofs, a valid domain agreement must exist. Domain agreements are submitted directly to validators as a base layer transaction.