Recovery Kit: your vault without Ante
Your vault is a Safe on Ethereum. If Ante’s app is ever gone, move everything out in Safe{Wallet} with your own key. What to save now, the steps, and a fallback for developers.
Your vault is a Safe smart account on Ethereum Mainnet. Ante never holds your keys, and moving your funds doesn't need Ante's app, its servers or its permission. If Ante is ever gone, you can move everything out in Safe{Wallet}, Safe's own app at app.safe.global, with your own key.
Every vault has its own Recovery Kit: one printable page with the vault's address, its keys and these steps filled in. This page is the same procedure for anyone, including the people helping you.
You need three things: your vault's address, your key, and a little ETH to pay the network fee.
Save these now, while you can sign in
Save your vault's Recovery Kit
On your vault, tap the gear, then Open Recovery Kit. Print it or save it as a PDF. It shows only to the vault’s owner.
Export your key
If you sign in with email or Google, your email can’t sign in Safe{Wallet}. Your key is the one Ante exports under Account → Export wallet. Store it in a password manager with your kit. Anyone who holds it can move your funds. If you sign in with a wallet, that wallet is your key and there is nothing to export.
Note where your other keys are
If your vault needs more than one key, such as a hardware wallet, write down where each one is kept. The printed kit has a line for each.
Move the funds in Safe{Wallet}
Safe{Wallet} shows your vault’s balance, lets you send any asset, and collects the signatures it needs. It does not need Ante.
Open your key in a wallet app
Import your exported key into a wallet app such as Rabby or MetaMask. A hardware wallet connects through your wallet app as usual.
Add a little ETH for the fee
The key that signs last pays the network fee, so its address needs a little ETH. The ETH in your vault cannot pay it, and if your vault’s key is your Ante wallet, neither can the Ante wallet’s: the ETH has to be on your exported key itself.
Open your vault in Safe{Wallet}
Go to app.safe.global, connect that wallet, and open your vault’s address on Ethereum. The QR code on your kit opens it directly. Check that the address on screen matches your kit.
Send to an address you control
Choose New transaction → Send tokens, pick the asset and amount, and enter an address you control. Sign it. The last signature executes it.
Send a small amount first. Move a little, check the balances on Etherscan, then move the rest.
If your vault’s key is your Ante wallet
If you sign in with email or Google, your vault's key is usually not your exported key itself but your Ante wallet: a Safe of its own, owned by your exported key. Your kit tells you which: it prints your exported key's address, and says when that key owns your Ante wallet.
When it does, open your vault in Safe{Wallet} with your exported key connected and create the transaction there. Then sign it from your Ante wallet's queue. Your kit also prints your Ante wallet's own Safe{Wallet} link.
If your vault needs more than one key
A vault can have up to 3 keys, and Ante recommends any 2 of 3. Your kit says how many must sign, as "Keys required".
Sign with one key, then switch Safe{Wallet} to the next and sign the same transaction from your vault's queue. Repeat until enough keys have signed. The last one executes it and pays the fee.
Stay safe
Ante never emails recovery steps
And never asks for your key or seed phrase. Anyone who does is not Ante.
Check the address before you sign
The vault address in Safe{Wallet} must match your kit, character for character.
Keep your kit current
A kit is valid while your vault has the keys printed on it. When you add or remove a key, save a new one; Ante asks you to.
Keep your vault alive without Ante
Your check-in is a call on your vault’s own check-in module, not on Ante. Missing it is what lets your guardians hand the vault to your recipient, so if Ante is gone and you want to keep the vault, keep checking in from Safe{Wallet}. Your kit prints the module’s address, how often to check in, and when the next one is due.
Open your vault in Safe{Wallet}
Connect your key, as for moving the funds.
Build the check-in
Choose New transaction → Transaction Builder. Enter the check-in module’s address from your kit, paste the ABI `function checkIn()`, pick checkIn and add the transaction. It takes no inputs and sends nothing.
Sign it
Sign with your key, or from your Ante wallet’s queue if that is your vault’s key. If your vault needs several keys, repeat until enough have signed. Each check-in starts your interval over.
For guardians and recipients
The handoff rules live on Ethereum, not with Ante. A handoff to the recipient can still run without Ante's app: your guardians start it on the vault's Delay module and, after the grace period, enable the recipient's Roles module on the vault. Doing that outside Ante takes a wallet that can call those contracts, or a developer. The modules are open source, and how a handoff runs is documented, call by call, at docs.ante.org/technical-stuff/how-a-vault-is-wired.
The vault is a standard Safe. Any Safe-compatible app can move its funds, and so can one call on the vault:
execTransaction(address to, uint256 value, bytes data, uint8 operation, uint256 safeTxGas, uint256 baseGas, uint256 gasPrice, address gasToken, address refundReceiver, bytes signatures)
- One key: call it from that key. For ETH, to is the recipient and value the amount. For a token, to is the token contract, value 0, and data a transfer(recipient, amount) call. Operation 0, every gas field 0, gasToken and refundReceiver the zero address. For signatures, use the caller's pre-validated signature: 0x, then 24 zeros, the key's address without 0x, 64 zeros, and 01.
- Several keys: collect enough owner signatures over the Safe transaction (EIP-712), or have each key call approveHash on the vault, then execute.
- Ante wallet as the key: the call comes from the Ante wallet. Wrap it in an execTransaction on the Ante wallet, sent from the exported key with the exported key's own pre-validated signature.
- Checking in: the same call with to the vault's check-in module (the DMS, printed on the kit), value 0 and data 0x183ff085 (checkIn()). The kit also prints the vault's Delay, Recovery Roles and Guardian Roles addresses. On a kit that names no check-in module, the guardian Roles wrote it on chain: its ScopeFunction log for the vault's enableModule carries a Custom condition whose compValue is the DMS address, left-aligned in 32 bytes.
- Cancelling a handoff: what Ante sends as "Cancel transfer" and "Re-activate protection", in one MultiSend on the vault: checkIn() on the DMS; setTxNonce(queueNonce) on the Delay, only while queueNonce() is above txNonce(); disableModule(prev, recoveryRoles) on the vault, only while the recipient's Roles module is enabled, with prev the module getModulesPaginated lists just before it (the sentinel 0x…01 when it is first). Moving the funds out is the simpler way out: it takes them out of the handoff whatever its state.
Questions
Do I need Ante to get my funds out?
No. Your vault is a Safe that you own. Safe{Wallet}, or any Safe-compatible app, can move its funds with your key. Ante has no key to your vault and can’t stop you.
I sign in with email or Google. Is that enough?
Not without Ante. Your email signs you in to Ante, not to Safe{Wallet}. What moves your funds is your key, and Ante’s app is where you export it, so do it now, under Account → Export wallet, and keep it with your kit.
Does my check-in timer keep running if Ante is gone?
Yes. It is a contract on Ethereum, so your guardians can still start a handoff once you miss a check-in. You can keep checking in without Ante, from Safe{Wallet}, as above; or move your funds to an address you control, which takes them out of the handoff.
Where do I find my vault’s address?
On your Recovery Kit, and in your vault’s settings. It is a Safe address on Ethereum, starting with 0x.