wolf.html

Publications

If you're interested in what I spent 6 years doing during my PhD, you should read some of these.


Conference Papers

LiDO: Linearizable Byzantine Distributed Objects with Refinement-Based Liveness Proofs
  1. Longfei Qiu
  2. Yoonseung Kim
  3. Ji-Yong Shin
  4. Jieung Kim
  5. Wolf Honoré
  6. Zhong Shao
ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI), 2024
Abstract

Byzantine fault-tolerant state machine replication (SMR) protocols, such as PBFT, HotStuff, and Jolteon, are essential for modern blockchain technologies. However, they are challenging to implement correctly because they have to deal with any unexpected message from Byzantine peers and ensure safety and liveness at all times. Many formal frameworks have been developed to verify the safety of SMR implementations, but there is still a gap in the verification of their liveness. Existing liveness proofs are either limited to the network level or do not cover popular partially synchronous protocols.

We introduce LiDO, a consensus model that enables the verification of both safety and liveness of implementations through refinement. We observe that current consensus models cannot handle liveness because they do not include a pacemaker state. We show that by adding a pacemaker state to the LiDO model, we can express the liveness properties of SMR protocols as a few safety properties that can be easily verified by refinement proofs. Based on our LiDO model, we provide mechanized safety and liveness proofs for both unpipelined and pipelined Jolteon in Coq. This is the first mechanized liveness proof for a byzantine consensus protocol with non-trivial optimizations such as pipelining.

AdoB: Bridging Benign and Byzantine Consensus with Atomic Distributed Objects
  1. Wolf Honoré
  2. Longfei Qiu
  3. Yoonseung Kim
  4. Ji-Yong Shin
  5. Jieung Kim
  6. Zhong Shao
ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2024
Abstract

Achieving consensus is a challenging and ubiquitous problem in distributed systems that is only made harder by the introduction of malicious byzantine servers. While significant effort has been devoted to the benign and byzantine failure models individually, no prior work has considered the mechanized verification of both in a generic way. We claim this is due to the lack of an appropriate abstraction that is capable of representing both benign and byzantine consensus without either losing too much detail or becoming impractically complex. We build on recent work on the atomic distributed object model to fill this void with a novel abstraction called AdoB. In addition to revealing important insights into the essence of consensus, this abstraction has practical benefits for easing distributed system verification. As a case study, we proved safety and liveness properties for AdoB in Coq, which are the first such mechanized proofs to handle benign and byzantine consensus in a unified manner. We also demonstrate that AdoB faithfully models real consensus protocols by proving it is refined by standard network-level specifications of Fast Paxos and a variant of Jolteon.

Adore: Atomic Distributed Objects with Certified Reconfiguration
  1. Wolf Honoré
  2. Ji-Yong Shin
  3. Jieung Kim
  4. Zhong Shao
ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI), 2022
Abstract

Finding the right abstraction is critical for reasoning about complex systems such as distributed protocols like Paxos and Raft. Despite a recent abundance of impressive verification work in this area, we claim the ways that past efforts model distributed state are not ideal for protocol-level reasoning: they either hide important details, or leak too much complexity from the network. As evidence we observe that nearly all of them avoid the complex, but important issue of reconfiguration. Reconfiguration's primary challenge lies in how it interacts with a protocol's core safety invariants. To handle this increased complexity, we introduce the Adore model, whose novel abstract state hides network-level communications while capturing dependencies between committed and uncommitted states, as well as metadata like election quorums. It includes first-class support for a generic reconfiguration command that can be instantiated with a variety of implementations. Under this model, the subtle interactions between reconfiguration and the core protocol become clear, and with this insight we completed the first mechanized proof of safety of a reconfigurable consensus protocol.

Much ADO About Failures: A Fault-Aware Model for Compositional Verification of Strongly Consistent Distributed Systems
  1. Wolf Honoré
  2. Jieung Kim
  3. Ji-Yong Shin
  4. Zhong Shao
ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2021
Abstract

Despite recent advances, guaranteeing the correctness of large-scale distributed applications without compromising performance remains a challenging problem. Network and node failures are inevitable and, for some applications, careful control over how they are handled is essential. Unfortunately, existing approaches either completely hide these failures behind an atomic state machine replication (SMR) interface, or expose all of the network-level details, sacrificing atomicity. We propose a novel, compositional, atomic distributed object (ADO) model for strongly consistent distributed systems that combines the best of both options. The object-oriented API abstracts over protocol-specific details and decouples high-level correctness reasoning from implementation choices. At the same time, it intentionally exposes an abstract view of certain key distributed failure cases, thus allowing for more fine-grained control over them than SMR-like models. We demonstrate that proving properties even of composite distributed systems can be straightforward with our Coq verification framework, Advert, thanks to the ADO model. We also show that a variety of common protocols including multi-Paxos and Chain Replication refine the ADO semantics, which allows one to freely choose among them for an application's implementation without modifying ADO-level correctness proofs.

Verifying an HTTP Key-Value Server with Interactions Trees and VST
  1. Hengchu Zhang
  2. Wolf Honoré
  3. Nicolas Koh
  4. Yao Li
  5. Yishuai Li
  6. Li-Yao Xia
  7. Lennart Beringer
  8. William Mansky
  9. Benjamin Pierce
  10. Steve Zdancewic
International Conference on Interactive Theorem Proving (ITP), 2021
Abstract

We present a networked key-value server, implemented in C and formally verified in Coq. The server interacts with clients using a subset of the HTTP/1.1 protocol and is specified and verified using interaction trees and the Verified Software Toolchain. The codebase includes a reusable and fully verified C string library that provides 17 standard POSIX string functions and 17 general purpose non-POSIX string functions. For the KVServer socket system calls, we establish a refinement relation between specifications at user-space level and at CertiKOS kernel-space level.

