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:
Deposit ckBTC into their pool
Set their fee rate (competitive advantage)
Accept boost requests by transferring ckBTC instantly
Wait for Bitcoin confirmation and reclaim funds
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:
Create a boost request with desired amount and max fee
Receive a unique Bitcoin address
Send Bitcoin to that address
Receive ckBTC instantly (if booster accepts)
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
stateAvailable for boosters to accept
2. Booster Acceptance (active
→ boosted
)
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 updatedEnables fund reclamation process
4. Fund Reclamation (boosted
→ completed
)
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
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