Boba Network’s Path to Decentralization

Boba Network
3 min readOct 12, 2023

--

This article is provided by Enya Labs as part of their contributions to Boba Network.

As Boba Network approaches its final phase of migrating its Ethereum and BNB rollup to Bedrock (an optimized rollup architecture from Optimism), it’s crucial to highlight a significant distinction in our migration.

Boba Network will be the first Optimistic Rollup on op-stack to use Erigon as its Sequencer client.

Why is this important?

Beyond the typical benefits of diversity, such as fostering innovation and creativity, we believe there are two other fundamental reasons specific to the current state of op-stack:

Ethereum’s Engineering Values: Op-stack rollups that align with Ethereum’s future decentralization roadmap face a critical challenge: ensuring resiliency and upgradability. Having multiple op-stack execution block-producing clients provides teams with the confidence to remove upgrade keys on L1 smart contracts, a significant step towards decentralization.

Embracing the Challenge: There are unexpected benefits to taking the more challenging route. While we could have simply forked and migrated to op-stack, we believe the Bedrock op-stack specifications are the gold standard for optimistic rollups. To truly grasp every nuance, we must dissect and rebuild it.

In recent months, we’ve delved deep into Erigon and Optimism’s op-stack, making critical contributions, including:

Erigon Contributions:
- “Partial EIP1186 eth_getProof implementation”
https://github.com/ledgerwatch/erigon/pull/6560
- “Upgrade libp2p (enables go 1.21 support)”,
https://github.com/ledgerwatch/erigon/pull/8288
- “Allow ephemeral ports for p2p”,
https://github.com/ledgerwatch/erigon/pull/7503
- “Enable negative Merkle proofs for eth_getProof”
https://github.com/ledgerwatch/erigon/pull/7393
- “Add additional trie proof testing”
https://github.com/ledgerwatch/erigon/pull/7382
- “Fix eth_getProof element order”
https://github.com/ledgerwatch/erigon/pull/7351
- “Fix bugs in trie hash computation”,
https://github.com/ledgerwatch/erigon/pull/7337
- “Add storage proof support to eth_getProof”
https://github.com/ledgerwatch/erigon/pull/7202
- “Add eth_getProof support for historical blocks”
https://github.com/ledgerwatch/erigon/pull/7115
- “Delete retain_list_builder.go”,
https://github.com/ledgerwatch/erigon/pull/7096
- “Fix broken link in doc”
https://github.com/ledgerwatch/erigon/pull/7094
- “Backfill eth getproof tests”
https://github.com/ledgerwatch/erigon/pull/7092
- “Log bound addresses instead of configured ones”
https://github.com/ledgerwatch/erigon/pull/6948

Optimism Contributions:
- “op-e2e: Support external client in the e2e new tests”
https://github.com/ethereum-optimism/optimism/pull/7346
- “feat(proxyd): Add rate limit, body size and response size protections to websocket for proxyd”
https://github.com/ethereum-optimism/optimism/pull/4994"
- “Add unpause function in L1CrossDomainMessenger contract”
https://github.com/ethereum-optimism/optimism/pull/3358"
- “fix fixSkippedDeposits”,
https://github.com/ethereum-optimism/optimism/pull/1240
- “allow release pipeline for hearbeat service”
https://github.com/ethereum-optimism/optimism/pull/7415
- “Reusable pipeline components”
https://github.com/ethereum-optimism/optimism/pull/7368
- “op-node: RPC Limit client does not respect context”
https://github.com/ethereum-optimism/optimism/pull/7525"
- “Jyellic/merge upstream 20230911”
https://github.com/ethereum-optimism/optimism/pull/7180"
- “op-e2e: allow external processes to skip tests”
https://github.com/ethereum-optimism/optimism/pull/7065"
- “Fix dangling modified file on make devnet-up”
https://github.com/ethereum-optimism/optimism/pull/7051
- “Add cannon-prestate as prereq to devnet-up”
https://github.com/ethereum-optimism/optimism/pull/7049
- “ci: Convert go-e2e-tests CI to make targets”
https://github.com/ethereum-optimism/optimism/pull/7033
- “op-e2e: bump a couple timeouts slightly”
https://github.com/ethereum-optimism/optimism/pull/6294
- “op-e2e: make TestBatcherMultiTx more resilient”
https://github.com/ethereum-optimism/optimism/pull/6292
- “op-e2e: only add a signer key to l1”
https://github.com/ethereum-optimism/optimism/pull/6291
- “op-e2e: add test option to utilize external eth clients for L2”
https://github.com/ethereum-optimism/optimism/pull/6280
- “ci: move devnet test to make target”
https://github.com/ethereum-optimism/optimism/pull/6235
- “op-e2e: Fix bug in TestWithdrawals”
https://github.com/ethereum-optimism/optimism/pull/5931
- “Rename conflicting uses of \”L1_PRIVATE_KEY\””
https://github.com/ethereum-optimism/optimism/pull/1304

Boba Network’s first devnet is already live on Sepolia, with Erigon serving as the sequencer! Check it out here.

To interact with our network, use these scripts.

The code for op-stack Erigon is available here, and it’s continuously tested against Op-stack e2e tests. For more on executing e2e tests, see this link.

--

--

Boba Network

Boba Network is delivering a faster, cheaper, smarter, more seamless experience for the next billion users of Ethereum.