Last week we looked at how to finalize an outcome in a state channel system — how to play the state channel exit game. The system we introduced was a simplified ‘toy’ system, with the state advancing only via complete consensus, and no state transition rules. This week we show how to define and use custom state transition functions, allowing the creation of state channel applications.

Why isn’t complete consensus enough?

Before moving onto these more complex state transitions, it’s worth taking a look at why we need to do this at all. Isn’t complete consensus enough?

First let’s clarify what we mean by complete…


In the previous post, we introduced the concept of a state channel outcome: a piece of data that instructs the chain as to how to move the funds held in a state channel. In order for the chain to act on the outcome, the outcome must first be finalized.

Today we’re going to be looking at this other half of the process: how participants go from the states in the hand, to finalized outcomes on-chain. Another way of saying this, is that we’re going to be looking at the ‘exit game’ of a state channel. Understanding this process is key…


Hello, and welcome back to our state channel series!

The aim of this week’s post is to go beyond the explanation of typical state channel interactions that we re-introduced last week, and begin to build an intuition for more advanced concepts, such as how state channels can be opened and closed entirely off-chain, and how one state channel can fund another. These concepts will be key in understanding how state channels can be routed through state channel hubs, which is where a lot of the power of state channels comes from.

In state channels, as in life, it’s necessary to…


If you’ve been following the Ethereum ecosystem for a while, you’ve probably already heard of state channels. You probably have already heard about their potential to improve the scalability of the blockchain, as well as their ability to provide “instant finality” for transactions. This is all old news, and you might be wondering where state channels are at, and whether they’re even still relevant in a world of rollups.

In this series of blog posts, we’ll be bringing you up to date with state channels in 2020. Starting from scratch, we’ll be explaining the important concepts, and the latest designs…


Web applications that use ethereum can take advantage of state channels for an improved user experience. Those which connect fixed groups of users for intra-group interactions are the best candidates for scaling with state channels.

In this post I’m going to explain how a state channel wallet can be used to build a decentralized rock paper scissors application. This application uses state channels on ethereum to make the user experience snappy, like a centralized application might be.

🧰 Channels

We have designed State Channels around a primitive called a Channel.

A Channel is an object which contains information on the fixed list…


Hi everyone! It has been a while since our last developer update, but we have been busy across all fronts. This developer update is meant to give a glimpse at some of the projects we have been tackling recently and highlight the direction that we’re going in.

The goal of the State Channels project is to provide a secure, well-thought out base for applications and wallets that use state channels. Our hope is that dapps and wallets may use our reference clients & fundamental research with a high degree of certainty about the security guarantees we provide.

Here are our…


What have we been up to?

⚙️ Building

Since publishing our paper in June, we have been heads-down developing the Counterfactual framework.

All of our contract code has been open-source and available on github since August 1, and last week at DevconIV we open-sourced a monorepo containing all of our code, and released a set of specifications. Keep reading below for more information about the different components of the Counterfactual stack we’re building.

Oh, and we have a shiny new website, too.

👯‍ Collaborating

Designing the Counterfactual framework to be suitably general and un-opinionated has required close collaboration with other teams.

The L4 team has been working closely with Prototypal


Frequently making transactions to progress the Ethereum Virtual Machine is needlessly expensive and slow. Most applications using Ethereum today work by updating a storage variable of an on-chain contract for which users pay transaction fees and spend time waiting for block confirmations.

Naturally, this is quite slow. In order to use an application, we’re forcing users to manually submit database updates to the world’s most secure, decentralised, and trust-free…. mobile phone from 1999.

Thankfully, there’s a better way.

We can write applications that are exactly as secure by shifting some of the responsibility onto the clientside code instead of relying…


A typical state-channel, composed of counterfactually instantiated objects.

At L4 we have been working on state channels and other blockchain scalability research. Today we’re excited to share one of the foundational pieces of our work: Counterfactual: Generalized State Channels (pdf).

State channels are the foundational technology for useable distributed applications. They can be used in any interaction with a defined set of participants, such as payments or games like chess or poker. “Channelizing” these applications makes them radically cheaper, and reduces the unacceptably high latency in today’s blockchain applications, enabling the web-like response times expected by users.

Despite this, state channels are underutilized in today’s ethereum applications. Each…


Liam Horne and Jeff Coleman

A fundamental limitation of blockchain applications is that blockchains are expensive. Sending transactions requires fees, and using ethereum to run smart-contract code is comparatively costly to other kinds of computation.

The idea behind state channels is that we can make blockchains more efficient by moving many processes off-chain, while still retaining a blockchain’s characteristic trustworthiness. Despite their conceptual simplicity as a natural extension of the “payment channel” concept, this technique today remains heavily under-utilized and underdeveloped.

This is why we are excited to share that we have started working on a generalized state channels implementation…

Liam Horne

State channels developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store