primitive's arbiter is both a high performance evm simulation engine and a work of art
arbiter contains universes, which contain worlds, which contain agents, which exhibit behaviors that can communicate over an mpmc messager
you can have arbitrary numbers of universes, worlds, agents, and behaviors. and they're all parallelized
worlds contain a local environment where agents share the same provider to interface with that world. think of this as a single evm instance
agents act on events, be it contract logs or other agent messages, in their respective worlds based on their defined behaviors
behaviors can range from submitting new transactions to storing local state to broadcasting messages to other agents
to define a behavior, we only have to implement the behavior trait with a type parameter representing the type of behavior to process:
the simple use case for arbiter is high performance stateful fuzzing / invariant smart contract testing (faster than foundry!!), but it can also be used for economic modeling and network chaos testing
it's also worth noting that arbiter is a great example of functional rust, both in its state enumeration and how its components are generalized
until next time :3