Software Architecture
Arbiter is broken into a number of crates that provide different levels of abstraction for interacting with the Ethereum Virtual Machine (EVM) sandbox.
Arbiter Core
The arbiter-core crate is the core of the Arbiter.
It contains the Environment struct which acts as an EVM sandbox and the RevmMiddleware which gives a convenient interface for interacting with contracts deployed into the Environment.
Direct usage of arbiter-core will be minimized as much as possible as it is intended for developers to mostly pull from the arbiter-engine crate in the future.
This crate provides the interface for agents to interact with an in memory evm.
Arbiter Engine
The arbiter-engine crate is the main interface for running simulations.
It is built on top of arbiter-core and provides a more ergonomic interface for designing agents and running them in simulations.
Arbiter CLI (under construction)
The Arbiter CLI is a minimal interface for managing your Arbiter projects. It is built on top of Foundry and aims to provide a similar CLI interface of setting up and interacting with Arbiter projects.