Trail of Bits Blog Posts
The following contains blockchain-related blog posts made by Trail of Bits.
Consensus Algorithms
Research in the distributed systems area
| Date | Title | Description | 
|---|---|---|
| 2021/11/11 | Motivating global stabilization | Review of Fischer, Lynch, and Paterson’s classic impossibility result and global stabilization time assumption | 
| 2019/10/25 | Formal Analysis of the CBC Casper Consensus Algorithm with TLA+ | Verification of finality of the Correct By Construction (CBC) PoS consensus protocol | 
| 2019/07/12 | On LibraBFT’s use of broadcasts | Liveness of LibraBFT and HotStuff algorithms | 
| 2019/07/02 | State of the Art Proof-of-Work: RandomX | Summary of our audit of ASIC and GPU-resistant PoW algorithm | 
| 2018/10/12 | Introduction to Verifiable Delay Functions (VDFs) | Basics of VDFs - a class of hard to compute, not parallelizable, but easily verifiable functions | 
Fuzzing Compilers
Our work on the topic of fuzzing the solc compiler
| Date | Title | Description | 
|---|---|---|
| 2021/03/23 | A Year in the Life of a Compiler Fuzzing Campaign | Results and features of fuzzing solc | 
| 2020/06/05 | Breaking the Solidity Compiler with a Fuzzer | Our approach to fuzzing solc | 
General
Security research, analyses, announcements, and write-ups
| Date | Title | Description | 
|---|---|---|
| 2022/10/12 | Porting the Solana eBPF JIT compiler to ARM64 | Low-level write-up of the work done to make the Solana compiler work on ARM64 | 
| 2022/06/24 | Managing risk in blockchain deployments | A summary of "Do You Really Need a Blockchain? An Operational Risk Assessment" report | 
| 2022/06/21 | Are blockchains decentralized? | A summary of "Are Blockchains Decentralized? Unintended Centralities in Distributed Ledgers" report | 
| 2020/08/05 | Accidentally stepping on a DeFi lego | Write-up of a vulnerability in yVault project | 
| 2020/05/15 | Bug Hunting with Crytic | Description of 9 bugs found by Trail of Bits tools in public projects | 
| 2019/11/13 | Announcing the Crytic $10k Research Prize | Academic research prize promoting open source work | 
| 2019/10/24 | Watch Your Language: Our First Vyper Audit | Pros and cons of Vyper language and disclosure of vulnerability in the Vyper's compiler | 
| 2019/08/08 | 246 Findings From our Smart Contract Audits: An Executive Summary | Publication of data aggregated from our audits. Discussion about possibility of automatic and manual detection of vulnerabilities, and usefulness of unit tests | 
| 2018/11/19 | Return of the Blockchain Security Empire Hacking | |
| 2018/02/09 | Parity Technologies engages Trail of Bits | |
| 2017/11/06 | Hands on the Ethernaut CTF | First write-up on Ethernaut | 
Guidance
General guidance
| Date | Title | Description | 
|---|---|---|
| 2021/02/05 | Confessions of a smart contract paper reviewer | Six requirements for a good research paper | 
| 2018/11/27 | 10 Rules for the Secure Use of Cryptocurrency Hardware Wallets | Recommendations for the secure use of hardware wallets. | 
| 2018/10/04 | Ethereum security guidance for all | Announcement of office hours, Blockchain Security Contacts, and Awesome Ethereum Security | 
| 2018/04/06 | How to prepare for a security review | Checklist for before having a security audit | 
Presentations
Talks, videos, and slides
| Date | Title | Description | 
|---|---|---|
| 2019/01/18 | Empire Hacking: Ethereum Edition 2 | Talks include: Anatomy of an unsafe smart contract programming language, Evaluating digital asset security fundamentals, Contract upgrade risks and recommendations, How to buidl an enterprise-grade mainnet Ethereum client, Failures in on-chain privacy, Secure micropayment protocols, Designing the Gemini dollar: a regulated, upgradeable, transparent stablecoin, Property testing with Echidna and Manticore for secure smart contracts, Simple is hard: Making your awesome security thing usable | 
| 2018/11/16 | Trail of Bits @ Devcon IV Recap | Talks include: Using Manticore and Symbolic Execution to Find Smart Contract Bugs, Blockchain Autopsies, Current State of Security | 
| 2017/12/22 | Videos from Ethereum-focused Empire Hacking | Talks include: A brief history of smart contract security, A CTF Field Guide for smart contracts, Automatic bug finding for the blockchain, Addressing infosec needs with blockchain technology | 
Tooling
Description of our tools and their use cases
| Date | Tool | Title | Description | 
|---|---|---|---|
| 2022/08/17 | ![]()  | Using mutants to improve Slither | Inserting random bugs into smart contracts and detecting them with various static analysis tools - to improve Slither's detectors | 
| 2022/07/28 | ![]()  | Shedding smart contract storage with Slither | Announcement of the slither-read-storage tool | 
| 2022/04/20 | Amarna: Static analysis for Cairo programs | Overview of Cairo footguns and announcement of the new static analysis tool | |
| 2022/03/02 | ![]()  | Optimizing a smart contract fuzzer | Measuring and improving performance of Echidna (Haskell code) | 
| 2021/12/16 | ![]()  | Detecting MISO and Opyn’s msg.value reuse vulnerability with Slither | Description of Slither's new detectors: delegatecall-loop and msg-value-loop | 
| 2021/04/02 | Solar: Context-free, interactive analysis for Solidity | Proof-of-concept static analysis framework | |
| 2020/10/23 | ![]()  | Efficient audits with machine learning and Slither-simil | Detect similar Solidity functions with Slither and ML | 
| 2020/08/17 | ![]()  | Using Echidna to test a smart contract library | Designing and testing properties with differential fuzzing | 
| 2020/07/12 | ![]()  | Contract verification made easier | Re-use Echidna properties with Manticore with manticore-verifier | 
| 2020/06/12 | ![]()  | Upgradeable contracts made safer with Crytic | 17 new Slither detectors for upgradeable contracts | 
| 2020/03/30 | ![]()  | An Echidna for all Seasons | Announcement of new features in Echidna | 
| 2020/03/03 | ![]()  | Manticore discovers the ENS bug | Using symbolic analysis to find vulnerability in Ethereum Name Service contract | 
| 2020/01/31 | ![]()  | Symbolically Executing WebAssembly in Manticore | Using symbolic analysis on an artificial WASM binary | 
| 2019/08/02 | Crytic: Continuous Assurance for Smart Contracts | New product that integrates static analysis with GitHub pipeline | |
| 2019/07/03 | ![]()  | Avoiding Smart Contract "Gridlock" with Slither | Description of a DoS vulnerability resulting from a strict equality check, and Slither's dangerous-strict-equality detector | 
| 2019/05/27 | ![]()  | Slither: The Leading Static Analyzer for Smart Contracts | Slither design and comparison with other static analysis tools | 
| 2018/10/19 | ![]()  | Slither – a Solidity static analysis framework | Introduction to Slither's API and printers | 
| 2018/09/06 | ![]()  | Rattle – an Ethereum EVM binary analysis framework | Turn EVM bytecode to infinite-register SSA form | 
| 2018/05/03 | ![]()  | State Machine Testing with Echidna | Example use case of Echidna's Haskell API | 
| 2018/03/23 | Use our suite of Ethereum security tools | Overview of our tools and documents: Not So Smart Contracts, Slither, Echidna, Manticore, EVM Opcode Database, Ethersplay, IDA-EVM, Rattle | |
| 2018/03/09 | ![]()  | Echidna, a smart fuzzer for Ethereum | First release and introduction to Echidna | 
| 2017/04/27 | ![]()  | Manticore: Symbolic execution for humans | First release and introduction to Manticore (not adopted for EVM yet) | 
Upgradeability
Our work related to contracts upgradeability
| Date | Title | Description | 
|---|---|---|
| 2020/12/16 | Breaking Aave Upgradeability | Description of Delegatecall Proxy vulnerability in formally-verified Aave contracts | 
| 2020/10/30 | Good idea, bad design: How the Diamond standard falls short | Audit of Diamond standard's implementation | 
| 2018/10/29 | How contract migration works | Alternative to upgradability mechanism - moving data to a new contract | 
| 2018/09/05 | Contract upgrade anti-patterns | Discussion of risks and recommendations for Data Separation and Delegatecall Proxy patterns. Disclosure of vulnerability in Zeppelin Proxy contract. | 
Zero-Knowledge
Our work in Zero-Knowledge Proofs space
| Date | Title | Description | 
|---|---|---|
| 2022/04/18 | The Frozen Heart vulnerability in PlonK | |
| 2022/04/15 | The Frozen Heart vulnerability in Bulletproofs | |
| 2022/04/14 | The Frozen Heart vulnerability in Girault’s proof of knowledge | |
| 2022/04/13 | Coordinated disclosure of vulnerabilities affecting Girault, Bulletproofs, and PlonK | Introducing new "Frozen Heart" class of vulnerabilities | 
| 2021/12/21 | Disclosing Shamir’s Secret Sharing vulnerabilities and announcing ZKDocs | |
| 2021/02/19 | Serving up zero-knowledge proofs | Fiat-Shamir transformation explained | 
| 2020/12/14 | Reverie: An optimized zero-knowledge proof system | Rust implementation of the MPC-in-the-head proof system | 
| 2020/05/21 | Reinventing Vulnerability Disclosure using Zero-knowledge Proofs | Announcement of DARPA sponsored work on ZK proofs of exploitability | 
| 2019/10/04 | Multi-Party Computation on Machine Learning | Implementation of 3-party computation protocol for perceptron and support vector machine (SVM) algorithms | 



