Testing for finality in a complex network of messages
The Inspector knows if you have been final or not
Finality is crucial for the security and scalability of blockchains. As shards are added and larger data is stored, blockchain users want to be certain that whatever is written to the chain cannot be reverted.
Finality in Casper CBC is an emergent property of message-passing communication in the network. Validators become final on decisions with some degree of finality - the number of faults that must have occured to facilitate valid proposal of contradictory decisions. As more communication supporting a decision is observed, a higher degree of finality is attained.
However, testing for finality is a hard problem. As messages form a complex network, naively finding a pattern of messages such that desired finality properties are satisfied is computationally expensive.
This project innovates on two counts:
We produce a visual explanation of the algorithm and the theory supporting it, making the research uniquely accessible to client developers, researchers keen to work on the same and a technical audience that is not specialised in blockchain technologies. The visual essay is written in HTML/JS, with React/D3 used as front-end libraries. Large message logs are simulated and shown in the essay.