Both sides commit. Trust is programmable.
- Web app: https://commitpass.vercel.app/
- Network: Arc Testnet
- Current contract (v2):
0x8b28Ee06fD5d59d8886474733d7D3B58cDB33A5D - Deployment transaction: https://testnet.arcscan.app/tx/0xddc6ecc2e13a2680e195fa35eeb83cf28ec39b7eb2219d618bab222a76da1acb
- Verified source: https://testnet.arcscan.app/address/0x8b28Ee06fD5d59d8886474733d7D3B58cDB33A5D?tab=contract
- Verified v2 flow: Reservation
#1- customer acceptance followed by early cancellation and full refunds - Verified v2 flow: Reservation
#2- mutual attendance followed by automatic settlement and full refunds - Verified v2 flow: Reservation
#3- claimant attendance followed by an undisputed customer no-show settlement - Verified v2 flow: Reservation
#4- customer attendance followed by an undisputed provider no-show settlement - Legacy v1 verified flows: Reservation
#1- early cancellation; Reservation#3- mutual attendance; Reservation#5- customer no-show settlement; Reservation#7- customer-confirmed provider no-show settlement - Testnet evidence: docs/testnet-evidence.md
CommitPass is a two-sided programmable commitment protocol for reservations and limited-capacity services. Customers and providers lock small refundable USDC commitments on Arc. When both honour the reservation, both commitments return. If one side no-shows, the other receives pre-agreed compensation.
Built by Atakan Gündallı for the Programmable Money Hackathon.
- Provider-funded reservation creation
- Customer acceptance and commitment funding
- Early cancellation with automatic refunds
- Mutual attendance confirmation
- Customer no-show claims
- Provider no-show claims with asymmetric compensation
- Claimant attendance enforcement before no-show claims
- Dispute window and arbiter resolution
- Duplicate-settlement protection
- Arc Testnet wallet connection
- Role-aware onchain reservation console
Arc is the neutral programmable settlement layer. The MVP uses Arc Testnet, Arc's ERC-20 USDC interface for commitment custody, and one-confirmation deterministic settlement. No real funds are used.
| Setting | Value |
|---|---|
| Network | Arc Testnet |
| Chain ID | 5042002 |
| RPC | https://rpc.testnet.arc.network |
| Explorer | https://testnet.arcscan.app |
| USDC interface | 0x3600000000000000000000000000000000000000 |
npm install
cp .env.example .env.local
npm run contracts:compile
npm run contracts:test
npm run devOpen http://localhost:3000.
To verify the production export locally:
npm run build
npm startThe web application is exported as static files in out/, which keeps hosting simple and avoids a trusted application server in the settlement path.
- Fund a dedicated testnet deployer with faucet USDC.
- Copy
.env.exampleto.env. - Add
DEPLOYER_PRIVATE_KEYand a dedicatedARBITER_ADDRESSlocally. - Never commit
.env. - Run:
npm run deploy:arc- Add the deployed address to
.env.local:
NEXT_PUBLIC_COMMITPASS_CONTRACT_ADDRESS=0x...This repository is a testnet hackathon prototype and has not been independently audited. The current deployment requires claimants to confirm their own attendance before opening a no-show claim. It must not be used with real funds.
New invitations hash the session label with a random 32-byte salt before storing the reference onchain. The invitation URL carries the label and salt so the recipient can verify the reference. Existing public evidence without a salt remains readable. Session labels must not contain names, contact details or other personal information.
The arbiter is a single dedicated testnet account and remains a liveness and centralization boundary. Disputed reservations require the arbiter to resolve them. If neither participant confirms attendance, participant no-show claims are unavailable and the arbiter emergency-refund path is the recovery mechanism. A production deployment should use stronger arbiter governance and a permissionless timeout-based recovery path.
Atakan Gündallı GitHub: @AtakanGs
MIT © 2026 Atakan Gündallı