AIエージェントのレート制限:自分の速度でボットを破壊(rekt)されないために

Dev.to / 2026/5/10

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • AIトレーディングボットなどのAIエージェントは機械的な速さで取引できますが、ガードレールがなければ判断ミスや侵害時に財布を急速に空にしてしまうリスクがあります。
  • 単純なAPIのリクエスト回数制限だけでは不十分で、各トランザクションの金銭的な影響を考慮した「取引に応じた」制御が必要です。
  • WAIaaSは、時間制限付きのセッション認証、ポリシーベースのレート制限、人の承認チャネルという3層のセキュリティモデルを提案しています。
  • 複数のポリシー種別とセキュリティ階層を用意し、とりわけRATE_LIMITとSPENDING_LIMITの組み合わせで損害の上限を設けることを重視しています。
  • 目的は、破滅的な挙動を防ぎつつ、有益な取引は効率よく継続できる状態を作ることです。

AIエージェントはマシンの速度で取引を実行しますが、あなたのトレーディングボットがポートフォリオ全体を1つのブロックでYOLOしてしまうと、どうなるのでしょうか?適切なレート制限やセキュリティ制御がないと、AIエージェントはあなたが「ストップロス」と言うよりも早くウォレットを使い果たしてしまう可能性があります。ポイントはエージェントを遅くすることではありません。利益の出る取引を滞らせないまま、壊滅的な判断を防ぐインテリジェントなガードレールを追加することです。

ガードレールなしのスピードが危険な理由

AIエージェントは、チャンスを見つけて実行する点で非常に効率的です。たとえば、手動で確認するのに30秒かかるJupiterのスワップは、AIエージェントなら3秒未満で完了します。しかし、この速さは、エージェントが誤った判断をしたり、侵害されてしまった場合には負債になります。

単純な例を考えてみましょう。あなたのトレーディングエージェントが「利益が出る」裁定(アービトラージ)の機会を見つけ、あなたのSOL残高全額を担保として使うことを決めたとします。レート制限がなければ、数分のうちにこうした取引を何十回も実行し、損失を指数関数的に悪化させることになります。おかしいと気づいた時には、ウォレットが空になっているのです。

従来のAPIのレート制限(分あたりのリクエスト数)では、この問題は解決しません。各操作が与える金融的な影響を理解する、取引(トランザクション)を認識したレート制限が必要です。

3層セキュリティアプローチ

WAIaaSは、AIエージェント向けに特化して設計された3層のセキュリティモデルを実装します。セッション認証、ポリシーベースのレート制限、そして人の承認チャネルです。

レイヤー1:時間制限付きセッション認証

すべてのAIエージェントには、ウォレットへの直接アクセスではなく、時間制限のあるセッショントークンが付与されます:

curl -X POST http://127.0.0.1:3100/v1/sessions \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "ttl": 3600,
    "maxRenewals": 10,
    "absoluteLifetime": 86400
  }'

これにより、1時間で期限切れになるセッションが作成され、最大10回まで更新可能で、24時間経過後は完全に無効化されます。エージェントが暴走しても、複数のキルスイッチがあります。

レイヤー2:ポリシーベースのレート制限

WAIaaSは、4つのセキュリティティアと組み合わせられる21種類のポリシータイプを提供します。レート制限で最も重要なのは、SPENDING_LIMITと組み合わせたRATE_LIMITです:

curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "RATE_LIMIT",
    "rules": {
      "maxTransactions": 10,
      "period": "hourly"
    }
  }'

しかし、取引回数の上限だけでは不十分です。金額ベースの制御が必要です:

curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "SPENDING_LIMIT",
    "rules": {
      "instant_max_usd": 50,
      "notify_max_usd": 200,
      "delay_max_usd": 1000,
      "delay_seconds": 300,
      "daily_limit_usd": 5000
    }
  }'

これにより、4段階のセキュリティシステムが作られます:

  • INSTANT:$50未満の取引は即時に実行
  • NOTIFY:$50〜$200の取引は実行されるがアラートを送信
  • DELAY:$200〜$1000の取引は5分待機(キャンセル可能)
  • APPROVAL:$1000超の取引は人間の承認が必要

レイヤー3:デフォルト拒否トークン制御

最も重要な防御は、トークン操作に対するデフォルト拒否です。あなたが明示的に許可していないトークンには、エージェントは触れられません:

curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "ALLOWED_TOKENS",
    "rules": {
      "tokens": [
        {"address": "native:solana", "symbol": "SOL", "chain": "solana"},
        {"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "symbol": "USDC", "chain": "solana"}
      ]
    }
  }'

このポリシーがない場合、たとえ有効なセッションを持っていても、エージェントは文字通りどんなトークンも送金できません。これにより、侵害されたエージェントが想定外のトークンタイプを送金してウォレットを吸い上げようとする攻撃シナリオを防ぎます。

スマートなレート制限の実装

以下は、トレーディングエージェントのための包括的なレート制限を設定する方法です:

ステップ1:階層化された支出上限を作成する

