Solana Devnet 전용 프로젝트…메인넷 자금·실제 결제 인프라용 아냐
핵심 요약
- SpendGuard 개발자가 AI 결제 요청에 적용한 정책 검증 결과와 한계를 공개했다. 일일 한도는 데이터베이스별로 적용되며, 핵심 제한을 온체인으로 옮기는 방안을 검토한다.
AI 결제 프로젝트 SpendGuard의 개발자가 애플리케이션 정책으로 시험 대상 요청의 우회를 막았다고 설명했다. 다만 모든 프롬프트 인젝션과 애플리케이션 취약점을 방어했다는 의미는 아니며, 기기를 통제하는 사용자까지 제한할 수는 없다고 선을 그었다.
개발자가 데브 커뮤니티(Dev Community)에 공개한 글에 따르면 SpendGuard의 규칙은 애플리케이션에서 집행된다. 오작동하거나 프롬프트 인젝션에 노출된 모델을 막을 수 있지만, 기기에 접근할 수 있는 사람은 키 쌍을 읽거나 정책 설정을 바꿀 수 있다. 다른 SQLite 데이터베이스로 별도 지출 장부를 만들 수도 있어 일일 한도는 전체가 아닌 데이터베이스별로 적용된다.
개발자는 핵심 제한을 온체인으로 옮기기 위해 Anchor 프로그램을 검토하겠다고 설명했다. 지출 한도와 승인 수취인을 저장하는 정책 계정, SOL을 보관하는 금고 PDA, 정책 설정과 금고 자금 충전을 맡는 소유자 권한을 두는 방식이다. 에이전트 권한은 허용된 결제만 요청하고 정책을 바꾸거나 자금을 임의 인출하지 못하도록 제한한다. 온체인 지출 명령은 이체 전에 수취인 허용 목록과 건별·일일 지출 한도를 확인하도록 설계할 구상이다.
목표는 애플리케이션이 우회되거나 에이전트 키가 탈취돼도 프로그램이 온체인 정책을 위반하는 결제를 거부하게 하는 것이다. 개발자는 현재 SpendGuard 구현이 이를 보장하지는 않는다고 명시했다. SpendGuard는 Solana Devnet 프로젝트로, 메인넷 자금이나 실제 운영 결제 인프라에 사용할 목적으로 만들지 않았다.
프로젝트는 깃허브(GitHub) 저장소에서 내려받아 cargo test로 시험할 수 있다. CLI에서 키 쌍을 생성하고 Solana Devnet faucet으로 생성된 주소에 테스트 자금을 받은 뒤 승인 수취인을 설정하면, 테스트 목적으로 ada에게 0.001 SOL을 보내라는 요청을 실행할 수 있다. 결정론적 모의 파서가 포함돼 LLM API 키 없이 결제 흐름을 살펴볼 수 있으며, 그로크(Groq)를 제공자로 설정한 OpenAI 호환 LLM 엔드포인트도 지원한다.
개발자는 프로젝트 전반에서 Claude를 페어 프로그래밍 보조 도구로 사용해 상당 부분의 코드 생성과 테스트에 도움을 받았다고 설명했다. 아키텍처 결정, 구현 문제 해결, 로컬 실행, Solana Devnet 테스트, 실패 원인 조사와 문서·구현 대조는 직접 수행했다. 돈을 다루는 생성 코드는 신뢰하기 전에 검증하고 이해해야 한다는 점도 짚었다.
댓글에서는 온체인 설계의 시간 구간 처리도 쟁점으로 제기됐다. 질링스 시큐리티(Zealynx Security) 창업자이자 스마트 계약 감사자인 카를로스(Carlos)는 DESIGN.md의 지출 누계와 구간 시작 시점에 기반한 고정 구간 방식에서는 구간 종료 1초 전과 다음 구간 시작 1초 후에 각각 한도만큼 지출할 수 있다고 지적했다. 대안으로 정책 계정에 약 200바이트 규모의 시간당 슬롯 24개를 두고, 현재 시간대의 지출을 더하면서 오래된 슬롯을 초기화하고 합계를 확인하는 방식을 제안했다. 이 경우 최악의 상황이 2초 동안 한도 두 배 지출에서 23시간 동안 한도 두 배 지출로 바뀐다는 설명이다.
카를로스는 코드의 기본값은 이동 구간 방식이지만 예제 설정 파일 spendguard.toml에는 day_boundary가 utc로 지정돼, 예제를 복사하면 더 약한 방식이 적용된다는 점도 지적했다. 서치스폿닷에이아이(SearchSpot.ai) 창업자 히텐 세티야(Hiten Sethiya)는 댓글에서 모델이 예약 의도를 파악하더라도 결제 전에는 여행자의 확인을 받는다고 설명하며, 사람이 지켜보지 않는 동안 에이전트가 돈을 쓰게 하는 데 반대했다.
