Skip to content
This repository has been archived by the owner on Jul 5, 2024. It is now read-only.

Worst case benches - deploy wc contracts #1550

Merged
merged 18 commits into from
Aug 5, 2023
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9971dd5
add error handling on solc.compile()
AronisAt79 Aug 3, 2023
a018b43
add smart contracts for worst case block generation (bytecode, evm an…
AronisAt79 Aug 3, 2023
88c0576
bypass solc compilation warning 2018 : Function state mutability can …
AronisAt79 Aug 3, 2023
f3f7a37
create new modules worst_case and wcerrors, update dependencies
AronisAt79 Aug 3, 2023
95417ec
enable feature unbounded_depth for serde-json, needed for disabling j…
AronisAt79 Aug 3, 2023
39fe438
replace instance of Solc with an instance of owned struct Solcwc, ove…
AronisAt79 Aug 3, 2023
844693f
deploy new wc block generation SCs + fmt
AronisAt79 Aug 3, 2023
e773dde
Update integration-tests/src/lib.rs
AronisAt79 Aug 3, 2023
126d8ce
Update integration-tests/src/bin/gen_blockchain_data.rs
AronisAt79 Aug 3, 2023
c4b24a8
roll back previous unecessary changes according to review outcome
AronisAt79 Aug 3, 2023
dd30eca
Merge branch 'main' into worst-case-benches
AronisAt79 Aug 3, 2023
3e62c1f
Update integration-tests/contracts/EXTCODESIZE/EXTCODESIZE100.sol
AronisAt79 Aug 4, 2023
6d63d5c
Update integration-tests/contracts/MLOAD/MLOAD.sol
AronisAt79 Aug 4, 2023
96247b5
Update integration-tests/contracts/SDIV/SDIV.sol
AronisAt79 Aug 4, 2023
3b1de3f
Update integration-tests/src/bin/gen_blockchain_data.rs
AronisAt79 Aug 4, 2023
e51c32e
Update integration-tests/src/lib.rs
AronisAt79 Aug 4, 2023
ba3fb75
Update integration-tests/src/bin/gen_blockchain_data.rs
AronisAt79 Aug 4, 2023
84a5b5a
format
AronisAt79 Aug 5, 2023
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
16 changes: 10 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion integration-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ license = "MIT OR Apache-2.0"
[dependencies]
lazy_static = "1.4"
ethers = { version = "2.0.7", features = ["ethers-solc"] }
serde_json = "1.0.66"
serde_json = { version = "1.0.66", features = ["unbounded_depth"]}
serde = { version = "1.0.130", features = ["derive"] }
bus-mapping = { path = "../bus-mapping" , features = ["test"] }
eth-types = { path = "../eth-types" }
Expand All @@ -25,6 +25,10 @@ paste = "1.0"
rand_xorshift = "0.3.0"
rand_core = "0.6.4"
mock = { path = "../mock" }
home = "0.5.5"
semver = "1.0.18"
thiserror = "1.0.44"
glob = "0.3.1"

[dev-dependencies]
pretty_assertions = "1.0.0"
Expand Down
218 changes: 218 additions & 0 deletions integration-tests/contracts/EXTCODESIZE/EXTCODESIZE100.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract CheckExtCodeSize100 {
// event TestEvent(address addr);
AronisAt79 marked this conversation as resolved.
Show resolved Hide resolved

function checkBatchYul(address[] calldata addresses) external returns (uint256 length) {
uint256 ptr = 68;
uint256 len = addresses.length/100;
uint8 inc = 32;
for (uint256 i=0; i<len; i++) {
assembly {
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
length := extcodesize(calldataload(ptr))
ptr := add(ptr, inc)
}
}
return length;
}
}
25 changes: 25 additions & 0 deletions integration-tests/contracts/MLOAD/MLOAD.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract CheckMload {
struct Len {
uint256 l;
}

function checkBatchYul(Len calldata l) external returns (uint256 r) {
assembly {
let input := calldataload(4)
let len := div(input, 100)
// let a := 83
AronisAt79 marked this conversation as resolved.
Show resolved Hide resolved
let b := 77
for {
let i := 0
} lt(i, len) {
i := add(i, 1)
} {
r := mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(mload(0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
}
}
}
}
25 changes: 25 additions & 0 deletions integration-tests/contracts/SDIV/SDIV.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract CheckSdiv {
struct Len {
uint256 l;
}

function checkBatchYul(Len calldata l) external returns (uint256 r) {
assembly {
let input := calldataload(4)
let len := div(input, 100)
// let a := 83
AronisAt79 marked this conversation as resolved.
Show resolved Hide resolved
let b := 77
for {
let i := 0
} lt(i, len) {
i := add(i, 1)
} {
r := sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,sdiv(b,r))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
}
}
}
}
Loading
Loading