Connecting Higher-Order Separation Logic to a First-Order Outside World
  1. William Mansky
  2. Wolf Honoré
  3. Andrew Appel
European Symposium of Programming (ESOP), 2020
Abstract

Separation logic is a useful tool for proving the correctness of programs that manipulate memory, especially when the model of memory includes higher-order state: Step-indexing, predicates in the heap, and higher-order ghost state have been used to reason about function pointers, data structure invariants, and complex concurrency patterns. On the other hand, the behavior of system features (e.g., operating systems) and the external world (e.g., communication between components) is usually specified using first-order formalisms. In principle, the soundness theorem of a separation logic is its interface with first-order theorems, but the soundness theorem may implicitly make assumptions about how other components are specified, limiting its use. In this paper, we show how to extend the higher-order separation logic of the Verified Software Toolchain to interface with a first-order verified operating system, in this case CertiKOS, that mediates its interaction with the outside world. The resulting system allows us to prove the correctness of C programs in separation logic based on the semantics of system calls implemented in CertiKOS. It also demonstrates that the combination of interaction trees + CompCert memories serves well as a lingua franca to interface and compose two quite different styles of program verification.

WormSpace: A Modular Foundation for Simple, Verifiable Distributed Systems
  1. Ji-Yong Shin
  2. Jieung Kim
  3. Wolf Honoré
  4. Hernán Vanzetto
  5. Srihari Radhakrishnan
  6. Mahesh Balakrishnan
  7. Zhong Shao
ACM Symposium on Cloud Computing (SoCC), 2019
Abstract

We propose the Write-Once Register (WOR) as an abstraction for building and verifying distributed systems. A WOR exposes a simple, data-centric API: clients can capture, write, and read it. Applications can use a sequence or a set of WORs to obtain properties such as durability, concurrency control, and failure atomicity. By hiding the logic for distributed coordination underneath a data-centric API, the WOR abstraction enables easy, incremental, and extensible implementation and verification of applications built above it. We present the design, implementation, and verification of a system called WormSpace that provides developers with an address space of WORs, implementing each WOR via a Paxos instance. We describe three applications built over WormSpace: a flexible, efficient Multi-Paxos implementation; a shared log implementation with lower append latency than the state-of-the-art; and a fault-tolerant transaction coordinator that uses an optimal number of round-trips. We show that these applications are simple, easy to verify, and match the performance of unverified monolithic implementations. We use a modular layered verification approach to link the proofs for WormSpace, its applications, and a verified operating system to produce the first verified distributed system stack from the application to the operating system.

An Online Platform for Community-Based Language Description and Documentation
  1. Rebecca Everson
  2. Wolf Honoré
  3. Scott Grimm
Workshop on Computational Methods for Endangered Languages (ComputEL), 2019
Abstract

We present two pieces of interlocking technology in development to facilitate community-based, collaborative language description and documentation: (i) a mobile app where speakers submit text, voice recordings and/or videos, and (ii) a community language portal that organizes submitted data and provides question/answer boards whereby community members can evaluate/supplement submissions.

From C to Interaction Trees: Specifying, Verifying, and Testing a Networked Server
  1. Nicolas Koh
  2. Yao Li
  3. Yishuai Li
  4. Li-yao Xia
  5. Lennart Beringer
  6. Wolf Honoré
  7. William Mansky
  8. Benjamin Pierce
  9. Steve Zdancewic
ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP), 2019
Abstract

We present the first formal verification of a networked server implemented in C. Interaction trees, a general structure for representing reactive computations, are used to tie together disparate verification and testing tools (Coq, VST, and QuickChick) and to axiomatize the behavior of the operating system on which the server runs (CertiKOS). The main theorem connects a specification of acceptable server behaviors, written in a straightforward “one client at a time” style, with the CompCert semantics of the C program. The variability introduced by low-level buffering of messages and interleaving of multiple TCP connections is captured using network refinement, a variant of observational refinement.


Talks

A Fault-Aware Model for Compositional Verification of Strongly Consistent Distributed Systems
  1. Wolf Honoré
  2. Jieung Kim
  3. Ji-Yong Shin
  4. Zhong Shao
New England System Verification Day (NESVD), 2021
Briding the Specification Gap Between VST and CertiKOS
  1. William Mansky
  2. Wolf Honoré
The Science of Deep Specifications (DeepSpec), 2019

Thesis

The Atomic Distributed Object Model for Distributed System Verification
  1. Wolf Honoré
Yale University PhD Dissertation, 2022
Abstract

Distributed systems are at the heart of most web-based applications and are responsible for replicating and maintaining critical data. Unfortunately, their inherent concurrency combined with an asynchronous and unreliable network makes them prone to implementation bugs that can have serious real-world consequences. Formal verification can offer strong assurances of correctness; however, despite recent advances, reasoning directly about a system's implementation remains prohibitively complex. The key is to find the right abstraction that faithfully models a system's behaviors, while avoiding irrelevant implementation details.

This dissertation presents such an abstraction called the atomic distributed object (ADO) model, which hides the existence of the network and reduces all behaviors to three atomic operations. This not only makes the ADO model simpler, which enables more scalable verification, but it also means it is general enough to capture a wide variety of systems. We describe three verification frameworks built around the ADO model, each implemented in the Coq proof assistant and targeted at different problems. The first, Advert, supports compositional reasoning about distributed objects, which can be combined to build more complex applications. The second, Adore, proves the safety of a general class of reconfiguration schemes, which is an essential, but often overlooked, operation for practical distributed systems. Finally, AdoB shows that the ADO model can be used for liveness reasoning, and can express both benign and byzantine failure models in a unified manner.

Notes
  • Typo on page 121 (paragraph Caches): Commit should be CCache