Imported Key dWallet
An Imported Key dWallet allows you to import an existing private key into the Ika network, enabling you to leverage the network's distributed signing capabilities while maintaining control over your existing keys.
Already have a key?
Imported Key dWallets are ideal when you need to use an existing private key (e.g., from Bitcoin, Ethereum, or other blockchains) within the Ika network's signing infrastructure. For new wallets, consider Zero-Trust dWallets or Shared dWallets.
Architecture
The Imported Key dWallet consists of two cryptographic shares:
- User Share: An encrypted share derived from your original private key, controlled by you
- Network Share: A share held by the Ika network, also derived from your original private key
The original private key is cryptographically split into these shares during the import process, maintaining security while enabling distributed signing. The complete private key never exists in any single location after import.
When to Use Imported Key dWallets
Imported Key dWallets are appropriate when:
- Migrating Existing Keys: You have existing private keys (Bitcoin, Ethereum, etc.) that you want to use with Ika's signing infrastructure
- Cross-Chain Operations: You need to sign transactions on multiple blockchains using the same underlying key material
- Key Recovery: You want to restore a wallet from a known private key
- Legacy System Integration: You need to integrate with systems that use specific pre-existing keys
Important: The private key is split into shares during import. For maximum security with new wallets, consider zero-trust dWallets created through DKG.
Security Model
Imported Key dWallets can operate in two security modes:
Zero-Trust Mode (Default)
By default, imported key dWallets operate in zero-trust mode:
- Your user share is encrypted and requires your decryption key for signing
- You must explicitly provide your encrypted share for each signature
- The network cannot sign without your participation
Shared Mode (Optional)
You can optionally convert to shared mode by making the user share public:
- The user share becomes publicly visible on the network
- The network can sign without your direct participation
- Useful for automation, DAOs, and smart contract-controlled wallets
- Warning: This conversion is irreversible
See Converting to Shared Mode for details.
Creating an Imported Key dWallet
Creating an Imported Key dWallet involves importing an existing private key and verifying it with the network.
Step 1: Prepare the Import
Step 2: Request Import Verification
Step 3: Wait for Verification
Activating Your Imported Key dWallet
After the network verifies your imported key, you must accept the encrypted user share to activate the dWallet for signing.
Signing a Message
Once active, you can sign messages using your imported key dWallet. The signing process requires a presign and your encrypted user share (for zero-trust mode).
Requesting a Presign
Presigns are pre-computed cryptographic nonces required for signature generation. The type of presign depends on the signature algorithm:
- Global Presign: Required for EdDSA, Taproot, and SchnorrkelSubstrate
- DWallet-Specific Presign: Required for ECDSA algorithms (ECDSASecp256k1, ECDSASecp256r1)
Signing the Message
Future Signing
Future signing is a two-step process that allows you to separate the user's signature creation from the network's signature completion. This is particularly useful for scenarios where message approval happens at a different time than the actual signing.
Creating a Partial User Signature
To initiate a future sign with an imported key dWallet, call requestFutureSignWithImportedKey with the message and presign. This function returns an unverified partial user signature cap, which can later be used to complete the signing process.
For Zero-Trust Mode (with encrypted share)
For Shared Mode (with public share)
If your imported key dWallet has been converted to shared mode (public share), future signing becomes simpler:
Completing the Signature
To finalize a future sign with an imported key dWallet, call futureSignWithImportedKey with the partial user signature cap and the message approval. Note that for imported keys, you must use approveImportedKeyMessage (not approveMessage).
Converting to Shared Mode
You can convert an imported key dWallet from zero-trust mode to shared mode by making the user share public. This allows the network to sign without requiring your encrypted share for each operation.
Warning: This operation is irreversible and fundamentally changes the trust model. Once public, the network can sign without your participation.