BOLD, Permissionless Validation for Arbitrum Chains
Written by Ed Felten and Raul Jordan — August 3, 2023
TL;DR: We are announcing BOLD (Bounded Liquidity Delay): a dispute protocol we invented at Offchain Labs that can enable permissionless validation for Arbitrum chains. The code and specification are now available on Github here!
BOLD allows Arbitrum-technology chains to:
- Guarantee safety and liveness of their chain
- Minimize latency to settle states
- Prevent dishonest parties from raising the cost for honest ones
Today, Optimistic Rollup chains that support fraud proofs, such as Arbitrum One and Nova, settle their state to Ethereum. A set of entities, known as validators, post claims about the L2 state they have verified to be true to a smart contract. During a 7 day period, other validators can challenge these claims, and a dispute resolution process occurs. Once a claim is confirmed, that L2 state is considered correct on Ethereum. This validation process is why assets can be bridged between Arbitrum chains and Ethereum L1 with a 7 day delay. A challenge protocol involves parties submitting fraud proofs to Ethereum to determine the correct result of L2 execution.
However, validation on Arbitrum One and Nova via fraud proofs today is permissioned because their dispute protocols are vulnerable to denial-of-service attacks. A malicious validator can repeatedly spend funds to prevent assertions from being confirmed, therefore delaying withdrawals from L2 to L1 for as long as they’re willing. Ed Felten from our team has previously written about Delay Attacks on Rollup Protocols and their severity here.
We have invented a new approach to validation that gives us a fixed, upper bound 7 days of additional delay on confirmations without suffering from delay attacks. Our protocol, called BOLD can make validation of Arbitrum chains safely permissionless, moving them many steps up in the ladder of decentralization. The approach allows a single, honest validator to win disputes on Ethereum against any number of adversaries.
The code and research specification are now available on Github here. We are also contributing the code to the Arbitrum Nitro codebase for development and testing. Soon, we’ll be announcing both local devnets for the community to try and a public testnet for the protocol!
Introducing BOLD
Every layer 2 system has to cope with the problems of delays when settling their state to Ethereum. BOLD is an evolution of Arbitrum’s dispute system culminating in a much more robust approach. To our knowledge, BOLD is the first, practical challenge protocol that supports efficient all-versus-all disputes. It:
(a) Guarantees fixed upper bounds on confirmation times for Optimistic Rollups’ settlement, …and
(b) Ensures a single honest party in the world can win against any number of malicious claims
Disputes in BOLD are tied to deterministic execution of an L2 state, not to a particular staker or entity. This means anyone who agrees with a state can defend it, until a single point of disagreement is found. Because the honest L2 state is deterministic, honest parties will always win if participating, as evil ones cannot fake proofs of execution.
For detailed information on how BOLD works and what makes it special, check out our research specification available on Github here.
Code Is Now Available
Today, we are making public our implementation of BOLD and publishing our research specification that explains the protocol’s internals under github.com/offchainlabs/bold. The codebase includes a complete implementation of a challenge manager that not only posts assertions about an L2’s state, but can participate in challenges against any number of malicious adversaries and confirm the correct state.
Our implementation is modular, and can be integrated in Arbitrum Orbit chains or Arbitrum One/Nova should the DAO decide to adopt it. When integrated into an L2 validator node, BOLD encapsulates all logic required to participate in challenges, post assertions about L2 states to Rollup contracts on Ethereum, and confirm such assertions.
BOLD has also been audited by Trail of Bits, with our audit report included in the repository here. The codebase also follows the same licensing as Arbitrum Nitro at this time, as we plan to integrate the code as a dependency Arbitrum technology chains can easily use — batteries included.
We believe additional tooling is crucial to understand a complex system such as this. As a result, we are also building a Challenge visualizer and API that is in the works! Sneak peek below, built by Preston Van Loon:
Roadmap
There are a few more steps to complete before BOLD is ready for production. Coming up next, we plan on:
- Sharing instructions for running an Arbitrum Nitro devnet with BOLD challenges enabled in the coming weeks
- Publishing our formal proofs code for BOLD, written in the Isabelle programming language along with our full, academic-style paper
- A public testnet environment (a new one will be provisioned for BOLD) for the community to participate in challenge games
- …and if there is positive community feedback, we plan to prepare an AIP so the DAO can decide whether to adopt this new challenge protocol in Arbitrum One and Nova
Try it Out Today!
The BOLD repository README includes instructions on running a full dispute example locally via an end-to-end test, allowing anyone to see how a dispute is resolved using a local Ethereum anvil backend:
lvl=info msg="Submitting one-step-proof to protocol" service=edge-tracker startCommit=0x2f0e761b endHeight=4 endCommit=0xfb7311a8 validatorName=bob challengeType=small_step_challenge_edge id=0xbdb60918 startHeight=3
lvl=info msg="Succeeded one-step-proof for edge and confirmed it as winner" service=edge-tracker id=0x4be715c1 startHeight=2 startCommit=0xbcb71b66 endHeight=3 endCommit=0x2f0e761b validatorName=bob challengeType=small_step_challenge_edge
lvl=info msg="Edge tracker received notice of a confirmation, exiting" service=edge-tracker endCommit=0xfb7311a8 validatorName=bob challengeType=small_step_challenge_edge id=0xbdb60918 startHeight=3 startCommit=0x2f0e761b endHeight=4