Skip to main content

A Python tool for verifying Ethereum Consensus Specification using ESBMC

Project description

EthCheck

EthCheck is a command-line tool for testing and verifying the Ethereum Consensus Specification using the ESBMC model checker. EthCheck runner includes:

  • Automatically generating test cases for each detected issue;
  • Executing these tests against eth2spec for confirmation;
  • A comprehensive pip package with detailed documentation.

Architecture

The figure illustrates the EthCheck architecture.

image

Installation

EthCheck is currently supported on Linux.

1. Install dependencies

sudo apt update
sudo apt install -y python3-venv python3-pip git-lfs
./scripts/install_deps.sh

2. Activate the Virtual Environment

Activate the Python virtual environment created during the step above.

source ethcheck_env/bin/activate

3. Install EthCheck

pip install .

Usage

Important: Ensure the virtual environment is active by running the command source ethcheck_env/bin/activate before using EthCheck. The terminal should display <ethcheck_env> if the environment is active.

Verify a specific file

ethcheck --file ethcheck/spec.py

Verify the Deneb fork specification

ethcheck --deneb

ESBMC version

Git hash: 1dffbe270c
Git tag: consensus-v1
MD5: 618f1fd89c399102865f9e366d164cb6

Acknowledgment

We thank the Ethereum Foundation for supporting our research team on this project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ethcheck-0.1.2.tar.gz (70.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ethcheck-0.1.2-py3-none-any.whl (70.4 MB view details)

Uploaded Python 3

File details

Details for the file ethcheck-0.1.2.tar.gz.

File metadata

  • Download URL: ethcheck-0.1.2.tar.gz
  • Upload date:
  • Size: 70.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for ethcheck-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3cf5260228f04d6f87a0a010241818ed25570106449069a3bbd012118d692db6
MD5 7878cdf22bd51eb539f051ebdfedef58
BLAKE2b-256 040e2c2fdd1bc13bf7b1483d029c80a8dae835bebad1621b77b0e9d33ed5e45f

See more details on using hashes here.

File details

Details for the file ethcheck-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ethcheck-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 70.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for ethcheck-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4905f28ccdfe7cdc76a76b8a6cbbdff38af279b60626d3922782bccc1d0be4c0
MD5 10a8ddf3c56284fb944a5a3609f0cf29
BLAKE2b-256 6976c52609c5f0aafdfe3e1abe6a53e5a93e7e6e33509116ee59dbb1378ebca2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page