nanoeth
nanoeth copied to clipboard
attempting to be the cleanest & clearest implementation of Ethereum's execution layer
(For essentially context on Merkle/Patricia tree in nanoeth, [read here](https://github.com/norswap/nanoeth/blob/master/src/com/norswap/nanoeth/trees/patricia/README.md).) Currently, the Merkle tree implementation assumes, when performing insertion, that Merkle trees are "complete", i.e. that we have all the...
As [explained here](https://github.com/norswap/nanoeth/blob/master/src/com/norswap/nanoeth/trees/patricia/README.md#optimized-usage), while running transactions we ideally write state change to a cache (a hashmap), then we batch-insert all transactions into the tree. This batch insertion logic needs to...
[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) introduces the separation between base fee and miner tip. The [transaction format](https://github.com/norswap/nanoeth/blob/master/src/com/norswap/nanoeth/transactions/UnsignedTransaction.java) already accounts for this separation, but we currently do not validate the base fee value in the...
There are a few things that should be added to transaction tests, for completeness' sake: - testing chain IDs of 0 and very high chain IDs - testing [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) transactions...
Currently, we only test that we are able to prove valid Merkle proofs. For completeness we should also generate invalid Merkle proofs, and test that we fail to prove them....
Most of the tests run for nanoeth are against data from the shared tests of the [ethereum/tests repo](https://github.com/ethereum/tests). We are currently compatible with release [9.0.5](https://github.com/ethereum/tests/releases/tag/9.0.5), but [release 10](https://github.com/ethereum/tests/releases/tag/v10.0) came out,...
Javadoc supports adding package-level documentation, by adding it in a `package-info.java` file in the package. See [this link](https://www.baeldung.com/java-package-info) to see what that looks like. Currently, there is a lot of...