SolanaSolana support coming soon. dWallets are expanding to Solana for native cross-chain signing.
Ika LogoIka Docs
Core Concepts

Core Concepts Overview

This section covers the fundamental building blocks you need to understand when integrating Ika dWallet functionality into your Move contracts.

Overview

Ika's Move integration is built around several key concepts:

ConceptDescription
Coordinator ArchitectureThe DWalletCoordinator is the central shared object that manages all dWallet operations
Capabilities and ApprovalsCapability objects control authorization for dWallet operations
Session ManagementUnique identifiers ensure each protocol operation is processed exactly once
Payment HandlingAll operations require IKA and SUI fees

How They Work Together

Architecture Overview

Your Move Contract
DWalletCap
(stored)
Presigns
(pooled)
Business Logic
(governance, approvals)
DWalletCoordinator
DKG
Protocol
Presign
Protocol
Sign
Protocol
Future Sign
Protocol
Ika Network
(2PC-MPC Protocol Execution)

Quick Reference

Essential Imports

use ika::ika::IKA;
use ika_dwallet_2pc_mpc::{
    coordinator::DWalletCoordinator,
    coordinator_inner::{
        DWalletCap,
        ImportedKeyDWalletCap,
        UnverifiedPresignCap,
        VerifiedPresignCap,
        UnverifiedPartialUserSignatureCap,
        VerifiedPartialUserSignatureCap,
        MessageApproval,
        ImportedKeyMessageApproval
    },
    sessions_manager::SessionIdentifier
};
use sui::{balance::Balance, coin::Coin, sui::SUI};

Typical Contract Structure

public struct MyContract has key, store {
    id: UID,
 
    // Authorization
    dwallet_cap: DWalletCap,
 
    // Presign pool
    presigns: vector<UnverifiedPresignCap>,
 
    // Payment balances
    ika_balance: Balance<IKA>,
    sui_balance: Balance<SUI>,
 
    // Network key reference
    dwallet_network_encryption_key_id: ID,
}

Next Steps

Start with Coordinator Architecture to understand how the coordinator works, then move through the other concepts in order.

On this page