gate-exchange-flashswap について
gate-cli で Gate Flash Swap による暗号資産交換を行うスキルです。単一通貨間と複数通貨の交換、ペアや上限の照会に対応し、実行前のプレビューと確認を行います。
主な機能
- 01単一通貨を別の通貨に交換
- 02一つの通貨を複数通貨に交換
- 03複数通貨を一つに集約
- 04対応ペアと上限の照会
- 05交換注文の確認
活用シーン
- 01BTCからUSDTへの交換をプレビュー
- 02一つの通貨で複数資産を購入
- 03複数資産を一つの通貨に集約
- 04交換上限や注文状況を確認
MCP 対応
gate-cli の flash-swap コマンドを使い、見積もり、対応ペア照会、注文作成、注文照会を行います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gate/ gate-skills --skill gate-exchange-flashswapインストール後、Claude Code で/gate-exchange-flashswapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHANGELOG.mdREADME.mdsetup.shreferences/gate-cli.mdmcp.mdscenarios.md詳細
gate-cli の解決(バイナリパス)
gate-cli は次の順に解決します。(1) command -v gate-cli と gate-cli --version が成功すること、(2) 実行可能な場合は ${HOME}/.local/bin/gate-cli、(3) 実行可能な場合は ${HOME}/.openclaw/skills/bin/gate-cli。正式なルール:exchange-runtime-rules.md §4(または gate-runtime-rules.md §4)。
Gate Flash Swap
一般的なルール
⚠️ 停止してください — 先に共有ランタイムルールを読み、厳密に従う必要があります。 すべてのルールを読み終えるまで、いかなるツールも選択または呼び出してはいけません。これらのルールは最優先です。 → gate-runtime-rules.md をお読みください。
- このスキルに明示的に記載された
gate-cliコマンドのみを使用してください。 他のインターフェースで実行できる場合でも、ここに記載されていないコマンドをこれらのワークフローで実行してはいけません。
スキルの依存関係
使用する gate-cli コマンド
照会操作(読み取り専用)
gate-cli cex flash-swap ordergate-cli cex flash-swap pairsgate-cli cex flash-swap ordersgate-cli cex flash-swap preview-many-to-onegate-cli cex flash-swap preview-one-to-manygate-cli cex flash-swap preview-v1
実行操作(書き込み)
gate-cli cex flash-swap create-many-to-onegate-cli cex flash-swap create-one-to-manygate-cli cex flash-swap create-v1
認証
- 対話型のファイル設定: ホスト上で
GATE_API_KEYとGATE_API_SECRETが両方とも設定されていない場合は、gate-cli config initを実行して、API キー、シークレット、プロファイル、デフォルト値のウィザードを完了します(gate-cli を参照)。 - 環境変数/フラグ: 認証情報がすでに指定されている場合(例:ホスト上で
GATE_API_KEYとGATE_API_SECRETの両方が設定されている場合、または対応している場合の--api-key/--api-secret)は、gate-cli config initは不要です。ユーザーにチャットでシークレットを貼り付けるよう求めてはいけません。 - 権限: Fc:Write
- ポータル: チャット以外でキーを作成またはローテーションしてください:https://www.gate.com/myaccount/profile/api-key/manage
インストールの確認
- 必須:
gate-cli(見つからない場合は、このスキルのディレクトリからsh ./setup.shを実行してください。GATE_CLI_SETUP_MODE=releaseは任意です)。 - 名前で
gate-cliを呼び出す場合は、PATHに$HOME/.openclaw/skills/bin(またはsetup.shがインストール先としているディレクトリ)を追加してください。 - 認証情報: ホストに
GATE_API_KEYとGATE_API_SECRETの両方が(空でない値で)設定されている場合、gate-cli config initを必須にしないでください。これらはgate-cliで有効な設定と同等です。両方が未設定または空の場合は、gate-cli config initを実行するか、スキルライブラリ内の該当するスキルでGATE_API_KEY/GATE_API_SECRETを設定するようオペレーターに注意を促してください(ユーザーにチャットでシークレットを貼り付けるよう求めてはいけません)。 - 動作確認: CLI が想定どおりに動作するまで、認証を必要とする呼び出しを進めてはいけません(例:このスキルの
gate-cli --version、または読み取り専用のgate-cli cex ...コマンド)。変更を伴う操作の前に、認証情報が解決されることを確認してください。
実行モード
references/gate-cli.md を読み、厳密に従ってから、このスキルのフラッシュスワップのワークフローを実行してください。
SKILL.mdはルーティングとシナリオの境界を定めます。references/gate-cli.mdは、プレビュー/作成の順序、確認ゲート、縮退時の処理に関する、正式なgate-cli実行仕様です。
トリガー条件
ユーザーのリクエストが以下のいずれかに該当する場合、このスキルが有効になります。
- ある暗号資産を別の暗号資産に交換/変換したい
- 1つの通貨を使って複数の暗号資産を一度に購入したい(例:「BTCを1u、ETHを2u購入」)
- 複数の暗号資産を1つの通貨に売却したい(例:「BTCを1、ETHを2、USDTに売却」)
- フラッシュスワップに対応している通貨について尋ねる
- スワップの最小/最大金額や制限について尋ねる
- フラッシュスワップの注文履歴や特定の注文の詳細を求める
- 「flash swap」、「convert」、「quick exchange」、「swap」、「instant swap」というキーワードを使用する
クイックスタート
よくある使用例:
- 1対1のスワップ:「BTCを1、USDTに売却」
- 複数のコインを購入:「BTCを1u、ETHを2u、SOLを3u購入」
- 複数のコインを売却:「BTCを1、ETHを2、SOLを3、USDTに売却」
- 通貨ペアを確認:「フラッシュスワップ対応の通貨ペアを表示して」
- 注文履歴:「フラッシュスワップの注文を表示して」
ドメイン知識
フラッシュスワップは、Gate が提供する暗号資産のクイック交換サービスです。ユーザーは注文を出してマッチングを待つことなく、リアルタイムの為替レートで暗号資産を即座に別の暗号資産へ変換できます。
スワップモード:
- 1対1:1つの通貨を別の1つの通貨に交換します(例:BTC → USDT)
- 1対多:1つの通貨を複数の通貨に交換します(例:USDT → BTC + ETH + SOL)
- 多対1:複数の通貨を1つの通貨に交換します(例:BTC + ETH + SOL → USDT)
主な概念:
- sell_asset / buy_asset:売却側と購入側の通貨シンボル
- sell_amount / buy_amount:どちらか一方を指定すると、API がもう一方を計算します。1対多では対象ごとに
sell_amountを指定し、多対1では原資産ごとにsell_amountを指定します - quote_id:プレビュー API が返す一意の識別子で、注文の作成に必要です。正確な有効期間はレスポンスの
valid_timestampに示されます。このフィールドを必ず確認し、固定の有効期間を想定しないでください - 注文ステータス:
1= 成功、2= 失敗
API フィールドの命名規則:
gate-cli cex flash-swap pairsは snake_case のフィールドを返します:sell_min_amount、sell_max_amount、buy_min_amount、buy_max_amount、currency_pair、sell_currency、buy_currencygate-cli cex flash-swap preview-v1および複数通貨のプレビュー API は、一部の環境で camelCase のフィールドを返します(例:sellMinAmount)。固定の命名規則を想定せず、必ずレスポンスから実際のフィールド名を確認してくださいgate-cli cex flash-swap ordersおよびgate-cli cex flash-swap orderは snake_case のフィールドを返します:sell_currency、buy_currency、sell_amount、buy_amount、create_time
データ型に関する注意:order_id は API レスポンスで 文字列 として返されます。quote_id も文字列です。
MCP ツール一覧:
| ツール | 種類 | 説明 |
|---|---|---|
gate-cli cex flash-swap preview-v1 | プレビュー | 1対1スワップの見積もりプレビュー |
gate-cli cex flash-swap create-v1 | 作成 | 1対1スワップ注文の作成(quote_id が必要) |
gate-cli cex flash-swap preview-one-to-many | プレビュー | 1対多スワップの見積もりプレビュー |
gate-cli cex flash-swap create-one-to-many | 作成 | 1対多スワップ注文の作成 |
gate-cli cex flash-swap preview-many-to-one | プレビュー | 多対1スワップの見積もりプレビュー |
gate-cli cex flash-swap create-many-to-one | 作成 | 多対1スワップ注文の作成 |
gate-cli cex flash-swap pairs | クエリ | 対応しているフラッシュスワップの通貨ペアと制限を一覧表示 |
gate-cli cex flash-swap orders | クエリ | フラッシュスワップの注文履歴を照会 |
gate-cli cex flash-swap order | クエリ | ID を指定して単一のフラッシュスワップ注文を照会 |
ワークフロー
ステップ 1:ユーザーの意図を特定する
ユーザーのリクエストを分析し、実行するフラッシュスワップ操作を判断します。
意図の分類:
| ユーザーの意図 | モード | プレビュー用ツール | 作成用ツール |
|---|---|---|---|
| あるコインを別のコインに交換する(例:「1 BTC を売って USDT にする」) | one-to-one | gate-cli cex flash-swap preview-v1 | gate-cli cex flash-swap create-v1 |
| 個別の確認なしでワンクリック交換する(例:「100 USDT を直接 GT に交換する」) | one-to-one-auto | gate-cli cex flash-swap preview-v1 → gate-cli cex flash-swap create-v1 | — |
| 1つの通貨で複数のコインを購入する(例:「BTC を 1u、ETH を 2u 購入する」) | one-to-many | gate-cli cex flash-swap preview-one-to-many | gate-cli cex flash-swap create-one-to-many |
| 1つの通貨を比率に応じて複数の通貨に分割する(例:「1000 USDT を BTC と ETH に半分ずつ分ける」) | one-to-many-split | gate-cli cex flash-swap preview-one-to-many | gate-cli cex flash-swap create-one-to-many |
| 複数のコインを指定した数量で購入する(例:「USDT で 0.1 BTC と 1 ETH を購入する」) | one-to-many-buy | gate-cli cex flash-swap preview-one-to-many | gate-cli cex flash-swap create-one-to-many |
| 複数のコインを1つの通貨に売却する(例:「1 BTC と 2 ETH を売って USDT にする」) | many-to-one | gate-cli cex flash-swap preview-many-to-one | gate-cli cex flash-swap create-many-to-one |
| 特定のコインの保有分をすべて1つの通貨にまとめる(例:「保有する BTC、ETH、DOGE をすべて USDT に交換する」) | many-to-one-all | gate-cli cex flash-swap preview-many-to-one | gate-cli cex flash-swap create-many-to-one |
| 複数通貨の交換をプレビューのみ行う(例:「保有する BTC と ETH で GT をいくら受け取れますか?」) | many-to-one-preview | gate-cli cex flash-swap preview-many-to-one | — |
| 対応するフラッシュスワップペアを照会する | query | gate-cli cex flash-swap pairs | — |
| フラッシュスワップの注文一覧を照会する | query | gate-cli cex flash-swap orders | — |
| ID で個別のフラッシュスワップ注文を照会する | query | gate-cli cex flash-swap order | — |
| 最新の注文結果を確認する(例:「スワップは成功しましたか?」) | verify-order | gate-cli cex flash-swap order | — |
抽出する主なデータ:
intent:「one_to_one」/「one_to_one_auto」/「one_to_many」/「one_to_many_split」/「one_to_many_buy」/「many_to_one」/「many_to_one_all」/「many_to_one_preview」/「list_pairs」/「list_orders」/「get_order」/「verify_order」sell_asset/buy_asset:交換に関わる通貨sell_amount/buy_amount:ユーザーが指定した数量
ステップ 2:スワップ数量を事前検証する(プレビューの前に実施)
プレビュー API を呼び出す前に、不要な API 呼び出しを避けるため、ユーザーの数量がペアの最小/最大制限内にあるかを検証します。
次の内容で gate-cli cex flash-swap pairs を呼び出します:
currency:ユーザーのリクエストにある sell_asset または buy_asset
抽出する主なデータ:
sell_min_amount/sell_max_amount:売却側で許可される範囲buy_min_amount/buy_max_amount:購入側で許可される範囲
検証ロジック:
- ユーザーの
sell_amountがsell_min_amount未満の場合、数量が最小値を下回っていることを伝え、プレビューには進まないでください - ユーザーの
sell_amountがsell_max_amountを超える場合、数量が最大値を超えていることを伝えてください - ペアが見つからない場合、その通貨はフラッシュスワップに対応していません
レイテンシーを最小限に抑えるため、ユーザーが「ワンクリック」または「直接」スワップを明示的にリクエストした場合は、このステップを省略してください。
ステップ 3:プレビュー — 1 対 1 スワップ(intent = one_to_one または one_to_one_auto の場合)
gate-cli cex flash-swap preview-v1 を次の項目とともに呼び出します。
sell_asset(必須、文字列):売却する資産。例:「BTC」buy_asset(必須、文字列):購入する資産。例:「USDT」sell_amount(文字列):売却する数量。sell_amountとbuy_amountのいずれかを指定しますbuy_amount(文字列):購入する数量。sell_amountとbuy_amountのいずれかを指定します
抽出する主なデータ:
quote_id:注文の作成に必要ですsell_asset/sell_amount:確定した売却側の情報buy_asset/buy_amount:計算された購入側の情報price:交換レートvalid_timestamp:見積もりの有効期限
one_to_one intent の場合:プレビューをユーザーに提示し、作成に進む前に確認を求めます。
one_to_one_auto intent の場合:ユーザーは「direct」または「one-click」実行を明示的にリクエストしており、スワップを事前承認しています。個別の確認を省略し、直ちにステップ 4 に進みます。ユーザーからの直接的なリクエストが確認に相当するため、これは安全性ルールに準拠しています。ただし:プレビューでエラー(code != 0)が返された場合は、ステップ 4 に進まず、直ちにエラーをユーザーに報告してください。
ステップ 4:作成 — 1 対 1 スワップ(ステップ 3 の後にユーザーが確認した場合、または one_to_one_auto の場合は自動実行)
前提条件:ステップ 3 で code == 0 と有効な quote_id が返されている必要があります。ステップ 3 が失敗した場合(code != 0 の場合)は、このステップを実行しないでください。quote_id を決して捏造しないでください。
本文の JSON 文字列とともに gate-cli cex flash-swap create-v1 を呼び出します。
quote_id(必須、文字列):プレビューのレスポンスから取得します。API が返した実際の値を使用する必要がありますsell_asset(必須、文字列):売却する資産sell_amount(必須、文字列):売却する数量buy_asset(必須、文字列):購入する資産buy_amount(必須、文字列):購入する数量
抽出する主なデータ:
id:作成された注文 IDstatus:1= 成功、2= 失敗sell_asset/sell_amount/buy_asset/buy_amount:確定した数量price:実行されたレートcreate_time:注文の作成時刻error.code/error.message:HTTP ステータスが 200 の場合でもエラーを確認します
注文結果の確認:作成後、status フィールドを確認します。
status == 1の場合:スワップが成功したことをユーザーに伝え、受け取った最終的なbuy_amountを表示しますstatus == 2の場合:スワップが失敗したことをユーザーに伝え、再度プレビューして試すよう提案しますerror.code != 0の場合:具体的なエラーメッセージをユーザーに報告します
ステップ 5:プレビュー — 1 対多スワップ(intent = one_to_many、one_to_many_split、または one_to_many_buy の場合)
one_to_many_split の場合:ユーザーは合計数量と配分比率(例:「1000 USDT を半分ずつ BTC と ETH に分ける」)を指定します。API を呼び出す前に、対象ごとの sell_amount を計算します。
one_to_many_buy の場合:ユーザーは通貨ごとの目標 buy_amount(例:「0.1 BTC と 1 ETH を購入する」)を指定します。API に必要な売却数量を計算させるため、パラメーター配列では sell_amount の代わりに buy_amount フィールドを使用します。
本文の JSON 文字列とともに gate-cli cex flash-swap preview-one-to-many を呼び出します。
params(必須、配列):各要素には以下が含まれます。sell_asset(必須、文字列):売却元の通貨(すべて同じ。例:「USDT」)sell_amount(文字列):この対象に使用する売却元通貨の数量buy_asset(必須、文字列):対象通貨(例:「BTC」、「ETH」)buy_amount(文字列):sell_amountの代替
抽出する主なデータ:
orders[]:プレビュー結果の配列。各要素にquote_id、sell_amount、buy_amount、price、errorが含まれますtotal_consume_amount:消費される売却元通貨の合計数量- 各注文の
error.codeを確認します。ゼロ以外の場合、その項目の見積もり取得に失敗しています
プレビュー全体を表にして提示し、失敗した項目があれば強調表示します。確認を求めます。
ステップ 6:作成 — 1対多のスワップ(ユーザーがステップ 5 を確認した後)
重要:プレビューで失敗した項目(error.code != 0 または quote_id がない項目)は除外してください。
本文の JSON 文字列を指定して gate-cli cex flash-swap create-one-to-many を呼び出します。
params(必須、配列):各要素には以下を含めます。sell_asset(必須、文字列):売却元の通貨sell_amount(必須、文字列):売却する数量buy_asset(必須、文字列):購入先の通貨buy_amount(必須、文字列):購入する数量(プレビューから取得)quote_id(文字列):プレビューのレスポンスから取得
抽出する主なデータ:
orders[]:作成された注文の配列。各注文にはid、status、errorが含まれます。total_consume_amount:実際の合計消費量- 注文ごとの失敗を確認するため、各注文の
error.codeを確認します。
ステップ 7:プレビュー — 多対1のスワップ(intent = many_to_one、many_to_one_all、または many_to_one_preview の場合)
many_to_one_all の場合:ユーザーは指定した通貨の保有分をすべてまとめることを希望しています。プレビューの前に、ユーザーの現物口座の残高を照会し、各通貨の実際の数量を確認してください。フラッシュスワップの最小数量(gate-cli cex flash-swap pairs の sell_min_amount)を下回る残高の通貨は除外します。
本文の JSON 文字列を指定して gate-cli cex flash-swap preview-many-to-one を呼び出します。
params(必須、配列):各要素には以下を含めます。sell_asset(必須、文字列):売却元の通貨(例:「BTC」、「ETH」)sell_amount(文字列):売却する数量buy_asset(必須、文字列):購入先の通貨(すべて同じ通貨。例:「USDT」)buy_amount(文字列):sell_amountの代替
抽出する主なデータ:
orders[]:プレビュー結果の配列。quote_id、sell_amount、buy_amount、price、errorが含まれます。total_acquire_amount:受け取る購入先通貨の合計数量- 注文ごとの
error.codeを確認します。ゼロ以外の場合、その項目は失敗です。
プレビュー全体を表にして提示し、失敗した項目があれば強調表示してください。
many_to_one_preview の場合:期待される合計 buy_amount(成功したすべての項目の合計)を提示し、作成には進まないでください。これはプレビューのみであることをユーザーに伝えます。
many_to_one および many_to_one_all の場合:作成に進む前に、ユーザーに確認を求めます。
ステップ 8:作成 — 多対1のスワップ(ユーザーがステップ 7 を確認した後)
重要:プレビューで失敗した項目は除外してください。失敗した項目(例:buy_amount: "0")を含めると、リクエスト全体が code: 4 で拒否されます。
本文の JSON 文字列を指定して gate-cli cex flash-swap create-many-to-one を呼び出します。
params(必須、配列):各要素には以下を含めます。sell_asset(必須、文字列):売却元の通貨sell_amount(必須、文字列):売却する数量buy_asset(必須、文字列):購入先の通貨buy_amount(必須、文字列):購入する数量(プレビューから取得)quote_id(文字列):プレビューのレスポンスから取得
抽出する主なデータ:
orders[]:作成された注文の配列。各注文にはid、status、errorが含まれます。total_acquire_amount:実際の合計受取量
ステップ 9:フラッシュスワップのペアを照会(intent = list_pairs の場合)
以下を指定して gate-cli cex flash-swap pairs を呼び出します。
currency(任意、文字列):通貨シンボルで絞り込みます。limit(任意、数値):返す最大件数(デフォルトは 1000)page(任意、数値):ページ番号
大量の結果に関する警告:通貨で絞り込まない場合、数千行が返されることがあります。合計件数を要約し、20 ペアのサンプルを表示して、通貨での絞り込みを提案してください。
抽出する主なデータ:
items[]:通貨ペアの一覧。currency_pair、sell_currency、buy_currency、sell_min_amount、sell_max_amount、buy_min_amount、buy_max_amountが含まれます。
ステップ 10:フラッシュスワップの注文履歴を照会する(intent = list_orders の場合)
呼び出す前に、status パラメーターが指定されている場合は値を検証します。有効な値は 1(成功)と 2(失敗)のみです。
次のコマンドを呼び出します:gate-cli cex flash-swap orders
status(省略可、数値):1= 成功、2= 失敗sell_currency(省略可、文字列):売却通貨で絞り込むbuy_currency(省略可、文字列):購入通貨で絞り込むlimit(省略可、数値):最大レコード数page(省略可、数値):ページ番号reverse(省略可、ブール値):trueの場合は新しい順(デフォルト)
抽出する主要なデータ:
id、sell_currency、buy_currency、sell_amount、buy_amount、price、status、create_timeを含む注文一覧
ステップ 11:単一の注文を照会する(intent = get_order または verify_order の場合)
次のコマンドを呼び出します:gate-cli cex flash-swap order
order_id(必須、数値):照会する注文 ID
API が 404 を返した場合は、注文が見つからなかったことをユーザーに伝えます。
verify_order の場合:注文を取得した後、status を確認します。
status == 1の場合:スワップが成功したことを確認し、実際に受け取った最終的なbuy_amountを表示しますstatus == 2の場合:スワップが失敗したことを伝え、再度プレビューして新しい注文を出すよう提案します
抽出する主要なデータ:
- 注文の全詳細:
id、sell_currency、buy_currency、sell_amount、buy_amount、price、status、create_time
ステップ 12:結果を整形して提示する
適切なレポートテンプレートを使って結果を整形します。スワップ操作では、必ず次の内容を表示します。
- 見積もりの詳細を含むプレビュー概要テーブル
- 作成後に、注文 ID、ステータス、および項目ごとのエラーがあればそれを表示します
エラー処理
| エラーの状況 | 対応 |
|---|---|
| 地域/コンプライアンス上の制限(コード -2) | 重大:API は {"code":-2,"message":"This service is not supported in your region"} を返します。これは、このユーザーの地域ではフラッシュスワップを利用できないことを意味します。すべての操作を直ちに停止し、作成処理に進まず、「コンプライアンス上の制限により、お客様の地域ではフラッシュスワップを利用できません」とユーザーに伝えてください。結果を捏造しないでください |
| プレビュー失敗(0 以外のコード) | 重大:プレビュー API が code != 0 を返した場合、操作は失敗しています。作成手順に進まないでください。quote_id を捏造しないでください。正確なエラーコードとメッセージをユーザーに報告してください。API がエラーを返した場合に「成功」と表示してはいけません |
| 最小金額未満(sell_amount < sell_min_amount) | まず gate-cli cex flash-swap pairs を照会してください。最小金額未満の場合は、正確な最小金額をユーザーに伝え、プレビューを呼び出さないでください |
| 最大金額超過(sell_amount > sell_max_amount) | 金額が許容される最大値を超えていることをユーザーに伝え、上限を示してください |
| 見積もりの有効期限切れ(コード 1052) | quote_id の有効期限が切れています。プレビューを再実行して新しい見積もりを取得し、その後すぐに注文を作成してください |
| 正確な見積もりを取得できない(コード 4 / 400001 / 400007) | これらはサーバーから返される見積もり関連のエラーです。code 4 はリクエスト全体の拒否を示します(多くの場合、失敗した項目が含まれていることが原因です)。400001 と 400007 は項目ごとのエラーで、サーバーがこの通貨ペア/金額の価格を算出できないことを意味します。金額の調整、別の通貨ペアの試行、または失敗した項目の削除を提案してください |
| 複数通貨の作成:リクエスト全体が拒否された(コード 4) | プレビューに失敗した項目が buy_amount: "0" として含まれていることが原因と考えられます。プレビューの error.code != 0 に該当する項目をすべて削除し、再試行してください |
| 注文ステータス == 2(失敗) | スワップに失敗したことをユーザーに伝えてください。パラメーターを調整して再度プレビューし、もう一度試すよう提案してください |
| 注文が見つからない(404) | order_id は存在しません。ID を確認するか、まず注文一覧を照会するよう提案してください |
| MCP サービスへの接続失敗 | ネットワークまたは VPN を確認するようユーザーに促し、後でもう一度試すよう提案してください |
| order_id が指定されていない | 注文 ID を指定するようユーザーに促すか、まず注文一覧を照会してください |
| クエリ結果が空 | データが見つからなかったことをユーザーに伝え、フィルターの調整を提案してください |
| 対応していない通貨 | 指定された通貨はフラッシュスワップで利用できないことをユーザーに伝えてください |
| 無効なステータス値 | ステータスに指定できるのは 1(成功)または 2(失敗)のみです。API を呼び出す前に、その他の値を拒否してください |
| 大量の結果(数千行) | 合計件数を要約し、サンプルを 20 件表示して、通貨で絞り込むよう提案してください |
| many_to_one_all で残高が最小金額を下回る | すべての保有資産を統合する際は、残高が sell_min_amount 未満の通貨をスキップし、除外した通貨をユーザーに伝えてください |
安全ルール
- 結果を決して捏造しないでください:API 呼び出しでエラー(code != 0)が返された場合、実際のエラーを必ずユーザーに報告してください。成功したような応答、偽の注文 ID、偽の quote_id、偽の取引結果を決して捏造しないでください。これが最も重要な安全ルールです。
- プレビューに失敗した後は決して処理を続行しないでください:プレビュー API で何らかのエラー(地域制限を示す code -2 を含む code != 0)が返された場合、直ちに停止してください。作成 API を呼び出してはいけません。quote_id(例:「AUTO-GT-001」)を捏造してはいけません。エラーを正直に報告してください。
- 作成前に必ずプレビューしてください:すべてのスワップで、最初にプレビューを行う必要があります。標準的なフローでは、見積もりをユーザーに表示し、明示的な確認を待ってから作成 API を呼び出してください。
one_to_one_autoモードの場合に限り、ユーザーが直接スワップ(例:「直接スワップ」「ワンクリック」)を明示的に要求している場合は、事前承認済みの確認とみなされます。その場合は、別途確認を求めず、プレビューの直後に作成へ進んでください。 - 確認なしに書き込み操作を行わないでください:(a)ユーザーがプレビュー結果を明示的に確認した場合、または(b)ユーザーがワンクリック/直接スワップを明示的に要求した場合を除き、作成/注文 API を決して呼び出してはいけません。ペア一覧、注文一覧、注文取得などの照会操作には確認は不要です。
- プレビューに失敗した項目を除外してください:複数通貨の注文を作成する場合、プレビューに成功した項目(
error.code == 0)のみを含めてください。 - 機密情報を開示しないでください:API Key、Secret、認証トークンを決して出力してはいけません。
- 金額はそのまま表示してください:API の応答に含まれる金額を丸めたり変更したりしないでください。
- 高額の場合は警告してください:スワップの合計額が USDT 換算で 10,000 を超える場合は、ユーザーに再確認するよう促してください。
- 古い確認の取り扱い:ユーザーが以前のプレビューを確認した場合、そのプレビュー応答の
valid_timestampを現在時刻が過ぎていないか確認してください。期限切れの場合は、作成前に自動的に再プレビューを行い、新しい見積もりを取得してください。
判断ロジックの概要
| 条件 | アクション | ツール |
|---|---|---|
| ユーザーがあるコインを別のコインに交換したい | 1対1のプレビューを行い、確認後に作成する | gate-cli cex flash-swap preview-v1 → gate-cli cex flash-swap create-v1 |
| ユーザーが「直接」または「ワンクリック」での交換を希望する | 個別の確認なしで、プレビューと作成を自動で行う | gate-cli cex flash-swap preview-v1 → gate-cli cex flash-swap create-v1 |
| ユーザーが確認のために以前の quote_id を指定する | 指定された quote_id を使って注文を作成する | gate-cli cex flash-swap create-v1 |
| 交換金額が不自然に少ない | プレビューの前に、ペアの最小金額に照らして事前検証する | gate-cli cex flash-swap pairs |
| ユーザーが1つの通貨で複数のコインを購入したい | 1対多のプレビューを行い、その後に作成する | gate-cli cex flash-swap preview-one-to-many → gate-cli cex flash-swap create-one-to-many |
| ユーザーが1つの通貨を比率で分割したい(例:「半分ずつ」) | 対象ごとの sell_amount を計算し、その後に1対多のプレビューを行う | gate-cli cex flash-swap preview-one-to-many → gate-cli cex flash-swap create-one-to-many |
| ユーザーが購入数量を指定する(例:「BTCを0.1、ETHを1購入」) | パラメーターに buy_amount を使用し、1対多のプレビューを行う | gate-cli cex flash-swap preview-one-to-many → gate-cli cex flash-swap create-one-to-many |
| ユーザーが複数のコインを1つの通貨にまとめて売却したい | 多対1のプレビューを行い、その後に作成する | gate-cli cex flash-swap preview-many-to-one → gate-cli cex flash-swap create-many-to-one |
| ユーザーが特定の保有資産を「すべて」まとめたい | 残高を照会し、最小金額でフィルタリングしてから、多対1のプレビューを行い、その後に作成する | gate-cli cex flash-swap pairs → gate-cli cex flash-swap preview-many-to-one → gate-cli cex flash-swap create-many-to-one |
| ユーザーが実行を希望せずに「いくら受け取れますか」と尋ねる | 多対1のプレビューのみを実行し、buy_amount を合計する。作成は行わない | gate-cli cex flash-swap preview-many-to-one |
プレビューの項目に error.code != 0 が含まれている | ユーザーに警告し、作成前に失敗した項目を除外する | — |
| プレビューでコード -2(地域制限)が返された | 直ちに停止する。作成しない。ユーザーの地域ではフラッシュスワップを利用できないことを伝える | — |
| プレビューでゼロ以外のコードが返された | 停止する。作成しない。quote_id を捏造しない。正確なエラーをユーザーに報告する | — |
| 作成時にコード 1052(見積もりの期限切れ)が返された | 新しい見積もりを取得するため、プレビューを再実行する | プレビューツール |
| 作成時に項目ごとのエラー(400001/400007)が返された | 失敗した項目を報告し、金額の調整を提案する | — |
| 複数通貨の作成がコード 4 で拒否された | 失敗したプレビュー項目を削除して再試行する | 作成ツール |
| 作成後の注文ステータスが 2 | スワップが失敗したことをユーザーに伝え、再試行を提案する | — |
| ユーザーが「スワップは成功しましたか」と尋ねる | ID で注文を照会し、ステータスフィールドを確認する | gate-cli cex flash-swap order |
| ユーザーが対応ペアや制限について尋ねる | ペア一覧を照会する | gate-cli cex flash-swap pairs |
| ユーザーが注文履歴を照会する | 注文一覧を照会する | gate-cli cex flash-swap orders |
| ユーザーが ID で特定の注文を照会する | 単一の注文を照会する | gate-cli cex flash-swap order |
| 注文が見つからない(404) | ユーザーに伝え、ID の確認を提案する | — |
| ユーザーが無効なステータスフィルターを指定する | 拒否し、有効な値は 1 または 2 であることを伝える | — |
レポートテンプレート
タイムスタンプ形式:すべての {timestamp} プレースホルダーには ISO 8601 形式を使用します:YYYY-MM-DD HH:mm:ss UTC。
1対1のプレビューレポート
## Flash Swap Preview (One-to-One)
**Quote ID**: {quote_id}
**Valid Until**: {valid_timestamp}
| Sell | Amount | Buy | Amount | Rate |
|------|--------|-----|--------|------|
| {sell_asset} | {sell_amount} | {buy_asset} | {buy_amount} | {price} |
Proceed with this swap? (Yes/No)
1対1の注文レポート
## Flash Swap Order Created
**Order ID**: {id}
**Status**: {status_text}
**Created At**: {create_time}
| Sell | Amount | Buy | Amount | Rate |
|------|--------|-----|--------|------|
| {sell_asset} | {sell_amount} | {buy_asset} | {buy_amount} | {price} |
複数通貨のプレビューレポート(1対多/多対1)
## Flash Swap Preview ({mode})
**Total {direction}**: {total_amount} {currency}
| # | Sell | Sell Amount | Buy | Buy Amount | Rate | Quote ID | Status |
|---|------|-------------|-----|------------|------|----------|--------|
| {n} | {sell_asset} | {sell_amount} | {buy_asset} | {buy_amount} | {price} | {quote_id} | {status} |
{failed_count} item(s) failed to get a quote and will be excluded from the order.
Proceed with {success_count} successful item(s)? (Yes/No)
複数通貨の注文レポート
## Flash Swap Orders Created ({mode})
**Total {direction}**: {total_amount} {currency}
| # | Order ID | Sell | Sell Amount | Buy | Buy Amount | Status | Error |
|---|----------|------|-------------|-----|------------|--------|-------|
| {n} | {id} | {sell_asset} | {sell_amount} | {buy_asset} | {buy_amount} | {status_text} | {error_message} |
{success_count}/{total_count} orders succeeded.
ペア一覧レポート
## Gate Flash Swap Supported Pairs
**Query Time**: {timestamp}
**Filter**: {currency filter or "None"}
| Pair | Sell Currency | Buy Currency | Sell Min | Sell Max |
|------|---------------|--------------|----------|----------|
| {currency_pair} | {sell_currency} | {buy_currency} | {sell_min_amount} | {sell_max_amount} |
Total: {total} pairs.
注文一覧レポート
## Gate Flash Swap Order History
**Query Time**: {timestamp}
**Filters**: Status={status}, Sell={sell_currency}, Buy={buy_currency}
| Order ID | Sell | Sell Amount | Buy | Buy Amount | Status | Created At |
|----------|------|-------------|-----|------------|--------|------------|
| {id} | {sell_currency} | {sell_amount} | {buy_currency} | {buy_amount} | {status_text} | {create_time} |
Total: {total} records.
注文詳細レポート
## Gate Flash Swap Order Details
| Field | Value |
|-------|-------|
| Order ID | {id} |
| Sell Currency | {sell_currency} |
| Sell Amount | {sell_amount} |
| Buy Currency | {buy_currency} |
| Buy Amount | {buy_amount} |
| Exchange Rate | {price} |
| Status | {status_text} |
| Created At | {create_time} |