We built a Generalised State Channels framework

Out of all the proposals to scale Ethereum network state channels is the most approachable. It makes micropayments, economically feasible blockchain games and token swaps, secure identity exchange and other exciting things real.

NB. awesome-state-channels reading list could help with introduction.

Generalised state channels is a unified framework for the application channels. It is expected to make building such systems easier. Just add a domain logic contract to the framework, and it works. Upgradeability comes for free.

We expected an implementation of Generalised State or something tangible to build upon to be released by February. Early March, no artefacts released still. Now is the time for being on the good side of humanity.

We got our stuff together, built some code, then some docs. We are happy to present here a design that we ended up with. The main contribution is a detailed separation of concerns between the contracts involved. As we carved major details in code, it is not a pure theory. The paper reveals enough details to restore an implementation, if such a need arises.

We expect to release the code a little bit later after a swift round of optimisations suggested in the paper.

Now as we have that, two interesting questions arise. One is specific for payment channels, a subset of state channels concerned with payments. The design provides a nice integration path for hash-time-locked payments a-la Lightning Network. Do we really need that for a coffee payment? Maybe we could stream the money similar to how TCP/UDP/IP stream data today.

Another question is of general matter. We have a state channels system in place, and would like to upgrade a subchannel contract. How could the participants trust a new contract? Currently we believe Token-Curated Registry, or Token Market, idea could provide a solution.

That we ponder.