Welcome to Boba
Boba is built on the Optimistic Rollup developed by Optimism. Aside from it focus on augmenting compute, Boba differs from Optimism by:
- providing additional cross-chain messaging such as a
- using different gas pricing logic
- providing a swap-based system for rapid L2->L1 exits (without the 7 day delay)
- providing a community fraud-detector that allows transactions to be independently verified by anyone
- interacting with L2 ETH using the normal ETH methods (
send eth_sendTransaction, and
provider.getBalance(address)rather than as WETH
- automatically relaying classical 7-day exit messages to L1 for you, rather than this being a separate step
User focused documentation is available on the Boba docs website. Developer-focused documentation lives in
./boba_documentationand within the service and contract directories. If you have questions or feel like something is missing check out our Discord server where we are actively responding, or open an issue in the GitHub repo for this site.
Base Layer (generally similar to Optimistic Ethereum)
packages/boba: Contains all the Boba typescript packages and contracts
message-relayer-fast: A batch message relayer that can be run for the fast mode without a 7 day delay
Follow these instructions to set up your local development environment.
You'll need the following:
Note: this is only relevant to developers who wish to work on Boba core services. For most test uses, e.g. deploying your contracts, it's simpler to use https://rinkeby.boba.network.
Clone the repository, open it, and install nodejs packages with
$ git clone [email protected]:bobanetwork/boba.git
$ cd boba
$ yarn clean # only needed / will only work if you had it installed previously
$ yarn build
Then, make sure you have Docker installed and make sure Docker is running. Finally, build and run the entire stack:
$ cd ops
$ BUILD=1 DAEMON=0 ./up_local.sh
Stack spinup can take 15 minutes or more. There are many interdependent services to bring up with two waves of contract deployment and initialization. Recommended settings in docker - 10 CPUs, 30 to 40 GB of memory. You can either inspect the Docker
Dashboard>Containers/All>Opsfor the progress of the
ops_deployeror you can run this script to wait for the sequencer to be fully up:
If the command returns with no log output, the sequencer is up. Once the sequencer is up, you can inspect the Docker
Dashboard>Containers/All>Opsfor the progress of
ops_boba_deployeror you can run the following script to wait for all the Boba contracts (e.g. the fast message relay system) to be deployed and up:
When the command returns with
Pass: Found L2 Liquidity Pool contract address, the entire Boba stack has come up correctly.
- Running out of space on your Docker, or having other having hard to debug issues? Try running
docker system prune -a --volumesand then rebuild the images.
- To (re)build individual base services:
docker-compose build -- l2geth
- To (re)build individual Boba ts services:
docker-compose build -- builderthen
docker-compose build -- dtl, for example
To run unit tests for a specific package:
Make sure you are in the
opsfolder and then run
docker-compose run integration_tests
Expect the full test suite with more than 110 tests including load tests to complete in between 30 minutes to two hours depending on your computer hardware.
By default, the
docker-compose upcommand will show logs from all services, and that can be hard to filter through. In order to view the logs from a specific service, you can run:
docker-compose logs --follow <service name>
Code forked from
go-ethereumunder the name
l2gethis licensed under the GNU GPLv3 in accordance with the original license.