NIP-55는 Android 앱이 별도 signer 애플리케이션에 서명과 암호화 작업을 요청하는 방법을 정의합니다. Android 클라이언트에 browser extension과 원격 bunker의 네이티브 대안을 제공합니다.

작동 방식

NIP-55는 두 가지 Android 메커니즘을 사용합니다:

  • Intents - 명시적인 사용자 승인이 필요한 foreground 흐름
  • Content resolvers - 사용자가 영구 권한을 부여한 뒤의 background 흐름

일반적인 연결 흐름은 get_public_key로 시작합니다. signer는 사용자 pubkey와 signer 패키지 이름을 함께 반환하며, 클라이언트는 둘 다 캐시해야 합니다. background loop 안에서 get_public_key를 반복 호출하는 것은 명세가 명시적으로 경고하는 흔한 구현 실수입니다.

핵심 작업

  • get_public_key - 사용자의 pubkey와 signer 패키지 이름 가져오기
  • sign_event - Nostr 이벤트 서명
  • nip04_encrypt/decrypt - NIP-04 메시지 암호화 또는 복호화
  • nip44_encrypt/decrypt - NIP-44 메시지 암호화 또는 복호화
  • decrypt_zap_event - zap 관련 이벤트 payload 복호화

보안과 UX 참고사항

NIP-55는 키를 기기 안에 유지하지만, 여전히 Android 앱 경계와 signer의 권한 처리에 의존합니다. Content resolver 지원은 반복되는 intent 승인 프롬프트보다 훨씬 매끄러운 UX를 제공하지만, 이는 사용자가 해당 클라이언트에 지속적인 승인을 준 이후에만 가능합니다.

Android 웹 앱에서는 NIP-55가 NIP-46보다 덜 편리합니다. browser 기반 흐름은 네이티브 Android 앱처럼 직접적인 background 응답을 받을 수 없기 때문에, 많은 구현이 callback URL, clipboard 전달, 수동 붙여넣기로 fallback합니다.


주요 출처:

언급된 뉴스레터:

같이 보기: