A zone is a scoped WASI execution environment owned by an organisation DID. Zones hold their own balance, deploy their own contracts, route messages to other zones over CZAC channels, and are gas-metered separately from the native chain.

Zone model

ElementDescription
Zone DIDThe organisation DID that owns the zone (did:oas:sigil:mhr:<org> or did:oas:sigil:agent:<org>).
NamespacePer-zone contract namespace under the zone DID.
BalanceNative and custom-token balances held by the zone DID.
StoragePer-zone AkashaKV partition, isolated from other zones.
CZAC channelsOutbound and inbound messaging channels to other zones.

Lifecycle

use sigil_sdk::zone::register_zone;

let tx = register_zone(
    &wallet,
    /* zone_name = */ "demo-org",
    /* initial_balance = */ 1_000_000_000,
)?;
client.submit_and_wait(tx).await?;
RegisterZone writes a Zone record under zones/<zone_did>. The zone is immediately addressable for contract deployment, balance transfers, and CZAC channel creation.

Governance

Zones do not have admin keys. Policy changes are signed by the zone’s organisation DID. If the organisation is an mhr, the FROST threshold signature is required. Mandates issued by the zone DID can delegate bounded capabilities to autonomous agents inside the zone; see mandates.

Contract deployment

Contracts deployed inside a zone live under contract/<contract_id> keyed by the zone DID. The contract id is the BLAKE3 hash of the zone DID, the contract name, and the deployment height. A zone can deploy any number of contracts. Each contract has its own storage partition under the zone’s AkashaKV namespace.

Cross-zone messaging

Cross-zone communication uses CZAC (Cross-Zone Atomic Channel) protocol. CZAC guarantees:
  • Ordered delivery.
  • Exactly-once semantics.
  • Per-channel deposit and slashing for misbehaviour.
  • 7-day dispute window with the last-signed message winning.
See CZAC channels.

Gas accounting

Zones are gas-metered independently. Each contract call in a zone consumes gas from the caller’s budget at the rate set in sigil.system.parameters. The zone DID can subsidise calls by attaching its own balance to the gas budget.

Storage limits

LimitValue
Storage entries per zoneUnlimited (subject to disk usage).
Per-entry size64 KiB.
Total zone storage costPer-byte rent under sigil.system.parameters.zone_storage_rent_bps.
Storage rent is debited from the zone’s balance every epoch. If the balance is insufficient, the zone is marked frozen and contracts revert until the rent is paid.

Use cases

Use caseWhy a zone
DAO with custom votingCustom contracts with a shared zone balance.
Multi-agent organisationMandates issued by the zone DID delegate to internal agents.
Game worldPer-game state isolation with cross-zone CZAC channels for trades.
Enterprise integrationZone-scoped contracts that mirror enterprise records.

Implementation

  • Zone state: node/sigil-core/src/zone.rs.
  • Zone executor: node/sigil-node/src/executor_zone.rs.
  • CZAC: node/sigil-czac/src/*.rs.

See also