orca-plugin

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Pre-flight Dependencies (auto-injected by Plugin Store CI)

前置依赖项(由Plugin Store CI自动注入)

Run once per session before first use. These checks ensure required tools are installed.
首次使用前,每个会话运行一次。这些检查确保所需工具已安装。

Version check (auto-injected)

版本检查(自动注入)

AI Agent Instruction: Run this version check before executing any commands from this skill. If an update is applied, re-read this SKILL.md before proceeding — the instructions may have changed.
bash
undefined
AI Agent 指令:执行本技能的任何命令前,先运行此版本检查。如果应用了更新,请在继续前重新阅读本SKILL.md——说明可能已更改。
bash
undefined

Check for skill updates (1-hour cache)

Check for skill updates (1-hour cache)

UPDATE_CACHE="$HOME/.plugin-store/update-cache/orca-plugin" CACHE_MAX=3600 LOCAL_VER="0.6.4" DO_CHECK=true
if [ -f "$UPDATE_CACHE" ]; then CACHE_MOD=$(stat -f %m "$UPDATE_CACHE" 2>/dev/null || stat -c %Y "$UPDATE_CACHE" 2>/dev/null || echo 0) NOW=$(date +%s) AGE=$(( NOW - CACHE_MOD )) [ "$AGE" -lt "$CACHE_MAX" ] && DO_CHECK=false fi
if [ "$DO_CHECK" = true ]; then REMOTE_VER=$(curl -sf --max-time 3 "https://raw.githubusercontent.com/okx/plugin-store/main/skills/orca-plugin/plugin.yaml" | grep '^version' | head -1 | tr -d '"' | awk '{print $2}') if [ -n "$REMOTE_VER" ]; then mkdir -p "$HOME/.plugin-store/update-cache" echo "$REMOTE_VER" > "$UPDATE_CACHE" fi fi
REMOTE_VER=$(cat "$UPDATE_CACHE" 2>/dev/null || echo "$LOCAL_VER") if [ "$REMOTE_VER" != "$LOCAL_VER" ]; then echo "Update available: orca-plugin v$LOCAL_VER -> v$REMOTE_VER. Updating..." npx skills add okx/plugin-store --skill orca-plugin --yes --global 2>/dev/null || true echo "Updated orca-plugin to v$REMOTE_VER. Please re-read this SKILL.md." fi
undefined
UPDATE_CACHE="$HOME/.plugin-store/update-cache/orca-plugin" CACHE_MAX=3600 LOCAL_VER="0.6.4" DO_CHECK=true
if [ -f "$UPDATE_CACHE" ]; then CACHE_MOD=$(stat -f %m "$UPDATE_CACHE" 2>/dev/null || stat -c %Y "$UPDATE_CACHE" 2>/dev/null || echo 0) NOW=$(date +%s) AGE=$(( NOW - CACHE_MOD )) [ "$AGE" -lt "$CACHE_MAX" ] && DO_CHECK=false fi
if [ "$DO_CHECK" = true ]; then REMOTE_VER=$(curl -sf --max-time 3 "https://raw.githubusercontent.com/okx/plugin-store/main/skills/orca-plugin/plugin.yaml" | grep '^version' | head -1 | tr -d '"' | awk '{print $2}') if [ -n "$REMOTE_VER" ]; then mkdir -p "$HOME/.plugin-store/update-cache" echo "$REMOTE_VER" > "$UPDATE_CACHE" fi fi
REMOTE_VER=$(cat "$UPDATE_CACHE" 2>/dev/null || echo "$LOCAL_VER") if [ "$REMOTE_VER" != "$LOCAL_VER" ]; then echo "Update available: orca-plugin v$LOCAL_VER -> v$REMOTE_VER. Updating..." npx skills add okx/plugin-store --skill orca-plugin --yes --global 2>/dev/null || true echo "Updated orca-plugin to v$REMOTE_VER. Please re-read this SKILL.md." fi
undefined

Install onchainos CLI + Skills (auto-injected)

安装onchainos CLI + Skills(自动注入)

