NIP-51은 사용자, 이벤트, 릴레이, 해시태그 및 기타 참조를 정리하기 위한 리스트 이벤트를 정의한다. 북마크, 뮤트 리스트, 팔로우 셋, 릴레이 셋 등 사용자가 직접 관리하는 컬렉션의 핵심 프로토콜이다.

표준 리스트와 셋

  • 표준 리스트는 kind 10000 뮤트 리스트, kind 10003 북마크, kind 10007 검색 릴레이 등 대체 가능 이벤트 종류를 사용한다.
  • d 태그가 있는 주소 지정 가능 종류를 사용하며, kind 30000 팔로우 셋, kind 30003 북마크 셋, kind 30030 이모지 셋 등이 있다.

이 구분은 클라이언트 동작에 영향을 준다. 표준 리스트는 사용자와 종류당 하나의 정규 리스트를 의미한다. 셋은 여러 이름 있는 컬렉션을 의미하므로, 클라이언트는 각 리스트의 d 태그를 보존해야 한다.

구조

리스트는 태그를 사용하여 콘텐츠를 참조한다:

  • p 태그: 공개키
  • e 태그: 이벤트
  • a 태그: 주소 지정 가능 이벤트
  • t 태그: 해시태그
  • word 태그: 뮤트 단어
  • relay 태그: 릴레이 관련 리스트 종류의 릴레이 URL

일부 리스트 종류는 다른 것보다 허용되는 태그 형태가 제한적이다. 예를 들어 릴레이 관련 리스트는 relay 태그를 사용하고, 북마크는 노트나 주소 지정 가능 이벤트를 가리킬 것으로 기대된다. 모든 NIP-51 리스트를 임의의 자유 형식 태그로 취급하는 클라이언트는 상호운용성을 잃게 된다.

공개 vs 비공개

리스트는 공개 태그와 비공개 항목을 가질 수 있다. 비공개 항목은 tags 구조를 반영하는 JSON 배열로 직렬화되어 암호화된 후 이벤트 content에 저장된다. 현재 명세는 이 자기 암호화 모델에 NIP-44를 사용하며, NIP-04는 레거시 호환성으로만 지원한다.

이 분리 덕분에 사용자는 일부 항목을 숨기면서도 공개 리스트 껍데기를 게시할 수 있다. 북마크 리스트는 공개로 유지하면서 비공개 노트나 비공개 북마크는 암호화된 콘텐츠에 보관할 수 있다.

주요 종류

  • Kind 10000: 공개키, 스레드, 해시태그, 뮤트 단어를 위한 뮤트 리스트
  • Kind 10003: 노트와 주소 지정 가능 콘텐츠를 위한 북마크
  • Kind 10007: 선호 검색 릴레이
  • Kind 30002: 이름 있는 릴레이 그룹을 위한 릴레이 셋
  • Kind 30006: 사진 큐레이션 셋
  • Kind 39089: 공유 가능한 팔로우 번들을 위한 스타터 팩

최근 명세 변경에서 해시태그를 일반 북마크에서 관심사 셋으로 이동시켰고, 사진 큐레이션을 위한 kind 30006이 추가되었다. 두 변경 모두 클라이언트가 리스트 내용을 해석하는 모호함을 줄인다.


주요 출처:

언급된 뉴스레터:

같이 보기: