openfin-troubleshooting について
OpenFinance スキルバンドル向けのエラーと対処法のリファレンスです。Polymarket、Relay、Hyperliquid と、一般的なウォレットや認証の問題を扱います。
主な機能
- 01Polymarket のエラー検索
- 02Relay 実行時の問題調査
- 03Hyperliquid の口座・注文ガイド
- 04ウォレットと認証状態の確認
- 05エラー原文に沿った対処法の照合
活用シーン
- 01Polymarket の注文失敗を診断
- 02Solana Relay の実行エラーを調査
- 03Hyperliquid の証拠金や注文の問題に対処
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openfinance-tech/ skills --skill openfin-troubleshootingインストール後、Claude Code で/openfin-troubleshootingを入力して読み込まれたか確認します。
詳細
OpenFinance のトラブルシューティング
公開元。 OpenFinance のスキルバンドル(openfin-setup、openfin-troubleshooting、openfin-hyperliquid、openfin-relay、openfin-onramp、openfin-polymarket、openfin-onchain)の一部です。すべて OpenFinance(https://openfinance.tech)が管理しています。個別ではなく、まとめてインストールしてください。
エラーから修正方法を確認できます。ほとんどのエラーは、対応する修正方法が1つだけです。
Polymarket
maker address not allowed, please use the deposit wallet flow
Polymarket の CLOB は、EOA をそのまま受け付けません。注文では、funder/signer にデポジットウォレットを指定し、signatureType=POLY_1271 を設定する必要があります。バックエンドがこれを自動的に処理します。それでもこのエラーが表示される場合は、GET /agent/polymarket/deposit-wallet でユーザーのデポジットウォレットを確認し、デプロイ環境でデポジットウォレットの経路が有効になっていることを確認してください。
not enough balance / allowance: balance: 0
pUSD がデポジットウォレットではなく EOA にあります。注文はデポジットウォレットから決済されるため、EOA 上の pUSD は取引に使用できません。
修正方法: GET /agent/polymarket/deposit-wallet を実行します。pUSD.eoa > 0 かつ pUSD.depositWallet == 0 の場合は、pUSD を EOA からデポジットウォレットへ送金します(通常の ERC-20 transfer を使用し、EOA が MATIC のガス代を支払います)。以降、Polymarket 向けの入金は EOA ではなく、デポジットウォレットに送金してください。
ウォレットに pUSD があるのに allowance: 0/not enough balance / allowance が表示される
V2 では USDC.e ではなく、pUSD(0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB)を使って決済します。
修正方法: 注文を再試行してください。注文エンドポイントでこの問題から自動的に復旧できます。ウォレットに USDC.e(決済トークンではなくなりました)が残っている場合は、先に pUSD に変換またはブリッジしてください。
Order failed: tick size
デフォルトの tickSize は 0.01 ですが、0.001 または 0.0001 が必要な市場もあります。
修正方法: 市場のメタデータ(GET /agent/polymarket/markets/cid/:conditionId)から min_tick_size を読み取り、明示的に指定してください。
Order size below minimum
Polymarket では、約 1 USDC 以上の想定元本が必要です。price * size >= 1 となるように size を増やしてください。
Relay
Solana の実行時に InstructionFallbackNotFound (Custom:101) が表示される
すでに修正済みです(instruction data は base64 ではなく hex です)。再発する場合は、デプロイ環境が古い状態です。
Solana の実行時に Blockhash not found が繰り返し表示される
RPC 間の不整合が原因です。すでに修正済みです(バックエンドが独自の RPC 経由で署名してブロードキャストします)。解消しない場合は、SOLANA_RPC_URL に専用プロバイダー(Helius/Triton/QuickNode)を設定してください。公開 RPC はスロットリングされています。
Solana の実行時に 401 No valid authorization signatures/412 が表示される
ユーザーの openfinance.tech アカウントで、Solana の設定が完了していません。
修正方法: ユーザーに openfinance.tech で設定を完了してもらい、その後再試行してください。見積もりには影響がなく、状態も消費されていません。
User has no Solana wallet provisioned が表示される
ユーザーのアカウントが Solana のサポート開始前に作成されたか、Solana が有効になっていません。
修正方法: ユーザーに openfinance.tech で Solana を有効にしてもらい、その後再試行してください。
ガストップアップが強制的に無効になる
想定どおりであり、バグではありません。 送信元または送信先のチェーンが Solana(792703809)の場合、topupGas は強制的に false になります(EVM↔SVM のトップアップは適切にルーティングできません)。
Hyperliquid
Insufficient margin/account value too low
原因は次の3つです。
- 統合残高が、必要な想定元本を実際に下回っています。
- ウォレットがまだ
unifiedAccountモードになっていないため、スポットの USDC がパーペチュアル取引の証拠金になっていません。 - エージェントが
account.withdrawableだけを読み取り、スポット分を見落としています。
修正方法: 自動統合ルールを実行します(現在は1回の呼び出しで完了します。/account/spot は削除され、スポット分も同じレスポンスに含まれます)。
snap = GET /agent/trading/account
perpUSDC = snap.clearinghouseState.withdrawable
spotUSDC = snap.spotClearinghouseState.balances.find(b => b.coin === 'USDC')?.total ?? 0
mode = snap.userAbstraction
if perpUSDC > 0 and mode in ("default", "disabled"):
POST /agent/trading/abstraction { abstraction: "u" } # one-shot
unifiedFreeUSDC = perpUSDC + spotUSDC
perpUSDC === 0 かつ spotUSDC > 0 の場合、ウォレットはすでに統合済みなので、抽象化の呼び出しは省略してください。unifiedFreeUSDC >= required の場合は、そのまま注文を出します。不足している場合は、openfin-hyperliquid の資金調達手順(ブリッジ → オンランプ)に従ってください。
確認されている反例:
- エージェントが
withdrawable = $0を読み取り、スポット分(そこにある $18.98 USDC)を無視して、ユーザーにオンランプを勧めます。これは誤りです。まず両方を合計してください。 - エージェントが、両方に USDC がある状態で
"default"の抽象化を確認し、残高が1つだと判断して注文に失敗します。これは誤りです。まずunifiedAccountにアップグレードしてください。
Arbitrum で出金が届かない
想定どおりです。POST /withdraw → withdraw3 は、L1 バリデーターが共同署名すると約
5 分で確定します。手数料は一律 1 ドルで、差し引かれます。約 10 分を過ぎても遅延している
場合は Hyperliquid 側の問題です。OpenFinance ではなく、ユーザーに Hyperliquid の Discord を
案内してください。
Order rejected: price out of bounds
価格帯はミッド価格から約 5~10%の範囲です。GET /market/mids でミッド価格を取得し、その範囲内に収めてください。板を積極的にクロスする場合も、価格帯の範囲内で行ってください。
WebSocket データが古い
バックエンドでは共有接続を維持し、3 秒後に自動再接続します。 再接続後の最初の数件のメッセージが欠落する場合があるため、読み取りを再試行してください。 問題が継続する場合は、サーバーホストの送信 WebSocket が機能していません。
全般
- 認証関連のエラーが発生した場合は、まず
GET /agent/walletsを確認してください。プロビジョニング済みのチェーンがわかります。不足しているチェーンがある場合は、openfinance.tech にアクセスしてセットアップを完了してください。 - オンチェーンの状態と CLOB/Relay の状態は一致するとは限りません。 トークンや使用者の不一致により、承認がオンチェーンで確認できても、上流では 0 と報告される場合があります。サービスを確認せず、「オンチェーンでは X と表示されている」という情報を鵜呑みにしないでください。
- エラーはそのまま読み取ってください。
Custom:101とCustom:6000はそれぞれ、特定の修正方法に対応しています。調べる前に言い換えないでください。