このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)
6. 上級者向けトピック&FAQ
このセクションでは、高度な統合テクニック、ベストプラクティス、トラブルシューテ ィングのヒント、KaiaのGas Abstraction(GA)機能に関するよくある質問について説明します。 これは、実装を最適化し、スムーズなユーザー・エクスペリエンスを確保したい開発者向けに設計されている。
6.1 ベストプラクティス
トピック | 推薦 | 備考 |
---|---|---|
**スリッページ | getAmountIn()`は、トークンの揮発性が高くない限り、**0.5 % (50 bps)**で開始する。 | 0.5%はカイアのリファレンスコードに示されている事実上のデフォルトです。 |
**許容範囲 | ERC-20の許容量をキャッシュし、**許容量>0のときに ApproveTx`**をスキップする。 | KIP-247では、承認がすでに存在する場合、2-txバンドル(Lend + Swap)を許可している。 |
**バッチ投入 | kaia_sendRawTransactions`(配列ペイロード)を使用して、ApproveTx + SwapTxを一緒にプッシュし、プールの競合状態を防ぐ。 | 単一tx呼び出し(eth_sendRawTransaction )は動作するが、2番目のtxが先にノードに到達すると、nonce/static-ruleチェックに失敗する。 |
**セキュリティ | a) KaiaのドキュメントにあるGaslessSwapRouter (GSR)のアドレスをハードコードする。 b) スワップを構築する前に、例えばtry/catchの中で await router.dexAddress(token) を実行するか、getSupportedTokens() から返されるリストをチェックすることで、サポートを確 認する。 | フィッシング契約やサポートされていないトークンがGAフローを乗っ取るのを防ぎます。 |
KAIAを使用しない場合のガス試算 | 例えば、eth_estimateGas(txObj, 'latest', { [from]:{balance: '0x…' }}) . | 口座が本当に0KAIAの場合、「残高不足」エラーを回避。 |
6.2 トラブルシューティング
症状 | 正当な理由 | 推奨される修正 |
---|---|---|
**未採掘のバンドル | a) token ホワイトリストに載っていない。 b) minAmountOut がきつすぎて、バンドル全体が戻される。 | - 最初にサポートを確認してください:または** getSupportedTokens().includes(token) 署名の前に。- slippageBps を増やすか、 amountIn`をジャストインタイムで再クオートする。 |
INSUFFICIENT_OUTPUT_AMOUNT を戻す。 | 提示と実行の間に価格が変更されたため、GSRチェックamountReceived >= minAmountOut が失敗した。 | 現在のプール準備金で getAmountIn() を再実行し、より高い minAmountOut またはより広いスリッページで SwapTx を再構築する。 |
ノードはTXを拒否する(「資金不足」)*。 | GaslessApproveTxのみが送信された。 バランスチェックがスキップされ、対になるSwapTxが欠落しているため、提案者はLendTx**をインジェク トすることはなく、トランザクションは持っていないKAIAを消費する。 | 常に ApproveTx と SwapTx を同じバッチ で kaia_sendRawTransactions 経由で送信するか、approveRequired == false を確認して、2-tx バンドルで送信できるようにしてください。 |
バンドル内の不一致について | 外部dAppはGAバンドルが採掘される前に次のnonceを消費する通常のtxを送信した。 | 署名の直前に getTransactionCount() をクエリする; nonce が移動した場合、両方の tx オブジェクトを再構築する。 |
klay_sendRawTransactions → "未定義のTXタイプ"`。 | あなたは、Ethereumタイプのみをサポートする**kaia_…**エンドポイントを通じて、Kaia固有のtxタイプ(例えば、0x30)をバッチ送信しようとしました。 | kaia_sendRawTransactions で GA バンドルを送信し、 klay_sendRawTransaction` で 0x30 AppTx をブロードキャストする。 |
6.3 FAQ
GAはメインネットで利用できますか?
はい、GAは現在Kairos testnetとmainnetの両方でライブです。
スワップに必要なトークンが足りない場合はどうなりますか?
SwapTxはオンチェーンで失敗するが、KIP-245のアトミックバンドルにより、バンドル全体が元に戻され、ブロックから除外される。 ユーザーは資金を失うことなく、オンチェーンの状態も変化しない。
どのトークンがどれだけガソリンと交換されたかを確認するにはどうすればよいですか?
swapForGas コールが成功するたびに、
GaslessSwapRouter` から SwappedForGas イベントが発生する。
できる:
- KaiaScanでルーターアドレス(contract-addresses doc参照)を調べ、Eventsタブを開きます。
- イベントログに表示されている
token
、amountIn
、amountOut
、amountRepay
フィ ールドをデコードする。
オンチェーンでデータが必要な場合は、インデクサまたはdAppバックエンドでSwappedForGas
をリッスンする。
ノードはGAを無効にできますか?
個々のノードはGAを無効にすることができるが、デフォルトでは有効になっている。 あるノードがGAを無効にしている場合、トランザクションは最終的にGAをサポートする他のノードで処理される。
ガス抜きはブロックの速度を落とすのか?
そうだ。 KIP-245では、バンドルは250ミリ秒/ブロックの_実行タイムアウト_チェックから除外されるため、EVMは一度開始したバンドル全体の処理を終了することができる。 GA取引は、よく知られたERC20の承認とGSRのスワップ操作に限定されているため、妥当な時間だけ実行される。 したがって、GAバンドルがチェーンのブロックタイム予算を危険にさらすことはない。