Dev Update #3: Ledger channels

George Knee
Magmo
Published in
2 min readJun 3, 2019

Welcome to Magmo’s Dev Update #3!

At Magmo, we build protocols and software to enable networks of state channels.

In our last update (back in February), we had published a sneak-peek of our paper outlining Nitro protocol and an early implementation of the Nitro-adjudicator smart contract. We had also extracted our state channel client wallet into a separate package, and proved its general-purpose nature by allowing two separate applications to use it.

Since then, we’ve been working on upgrading the client wallet so that it can manage multiple state channels. This constituted a major overhaul of the software architecture, but is a necessary step on the way to ledger channels, virtual channels and large scale state channel networks. Moreover, the client wallet now defines its own ‘auxiliary protocols’ : modules that can be re-used and nested inside one another. This will make more complicated procedures much easier to handle in future.

Our client wallet now allows state channels to be funded via a reusable ledger channel

Alongside the client wallet, we have also begun work in a server wallet, designed for use by state channel hubs. The server wallet will be capable of automatically managing state channels, and will mediate virtual state channels between sets of users who do not have a shared blockchain deposit.

Current Goals

  1. Implement ledger channels
  2. Implement virtual channels

Progress

  1. You can now play Rock Paper Scissors between two browsers in a state channel which is funded by a ledger channel, rather than being funded directly by deposits on the blockchain. Opening, funding, updating, closing and defunding the ledger channel are new processes that the user is guided through. All of this is supported by the Nitro adjudicator and our implementation of the “consensus game”. We will continue to work on polishing this implementation, including building out more of the ‘unhappy’ paths (for example, resolving disputes in the ledger channel itself), as well as showing off some of the advanced functionality of ledger channels. For example, top-up funding, and reusing a ledger channel for funding parallel applications off-chain.
  2. Our newly refactored wallet will allow for us to build out the virtual channel functionality much more easily.

--

--