Skip to main content
Carry’s carry::access module is live on Sui testnet. The app reads these IDs from deployments/testnet.json, so the verifier works out of the box.

Testnet (live)

Package ID

0xf7acc10ee3de95ed5bb4560e48d5bf4a4e24f7c4003b892b56632c7ff398b6f9

View the example proof

Open the walletless verifier for the demo Receipt — all three checks green.

Configuration

The canonical IDs live in deployments/testnet.json. The app reads them (with env overrides) in apps/web/lib/sui.ts:
On-chain reads (the verifier’s getObject + is_allowed via devInspect) go through a public RPC — the fullnode.testnet.sui.io endpoint no longer serves raw JSON-RPC, so Carry points at sui-testnet-rpc.publicnode.com by default (override with SUI_RPC_URL).

Publish your own

1

Switch to testnet and fund gas

2

Publish

Grab the new packageId from the published objectChanges.
3

Create your policy

publish doesn’t call create(), so make your shared AccessPolicy + OwnerCap:
4

Update deployments/testnet.json

Set packageId, accessPolicy, ownerCap, and owner to the new values — the app picks them up automatically.
The Carry contract changes (new Receipt object, new anchor_receipt signature) are breaking, so a fresh publish — not an in-place upgrade — is required.