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};