Skip to content

Aida VM SDb

Petr Hanzl edited this page Apr 22, 2024 · 3 revisions

Aida VM SDb

Overview

A tool for simulating state transition with an experimental StateDB and/or virtual machine. TODO: extend overview

VM-SDb

Classification

  • System Under Test
    • StateDB
    • Virtual Machine
  • Configurable Functional Tests
    • End state: compare StateDB to the generated world-state in last block
    • Transaction: check per transaction the modified portion of world-state (ie. substate)
    • VM: check receipt of transactions
  • Non-Functional Tests
    • Memory-Consumption
    • Disk-Space
    • Runtime of operations
  • Data set (offline)
    • Mainnet substate
    • Testnet substate

Requirements

You need a configured Go language environment to build the CLI application. Please check the Go documentation for the details of installing the language compiler on your system.

TODO

Build

To build the aida-vm-sdb application, run make aida-vm-sdb.

The build process downloads all the needed modules and libraries, you don't need to install these manually. The aida-vm-sdb executable application will be created in /build folder.

Run

./build/aida-vm-sdb [command options] [arguments...]

Validation run

Executes full state transitions and check output consistency.

./build/aida-vm-sdb --aida-db path/to/aida-db --db-tmp path/to/newly/created/statedb --vm-impl <geth, lfvm> --validate-tx --db-impl  <geth, carmen> <blockNumFirst> <blockNumLast>

This command performs block processing of the specified block range (inclusive). The initial StateDB is primed using substate from --aida-db. During block processing, a transaction calls a virtual machine which issues a series of StateDB operations to a selected storage system validating the state after each transaction.

Options

GLOBAL:
    --aida-db value            set substate, updateset and deleted accounts directory
    --deletion-db value        sets the directory containing deleted accounts database
    --update-db value          set update-set database directory
    --substate-db value        data directory for substate recorder/replayer
    --carmen-schema value      select the DB schema used by Carmen's current state DB (default: 0)
    --db-impl value            select state DB implementation (default: "geth")
    --db-variant value         select a state DB variant
    --db-src value             sets the directory contains source state DB data
    --db-tmp value             sets the temporary directory where to place state DB data; uses system default if empty
    --db-logging               enable logging of all DB operations (default: false)
    --archive                  set node type to archival mode. If set, the node keep all the EVM state history; otherwise the state history will be pruned. (default: false)
    --archive-variant value    set the archive implementation variant for the selected DB implementation, ignored if not running in archive mode
    --shadow-db value          use this flag when using an existing ShadowDb
    --db-shadow-impl value     select state DB implementation to shadow the prime DB implementation
    --db-shadow-variant value  select a state DB variant to shadow the prime DB implementation
    --vm-impl value            select VM implementation (default: "geth")
    --memory-breakdown         enables printing of memory usage breakdown (default: false)
    --memory-profile value     enables memory allocation profiling
    --profile                  enables profiling (default: false)
    --cpu-profile value        enables CPU profiling
    --random-seed value        set random seed (default: -1)
    --prime-threshold value    set number of accounts written to stateDB before applying pending state updates (default: 0)
    --prime-random             randomize order of accounts in StateDB priming (default: false)
    --skip-priming             if set, DB priming should be skipped; most useful with the 'memory' DB implementation (default: false)
    --update-buffer-size       buffer size for holding update set in MiB (default: 1<<64 - 1)
    --chainid value            ChainID for replayer (default: 250)
    --continue-on-failure      continue execute after validation failure detected (default: false)
    --quiet                    disable progress report (default: false)
    --sync-period value        defines the number of blocks per sync-period (default: 300)
    --keep-db                  if set, statedb is not deleted after run (default: false)
    --max-transactions value   limit the maximum number of processed transactions, default: unlimited (default: -1)
    --validate-tx              enables transaction state validation (default: false)
    --validate-ws              enables end-state validation (default: false)
    --validate                 enables validation (default: false)
    --workers value            number of worker threads that execute in parallel (default: 4)
    --log                      level of the logging of the app action ("critical", "error", "warning", "notice", "info", "debug"; default: INFO)
Clone this wiki locally