NIP-19는 Nostr 식별자를 공유하기 위한 사용자 친화적 형식을 정의합니다. 이러한 bech32 인코딩 문자열은 표시와 공유에 사용되지만 프로토콜 자체(hex 사용)에서는 사용되지 않습니다.

왜 Bech32인가?

원시 hex 키는 복사하기 쉽지 않고 시각적으로 구별할 수 없습니다. Bech32 인코딩은 사람이 읽을 수 있는 접두사와 체크섬을 추가하여 어떤 유형의 데이터를 보고 있는지 즉시 명확하게 합니다.

기본 형식

원시 32바이트 값을 인코딩합니다:

  • npub - 공개 키(당신의 신원, 공유해도 안전)
  • nsec - 개인 키(비밀 유지, 서명에 사용)
  • note - 이벤트 ID(특정 이벤트 참조)

예시: hex pubkey 3bf0c63f...npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6가 됩니다.

공유 가능 식별자

TLV(Type-Length-Value) 인코딩을 사용하여 메타데이터를 포함합니다:

  • nprofile - 릴레이 힌트가 있는 프로필(클라이언트가 사용자를 찾는 데 도움)
  • nevent - 릴레이 힌트, 작성자 pubkey, kind가 있는 이벤트
  • naddr - 주소 지정 가능 이벤트 참조(pubkey + kind + d-tag + relays)

이들은 검색 문제를 해결합니다: 누군가 노트 ID를 공유하면 클라이언트가 어떤 릴레이에 있는지 어떻게 알 수 있을까요? 릴레이 힌트를 식별자에 묶어 공유된 링크가 더 신뢰할 수 있게 됩니다.

구현 참고 사항

  • bech32는 사람 인터페이스에만 사용: 표시, 복사/붙여넣기, QR 코드, URL
  • 프로토콜 메시지, 이벤트, NIP-05 응답에서는 절대 bech32 형식을 사용하지 않음
  • 모든 프로토콜 통신은 hex 인코딩을 사용해야 함
  • nevent/nprofile/naddr 생성 시 더 나은 검색을 위해 릴레이 힌트 포함

주요 출처:

언급된 곳:

참고: