forked from hoytech/strfry
-
Notifications
You must be signed in to change notification settings - Fork 3
/
CHANGES
105 lines (98 loc) · 6.05 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
1.0.2
* New config param: relay.info.nips which allows you to override the NIPs
that are claimed to be supported (requested by ismyhc)
* New connectionTimeout parameter in router config (thanks Braydon Fuller!)
* Bugfix: IPv4-mapped IPv6 addresses in X-Real-IP headers were not parsed
correctly (reported by Petr Kracík)
1.0.1
* Prevent exporting a v2 DB using --fried. The packed representation will be
corrupted. Instead, you should downgrade to 0.9.7 to do the export, or do
it without fried.
* Fix build error on some platforms that don't include stdint.h in another
header. Reported by fiatjaf.
1.0.0
* Refactored database format to use a custom PackedEvent encoding, removed some
unnecessary indices. This reduces the size of the DB and should help improve
query performance in some cases.
* Because of the above, the DB version has been increased to 3, meaning events
will need to be exported and reimported into a new DB.
* Added a special `--fried` mode for import and export that greatly (10x or more)
speeds up the process.
* Removed prefix matching on ids and authors fields. This was removed from
NIP-01. Now, you must use exactly 32 byte (64 hex character) values.
* Upgraded negentropy to protocol version 1.
* Use the C++ negentropy implementation's BTree support to cache the results
of negentropy fingerprints over arbitrary nostr queries. By default the
query {} (the full DB) is tracked, but additional queries can be added
using the new `strfry negentropy` command.
* Advertises NIP-77 support (negentropy syncing). The negentropy version is now
also indicated in the NIP-11 relay information and the HTML landing page.
* Parsing-related error messages were greatly improved. Instead of just getting
"bad msg: std::get: wrong index for variant", in most situations you will
now get a more useful message such as "first element not a command like REQ"
* Refactored some critical areas like ActiveMonitors to use a precise 32-byte
type instead of std::string. This will reduce pointer chasing and memory
usage and, more importantly, improve CPU caching.
* The perl libraries needed at compile-time are now bundled in golpe, so they
do not need to be separately installed to build strfry.
* Bugfix: When querying for 2 or more tags where one of the tags was a prefix
of the other, matching events would not be returned. Reported by mrkvon.
* Updated and re-organised the README.md docs
0.9.7
* `--fried` support from 1.0.0 was back-ported, allowing export of DBs
in a fried format for efficient import by 1.0.0+ relays.
* Bugfix: The cron thread was incorrectly removing expireable events prior
to their expiry. Reported and fixed by KoalaSat.
* A `limitation` entry is now included in the NIP-11 output. This exposes
configured relay limits such as max message size. Added by Alex Gleason.
* Node info support added: The relay now replies to requests to /nodeinfo/2.1
and /.well-known/nodeinfo . Added by Alex Gleason.
* NIP-70 support: Events with a "_" tag are considered protected and relays
should only allow them to be posted by their author. Since strfry does
not yet support AUTH, these events are always rejected. Added by fiatjaf.
* NIP-11 icon support added by zappityzap.
* Preliminary FreeBSD support added by cosmicpsyop.
* Switch import to use WriterPipeline, allowing strfry import be used as a
general-purpose non-relay event ingester. To do so, users must ensure that
the stdout of their process they pipe into import is line buffered.
0.9.6
* Bugfix: Sometimes malformed or old-format negentropy messages would throw
uncaught exceptions which would cause the relay to crash. Now it properly
handles and reports this situation in both logs and to the other side
of the protocol.
* New config option: relay.negentropy.enabled. Default is true. Set this to
false if you wish to entirely stop the relay from handling negentropy messages.
0.9.5
* New feature: strfry router!
* INCOMPATIBLE change: The "lookbehind" feature of plugins was removed
* INCOMPATIBLE change to negentropy sync protocol! (again)
- The fingerprint function has now been changed to SHA-256, to protect the
integrity of the sync mechanism in the presence of adversarial event creators
- Going forward, the protocol now has mechanisms for backwards/forwards compatibility
* Bugfix: Prevent a crash when a non-indexOnly scan was paused and then one of the
buffered levIds was deleted or replaced before the scan resumed
* Plugins can now be specified as shell commands, so you can pass command-line switches
to them, set environment variables, use pipes/redirects, etc.
* Plugins now propagate the environment variables of the strfry process to the
plugin processes
* Now if you don't return a "msg" (or return an empty string), it will no longer
pollute your logs with "blocked event" messages
0.9.4
* INCOMPATIBLE change to negentropy sync protocol!
- Necessary because the protocol had an unfixable issue when syncing a very large DB
into a small DB while using frameSizeLimit (sorry!)
* If a client disconnects before its pending EVENT write messages have been processed,
drop those messages instead of trying to write them
* Bulk export commands now exit gracefully on a SIGPIPE
* Fixed a race condition when sync command exits
* Some optimisations in sync and export
* noReadAhead config option: can reduce IO usage on instances where DB size > memory
* Close the LMDB map file when execing plugins (works around LMDB bug)
0.9.3
* Limit on events that can be processed by a sync
- Configurable with relay.negentropy.maxSyncEvents
* Warn when NIP-11 pubkey is in incorrect format (#52)
* Bugfix: Setting rejectEphemeralEventsOlderThanSeconds larger than ephemeralEventsLifetimeSeconds did
not work because events were then considered expired
* Config parameter to silence "Rejected invalid event" logs: relay.logging.invalidEvents
* Detect overflows when rejectEvents* config params are set very large