No description
  • C 72.7%
  • Go 26.6%
  • Assembly 0.6%
Find a file
2026-03-08 22:58:36 -03:00
eventstore sdk: fix default Publisher to work with any store. 2026-02-22 18:02:22 -03:00
keyer fix bunker nip44 decrypt typo (was calling encrypt). 2025-12-30 15:19:13 -03:00
khatru khatru/policies: PreventNormalDuplicates() to consider "a" reactions too. 2026-03-06 01:04:46 -03:00
libsecp256k1 vendor libsecp256k1 so it doesn't depend on a shared library. 2024-12-26 17:05:17 -03:00
nip04 use xhex everywhere. 2025-11-23 06:57:54 -03:00
nip05 nip05: be tolerant with invalid pubkeys in well-known response (skip them). 2025-12-21 19:53:24 -03:00
nip06 use xhex everywhere. 2025-11-23 06:57:54 -03:00
nip10 nip10: fix parsing when the reply is an "a". fix and test nip10. 2025-11-23 06:57:54 -03:00
nip11 nip11: add "supported_grasps" special field. 2025-11-25 14:50:14 -03:00
nip13 fix types so tests compile. 2025-05-12 10:18:06 -03:00
nip14 more conversions. 2025-04-15 00:00:03 -03:00
nip17 since and until are not pointers anymore because that is too annoying. 2025-05-08 09:32:54 -03:00
nip19 nip19: decode "note1" as nevent. 2026-01-26 17:22:22 -03:00
nip22 a bunch of [32]byte conversions. still more needed. 2025-04-14 17:47:53 -03:00
nip23 nip23: the renderer is not goroutine-safe so it can't be reused. 2025-08-04 12:01:02 -03:00
nip27 nip27: fix ws:// parsing. 2025-06-08 10:53:15 -03:00
nip29 nip29: fix "livekit" tag parsing. 2026-03-05 22:46:20 -03:00
nip31 more conversions. 2025-04-15 00:00:03 -03:00
nip34 nip34: repository equals. 2025-11-23 17:52:39 -03:00
nip40 more conversions. 2025-04-15 00:00:03 -03:00
nip42 nip42/khatru: clearer AUTH error messages. 2025-10-28 11:42:38 -03:00
nip44 use xhex everywhere. 2025-11-23 06:57:54 -03:00
nip45 since and until are not pointers anymore because that is too annoying. 2025-05-08 09:32:54 -03:00
nip46 nip46: different ids for imagined/fake nostrconnect requests so they bypass the duplicate filter. 2026-01-22 18:56:41 -03:00
nip49 nip49: fix decryption error handling. 2026-01-09 22:35:53 -03:00
nip52 fix some pubkeys that were strings still. 2025-04-17 00:54:50 -03:00
nip53 nip53: typed participant pubkey. 2025-07-28 09:35:37 -03:00
nip54 nip54: test against all the djot syntax examples from their guide. 2025-11-25 08:33:39 -03:00
nip57 nip57 and nip61: parse amount. 2025-10-24 23:34:02 -03:00
nip59 it never ends. 2025-04-16 02:59:47 -03:00
nip60 nip60: don't lose tokens when bolt11 payment fails. 2026-02-03 19:27:06 -03:00
nip61 use xhex everywhere. 2025-11-23 06:57:54 -03:00
nip65 Use ID in nip86.IDReason 2025-09-26 09:41:25 -03:00
nip70 more conversions. 2025-04-15 00:00:03 -03:00
nip73 a bunch of [32]byte conversions. still more needed. 2025-04-14 17:47:53 -03:00
nip77 nip77: fix one possible infinite loop with channels. 2026-02-09 18:38:39 -03:00
nip86 nip86: fix kind type. 2026-01-14 00:53:05 -03:00
nip92 more conversions. 2025-04-15 00:00:03 -03:00
nip94 more conversions. 2025-04-15 00:00:03 -03:00
nipb0/blossom blossom: hardcode some more common problematic extension types. 2026-02-11 11:41:28 -03:00
schema schema: rename nextSpec to ContentSpec. 2026-01-10 00:01:17 -03:00
sdk fix potential subscription leaking bug with MaxWaitForEOSE never being effective. 2026-02-27 06:47:27 -03:00
testdata add more ParseMessage tests. 2025-03-07 15:50:55 -03:00
.gitignore sdk/hints: implement sql migrations. 2025-01-25 00:15:39 -03:00
count_test.go improve/refactor websocket connections hoping this will fix the undetected disconnections we're seeing. 2025-07-10 22:58:37 -03:00
envelopes.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
envelopes_benchmark_test.go improve/refactor websocket connections hoping this will fix the undetected disconnections we're seeing. 2025-07-10 22:58:37 -03:00
envelopes_test.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
eose_test.go merge connection into relay, do all the closing logic on context cancelation and have closeMutex be a channelmutex. 2026-02-28 14:19:57 -03:00
event.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
event_easyjson.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
event_test.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
filter.go filter.GetTheoreticalLimit() to encompass the actual limit specified in the filter. 2025-12-19 06:52:46 -03:00
filter_easyjson.go filter tags map should be nil when there are no tags. 2026-01-14 17:17:11 -03:00
filter_test.go filter.GetTheoreticalLimit() to encompass the actual limit specified in the filter. 2025-12-19 06:52:46 -03:00
go.mod fixes. 2026-03-01 09:18:55 -03:00
go.sum fixes. 2026-03-01 09:18:55 -03:00
helpers.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
helpers_test.go tests on root and khatru working. 2025-04-17 20:30:44 -03:00
interfaces.go wait, Querier can just return an iter like eventstore, it's ok. 2025-04-16 03:06:27 -03:00
keyer.go more conversions. 2025-04-15 00:00:03 -03:00
keys.go use encoding/hex in some places where xhex is more dangerous. 2026-01-10 09:55:15 -03:00
kinds.go define a nostr.Kind type for event kinds, make adjustments everywhere and fix some horrible bugs with mmm, lmdb and badger querying and deleting. 2025-04-20 11:15:41 -03:00
LICENSE bring in khatru and eventstore. 2025-04-15 08:49:28 -03:00
log.go a big bundle of conversions and other changes. 2025-04-15 17:13:57 -03:00
log_debug.go fix log_debug after jsoniter change. 2024-12-17 11:06:05 -03:00
log_normal.go style: using effective go and refactoring 2023-08-21 15:50:05 -03:00
normalize.go fix and use a supposedly much faster library on NormalizeURL(), it's slightly less tolerant with stupidly-formed URLs. 2025-02-25 09:55:19 -03:00
normalize_test.go fix and use a supposedly much faster library on NormalizeURL(), it's slightly less tolerant with stupidly-formed URLs. 2025-02-25 09:55:19 -03:00
paginator.go since and until are not pointers anymore because that is too annoying. 2025-05-08 09:32:54 -03:00
pointers.go nip10: fix parsing when the reply is an "a". fix and test nip10. 2025-11-23 06:57:54 -03:00
pointers_easyjson.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
pool.go remove relay from pool once it's closed or disconnected. 2026-02-28 14:26:32 -03:00
README.md reword readme a little bit. 2026-01-13 13:17:07 -03:00
relay.go r.writeQueue doesn't have to be closed. 2026-03-08 22:58:36 -03:00
relay_test.go define a nostr.Kind type for event kinds, make adjustments everywhere and fix some horrible bugs with mmm, lmdb and badger querying and deleting. 2025-04-20 11:15:41 -03:00
signature.go do pubkey parsing and signature parsing directly in VerifySignature for brevity instead of calling up to tons of unnecessary upstream libraries. 2026-01-13 15:13:42 -03:00
signature_libsecp256k1.go fix libsecp256k1 VerifySignature() method. 2025-05-03 11:56:37 -03:00
subscription.go refactor unsub to be dependent on the context only and always. 2026-03-01 09:19:25 -03:00
subscription_test.go merge connection into relay, do all the closing logic on context cancelation and have closeMutex be a channelmutex. 2026-02-28 14:19:57 -03:00
tag_test.go tests on root and khatru working. 2025-04-17 20:30:44 -03:00
tags.go Add Tags.Has and nip11.Self 2025-09-27 10:48:33 -03:00
timestamp.go tests run (but not pass) and fine-tuning (specially tag filters) on filter_easyjson.go 2023-04-16 16:16:16 -03:00
types.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
types_test.go use xhex everywhere. 2025-11-23 06:57:54 -03:00
utils.go CompareRElayEvent() helpers. 2026-03-08 22:57:38 -03:00
utils_test.go a big bundle of conversions and other changes. 2025-04-15 17:13:57 -03:00

nostr

A comprehensive Go library for the Nostr protocol, providing everything needed to build relays, clients, or hybrid applications.

This is a new, much improved in all aspects, version of go-nostr.

Installation

go get fiatjaf.com/nostr

Components

  • eventstore: Pluggable storage backends (Bleve, BoltDB, LMDB, in-memory, MMM)
  • khatru: Flexible framework for building Nostr relays
  • khatru/blossom: Plugin for a Khatru server that adds flexible Blossom server support
  • khatru/grasp: Plugin for a Khatru server that adds Grasp server support
  • sdk: Client SDK with caching, data loading, and outbox relay management
  • keyer: Key and bunker management utilities
  • NIP-specific libraries with helpers and other things for many NIPs and related stuff, including blossom, negentropy and cashu mini-libraries.