Weekly Dev Update #57
This week was particularly busy as we worked towards the final binaries release for the mandatory upgrade period. Thank you to everyone who jumped on testnet and set up nodes – with your help we were able to identify a host of bugs which were fixed in our final 4.0.3 release.
If you are a Service Node operator you should upgrade your node to version 4.0.3. Instructions on how to do this can be found here: https://lokidocs.com/ServiceNodes/SNFullGuide/#updating-your-binaries
Revert to manually serialising checkpoints/quorum:
Make testing_quorum JSON serialisation work for input:
New print_sn_state_changes command for showing changes in the network over time:
Checkpoint quorum fixes:
Correct checkpoint votes using the wrong quorum:
Document checkpointing quorum generation rules:
Checkpointing dereg fix; pre-fork mainnet dereg vote relay fix:
Merge everything from dev in the last few months back to master:
Rollback chain when receiving conflicting checkpoints:
Use autobind IP for outgoing sources:
Update print_checkpoints to be integration test friendly:
Rescan chain when difficulty doesn’t match:
Use quorums N-MAX_REORG_BLOCKS_POST_HF12 for checkpointing:
Don’t enforce blockhash in checkpoints:
Add softfork code for Service Node checkpointing:
Allow state changes to create no conflicting states:
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 two versions of the Launcher this week for the 4.0.3 release. There were a lot of fixes for various crashes, but also support to be able to run versions 3 and up of lokid on mainnet. We also added extra startup checks to improve our status accuracy and made some minor user experience improvements.
Prequal additional configuration system for Storage Server
Update prequal ports to test
Rename port names, adjust prequal output
Abort launcher start up if Storage Server port is not open to the public
Handle “port is in use” error handling better
Store stdout/stderr for launcher when backgrounding
Add *-server-port-check args
Wait for blockchain-rpc port to be open before considering start up a success
Temporarily collect Storage Server startup info for 10s in case of problems with output
Report if the launcher was already stopped when stopping internally
Make sure certain modes are only run with root
Activate Storage Server based on blockchain binary version
Only pass version 4 parameters when blockchain binary version 4 or above
Reminders to restart loki-launcher if mode has stopped it
Strip out launcher arguments from passing all the way to blockchain startup
Remove duplicate Storage Server port check when backgrounding
Put try/catch guard around process check to prevent intermittent launcher crashes
When running port test submit a disconnect message when done
Add unhandled exception logger
Improve HUP information format
Process blockchain stderr
Make sure blockchain rpc server is up before starting network/storage
Change Storage Server default port from 8080 to 23023
Up retries for getPublicIPv4
Untangle retry counter with various repos in download-binaries
Github Pulse: Excluding merges, 2 authors have pushed 41 commits to master and 41 commits to all branches. On master, 14 files have changed and there have been 590 additions and 196 deletions
What’s going on this week with Lokinet:
The configuration refactor finally reached a state close to stable. There were lots of MacOS and FreeBSD fixes, and a huge internal change to using IPv6 on tunnel adapters to allow more connections to a hidden service or client.
Revert Tom’s revert-config-refactor :
Fix llvm8 build, more MacOS fixes, set netid first:
Add function to set thread name:
Allow environmental variables override config:
Remove redundant else blocks:
Add missing cppbackport fs::path constructor:
Should fix FreeBSD build:
Fix FreeBSD build:
Fix minor warnings:
Fix FreeBSD build:
Disable shell hooks by default:
Fix config application:
IPv6 support branch, remove auto in config:
Add FindLibUV and migrate to use it:
Modernise LLARP directory:
Matrix build for Travis CI:
Refactor endpoint state management to a new class:
Loki Messenger Desktop
Start building a public chat channel system for Loki Messenger to enable large group chats hosted on external Servers:
Purge nodes from retrieved swarm list, filter 0.0.0.0 addresses:
Rename binary to ‘loki-storage’ from ‘httpserver’ :
Show warning if compiled without signatures:
Show the reason the Storage Server is not being activated:
Provide a min version for libsodium:
Improve error accuracy and logging:
Print endpoint with tostring:
Default Service Node signatures to on:
Bootstrap on startup and use the target height from bootstrap nodes to determine when we have finished syncing:
Cancel the deadline timer as soon as possible for incoming connections:
Don’t use a potentially closed socket:
Loki Blocks Onion Explorer
The Loki block explorer has been expanded to show a number of new things, including checkpoints and their votes and decommissioned or inactive nodes.
Updated RPC changes around quorum state calls in 4.0.2 (replaced batch quorum calls with new quorum states call).
Add checkpoint quorum display to quorum states page and to main index.
Add display of a single obligations or checkpoint quorum, linked where appropriate.
Cut off quorum display after 20 nodes with a “+ 7 more ↪” that links to the full obligations quorum details.
Add a list of last three checkpoints to the main page (and a link to a page with up to 50 fully displayed).
Messenger Mobile (iOS and Android)
Android Messenger work can be found in these repositories:
iOS Messenger work can be found here:
You've got mail!
Sign up to our newsletter to keep up to date with everything Oxen.