Weekly Dev Update #52
Today’s our 52nd Dev Update, which means we have been doing them for a year now !!!!
This week a lot more work happened in Loki Core in preparation for some of the interactions that will need to happen between lokid and the Loki Storage Server. We also continued work on the Loki Messenger and the Loki Storage Server to support the Loki Messenger Alpha, which sends messages on clearnet instead of through Lokinet.
Additionally, our iOS wallet was released through Testflight for public testing: https://testflight.apple.com/join/GTzgsBwC If you want to test it, please only use small amounts of Loki – and let us know how you go, we’d love some feedback! We‘re now in the final stages before we submit it to Apple for general release.
Service Node Checkpointing, add more reliable transportation of Quorum votes and prune old checkpoints:
Don’t access array OOB when parsing fractions in staking:
Require Storage Server to be running to continue sending uptime proofs:
Make –Service-node failure more verbose:
Integration test fixes for Service Node Checkpointing:
Print IP and Port numbers with print_sn command:
Add debug_mine_singular_block command enabled in integration tests to allow mining of exactly one block at a time:
Enforce miner tx version:
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:
Lots of change here. We’re getting ready to do an initial release so we can get a production version into the hands of Service Node operators before making it the default for Hefty Heimdall 4.0. After some additional research into installation/packaging options, we have come up with a new easier-to-use command line interface and have removed the need for a configuration file. We also added a bunch of features, such as a check, to make sure your server meets the requirements of being a Service Node, and to simplify software updates.
Implement SNBench, a Service Node prequalification tool that has been internally discussed for a bit:
Change default of requiring Lokinet (network) and Storage Server to not required
Lokinet.js allow disabling of rpc, count how many restarts, fix log path, allow disabling profiling/nat
Set up npm
Refactor most of the existing index.js into start.js
Create new user facing CLI to improve ux
Convert daemon.js to use new CLI ux
Deployed a central testing server and make SNBench use it
Make SNBench use portable df to measure disk space
Add CLI script as bin to npm
If storage is enabled but network is off, use clearnet mode for storage server
Include user-agent for httpGet to make Github API requests work
Refactor process management library locations
Bind Storage Server without Lokinet to default outgoing interface (NAT support)
Add download-binaries scripts to automatically get the latest Lokid binary
Update README.md documentation
Run loki-launcher in any directory fixes
Remove default launcher.ini
Internalise default launcher config
Change paths and order in which it looks for config files (. then /etc)
Add status mode to loki-launcher CLI ux
Publish npm to non-org
Implement prefix_path and var_path to help drive defaults and easier configuration
Add check-systemd migrator mode
Make sure lib.js handles pid files
Add “stop” mode to loki-launcher CLI ux
Update docker file for automated testing
Set up Travis CI
Github Pulse: Excluding merges, 2 authors have pushed 71 commits to master and 71 commits to all branches. On master, 18 files have changed and there have been 1,742 additions and 937 deletions.
What’s going on this week with Lokinet:
Lokinet reliability continues to be our focus. Jeff attempted to check libuv against our current event loop to see if we have any potential issues in our event loop layer. Tom has been working with Jeff to implement new helpful protocol errors and speed ups which led to the discovery of a major flaw in HasSessionTo. Michael has continued to improve the metrics system, so we can use existing tools to help debug what’s going across multiple routers. We have decided against a 0.4.4 release while we continue to improve things.
Create memFn to make binding callbacks easier:
HasSessionTo() actually search inbound and outbound instead of just checking optional whitelist:
Update contrib/cluster-shell to make sure cluster is configured as routers not client
Work on new LR_StatusMessage continues in:
Started a port to libuv:
Loki iOS Wallet
Last week we released the Testflight version of the Loki Wallet for public testing so we could gather feedback on any issues users were experiencing. We are on track for the wider release this week, pending Apple’s approval of our final build.
iOS Wallet may be released this week (pending Apple Store approval). You can see our up-to-date work now in master here:
Loki Electron GUI Wallet
A new Loki Electron GUI Wallet release is coming up soon, which will include a number of quality-of-life changes and a Portuguese translation.
Portuguese translation added by community member:
Add staked Service Nodes to the unlock tab (allows users to easily see which nodes they are participants in and easily unstake):
Add a warning for Sweep All command in Service Node tab:
Warn stake unlockers when unstaking on a shared node:
Add right click menu for pasting into the wallet:
Loki Messenger Desktop
Allow the messenger to be able to contact clearnet addresses instead of Lokinet:
Allow client to make https queries:
Ping lokid (used to maintain uptime proofs):
Change SSL context to TLS:
Enable SSL for Client Server communications:
Save and Send IP and Ports to clients:
Messenger Mobile (iOS and Android)
Android Messenger work can be found in these repositories:
iOS Messenger work can be found here: