Policy Management
이 문서는 Operator(관리자)를 위한 문서입니다. AI 에이전트 접근은 sessionAuth로 제한됩니다.
정책 생성/수정/삭제 및 16개 정책 타입 전체 레퍼런스입니다. 정책은 지갑 운영에 대한 보안 규칙을 정의합니다.
Base URL
http://localhost:3100
1. 정책 CRUD 엔드포인트
POST /v1/policies -- 정책 생성 (masterAuth)
curl -s -X POST http://localhost:3100/v1/policies \
-H 'Content-Type: application/json' \
-H 'X-Master-Password: <password>' \
-d '{
"walletId": "<wallet-uuid>",
"type": "SPENDING_LIMIT",
"rules": {"instant_max": "100000000", "notify_max": "500000000", "delay_max": "1000000000"},
"priority": 0,
"enabled": true
}'
| Parameter | Type | Required | Description |
|---|---|---|---|
walletId |
UUID | No | 대상 지갑. 생략 시 글로벌 정책. |
type |
string | Yes | 16개 정책 타입 중 하나. |
rules |
object | Yes | 타입별 규칙 객체. |
priority |
integer | No | 높을수록 우선. 기본값: 0. |
enabled |
boolean | No | 활성 여부. 기본값: true. |
network |
string | No | 네트워크 범위 (예: "ethereum-mainnet" 또는 CAIP-2 "eip155:1"). |
PUT /v1/policies/:id -- 정책 수정 (masterAuth)
curl -s -X PUT http://localhost:3100/v1/policies/<policy-uuid> \
-H 'Content-Type: application/json' \
-H 'X-Master-Password: <password>' \
-d '{"rules": {"instant_max": "200000000"}, "enabled": true}'
DELETE /v1/policies/:id -- 정책 삭제 (masterAuth)
curl -s -X DELETE http://localhost:3100/v1/policies/<policy-uuid> \
-H 'X-Master-Password: <password>'
2. 정책 타입 (16 Types)
a. SPENDING_LIMIT
트랜잭션 금액에 따른 보안 티어 할당. 금액은 체인의 최소 단위(lamports, wei)의 digit string.
{
"instant_max": "100000000",
"notify_max": "500000000",
"delay_max": "1000000000",
"delay_seconds": 300,
"instant_max_usd": 10,
"notify_max_usd": 100,
"delay_max_usd": 1000,
"daily_limit_usd": 500,
"monthly_limit_usd": 5000,
"token_limits": {
"native:solana": {"instant_max": "1", "notify_max": "10", "delay_max": "50"}
}
}
티어 할당: Amount <= instant_max -> INSTANT, <= notify_max -> NOTIFY, <= delay_max -> DELAY, > delay_max -> APPROVAL.
b. WHITELIST
허용된 수신 주소 목록. 목록에 없는 주소로의 전송은 차단됩니다.
{"allowed_addresses": ["<address1>", "<address2>"]}
c. TIME_RESTRICTION
허용된 시간 창. 시간 외 트랜잭션은 차단됩니다.
{"allowedHours": {"start": 9, "end": 17}, "timezone": "UTC"}
d. RATE_LIMIT
기간당 최대 트랜잭션 수.
{"maxTransactions": 10, "period": "hourly"}
e. ALLOWED_TOKENS
TOKEN_TRANSFER 허용 토큰. Default deny: 목록에 없는 토큰은 차단.
{"tokens": [{"address": "<mint>", "symbol": "USDC", "chain": "solana"}]}
f. CONTRACT_WHITELIST
CONTRACT_CALL 허용 컨트랙트. Default deny: 목록에 없는 컨트랙트는 차단.
{"contracts": [{"address": "<contract>", "name": "Uniswap V3 Router"}]}
g. METHOD_WHITELIST
허용된 컨트랙트 함수 셀렉터.
{"methods": [{"contractAddress": "<addr>", "selectors": ["0xa9059cbb"]}]}
h. APPROVED_SPENDERS
APPROVE 허용 spender. Default deny: 목록에 없는 spender는 차단.
{"spenders": [{"address": "<spender>", "name": "Uniswap Router", "maxAmount": "1000000000"}]}
i. APPROVE_AMOUNT_LIMIT
최대 승인 금액 및 무제한 승인 차단.
{"maxAmount": "1000000000", "blockUnlimited": true}
j. APPROVE_TIER_OVERRIDE
APPROVE 트랜잭션의 보안 티어 강제 지정.
{"tier": "APPROVAL"}
k. ALLOWED_NETWORKS
허용 네트워크 목록. 목록에 없는 네트워크로의 트랜잭션은 차단.
{"networks": [{"network": "ethereum-sepolia"}, {"network": "polygon-amoy"}]}
l. X402_ALLOWED_DOMAINS
x402 자동 결제 허용 도메인. Default deny.
{"domains": ["api.example.com", "*.openai.com"]}
m. ERC8128_ALLOWED_DOMAINS
ERC-8128 HTTP 서명 허용 도메인. Default deny.
{"domains": ["api.example.com", "*.service.io"]}
n. REPUTATION_THRESHOLD
ERC-8004 온체인 평판 점수 기반 티어 에스컬레이션.
{
"min_score": 50,
"below_threshold_tier": "APPROVAL",
"unrated_tier": "APPROVAL",
"check_counterparty": true
}
o. VENUE_WHITELIST
오프체인 venue(거래소, 프로토콜) 허용 목록. Default deny (활성화 시).
{"venues": ["polymarket", "hyperliquid", "0x"]}
활성화: Admin Settings에서 venue_whitelist_enabled=true 설정.
p. ACTION_CATEGORY_LIMIT
오프체인 액션 카테고리별 USD 지출 한도.
{
"category": "defi_trading",
"per_action": 1000,
"daily": 5000,
"monthly": 50000,
"tier_on_exceed": "auto"
}
3. 정책 평가 흐름
트랜잭션 제출 시 정책 엔진이 모든 적용 가능한 정책을 평가합니다:
- 정책 수집 -- 지갑 + 글로벌 정책, 우선순위 정렬. 네트워크 범위 필터링.
- Default deny 검사 -- ALLOWED_TOKENS, CONTRACT_WHITELIST, APPROVED_SPENDERS.
- 티어 할당 -- SPENDING_LIMIT, REPUTATION_THRESHOLD, APPROVE_TIER_OVERRIDE.
- 제약 조건 검사 -- WHITELIST, TIME_RESTRICTION, RATE_LIMIT, METHOD_WHITELIST, APPROVE_AMOUNT_LIMIT, ALLOWED_NETWORKS.
- 티어 실행 -- INSTANT(즉시), NOTIFY(즉시+알림), DELAY(대기), APPROVAL(승인 필요).
Default Deny 정책 타입
| 정책 타입 | 적용 대상 | 효과 |
|---|---|---|
| ALLOWED_TOKENS | TOKEN_TRANSFER | 목록에 없는 토큰 차단 |
| CONTRACT_WHITELIST | CONTRACT_CALL | 목록에 없는 컨트랙트 차단 |
| APPROVED_SPENDERS | APPROVE | 목록에 없는 spender 차단 |
4. 정책 우선순위 규칙
정책 우선순위 오버라이드 순서: wallet+network > wallet+null > global+network > global+null.
높은 priority 값이 더 중요합니다. 동일 priority일 때 더 구체적인 범위(wallet+network)가 우선합니다.