orderly-one-dex について
Orderly One DEXは、Orderly Network上でホワイトラベルの無期限先物DEXを作成・管理するためのスキルです。ウェブポータルまたはREST APIでの設定やデプロイ、x402決済によるブローカー登録と手数料分配への移行を扱います。
主な機能
- 01ウェブウィザードとREST APIの手順
- 02DEXの作成と設定
- 03ブランド、メニュー、ドメイン設定
- 04デプロイ状況の追跡
- 05ブローカー登録と手数料分配への移行
活用シーン
- 01ローコードでブランドDEXを立ち上げる
- 02APIで既存DEXを設定する
- 03DEXを移行してブローカーを登録する
MCP 対応
READMEではAPIエンドポイントの詳細取得にMCPツール`get_orderly_one_api_info`を挙げていますが、MCPサーバーや公開ツールの説明はありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ orderlynetwork/ skills --skill orderly-one-dexインストール後、Claude Code で/orderly-one-dexを入力して読み込まれたか確認します。
詳細
Orderly Network:Orderly One DEX
Orderly One(https://dex.orderly.network)は、誰でも Orderly Network 上にホワイトラベルの無期限先物 DEX をコードの有無を問わず立ち上げられるプラットフォームです。次の 2 つの機能を備えています。
- 人がステップごとのウィザードを使って DEX を作成、設定、デプロイできる、dex.orderly.network のウェブ UI。
- AI エージェントやスクリプトが同じ操作をプログラムから実行するために呼び出せるREST API。
重要: 手数料収益を得られるようになるステップである卒業とブローカー ID の作成では、エージェントは x402 HTTP 決済プロトコル(
POST /api/graduation/graduate)を使って支払い、1 回のリクエストでブローカーを登録できます。ブラウザーは不要です。https://dex.orderly.network/dex のウェブポータルは、技術に詳しくないユーザーにとって引き続き最も簡単な方法です。この選択肢があることを必ず伝えてください。
2 つの立ち上げ方法
| 方法 | 説明 | 卒業手数料 | 対象ユーザー |
|---|---|---|---|
| ローコード | Orderly One ポータルまたは API を使って、ブランドに合わせた DEX フロントエンドを作成します。テンプレートリポジトリをフォークし、GitHub Pages にデプロイします。 | $100 | フロントエンド開発を最小限に抑えて素早く立ち上げたいチーム |
| カスタム SDK/API | Orderly SDK または API を使って、完全にカスタムのフロントエンドを構築します。Orderly One を通じて卒業し、ブローカー ID を取得できます。DEX フロントエンドは不要です。 | $10 | ウォレット、既存の取引所、全面的な制御を求めるチーム |
公式のビルダー向けオンボーディングガイドを参照してください:https://orderly.network/docs/introduction/getting-started/builder-onboarding
使用する場面
- カスタムの無期限先物 DEX を作成する
- DEX のデプロイ、ドメイン、テーマを管理する
- 手数料分配のための卒業を処理する
主な概念
- ブローカー ID:Orderly エコシステム内の一意の識別子です。最初は
"demo"で、卒業後に実際のブローカー ID になります。これにより、DEX は取引手数料を得られます。 - 卒業:$10~$100 を支払い、ブローカーとして登録することで、デモ DEX を手数料収益を得られる DEX に切り替えるプロセスです。
- テンプレートリポジトリ:ローコード DEX ごとにフォークされる GitHub リポジトリです。Orderly SDK を使った取引フロントエンドが含まれています。
- ユーザーごとに DEX は 1 つ:各ウォレットアドレスで作成できる DEX は 1 つだけです。
API ベース URL
| 環境 | ベース URL |
|---|---|
| メインネット | https://dex-api.orderly.network |
| テストネット | https://testnet-dex-api.orderly.network |
API のルートでは、インタラクティブな OpenAPI 仕様(Scalar)を利用できます:GET /
卒業時の決済に対応するチェーン
メインネット:Ethereum(1)、Arbitrum(42161)、Base(8453)
テストネット:Sepolia、Arbitrum Sepolia、Base Sepolia
API カテゴリ
エンドポイントの詳細については、get_orderly_one_api_info MCP ツールを使用してください。
| カテゴリ | 説明 | 主なエンドポイント |
|---|---|---|
| auth | ウォレット署名による認証 | /api/auth/nonce、/api/auth/verify、/api/auth/validate |
| dex | DEX の CRUD、ドメイン、デプロイ | /api/dex、/api/dex/{id}、/api/dex/{id}/custom-domain、/api/dex/{id}/workflow-status |
| theme | AI テーマの生成 | /api/theme/modify、/api/theme/fine-tune |
| graduation | デモ → 手数料を共有する完全な DEX | /api/graduation/graduate (x402)、/api/graduation/verify-tx、/api/graduation/fee-options、/api/graduation/refund |
| leaderboard | DEX をまたいだランキング | /api/leaderboard、/api/leaderboard/broker/{brokerId} |
| stats | プラットフォームの統計情報 | /api/stats、/api/stats/swap-fee-config |
DEX の作成/更新
POST /api/dex(作成)と PUT /api/dex/{id}(更新)は、どちらも multipart/form-data を使用します。
必須フィールド
| フィールド | 型 | 制約 |
|---|---|---|
brokerName | string | 3~30 文字、英数字/スペース/ピリオド/ハイフン |
任意項目
チェーン:
| 項目 | 型 | 備考 |
|---|---|---|
chainIds | number[] (JSON) | 例:[42161, 10, 8453] |
defaultChain | number | デフォルトのチェーン ID |
ブランディング(ファイル):
| 項目 | 型 | 最大サイズ |
|---|---|---|
primaryLogo | File | 250KB |
secondaryLogo | File | 100KB |
favicon | File | 50KB |
pnlPoster0..N | File | 各 250KB |
テーマ設定:
| 項目 | 型 | 備考 |
|---|---|---|
themeCSS | string | デフォルトテーマを上書きする CSS 変数 |
tradingViewColorConfig | string | チャートの色を指定する JSON |
ソーシャル:
| 項目 | 型 | 備考 |
|---|---|---|
telegramLink | string | URL |
discordLink | string | URL |
xLink | string | URL |
認証/ウォレット:
| 項目 | 型 | 備考 |
|---|---|---|
walletConnectProjectId | string | WalletConnect のプロジェクト ID |
privyAppId | string | Privy のアプリ ID |
privyTermsOfUse | string | 利用規約の URL |
privyLoginMethods | string | カンマ区切り |
enableAbstractWallet | boolean | Abstract ウォレットを有効化 |
disableEvmWallets | boolean | EVM ウォレットを無効化 |
disableSolanaWallets | boolean | Solana ウォレットを無効化 |
ネットワーク:
| 項目 | 型 | 備考 |
|---|---|---|
disableMainnet | boolean | メインネットを無効化 |
disableTestnet | boolean | テストネットを無効化 |
取引:
| 項目 | 型 | 備考 |
|---|---|---|
swapFeeBps | number (0-100) | スワップ手数料(ベーシスポイント単位。「Swap」を enabledMenus に含める必要があります) |
symbolList | string | カンマ区切り(PERP_ETH_USDC) |
メニュー:
| 項目 | 型 | 備考 |
|---|---|---|
enabledMenus | string | カンマ区切り。選択肢:Trading、Portfolio、Markets、Leaderboard(デフォルト)、Swap、Rewards、Vaults、Points |
customMenus | string | 形式:「Name,URL;Name2,URL2」 |
SEO:
| 項目 | 型 | 制約 |
|---|---|---|
seoSiteName | string | 最大 100 文字 |
seoSiteDescription | string | 最大 300 文字 |
seoSiteLanguage | string | "en" または "en-US" |
seoSiteLocale | string | "en_US" |
seoTwitterHandle | string | "@handle" |
seoThemeColor | string | "#1a1b23" |
seoKeywords | string | 最大 500 文字 |
その他:
| 項目 | 型 | 備考 |
|---|---|---|
availableLanguages | string | JSON 配列。選択肢:en、zh、tc、ja、es、ko、vi、de、fr、ru、id、tr、it、pt、uk、pl、nl |
analyticsScript | string | Base64 エンコード |
enableServiceDisclaimerDialog | boolean | 免責事項を表示 |
enableCampaigns | boolean | ORDER トークンキャンペーンと Points メニューを有効化 |
restrictedRegions | string | カンマ区切りの国名(例:「United States,China」) |
whitelistedIps | string | IP 許可リスト |
レスポンス
作成(201): { id, brokerId, brokerName, repoUrl, userId, createdAt }
更新(200): すべての項目を含む完全な DEX オブジェクト
主要なワークフロー
認証
Orderly One は、Orderly Network API(api.orderly.org)とは別の独自の認証システムを備えています。標準の EVM personal_sign(EIP-191)を使用します。EVM ウォレットのみ(0x アドレス)に対応しています。
{ "address": "0x..." }を指定してPOST /api/auth/nonce→{ message, nonce }- 返された
messageにpersonal_sign(EIP-191)で署名します { "address": "0x...", "signature": "0x..." }を指定してPOST /api/auth/verify→{ user: { id, address }, token }- 以降のすべてのリクエストで
Authorization: Bearer {token}を使用します(有効期限は 24 時間です) - 検証するには、
{ "address", "token" }を指定してPOST /api/auth/validate→{ valid: true/false }
Note: 卒業の「管理者ウォレットを確定する」手順では、Orderly Network API(
api.orderly.org)での認証が必要です。これは EIP-712 または Ed25519 署名を使用する別のシステムです。詳しくは、以下の卒業ワークフローをご覧ください。
DEX の作成フロー
- 上記のフィールドを含む
multipart/form-dataを作成します POST /api/dex→{ id, brokerId, repoUrl }が返されますconclusion: "success"になるまでGET /api/dex/{id}/workflow-statusをポーリングします
卒業(手数料の共有)
前提条件: brokerId: "demo" で作成した DEX(卒業済みではないこと)、および x402 の支払いに使用する Base、Arbitrum、または Ethereum 上のネイティブ USDC。
手順 1 — 手数料オプションの取得:
GET /api/graduation/fee-options → { usdc: { amount }, receiverAddress, payerAddress }
- ローコード:$100 | カスタム SDK:$10 — x402 経由で USDC により支払います
payerAddressは認証済みウォレットです。支払いに使用するウォレットと同じである必要があります
手順 2 — x402 による支払い(エージェント向け):
Authorization: Bearer を指定して POST /api/graduation/graduate?brokerId=…&makerFee=…&takerFee=…&rwaMakerFee=…&rwaTakerFee=… を実行すると、1 回のリクエストで手数料の支払いとブローカーの登録が行われます。
- 最初の POST は
payment-requiredレスポンスヘッダー(base64 JSON)とともに 402 を返します。各ネットワーク(base 8453、arbitrum 42161、ethereum 1)につき、EIP-3009 USDCtransferWithAuthorizationオプションが 1 つ提示されます - EIP-712 認証に署名し、
payment-signatureヘッダーを付けて再試行すると 200 が返されます。オンチェーンで送金が確定し(tx ハッシュはPAYMENT-RESPONSEヘッダーの.transactionフィールドにあります)、ブローカーが自動的に登録されます - 支払者にガス代はかかりません。サーバーが決済を中継します。無効なパラメーターは請求前に 400/401 を返し、支払いはキャンセルされます
- EIP-3009 の支払いウォレットは、Bearer 認証済みアカウントと同じウォレットである必要があります
- x402 クライアント(
@x402/fetch)のspendControls.maxAmountPerPaymentのデフォルトは $1 です。手数料をまかなえる額に引き上げてください - 2 段階モード:クエリパラメーターなしで POST します(Bearer は不要です。支払いが認証となります)。その後、決済 tx ハッシュと
paymentType: "usdc"を指定してverify-tx(手順 3)を呼び出します - 支払いが確定したものの卒業に失敗した場合は、
POST /api/graduation/refund{txHash, chain}(Bearer、支払者のウォレット)で返金を請求できます
手順 3 — トランザクションの検証(2 段階 x402 のみ。自動確定済みの場合はスキップ):
以下を指定して POST /api/graduation/verify-tx を実行します。
| フィールド | 説明 |
|---|---|
txHash | PAYMENT-RESPONSE ヘッダーにある決済トランザクションのハッシュ |
chain | 支払いに使用したチェーン:base、arbitrum、または ethereum |
brokerId | 希望するブローカー ID(5~15 文字、^[a-z0-9_-]+$) |
makerFee | メイカー手数料(bps、-0.5~15、0.1 刻み。負の値はリベート) |
takerFee | テイカー手数料(bps、1~15、0.1 刻み) |
rwaMakerFee | RWA メイカー手数料(bps、-0.5~15) |
rwaTakerFee | RWA テイカー手数料(bps、1~15) |
paymentType | usdc — 明示的に指定してください(デフォルトは order) |
API は、トランザクションの存在、送信者が認証済みユーザーと一致すること、受取人が正しいこと、金額が手数料を満たしていること、トランザクションが未使用であること、brokerId が未使用であることを検証します。ここでブローカー ID が作成されますが、手順 4 が完了するまで卒業は完了しません。
ステップ 4 — 管理者ウォレットを登録する(卒業を完了するために必須):
EVM ウォレット(エージェント):
GET https://api.orderly.org/v1/registration_nonce?address={yourAddress}- EIP-712 の型付きデータに署名します:
{ brokerId, chainId, timestamp, registrationNonce }(卒業時と同じ brokerId とアドレスを使用) { message, signature, userAddress }を指定してPOST https://api.orderly.org/v1/register_accountを実行します →account_id- 空の JSON ボディ
{}と Bearer を指定してPOST /api/graduation/finalize-admin-walletを実行します — 自分のウォレットを管理者として紐付けます(エージェントの場合、マルチシグのフィールドは省略します)
Solana ウォレット:
- 同じフローを使用しますが、
chainId: 900900900とし、Solana ウォレットで署名して、chainType: "SOL"を指定します
EVM マルチシグ/Gnosis Safe:
- Safe Wallet → Transaction Builder → バッチ:Vault コントラクトで
[keccak256(brokerId), userAddress]を指定してdelegateSignerを実行します - 署名者の承認を得て実行します
{ multisigAddress, multisigChainId }を指定してPOST /api/graduation/finalize-admin-walletを実行します
注: ステップ 4 の登録では Orderly One ではなく、Orderly Network API(
api.orderly.org)で認証します(認証システムが異なります:EIP-712/Ed25519)。finalize-admin-wallet自体では、Orderly One の Bearer トークンを使用します。isGraduated: trueになるまでGET /api/graduation/graduation-statusで確認してください。
卒業ステータスと手数料:
| エンドポイント | 説明 |
|---|---|
GET /api/graduation/status | 基本ステータス:{ currentBrokerId, approved } |
GET /api/graduation/graduation-status | 詳細:{ isGraduated, brokerId, isMultisig, multisigAddress } |
GET /api/graduation/fees | 現在のメイカー/テイカー/RWA 手数料率 |
GET /api/graduation/tier | Builder Staking Programme のティア |
POST /api/graduation/refund | 決済済みだが未使用の x402 支払いを回収します:{txHash, chain} |
Orderly MCP
このスキルでは Orderly MCP サーバーを参照します。インストールされていない場合は、セットアップについて orderly-onboarding スキルを参照してください。
ツール: get_orderly_one_api_info
{ endpoint: "/api/dex" }- 特定のエンドポイントの詳細{ category: "graduation" }- カテゴリー内のすべてのエンドポイント{}- API の全概要
よくある問題
| 問題 | 解決方法 |
|---|---|
| DEX のデプロイが進まない | ジョブの失敗について、/api/dex/{id}/workflow-runs/{runId} を確認します |
| ドメインが機能しない | {org}.github.io に CNAME を設定し、DNS の伝播を待ちます |
| グラデュエーションの検証に失敗する | PAYMENT-RESPONSE から決済トランザクションハッシュとチェーンを確認し、承認を待ちます |
| "Broker ID already taken" | verify-tx で別の brokerId を選択します |
| "Transaction hash already used" | 各トランザクションは一度しか使用できません(リプレイ防止)。新しい支払いを送信します |
| x402 の支払いは完了したが、ブローカーが登録されない | 2 段階で行います。決済トランザクションハッシュを指定して POST /api/graduation/verify-tx を実行します(paymentType: "usdc")。失敗した場合は、POST /api/graduation/refund を実行します |
| x402 の支払いが金額不足で拒否される | 手数料をカバーできるよう、x402 クライアントの spendControls.maxAmountPerPayment(デフォルトは $1)を引き上げます |
| "Must register EVM address" | finalize-admin-wallet を呼び出す前に、管理者ウォレットの登録(ステップ 4)を完了します |
| "Already graduated" | 各ユーザーがグラデュエーションできるのは一度だけです |
| ロゴのアップロードに失敗する | ファイルサイズの上限(プライマリは 250KB、セカンダリは 100KB)を確認します |
| 無効な CSS | 送信前に themeCSS の構文を検証します |
関連スキル
- orderly-onboarding - アカウントのセットアップとビルダーのオンボーディング
- orderly-trading-orders - 取引機能