NIP-05: 도메인 검증
NIP-05는 Nostr 공개키를 user@example.com과 같은 사람이 읽을 수 있는 인터넷 식별자에 매핑한다. 사용자에게 클라이언트가 HTTPS를 통해 검증할 수 있는 DNS 기반 아이덴티티 힌트를 제공한다.
작동 방식
사용자는 프로필 메타데이터에 nip05 필드를 추가하여 식별자를 주장한다. 식별자는 name@domain 형식을 따른다. 클라이언트는 https://domain/.well-known/nostr.json을 가져와서 해당 이름이 사용자의 pubkey에 매핑되는지 확인하여 주장을 검증한다.
well-known 경로의 JSON 파일에는 로컬 이름을 hex pubkey에 매핑하는 names 객체가 포함된다:
{
"names": {
"alice": "abc123...",
"bob": "def456..."
}
}
검증이 성공하면 클라이언트는 npub 대신 또는 옆에 식별자를 표시할 수 있다. 일부 클라이언트는 검증 표시를 보여주고, 다른 클라이언트는 식별자를 일반 텍스트로 표시하고 신뢰 판단을 독자에게 맡긴다.
신뢰 모델
NIP-05는 전역 사용자 이름 레지스트리가 아니다. 도메인 이름과 웹 서버 경로의 제어를 증명할 뿐, 법적 신원이나 장기적 계정 연속성을 증명하지 않는다. 도메인 소유자가 나중에 매핑을 변경하면, 클라이언트가 이전 상태를 보존하지 않는 한 새 매핑을 검증하게 된다.
이 때문에 NIP-05는 발견 가능성과 평판에 유용하지만, 사용자들이 흔히 가정하는 것보다 약하다. 좋은 클라이언트는 이를 검증된 도메인 제어로 취급해야 하며, 개인이나 조직이 주장하는 신원의 증거로 취급해서는 안 된다.
릴레이 힌트
nostr.json 파일에는 pubkey를 릴레이 URL 배열에 매핑하는 relays 객체를 선택적으로 포함할 수 있다. 이는 클라이언트가 특정 사용자의 이벤트를 어디서 찾을 수 있는지 발견하는 데 도움이 된다.
상호운용성 참고사항
소문자 요구사항은 보이는 것보다 중요하다. 대소문자가 혼합된 이름이나 pubkey는 하나의 구현에서는 작동하고 다른 구현에서는 실패할 수 있으므로, 현재 클라이언트는 nostr.json에서 소문자 이름과 소문자 hex 키를 기대해야 한다.
또 다른 실무적 세부사항은 특수 이름 _인데, 이를 통해 도메인이 _@example.com과 같은 기본 식별자 형식을 매핑하거나, 이를 지원하는 클라이언트에서 단순히 example.com으로 표시할 수 있다. 모든 클라이언트가 이 형식을 동일하게 노출하지는 않으므로, 사용자는 명시적인 name@domain 식별자를 사용할 때 가장 일관된 결과를 얻는다.
구현 현황
대부분의 주요 클라이언트가 NIP-05 검증을 지원한다:
- Damus, Amethyst, Primal이 검증된 식별자를 표시
- 많은 릴레이 서비스가 NIP-05 식별자를 기능으로 제공
- 무료 및 유료 NIP-05 제공자가 다수 존재
주요 출처:
언급된 뉴스레터:
같이 보기: