Verified Causal Broadcast with Liquid Haskell

06/29/2022
by   Patrick Redmond, et al.
0

Protocols to ensure that messages are delivered in causal order are a ubiquitous building block of distributed systems. For instance, key-value stores can use causally ordered message delivery to ensure causal consistency, and replicated data structures rely on the existence of an underlying causally-ordered messaging layer. A causal delivery protocol ensures that when a message is delivered to a process, any causally preceding messages sent to the same process have already been delivered to it. While causal delivery protocols are widely used, verification of the correctness of those protocols is less common, much less machine-checked proofs about executable implementations. We implemented a standard causal broadcast protocol in Haskell and used the Liquid Haskell solver-aided verification system to express and mechanically prove that messages will never be delivered to a process in an order that violates causality. We express this property using refinement types and prove that it holds of our implementation, taking advantage of Liquid Haskell's underlying SMT solver to automate parts of the proof and using its manual theorem-proving features for the rest. We then put our verified causal broadcast implementation to work as the foundation of a distributed key-value store.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/11/2018

Breaking the Scalability Barrier of Causal Broadcast for Large and Dynamic Systems

Many distributed protocols and applications rely on causal broadcast to ...
research
10/12/2017

Pure Operation-Based Replicated Data Types

Distributed systems designed to serve clients across the world often mak...
research
12/13/2021

Quick Order Fairness

Leader-based protocols for consensus, i.e., atomic broadcast, allow some...
research
09/14/2020

Statically Verified Refinements for Multiparty Protocols

With distributed computing becoming ubiquitous in the modern era, safe d...
research
06/07/2022

Topos: A Secure, Trustless, and Decentralized Interoperability Protocol

Topos is an open interoperability protocol designed to reduce as much as...
research
03/08/2023

Automatic verification of transparency protocols (extended version)

We introduce new features in ProVerif, an automatic tool for verifying s...
research
02/04/2019

On Enactability and Monitorability of Agent Interaction Protocols

Interactions between agents are usually designed from a global viewpoint...

Please sign up or login with your details

Forgot password? Click here to reset