Deploy a release
The business operation deploys the native-asset PayToPlay contract with reserved channel 0. The payment administrator creates service channels later. A separate read-only PayToPlayUI supplies signing details, and CAM publication binds both contracts in the root.
make pay-to-play/release/setup INSTANCE=/absolute/private/002-avalanche-fuji
make pay-to-play/release/deploy INSTANCE=/absolute/private/002-avalanche-fuji
Choose a funded signer, target chain and intended authorities in setup. INTENDED_PAYMENT_ADMIN and INTENDED_CAM_ROOT_OWNER may name the same or different accounts. The payment admin creates service channels and changes their payees and collectors; the CAM owner changes the manifest and bindings. Neither role comes from the viewing account. Purpose-specific setup can select independent UI and publication signers through configuration references in instance.json.
NULL_CLAIM_PERIOD is the fixed withdrawal wait for reserved channel 0: 0 through 2,592,000 seconds (30 days). Zero means no wait. Each service channel gets its own fixed wait when the payment admin creates it.
Follow the hosting pause, host or pin only cam-bundle/bundle/, then set settings.CAM_URI and rerun the same full command. Keep relative ABI, UI and protocol paths. The web viewer supports HTTPS and IPFS; IPFS downloads use its selected HTTPS gateway. Check browser CORS for the chosen host.
For local use, start make network/local/up before setup and choose local. This uses chain 31338 and the public funded ba fixture key. The private fixture CAM URI is container-only and the shared server does not automatically host your prepared bundle. Browser use requires hosting that bundle at a browser-readable URI. See the local network and viewer steps.
Keep the entire instance. Within a full deployment’s allocated directory, contracts/artifact/contract-deployment.json records the business deployment, ui/artifact/ui-deployment.json records the projection, and cam/artifact/cam-publication.json records the root publication. A completed partial-publication continuation has its own final CAM record. Each phase also retains its plan, broadcasts and approval evidence.
Business creation nominates a different payment administrator; CAM publication can separately nominate a different root owner. Each nominee submits acceptOwnership() to its own contract: contracts.payments.address in the business record or root.contract.address in the CAM record. There is no built-in waiting period. The current owner retains authority until that nominee accepts; a creator selected as final owner needs no handover.
Later payment-admin changes use transferOwnership(newOwner) from the payment contract's current owner, followed by the nominee's acceptOwnership(). These transactions are independent of CAM ownership.
Verify retained records
make pay-to-play/release/verify INSTANCE=/absolute/private/002-avalanche-fuji
Choose the saved operation using its recorded configuration references; see the keyless verification requirements. Verification sends no transaction, uses each saved plan's original source and preserves existing final records. Recorded pending handoffs are valid historical evidence. Verification does not prove today's owners, balances or channel readiness; inspect current app state separately.
Keep failed records and the prepared bundle. Keyless completion can finish evidence after execution; a confirmed partial CAM attempt requires fresh approval for remaining original intent. Use UI update to deploy a read-only UI contract or select a saved one, then make the app use it while reusing compatible business contracts. This prepares matching CAM files locally; upload or pin them yourself before approving CAM root changes. Offline tool tests run with make pay-to-play/release/check. Explorer source publication is separate.