Omar Abdulla e77962ee66 Attempt to improve the geth tx indexing issue.
We're facing an issue where Geth transaction indexing can sometimes stall
on some of the nodes we're running. The logs show that for all transactions
we always need 1 second of waiting time. However, during certain runs we
sometimes run into an issue with some of the nodes where it seems like
their transaction indexer fails (either at the start or after some amount
of time) which leads us to never get the receipts back from these specific
nodes.

This is not a load issue as it appears like all of the other nodes handle
it just fine. However, it looks like once a node gets into this state it
can not get out of it and its bricked for the entire run.

This commit adds some more command line arguments to the geth command in
hopes of improving this issue.
2025-07-28 17:45:58 +03:00
2025-07-25 07:03:21 +00:00
2025-07-24 12:42:45 +00:00
2025-03-07 09:25:39 +01:00
2025-03-31 16:44:16 +02:00

revive-differential-tests

The revive differential testing framework allows to define smart contract tests in a declarative manner in order to compile and execute them against different Ethereum-compatible blockchain implmentations. This is useful to:

  • Analyze observable differences in contract compilation and execution across different blockchain implementations, including contract storage, account balances, transaction output and emitted events on a per-transaction base.
  • Collect and compare benchmark metrics such as code size, gas usage or transaction throughput per seconds (TPS) of different blockchain implementations.
  • Ensure reproducible contract builds across multiple compiler implementations or multiple host platforms.
  • Implement end-to-end regression tests for Ethereum-compatible smart contract stacks.

Declarative test format

For now, the format used to write tests is the matter-labs era compiler format. This allows us to re-use many tests from their corpora.

The retester utility

The retester helper utilty is used to run the tests. To get an idea of what retester can do, please consults its command line help:

cargo run -p revive-dt-core -- --help

For example, to run the complex Solidity tests, define a corpus structure as follows:

{
    "name": "ML Solidity Complex",
    "path": "/path/to/era-compiler-tests/solidity/complex"
}

Assuming this to be saved in a ml-solidity-complex.json file, the following command will try to compile and execute the tests found inside the corpus:

RUST_LOG=debug cargo r --release -p revive-dt-core  -- --corpus ml-solidity-complex.json 
S
Description
No description provided
Readme Apache-2.0 34 MiB
Languages
Rust 96.6%
Python 2.9%
Shell 0.4%