dapp32

Deploy Escrow

Instance settings, contract authority and acceptance checks for the Escrow example app.

Example app guide · Shared setup, deployment and verification

This page defines the app-specific inputs and checks. Use the shared guide for source snapshots, protected configuration, approval, records and cleanup. Example addresses and paths below are placeholders; your saved configuration selects the actual instance.

The shared component workflow provides escrow/release/contracts/deploy, escrow/release/ui/deploy and keyless escrow/release/cam/bundle. Business deployment, UI contract deployment and CAM root configuration have separate records and may use different actors and source commits. A UI replacement can reuse the verified business artifact without redeploying its contracts.

Release deployment

Use the shared setup and full deployment commands:

make escrow/release/setup INSTANCE=/absolute/private/002-avalanche-fuji
make escrow/release/deploy INSTANCE=/absolute/private/002-avalanche-fuji

Public setup checks the selected RPC chain. Explicit local setup selects chain 31338 and public fixture credentials. The full command composes business creation, UI creation, bundle preparation and CAM publication. Purpose-specific setup can save separate business, UI and CAM configurations referenced by instance.json; otherwise phases use config.json.

Follow the hosting pause to host the exact prepared bundle before configuring its URI on chain. Host only cam-bundle/bundle/, preserving relative paths and browser CORS. CAM_HASH=auto in the saved settings commits its manifest SHA-256; zero leaves the root unverified. Publication validates retained local bytes; check the hosted bytes and browser access separately.

Retain the entire instance, including older deployments, updates and failed attempts. Within a full deployment’s allocated directory, the component records are contracts/artifact/contract-deployment.json and ui/artifact/ui-deployment.json; the root record is cam/artifact/cam-publication.json, or the final continuation's publication after a partial attempt. Each phase retains its original plan and transaction evidence. Shared source, configuration, failure and recovery rules are in the deployment guide.

CamEscrow and CamEscrowUI are immutable and have no owner, pause, upgrade, fee, sweep or recovery authority. CamRoot remains mutable under its owner, which controls the CAM URI, hash and contract bindings. If CAM publication nominates a different owner, that nominee separately sends acceptOwnership() to root.contract.address in the CAM publication record. There is no acceptance delay; the current owner retains authority until acceptance.

Release verification

Choose the saved operation for keyless verification using its recorded configuration references:

make escrow/release/verify INSTANCE=/absolute/private/002-avalanche-fuji

This completes or checks the ordinary phase records without a key or transaction. Saved plans select the original program sources; original creation and runtime identity, UI backing, and the recorded CAM publication are checked against retained evidence. Existing final records stay unchanged. See the read-only configuration and recovery requirements.

Verification accepts recorded pending ownership and proves historical observations. It does not establish today's CAM owner, bindings, agreement status or solvency. Check those current facts separately before operating the instance. pendingOwner() must be zero and owner() must identify the intended account before treating its ownership handover as accepted.

Operational monitoring

Protect the final CamRoot owner as release authority; operationally, use an appropriately controlled account rather than the deployer hot key. Monitor:

No component automatically executes timeouts. The arbitrator is selected by each client and never acknowledges participation on-chain.