dfns-signer-backup-restore tool. The procedure is independent of DFNS: you need only your recovery private key and the encrypted backup files from your own S3 bucket.
Recovery follows an air-gapped model. Your recovery private key stays on an offline computer that never connects to a network. You download the encrypted shares on an online computer, carry them to the offline computer on removable media, and decrypt, assemble, and test the keys there. Only non-sensitive data crosses between the two: the encrypted shares coming in, and a signed transaction going out.
For how Layer 4 works and how to enable it, see the disaster recovery overview and the Layer 4 setup steps in the MPC signer deployment runbook.
Recovery procedure
Requirements:- An online computer with cloud CLI access (AWS, GCP, or Azure) to download the encrypted shares from your bucket.
- An offline computer to hold the recovery key and run all decryption, assembly, and signing. It must not connect to any network during recovery.
- A removable media (e.g. an SD card or a USB drive) to move files between the two computers.
- On the offline computer:
- Your Layer 4 recovery private key in PEM format (this is the key you created when you configured the L4 backup).
- the
dfns-signer-backup-restoretool (contact our if you don’t have access to it)
1
Download encrypted shares (online)
On the online computer, download all encrypted share files from your backup bucket. Each signer’s shares are stored under its own prefix.Copy the downloaded
shares directory onto removable media. The shares are encrypted with your public key, so they are safe to handle on the online computer.2
Decrypt the shares (offline)
Connect the removable media to the offline computer. Everything from here runs offline, alongside your recovery private key(s).Use the
dfns-signer-backup-restore tool to decrypt the shares with your private key(s).3
Assemble the private keys (offline)
Reconstruct the complete private keys from the decrypted shares.
The tool groups shares by their public key, reconstructs each private key, and verifies the result against that public key. You need at least the threshold number of shares per key (e.g. 3 out of 5 in a 3-of-5 scheme).
[Optional] Verify a recovered key
The assemble step already verified each recovered key against its public key, so the keys are cryptographically confirmed. For end-to-end confidence, you can additionally confirm a key signs by broadcasting a zero-value transaction on a testnet. Signing stays on the offline computer; only the signed transaction crosses to an online computer to broadcast — the private key never goes online. Requirements:- Online computer to broadcast the signed test transaction.
- Offline computer to do the signature.
- Removable media (e.g. an SD card or a USB drive) to move files between the two computers.
- On the online computer:
- Foundry’s
cast
- Foundry’s
- On the offline computer:
- Your Layer 4 recovery private key in PEM format (this is the key you created when you configured the L4 backup).
- the
dfns-signer-backup-restoretool (contact our if you don’t have access to it) cast(only used for verification), copy it over (see note below) from the online computer (if compatible) on a removable media rather than using a network installer.
cast can be replaced by any other tool
A bare shell cannot derive an address or sign an Ethereum transaction: it needs secp256k1, Keccak-256, and RLP encoding. That is why cast is requested on the offline computer. Address derivation and signing both run offline; only the broadcast needs connectivity.cast is a single self-contained binary so you just have to copy one file to the offline computer. Obtain it from a prebuilt binary on the online computer, download the Foundry releases matching the offline computer, verify its checksum, extract the cast binary, and copy it across.1
Collect transaction parameters (online)
On the online computer, note the values the offline signer needs: the address’s current nonce, a gas price, and the chain ID (Sepolia is
11155111). Fund the address with a little Sepolia test ETH from a public faucet — a zero-value transaction still needs gas. Carry these values to the offline computer.2
Derive the address and sign (offline)
On the offline computer, read the Build and sign the transaction offline. This prints a signed raw transaction hex and broadcasts nothing:Copy the signed raw transaction hex onto removable media. It contains no private key, so it is safe to move to an online computer.
private_key field from the assembled key file — for an Ethereum address, the one on the secp256k1 curve — and prefix it with 0x.Derive the address and confirm it matches the one you funded:3
Broadcast the signed transaction (online)
On the online computer, broadcast the signed transaction by pasting it into Etherscan’s Broadcast Transaction page, or from any machine with an RPC endpoint:A returned transaction hash confirms the recovered key signs correctly.