State Channels bi-weekly development update - Early November 2019

This is a bi-weekly update of all things concerning the protocol design and
reference implementation of State Channels.

The focus of the current iteration is still the hardening of the implementation.
Using property-based testing via Quickcheck has shown a lot of potential
and helped identify a few bugs already. This effort will be continued to get
better coverage of the protocol.

Thanks to the SC contributors @dimitar.chain, @uwiger,
@gorbak25, @aleksandar.chain and @bot.

Thanks to Thomas Arts and @hanssv.chain who both helped expand the
property-based testing coverage via Quickcheck.

The previous report was Mid October 2019.

Improved job handling for Websocket connections

Implementation: PR #2805

This change makes the SC WS handler release the jobs worker after spawning
(or reconnecting to) the fsm. Before this change, the handler would hold
on to the worker until terminate() which meant that the size of the jobs
counter pool effectively limited the number of currently active state channels.

Moreover, a race condition during job registration could lead to more jobs
running than the limit would allow.

Added ability to cancel update initiated by self

Protocol: PR #417
Implementation: PR #2806

The existing internal functionality for aborting operations has been improved to
provide the ability to explicitly cancel an operation while it wasn’t fully
authenticated. This gives clients more control over the communication and flow
with other clients.

Added optional fees to on-chain transactions

Protocol: PR #423
Implementation: PR #2885

Previously the FSM would calculate the fee for all transactions based on the
current gas price and minimume miner gas requirements. Now clients can set
custom fees for submitted transactions giving them yet more control.

Refactored outer FSM API functions

Implementation: PR #2907

Findings during property-based testing concluded that the entry API functions
are hard to mock and test. Thus, they have been refactored and moved outside the
actual FSM which eases their use during testing.

Improved checks for generalized accounts

Implementation: PR #2950

The checks for making sure generalized accounts use their respective sandbox
have been improved which prevents accounts to act as non-generalized accounts.

Integration Test Improvements

Implementation: PR #2927, PR #2933, PR #2958, PR #2960

The integration tests are continuously being improved. We are focusing on fixing
intermittent errors which are hard to reproduce but get in the way of all
contributors when they occur during testing in CI.

State Channel UAT Test Suite

There is ongoing work to get the UAT running on CircleCI such that feedback can
be received whenever the test code or target changes. This is a major setup
which is why it is still going on.