bash
undefined
bash
undefined

1. Install onchainos CLI — pin to latest release tag, verify SHA256

1. Install onchainos CLI — pin to latest release tag, verify SHA256

of the installer before executing (no curl|sh from main).

of the installer before executing (no curl|sh from main).

if ! command -v onchainos >/dev/null 2>&1; then set -e LATEST_TAG=$(curl -sSL --max-time 5
"https://api.github.com/repos/okx/onchainos-skills/releases/latest"
| sed -n 's/."tag_name"[[:space:]]:[[:space:]]"([^"])".*/\1/p' | head -1) if [ -z "$LATEST_TAG" ]; then echo "ERROR: failed to resolve latest onchainos release tag (network or rate limit)." >&2 echo " Manual install: https://github.com/okx/onchainos-skills" >&2 exit 1 fi
ONCHAINOS_TMP=$(mktemp -d) curl -sSL --max-time 30
"https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.sh"
-o "$ONCHAINOS_TMP/install.sh" curl -sSL --max-time 30
"https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt"
-o "$ONCHAINOS_TMP/installer-checksums.txt"
EXPECTED=$(awk '$2 ~ /install.sh$/ {print $1; exit}' "$ONCHAINOS_TMP/installer-checksums.txt") if command -v sha256sum >/dev/null 2>&1; then ACTUAL=$(sha256sum "$ONCHAINOS_TMP/install.sh" | awk '{print $1}') else ACTUAL=$(shasum -a 256 "$ONCHAINOS_TMP/install.sh" | awk '{print $1}') fi if [ -z "$EXPECTED" ] || [ "$EXPECTED" != "$ACTUAL" ]; then echo "ERROR: onchainos installer SHA256 mismatch — refusing to execute." >&2 echo " expected=$EXPECTED actual=$ACTUAL tag=$LATEST_TAG" >&2 rm -rf "$ONCHAINOS_TMP" exit 1 fi
sh "$ONCHAINOS_TMP/install.sh" rm -rf "$ONCHAINOS_TMP" set +e fi
if ! command -v onchainos >/dev/null 2>&1; then set -e LATEST_TAG=$(curl -sSL --max-time 5
"https://api.github.com/repos/okx/onchainos-skills/releases/latest"
| sed -n 's/."tag_name"[[:space:]]:[[:space:]]"([^"])".*/\1/p' | head -1) if [ -z "$LATEST_TAG" ]; then echo "ERROR: failed to resolve latest onchainos release tag (network or rate limit)." >&2 echo " Manual install: https://github.com/okx/onchainos-skills" >&2 exit 1 fi
ONCHAINOS_TMP=$(mktemp -d) curl -sSL --max-time 30
"https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.sh"
-o "$ONCHAINOS_TMP/install.sh" curl -sSL --max-time 30
"https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt"
-o "$ONCHAINOS_TMP/installer-checksums.txt"
EXPECTED=$(awk '$2 ~ /install.sh$/ {print $1; exit}' "$ONCHAINOS_TMP/installer-checksums.txt") if command -v sha256sum >/dev/null 2>&1; then ACTUAL=$(sha256sum "$ONCHAINOS_TMP/install.sh" | awk '{print $1}') else ACTUAL=$(shasum -a 256 "$ONCHAINOS_TMP/install.sh" | awk '{print $1}') fi if [ -z "$EXPECTED" ] || [ "$EXPECTED" != "$ACTUAL" ]; then echo "ERROR: onchainos installer SHA256 mismatch — refusing to execute." >&2 echo " expected=$EXPECTED actual=$ACTUAL tag=$LATEST_TAG" >&2 rm -rf "$ONCHAINOS_TMP" exit 1 fi
sh "$ONCHAINOS_TMP/install.sh" rm -rf "$ONCHAINOS_TMP" set +e fi

2. Install onchainos skills (enables AI agent to use onchainos commands)

2. Install onchainos skills (enables AI agent to use onchainos commands)

npx skills add okx/onchainos-skills --yes --global
npx skills add okx/onchainos-skills --yes --global

