AquaAlloc

Water allocation transfers with embedded approval rules

Physical-world stateP0

AquaAlloc

Water allocation transfers with embedded approval rules. Water rights are bounded by place, time, volume, entitlement class, and regulatory approval.

AquaAlloc is strongest when treated as a governed state machine, not a static token. The object must carry enough identity to be trusted at mint, enough mutable state to reflect the real workflow, and enough audit history for a third party to decide whether the current state is reliable.

Strategic thesis

Why this wedge exists

A transfer or drawdown can be blocked if it exceeds balance, violates zone rules, or lacks regulator approval.

The first buyer is Water authorities, brokers, and agricultural operators. They don't need a generic blockchain story; they need a way to reduce disputes, speed approval, and make the current status of a workflow independently checkable.

State Dual manages

Allocation holder, watershed, entitlement class, volume, approval, usage, remaining balance, and expiry.

AllocatedTransfer RequestedUnder ReviewApprovedPartially UsedExhaustedExpired

The important point is not the number of states. It's that each transition has an actor, an allowed action, evidence, and a durable audit record. That turns operational workflow into an inspectable object.

Token architecture

Immutable identityobject_id, geo_anchor, measurement_method, issuer_id, created_at
Mutable statecurrent_zone, measurement_value, integrity_status, usage_balance, last_observed_at
Compliance rulesLocation, measurement, or observation evidence must satisfy source rules. Out-of-zone or out-of-balance actions are rejected before state change. Physical exceptions stay attached to the token history.
Event sourcesIoT sensor feed, meter or satellite observation, geofence check, regulator or verifier approval

Example object schema

{
  "template": "aquaalloc",
  "category": "Physical-world state",
  "immutable": {
    "object_id": "set_at_mint",
    "geo_anchor": "set_at_mint",
    "measurement_method": "set_at_mint",
    "issuer_id": "set_at_mint",
    "created_at": "set_at_mint"
  },
  "mutable": {
    "current_zone": "updated_by_event",
    "measurement_value": "updated_by_event",
    "integrity_status": "updated_by_event",
    "usage_balance": "updated_by_event",
    "last_observed_at": "updated_by_event"
  },
  "rules": {
    "allowed_states": ["Allocated","Transfer Requested","Under Review","Approved","Partially Used","Exhausted","Expired"],
    "first_buyer": "Water authorities, brokers, and agricultural operators",
    "audit_required": true
  }
}

This schema is intentionally scoped. A credible first product should prove one object type, one core state machine, and a small number of high-value integrations before expanding into a platform.

User journey

  1. 1

    Issuer: Allocated

    The AquaAlloc object is created with immutable identity, owner, and rule metadata.

  2. 2

    Operator: Transfer Requested

    An event moves the object into "Transfer Requested", preserving the previous state and the actor that triggered the change.

  3. 3

    Verifier: Under Review

    An event moves the object into "Under Review", preserving the previous state and the actor that triggered the change.

  4. 4

    Counterparty: Approved

    An event moves the object into "Approved", preserving the previous state and the actor that triggered the change.

  5. 5

    Auditor: Partially Used

    An event moves the object into "Partially Used", preserving the previous state and the actor that triggered the change.

  6. 6

    Automation: Exhausted

    An event moves the object into "Exhausted", preserving the previous state and the actor that triggered the change.

  7. 7

    Administrator: Expired

    An event moves the object into "Expired", preserving the previous state and the actor that triggered the change.

Event model

Dual becomes useful when outside systems stop being passive records and start becoming evidence sources for state transitions.

  • IoT sensor feed
  • meter or satellite observation
  • geofence check
  • regulator or verifier approval

Each event should answer four questions: who produced it, which object it affects, which transition it requests, and which proof should be retained for audit.

Why not just a database?

Traditional system

A registry records entitlements, but the allocation object itself rarely enforces transfer and usage rules.

That's acceptable when one organization owns the full workflow. It breaks down when multiple parties need to trust the same current state without relying on a single application owner.

Dual stateful object

Dual separates immutable identity, mutable lifecycle state, compliance checks, and event history. Participants can inspect the current object state, verify the transition path, and use the same state as input to payment, access, reporting, or downstream automation.

90-day MVP

One watershed, one entitlement class, one transfer, one partial usage event, and one failed over-allocation attempt.

  • Define the template and allowed state transitions.
  • Mint test objects with realistic identity and ownership data.
  • Wire one external event source into the Event Bus.
  • Trigger one successful transition and one rejected transition.
  • Expose a query view that proves current state and transition history.

Proof assets required

  • Watershed rule map
  • Transfer approval
  • Usage event
  • Balance query

These assets are the difference between a concept note and a buildable wedge. Without them, the page is only a narrative; with them, it becomes a product specification.

Operating metrics

  • observation freshness
  • exception resolution time
  • verified volume
  • failed rule checks

These are the metrics that should be visible in the pilot dashboard. They also give sales, implementation, and investor conversations a concrete way to judge whether Dual is improving the workflow.

Commercial wedge

The first commercial motion should sell a narrow operational outcome, not broad tokenization. For AquaAlloc, the wedge is: transfer allocation. Price around the workflow value: fewer disputes, faster settlement, cleaner audit, lower fraud, or lower manual reconciliation.

Expansion should follow the state graph. Once the first transition is trusted, add the next actor, then the next integration, then the next reporting surface. That keeps the product grounded in workflow proof rather than speculative asset creation.

Risks and controls

  • oracle/sensor trust. Control: define the trusted source, log every mutation, and keep manual override paths explicit.
  • boundary disputes. Control: define the trusted source, log every mutation, and keep manual override paths explicit.
  • latency between physical event and token update. Control: define the trusted source, log every mutation, and keep manual override paths explicit.

Implementation playbook

  1. Map the workflow: identify the actor responsible for each state and the evidence required for each transition.
  2. Create the template: split data into immutable identity, mutable state, and compliance rule fields.
  3. Mint sample objects: use realistic IDs, timestamps, owners, and source-system references.
  4. Connect one event: choose the event that makes the state change economically valuable.
  5. Reject one bad action: demonstrate that Dual blocks invalid transitions before downstream settlement.
  6. Expose audit: show current state, previous state, actor, timestamp, evidence hash, and rule result.

Build prompt

Create a Dual template for AquaAlloc. Model immutable identity fields, mutable lifecycle state, compliance checks, and event inputs. Then emit one test object and move it through: Allocated → Transfer Requested → Under Review → Approved → Partially Used.

Include:
- object schema
- transition rules
- event payload examples
- one rejected transition
- audit query output
- MVP dashboard fields

Use this as a scoped wedge: prove one governed state transition, one external event, and one audit query before expanding the workflow.

Start with the Dual quickstart →