XChain Platform — ACTION Command Specifications

This directory contains the official protocol specifications for all ACTION commands supported by the XChain Platform. These specifications are the authoritative reference for how each action is structured, what parameters it accepts, and what format versions are available.

What are ACTIONs?

ACTIONs are the fundamental operations of the XChain Protocol. Every state change on the platform — creating a token, transferring balances, placing a DEX order, uploading a file — is expressed as an ACTION embedded in a blockchain transaction.

ACTION data is encoded as a pipe-delimited string:

ACTION|VERSION|PARAM1|PARAM2|...

Multiple actions can be combined in a single transaction using the BATCH action, with individual commands separated by semicolons (;).

Supported Blockchains

XChain ACTIONs are supported on:

  • Bitcoin (BTC) — mainnet, testnet, regtest
  • Litecoin (LTC) — mainnet, testnet, regtest
  • Dogecoin (DOGE) — mainnet, testnet, regtest

The same ACTION specifications apply across all chains. Chain-specific behavior (fee amounts, special addresses) is handled by the indexer’s per-chain configuration.

ACTION Command Reference

Token Lifecycle

ACTION Description
ISSUE Creates or updates a token (TICK) with supply, decimals, locks, and minting rules
MINT Mints additional supply of an existing token
DESTROY Permanently burns token supply
CALLBACK Force-recalls tokens from all holders back to the token owner
SLEEP Pauses all actions on a token until a specified RESUME_BLOCK

Transfers

ACTION Description
SEND Sends one or more tokens to one or more addresses (4 format versions)
SWEEP Transfers all token balances and/or ownerships to a destination address
AIRDROP Distributes token supply to addresses in one or more lists
DIVIDEND Pays a dividend to all holders of a token

Decentralized Exchange (DEX)

ACTION Description
ORDER Places a buy/sell order on the decentralized exchange
COINPAY Fulfills a native coin payment obligation from an ORDER_MATCH
DISPENSER Creates a vending machine that dispenses tokens when triggered by a send
SWAP Creates a cross-chain token swap offer between supported blockchains

Data and Communication

ACTION Description
BROADCAST Broadcasts a message; can also create oracles and betting feeds
MESSAGE Sends plaintext or encrypted messages between addresses
FILE Uploads a file with metadata (name, MIME type, title)

Oracles

ACTION Description
PRICE Publishes oracle price data on-chain (v0: validator COIN/FIAT snapshots, v1: user TOKEN/FIAT oracles)
ATTEST External-data attestation lifecycle: v0=request (VM-emitted), v1=response (validator-broadcast), v2=expire (system-synthesized)
ANCHOR Validator-broadcast, DOGE-only: quorum-signed state checkpoints (v0) and the cross-chain match archive (v1/v2) for full-parse recoverability

Staking (capability staking BTC-only; contract-targeted staking any chain)

ACTION Description
STAKE Stakes tokens for validator participation (v1=new capability stake, v2=top-up, v3=contract-targeted)
UNSTAKE Begins the unstaking cooldown period (v0=capability, v1=contract-targeted)
DELEGATE Manages the signing key for a stake (v0/v1 rotate, v2/v3 revoke; capability or contract-targeted)
COLLECT Collects accrued validator rewards

Virtual Machine (VM)

ACTION Description
DEPLOY Deploys a smart contract to the XChain VM
EXECUTE Executes a method on a deployed smart contract
DEPOSIT Transfers tokens from a user to a contract’s custody
WITHDRAW Withdraws tokens from a contract’s custody back to the owner

Utility

ACTION Description
ADDRESS Configures address-specific preferences (e.g., require memo)
BATCH Executes multiple ACTION commands in a single transaction
LINK Links two actions by ACTION_INDEX, including cross-chain links
LIST Creates a list of items (addresses, tickers) for use in other actions

Specification Format

Each ACTION specification follows a consistent structure:

  • PARAMS — Table of all parameters with name, type, and description
  • Formats — Versioned pipe-delimited patterns showing parameter order for each format version
  • Examples — Concrete examples with explanations

Key Concepts

VERSION (Format Version)

Every ACTION includes a VERSION parameter as its first field. This determines how the remaining parameters are interpreted. Different versions allow the same action to support different use cases (e.g., SEND version 0 is a single send, version 1 is a multi-send).

TICK

A TICK is a token ticker name (1-250 characters). Tickers are case-sensitive and can contain letters, numbers, and symbols. The names BTC, LTC, DOGE, and XCHAIN are reserved by the protocol.

ACTION_INDEX

The ACTION_INDEX is a sequential integer assigned to every processed action. It serves as the primary cross-reference mechanism — actions like LINK, DISPENSER, and LIST reference other actions by their ACTION_INDEX.

MEMO

An optional text field (250 characters max) that can be attached to transfer actions. Destination addresses can require a memo via the ADDRESS action.

Encoding

ACTION data is embedded in blockchain transactions as AES-128-CTR obfuscated payloads:

  • Key: First 16 hex characters of the first input’s txid
  • IV: Next 16 hex characters of the first input’s txid
  • Magic prefix: XCHN (4 bytes) after deobfuscation

Supported encoding types: OP_RETURN (up to 80 bytes total per output, 76 bytes user data + 4-byte XCHN prefix), P2SH, P2WSH, multisign. Larger payloads use P2SH or P2WSH with a two-transaction pattern (fund then spend to reveal data).

Resource Description
Indexer Actions Reference How each ACTION is validated and processed by the indexer
SDK Actions Reference How to generate ACTION strings using the SDK
Database Naming Structure Database naming conventions for the platform
Token Information Standard Standard for token metadata

Copyright © 2025–2026 Dankest, LLC

Based on XChain Platform by Dankest, LLC – https://dankest.llc

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later) with a commercial license available for proprietary use.

You may use, modify, and distribute this material under the terms of the License. See LICENSE and NOTICE for full terms. See the licensing overview.

Edit this page on GitHub ↗