When a user wants to settle their funds onchain via a batch swap, they submit an intent to the operator. Arkade intents are valid-but-unmineable Bitcoin transactions that encode an ownership proof of the inputs a user wants to redeem - whether it’s offchain VTXOs, an onchain UTXO or recoverable coins (eg. expired coins or in form of an Arkade Note) - and define the outputs they wish to receive. Arkade intents are based on BIP322, a standardized Bitcoin message signing protocol. The system was introduced with the v0.7.0 arkd release.
The usage of BIP322 enables users to choose between renewing their expiring offchain funds themselves or delegating the renewal of such VTXOs. The delegated intent workflow can be found under Intent Delegation

Intent Structure

This section defines the intent schema that expresses what is being spent and where it goes. It covers the top-level fields, the Receiver format (onchain address vs. offchain pubkey), and the IntentMessage that captures execution parameters and the intent’s validity window.

Intent Lifecycle 

The Arkade event stream (GetEventStream) is a server-side streaming RPC method in the ArkService) that provides real-time batch processing coordination events to clients including batch start, finalization, and failure notifications. The server uses this stream to indicate the next required action and corresponding API call. The full Intent lifecycle is as follows:
1

Create a BIP322 Signature

Intents use BIP322 message signing protocol for proving ownership of coins.
The create function takes a string message corresponding to the associated action described below (“Register” or “Delete”).
2

Register an Intent

The core of intent registration is the RegisterIntentRequest which contains a Bip322Signaturefield and an intent message:
The server then responds with a RegisterIntentResponsecontaining an intent_idstring for tracking.
3

Confirm Registration

After receiving a BatchStartedEventcontaining their intent ID hash, clients must call ConfirmRegistrationwith a ConfirmRegistrationRequestcontaining the intent_idto confirm participation. The server responds with an empty ConfirmRegistrationResponse.
4

Delete Intent

The DeleteIntentmethod accepts a DeleteIntentRequestwith a Bip322Signatureproof that demonstrates ownership of any input VTXOs from the original intent. The server responds with an empty DeleteIntentResponseupon successful deletion.

Recovery Mechanisms

The intent system provides additional options for edge cases like recoverable VTXOs: