Skip to content

Make Geth against Geth differential tests work #10

@xermicus

Description

@xermicus

We can have the leader and follower implementations be the same and that should pass for all tests. The code base is close to allowing this, some small things to iron out:

  • The nonce is just set to 0 all the time. Either change to query the node or better track it and supply it directly. Adding a method fetch_add_nonce to the NodeInteraction trait which internally tracks it could be an option. However right now the node pool is a simple round-robbin without locking, so there's a chance the nonce is not in sequence. This could also be changed to ensure contiguous nonces.
  • Implement some very basic differential verification in the test driver (in simple terms, in fn execute_input assert that both diff structures received from the trace_transaction are equal for every transaction and the receipts contain the same events and output).
  • Sometimes the Matter Labs test cases don't explicitly deploy the contract to be tested. In that case, try to deploy it with empty constructor calldata.
  • If the calldata contain references to other contract addresses, they need to be looked up. This also means that deployed contracts (at least their addresses) must be inserted into the State deployed_contracts mapping.
  • Some tests use callers for which we don't have a private key, need to think about what we can do here (obvious solution seems to just change those tests if they allow it).
  • Certain tests require a specific version of the solc compiler. We need a way to detect the version that they require and provide them with that version.
  • Certain tests make use of libraries and they require these libraries to be first deployed and then dynamically linked into the contract source code before the contracts are deployed. We need to handle linking.
  • There might be problems and missing things I am not aware of which need fixing too.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions