Protocol Docs
What Zinch Is
Zinch is an on-chain escrow protocol for crypto work agreements. Two parties — a worker and a client — lock SOL in a smart contract until the work is delivered. If the client approves, funds go to the worker minus a 1.5% platform fee. If the client ghosts, an auto-release timer pays the worker automatically. If they disagree, an on-chain dispute mechanism lets them negotiate a split.
Deal Lifecycle
Every Zinch deal moves through these states:
- Created — the deal was proposed but not accepted yet
- Accepted — the counterparty accepted the terms
- Funded — the client locked SOL in the escrow PDA
- Submitted — the worker marked work as delivered; auto-release timer starts
- Completed — funds released to the worker, fee to platform
- Disputed — either party froze the deal; parties can propose splits
- Refunded — the worker returned funds to the client
- Cancelled — deal cancelled before funding
Smart Contract
Zinch's program is deployed on Solana devnet at:
Each deal is stored in a program-derived account (PDA) seeded with [b"deal", deal_id]. The deal ID is a random 16-byte value generated on deal creation.
Instructions
- create_deal — creator (worker or client) creates the deal PDA on-chain
- accept_deal — counterparty accepts the deal
- fund_deal — client transfers SOL (amount + fee) into the deal PDA
- submit_work — worker marks the work as delivered
- approve_and_release — client releases funds to the worker
- auto_release — permissionless; releases funds to worker after timer expires
- refund_deal — worker returns funds to the client
- open_dispute — either party freezes the deal
- propose_resolution — either party proposes a split (worker_amount + client_amount = deal amount)
- accept_resolution — the other party accepts the split; funds split accordingly
- cancel_deal — cancels a deal before funding
Fees
Zinch charges 1.5% (150 basis points) on every deal. The fee is added to the amount at funding time (client pays it) and goes to the platform when funds are released, whether via approval, auto-release, refund, or dispute resolution.
Auto-Release Timer
Every deal has an auto-release window (minimum 30 minutes, maximum 30 days), set by the creator. When the worker submits work, the timer starts. If the client hasn't approved, refunded, or disputed by the time it expires, anyone can call auto_release to pay the worker.
Disputes
Either party can call open_dispute during Funded or Submitted state. This freezes the deal — auto-release stops, no one can release or refund. Either party can then call propose_resolution with a split like 70% worker / 30% client. The other party either accepts (via accept_resolution, which executes the split) or proposes their own counter-split. There's no arbitrator; both parties must reach agreement or funds stay locked.
Custody
Funds in Zinch are held in on-chain PDAs, not in a custodial wallet. No admin can drain funds, freeze a deal, or override the smart contract logic. The rules encoded in the program are the only rules.
Source
Zinch's smart contract source code is publicly available for review at github.com/peace-dapps/zinch.