본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 30. 04:11

이제 어떤 에이전트나 LLM도 지갑을 소유하고 NLP를 통해 EVM 트랜잭션을 수행할 수 있습니다

요약

Skillware의 새로운 'evm_tx_handler' 스킬을 통해 AI 에이전트가 자연어로 EVM 체인에서 직접 트랜잭션을 수행할 수 있게 되었습니다. LLM은 의도를 파싱하고 Python 기반의 스킬이 결정론적인 실행을 담당하여 안전한 온체인 거래를 지원합니다.

핵심 포인트

  • AI 에이전트가 자체 EVM 지갑을 보유하고 온체인 스왑 가능
  • 자연어 의도를 구조화된 JSON으로 변환하여 트랜잭션 실행
  • LLM의 환각을 방지하기 위해 결정론적인 Python 로직 사용
  • Skillware 프레임워크를 통한 에이전트 스킬 패키징 및 배포

이제 당신의 에이전트가 지갑을 소유할 수 있습니다 — Ethereum, Base 및 기타 EVM 체인에서 자연어를 통한 온체인 스왑(on-chain swaps).

대부분의 에이전트 데모는 체인을 읽는 단계에서 멈춥니다. 토큰에 대해 질문하면 모델이 블로그 포스트를 요약하고, 모두가 박수를 치지만, 온체인에서는 아무런 움직임도 일어나지 않습니다.

Skillware의 새로운 defi/evm_tx_handler 스킬은 다른 루프를 목표로 합니다: 당신의 에이전트가 자체 EVM 지갑을 보유하고, 평이한 언어로 된 거래 의도를 구조화된 JSON으로 변환하며, Uniswap V2 스왑 견적을 내고, 미리보기를 보여준 뒤 — 확인 후에만 — 서명하고 브로드캐스트(broadcast)합니다. MetaMask 팝업도 필요 없고, 블록 익스플로러(block explorer)에 calldata를 붙여넣을 필요도 없습니다. LLM은 자연어 상태를 유지하고, 스킬은 결정론적인(deterministic) Python 상태를 유지합니다.

이 포스트에서는 이것이 실제로 어떻게 작동하는지, Skillware가 어떻게 결합되는지, 그리고 의심스러운 곳으로 자금을 보내기 전에 지갑 스크리닝(wallet screening)과 어떻게 체이닝(chaining)할 수 있는지 살펴봅니다.

Skillware 요약

Skillware는 **에이전트 스킬(agent skills)**을 작은 라이브러리를 패키징하는 방식과 동일하게 패키징하기 위한 오픈 소스 Python 프레임워크입니다: 하나의 폴더, 하나의 컨트랙트(contract)로 다양한 제공자(provider)에서 작동합니다.

각 스킬은 다음과 같은 번들(bundle)로 구성됩니다:

  • skill.py — 결정론적인 로직 (execute()), 환각(hallucination)이 있는 수학 계산 없음
  • manifest.yaml — 도구 스키마(tool schema), 환경 변수(env vars), 헌법(constitution)
  • instructions.md — _모델_이 도구를 사용하는 방법 (흐름, 예외 케이스, 안전성)
  • test_skill.py — CI에서 실행되는 번들 테스트

스킬을 한 번 로드하면 SkillLoader를 통해 Gemini, Claude, OpenAI 또는 다른 모델에 맞게 조정할 수 있으며, instructions.md를 시스템 컨텍스트(system context)로 전달하고 도구 호출을 skill.execute(...)에 연결하면 됩니다. 모든 곳에서 동일한 패턴이 적용됩니다 — 소개(introduction)에이전트 루프 가이드(agent loops guide)를 참조하세요.

그러한 분리는 DeFi (탈중앙화 금융)에서 매우 중요합니다. 모델은 _“Base 네트워크에서 USDC로 DEGEN 10개 구매”_라는 문장을 파싱(parsing)하지만, 스킬(skill)은 자유 형식의 텍스트를 전혀 파싱하지 않습니다. 스킬은 오직 구조화된 action + intent만을 수용하며, 에이전트가 인간에게 보여줄 수 있는 JSON을 반환합니다.

