An execution environment for blockchains.
Grug consists of the following Rust crates:
Crate | Description |
---|---|
app | State machine transition logics and Tendermint ABCI implementation |
client | HTTP client for interacting with Grug via Tendermint RPC |
crypto | Cryptography functionalities |
db/disk | An on-disk, persisted DB backend |
db/memory | An in-memory, ephemeral DB backend; used for testing |
ffi | Helpers for building or interacting with FFI |
macros | Procedural macros for reducing boilerplates in contract developments |
jellyfish-merkle | Jellyfish Merkle Tree (JMT) implementation |
std | A "meta crate" the re-exports contents of other crates |
storage | Abstractions over key-value stores |
testing | Testing utilities |
types | Types, traits, and some helper functions |
vm/rust | A VM that runs native Rust codes; used for testing |
vm/wasm | A VM that runs WebAssembly byte codes |
Prerequisites:
Install the grug
command line software:
just install
Run tests:
just test
Lint the code:
just lint
Compile and optimize smart contracts:
just optimize
TODO
TBD