Trusty Tyr Hardfork’s Killer Feature: Checkpointing

Loki cryptocurrency featured image

Loki’s Trusty Tyr Hardfork is now live, and with it comes a new feature: Checkpointing. While many of you will be familiar with this concept (especially if you read LIP-3), some of you may not, so here’s a quick explainer in simple terms.

Checkpointing is a process in which blocks (containing transactions) in a blockchain are locked by Service Nodes. For Loki, the blockchain is checkpointed every four blocks, or approximately every eight minutes. Once two consecutive checkpoints are placed, the blockchain history prior to those checkpoints cannot be changed.

Checkpointing is important because it prevents 51% attacks: a scenario in which a miner, or group of miners, gains control of 51% of the hash power of the entire network. With this control, attackers can produce a longer chain of blocks than the current chain, and force the protocol to switch to their chain. That is, from a chain which the network believes is true, to an alternate chain with potentially malicious intent. For example, with an alternate chain attackers could prevent new transactions from being confirmed, delay payments from some or all users from being received, render previous transactions invalid, and reverse transactions in order to double-spend. 

While 51% attacks are unlikely for larger market cap coins like Bitcoin or Ethereum (although hypothetically possible) due to the extremely high costs of gaining the required amount of hash power, it’s within the realms of possibility for smaller market cap coins like Loki. In comes Checkpointing to the rescue! Because Service Nodes lock a block every four blocks, an alternate chain containing conflicting transactions to the previous two checkpointed blocks will be rejected. In other words, as long you wait for two checkpoints to be placed, you will always be safe to accept funds, without needing to worry that the transaction might be reversed.

Loki Checkpointing adds an additional layer of security to our products, so you can trade and communicate with absolute freedom…and peace of mind. For a live feed of the latest blocks being checkpointed, go to https://lokiblocks.com/checkpoints.

Weekly Dev Update #71

Hey Y’all, 

Last week the Loki Messenger team continued their short term pivot to get File Attachments and Mentions finished for a quick release. These long requested features are very close to being rolled out. The Loki Core team continued their push to get Blink finished, while also working on LNS (Loki Name System) – expect updates on these soon. Finally, the Service Node checkpointing fork will be happening in about 24 hours from this post being published, so if you have not yet updated your Service Node to 5.1.2, please do so now. This will ensure your node does not desync when the fork occurs. 

Loki Core


Lokinet

If you’re on our Discord you can catch Jeff, the lead developer of LLARP, live streaming as he codes at https://www.twitch.tv/uguu25519. He typically streams on Tuesday mornings, 9am – 12pm Eastern (US) time.

What Went on Last Week with Lokinet: 

Work continued on the Lokinet control panel, which will become a GUI control interface in the next release. Progress was made on the changes to make Lokinet switch back to lokid’s standard ed25519 keys (added in loki-core 5.x). There’s also been prep work to make Lokinet talk directly to lokid, and continued work on the core VPN-layer functionality needed for future Android support.

PR Activity:


Loki Messenger for Desktop 


Loki Messenger for Mobile (iOS and Android)

Loki Messenger for iOS:

Loki Messenger for Android:


Thanks,  

Kee 

5.1.0 Trusty Tyr Mandatory Upgrade

loki network coin wallet

Hey Everybody, 

Today marks the start of the mandatory upgrade period for the new Loki Core Trusty Tyr 5.1.0 release. Trusty Tyr adds a number of notable features to Loki Core, including: 

  • Fully enabled and enforced Service Node checkpointing 
  • Updated RPC Calls to reflect transaction checkpoint status
  • RandomXL stability updates
  • Extended Uptime credits to 48 hours from 24 hours 
  • Number of bug fixes for issues which caused Service Nodes to calculate incorrect winners for certain blocks
  • Increased uptime proof relaying robustness 
  • Fully Linear Staking requirement curve
  • “Export_transfers” is now available via RPC (see Lokidocs RPC documentation for more information).
  • Better integration with Loki Storage Server to enforce network reliability

We have set the hardfork height for block 385,824, ‬which is approximately 13 days away and should fall on  ~22nd of October 2019 UTC. 

If you’re running a Service Node, mining pool, or you’re full node operator, you will need to update to the new version of Loki Core to ensure that you stay on the correct chain. 

Non Service Node Operators 

For mining pools and (Non Service Node) full nodes, Loki binaries can be downloaded directly here: https://github.com/loki-project/loki/releases/tag/v5.1.0

Service Node Operators

Service Node operators running Loki Launcher should refer to this guide for updating: https://docs.loki.network/ServiceNodes/SNFullGuide/#updating-your-binaries

For those running Loki Service Nodes using the Debian releases, you can upgrade using this guide: https://docs.loki.network/ServiceNodes/DebianPackageGuide/#upgrading

As part of their update procedures, Service Node operators should also update their Loki Storage Server to the newly released Version 1.0.7. This should happen automatically if you follow the guides above. 

