Weekly Dev Update #56
Hey Y’all,
We’ve been busy bug catching this week! The testnet period for 4.0.0 Hefty Heimdall is still running, and we’re still working hard to track down a number of bugs that have appeared.
Last week we released the beta version of Loki Messenger, which was well received. Through testing we discovered a number of bugs so we’ve released an updated version which can be found on Github.
Service Node operators should download and update to the 3.0.7 release which includes security patches for some DoS bugs found in Monero. Click here for instructions: https://lokidocs.com/ServiceNodes/SNFullGuide/#updating-your-binaries.
Loki Core
Add Service Node Checkpointing softfork for mainnet:
Allow state changes in the Service Node list for non conflicting states:
Stop discarding alternate chains that have checkpoints:
Switch to a circular buffer for recording Service Node Checkpointing votes:
Improve print quorum state, add some RPC updates:
Add disabled-by-default quorum storage:
Change when reorg message is triggered:
Don’t use architecture dependent sizes in RPC calls:
Add a number of security patches to master from upstream:
Improved print_checkpoints + json_rpc get_checkpoints call:
Resolve pubkeys from state change:
Fix broken unit tests from verify_tx_state_change function change:
Fix height rejection rule:
Add target height field to get_n_service_nodes call for Loki Storage Server:
Keep RandomXL up to date with upstream:
Add ‘State_height’ call to RPC:
Loki Launcher
The Loki Launcher is a node JS package that will allow for the independent management of all the components required to run a full Service Node. This includes managing Lokinet, lokid, the Loki Storage Server and any other future applications we require. When Loki Service Nodes begin to route data and store messages for Lokinet and Loki Messenger, we’ll recommend that every single Service Node run the Loki Launcher.
What’s going on this week with Loki Launcher:
We released the updated Loki Launcher for the testnet and got some real world testing done. Several bugs were found and squashed. Additionally our 3.0.7 release turned more users to the launcher for the first time. We took on all the community feedback and tried to reduce confusion to improve the user experience.
Changelog:
Version mode added
Read version from package.json so versions match
Handle stale socket and permissions in client mode better
Output where download-binaries is saving the binaries to
Add addition checks to make sure saved PID is actually a launcher PID (not another process)
Non-interactive alias for daemon-start mode
Refactor launcher, stop functions so more modes can make sure the launcher is offline before making changes: fix-perms, download-binaries
Put a try/catch around reading launcher.pid so we don’t exit if launcher.pid doesn’t exist
Fix filesize path in download-binaries
Fix double callback in download-binaries github api 403 retry handler (mainly for CI)
Run testnet tests on CI (was only doing mainnet tests before)
Add storage/network paths if enabled to fix-perms
Only report lokid_key if blockchain is running to reduce confusion (file exists even when it’s not running)
Always use debug mode in tesnet CI
Prequal now creates the storage data_dir if it does not exist
Lock testnet to preleases only
Bump package.json from 0.0.3 to 0.0.10, so git users don’t report the wrong version
Node 12.x (LTS version) testing and support
Only check for lokid key if Storage Server is enabled
0.0.11 version bump
Add loadBlockchainConfigFile to handle lokid options better
Mute additional version outputs to reduce confusion
Be sure to take loki.conf into account
Update README, link dev reports
Don’t output daemon library version
If start up times out, report error code 1 (mainly for the CI to let us know there’s a problem)
Fix interactive bug with STDIN input
Update ifconfig.me’s service URL
Add start-debug mode
Alias set-perms for fix-perms mode
Rely on passed in config more (don’t repeat the work)
Move IPv4 detection until after it backgrounds to reduce confusing output on start
Add changelog to README
Fix downloadGithubRepo retry to not restart all repos of download-binaries but just the repo it’s currently trying
Add start up crash handler for launcher when backgrounding
Github Pulse: Excluding merges, 1 author has pushed 41 commits to master and 41 commits to all branches. On master, 14 files have changed and there have been 479 additions and 198 deletions.
Lokinet
If you’re on our Discord you might catch Jeff or Ryan, the developers of LLARP, live streaming as they code: https://www.twitch.tv/uguu25519, https://www.twitch.tv/neuroscr.
What’s going on this week with Lokinet:
We tried to remove cppbackport and refactor the configuration system, however after review we decided to revert some changes. We also attempted to fix the broken MacOS port and made some minor protocol improvements.
Changelog:
Revert removal of cppbackport from vendor directory:
Close session after 30s no sends:
Change ping behavior, pump write when handshaking:
Relax timeouts for handshake:
Re-import cppbackport:
Refactor config:
Disable RPC by default:
Actually set config for network:
Reverts 678, 677, 669:
Update LRTP documentation:
Fix threadpool locking types:
Don’t lock when iterating links:
Attempt to fix MacOS port:
Pull Requests:
Refactor config redux:
Loki Locker
After taking feedback from the Loki Locker beta testing period, we will soon be releasing an updated version for public usage.
Update to Loki core JS:
https://github.com/loki-project/loki-core-js/commit/2026e96d4830c42f573de41417a385a01b6b830c
Various updates to Loki Locker here:
Loki Messenger Desktop
Fix password error that was causing database to be deleted on restart of Loki Messenger:
Update outgoing messenger connections and retries:
Check for IP or address when removing nodes:
Fix uncaught exception that would lead to messenger send failures if a single node in the swarm was down:
Remove nodes after a single failure and only wait for single successful send for confirmation:
https://github.com/loki-project/loki-messenger/pull/321
Fix registration:
Storage Server
Cancel the deadline timer as soon as possible for incoming connections:
https://github.com/loki-project/loki-storage-server/pull/218
Avoid using potentially closed socket:
https://github.com/loki-project/loki-storage-server/pull/217
Replace deprecated RSA function call
https://github.com/loki-project/loki-storage-server/pull/215
Unsubscribe connections from message notifications:
https://github.com/loki-project/loki-storage-server/pull/214
Add bootstrapping process and IP addresses:
https://github.com/loki-project/loki-storage-server/pull/213
Close sockets after SSL teardown:
https://github.com/loki-project/loki-storage-server/pull/211
Unit test for command line parser:
https://github.com/loki-project/loki-storage-server/pull/209
Use time_point now properly for the client limiter, update the tests so they don’t sleep:
https://github.com/loki-project/loki-storage-server/pull/207
Declutter main:
https://github.com/loki-project/loki-storage-server/pull/206
Allow specifying arguments via a config file:
https://github.com/loki-project/loki-storage-server/pull/204
Deactivate nodes when they are decommissioned:
https://github.com/loki-project/loki-storage-server/pull/203
Make parse_swarm_update take a block update reference rather than a callback:
https://github.com/loki-project/loki-storage-server/pull/202
Messenger Mobile (iOS and Android)
Android Messenger work can be found in these repositories:
https://github.com/loki-project/loki-messenger-android-core/commits/master
,
https://github.com/loki-project/loki-messenger-android/commits/master
.
iOS Messenger work can be found here
:
https://github.com/loki-project/loki-messenger-ios/commits/dev
,
https://github.com/loki-project/loki-messenger-ios-pods/commits/master
.
Thanks,
Kee
You've got mail!
Sign up to our newsletter to keep up to date with everything Oxen.