규제 컴플라이언스를 위한 지출 한도 구현

intermediate agents 15 min

MAWS에서 에이전트의 지출 한도를 설정하고 사전 검사로 시험한 뒤, 무엇이 이를 강제하고 무엇이 강제하지 않는지 확인합니다.

학습 목표

  • ✓에이전트의 지출 한도를 설정하는 방법(IdentityRegistry에 저장되고 MAWS가 강제).
  • ✓정책 사전 검사를 사용하여 한도를 테스트하는 방법.
  • ✓MAWS와 체인의 PCL이 각각 위반을 어떻게 처리하는지.

사전 요구사항

필요 도구

MCP Client
AI 에이전트가 예산을 넘지 않도록 IdentityRegistry 레코드에 spendingLimit을 설정합니다. MAWS는 무엇이든 서명하기 전에 이 한도를 검사합니다. 체인은 이 값을 읽지 않으므로, 에이전트 지갑 키로 MAWS를 거치지 않고 보낸 트랜잭션은 이 한도에 묶이지 않습니다.
1

1. 정책 설정

policy.set을 사용하여 트랜잭션당 100 OKRW 한도를 설정합니다.

LLM 도구 호출

policy.set json
{
  "agentId": "<agent-id>",
  "spendingLimit": "100"
}
2

2. 사전 검사로 테스트

전송을 시도하기 전에 policy.preflight를 사용하여 150 OKRW 전송이 허용되는지 확인합니다.

LLM 도구 호출

policy.preflight json
{
  "agentId": "<agent-id>",
  "to": "0xRandomAddress",
  "amount": "150"
}
참고: 사전 검사는 Amount 150 OKRW exceeds spending limit 100 OKRW라는 이유와 함께 policyCheck.allowed: false와 canTransact: false를 반환합니다.
3

3. 전송 시도

에이전트가 사전 검사를 무시하고 150 OKRW로 transfer.send를 호출하면 MCP 서버는 오프체인에서 이를 차단하고 POLICY_REJECTED ToolError를 반환합니다. transfer.send는 정책보다 잔액을 먼저 검사하므로, 이 오류를 보려면 에이전트가 150 OKRW 이상을 보유해야 합니다. 잔액이 그보다 적으면 INSUFFICIENT_BALANCE를 대신 반환합니다.

LLM 도구 호출

transfer.send json
{
  "agentId": "<agent-id>",
  "to": "0xRandomAddress",
  "amount": "150"
}

마무리

이제 MAWS는 한도를 넘는 전송을 서명하기 전에 거부합니다. 이 한도를 강제하는 것은 그것뿐이며, 어떤 체인 모듈도 spendingLimit을 읽지 않습니다. 체인이 직접 강제하는 한도가 필요하면 TransferLimit 값(atokrw 단위의 32바이트 uint256)을 저장합니다. 다만 체인은 AGENT_OKRW_TRANSFER_LIMIT_POLICY가 설정된 곳에서만 이 값을 강제하며, 테스트넷의 전역 정책에는 이 정책이 들어 있지 않습니다. pcl-template-agent-okrw-transfer-limit-policy를 참고합니다.
ESC
검색어를 입력하세요