Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
db01eb5
Add all forks to revm
rakita Aug 16, 2022
38bfb6d
Add all hardforks
rakita Aug 17, 2022
f2ff107
Merge remote-tracking branch 'origin/main' into main
rakita Aug 17, 2022
84739f1
EXTCODESIZE and EXTCODEHASH old hardfork gas fix
rakita Aug 17, 2022
fc1a81e
EXTCODECOPY fix gas hardfork
rakita Aug 17, 2022
daadfa2
fmt
rakita Aug 17, 2022
25f06a0
cleanups
rakita Aug 17, 2022
d10dfdf
EIP-161 is in SPURIOUS_DRAGON hardfork
rakita Aug 18, 2022
6e97f92
EIP-161 create nonce increment for SPURIOUS_DRAGON
rakita Aug 18, 2022
175aee5
Enable SPURIOUS_DRAGON tests
rakita Aug 18, 2022
c25fc75
Change database traits to return Result<Option<>>
rakita Aug 18, 2022
b1de572
80perc done transition
rakita Aug 20, 2022
0d68e72
db result compiled and new forks passing
rakita Aug 21, 2022
588d99d
not_existing, precompile perf is_cold
rakita Aug 22, 2022
4222270
fix for not_existing
rakita Aug 22, 2022
1d532dc
passing most of legact tests
rakita Aug 22, 2022
94bc2be
Remove spurious precompile hotfix for old forks
rakita Aug 22, 2022
61eebc8
EIP-2 OOG if crate bytecode can't be paid
rakita Aug 23, 2022
4859b12
Merge remote-tracking branch 'origin/main' into forks
rakita Aug 26, 2022
c8171a7
Add legacy tests to github ci, fmt,clippy
rakita Aug 26, 2022
2d1edcf
Merge remote-tracking branch 'origin/main' into forks
rakita Aug 26, 2022
b5c65f9
fmt
rakita Aug 26, 2022
4317474
Propagate FatalExternalError
rakita Aug 26, 2022
431fe68
Add Error associated type to Database.
rakita Aug 27, 2022
44f6ec1
Small cleanup
rakita Aug 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
EXTCODECOPY fix gas hardfork
  • Loading branch information
rakita committed Aug 17, 2022
commit fc1a81e03fd9ac7b8bec3217fb6bd5f7dd10d73e
15 changes: 6 additions & 9 deletions crates/revm/src/gas/calc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,14 @@ pub fn verylowcopy_cost(len: U256) -> Option<u64> {
pub fn extcodecopy_cost<SPEC: Spec>(len: U256, is_cold: bool) -> Option<u64> {
let wordd = len / U256::from(32);
let wordr = len % U256::from(32);
let base_gas: u64 = if SPEC::enabled(BERLIN) {
if is_cold {
COLD_ACCOUNT_ACCESS_COST
} else {
WARM_STORAGE_READ_COST
}
} else if SPEC::enabled(ISTANBUL) {
700

let base_gas: u64 = if SPEC::enabled(BERLIN) && is_cold {
// WARM_STORAGE_READ_COST is already calculated
COLD_ACCOUNT_ACCESS_COST - WARM_STORAGE_READ_COST
} else {
20
0
};
// TODO make this u64 friendly, U256 does not make sense.
let gas =
U256::from(base_gas).checked_add(U256::from(COPY).checked_mul(if wordr.is_zero() {
wordd
Expand Down
9 changes: 8 additions & 1 deletion crates/revm/src/instructions/opcode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,14 @@ macro_rules! gas_opcodee {
} else {
20
}),
/* 0x3c EXTCODECOPY */ OpInfo::dynamic_gas(),
/* 0x3c EXTCODECOPY */
OpInfo::gas(if SpecId::enabled($spec_id, SpecId::BERLIN) {
gas::WARM_STORAGE_READ_COST // add only part of gas
} else if SpecId::enabled($spec_id, SpecId::TANGERINE) {
700
} else {
20
}),
/* 0x3d RETURNDATASIZE */
OpInfo::gas(if SpecId::enabled($spec_id, SpecId::BYZANTIUM) {
gas::BASE
Expand Down