Putting the State in State Channels

Liam Horne
State Channels
Published in
2 min readMay 15, 2020

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 consensus. By complete consensus we’re talking about a system like that introduced last week, where any change to the outcome of the channel can only occur if all participants explicitly sign the update. This means that at each point of the state channel interaction, every single participant must agree if any progress is to be made.

Imagine, for example, that Alice and Bob are playing a game of chess for a prize. Presumably when they decided to play the game, they both believed that they had a chance of winning. A short while later, Alice plays a winning move, and it becomes completely clear to Bob that he isn’t going to win. What happens now? Under a complete consensus system, Alice’s winning move is only valid if Bob decides to sign it — that’s the only way it will be accepted by the chain. Bob could quite easily refuse to sign, and Alice would have no recourse. Could we add some in-game incentives to punish Bob in this situation? Unfortunately not. To the toy adjudicator, this situation is indistinguishable from the situation where Alice stopped playing, so any incentive we build in to punish Bob here could be used against him by Alice, if she were to choose not to play.

There are many situations where a group of parties agree in advance to a set of rules to govern an interaction, and this is clearly different to agreeing every step of the way. In order to write interesting state channel applications, we need to be able to capture this pattern in our state channel system.

To read the full blog post , please visit our new website at blog.statechannels.org where future posts will also be.

--

--