What is Oxen?
Why buy $OXEN?
How do I stake $OXEN?
Who uses Oxen?
What can be built?
Session & Lokinet
Get involved
Oxen's 2021 roadmap
Weekly Dev Update #154

Weekly Dev Update #154

08 June 2021Kee Jefferys

Hey y’all, 

This week the Session team focused primarily on bug fixes, and we also added some new features including ONS resolution on Desktop, and basic deep linking on iOS. The Lokinet team tracked down another bug which has been causing stability issues while investigating an issue related to network configuration. The Oxen core team added new Lokinet reachability tests and continued working on the Service Node reward batching PR. 


Oxen Core

Oxen Storage server 

  • https://github.com/oxen-io/oxen-storage-server/pull/433 

    • Make random message retrieval more efficient (the current approach scales poorly as the database grows)

    • Refactor how timestamps and TTLs are handled; we now store a timestamp and an expiry, but no longer the TTL value, instead the TTL value is simply a temporary value that can be given when storing a message to implicitly define the expiry.

    • Remove dead code/disused OMQ endpoints.

    • Fix SS not shutting down properly if it gets signalled while still trying to get the initial keys from oxend.

    • Change database storage to store bytes rather than base64-encoded data. Base64 is a transport encoding that is needed for javascript, but was being wastefully stored in the database too.

    • Change generated hash to be based on fundamental values rather than user-provided encodings.

    • Don't require timestamp and ttl to be passed as strings anymore.

    • Allow storing using timestamp+expiry (as an alternative to timestamp+ttl).

    • Expose storage rpc endpoints through a new public oxenmq rpc category storage.WHATEVER (e.g. storage.store). This allows clients that want to use zmq speak more efficiently to SS.

    • Add bt-encoded input/output support to the OMQ storage endpoints; this is noticeably more network efficient because it requires neither base64 encoding, nor establishing and handshaking new connections for every request. The OMQ storage endpoints take params either json or a bt-encoded dict, and reply in kind.

    • Clean up internals by moving transport encoding of internal values closer to the transport layer. (Aside from a cleaner design, this was also needed to get bt-encoded responses out cleanly).

    • Add delete/expiry API interfaces to delete all, delete selected, delete by timestamp, shorten all expiries, and shorten specific message expiries.

Oxen Mobile Wallet 


Work continued this week on Lokinet stability testing. One issue we identified were misconfigured Lokinet routers on the mainnet network, where at least one mainnet node was broadcasting the wrong IP/port. This led us to create a PR implementing basic Lokinet router connectivity testing, and while testing that we serendipitously discovered a bug with how Lokinet was (not) updating its list of service nodes from oxend; the longer Lokinet has been running, the more potentially out-of-date it becomes, and the more likely it is to refuse to connect to the next node on a path. We’re aiming to put out an update to Lokinet either later this week or early next week to address the various issues we’ve been focusing on over the past few weeks.


Session Android 

Session Desktop 

Session iOS

Session Open Group Server