Communitygithub.com

LLM 트레이딩 에이전트 보안

지갑 또는 트랜잭션 권한을 가진 자율 트레이딩 에이전트를 위한 보안 패턴. 프롬프트 인젝션, 지출 한도, 사전 전송 시뮬레이션, 서킷 브레이커, MEV 보호, 키 관리 등을 다룹니다. 자율 에이전트가 지갑이나 트랜잭션 권한을 가지고 있을 때 한도, 시뮬레이션, 키 관리에 대한 검토가 필요할 때 사용하세요.

LLM 트레이딩 에이전트 보안란 무엇인가요?

이 스킬은 자율 트레이딩 에이전트를 위한 필수 보안 패턴을 제공합니다. 일반 LLM 애플리케이션보다 훨씬 엄격한 위협 모델을 가지는 트레이딩 에이전트에서 프롬프트 인젝션, 부적절한 툴 사용 등으로 인한 자산 손실을 방지하는 데 중점을 둡니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, 핵심 방어 계층으로 프롬프트 위생, 하드 지출 한도, 사전 전송 시뮬레이션, 서킷 브레이커, 지갑 격리, MEV 보호 등을 제시합니다. 각 방어 계층은 독립적으로 작동하며 단일 체크만으로는 충분하지 않다는 철학을 바탕으로, 실제 코드 예제와 함께 구체적인 구현 방법을 설명합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/llm-trading-agent-security

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

LLM 트레이딩 에이전트 보안은(는) 무엇을 하나요?

자율 트레이딩 에이전트는 일반 LLM 앱보다 훨씬 엄격한 위협 모델을 가집니다. 인젝션 또는 잘못된 툴 경로가 직접 자산 손실로 이어질 수 있습니다.

사용 시기

  • 트랜잭션에 서명하고 전송하는 AI 에이전트를 구축할 때
  • 트레이딩 봇 또는 온체인 실행 도우미를 감사할 때
  • 에이전트를 위한 지갑 키 관리를 설계할 때
  • LLM에 주문 배치, 스왑 또는 자금 운영 접근 권한을 부여할 때

작동 방식

방어 계층을 쌓으세요. 단일 체크만으로는 충분하지 않습니다. 프롬프트 위생, 지출 정책, 시뮬레이션, 실행 한도, 지갑 격리를 독립적인 제어 항목으로 취급하세요.

예제

프롬프트 인젝션을 금융 공격으로 취급

import re

INJECTION_PATTERNS = [
    r'이전 (모든|지시) 무시',
    r'새로운 (작업|지시|명령)',
    r'시스템 프롬프트',
    r'보내기 .{0,50} 0x[0-9a-fA-F]{40}',
    r'전송 .{0,50} 다음 주소로',
    r'승인 .{0,50} 다음을 위해',
]

def sanitize_onchain_data(text: str) -> str:
    for pattern in INJECTION_PATTERNS:
        if re.search(pattern, text, re.IGNORECASE):
            raise ValueError(f"잠재적 프롬프트 인젝션: {text[:100]}")
    return text

토큰 이름, 페어 라벨, 웹훅, 소셜 피드 등을 실행 가능한 프롬프트에 무분별하게 주입하지 마세요.

하드 지출 한도

from decimal import Decimal

MAX_SINGLE_TX_USD = Decimal("500")
MAX_DAILY_SPEND_USD = Decimal("2000")

class SpendLimitError(Exception):
    pass

class SpendLimitGuard:
    def check_and_record(self, usd_amount: Decimal) -> None:
        if usd_amount > MAX_SINGLE_TX_USD:
            raise SpendLimitError(f"단일 트랜잭션 ${usd_amount}가 최대 ${MAX_SINGLE_TX_USD}를 초과")

        daily = self._get_24h_spend()
        if daily + usd_amount > MAX_DAILY_SPEND_USD:
            raise SpendLimitError(f"일일 한도: ${daily} + ${usd_amount} > ${MAX_DAILY_SPEND_USD}")

        self._record_spend(usd_amount)

전송 전 시뮬레이션

class SlippageError(Exception):
    pass

async def safe_execute(self, tx: dict, expected_min_out: int | None = None) -> str:
    sim_result = await self.w3.eth.call(tx)

    if expected_min_out is None:
        raise ValueError("전송 전 min_amount_out 필수")

    actual_out = decode_uint256(sim_result)
    if actual_out < expected_min_out:
        raise SlippageError(f"시뮬레이션: {actual_out} < {expected_min_out}")

    signed = self.account.sign_transaction(tx)
    return await self.w3.eth.send_raw_transaction(signed.raw_transaction)

서킷 브레이커

class TradingCircuitBreaker:
    MAX_CONSECUTIVE_LOSSES = 3
    MAX_HOURLY_LOSS_PCT = 0.05

    def check(self, portfolio_value: float) -> None:
        if self.consecutive_losses >= self.MAX_CONSECUTIVE_LOSSES:
            self.halt("연속 손실 너무 많음")

        if self.hour_start_value <= 0:
            self.halt("hour_start_value 값 오류")
            return

        hourly_pnl = (portfolio_value - self.hour_start_value) / self.hour_start_value
        if hourly_pnl < -self.MAX_HOURLY_LOSS_PCT:
            self.halt(f"시간당 PnL {hourly_pnl:.1%} 임계값 아래")

지갑 격리

import os
from eth_account import Account

private_key = os.environ.get("TRADING_WALLET_PRIVATE_KEY")
if not private_key:
    raise EnvironmentError("TRADING_WALLET_PRIVATE_KEY가 설정되지 않음")

account = Account.from_key(private_key)

필요한 세션 자금만 있는 전용 핫월렛을 사용하세요. 에이전트를 주요 재무 지갑에 연결하지 마세요.

MEV 및 마감일 보호

import time

PRIVATE_RPC = "https://rpc.flashbots.net"
MAX_SLIPPAGE_BPS = {"stable": 10, "volatile": 50}
deadline = int(time.time()) + 60

배포 전 체크리스트

  • 외부 데이터는 LLM 컨텍스트에 진입하기 전에 위생 처리되었는가?
  • 지출 한도는 모델 출력과 독립적으로 적용되는가?
  • 트랜잭션 전송 전에 시뮬레이션되는가?
  • min_amount_out이 필수인가?
  • 서킷 브레이커가 손실 또는 유효하지 않은 상태에서 중단되는가?
  • 키는 환경 변수나 시크릿 관리자에서 가져오며, 코드나 로그에 절대 노출되지 않는가?
  • 적절한 경우 프라이빗 멤풀 또는 보호된 라우팅을 사용하는가?
  • 슬리피지와 마감일이 전략별로 설정되는가?
  • 모든 에이전트 결정이 성공적인 전송뿐만 아니라 감사 로그에 기록되는가?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

관련 스킬