프로젝트 소개

Keep는 FROST(Flexible Round-Optimized Schnorr Threshold Signatures) 임계값 서명을 위한 Android 애플리케이션으로, 전용 Nostr 이벤트 서명기로 설계되었습니다. 사용자는 휴대폰에 FROST 키 공유를 보관하고, 단일 기기가 전체 개인 키를 보유하지 않은 상태에서 Nostr 이벤트에 서명할 수 있습니다. NIP-55 Android 서명기 프로토콜(인텐트 및 콘텐츠 제공자)과 NIP-46 원격 서명(벙커 서비스)을 구현하여, 호환되는 Nostr 클라이언트가 직접 서명을 요청할 수 있습니다. README에 설명된 주요 기능: - 2-of-3, 3-of-5와 같은 구성 가능한 체계를 사용한 FROST 임계값 서명. - NIP-55 Android 서명기 프로토콜 및 NIP-46 원격 서명. - QR 코드 또는 텍스트를 통한 FROST 공유 가져오기/내보내기, 기존 nsec 키 가져오기. - 앱별 서명 권한 및 정책을 지원하는 다중 계정 지원. - 서명 기록 및 감사 로그. - 생체 인식 및 PIN 인증, Android Keystore를 통한 하드웨어 기반 키 저장. - 비상 키 삭제를 위한 킬 스위치. - SOCKS 프록시 지원(Tor) 및 릴레이 연결에 대한 인증서 고정. - NIP-44 암호화/복호화 및 NIP-04 작업. - 구성 가능한 속도 제한을 사용한 백그라운드 서명. - 암호화된 백업 및 복원. - 다중 서명을 위한 비트코인 지갑 설명자 조정. 지원되는 NIP-55 작업에는 get_public_key, sign_event, nip04_encrypt, nip04_decrypt, nip44_encrypt, nip44_decrypt 및 decrypt_zap_event가 포함됩니다. 배포는 Zapstore, Obtainium, GitHub 릴리스 및 F-Droid를 통해 제공됩니다. 빌드에는 고정된 툴체인 버전이 필요합니다: Rust 1.89.0, Android NDK 29.0.14206865, cargo-ndk 4.1.2 및 JDK 17; 불일치 시 빌드가 즉시 실패합니다. Gradle은 소스 변경 시 Rust 라이브러리를 자동으로 재빌드합니다. 스크립트를 사용하면 NDK 없이 호스트 빌드에서 Kotlin 바인딩을 새로 고쳐 타입 검사를 수행할 수 있지만, 이러한 빌드는 런타임에서 UnsatisfiedLinkError로 실패합니다. 또 다른 스크립트는 빌드 스크립트 및 CI 워크플로 전반에서 고정된 버전을 확인합니다. 기여는 GitHub 이슈 및 풀 리퀘스트를 통해 수용됩니다. 번역도 환영하며, 브라질 포르투갈어, 스페인어, 독일어 및 일본어에 대한 시드 로케일이 제공됩니다. 관리형 번역 플랫폼은 백로그로 표시되며, CI는 로케일 드리프트를 확인합니다. 프로젝트는 MIT 라이선스로 제공됩니다.