계정 추상화
NeuroChain에서 계정은 컨트랙트가 아니라 ML-DSA-65 키이므로, 계정 추상화는 지갑 컨트랙트로 흉내 내는 대신 프로토콜에 내장되어 있습니다. 여기에는 세 가지가 포함됩니다: 다른 사람이 가스를 지불하고, 제한된 키가 여러분을 대신해 작업하며, AI 에이전트가 이 둘을 안전하게 사용합니다.
가스 대납
가스 풀은 트랜잭션 수수료를 지불하기 위해 따로 마련해 둔 NRO입니다.
| 수수료를 내는 주체 | 조건 |
|---|---|
| 보낸 사람 자신의 풀 | 수수료를 낼 만큼 충분히 있을 때 |
| 네트워크의 온보딩 스폰서 | 지갑이 송금 금액은 감당할 수 있지만 수수료는 감당할 수 없을 때(받은 금액만 가진 신규 사용자) |
| 보낸 사람의 잔액 | 그 밖의 경우 |
규칙:
- 대납 수수료는 트랜잭션당 최대
NEUROCHAIN_MAX_SPONSORED_FEE(100 000 uNRO)입니다. - 대납 수수료도 다른 수수료와 마찬가지로 소각되고 제안자에게 지급됩니다.
- 온보딩 스폰서는
NEUROCHAIN_GAS_SPONSOR(기본값neuro:faucet.vault)입니다. 그 풀은 제네시스에서NEUROCHAIN_GAS_SPONSOR_FUND(1 000 000 NRO)로 한 번 충전되고, 이후 예치를 통해 보충됩니다.
| 작업 | 엔드포인트 | 서명 대상 |
|---|---|---|
| 자신의 풀에 NRO 넣기 | POST /api/v1/sponsor/deposit (address, amount) | neuro:system.sponsor |
| 돌려받기 | POST /api/v1/sponsor/withdraw (address, amount) | neuro:system.sponsor |
| 풀 잔액 | GET /api/v1/sponsor/:address | — |
세션 키
세션 키는 여러분의 마스터 키가 계정을 대신해 작업하도록 승인한 별도의 ML-DSA-65 키이며, 여러분이 정한 한도 안에서만 작동합니다.
| 한도 | 필드 | 의미 |
|---|---|---|
| 범위 | scope | 키가 보낼 수 있는 쉼표로 구분된 주소들, 또는 아무 곳이나 허용하는 * |
| 지출 한도 | cap | 키가 수명 동안 이동할 수 있는 총 uNRO |
| 만료 | expiry_block | 키가 유효한 마지막 블록 높이; 미래여야 함 |
POST /api/v1/session/grant
{
"account": "neuro:<15 hex>.human",
"session_pk": "<세션 공개 키, hex>",
"scope": "neuro:<10 hex>.app",
"cap": 5000000,
"expiry_block": 120000,
"signature": "…", "public_key": "<마스터 키>", "nonce": 1791200000000
}그 후 세션 키는 계정으로서 일반 트랜잭션에 서명합니다(from = 여러분의 주소, public_key = 세션 키). 모든 검증자는 합의 과정에서 다음을 확인합니다.
- 서명이 세션 키에 대해 유효한가;
- 계정이 그 키를 부여했으며, 철회되지 않았는가;
- 현재 높이가
expiry_block을 지나지 않았는가; - 대상이
scope에 있는가; - 지금까지 지출한 금액에 이번 금액을 더해도
cap이내인가.
지출은 트랜잭션이 성공적으로 적용될 때만 기록됩니다. 언제든지 POST /api/v1/session/revoke(account, session_pk)로 철회할 수 있고, GET /api/v1/session/list/:account로 권한 목록을 조회할 수 있습니다.
세션 키가 절대 할 수 없는 일: Sentinel 신뢰 목록 관리, 보류된 송금의 확인이나 취소 — 이들은 마스터 키가 필요합니다. 따라서 에이전트는 위험한 송금을 시작할 수는 있지만, 승인할 수 있는 것은 여러분뿐입니다.
테스트 방법: 여러 검증자에서 실행한 네트워크 테스트를 통해 동시 트랜잭션에서도 지출 한도가 유지되고, 재전송된 트랜잭션이 거부되며, 철회가 모든 노드에서 적용됨을 확인했습니다.
.agent 계정
.agent 주소는 AI 에이전트 계정을 위한 유료 이름입니다. 여러분의 .human 지갑이 등록하고, 여러분의 키가 제어하며, 에이전트의 가스 풀과 세션 키를 보관하기 위한 것입니다. 검증자가 아니며 스테이크도 보유하지 않습니다. 가격은 사용자 지정 이름과 마찬가지로 이름 길이에 따라 정해집니다(주소 → 이름 가격).
POST /api/v1/agents/register(name, owner; neuro:system.agent에 대해 서명), GET /api/v1/agents/:address.
MCP를 통한 AI 에이전트
neurochain-mcp 서버는 AI 어시스턴트(Claude Code, Claude Desktop, 모든 MCP 클라이언트)에게 체인 읽기 권한을 주고, 세션 키가 있으면 nc_transfer, nc_call_contract, nc_deploy도 제공합니다 — 마스터 키는 절대 제공하지 않습니다. 설정, 모든 도구, 한도: AI 에이전트 (MCP).