Offboarding enables users to convert their Virtual Transaction Outputs (VTXOs) back into standard Bitcoin UTXOs, allowing them to withdraw funds from Arkade’s execution environment to the base layer. Users can choose between two main offboarding mechanisms: collaborative or unilateral exit (force redemption).

Client API Overview

Clients interact with exit functionality primarily through the (ArkService). The service provides both gRPC and REST endpoints for all exit operations.

Getting Boarding Configuration

Clients first need to understand the boarding parameters by calling GetInfo() which returns GetInfoResponse server configuration parameters like network settings, amount limits, timeouts (e.g. expiry, exit delays), the operator’s signer key, and the current protocol version.

Collaborative Exit Process

The preferred offboarding method where the operator cooperates to create an exit transaction:
  1. Offboarding Request: Client calls CollaborativeExit with onchain destination address and amount
  2. Tx creation: The server creates an exit transaction spending selected VTXOs
  3. Batch Processing: The exit is processed in the next batch round following the standard batch processing flow
  4. Settlement: The exit transaction is broadcast and confirmed onchain

Ramps: Boarding Arkade

How to use a ramp for offboarding Arkade

Unilateral Exit Process

When a collaborative exit fails or the operator is unresponsive, clients can force exit:
  1. Unroll Initiation: Client initiates unilateral exit using the --force flag
  2. Timelock Wait: Client must wait for the unilateral exit delay period to expire
  3. Completion: After timelock expires, client completes the exit (`arkSdkClient.CompleteUnroll

Exit Types and CLI Usage

Collaborative Exit with Change:
ark-cli redeem --amount 1000 --address <destination> --password <pwd>
Collaborative Exit with full Balance:
ark-cli redeem --amount <full_amount> --address <destination> --password <pwd>
Unilateral Exit:
ark-cli redeem --force --password <pwd>  
ark-cli redeem --complete --address <destination> --password <pwd>

Event Stream Monitoring

Clients can monitor exit progress through GetEventStream() , which returns GetEventStreamResponse and provides real-time updates about batch processing phases and transaction confirmations.