FIRST-DRAFTbydOrg
Edition 33

Can your protocol rehearse a recovery before an incident?

Run a scoped emergency pause and see which approvals count and which user actions stay available.

Can your protocol rehearse a recovery before an incident?
··3 min read·

The write-up

A wallet flags abnormal withdrawals. An engineer wants to pause the affected path. Operations wants to know what stays available. A second signer asks which transaction they are approving. These questions should have answers before the incident channel starts moving faster than anyone can read.

On November 4, a proposal on Polygon’s governance forum described a hard fork to redirect specific frozen funds after incidents involving Polymarket and Binance. The proposal is an exceptional chain-level intervention. It also raises a practical question for application teams. What can your own contracts and operators do, using powers that already exist? Polygon governance discussion

Inventory the powers that actually exist

Start with one contract and one action. Who can pause withdrawals? Are deposits or other markets affected? Who can unpause? Could the same key approve and execute? Check the deployed contracts and their role assignments. Then check the interface and operational tooling against the same permissions.

OpenZeppelin’s access-control documentation separates permissions and delays for sensitive operations. A protocol can use those tools in different ways. The roles and timing must come from the actual deployment and governance policy. OpenZeppelin access control

Bind approval to the action

Write a recovery proposal with a specific target, operation, scope, deadline and a unique ID. Inspect the exact action each signer sees. If the target or scope changes, get fresh approvals. Count each eligible signer once. Keep a record of who approved what and when.

The fictional vault in our lab requires two independent approvals for a temporary pause of withdrawals. Deposits stay open. An expired proposal, a duplicate approval or a request targeting deposits should fail. After a successful pause, a retry should show the previous result and create zero additional actions.

Practice the reopening decision

A pause buys the team time to establish what happened. Before resuming, define which checks prove the system is ready, who signs off and what users need to see. If unpausing requires its own role, quorum or delay, rehearse that separately. The time to discover a missing key or a blocked path is during a dry run.

Make the drill observable. Give the incident lead a timeline of the original report, approvals, execution and affected actions. An operator should be able to read that timeline alongside transaction evidence.

Try Recovery Rehearsal Lab

Propose the scoped pause, collect two distinct approvals and inspect what changes. Then try to execute with stale approvals or change the scope after signing. It is a browser simulation with fictional signers and a single scoped action.

What dOrg would build first. Bring one incident scenario and the contract or wallet policy that governs it. We can map permissions, turn the procedure into repeatable tests and build an operator view your team can rehearse before a release or audit.

Working proof · Built by dOrgPrototype

Don't just read the thesis

See what happens when the idea has to work.

Propose a pause for withdrawals and obtain two independent approvals. Try a duplicate signer, an expired proposal or a different scope.

Interactive simulationFictional data
Open in a new tab

Simulated where noted. No wallet, transaction or purchase is required.

What's not in this prototype
  • Fictional vault and signer policy. No smart contracts, keys, network changes or incident remediation.
Build notes: audience, approach and business model

Optional background for readers exploring implementation.

01

The Problem

Bind approval to the exact action and scope. Reject expired or duplicate approvals. Inspect what remains available after a pause.

Who feels it

DeFi protocol teams, wallet operators and custodians preparing a release or audit.

02

The Solution

What it does

01

Propose withdrawal pause

02

Approve as operator A

03

Approve as operator B

Built withJavaScriptHTMLCSS

Business Model

Bring one contract and one emergency action. We can scope permission mapping, negative tests and a timeline operators can use during a rehearsal.

End Goal

Turn an existing recovery policy into a repeatable incident drill.

Preparing an incident rehearsal?

Bring one contract and one emergency action. We can scope permission mapping, negative tests and a timeline operators can use during a rehearsal.

Just browsing? Get the next edition by email

Previous

#31 Where did your balance go when the chain changed?

Next

#32 What can a shopping agent buy on your behalf?