# マイクロトランザクション(即時)
curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "SPENDING_LIMIT",
    "rules": {
      "instant_max_usd": 25,
      "notify_max_usd": 100,
      "delay_max_usd": 500,
      "delay_seconds": 900,
      "daily_limit_usd": 2000,
      "monthly_limit_usd": 10000
    }
  }'

ステップ2:取引頻度の上限を追加する

# 1時間あたり最大20回の取引
curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "RATE_LIMIT",
    "rules": {
      "maxTransactions": 20,
      "period": "hourly"
    }
  }'

ステップ3:時間ベースのトレーディングウィンドウ

返却形式: {"translated": "翻訳されたHTML"}
# 市場の取引時間中のみ取引する
curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "TIME_RESTRICTION",
    "rules": {
      "allowedHours": {"start": 9, "end": 17},
      "timezone": "UTC"
    }
  }'

手順 4: DeFi 固有の制限

レバレッジ取引では、ポジションサイズの上限を追加します。

curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: my-secret-password" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "PERP_MAX_LEVERAGE",
    "rules": {
      "maxLeverage": 3
    }
  }'

リアルタイム監視とサーキットブレーカー

エージェントがレート制限に到達した場合、WAIaaS は詳細なエラー応答を返します。

{
  "error": {
    "code": "POLICY_DENIED",
    "message": "Transaction denied by RATE_LIMIT policy: 20/20 hourly limit reached",
    "domain": "POLICY",
    "retryable": true,
    "retryAfter": 1800
  }
}

エージェントは、この状況を適切に処理できます。

import { WAIaaSClient, WAIaaSError } from '@waiaas/sdk';

try {
  const tx = await client.sendToken({
    to: 'recipient-address',
    amount: '0.5'
  });
} catch (error) {
  if (error instanceof WAIaaSError) {
    if (error.code === 'POLICY_DENIED'&& error.retryable) {
      console.log(`レート制限です。 ${error.retryAfter} 秒後に再試行します`);
      // 指数バックオフを実装する
    } else {
      console.error(`再試行不可のエラー: ${error.message}`);
      // 人のオペレーターに通知する
    }
  }
}

緊急時のコントロール

WAIaaS は複数の緊急停止を提供します。

  1. Kill Session: エージェントのアクセスを即座に取り消す
curl -X DELETE http://127.0.0.1:3100/v1/sessions/<session-id> \
  -H "X-Master-Password: my-secret-password"
  1. Cancel Pending Transactions: 遅延しているトランザクションを停止する
curl -X POST http://127.0.0.1:3100/v1/transactions/<tx-id>/cancel \
  -H "X-Owner-Signature: <signature>" \
  -H "X-Owner-Message: <message>"
  1. Policy Updates: 再起動せずにリアルタイムで制限を変更する

クイックスタート: 5 ステップでエージェントを保護する

  1. WAIaaS をインストール:
npm install -g @waiaas/cli
waiaas init
waiaas start
  1. レート制限付きウォレットを作成:
waiaas wallet create --name "trading-bot" --chain solana
  1. 支出(スパンニング)の制限を追加:
curl -X POST http://127.0.0.1:3100/v1/policies \
  -H "Content-Type: application/json" \
  -H "X-Master-Password: $(cat ~/.waiaas/recovery.key)" \
  -d '{
    "walletId": "<wallet-uuid>",
    "type": "SPENDING_LIMIT",
    "rules": {"instant_max_usd": 50, "daily_limit_usd": 1000}
  }'
  1. エージェント用のセッションを作成します:
waiaas session create --wallet-id <wallet-uuid> --ttl 3600
  1. レート制限をテストする:
# これは成功します
curl -X POST http://127.0.0.1:3100/v1/transactions/send \
  -H "Authorization: Bearer wai_sess_<token>" \
  -d '{"type": "TRANSFER", "to": "address", "amount": "0.01"}'

# これは拒否されます(上限超過)
curl -X POST http://127.0.0.1:3100/v1/transactions/send \
  -H "Authorization: Bearer wai_sess_<token>" \
  -d '{"type": "TRANSFER", "to": "address", "amount": "100"}'

レート制限は、AIエージェントを遅くすることが目的ではありません。より安全にするための仕組みです。適切なガードレールがあれば、あなたのエージェントはマシンのスピードで収益性の高い取引を実行し続けながら、壊滅的な損失からあなたを守ることができます。

より高度なセキュリティパターンについては、Building Secure AI Trading Bots: A Complete Wallet Integration GuideDocker Deployment Guide for WAIaaS: Production-Ready Setup をご覧ください。

次にやること

まずは控えめな制限から始め、エージェントの挙動に対する確信が高まるにつれて段階的に引き上げていきましょう。39のREST APIエンドポイントと7段階のトランザクション・パイプラインにより、エージェントの金融業務のあらゆる側面をきめ細かく制御できます。

AIエージェントを安全にする準備はできましたか? GitHub から始めるか、包括的なドキュメントは waiaas.ai をご覧ください。

返却形式: {"translated": "翻訳されたHTML"}