Generalized State Channels on Ethereum

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 with a focus on privacy, speed, trust minimization, security, and modularity. We think this is one of the most important layers of infrastructure that needs to be built today.

We will not be doing an ICO, token sale, or other kind of fundraising event involving a token. As has been pointed out by Fred Ehrsam, Elad Gil, Vitalik Buterin, and many others, the economic incentives for core protocol innovation and second-layer infrastructure are much too low, and so the token model of funding a project in these domains has unfortunately become overused. Instead, we will initially be funded by a donation from Vitalik Buterin.

In our view, state channels are the basic foundation for usability in distributed applications. They reduce latency from the unacceptably high levels of today’s blockchain applications to the weblike response times that users expect.

Even with other scalability methods like sharding, many applications that rely on large numbers of individual operations (such as streaming payments, IoT devices, games, etc) cannot hope to achieve the cost reductions they require without the added savings that state channels are able to introduce.

Rather than receiving the benefit of these savings across a wide number of different applications, today’s blockchain application users will be lucky to find a one-off single-purpose state channel design that runs on its own network, isolated from other applications.

These different applications may use the same types of assets, yet deploy separate and highly bespoke contracts that cannot interoperate. They must be audited for security concerns on an individual and ongoing basis; significantly increasing costs. They are rarely optimized to the theoretical limits, often consuming orders of magnitude more gas than is necessary, and frequently going to chain when doing so is not even strictly required.

The state of the art advances slowly, and developers are often left struggling to solve the same problems over and over, where one mistake threatens the entire security model of the application. Even when secure, these custom implementations have significant privacy drawbacks; leaking detailed information about the network graph, participant assets and activity.

We envision a different future.

  • We want to see clearly designed general purpose state channels that do not reduce, and in fact in many cases greatly increase, privacy.
  • We don’t want to put anything on the chain that doesn’t need to be.
  • We want channels that can be easily incorporated into new applications without the requirement for those developers to also be state channel experts.
  • We want to achieve a level of privacy where state channel operations are indistinguishable from other common types of on-chain activities.
  • We want to see support for multiple parallel operations inside of a single channel that do not interfere with each other.
  • We want to provide expertly optimized, formally verified, and highly audited components that developers of decentralized applications can rely on without repeatedly re-inventing the wheel.
  • We want to support deploying or upgrading channel designs without requiring the user to make a single on-chain operation.
  • And we want to establish clear standards for how all of these generalized state channels will fit together into a global, multi-blockchain network where any user can easily connect to any other.

Together, we are working towards building this future.

We will be making further announcements around our plans for this project soon. For now, we are entirely focused on building a working prototype using our approach and speaking to developers and founders of decentralized application projects. We intend on building the best possible interface for decentralized application developers to work with so they can deliver the web-like experience their users expect without compromising on any component of the decentralized internet.

If you’re interested in working with us or want to support the project, please send us an email.