evm_tx_handler: 쉬운 용어로 설명하는 아키텍처 (architecture)

Registry ID: defi/evm_tx_handler

Issuer: @Hendobox · catalog page

이 스킬은 개인용 MetaMask나 금고(treasury)가 아닌, **전용 에이전트 지갑 (dedicated agent wallet)**을 중심으로 구축되었습니다. 새로운 키를 생성하고 소량의 자금을 충전한 뒤, .env 파일에 AGENT_WALLET_PRIVATE_KEY로 설정하십시오. 규정은 명확합니다: “도구 인자(tool args), YAML, 또는 로그에 키를 절대 전달하지 마십시오.”

내부적으로 EvmTxHandlerSkilldata/ 디렉토리에서 YAML 레지스트리(registries)를 로드합니다:

  • chains.yaml — 현재 Ethereum mainnetBase (체인 ID, RPC 환경 변수 키, 검증된 Uni V2 라우터 주소)
  • tokens.yaml — 체인별 심볼(symbol) → 컨트랙트(contract)
  • addressbook.yaml — 전송을 위한 인간용 라벨(human labels) → 주소(addresses)

장기 기본값(기본 체인, 슬리피지(slippage), confirm_before_send, max_trade_usd)은 config.yaml에 저장됩니다 (config.yaml.example에서 복사 가능)).

에이전트 vs 스킬 (정신 건강을 지켜주는 분리)

스킬의 instructions.md 내용 중:

사용자 (에이전트)스킬
자연어를 부분적인 intent JSON으로 파싱intent를 설정(config) 및 YAML 레지스트리와 병합
......

따라서 NLP (자연어 처리) 계층은 LLM (대규모 언어 모델)이 담당합니다. 서명(signing) 계층은 스킬 내부의 Web3.py이며, 채팅 스레드가 아닌 환경 변수로부터 에이전트 지갑 키를 사용합니다.

실제로 호출하는 액션 (Actions)

매니페스트(manifest)는 여덟 가지 작업(resolve, quote, preview, execute, transfer, balances, wallet_info, update_preferences)을 정의합니다.

