verbs_rs/lib.rs
1//! # VERBS
2//!
3//! Ethereum agent based modelling library
4//!
5//! Verbs is a library designed to aid the
6//! implementation of agent based models
7//! of the ethereum blockchain with a focus
8//! on performance and quick development
9//! of simulations.
10//!
11//! Verbs is built around the
12//! [revm](https://github.com/bluealloy/revm)
13//! implementation of the Ethereum virtual
14//! machine, agents interact directly with
15//! EVM, avoiding the overhead of messaging
16//! or multi-threading.
17//!
18//! ## Loading Contracts
19//!
20//! Verbs makes use of [alloy_sol_types] to convert
21//! ABI strings/files to Rust classes that can
22//! encode/decode function arguments etc.
23//!
24//! An ABI rust representation can generated using the `sol!`
25//! macro, for example
26//!
27//! ```
28//! use alloy_sol_types::sol;
29//!
30//! sol!(
31//! ContractName,
32//! r#"[
33//! {
34//! "inputs": [],
35//! "name": "getValue",
36//! "outputs": [
37//! {
38//! "internalType": "int256",
39//! "name": "",
40//! "type": "int256"
41//! }
42//! ],
43//! "stateMutability": "view",
44//! "type": "function"
45//! }
46//! ]"#
47//! );
48//!
49//! // Encodes call arguments
50//! ContractName::getValueCall {};
51//! ```
52
53pub mod agent;
54pub mod contract;
55mod db;
56pub mod env;
57pub mod sim_runner;
58pub mod utils;
59
60pub use db::{ForkDb, LocalDB, RequestCache, DB};