Releases: oxen-io/oxen-storage-server
v2.8.0: Merge pull request #501 from jagerman/libcurl-multi
This is the 2.8.0 release for the mandatory service node upgrade required before block 1,641,104 @ 31 July 2024, 23:30 UTC. It should be installed alongside oxen-core v10.6.0.
What's Changed
Following our previous release which fixed crashes in the storage server, upon network stability returning, we identified further bottlenecks in the Storage Server's ability to proxy requests to the Session file server and Session Communities. This new release introduces a much improved capacity for managing such pending requests which drastically increases the network's capacity and will reduce the number of timeouts and retries for file upload/downloads and connections to Communities.
The technical details
In previous releases, the storage server used a limited size pool of connections for proxied HTTP/HTTPS connections from the final hop to a Community or to the Session file server, with one thread started to handle each connection. This threadpool had a fairly small limit, however, and once the pool was full new requests would have to wait until an existing request was finished. As the network activity has grown, it has become more and more likely for this limit to be hit, introducing delays into proxied requests. Worse, if many requests themselves were slow (such as from an overloaded Community, or from many simultaneous requests momentarily slowing down the Session file server), these slow connections would cause timeouts, causing Session clients to retry, adding to the network load and network timeouts.
This new release completely replaces the old, one-request-per-thread implementation with an asynchronous implementation using the same underlying event processing as our recently added quic implementation, which is capable of managing a large number of parallel requests at once without individual slow requests blocking other pending requests, and with better performance than the old implementation.
Upgrading
As usual, upgrades for Debian 11+ and Ubuntu 20.04+ are available from our APT repository. Static binaries for other users are available below.
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
- https://github.com/jagerman.gpg
9488e04da2c687378b3966efe97092b5c5cfca1b7fa07aaf4f0367f2c8eb788f oxen-storage-linux-x86_64-2.8.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmae3toACgkQxJks56iN
QmKWcA//U3TmRy9A7SmtLxx825UHSjzVqzx3kFLKEVGS+a8GU3Bl3bxB8YKsxHEF
xCEQG4KHORzhr/hX/HCweEXyKhmyVUH/2uCKMBkZ+n4xgzFf683h6Rwwhxqc6XAo
mCl6+0E8u4HjqM97GFKIcR7WR7W93IjW3IgS2E7oRAN36HFU5qFUYkiYZak4hSNp
UPtq8GnEfOKBfGAB0i+YN3fpVef857IQX0WgG4sP49Uj3NqIQ52Xnu8fI6aeiWSF
50M0inIb/WHD25A2R0R8SDODKMNM9zrjQdwZlHHkgm4ccxeNaIrsdSDLKP67+4Gb
NA+qW5MVFdaiX/b+6OUFWGCWWfF4Qxwwmu1ZSnpyz3KtjjXUIgoJhV4ZGKUsPCMc
rsIOVk3dMdljYU1/kHlkcUS7C/Z+WNXPTujp6FpBiCEPqludITZYygmv1DWupW1e
MJWk389HW4OFf7AYZYbpy9b26qRTbC3zEgff0LQBDNjLccORiUhhkQ+pbNjc9yTf
H7YAy7Ctu8rHtbU9ym74Ksb5EMCZvjY23uJNLOU940UHldZyan10WBXYe3j81u9t
w2rhP8MVOjS0/teRIIOMMsDJNRIprv3zBPKOw3kH4oHahftFcmsOGLC6vr2M9BKX
VRM7BEDObvFyx5QPx+3UV7H96EckMgj7ehO3jJU02s73kkLPQhQ=
=noDg
-----END PGP SIGNATURE-----
Oxen Storage Server 2.7.0
This is the 2.7.0 release for the mandatory service node upgrade required before block 1,634,624 @ 22 July 2024, 23:30 UTC. It should be installed alongside oxen-core v10.5.0.
What's Changed
The current version of the storage server (in the 10.4 service node upgrade) added support for accepting client requests via QUIC (using our https://github.com/oxen-io/oxen-libquic library) which Session iOS recently started using instead of HTTP to communicate with our network.
While the release included in the storage server has undergone extensive testing (and is also the basis for the ongoing Lokinet development change), once it was released into the wild Session iOS's QUIC connections uncovered previously unforeseen cases that could cause a crash.
These were fixed for the most recent Session iOS release, but unfortunately the issues also affect the other side other QUIC connection, the oxen-storage-server.
These crashes have been impacting Session in recent days (even for non-iOS Session users) because any sort of crash along your onion path interrupts your connection, causing timeouts or errors.
This mandatory Service Node upgrade brings an update to the storage server with an updated version of oxen-libquic to resolve the crashes and fix the recent Session network instability.
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
- https://github.com/jagerman.gpg
94ae95376a4853fe50f03760cae2a46e951485a233ee38e70c2573cc3f4c1588 oxen-storage-linux-x86_64-2.7.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmaQJuIACgkQxJks56iN
QmJ1LA/+IxRc3OI/3zn7GPwplokYICFlotP96o/pUAyxoA2sUO4OpCdVdk/10+Us
TY+dpQxCp/jFVjAPqNlbVllEtj2Cc1RM/503b6LrPUpluQ2dQ2bjwwYbXxMGNr4w
UW36SGw3rgYFdmG9jOtjJSg3OSqlyxouPrx9q7JFUPlhd1a19h84yEJTyrROVe/a
vSZ6Ei8hUxuyKLP7qrFjCYeC9JSqNMUQr6OeV6smD73KgDwBE6tfAnOjGC6hotzt
XbThB40+8tvtiZpmeX5t9THdLWL9MiGsJS7MEnpLKGFIHnDZ6rGHanKwxCl72fVc
Kske3PjFj+S6RwGzbV8KWqKfAR9IMa7CGmhezhWQlnvsebxL3BmxthysxVRtgN5F
blN652VGDgYoEzYlZSUmho/BsrvO/3EJwgDbxb0fJLal0usOIOKBymZuSkansp7S
JTTkza0UO8zRMPjFFZv0aap9LeAA3HUFc0LfVM09xQlZYyaSqgdib/f+M27cuAb3
cpcPDokyaeKCcXSXLtB9lWB3AarW4u0l4KrvNKINzCm93S3EuVbTY5M4QHA+14sB
a30wcjcrGwO5JOBPyvB3nkwOyaL/3GIk9DHGC7HHwEX21+teH4TbymFg2DybVHrY
SpGusO2j4k/lM3tECuqd2SynGRSuHn/WojSc7E1AZCB8RvCA9i8=
=Sq5Z
-----END PGP SIGNATURE-----
Oxen Storage Server 2.6.2
This release fixes an issue in the earlier 2.6.1 release that could cause an occasional storage server lockup and crashes. It is a strongly recommended update for all Service Node operators.
Full Changelog: v2.6.1...v2.6.2
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
- https://github.com/jagerman.gpg
8cace1f5e4ba69487f486acc98b24237bf56d0c12ddfba3aedaea1a9bc5e6c63 oxen-storage-linux-x86_64-2.6.2.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmXVVhsACgkQxJks56iN
QmJOYxAAhd5rwXZ6dOQGark+cKpSM2vEbnYUaRgMjibAkmrcOTmt+FpFvDJ74SS3
x+nfGKWeKPWaZISb6ggq6bLIh2M+SjVsr+UaS4nynLHsxEo/jNzHaQ2o3MB59KUK
r0HYmW01hwQ3FcCzXW56t73ke7ohFBY7kdP7tCzZTiM55WR4FjMbcQZyW4wMUdFe
Fz9HaA53gF0kSFgvLQtH80XLzGl3MllckocsggFQwNd29rd9XEUNaPW33fKOgz7b
XXOc4FRkfLL3jKlY/k+yXmWpxGFvhMgFb+FUW3285HWrPmFqyGa34ik/YcPmJqCL
x9KWQqOMatgkmaWo+BTukx+Rqs9jbZ3rHsHeXZLSVSbFSJZAmHdfkytU7yXN6ngI
taC1xygkKRCgLTNJErmKpTgkurk18hAR8KEQ0aR/XevvrlhxJ4DESm42UeNcNC3N
rvqhEc/HPdRgHZtmoTTI+wZC4BildHNSuRCA0CaCQDU6X+wqs2KEzOwt2fyfqvqz
2jxEPriuNHjIntX7FlbehS+7GvLExQm4G2HTjuttOn8rpFQcfiU1oXqlxRqC8Gi9
Nkmx6pwSYN9wMFSCP6nMx261B7F0O5qDgdcWyDd4Ojhs+/PKISQWBjzXvZuRNzFe
fN+gE4wXdMQe8LoGE52JggMfHTaxSolQHuPFaPXxZTXvFXNDShI=
=XXvI
-----END PGP SIGNATURE-----
Oxen Storage Server 2.6.1
This is the 2.6.1 release for the mandatory service node upgrade required before block 1,523,759 @ 20 February 2024, 0:00 UTC. It should be installed alongside oxen-core v10.4.1.
Note that this release adds a new listening port: we now listen on both TCP and UDP on the OMQ/QUIC port (22021, but can be controlled by the lmq-port
setting), while previously only used TCP traffic on this port. For most installations no configuration changes are needed, but users with blocking firewalls or port redirection will need to unblock/redirect UDP traffic to this port.
The follow release notes are for the original 2.6.0 release:
What's Changed
- New authentication mechanisms to allow the upcoming Session groups reimplementation (previously called Session Closed Groups). Although the previous 2.5.0 release added some changes aimed at closed groups, these were found insufficient for Session's purposes and, as they were never used in production, have been removed from this release.
- QUIC requests: this releases allow QUIC connections to be used instead of HTTP or OMQ to make requests to the storage server. This is intended to allow for more efficient, more reliable connections in future Session versions.
- Add "outbox" namespaces. This (experimental) feature may allow future Session clients to optional "publish" info for other users to retrieve from the network such as public profile information (currently such profile information is embedded and repeated in every message sent on the network).
- Storage server now uses a SQLite connection pool across threads rather than forcing all threads to share a single connection
- Added a new rpc endpoint to delete all messages from all namespaces
- Various fixes for issues identified since the 2.5.0 release
2.6.1 hotfix
The 2.6.1 release fixes some issues found in the initial 2.6.0 release:
- Fixed an issue where expiry updates of messages were not being properly propagated to the rest of the swarm.
- Fixed QUIC rpc not supporting initiating onion requests.
- Fixed an issue in the connection pooling code that results in occasional "database is locked" errors in the logs
- Got rid of the "Access denied to sn.ping" warning that shows up relatively frequently, particularly on nodes that have been on the network for a long time (this is caused by old, deregistered nodes that are still running and still mistakingly believe they are active nodes).
- Fixed the warning about the QUIC port never having been tested; the warning should not have showed up before the fork height when such testing actually commences.
Full Changelog: v2.5.0...v2.6.1
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
- https://github.com/jagerman.gpg
ebe910bf1d783436e4c3ac0291bd827d46e12146a868298aec52f902e5117d41 oxen-storage-linux-x86_64-2.6.1.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmXMRqcACgkQxJks56iN
QmJXkw//X8gYgvZD+m5IoCKQPgVGVHYudJXXi7FVFPIlgfUSDRERpm/zsQDevlrt
8ZiZGzhKfHmznQGPKmTZsagOL5+/wR9Wlo5zjYFQazGev6W9VIo3kqcHTtidSrsN
+41xenbj4VgYpHjhaUUSpHdr3bUN8cfnyd7q+1R+Z8wZZnYI8mcc29fBpeQHnqXD
8iDS8i6OKPsf/aIVMpQi9XIfar+wyGyWDjpvJ9R4i6qOumP/xOwbY/A8cqgVINKF
PXA3x7NCVqK8zG3+XJv4zZQx47bqD+ky/hTXVmXnFRomwig5s3sPrUn8DKSAUzcq
4Dw800CNafroUzec78KlkTMNdzYd3ju8OVoIoLCjYESn4oTRH1I3oMH2s2/dG9gd
DAvsbkbaIfKIunb/LqtqaOJSJ0MBlvWqYGwNHxdkB5qwkxh2FqTO+qMx+kfx5bW9
tGnD2u+jdOQ8xeE8v/gXeb6gVnRfhhCFdkF9HUKAlpBaMitWAt9mB9j97rQe+/6T
lNvwMCuJ89S5YPWGkX4VTwDRMZtD+uWTohYjVf+FmYXuwd/p7vBysQx1Q/kqC5dC
+g0EjvQujRREJS7twK4xNrxj5m9e6JTQXPtIH2XMwV9nLpBb/98ypnxQnZwAh/uA
J+uJP2H2OO7iTONsUiy5NMf7vX0IWeucVmg69WaOhmp6i/NsfjY=
=qpTS
-----END PGP SIGNATURE-----
Oxen Storage Server 2.5.0
This release adds new capabilities to the Oxen Storage Server that are required to enable new functionality and capabilities in upcoming Session releases. It is part of the Oxen 10.3.0 mandatory update for service nodes and must be updated on server nodes (along with oxen-core) before network block 1253039.
What's Changed
- Oxen core rpc fixes (#463)
- Private namespace message types now allow up to 30 days storage (#464)
- Stored message expiries can now be selectively shortened or extended (#467)
- Message id's no longer use the storage timestamp when generated (#467)
- Fix the store endpoint's sig_timestamp optional signature handling (#468)
- Misc updates by (#469)
Full Changelog: v2.4.0...v2.5.0
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
- https://github.com/jagerman.gpg
7d22d8b619281e5b553a3724bb70e82c09975c36bb7fc306edecb46e150bbb7c oxen-storage-linux-x86_64-2.5.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmPTDkQACgkQxJks56iN
QmJgahAAjUFZUfFoHfa0RFOZx+gAFCnHHiM9ofgfiggbSPE9pUnMpU0njJTNDHB8
e7/yqWGLVNpP6oqLFPUzn1E+C3YeVkfMUtezHzzXmR+pS1kBvAOzYp6WDwLVSuTt
Wb+rmfbWARDWo16HwxwXZj6pKUAxWCVvVeJJIOoKPlY2QwBU6sjW0sAohPWnlQh9
c1w6nXptoz6CwwSIA31dulGjquhRF6xbT+HK3iQEUymLadY9WkjIooq/zFX+ZUvh
OFZe9I6Z3YRjsp/BBNLDUo0iVNjan9Wx93lPiF2CJrfiO9JB543YINlp+JlkPkN2
KkFLKoWpc4d9KgRQyX0SPc4ljySl8Du5QmGKb+PcmuCXtyjZSgdEfNIIEf2i+3ua
PDqZgE/prG3hIY6CJRBRd9222mZ4nlfnjraYPy98Gif8RhTRQBHzb3hxI6KmwmWL
DAigfRwWv/QDGalackh1kzRHoSKfKuxA9i0vrke5O+hrTPSOePQ/Fc05mr7GW6H4
Gr8RycqQgrbG+4Dvt/VMLPsgf6mxSmhvpmem/tikv44dc3IeTnlItKCysMSOQETJ
zz+q8hku77GP2xFo8pBrpBHp/ikCq2oOQ9jDqNsbFZTbqaQbo9Tzqncf79zfsUEF
zcg92S0ENfB3+71+py09FQ/rz9ElBxkzbJcDFMFWgixAMiy+1MI=
=ggn/
-----END PGP SIGNATURE-----
Oxen Storage Server 2.4.0
This release adds various new storage capabilities aimed at enhancing the security and capabilities of stored messages. It is a required upgrade (along with Oxen 10.2.0) for the upcoming Oxen mandatory network upgrade.
Changes:
- Subkey authentication tags can now be revoked for an account
- Subkey-authenticated requests are now permitted to extend the TTL of stored messages (previously only the main account holder could do so).
- Add a new message subscription endpoint that allows authenticated connections to monitor the arrival of new messages to an account.
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
fff9a4f56dac8ca9cb74995eb1560479d7ec9a776ae7c7b1029d45e3308f4dff oxen-storage-linux-x86_64-2.4.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmMQDd0ACgkQxJks56iN
QmLxOw/+LubUeXjqQm8t0pCxksaB2dpWa+1EtYepHHNhicHwPHfKZrO4DgwBYWMg
7+fLSojbE88DdkqlYFzK3+SWof8YMXt1gGFeOW5T5x/pS0mciDsfpeKN9TSFRG44
rkByK7soGqNYEf62wVwPVm2Eygj6QmSYT+Tqv7d4k+GSJStcjNiaehtAHjNA6jXh
K+6HTpo2RW7mWXecPPojQEGUmeGwbLwLfmU5unro9LkLUsGa7DZ1BxPQafKNhXLa
0limW6sevjdghcHhXKPQ6DfWgDD/C1MTeY3mjTJBgAmtSPJ7YN8Qy/iSLLSFRM1E
kzYD0m4SGJEe9eC1zPrGRuR17oeE92sY4kCadYBinOQhKjcnEirETAOFZDn+r11E
6DPvA8Q89N8/zfk7nGvOfccC5t9pv/6qba3xT6TdWR57VUblVyLzNt4zFe9jIP0S
E2FjoGTQ8UT7v6hKUwiCJIcHSraGrjoQw32KqanHWkEUpARiECbLuH69RiujOQpc
ZJ8ZQgRhV2DEt7jaGyECkI35YwsTK1AsUPCW5NhUURxa030o1OPGLs5Q7iuv771N
k7AyYo9PO7aSgJ+zVQ/yGy2Ep4SisFTK0wkEmuFlBumTSKix9qJARt+h5UgbA0cZ
kR9yz3S+E9HTZV8v5udaKtrZWuK1c6ZqEJRTqqWuhHKIwk6DwSo=
=4i6U
-----END PGP SIGNATURE-----
Oxen Storage Server 2.3.0
Oxen Storage Server 2.3.0
This release adds various new storage capabilities aimed at enhancing the security and capabilities of stored messages. It is a required upgrade (along with Oxen 10.1.0) for the upcoming Oxen hard fork.
Changes:
- Message "namespaces" allow clients to store and index different types of messages in the same account. For example, client configuration messages will allow Session to more easily manage multi-client synchronization.
- Draft support for subkey authentication allowing someone with the master keys to an account to issue restricted subkeys; this subkey authentication is expected to form the basis of a future closed group overhaul.
- Beginning shortly after the hardfork, authentication will be mandatory when retrieving most messages.
- New "batch" requests will allow Session to more efficiently contact swarms
- The storage server now includes the service node pubkey when periodically pinging oxend. Previously if the oxend keys were changed and storage server wasn't restarted the two would remain out of sync, eventually leading to a decommission/deregistration if not corrected.
- Message retrievals can now be limited by total size, rather than a fixed count, allowing clients to download more messages in a single request when most of those messages are relatively small.
- The code was considerably reorganized to be easier to read and work with.
Signatures for static release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
4f72e926bb7f457bebc6fc3c7cb424817f38d481debe45dab1bd53408889f267 oxen-storage-linux-x86_64-2.3.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmKYEV8ACgkQxJks56iN
QmIlLA//UcIWpFDXpSUNyUzqlZqxb9qSe1mvMwC/dvfx/B+ui6rZL6QJNA2bLKxu
OIk1HzFqFl0clEYFhKWRL6SYJ+W+VBxvf1y7H2kRmwgeW32NEpMfqFjd6bnI29Zo
YFaEtaZQ8GBhssxRaeJrKe013m5CbMnAQKPTSrsoou+dJF2wwo6b4Auqyc3lF0AE
nqZiwt8zIiDYpjz0OfVF8UHXQZRHVrEykWDLFbbpbDuf5WqTG+MxmWrBvxYKyeMR
RouTvO88bYOlWERI9AE5RJbwsgdY69MiXv8qg/8UmItto+hOZIGt9RWGolA3lF2W
WStPz9360L2IwL2ArkVGNSDsB5DFaztk1yyllV9PyvSht5YSElaNCMxu3Ivvy68u
hhvZigDjK5RptvMs4E0IF37y9CiQPHBVgEXfT08JU8l6k4RmKQL1DwI2p0fzScE1
cRe9Ul48C3t19pQQ9wuisW79SGsq7mhtkx3y/vxXwMXYdMiipokUHWwdvwhqbkPr
bTcKYhFtq2XtnSHNUz8vdNcjMFD3BmxYv2BgCee9eov5suXsTISymKWoMz2u2mBt
N9ZalSXZxwvUojEmV8nXuizF/SYbl13XFyip7M/GxsdPM6ti9o/5NV+599fp8mWW
CsOlrwqpEyHWmk+5vcW9NtM2JpB4U/i+cUOhi4w9xdwi4ztrcCE=
=pxQx
-----END PGP SIGNATURE-----
Storage Server 2.2.0
Storage Server 2.2.0
This release is a significant overhaul of Storage Server's internals, moving storage server to the same communication libraries (oxenmq + cpr + uWebSockets), adding new functionality for message deletion and expiry, allowing better delivery confirmations, and significantly improving the maintainability and performance of the storage server.
Note that upgrading to this release is required for Service Nodes before block 839009 (due 13 July, 23:00 UTC), along with lokinet 0.9.5 and oxen-core 9.2.0.
Changes since 2.1.x
At a higher level, the new changes here include new features allowing clients (like Session) to directly delete some or all messages, to update expiration dates for messages, and allows clients to reliably use this new functions plus deposit new messages more easily by only having to contact a single swarm node with reliable confirmation of the storage/deletion/retrieval being delivered to all members.
Additionally the client RPC interfaces are now carefully documented, easier to add to, and are now fully functional via oxenmq connections (in addition to the existing HTTPS interface). The HTTPS libraries in use have also migrated from boost::beast to use cpr (http requests) and uWebSockets (http server), which are the same libraries we started using in oxen-core in 8.0.0 (which solved a lot of RPC reliability issues there), and significantly simplifies the HTTP handling part of the code.
Various RPC requests for swarm-wide operations (such as storing messages and the new delete/expiry APIs) now have a verifiable, distributed interface which means storage server clients such as Session no longer have to worry about delivering to multiple swarm members to assure delivery. Additionally message retrieval requests now have optional authentication; we intend to make this mandatory in a future update, one retrieval authentication is fully supported by Session.
Internally, the storage layout has been overhauled to be more efficient and faster, and solved some looming issues (such as using rowids) which would have broken at some point in the future.
Finally, this release now uses jemalloc by default; upon investigation of significant memory usage it became apparent that much of the memory waste was due to memory fragmentation, and experiments with jemalloc have shown significant reductions (over 50%) in memory usage over a period of days, which should make it less wasteful, particularly for memory-limited VPSes.
Signatures for release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
2c4a6cf39307f9cbbbefc1f5f61be3157b15a421d333e9a34ee14315e864ba33 oxen-storage-linux-x86_64-2.2.0.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmDlD5oACgkQxJks56iN
QmJzsw/9EmyYjVf7FgDeSHl94EFTkl6nXyhnM9sh/DaiAY3aOkjMWPn4MrFYIvVx
8ZzFbbcATt8LjJKFA/J5oLEKJztE7zrOHklmLVdCX/EbNFBaDrJSwz6oOJaNrEYJ
z7nSa7ZJw5IIkxSlyU/Qq7ODzP62HcCFwHmT0UjyuMXQc+qoMCcKd/VWRPCIY+zw
yW+w6my50ocz3mn6DBrWGQfTzgX1sHR75j/reiPESMDxbvoCV4v7GXQ0X6lEsvCU
Z/xbdHlhak+7AYhKfUmRK0S42SqIdzErg9m68RfY4nv3Q/TD5QUniocvm3lOONGC
QyTnSB7U4fxrUgKpBoyVBuWb8ATcoCp2ECyVHPO+ZCmKi9nSVcBgysd8Rso6x+9k
Yv4aisgyDTwIYPBgA8CWCC9wmQJeEvKABKQGMprOv83MRiH0vv6ITHWNar0OFSSZ
VA0CUNeZpIVSZgFk+h98B6M2Aruk1jSi+tIPIsZBjF7RmTy4bcs/aBgv3Xd751OM
TjWwwsaLrHkDyYlQ0UmOZ+RF3yspunMviTFTAv2VHx4ulxnKIY5/Eoy0AcsKlyzp
eR4Bm4Sg6xqbLbDxpHxLV4IjwNbTQY/Gy1bQYOyhRggZzjOh2d2gPIn7hGJBGJEA
qcD3YOjJDC9khx27LZ555vmaKhCXJtpKS4EgFvQiriAGo0QUPYI=
=L9tS
-----END PGP SIGNATURE-----
Storage Server 2.1.1
Storage Server 2.1.1
This minor update fixes some minor issues and makes some improvements to storage server; it is a recommended update for all service nodes, but is not a critical update.
Changes since 2.1.0
- AES-GCM encryption backend switched from libsodium to openssl. This means that storage server can now be used on older CPUs or VPSes that do not properly advertise support for the CPU's AES instructions.
- Limit the maximum time between failed storage server tests. 2.1.0 added a cooldown: after each consecutive failed test SS waits an additional 10s before testing again, but no maximum was being applied in 2.1.0; it now maxes out at 2 minutes between tests so that fixed remote storage servers will be noticed sooner.
- Remove "missing ed25519/x25519 pubkeys" warning in most cases. It's normal to see a few of these on the network from time-to-time, so suppress the warning when the total number of missing keys is less than 3%.
- Fix spamming oxend with
get_service_node
requests while syncing (which cause warnings on the oxend side about too many simultaneous requests). The warnings are safe to ignore, but this update fixes the cause.
Signatures for release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
f30118c210d21cc23efd13aea8e69c3e509ee068d6ab61c6555235d08259b95b oxen-storage-linux-x86_64-2.1.1.tar.xz
52af84d26b3d7332f89d5264c2752d7ebeae9ef63ce950e8b5b9b4d69b0ea702 oxen-storage-macos-2.1.1.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmCIrgQACgkQxJks56iN
QmKp+Q/+PHiU0vgNdWoA80H5sj2IToXvsBij3EHGN7yWenbp05AHSHipIaE7hOTj
4UI0ciEn5fDjP+TmIksaAoqYI8dY/Iex3Lta5j1Rf/wUXo4wrzWjTsmkb6v15b5K
s/SDtHbQEvbjCLjS3RXLJBuG0gbfYr4fSbPK3Pyh8Ic5SHJOsAGBsSXj3alUyCLD
exrBeCz2sswq1Vv9bweDoWIvZ+Ckbiitx3/IxiowTVvm0JUKG9ZZSbzi8pqBVL5c
4b5oWkc3Gpb/bhlpStDTU3P/DGile7qP2GjZHC0oCxrS4DdyEJS7qw+u18aFJJPE
i0T2TGWm/pRQZTK0pyV0VHQ8kkOBQxUoKApPv+a9j8ddenC0dVTtQ44AuNVX1U1d
L/iDdMD1jhx7zib6/Jx5dE2xtL4rLlzgK56D+IKA8p/6O2rwPXmraVUM7GQf+Y9v
zcbvAiaSD1utcxHml0vNhsMzGQkXnnTuCEL9hWVduGzK73nt8LIEl3JKmfrEGZjq
MsXk0iOr+LcHDHfh2BRi6LdGP6Obn94lW/txr5RhvaWPCr1xO5Mziy7+uGZiOScI
qGdn+cMjzs/OmlabVzV29K0nCnIPmRfmXIah/jU3ck1+oIASxw1/cgdfyRH8TBx7
AAFtrmVX+VQ+5z9R9zTOVm7HuSV1Rrz5ZMZG8EqoXF77L9wedPs=
=A+EE
-----END PGP SIGNATURE-----
Storage Server 2.1.0
Changes:
- Remove POW requirement
- Increased the limit on the number of messages retrieved at once
- Allow onion requests to IP:port
- Fix not updating ip addresses/ports of snodes
- Allow proxying certain requests to oxend
- Limit the number of hops in onoin requests
- XChaCha20 encryption support in onion requests
- oxend RPC now via oxenmq rpc (you may need to update command-line arguments!)
- Various refactors
Signatures for release binaries
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Signed SHA256 hashes of release files. These are signed using Jason's GPG
key available at:
- the oxen-io/oxen-core repository, at /utils/gpg_keys/Jason.asc
- OpenPGP key servers (Jason Rhinelander <jason@imaginary.ca>, A88D4262)
- https://imaginary.ca/public.gpg
32520234bc4daeba9abe93c7b6727b831c8cb7874eec8040ca048917fa60b367 oxen-storage-linux-x86_64-2.1.0-4-ge43c11.tar.xz
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEZjYdjjyW5Bxty3BRxJks56iNQmIFAmCCfAUACgkQxJks56iN
QmKogRAAovz3x8GC3hL3z9/1DzsYhY3y026Po6cPiipfS4/B9gApaShVFi4ukpQC
VHc5XXJbLB2hODkeWLAFBMDYO0nbozk7XUFhjlAYAgXCotk5YkHXnKagx4jyqWPt
lpOnhAZLGjzZjOBttk0FdGzdZ+5LkDhzGOecokavY5VU6lvh9r6nTuv0DkDeGyrU
hyPgKui8SLX8BzT/joYw3LCh7gNWyKGlfCPKBt/4gPNyxSajFKnbexVpxs4c7Ba/
D0wSBz/xtOAMcfQydq5VGGnjunH0FuscmhDopqviyBIiddOt/Z9tWGGqEn3Mft53
2LLZMWOzCNEep8D660MLgEucbldj6n8qGA08I9xCoqQLxXKhFbHwiAu0fIJ/LQll
/hExAmEefD4M05JbUOcR1IA+qTYIWXCOoT5pe8pcjs4KQslivJom924UeCTtfMlo
BS5eVUiHsXSUj/xvnx/g1dA1Pq4A2mnvVJ2z7U6Wg01PMMoZkECRx38dxmIqjGiR
ySxEIHYuE6c37fUFarFHHuVVj9NZlzwWTk57VSH8OY953Gn88fIE/qIsNqmSARkf
LKt3wNmiDnzwQfdyF759qstUa2HY5msdJ8+S4jIbVm5ftPWjbYAeNBIMHZbctLwT
+ZW/BUaFNV7yR31K8HEDwA6xNO+UIgxDH1gnyJeh1mmQmaoBeeg=
=vuSq
-----END PGP SIGNATURE-----