Settings
Deals with built-in trust.
A buyer locks ETH for a seller. The seller releases on delivery, the buyer can cancel for a full refund, and a neutral arbiter settles disputes with any split β the platform earns a fee only on completed deals.
Open a deal
Lock ETH for a seller and name a neutral arbiter. All three parties must be distinct.
Deals loadingβ¦
Platform Controls you are the escrow owner
Platform fee
Basis points charged on completed deals. Capped at 10% β open deals keep their frozen fee.
Withdraw fees
Pull accrued platform fees to any address.
Live Activity (recent events from the chain)
| Event | Details | Block | Tx |
|---|---|---|---|
| Loading⦠| |||
How it works (a guide for visitors Β· Sepolia testnet)
How to use
This dApp is configured for the Sepolia testnet β switch your wallet to Sepolia and grab free test ETH from a faucet first.
- Connect your wallet β press Connect Wallet (top-right); the chain badge shows the network you are on.
- Open a deal β as the buyer, fill in the seller address, the arbiter address and a deposit in ETH, then press Open deal to lock the funds.
- Release on delivery β as the seller, deliver the work, then open the deal and press Release funds to get paid (minus the platform fee).
- Cancel for a refund β as the buyer, press Refund on an active deal to get your full deposit back, free of charge.
- Dispute and resolve β buyer or seller presses Raise dispute to freeze the deal; the arbiter then enters the buyer's share and presses Resolve.
- Owner controls β if your wallet owns the contract, use Update fee and Withdraw in the Platform Controls panel.
The process β what happens on-chain
Every step below is a transaction on Sepolia that changes the state of the TrustEscrow contract.
- TrustEscrow.openDeal() β the buyer's ETH moves into the TrustEscrow contract, the deal is stored as Active, and the funds stay locked there until it settles.
- TrustEscrow.release() β the seller calls this on delivery; the contract marks the deal Released, credits the platform fee (
feeBps, capped atMAX_FEE_BPS) toaccruedFeesand sends the rest to the seller. - TrustEscrow.refund() β the buyer cancels an active deal; the contract returns the full deposit and charges no fee.
- TrustEscrow.dispute() β buyer or seller freezes the deal into the Disputed state, so no funds can move.
- TrustEscrow.resolve() β the arbiter picks the buyer's share; the contract pays the buyer, keeps the fee and sends the remainder to the seller.
- Ownable & ReentrancyGuard β only the owner can call
setFeeBps()andwithdrawFees()(pull-based fees), and every payout path is guarded against reentrancy.
Flow graph β the deal lifecycle
Funds leave the TrustEscrow contract only when a deal reaches Released, Refunded or Resolved.