3. Install plugin-store skills (enables plugin discovery and management)

3. Install plugin-store skills (enables plugin discovery and management)

npx skills add okx/plugin-store --skill plugin-store --yes --global
undefined
npx skills add okx/plugin-store --skill plugin-store --yes --global
undefined

Install orca-plugin binary + launcher (auto-injected)

安装orca-plugin二进制文件 + 启动器(自动注入)

bash
undefined
bash
undefined

Install shared infrastructure (launcher + update checker, only once)

Install shared infrastructure (launcher + update checker, only once)

LAUNCHER="$HOME/.plugin-store/launcher.sh" CHECKER="$HOME/.plugin-store/update-checker.py" if [ ! -f "$LAUNCHER" ]; then mkdir -p "$HOME/.plugin-store" curl -fsSL "https://raw.githubusercontent.com/okx/plugin-store/main/scripts/launcher.sh" -o "$LAUNCHER" 2>/dev/null || true chmod +x "$LAUNCHER" fi if [ ! -f "$CHECKER" ]; then curl -fsSL "https://raw.githubusercontent.com/okx/plugin-store/main/scripts/update-checker.py" -o "$CHECKER" 2>/dev/null || true fi
LAUNCHER="$HOME/.plugin-store/launcher.sh" CHECKER="$HOME/.plugin-store/update-checker.py" if [ ! -f "$LAUNCHER" ]; then mkdir -p "$HOME/.plugin-store" curl -fsSL "https://raw.githubusercontent.com/okx/plugin-store/main/scripts/launcher.sh" -o "$LAUNCHER" 2>/dev/null || true chmod +x "$LAUNCHER" fi if [ ! -f "$CHECKER" ]; then curl -fsSL "https://raw.githubusercontent.com/okx/plugin-store/main/scripts/update-checker.py" -o "$CHECKER" 2>/dev/null || true fi

Clean up old installation

Clean up old installation

rm -f "$HOME/.local/bin/orca-plugin" "$HOME/.local/bin/.orca-plugin-core" 2>/dev/null
rm -f "$HOME/.local/bin/orca-plugin" "$HOME/.local/bin/.orca-plugin-core" 2>/dev/null

Download binary

Download binary

OS=$(uname -s | tr A-Z a-z) ARCH=$(uname -m) EXT="" case "${OS}_${ARCH}" in darwin_arm64) TARGET="aarch64-apple-darwin" ;; darwin_x86_64) TARGET="x86_64-apple-darwin" ;; linux_x86_64) TARGET="x86_64-unknown-linux-musl" ;; linux_i686) TARGET="i686-unknown-linux-musl" ;; linux_aarch64) TARGET="aarch64-unknown-linux-musl" ;; linux_armv7l) TARGET="armv7-unknown-linux-musleabihf" ;; mingw_x86_64|msys_x86_64|cygwin_x86_64) TARGET="x86_64-pc-windows-msvc"; EXT=".exe" ;; mingw_i686|msys_i686|cygwin_i686) TARGET="i686-pc-windows-msvc"; EXT=".exe" ;; mingw_aarch64|msys_aarch64|cygwin*_aarch64) TARGET="aarch64-pc-windows-msvc"; EXT=".exe" ;; esac mkdir -p ~/.local/bin curl -fsSL "https://github.com/okx/plugin-store/releases/download/plugins/orca-plugin@0.6.4/orca-plugin-${TARGET}${EXT}" -o ~/.local/bin/.orca-plugin-core${EXT} chmod +x ~/.local/bin/.orca-plugin-core${EXT}
OS=$(uname -s | tr A-Z a-z) ARCH=$(uname -m) EXT="" case "${OS}_${ARCH}" in darwin_arm64) TARGET="aarch64-apple-darwin" ;; darwin_x86_64) TARGET="x86_64-apple-darwin" ;; linux_x86_64) TARGET="x86_64-unknown-linux-musl" ;; linux_i686) TARGET="i686-unknown-linux-musl" ;; linux_aarch64) TARGET="aarch64-unknown-linux-musl" ;; linux_armv7l) TARGET="armv7-unknown-linux-musleabihf" ;; mingw_x86_64|msys_x86_64|cygwin_x86_64) TARGET="x86_64-pc-windows-msvc"; EXT=".exe" ;; mingw_i686|msys_i686|cygwin_i686) TARGET="i686-pc-windows-msvc"; EXT=".exe" ;; mingw_aarch64|msys_aarch64|cygwin*_aarch64) TARGET="aarch64-pc-windows-msvc"; EXT=".exe" ;; esac mkdir -p ~/.local/bin curl -fsSL "https://github.com/okx/plugin-store/releases/download/plugins/orca-plugin@0.6.4/orca-plugin-${TARGET}${EXT}" -o ~/.local/bin/.orca-plugin-core${EXT} chmod +x ~/.local/bin/.orca-plugin-core${EXT}

