Weekly Dev Update #54
We’re all busy getting ready for the testnet release this week, which means we’re busy combing through lokid, Loki Messenger and the Loki Storage Server looking for bugs and testing our edge cases.
This week we also did a new release for the Loki Electron GUI wallet which adds a number of quality-of-life upgrades for users, including being able to see all of the nodes you’ve contributed to, having the ability to unstake from nodes with a single click, and transaction proofs and checking.
Relaxed deregistration rules:
Rebase Service Node Checkpointing on top of new relaxed deregistration rules:
Service Node Checkpointing: Phase out tx extra deregister, add infrastructure for deregistration:
lmdb size/endian fix:
Restrict RPC commands related to local machine:
Error message formatting:
Increase transaction fees to reasonable levels (in line with Monero):
Fix SSL autodetect reconnection:
Enable dummy payment IDs:
Remove Ncurses and disable readline for Docker:
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 and the Loki Storage Server. When Loki Service Nodes begin to route data and store messages for Lokinet and Loki Messenger, the Loki Launcher will need to be run on every single Service Node.
Right now the Launcher is in a testing phase, so you should only use it on testnet and stagenet – though feedback/issues and pull requests would be greatly appreciated!
What’s going on this week with Loki Launcher:
We released the first version of the Launcher! and with everyone’s feedback have continued to roll out updates and bug fixes. We’ve learned a lot from this release, and we hope this will help everyone make the upgrade to version 4.0.0 of Loki seamlessly.
Fix missing parameters in check-systemd and start
Fix parameter deduplication in daemon.js
Include running configuration in config-view
Add better error handler to serveTCP
Handle port in use more gracefully in prequal
Work around setuid NodeJS issue for home directories. It would always return root’s home directory
Make “don’t run as root” recommendation not appear when we tell you to use root
Fix MacOS home directory detection
Support spaces instead of equal signs for lokid command line options
getLauncherStatus refactor to unify “waiting for start up” and “status” output
Include a “ctrl-c to exit” message in client mode
Precreate blockchain default config if INI is found but blockchain is not specified
Make sure blockchain data directory exists in fix-perms
Adjust download-binaries retries and timeout to play with Github’s API nicer
Support –config-file to allow absolute paths as well (as relative)
On –config-file failures output both paths searched
Node 8.x support for getLauncherStatus reports (Only Node 10.x+ support console.table)
Make getLauncherStatus reports a bit more configurable, so status/start up messaging make sense
Allow quotes in launcher.ini configuration files
Take existing downloaded blockchain size when running prequal disk space checks.
Disable restricted RPC
Change storage server parameter from db-location to data_dir to better match
Started up a multiple copy deploy on same host guide:
Github Pulse: Excluding merges, 2 authors have pushed 38commits to master and 38 commits to all branches. On master, 15 files have changed and there have been 588 additions and 205 deletions.
What’s going on this week with Lokinet:
Work continues on improving our metrics for internal testing and adjustments due to libuv refactor. We continue to improve the quality of the code and seek to remove any possibilities of bugs creeping in. path build status messages have been added as a pull-request, and we have high hopes this will lead to finding more stability bugs which we can squash.
Move metric publishers to their own files:
Remove libuv from makefile:
Libuv callback hell:
Refactor path build code:
Send netid to metrictank:
Move message code to subdirectory:
Tidy up pathbuilder code:
Fix up libuv close logic:
Clang-tidy llarp/ files:
Fix macos build system for libuv:
Path build status messages:
Loki Electron GUI Wallet
We published a new release for the Loki Electron GUI wallet which can be found here: https://github.com/loki-project/loki-electron-gui-wallet/releases/tag/v1.2. This new release includes features such as:
List contributed Service Nodes in the staking page.
Allow for one click unstaking.
Add proving and checking transaction proofs.
Allow filtering transactions by ID, note, amount, address or contact name.
Show a warning when sweeping all and unlocking a Service Node.
Show un-truncated Loki values in transaction details page.
Other minor fixes.
Loki Messenger Desktop
Use Random Service node list as provided through the get_n_service_nodes API :
Clean up various parts of the SNode API:
Add spdlog submodule:
Refactor logging system:
Use common interface for all lokid requests:
Use common function for all SN to SN communications:
Add HTTP_ERROR, only trigger callback once, move socket shutdown to destructor:
Use the same sink for logs, update command line args to make more sense, always store logs on disk:
Better command line argument handling:
Add additional logging:
Messenger Mobile (iOS and Android)
Android Messenger work can be found in these repositories:
iOS Messenger work can be found here: