Skip to content

Overview

What is Stratos Wallet?

Stratos Wallet is a multi-chain, self-custodial wallet platform designed for the Canton Network ecosystem. It provides:

  • WebAuthn/Passkey Authentication - Passwordless, phishing-resistant authentication
  • Multi-Chain Support - Ethereum, Bitcoin, Solana, Tron, TON, and Canton
  • Canton Network Integration - Native support for Daml smart contracts
  • Embedded App Ecosystem - Run third-party apps within the wallet via iframes
  • PRF-Based Encryption - Secure key derivation using WebAuthn PRF extension

Architecture Overview

┌─────────────────────────────────────────────────────────────┐
│                     Stratos Wallet                          │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                  React Frontend                      │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐             │   │
│  │  │  Wallet │  │  Dock   │  │  Admin  │             │   │
│  │  │   View  │  │  Apps   │  │  Panel  │             │   │
│  │  └─────────┘  └─────────┘  └─────────┘             │   │
│  │                    │                                 │   │
│  │            ┌───────┴───────┐                        │   │
│  │            │ Wallet Bridge │                        │   │
│  │            └───────────────┘                        │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              Cloudflare Pages Functions              │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌────────┐ │   │
│  │  │  Auth   │  │  Wallet │  │  Admin  │  │ Canton │ │   │
│  │  │   API   │  │   API   │  │   API   │  │  Proxy │ │   │
│  │  └─────────┘  └─────────┘  └─────────┘  └────────┘ │   │
│  └─────────────────────────────────────────────────────┘   │
│                          │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                  Cloudflare D1                       │   │
│  │     Users, Sessions, Passkeys, Assets, Configs      │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                    Canton Network                           │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Splice    │  │  JSON API   │  │    Daml     │         │
│  │   Ledger    │  │   Gateway   │  │  Contracts  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

Key Components

1. Wallet Instance (cloudflare-wallet)

The main wallet application deployed to Cloudflare Pages:

  • Frontend: React SPA with wallet UI, dock apps, and admin panel
  • Backend: Cloudflare Pages Functions for API endpoints
  • Database: Cloudflare D1 for user data, sessions, and configuration
  • Bridge: PostMessage-based communication with embedded apps

2. Stratos Wallet SDK (stratos-wallet-sdk)

NPM package for building apps that run inside the wallet:

typescript
import { getSDK } from '@stratos/wallet-sdk';

const sdk = getSDK();
const { user, addresses } = await sdk.connect();

3. Dock Apps

Third-party applications embedded as iframes:

  • Trade/Swap: DEX aggregators and trading interfaces
  • DeFi: Lending, staking, and yield farming
  • NFT/RWA: Digital asset marketplaces
  • Custom Apps: Any app built with the SDK

Supported Chains

ChainTypeFeatures
CantoncantonDaml contracts, CC transfers, party IDs
EthereumevmERC-20 tokens, smart contracts, EIP-712
BaseevmL2 with low fees
BitcoinbtcNative BTC, UTXO management
SolanasvmSPL tokens, high throughput
TrontronTRC-20 tokens, SunSwap
TONtonJettons, STON.fi

Security Model

Key Derivation

Keys are derived using the WebAuthn PRF (Pseudo-Random Function) extension:

  1. User authenticates with passkey
  2. PRF output is used as seed material
  3. Chain-specific keys are derived using BIP-32/39 paths
  4. Private keys never leave the browser

Authentication Flow

┌──────┐          ┌──────────┐          ┌────────┐
│ User │          │  Wallet  │          │ Server │
└──┬───┘          └────┬─────┘          └───┬────┘
   │                   │                    │
   │  Touch Passkey    │                    │
   │──────────────────>│                    │
   │                   │                    │
   │                   │  Verify Signature  │
   │                   │───────────────────>│
   │                   │                    │
   │                   │  Session Token     │
   │                   │<───────────────────│
   │                   │                    │
   │  Access Granted   │                    │
   │<──────────────────│                    │

Next Steps

Released under the MIT License.