| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all external dependencies by embedding the secp256k1-learn
implementation into internal/secp256k1.
Changes:
- Add internal/secp256k1 with field arithmetic, curve ops, keys, schnorr
- Update keys.go to use internal secp256k1 package
- Remove btcec/btcutil dependencies (go.mod is now clean)
- All tests pass
Tradeoffs:
- ~10x slower crypto ops vs btcec (acceptable for nostr use case)
- Not constant-time (documented limitation)
- Zero external dependencies
Refs: code.northwest.io/secp256k1-learn
|
| | |
|
| |
|
|
| |
The code was already correct - docs/website had it backwards.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
- Add README.md
- Move benchmark files to benchmarks/
- Move PLAN.md to .claude/
- Add .gitignore
|
| | |
|
| |
|
|
|
|
|
|
| |
Add comprehensive benchmarks comparing NWIO against nbd-wtf/go-nostr and
fiatjaf.com/nostr across event operations, signing, verification, and filtering.
Use build tag 'benchcmp' to prevent competitor libraries from polluting module
dependencies - they're only downloaded when explicitly running comparison tests.
|
| |
|
|
|
|
|
|
|
|
|
| |
Fixed typo in WebSocket GUID that was causing handshake failures.
The GUID had '5AB5' instead of 'C5AB0' in the middle section.
Correct value: 258EAFA5-E914-47DA-95CA-C5AB0DC85B11
This also includes the implementation of an internal WebSocket client
to replace the external dependency, providing a minimal implementation
tailored for Nostr relay connections.
|
| |
|
|
|
|
|
|
|
|
| |
- Add mutex-guarded send/stop on Subscription to prevent send-on-closed-channel
panics and data races
- Split Subscribe (streams after EOSE) and Fetch (closes on EOSE) per NIP-01
- Rewrite Publish to use channel-based OK dispatch instead of calling Receive
directly, which raced with the auto-started Listen goroutine
- Clean up all subscriptions when Listen exits so range loops terminate
- Update tests and examples for new API
|
| |
|