Skip to content

Commit

Permalink
Merge branch 'main' into feat/release_pls
Browse files Browse the repository at this point in the history
  • Loading branch information
0xJepsen committed Oct 18, 2023
2 parents 89a3df7 + 89de2ca commit 30b3ead
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 3 deletions.
4 changes: 4 additions & 0 deletions .github/codecov.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@ coverage:
target: 50%
threshold: 1%
informational: true
ignore:
- "arbiter-core/contracts/*"
- "arbiter/arbiter-core/benches*"
- "arbiter/arbiter-core/src/bindings"

16 changes: 16 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,22 @@ jobs:
- name: cargo clippy
run: cargo clippy --all --all-features -- -D warnings

udeps:
name: udeps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
components: rustfmt

- name: install udeps
run: cargo install --git https://github.com/est31/cargo-udeps --locked
- name: cargo udeps
run: cargo +nightly udeps

codespell:
name: codespell
runs-on: ubuntu-latest
Expand Down
6 changes: 6 additions & 0 deletions arbiter-core/src/environment/fork.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ pub struct Fork {
/// The [`HashMap`] of [`ContractMetadata`] that will be used by the
/// end-user.
pub contracts_meta: HashMap<String, ContractMetadata>,
/// The [`HashMap`] of [`Address`] that will be used by the end-user.
pub eoa: HashMap<String, ethers::types::H160>,
}

impl Fork {
Expand Down Expand Up @@ -74,6 +76,7 @@ impl Fork {
Ok(Self {
db,
contracts_meta: disk_data.meta,
eoa: disk_data.externally_owned_accounts,
})
}
}
Expand All @@ -96,4 +99,7 @@ pub struct DiskData {

/// This is the raw data that will be loaded into the [`Fork`].
pub raw: HashMap<Address, (AccountInfo, Storage)>,

/// This is the eoa data that will be loaded into the [`Fork`].
pub externally_owned_accounts: HashMap<String, Address>,
}
6 changes: 6 additions & 0 deletions arbiter-core/src/tests/environment_control.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,10 @@ async fn fork_into_arbiter() {
.await
.unwrap();
assert_eq!(balance, U256::from(34890707020710109111_u128));

// eoa check
let eoa = fork.eoa.get("vitalik").unwrap();
let eth_balance = client.get_balance(*eoa, None).await.unwrap();
// Check the balance of the eoa with the load cheatcode
assert_eq!(eth_balance, U256::from(934034962177715175765_u128));
}
19 changes: 19 additions & 0 deletions bin/fork/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ pub(crate) struct ForkConfig {
block_number: u64,
#[serde(rename = "contracts")]
contracts_meta: HashMap<String, ContractMetadata>,
externally_owned_accounts: HashMap<String, Address>,
}

impl ForkConfig {
Expand Down Expand Up @@ -84,6 +85,22 @@ impl ForkConfig {
let storage_layout = artifacts.storage_layout;

digest::create_storage_layout(contract_data, storage_layout, &mut db, ethers_db)?;

for eoa in self.externally_owned_accounts.values() {
let info = ethers_db
.basic(eoa.to_fixed_bytes().into())
.map_err(|_| {
ArbiterError::DBError(
"Failed to fetch account info with
EthersDB."
.to_string(),
)
})?
.ok_or(ArbiterError::DBError(
"Failed to fetch account info with EthersDB.".to_string(),
))?;
db.insert_account_info(eoa.to_fixed_bytes().into(), info);
}
}
Ok(db)
}
Expand All @@ -95,6 +112,7 @@ impl ForkConfig {
Ok(Fork {
db,
contracts_meta: self.contracts_meta.clone(),
eoa: self.externally_owned_accounts.clone(),
})
}

Expand Down Expand Up @@ -131,6 +149,7 @@ impl ForkConfig {
let disk_data = DiskData {
meta: fork.contracts_meta,
raw,
externally_owned_accounts: fork.eoa,
};

let json_data = serde_json::to_string(&disk_data)?;
Expand Down
1 change: 0 additions & 1 deletion bin/fork/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,4 @@ fn read_in() {
let forked_db = Fork::from_disk(PATH_TO_DISK_STORAGE);
assert!(forked_db.is_ok());
});
fs::remove_file(PATH_TO_DISK_STORAGE).unwrap();
}
2 changes: 1 addition & 1 deletion example_fork/fork_into_test.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"meta":{"weth":{"address":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","artifacts_path":"example_fork/WETH.json","mappings":{"balanceOf":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"]}}},"raw":{"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2":[{"balance":"0x295f9676bf9b23ace3959","nonce":1,"code_hash":"0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23","code":{"bytecode":"0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029","state":"Raw"}},{"2":"18","0":"39553310892875263560936207548857176834471854732421237974622739861269930573850","26503682303622372439135079884578270057785794679663935708947492083441471802570":"34890707020710109111","1":"39473711962023174749424659199615060097653232135126263878786656434573155500040","4":"0","3":"0","5":"0"}]}}
{"meta":{"weth":{"address":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","artifacts_path":"example_fork/WETH.json","mappings":{"balanceOf":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"]}}},"raw":{"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2":[{"balance":"0x295f9676bf9b23ace3959","nonce":1,"code_hash":"0xd0a06b12ac47863b5c7be4185c2deaad1c61557033f56c7d4ea74429cbb25e23","code":{"bytecode":"0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029","state":"Raw"}},{"3":"0","1":"39473711962023174749424659199615060097653232135126263878786656434573155500040","26503682303622372439135079884578270057785794679663935708947492083441471802570":"34890707020710109111","0":"39553310892875263560936207548857176834471854732421237974622739861269930573850","4":"0","5":"0","2":"18"}],"0xd8da6bf26964af9d7eed9e03e53415d37aa96045":[{"balance":"0x32a256c95f0e218155","nonce":1130,"code_hash":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","code":{"bytecode":"0x","state":"Raw"}},{}]},"externally_owned_accounts":{"vitalik":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}}
6 changes: 5 additions & 1 deletion example_fork/weth_config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ output_filename = "test.json"
provider = "https://eth.llamarpc.com"
block_number = 18228556

# EOAs
[externally_owned_accounts]
vitalik = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" # vitalik.eth as of 10/2/2023

# Contracts stored in a mapping
# Try this out with the weth contract
[contracts.weth]
Expand All @@ -13,4 +17,4 @@ artifacts_path = "example_fork/WETH.json"
[contracts.weth.mappings]
balanceOf = [
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", # vitalik.eth as of 10/2/2023
]
]

0 comments on commit 30b3ead

Please sign in to comment.