oasis-sdk
oasis-sdk copied to clipboard
Add REVM-based EVM module
Current status:
- Basic EVM functionality works and e2e tests pass
- Precompiles implemented:
- Ethereum standard (ecrecover, sha256, ripemd160, identity, bn128::{add,mul,pair}, blake2, modexp)
- Oasis-specific SHA2 (sha512_256, sha512, sha384)
- Oasis-specific confidential (x25519_derive, deoxysii_seal, deoxysii_open, keypair_generate, sign, verify, curve25519_compute_public)
Precompiles to do (sorted easy to hard):
- [ ] Oasis-specific confidential: random_bytes (problem: need to pass storage backend to precompile)
- [ ] Oasis-specific confidential: gas_used, pad_gas (problem: revm doesn't export gas used so far to precompiles)
- [ ] Oasis-specific general: subcall (problem: how to do this with revm?)
Other things to do:
- [ ] Fix nonce updating
- [ ] Port testing framework for precompiles from old EVM module
- [ ] Test everything
The plan is to get this PR into a mergeable state by fixing nonce updates and then implement the rest via smaller PRs.