EDBT 2026 Demo / reviewers in the wild / expert
Sam Blackshear
dblp:86/8008
· DBLP profile ↗
9ranked-venue papers
6as first author
2since 2021 · last 2024
0000-0002-0024-6655ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 5 first-authorSecurity and privacy · 2 · 1 first-author · 2 since 2021Theory of computation · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
6 papers |
Program analysis · 42% Program verification · 31% Software maintenance and evolution · 9% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Distributed systems · 88% Storage systems · 12% | |
| Network and information security
2 papers |
Blockchain and cryptocurrency security · 88% Systems and software security · 12% |
Topics — the 22 heaviest of 23, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Distributed systems
consensus |
0.8 | 1 | 2024 | Sui Lutris: A Blockchain Combining Broadcast and Consensus · CCS 2024 |
Distributed systems
replication |
0.8 | 1 | 2024 | Sui Lutris: A Blockchain Combining Broadcast and Consensus · CCS 2024 |
Program analysis
static analysis |
0.7 | 3 | 2018 | RacerD: compositional static race detection · Proc. ACM Program. Lang. 2018 Selective control-flow abstraction via jumping · OOPSLA 2015 Thresher: precise refutations for heap reachability · PLDI 2013 |
Program verification
deductive verification |
0.4 | 1 | 2020 | The Move Prover · CAV (1) 2020 |
Program verification › deductive verification
intermediate verification language |
0.4 | 1 | 2020 | The Move Prover · CAV (1) 2020 |
Program analysis › static analysis › interprocedural analysis
compositional analysis |
0.3 | 1 | 2018 | RacerD: compositional static race detection · Proc. ACM Program. Lang. 2018 |
Software maintenance and evolution › release engineering
continuous integration |
0.3 | 1 | 2018 | RacerD: compositional static race detection · Proc. ACM Program. Lang. 2018 |
Concurrent programming › concurrency bug detection
data race detection |
0.3 | 1 | 2018 | RacerD: compositional static race detection · Proc. ACM Program. Lang. 2018 |
Program analysis › static analysis
interprocedural analysis |
0.3 | 1 | 2018 | RacerD: compositional static race detection · Proc. ACM Program. Lang. 2018 |
Storage systems
crash recovery |
0.2 | 1 | 2024 | Sui Lutris: A Blockchain Combining Broadcast and Consensus · CCS 2024 |
Distributed systems
fault tolerance |
0.2 | 1 | 2024 | Sui Lutris: A Blockchain Combining Broadcast and Consensus · CCS 2024 |
Programming languages and type systems › control flow
control flow abstraction |
0.2 | 1 | 2015 | Selective control-flow abstraction via jumping · OOPSLA 2015 |
Program verification
static verification |
0.2 | 1 | 2014 | Verification modulo versions: towards usable verification · PLDI 2014 |
Program verification › dynamic verification › runtime verification
assertion checking |
0.2 | 1 | 2013 | Almost-correct specifications: a modular semantic framework for assigning confidence to warnings · PLDI 2013 |
Program analysis › data flow analysis
path-sensitive analysis |
0.2 | 1 | 2013 | Thresher: precise refutations for heap reachability · PLDI 2013 |
Program analysis › static analysis
pointer analysis |
0.2 | 1 | 2013 | Thresher: precise refutations for heap reachability · PLDI 2013 |
Requirements engineering and software design
specification |
0.2 | 1 | 2013 | Almost-correct specifications: a modular semantic framework for assigning confidence to warnings · PLDI 2013 |
Program verification › equivalence checking
regression verification |
0.1 | 1 | 2014 | Verification modulo versions: towards usable verification · PLDI 2014 |
Software maintenance and evolution › software configuration management
version control |
0.1 | 1 | 2014 | Verification modulo versions: towards usable verification · PLDI 2014 |
Systems and software security › memory safety
memory leak detection |
0.0 | 1 | 2013 | Thresher: precise refutations for heap reachability · PLDI 2013 |
Systems and software security
memory safety |
0.0 | 1 | 2013 | Thresher: precise refutations for heap reachability · PLDI 2013 |
Program analysis
false alarm reduction |
0.0 | 1 | 2013 | Almost-correct specifications: a modular semantic framework for assigning confidence to warnings · PLDI 2013 |
Methods — techniques the papers use, named apart from their topics
hybrid architecture · 1.5consensus protocol · 1.5formal specification · 0.4boogie translation · 0.4symbolic execution · 0.3static program analysis · 0.3flow-insensitive points-to analysis · 0.3abstract heap · 0.3product graph analysis · 0.2jumping · 0.2static analysis · 0.2semantic environment condition inference · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Sui Lutris: A Blockchain Combining Broadcast and ConsensusabstractSui Lutris is the first smart-contract platform to sustainably achieve sub-second finality. It achieves this significant decrease by employing consensusless agreement not only for simple payments but for a large variety of transactions. Unlike prior work, Sui Lutris neither compromises expressiveness nor throughput and can run perpetually without restarts. Sui Lutris achieves this by safely integrating consensuless agreement with a high-throughput consensus protocol that is invoked out of the critical finality path but ensures that when a transaction is at risk of inconsistent concurrent accesses, its settlement is delayed until the total ordering is resolved. Building such a hybrid architecture is especially delicate during reconfiguration events, where the system needs to preserve the safety of the consensusless path without compromising the long-term liveness of potentially misconfigured clients. We thus develop a novel reconfiguration protocol, the first to provably show the safe and efficient reconfiguration of a consensusless blockchain. Sui Lutris is currently running in production and underpins the Sui smart-contract platform. Combined with the use of Objects instead of accounts it enables the safe execution of smart contracts that expose objects as a first-class resource. In our experiments Sui Lutris achieves latency lower than 0.5 seconds for throughput up to 5,000 certificates per second (150k ops/s with transaction blocks), compared to the state-of-the-art real-world consensus latencies of 3 seconds. Furthermore, it gracefully handles validators crash-recovery and does not suffer visible performance degradation during reconfiguration. Sam Blackshear, Andrey Chursin, George Danezis, Anastasios Kichidis, Eleftherios Kokoris-Kogias, Xun Li 0001, Mark Logan, Ashok Menon, Todd Nowacki, Alberto Sonnino, Brandon Williams, Lu Zhang 0092 |
CCS | 1 |
| 2023 | Robust Safety for MoveabstractA program that maintains key safety properties even when interacting with arbitrary untrusted code is said to enjoy robust safety. Proving that a program written in a mainstream language is robustly safe is typically challenging because it requires static verification tools that work precisely even in the presence of language features like dynamic dispatch and shared mutability. The emerging Move programming language was designed to support strong encapsulation and static verification in the service of secure smart contract programming. However, the language design has not been analysed using a theoretical framework like robust safety. In this paper, we define robust safety for the Move language and introduce a generic framework for static tools that wish to enforce it. Our framework consists of two abstract components: a program verifier that can prove an invariant holds in a closed-world setting (e.g., the Move Prover [16], [47]), and a novel encapsulator that checks if the verifier's result generalizes to an open-world setting. We formalise an escape analysis as an instantiation of the encapsulator and prove that it attains the required security properties. Finally, we implement our encapsulator as an extension to the Move Prover and use the combination to analyse a large representative benchmark set of real-world Move programs. This toolchain certifies >99% of the Move modules we analyse, validating that automatic enforcement of strong security properties like robust safety is practical for Move. Additionally, our results tell that security-centric language design can be effective in attaining strong security properties such as robust safety. Marco Patrignani, Sam Blackshear |
CSF | 2 |
| 2020 | The Move ProverabstractThe Libra blockchain is designed to store billions of dollars in assets, so the security of code that executes transactions is important. The Libra blockchain has a new language for implementing transactions, called “Move.” This paper describes the Move Prover, an automatic formal verification system for Move. We overview the unique features of the Move language and then describe the architecture of the Prover, including the language for formal specification and the translation to the Boogie intermediate verification language . Jingyi Emma Zhong, Kevin Cheang, Shaz Qadeer, Wolfgang Grieskamp, Sam Blackshear, Junkil Park, Yoni Zohar, Clark W. Barrett, David L. Dill |
CAV (1) | 5 |
| 2018 | RacerD: compositional static race detectionabstractAutomatic static detection of data races is one of the most basic problems in reasoning about concurrency. We present RacerD—a static program analysis for detecting data races in Java programs which is fast, can scale to large code, and has proven effective in an industrial software engineering scenario. To our knowledge, RacerD is the first inter-procedural, compositional data race detector which has been shown to have non-trivial precision and impact. Due to its compositionality, it can analyze code changes quickly, and this allows it to perform continuous reasoning about a large, rapidly changing codebase as part of deployment within a continuous integration ecosystem. In contrast to previous static race detectors, its design favors reporting high-confidence bugs over ensuring their absence. RacerD has been in deployment for over a year at Facebook, where it has flagged over 2500 issues that have been fixed by developers before reaching production. It has been important in enabling the development of new code as well as fixing old code: it helped support conversion of part of the main Facebook Android app from a single-threaded to a multi-threaded architecture. In this paper we describe RacerD’s design, implementation, deployment and impact. Sam Blackshear, Nikos Gorogiannis, Peter W. O'Hearn, Ilya Sergey |
Proc. ACM Program. Lang. | 1 |
| 2015 | Selective control-flow abstraction via jumpingabstractWe present jumping, a form of selective control-flow abstraction useful for improving the scalability of goal-directed static analyses. Jumping is useful for analyzing programs with complex control-flow such as event-driven systems. In such systems, accounting for orderings between certain events is important for precision, yet analyzing the product graph of all possible event orderings is intractable. Jumping solves this problem by allowing the analysis to selectively abstract away control-flow between events irrelevant to a goal query while preserving information about the ordering of relevant events. We present a framework for designing sound jumping analyses and create an instantiation of the framework for per- forming precise inter-event analysis of Android applications. Our experimental evaluation showed that using jumping to augment a precise goal-directed analysis with inter-event reasoning enabled our analysis to prove 90–97% of dereferences safe across our benchmarks. Sam Blackshear, Bor-Yuh Evan Chang, Manu Sridharan |
OOPSLA | 1 |
| 2014 | Verification modulo versions: towards usable verificationabstractWe introduce Verification Modulo Versions (VMV), a new static analysis technique for reducing the number of alarms reported by static verifiers while providing sound semantic guarantees. First, VMV extracts semantic environment conditions from a base program P. Environmental conditions can either be sufficient conditions (implying the safety of P) or necessary conditions (implied by the safety of P). Then, VMV instruments a new version of the program, P', with the inferred conditions. We prove that we can use (i) sufficient conditions to identify abstract regressions of P' w.r.t. P; and (ii) necessary conditions to prove the relative correctness of P' w.r.t. P. We show that the extraction of environmental conditions can be performed at a hierarchy of abstraction levels (history, state, or call conditions) with each subsequent level requiring a less sophisticated matching of the syntactic changes between P' and P. Call conditions are particularly useful because they only require the syntactic matching of entry points and callee names across program versions. We have implemented VMV in a widely used static analysis and verification tool. We report our experience on two large code bases and demonstrate a substantial reduction in alarms while additionally providing relative correctness guarantees. Francesco Logozzo, Shuvendu K. Lahiri, Manuel Fähndrich, Sam Blackshear |
PLDI | 4 |
| 2013 | Thresher: precise refutations for heap reachabilityabstractWe present a precise, path-sensitive static analysis for reasoning about heap reachability, that is, whether an object can be reached from another variable or object via pointer dereferences. Precise reachability information is useful for a number of clients, including static detection of a class of Android memory leaks. For this client, we found the heap reachability information computed by a state-of-the-art points-to analysis was too imprecise, leading to numerous false-positive leak reports. Our analysis combines a symbolic execution capable of path-sensitivity and strong updates with abstract heap information computed by an initial flow-insensitive points-to analysis. This novel mixed representation allows us to achieve both precision and scalability by leveraging the pre-computed points-to facts to guide execution and prune infeasible paths. We have evaluated our techniques in the Thresher tool, which we used to find several developer-confirmed leaks in Android applications. Sam Blackshear, Bor-Yuh Evan Chang, Manu Sridharan |
PLDI | 1 |
| 2013 | Almost-correct specifications: a modular semantic framework for assigning confidence to warningsabstractModular assertion checkers are plagued with false alarms due to the need for precise environment specifications (preconditions and callee postconditions). Even the fully precise checkers report assertion failures under the most demonic environments allowed by unconstrained or partial specifications. The inability to preclude overly adversarial environments makes such checkers less attractive to developers and severely limits the adoption of such tools in the development cycle. Sam Blackshear, Shuvendu K. Lahiri |
PLDI | 1 |
| 2011 | The Flow-Insensitive Precision of Andersen's Analysis in Practice
Sam Blackshear, Bor-Yuh Evan Chang, Sriram Sankaranarayanan 0001, Manu Sridharan |
SAS | 1 |