Disputes and safety
Dispute Timeouts and Refunds
After a 30-day dispute timeout, deposits are refunded to the people who paid them. Intended payouts are not sent. Here is the exact result.
· 4 min read · DeFiEscrow
A dispute timeout is the backstop that keeps a frozen escrow from becoming a permanent lock. On DeFiEscrow the timeout is 30 days, a constant in the contract, not a number the parties negotiate and not a number an administrator can shorten after the argument starts. When it ends, anyone can terminate the escrow. Depositors are credited what they deposited. They withdraw it themselves. People who were only going to receive funds, and who deposited nothing, receive nothing from this path.
That result is easy to describe and easy to misunderstand, because it feels like a decision about who was right. It is not. It is the same economic shape as a missed funding deadline or a missed approval deadline: refund deposits, do not pay the payout table. How disputes are raised and removed explains the freeze. This page is only the ending.
The 30 days, counted from the dispute
The clock starts when raiseDispute succeeds. The contract stores that timestamp. resolveDisputeTimeout checks that the state is still Disputed and that the current time is later than the stored timestamp plus 30 days. If you are a few hours early, the transaction fails. If the raiser removes the dispute on day 29, the timeout cannot be called, because the state is no longer Disputed. If someone raises a new dispute later, that is a new timestamp. The 30 days are not a cumulative score across the life of the deal.
Anyone can send the timeout transaction. You do not need the original raiser to cooperate, and you do not need every party to sign. Paying the gas for that transaction is the practical requirement. Put it on a calendar when you raise a dispute, or when someone else raises one against you, so day 30 is a planned action rather than a rumor.
The constant is 30 days of the chain's clock. It is not 30 business days, and it does not pause for weekends or for mediation sessions you scheduled off-chain.
Who gets which tokens
Refunds follow deposits, not fairness and not the payout table.
Example. A buyer deposited 101,000 USDC so that a seller could receive 100,000 and the protocol fee address could receive 1,000. The fee address deposited nothing. The seller deposited nothing. A dispute runs 30 days and someone calls the timeout.
- The buyer is credited 101,000 USDC and can withdraw it.
- The seller is credited nothing on this path.
- The fee address is credited nothing on this path.
The buyer is not charged 1% for a deal that refunded. The fee was part of the deposit, and the deposit comes back.
Change the example. Two contributors each deposit 50,000 USDT toward a venture that would have paid a vendor 100,000 if everyone had approved. The timeout credits 50,000 back to each contributor. It does not pay the vendor a kill fee. It does not split the pot in proportion to who "did more work." If a kill fee was required, it had to be a payout in an escrow that actually released, or a separate arrangement.
Change it again. The state was already Approved, payouts were about to be released, and a party disputed because the off-chain delivery failed. The timeout still refunds deposits. It does not say "you were Approved, so the payout stands." Approved is where you came from. Terminated is where the timeout puts you. The pre-dispute state is saved so the raiser can go back if they remove the dispute. The timeout does not resume it.
What you do not get
You do not get a reasoned award. You do not get the NFT, the deed, or the equipment returned by this function. If those moved off-chain during the 30 days, getting them back is a human problem. This is one reason to dispute before you perform, or to keep performance and approval in the same narrow window. A seller who delivered goods and then waited out a dispute can watch the USDC return to the buyer. The contract is behaving as written. The deal structure was carrying delivery risk the contract does not insure.
You do not get partial coins. There is no parameter for "refund 90%." You do not get the timeout to pay the seller because a PDF says the deposit is forfeited. Forfeiture, if you need it, is a payout structure chosen at creation, and it still requires the approval path rather than the timeout path. Earnest money is where that mismatch shows up most often.
You do not get a shorter fuse by writing "7 days" in the purchase agreement. The agreement can say the parties will remove the dispute or create a new escrow sooner. The function itself will reject a timeout call before 30 days.
After the credit
Termination credits withdrawable balances. It does not push the tokens. Each depositor still sends withdraw or withdrawTo from their party address. If that address is a wallet you lost, the credit does not hop to a new wallet by itself. The safety property is that the funds are not stuck in a state nobody can exit. It is not a recovery service for lost keys.
Plan on the 30 days when you raise the dispute. If what you wanted was a refund on a date you chose together, the approval deadline was the tool, and it does not require a dispute at all. The timeout exists so that a freeze, once started, has a last day.