Thanks,  

Kee

Weekly Dev Update #68

Hey Y’all, 

Last week we released the 5.0.0 testnet binaries for lokid, which include enforced checkpointing and a number of P2P and uptime proof fixes. We’re running a Bug Bounty with a prize pool of 4000 $LOKI for finding bugs related to checkpointing, so jump in and get testing! 

Loki Core


Lokinet

If you’re on our Discord you can catch Jeff, the lead developer of LLARP, live streaming as he codes at https://www.twitch.tv/uguu25519. He typically streams on Tuesday mornings, 9am – 12pm Eastern (US) time.

What Went on Last Week with Lokinet: 

We released a minor update (0.5.2) which fixed a lingering issue in Lokinet that was causing a timeout of a few seconds every 10 minutes. We also held our first weekly dev meeting on a Mumble voice chat server entirely over Lokinet, and it worked perfectly with good latency and no drops at all! 

Recently, we’ve been interviewing for a new full-time Lokinet developer position, and I am pleased to report the role has now been filled with a great addition to the team starting this week. Jeff was on vacation last week (which explains the light number of PRs), but is back this week. With Jeff, plus the addition of our new developer, expect to see some interesting Lokinet developments soon.

PR Activity:


Loki Messenger for Desktop 

Loki Storage Server


Loki Messenger for Mobile (iOS and Android)

Loki Messenger for iOS:

Loki Messenger for Android:


Thanks,  

Kee 

Testing Bounties

Loki cryptocurrency featured image

Service Node checkpointing is now being enforced on testnet v5.0.0. We really want to make sure everything is running smoothly, so are inviting you to do your best to break checkpointing on the testnet! 

As a reward for the hard-working testers out there who manage to find bugs in v5.0.0, we have put a bounty system together: https://github.com/loki-project/loki/releases

The total reward pool is 4000 $LOKI.

Bounty Guidelines:

  • Attacks should be performed on the Loki testnet, where the most recent checkpointing code has been activated. 
  • The goal of an attack should be to invalidate Service Node checkpointing. Functionally, this means you should be able to get an unmodified lokid node to sync or switch to any alternate chain that competes with a mainchain with more than 2 consecutive checkpoints.

Some attacks you might try to execute are:

  • Targeted attacks that prevent Service Nodes communicating during consensus. 
  • 51% attacks on the mining network. 
  • Joining a dishonest minority of Service Nodes – please remove these nodes from the network once you finish testing as others may be trying to use similar methods.
  • Constructing special transactions/blocks. 

The following attacks are out of the scope of this bounty program and will not be rewarded: 

  • Gaining more than 51% of the Service Nodes on the Service Node network (this would be prohibitively difficult on the mainnet). Note: The 20 Service Nodes operated by the Loki team on the Loki testnet represent the “Honest Majority”.
  • Blanket DDOS attacks are not considered in scope as they would be prohibitively difficult on the mainnet given the size of the Service Node network.

Bug Severity will be decided arbitrarily by the Loki team. High severity bugs will earn 50% of the total prize pool at the time your claim is approved. Medium severity bugs will earn 20%, and low severity bugs will earn 5%.

Happy Testing!

Hefty Heimdall 4.0.0

Loki Messenger alpha and Checkpointing!

Today we are announcing the release of our next Loki hardfork, Hefty Heimdall. This hardfork will include a number of updates for both Loki Messenger and Loki Core, including:

  • Service Node Checkpointing
  • Loki Storage Server (Stores Loki Messenger messages on Service Nodes)
  • Internode testing (Blockchain and message storage)
  • Loki Messenger alpha release

The testnet binaries will be released on June 26, so you can start testing these changes in just a few weeks.

There will be a mandatory upgrade period starting July 10.

The Hefty Heimdall hardfork will happen on July 24, with Checkpointing being enabled but not enforced.

We will start enforcing Checkpointing on September 12, completely preventing double spends after 12 blocks of confirmation.

As you may have already heard, we’re thrilled to announce the launch of the Loki Messenger alpha on the mainnet. This is a huge step forward for us and for the community, with Loki Messenger being the first Loki Service to make it out of the labs. We can’t wait to get it into your hands so that with your feedback, we can start to rapidly iterate on the design and feel of it in anticipation of the full launch later this year. We should make it very clear that the Loki Messenger alpha will not have the privacy properties that will be present in the final version. This alpha will primarily be for testing and feedback purposes.

The Basics

The Hefty Heimdall release will include an alpha version of Loki Messenger, which operates entirely on the Service Node network. Loki Messenger will be the first ever system which enables users to achieve both online and offline messaging in a fully decentralised, redundant and scalable way. The encryption used in Loki Messenger, which is also used in Signal, means your messages are only readable by you and the person you send them to. You can read more about the excellent security properties of this kind of end-to-end encryption in this article: http://www.alexkyte.me/2016/10/how-textsecure-protocol-signal-whatsapp.html