A 전형적인 구매 흐름 (buy flow) (스킬 문서 기준):

  1. 사용자: “Base 체인에서 USDC로 Degen 10개 구매해줘.”
  2. 에이전트가 다음과 같은 의도(intent)로 resolve를 호출합니다:
{
    "side": "buy",
    "chain": "base",
...
  1. 만약 spend_asset이 누락되었다면, 스킬(skill)은 missing_fields를 반환하며 — 에이전트는 사용자에게 질문한 뒤 과정을 계속합니다.
  2. quote / preview — 실시간 Uni V2 수학 연산, COINGECKO_API_KEY를 설정한 경우 CoinGecko를 통한 선택적 USD 가격 정보 제공.
  3. 사용자가 평문(plain language)으로 승인합니다.
  4. **동일한 의도(intent)**와 **confirmed: true**를 사용하여 execute를 실행합니다.

중요한 뉘앙스 (놓치기 쉬운 부분): execute는 방송(broadcast) 시점에 온체인에서 다시 견적(re-quote)을 냅니다. 미리보기(Preview) 금액은 차이가 발생할 수 있습니다. 스킬은 확인(confirmation) 직전에 quote 또는 preview를 호출하라고 경고합니다. 5분 전처럼 미리 호출하지 마세요.

ERC20 지출의 경우, approve 트랜잭션 후 스왑(swap)을 진행하는 **2단계 흐름(two-step flow)**이 발생할 수 있습니다. 응답에 approve_tx_hash가 포함되어 있다면, 사용자에게 두 해시(hash)가 모두 처리되었음을 알려주세요.

복사해서 붙여넣기: 스킬을 로드하고 Gemini 루프 실행하기

Skillware와 의존성(web3>=6)을 설치하고, RPC URL과 에이전트 지갑 키를 설정한 후 다음을 실행하세요:

import os
import google.genai as genai
from google.genai import types
...

프롬프트에 키를 넣지 마세요. MetaMask도 필요 없습니다. 모델은 사용자의 개인 키(private key)를 절대 볼 수 없습니다. 오직 스킬만이 환경 변수에서 AGENT_WALLET_PRIVATE_KEY를 읽습니다.

메인넷 없이 흐름을 테스트하고 싶으신가요? 리포지토리(repo)에 실행 가능한 예제가 포함되어 있습니다:

EVM_TX_HANDLER_EXAMPLE_DEMO=1 python examples/gemini_evm_tx_handler.py

examples index에 있는 examples/gemini_evm_tx_handler.pyexamples/claude_evm_tx_handler.py를 확인해 보세요.

안전 장치 (나중에 덧붙이는 것이 아니라 스킬에 내장됨)

에이전트가 온체인에서 무모하게 행동(YOLO)하지 않도록 스킬이 강제하는 몇 가지 사항들입니다:

  • confirm_before_sendconfirmed: true가 될 때까지 execute / transfer가 차단됨
  • 잔액 사전 점검 (Balance pre-checks) — 브로드캐스트(broadcast) 전 잔액이 부족할 경우 status: insufficient_balance 반환
  • max_trade_usd — 한도(cap)가 설정되어 있으나 USD 가격을 사용할 수 없는 경우, 안전을 위해 실패(fail closed) 처리
  • 헌법 (Constitution) — 전용 지갑만 사용, 금융 조언(financial advice) 금지, RPC 또는 레지스트리(registry) 항목 누락 시 안전을 위해 실패(fail closed) 처리

이 스킬 자체는 알려지지 않은 주소로 큰 금액을 보내기 전에 finance/wallet_screening과 함께 사용할 것을 권장합니다. 스크리닝(screening)은 단 한 번의 execute() 호출 내에서 로컬로 실행됩니다 (제재 대상 여부, 악성 상호작용 횟수, PnL 컨텍스트 등). 이것은 자연스러운 **체인(chain)**입니다: 먼저 수신자 또는 거래 상대방의 지갑을 스크리닝하고, 보고서가 수용 가능한 수준일 경우에만 트랜잭션 핸들러(tx handler)에서 transfer 또는 execute를 호출합니다.

동일한 에이전트 루프, 두 개의 도구, 하나의 대화:

  1. 사용자: “0.5 ETH를 0xABC…로 보내줘. 하지만 먼저 안전한지 확인해줘.”
  2. 에이전트가 해당 주소로 wallet_screening을 호출합니다.
  3. 에이전트가 summary.sanctioned_entity_match, summary.malicious_interaction_count 등을 요약합니다.
  4. 깨끗한 상태이고(사용자가 여전히 진행을 원하는 경우), 에이전트가 evm_tx_handler → 미리보기와 함께 transfer 호출 → 사용자가 확인 → confirmed: true.

두 스킬 모두 동일한 SkillLoader 패턴을 통해 로드됩니다. 즉, 제공자별 도구 JSON을 처음부터 다시 작성하는 것이 아니라 기능을 조합(composing)하는 것입니다.

한계 (솔직하게)

현재 이 스킬은 Ethereum + Base 네트워크의 Uniswap V2 전용입니다 (data/chains.yaml 참조). 아직 레지스트리에 브릿지(bridge), 애그리게이터(aggregator), Polygon 라우터(router)가 없습니다. 체인을 추가하는 것은 YAML 설정과 검증 작업이지, 마법 같은 NLP(자연어 처리)가 아닙니다.

자연어는 여전히 잘못 파싱(mis-parsed)될 수 있습니다. 프리뷰 드리프트(Preview drift)는 실제로 존재하며, 시장 리스크(Market risk) 또한 실재합니다. 이 기술은 구조(structure), 서명(signing), 그리고 가드레일(guardrails)을 제공하지만, 거래가 타당한지에 대한 인간의 판단을 대체하지는 않습니다.

다음 단계

만약 지금까지 제공자(provider)마다 일회성 Web3 도구들을 연결해 왔다면, 이것이 바로 또 다른 경로입니다. 하나의 스킬 번들(skill bundle), 어떤 에이전트든 사용 가능, 에이전트가 실제로 제어하는 하나의 지갑 — 그리고 필요할 때 체인으로 연결되는 프리뷰(previews), 확인(confirmations), 그리고 스크리닝(screening)까지 제공합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0