Skip to content

신원 ​

.human 주소는 처음에는 하나의 공개 키에 대한 순수 함수입니다. **신원(identity)**은 주소가 키보다 오래 살아남게 합니다. 주소를 제어하는 키 집합이 체인 상태에 보관되므로, 키를 교체할 수 있고 잃어버렸을 때는 복구할 수 있습니다 — 주소, 잔액, 이름, 기록은 바뀌지 않습니다.

첫 교체 전과 후 ​

상태주소를 제어하는 주체
교체한 적 없고 복구도 설정하지 않음주소가 도출된 키(address = f(public key))
신원 레코드가 존재레코드에 있는 키만. 원래 키는 제거되는 즉시 작동을 멈춤

레코드는 처음으로 키를 교체하거나 복구를 설정할 때 생성됩니다. 유료 이름(.node, .app, .vault, .agent)은 그 이름을 소유한 .human 지갑의 신원을 따릅니다.

bash
curl -s "$GATEWAY/api/v1/identity/neuro:<15 hex>.human"
# { "address": "…", "keys": ["<pk1>", "<pk2>"], "version": 2, "rotated_at": 4210, "recovery": { … } }

키 교체 ​

owner, add(추가할 공개 키, 또는 빈 값), remove(제거할 공개 키, 또는 빈 값)와 함께 POST /api/v1/identity/rotate를 호출하며, 현재 활성 키로 다음에 서명합니다.

nc-rotate|<owner>|<add>|<remove>|<nonce>
  • 마지막으로 남은 키는 제거할 수 없습니다.
  • 서명이 정확한 변경 내용을 포함하므로, 도중에 누구도 이를 바꿀 수 없습니다.
  • 모든 검증자에서 합의를 통해 적용됩니다.

새 기기로 옮기는 일반적인 방법: 기존 기기에서 새 키를 추가한 다음, 새 키로 기존 키를 제거합니다.

소셜 복구 ​

모든 키를 잃어버렸다면 가디언이 접근 권한을 되찾아 줄 수 있습니다.

설정 ​

POST /api/v1/identity/recovery/setup — 활성 키로 서명합니다.

필드규칙
guardians하나 이상의 .human 주소, 자신의 주소는 불가
threshold승인해야 하는 가디언 수: 1부터 가디언 수까지
timelock임계값에 도달한 후 기다리는 블록 수로, 여러분이 거부할 시간을 줌

복구는 .human 주소에서만 사용할 수 있습니다.

복구하기 ​

  1. 요청 — 새 기기에서 target(여러분의 주소)과 new_key로 POST /api/v1/identity/recovery/request를 호출하고, 새 키로 서명합니다. 상태 pending.
  2. 승인 — 각 가디언이 POST /api/v1/identity/recovery/approve(target, guardian)를 호출합니다. 승인 수가 임계값에 도달하면 요청은 executes_at = now + timelock과 함께 armed가 됩니다.
  3. 실행 — executes_at에 모든 검증자가 신원의 키를 new_key로 자동 교체합니다.

실행 전에는 언제든지:

누가할 수 있는 일엔드포인트
여러분, 아무 활성 키로거부POST /api/v1/identity/recovery/cancel
가디언반려POST /api/v1/identity/recovery/reject
요청자철회POST /api/v1/identity/recovery/withdraw

조회: GET /api/v1/identity/recovery/:addr(설정과 진행 중인 요청), GET /api/v1/identity/guardian-of/:addr(여러분이 가디언인 대상), GET /api/v1/identity/recovery/initiated/:pk(새 키가 시작한 요청).

타임락은 신중하게 선택하세요

타임락은 여러분이 시작하지 않은 복구를 알아차릴 수 있는 시간입니다. 너무 짧으면 공모한 가디언들이 여러분이 대응하기 전에 주소를 가져갈 수 있고, 너무 길면 실제 복구에도 그만큼 시간이 걸립니다.

계획 ​

신원 레코드는 키 이상의 것을 담도록 설계되었습니다: 온체인 행동으로 쌓은 평판, 그에 대한 영지식 증명, 그리고 다른 체인이 이를 읽을 수 있게 하는 IBC v2 패킷. 이 중 어느 것도 아직 존재하지 않습니다.