DiscoTest: Evolutionary Distributed Concurrency Testing of Blockchain Consensus Algorithms

Master Thesis (2022)
Author(s)

M.C. van Meerten (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Contributor(s)

Annibale Panichella – Mentor (TU Delft - Software Engineering)

Burcu Kulahcioglu Ozkan – Mentor (TU Delft - Software Engineering)

A. van Deursen – Graduation committee member (TU Delft - Software Technology)

J.E.A.P. Decouchant – Graduation committee member (TU Delft - Data-Intensive Systems)

Faculty
Electrical Engineering, Mathematics and Computer Science
Copyright
© 2022 Martijn van Meerten
More Info
expand_more
Publication Year
2022
Language
English
Copyright
© 2022 Martijn van Meerten
Graduation Date
16-08-2022
Awarding Institution
Delft University of Technology
Programme
['Computer Science']
Faculty
Electrical Engineering, Mathematics and Computer Science
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Distributed concurrency bugs (DC bugs) are bugs that are triggered by a specific order of events in distributed systems. Traditional model checkers systematically or randomly test interleavings but suffer from the state-space explosion in long executions. This thesis presents DiscoTest, a testing tool for DC bugs in blockchain consensus algorithms. The tool guides the search for schedules that trigger DC bugs by an evolutionary algorithm (EA). We apply the tool to Ripple's consensus algorithm (RCA) and design and evaluate two representations and fitness functions.

We evaluate the representations on locality, redundancy, and scaling, by using graph edit distance (GED) to calculate the distance between schedules. We find that delay scheduling and priority scheduling are representations that allow variation operators of an EA to modify schedules. To evaluate the performance of the representations and fitness functions, we create a custom bug benchmark for RCA. An empirical comparison on the benchmark shows that delay scheduling with time fitness results in a significantly higher success rate than random search on one bug. Finally, we discover an in-production liveness bug in RCA.

Files

DisCoTest_Final.pdf
(pdf | 1.17 Mb)
License info not available