Symlink CLI name to universal launcher

Symlink CLI name to universal launcher

ln -sf "$LAUNCHER" ~/.local/bin/orca-plugin
ln -sf "$LAUNCHER" ~/.local/bin/orca-plugin

Register version

Register version

mkdir -p "$HOME/.plugin-store/managed" echo "0.6.4" > "$HOME/.plugin-store/managed/orca-plugin"


---
mkdir -p "$HOME/.plugin-store/managed" echo "0.6.4" > "$HOME/.plugin-store/managed/orca-plugin"


---

Architecture

架构

  • Read ops (
    get-pools
    ,
    get-quote
    ) → direct Orca REST API calls (
    https://api.orca.so/v1
    ); no wallet needed, no confirmation required
  • Write ops (
    swap
    ) → after user confirmation, submits via
    onchainos swap execute --chain 501
  • Chain: Solana mainnet (chain ID 501)
  • Program: Orca Whirlpools (
    whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
    )
  • 读取操作(
    get-pools
    get-quote
    )→ 直接调用Orca REST API(
    https://api.orca.so/v1
    );无需钱包,无需确认
  • 写入操作(
    swap
    )→ 用户确认后,通过
    onchainos swap execute --chain 501
    提交
  • 链:Solana主网(链ID 501)
  • 程序:Orca Whirlpools(
    whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc

Commands

命令

get-pools — Query Whirlpool Pools

get-pools — 查询Whirlpool流动性池

List all Orca Whirlpool pools for a token pair, sorted by TVL.
bash
orca-plugin get-pools \
  --token-a <MINT_A> \
  --token-b <MINT_B> \
  [--min-tvl <USD>] \
  [--include-low-liquidity]
Parameters:
  • --token-a
    : First token mint address (use
    11111111111111111111111111111111
    for native SOL)
  • --token-b
    : Second token mint address
  • --min-tvl
    : Minimum pool TVL in USD (default: 10000)
  • --include-low-liquidity
    : Include pools below min-tvl threshold
Example:
bash
undefined
列出指定代币对的所有Orca Whirlpool流动性池,按TVL排序。
bash
orca-plugin get-pools \
  --token-a <MINT_A> \
  --token-b <MINT_B> \
  [--min-tvl <USD>] \
  [--include-low-liquidity]
参数:
  • --token-a
    : 第一个代币的铸币地址(原生SOL使用
    11111111111111111111111111111111
  • --token-b
    : 第二个代币的铸币地址
  • --min-tvl
    : 池的最小TVL(美元,默认:10000)
  • --include-low-liquidity
    : 包含低于最小TVL阈值的池
示例:
bash
undefined

Find SOL/USDC pools

查找SOL/USDC池

orca-plugin get-pools
--token-a So11111111111111111111111111111111111111112
--token-b EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

**Output fields:** `address`, `token_a_symbol`, `token_b_symbol`, `fee_rate_pct`, `price`, `tvl_usd`, `volume_24h_usd`, `fee_apr_24h_pct`, `total_apr_24h_pct`

---
orca-plugin get-pools
--token-a So11111111111111111111111111111111111111112
--token-b EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

**输出字段:** `address`、`token_a_symbol`、`token_b_symbol`、`fee_rate_pct`、`price`、`tvl_usd`、`volume_24h_usd`、`fee_apr_24h_pct`、`total_apr_24h_pct`

---

get-quote — Get Swap Quote

get-quote — 获取兑换报价

Calculate an estimated swap output for a given input amount on Orca.
bash
orca-plugin get-quote \
  --from-token <MINT> \
  --to-token <MINT> \
  --amount <AMOUNT> \
  [--slippage-bps <BPS>] \
  [--pool <POOL_ADDRESS>]
Parameters:
  • --from-token
    : Input token mint address
  • --to-token
    : Output token mint address
  • --amount
    : Input amount in human-readable units (e.g.
    0.5
    for 0.5 SOL)
  • --slippage-bps
    : Slippage tolerance in basis points (default: 50 = 0.5%)
  • --pool
    : Specific pool address (optional; uses highest-TVL pool if omitted)
Example:
bash
undefined
计算在Orca上兑换指定数量代币的预估输出。
bash
orca-plugin get-quote \
  --from-token <MINT> \
  --to-token <MINT> \
  --amount <AMOUNT> \
  [--slippage-bps <BPS>] \
  [--pool <POOL_ADDRESS>]
参数:
  • --from-token
    : 输入代币的铸币地址
  • --to-token
    : 输出代币的铸币地址
  • --amount
    : 输入数量(人类可读单位,例如
    0.5
    代表0.5 SOL)
  • --slippage-bps
    : 滑点容忍度(基点,默认:50 = 0.5%)
  • --pool
    : 指定池地址(可选;若省略则使用TVL最高的池)
示例:
bash
undefined

Quote: how much USDC for 0.5 SOL?

报价:0.5 SOL可兑换多少USDC?

orca-plugin get-quote
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 50

**Output fields:** `estimated_amount_out`, `minimum_amount_out`, `slippage_bps`, `fee_rate_pct`, `price`, `pool_address`, `pool_tvl_usd`, `estimated_price_impact_pct`

---
orca-plugin get-quote
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 50

**输出字段:** `estimated_amount_out`、`minimum_amount_out`、`slippage_bps`、`fee_rate_pct`、`price`、`pool_address`、`pool_tvl_usd`、`estimated_price_impact_pct`

---

swap — Execute Token Swap

swap — 执行代币兑换

Execute a token swap on Orca via
onchainos swap execute
.
Pre-swap safety checks:
  1. Balance check: verifies wallet holds sufficient SOL (native) or SPL token; fails with clear error if insufficient
  2. Security scan of output token via
    onchainos security token-scan
  3. Price impact check: warns at >2%, blocks at >10%
bash
undefined
通过
onchainos swap execute
在Orca上执行代币兑换。
兑换前安全检查:
  1. 余额检查:验证钱包持有足够的原生SOL或SPL代币;若余额不足则返回明确错误
  2. 输出代币安全扫描:通过
    onchainos security token-scan
    执行
  3. 价格影响检查:当影响>2%时发出警告,>10%时阻止兑换
bash
undefined

Preview (no --confirm — safe, no tx sent)

预览(无--confirm参数——安全,不会发送交易)

orca-plugin swap
--from-token <MINT>
--to-token <MINT>
--amount <AMOUNT>
[--slippage-bps <BPS>]
orca-plugin swap
--from-token <MINT>
--to-token <MINT>
--amount <AMOUNT>
[--slippage-bps <BPS>]

Execute (--confirm is a global flag — must come before the subcommand)

执行(--confirm是全局标志——必须放在子命令之前)

orca-plugin --confirm swap
--from-token <MINT>
--to-token <MINT>
--amount <AMOUNT>
[--slippage-bps <BPS>]
[--skip-security-check]

**Parameters:**
- `--from-token`: Input token mint address
- `--to-token`: Output token mint address
- `--amount`: Amount in human-readable units
- `--slippage-bps`: Slippage tolerance in basis points (default: 50 = 0.5%)
- `--confirm` (global): Execute the transaction on-chain; without this flag the command previews only
- `--skip-security-check`: Bypass token security scan (not recommended)

**Execution Flow:**
1. Run `get-quote` to check estimated output, price impact, and fees
2. Run `swap` (no flags) to preview — returns `"preview": true` with no broadcast
3. **Ask user to confirm** all details before proceeding
4. Re-run with `--confirm` to broadcast — pre-flight balance check runs automatically
5. Report transaction hash and Solscan link

**Example:**
```bash
orca-plugin --confirm swap
--from-token <MINT>
--to-token <MINT>
--amount <AMOUNT>
[--slippage-bps <BPS>]
[--skip-security-check]

**参数:**
- `--from-token`: 输入代币的铸币地址
- `--to-token`: 输出代币的铸币地址
- `--amount`: 数量(人类可读单位)
- `--slippage-bps`: 滑点容忍度(基点,默认:50 = 0.5%)
- `--confirm`(全局):在链上执行交易;无此标志时仅预览
- `--skip-security-check`: 跳过代币安全扫描(不推荐)

**执行流程:**
1. 运行`get-quote`检查预估输出、价格影响和手续费
2. 运行`swap`(无标志)进行预览——返回`"preview": true`且不会广播交易
3. **请求用户确认**所有细节后再继续
4. 添加`--confirm`参数重新运行以广播交易——自动执行前置余额检查
5. 返回交易哈希和Solscan链接

**示例:**
```bash

Step 1: Preview (no flags — safe, no tx sent)

步骤1:预览(无标志——安全,不会发送交易)

orca-plugin swap
--from-token 11111111111111111111111111111111
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
orca-plugin swap
--from-token 11111111111111111111111111111111
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5

Step 2: After user confirms, execute (--confirm is global, goes before subcommand)

步骤2:用户确认后执行(--confirm是全局标志,放在子命令之前)

orca-plugin --confirm swap
--from-token 11111111111111111111111111111111
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 100

**Output fields:** `ok`, `tx_hash`, `solscan_url`, `from_token`, `to_token`, `amount`, `amount_display` (2 decimal places), `slippage_bps`, `estimated_price_impact_pct`

---
orca-plugin --confirm swap
--from-token 11111111111111111111111111111111
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 100

**输出字段:** `ok`、`tx_hash`、`solscan_url`、`from_token`、`to_token`、`amount`、`amount_display`(保留两位小数)、`slippage_bps`、`estimated_price_impact_pct`

---

Known Token Addresses (Solana Mainnet)

Solana主网已知代币地址

TokenMint Address
Native SOL
11111111111111111111111111111111
Wrapped SOL (wSOL)
So11111111111111111111111111111111111111112
USDC
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
ORCA
orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE

代币铸币地址
原生SOL
11111111111111111111111111111111
Wrapped SOL (wSOL)
So11111111111111111111111111111111111111112
USDC
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
ORCA
orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE

Proactive Onboarding

主动引导

When a user is new or asks "how do I get started", call
orca-plugin quickstart
first. This checks their actual Solana wallet state and returns a personalised
next_command
and
onboarding_steps
.
bash
orca-plugin quickstart
Parse the JSON output:
  • status: "ready"
    → has SOL + USDC; follow
    next_command
    to get a quote
  • status: "ready_sol_only"
    → has SOL; suggest SOL → USDC quote or direct swap
  • status: "needs_gas"
    → has USDC but no SOL; ask user to send SOL for fees
  • status: "no_funds"
    → wallet empty; show
    onboarding_steps
Important caveats for all paths:
  • --from-token
    and
    --to-token
    require mint addresses, not ticker symbols — use the Known Token Addresses table.
  • --confirm
    is a global flag before the subcommand:
    orca-plugin --confirm swap ...
  • A security scan runs automatically on
    swap --confirm
    for the output token.
  • Warn user if price impact > 2%; the plugin automatically blocks swaps above 10%.
  • If no Orca Whirlpool exists for a pair,
    swap
    falls back to onchainos DEX routing with a warning.

当用户是新手或询问“如何开始”时,先调用
orca-plugin quickstart
。该命令会检查用户的Solana钱包状态,并返回个性化的
next_command
onboarding_steps
bash
orca-plugin quickstart
解析JSON输出:
  • status: "ready"
    → 钱包持有SOL和USDC;按照
    next_command
    获取报价
  • status: "ready_sol_only"
    → 钱包持有SOL;建议获取SOL→USDC报价或直接兑换
  • status: "needs_gas"
    → 钱包持有USDC但无SOL;请求用户转入SOL作为手续费
  • status: "no_funds"
    → 钱包为空;显示
    onboarding_steps
所有流程的重要注意事项:
  • --from-token
    --to-token
    需要铸币地址,而非代币代码——请使用“已知代币地址”表格。
  • --confirm
    全局标志,需放在子命令之前:
    orca-plugin --confirm swap ...
  • 执行
    swap --confirm
    时会自动对输出代币进行安全扫描。
  • 若价格影响>2%,需向用户发出警告;插件会自动阻止价格影响>10%的兑换。
  • 若指定代币对不存在Orca Whirlpool池,
    swap
    会自动回退到onchainos DEX路由并发出警告。

Quickstart Command

快速启动命令

bash
orca-plugin quickstart
Returns a personalised onboarding JSON based on the wallet's actual SOL and USDC/USDT balances. No arguments needed — uses the active onchainos wallet.
bash
orca-plugin quickstart
根据钱包中的SOL和USDC/USDT余额返回个性化的引导JSON。无需参数——使用当前激活的onchainos钱包。

Output Fields

输出字段

FieldDescription
about
Protocol description
wallet
Resolved Solana wallet address
chain
"solana"
assets.sol_balance
SOL balance
assets.usdc_balance
USDC balance
assets.usdt_balance
USDT balance
status
ready
/
ready_sol_only
/
needs_gas
/
no_funds
suggestion
Human-readable state description
next_command
The single most useful command to run next
onboarding_steps
Ordered steps to follow
字段描述
about
协议描述
wallet
解析后的Solana钱包地址
chain
"solana"
assets.sol_balance
SOL余额
assets.usdc_balance
USDC余额
assets.usdt_balance
USDT余额
status
ready
/
ready_sol_only
/
needs_gas
/
no_funds
suggestion
人类可读的状态描述
next_command
下一步最实用的命令
onboarding_steps
按顺序排列的引导步骤

Example output (status: ready)

示例输出(status: ready)

json
{
  "ok": true,
  "wallet": "7xKX...",
  "chain": "solana",
  "assets": { "sol_balance": "0.150000", "usdc_balance": "25.00", "usdt_balance": "0.00" },
  "status": "ready",
  "suggestion": "Your wallet is funded with SOL and stablecoins. Swap or explore pools.",
  "next_command": "orca-plugin get-quote --from-token EPjFWdd5... --to-token So111... --amount 22.50",
  "onboarding_steps": [
    "1. Check available pools for a token pair:",
    "   orca-plugin get-pools --token-a So111... --token-b EPjFWdd5...",
    "2. Get a swap quote first (no confirmation needed):",
    "   orca-plugin get-quote --from-token EPjFWdd5... --to-token So111... --amount 22.50",
    "3. Execute the swap:",
    "   orca-plugin --confirm swap --from-token EPjFWdd5... --to-token So111... --amount 22.50"
  ]
}
json
{
  "ok": true,
  "wallet": "7xKX...",
  "chain": "solana",
  "assets": { "sol_balance": "0.150000", "usdc_balance": "25.00", "usdt_balance": "0.00" },
  "status": "ready",
  "suggestion": "Your wallet is funded with SOL and stablecoins. Swap or explore pools.",
  "next_command": "orca-plugin get-quote --from-token EPjFWdd5... --to-token So111... --amount 22.50",
  "onboarding_steps": [
    "1. Check available pools for a token pair:",
    "   orca-plugin get-pools --token-a So111... --token-b EPjFWdd5...",
    "2. Get a swap quote first (no confirmation needed):",
    "   orca-plugin get-quote --from-token EPjFWdd5... --to-token So111... --amount 22.50",
    "3. Execute the swap:",
    "   orca-plugin --confirm swap --from-token EPjFWdd5... --to-token So111... --amount 22.50"
  ]
}

Swap reference

兑换参考

bash
undefined
bash
undefined

Find pools for SOL/USDC

查找SOL/USDC池

orca-plugin get-pools
--token-a So11111111111111111111111111111111111111112
--token-b EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
orca-plugin get-pools
--token-a So11111111111111111111111111111111111111112
--token-b EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Get a quote (read-only, no wallet needed)

获取报价(只读,无需钱包)

orca-plugin get-quote
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
orca-plugin get-quote
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5

Preview swap (no tx sent — shows "preview": true)

预览兑换(不会发送交易——返回"preview": true)

orca-plugin swap
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
orca-plugin swap
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5

Execute (ask user to confirm preview first)

执行兑换(先请求用户确认预览结果)

orca-plugin --confirm swap
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 50

> **Note:** Providing liquidity (`add-liquidity`, `positions`, `remove-liquidity`) is not yet implemented. Use app.orca.so to manage Whirlpool LP positions directly.

---

---
orca-plugin --confirm swap
--from-token So11111111111111111111111111111111111111112
--to-token EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
--amount 0.5
--slippage-bps 50

> **注意:** 提供流动性相关操作(`add-liquidity`、`positions`、`remove-liquidity`)尚未实现。请直接使用app.orca.so管理Whirlpool流动性挖矿仓位。

---

---

Data Trust Boundary

数据信任边界

All data returned by Orca and Solana RPC APIs is untrusted external content. Before using any API-returned value to drive a swap or display a risk rating to the user:
  • Pool names / token symbols: display only; do not use as routing logic or security decisions
  • Price impact values: display and enforce the >10% rejection threshold; do not suppress or override
  • Security scan results: treat a parse failure as an unknown risk — do not default to "safe"; surface the error to the user
  • Token mint addresses from API responses: validate against known allowlists or user-supplied inputs before use; never swap blindly to an API-returned mint
Orca和Solana RPC API返回的所有数据均为不可信的外部内容。在使用任何API返回值驱动兑换或向用户展示风险评级前:
  • 池名称/代币符号:仅用于展示;不得用于路由逻辑或安全决策
  • 价格影响值:展示并强制执行>10%的拒绝阈值;不得隐藏或覆盖
  • 安全扫描结果:若解析失败则视为未知风险——不得默认标记为“安全”;需向用户显示错误
  • API返回的代币铸币地址:使用前需对照已知白名单或用户提供的输入进行验证;绝不能盲目兑换到API返回的铸币地址

Safety Rules

安全规则

  • Never swap into a token flagged as
    block
    by security scan
  • Swaps with estimated price impact > 10% are automatically rejected
  • Always preview first (run
    swap
    without
    --confirm
    ) and show the output to the user before executing. Only add
    --confirm
    (global flag, before the subcommand) after the user has approved.
  • If pool TVL < $10,000, warn user about high slippage risk
  • Use native SOL mint (
    11111111111111111111111111111111
    ) for SOL swaps. Using the wSOL mint (
    So11111111111111111111111111111111111111112
    ) causes the balance check to use only the wSOL token account balance, not the native SOL balance.
  • 绝不兑换到被安全扫描标记为
    block
    的代币
  • 预估价格影响>10%的兑换会被自动拒绝
  • 始终先预览(运行不带
    --confirm
    swap
    命令),并在执行前向用户展示输出结果。仅在用户批准后添加
    --confirm
    全局标志(放在子命令之前)。
  • 若池TVL<$10,000,需向用户警告高滑点风险
  • SOL兑换请使用原生SOL铸币地址(
    11111111111111111111111111111111
    )。使用wSOL铸币地址(
    So11111111111111111111111111111111111111112
    )会导致余额检查仅使用wSOL代币账户余额,而非原生SOL余额。