mirror of
https://github.com/logos-co/lambda-prize.git
synced 2026-08-31 11:31:11 +00:00
67 lines
3.3 KiB
Markdown
67 lines
3.3 KiB
Markdown
# LP-0009: Keycard NIP-46 Nostr Signer Proxy [CLOSED]
|
|
|
|
**`Logos Circle: N/A`**
|
|
|
|
## Overview
|
|
|
|
Build a NIP-46 proxy daemon that bridges Nostr remote signing requests to a Keycard via a USB reader, translating NIP-46 protocol messages into Keycard SDK commands. The proxy handles `get_public_key`, `sign_event`, and `connect`, manages websocket connections to Nostr relays, and includes a basic event approval policy. The private key never leaves the card's secure element. Any NIP-46-compatible client (Coracle, noStrudel, Snort) can use it as a drop-in signer.
|
|
|
|
## Motivation
|
|
|
|
Nostr private key management is one of the protocol's core challenges. Keys are typically stored in browser cache or extensions. Since a Nostr key is the user's permanent identity with no recovery mechanism, a compromised key means permanent impersonation. Storing keys on secure hardware ensures the private key never leaves the card, giving users stronger protection over their identity.
|
|
|
|
## Success Criteria
|
|
|
|
- [ ] The daemon handles `connect`, `get_public_key`, and `sign_event` NIP-46 methods, with signing performed by the Keycard via USB.
|
|
- [ ] The daemon manages websocket connections to Nostr relays and correctly routes NIP-46 messages.
|
|
- [ ] A basic event approval policy lets the user approve or reject signing requests before the Keycard is invoked.
|
|
- [ ] Tested end-to-end against at least one NIP-46-compatible client (Coracle, noStrudel, or Snort).
|
|
- [ ] Documentation and a clean public repository under MIT or Apache-2.0.
|
|
|
|
## Scope
|
|
|
|
### In Scope
|
|
|
|
- CLI daemon implementing the NIP-46 remote signer role with Keycard SDK integration over USB.
|
|
- Websocket relay connection management and a basic event approval policy.
|
|
- Documentation covering installation, Keycard setup, relay configuration, and client integration.
|
|
|
|
### Out of Scope
|
|
|
|
- Encrypted DMs (NIP-44 / NIP-04): Keycard does not currently expose an ECDH API.
|
|
- NFC transport, polished GUI, ongoing maintenance.
|
|
|
|
## Prize Structure
|
|
|
|
- **Total Prize:** $400
|
|
- **Effort:** Small
|
|
|
|
## Eligibility
|
|
|
|
Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to license it under MIT or Apache-2.0.
|
|
|
|
## Submission Requirements
|
|
|
|
- Public repository with all daemon code under MIT or Apache-2.0.
|
|
- End-to-end demo of signing with at least one NIP-46-compatible client.
|
|
- Documentation covering setup, integration, and known limitations.
|
|
|
|
## Evaluation Process
|
|
|
|
Submissions are evaluated first-come-first-served against the success criteria. The first submission that satisfies all criteria wins.
|
|
|
|
## Resources
|
|
|
|
- [NIP-46: Nostr Connect](https://github.com/nostr-protocol/nips/blob/master/46.md)
|
|
- [NIP-01: Basic protocol flow](https://github.com/nostr-protocol/nips/blob/master/01.md)
|
|
- [Keycard open-source applet](https://github.com/status-im/status-keycard)
|
|
- [Keycard ecosystem projects](https://github.com/keycard-tech/keycard-ecosystem-projects) — curated list of SDKs and tools
|
|
- [keycard-go](https://github.com/status-im/keycard-go) — Go SDK
|
|
- [keycard-sdk](https://github.com/nicedoc/keycard-sdk) — TypeScript SDK
|
|
- [nexum-keycard](https://github.com/aspect-build/nexum-keycard) — Rust SDK and CLI
|
|
- [keycard-cli](https://github.com/status-im/keycard-cli) — Go CLI (useful as implementation reference)
|
|
|
|
## Potential for Subsequent λPrizes
|
|
|
|
No follow-up prize is anticipated at this time.
|