Protocol Overview

Core Concepts

ckBoost operates on four fundamental concepts that work together to provide instant Bitcoin liquidity.

1. Boost Requests

A Boost Request is created when a user wants to convert Bitcoin to ckBTC instantly.

Key Properties:

  • Amount: How much Bitcoin (in satoshis) the user wants to convert

  • Fee: Maximum fee percentage the user is willing to pay

  • Status: Current state of the request (pending, active, completed, etc.)

  • Subaccount: Isolated account for this specific request

  • Bitcoin Address: Unique address where user sends Bitcoin

2. Booster Pools

A Booster Pool represents a liquidity provider's available capital for instant transfers.

Key Properties:

  • Owner: The principal who owns this pool

  • Available Amount: ckBTC currently available for boosting

  • Fee Rate: The fee this booster charges for providing liquidity

  • Total Boosted: Historical volume this booster has provided

  • Subaccount: Isolated account for this booster's funds

3. Liquidity Providers (Boosters)

Boosters are entities that provide instant ckBTC in exchange for future Bitcoin deposits plus fees.

How Boosters Work:

  1. Deposit ckBTC into their pool

  2. Set their fee rate (competitive advantage)

  3. Accept boost requests by transferring ckBTC instantly

  4. Wait for Bitcoin confirmation and reclaim funds

  5. Earn fees for providing the service

4. Users

Users are entities who want instant ckBTC and are willing to pay a fee for speed.

User Journey:

  1. Create a boost request with desired amount and max fee

  2. Receive a unique Bitcoin address

  3. Send Bitcoin to that address

  4. Receive ckBTC instantly (if booster accepts)

  5. Pay agreed fee for the speed

Economic Model

Fee Structure

The protocol uses a competitive fee marketplace:

  • Users set their maximum fee they're willing to pay

  • Boosters set their minimum fee they require

  • Market dynamics determine actual fees through competition

Incentive Mechanisms

For Users:

  • Instant liquidity (15 min vs 2+ hours)

  • Predictable fees (set maximum)

  • Fallback safety (can claim directly if no booster)

For Boosters:

  • Earn fees on capital

  • Choose risk/reward profile

  • Flexible capital deployment

  • Automated operations

Request Lifecycle

State Machine

Detailed Flow

1. Request Creation (pending)

What happens:

  • Unique request ID generated

  • Bitcoin address created for this request

  • Request enters pending state

  • Available for boosters to accept

2. Booster Acceptance (activeboosted)

What happens:

  • Booster's available balance checked

  • ckBTC transferred instantly to user

  • Request status → boosted

  • Booster's available balance reduced

  • User receives ckBTC immediately

3. Bitcoin Monitoring

What happens:

  • Booster monitors the Bitcoin address

  • When Bitcoin arrives, receivedBTC is updated

  • Enables fund reclamation process

4. Fund Reclamation (boostedcompleted)

What happens:

  • Bitcoin is converted to ckBTC via ckBTC minter

  • ckBTC is transferred back to booster's pool

  • Booster's available balance restored + fees earned

  • Request status → completed

5. User Fallback (No Booster)

Security Model

Fund Isolation

Every request and booster pool uses isolated subaccounts:

Benefits:

  • Funds cannot be mixed between different requests

  • Clear audit trail for every transaction

  • Isolated risk (one request cannot affect another)

  • Precise accounting and fee calculations

Integration Patterns

User-Facing Applications (Wallets, dApps)

class ckBoostIntegration {
  async createBoostRequest(btcAmount: number, maxFee: number) {
    // 1. Create request
    const request = await this.backend.registerBoostRequest(btcAmount, maxFee);
    
    // 2. Get Bitcoin address
    const address = await this.backend.getBoostRequestBTCAddress(request.id);
    
    // 3. Show QR code to user
    this.showBitcoinAddress(address);
    
    // 4. Monitor status
    this.monitorRequest(request.id);
  }
  
  async monitorRequest(requestId: number) {
    const interval = setInterval(async () => {
      const request = await this.backend.getBoostRequest(requestId);
      
      if ('completed' in request.status) {
        this.notifyUser("ckBTC received!");
        clearInterval(interval);
      }
    }, 30000); // Check every 30 seconds
  }
}

Liquidity Provider Applications

class BoosterBot {
  async managePool() {
    // 1. Register as booster
    await this.backend.registerBoosterPool(this.feeRate);
    
    // 2. Deposit initial capital
    await this.depositToPool(this.initialCapital);
    
    // 3. Monitor and accept requests
    this.startRequestMonitoring();
  }
  
  async startRequestMonitoring() {
    setInterval(async () => {
      const requests = await this.backend.getPendingBoostRequests();
      
      for (const request of requests) {
        if (this.shouldAcceptRequest(request)) {
          await this.backend.acceptBoostRequest(request.id);
        }
      }
    }, 10000); // Check every 10 seconds
  }
}

Performance Characteristics

Latency Expectations

Operation
Expected Time
Notes

Create Request

1-3 seconds

Single canister call

Accept Request

2-5 seconds

ICRC-1 transfer included

Bitcoin Confirmation

15-60 minutes

Depends on Bitcoin network

Fund Reclamation

30-90 seconds

Two-phase process


Last updated