The Loki Messenger doesn’t connect to a central server like other messengers. Instead, groups of cooperative Service Nodes – called “Swarms” – store your messages while achieving a high rate of redundancy, meaning that if a Service Node goes offline, your message isn’t lost. Because Loki Messenger doesn’t use any central server, it’s extremely hard for malicious actors to shut the network down since the storage network is distributed across the world over hundreds of nodes.

However, we’ll stress again that the Loki Messenger alpha will not have many of the privacy qualities that the final version will have. Lokinet still has a while to go before it can be deployed on the Service Node network. The Loki Messenger alpha will allow you to communicate securely with your friends and family over a decentralised network while still having a comparable user experience to the chat apps you already know. And when used in conjunction with other network anonymisation tools, the Loki Messenger alpha will also have some reasonable privacy properties.

How it Works

Offline Messages (Asynchronous Mode)

The process below assumes your messenger client has never connected to the Loki Service Node network before, and you want to send a message to a user who is offline.

Sending

  1. Your messenger client gets a partial list of Service Nodes and IP Addresses from a set of hardcoded Loki seed nodes. This is done via a clearnet connection, meaning whoever runs the seed nodes can see that your IP address is requesting a list of currently operating nodes.
  2. Your messenger client contacts a single node randomly from the list, and asks them for the Service Nodes in the Swarm that correspond to your recipient’s public key. This means that a single Service Node knows that your IP address is likely messaging a recipient with X public key.  
  3. Your messenger client contacts three of the nodes inside your recipient’s Swarm and gives them the encrypted message for your recipient. These three nodes will know that your IP address sent a message to X public key.

Receiving

  1. To find your Swarm, your messenger client contacts a random Service Node and asks for the Swarm that corresponds to your public key. Without Lokinet or a VPN, that random node can assume your IP address is linked to your public key.
  2. Your client then maintains a connection to three random Service Nodes in your Swarm and polls them regularly to find out if there are new messages destined for you. This means that three Service Nodes in your Swarm know that your IP address is requesting messages for a particular public key.

Online Messages (Synchronous Mode)

Sending and Receiving

  1. Sending an online message requires knowledge of two parties being online simultaneously, and the addresses they can be contacted at. To do this, Loki Messenger periodically sends your IP address inside encrypted offline messages to your contacts.
  2. When a client comes online they can use this contact information to attempt to establish a direct P2P link with another client. Messages can then flow between the two clients without needing to use the Storage Server. However, this means when you use Loki Messenger, all of your friends can see your IP address.

As you can see from the above descriptions, the Loki Messenger alpha provides reliability, censorship resistance and encryption, however it does not provide protection against metadata collection. It’s important to understand this when participating in the Loki Messenger alpha, since – depending on your threat model – you could be leaking metadata that could be used to draw inferences about your use.

The Hefty Heimdall hardfork is a particularly large one – we hope you’re all as excited as we are!  Please help us improve Loki Messenger for everyone by downloading and testing the alpha – your reports make all the difference. Keep an eye out for further updates as we approach the hardfork date.

Weekly Dev Update #47

dev_update_47

Hey Y’all,

This week we continue working towards building out Loki Messenger for iOS, improving the stability of Lokinet, and making progress on Service Node checkpointing.

Next week I will post a special version of the Dev Update specifically for Consensus. Hopefully we can show off some of the cool things people are building on Lokinet, and a bit of what we’re up to as well.

Loki Core


Loki Launcher

The Loki Launcher is a node JS package that will allow for the independent management of all the components 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!

  • Continued Docker updates
  • Only called stdin.unref if it exists (macos vs linux?)
  • Add check to make sure your binaries aren’t directories
  • Lokinet shutdown monitor
  • Update submodules to point to newer binaries versions
  • startLokinet args bug fix
  • Convert storage server to read from lokid instead of lokinet
  • Move Lokinet config checks before imaginary config lock down
  • Add support for demonet
  • Can’t require lokid key for start as it may not exist yet
  • Replaced lokid with temporary lokid for demonet
  • Re-enable Lokinet logging
  • Disable lokid auto-flusher for now
  • Log and other various typo bug fixes
  • Make storage launch not stomp on overall config

Lokinet

If you’re lucky and join our Discord you might catch Jeff or Ryan, the developers of LLARP, live streaming as they code: https://www.twitch.tv/uguu25519https://www.twitch.tv/neuroscr


Loki Messenger

The Loki Messenger client is in a mostly complete state. Right now the focus is being put on the message server and integration with Lokinet and lokid.

Storage Server

Loki Messenger / Swarm Visualisation

We are building some visualisations of how Loki Messenger and Swarm storage works for Consensus.

Messenger Mobile (iOS and Android)


Loki Wallets

Loki Electron Wallet

We are currently looking for Chinese and Korean translators. We will pay a bounty of 200 Loki for each translation. Contact me @keejef on Telegram if you are interested.


Thanks,

Kee