From a43815f1010df745914e3eed79c89550cc0aedae Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Sun, 12 Nov 2023 04:34:45 -0500 Subject: [PATCH] Restore Foundry to a test dependency via direct usage of solc --- .github/actions/build-dependencies/action.yml | 6 ------ .github/actions/test-dependencies/action.yml | 1 + coins/ethereum/build.rs | 12 ++++++++++-- coins/ethereum/foundry.toml | 6 ------ coins/ethereum/src/contract.rs | 2 +- coins/ethereum/tests/contract.rs | 18 +++--------------- docs/Getting Started.md | 2 +- 7 files changed, 16 insertions(+), 31 deletions(-) delete mode 100644 coins/ethereum/foundry.toml diff --git a/.github/actions/build-dependencies/action.yml b/.github/actions/build-dependencies/action.yml index cd7137a38..8717be4e2 100644 --- a/.github/actions/build-dependencies/action.yml +++ b/.github/actions/build-dependencies/action.yml @@ -54,11 +54,5 @@ runs: components: ${{ inputs.rust-components }} targets: wasm32-unknown-unknown, riscv32imac-unknown-none-elf - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@cb603ca0abb544f301eaed59ac0baf579aa6aecf - with: - version: nightly - cache: false - # - name: Cache Rust # uses: Swatinem/rust-cache@a95ba195448af2da9b00fb742d14ffaaf3c21f43 diff --git a/.github/actions/test-dependencies/action.yml b/.github/actions/test-dependencies/action.yml index 748d21a7a..b313b38d1 100644 --- a/.github/actions/test-dependencies/action.yml +++ b/.github/actions/test-dependencies/action.yml @@ -29,6 +29,7 @@ runs: uses: foundry-rs/foundry-toolchain@cb603ca0abb544f301eaed59ac0baf579aa6aecf with: version: nightly + cache: false - name: Run a Monero Regtest Node uses: ./.github/actions/monero diff --git a/coins/ethereum/build.rs b/coins/ethereum/build.rs index 8094bbfeb..2166f6ad2 100644 --- a/coins/ethereum/build.rs +++ b/coins/ethereum/build.rs @@ -1,7 +1,15 @@ fn main() { println!("cargo:rerun-if-changed=contracts"); println!("cargo:rerun-if-changed=artifacts"); - println!("cargo:rerun-if-changed=foundry.toml"); - assert!(std::process::Command::new("forge").args(["build"]).status().unwrap().success()); + #[rustfmt::skip] + let args = [ + "--base-path", ".", + "-o", "./artifacts", "--overwrite", + "--bin", "--abi", + "--optimize", + "./contracts/Schnorr.sol" + ]; + + assert!(std::process::Command::new("solc").args(args).status().unwrap().success()); } diff --git a/coins/ethereum/foundry.toml b/coins/ethereum/foundry.toml deleted file mode 100644 index 1eddc8c80..000000000 --- a/coins/ethereum/foundry.toml +++ /dev/null @@ -1,6 +0,0 @@ -[profile.default] -src = "contracts" -out = "artifacts" - -optimizer = true -optimizer_runs = 20_000 diff --git a/coins/ethereum/src/contract.rs b/coins/ethereum/src/contract.rs index 19104005d..80093b084 100644 --- a/coins/ethereum/src/contract.rs +++ b/coins/ethereum/src/contract.rs @@ -12,7 +12,7 @@ pub enum EthereumError { VerificationError, } -abigen!(Schnorr, "./artifacts/Schnorr.sol/Schnorr.json"); +abigen!(Schnorr, "./artifacts/Schnorr.abi"); pub async fn call_verify( contract: &Schnorr>, diff --git a/coins/ethereum/tests/contract.rs b/coins/ethereum/tests/contract.rs index 9a0a5b79b..5577744ab 100644 --- a/coins/ethereum/tests/contract.rs +++ b/coins/ethereum/tests/contract.rs @@ -27,17 +27,6 @@ use ethereum_serai::{ contract::{Schnorr, call_verify}, }; -#[derive(serde::Deserialize)] -struct Bytecode { - object: String, -} - -#[derive(serde::Deserialize)] -struct Artifact { - abi: Option, - bytecode: Bytecode, -} - // TODO: Replace with a contract deployment from an unknown account, so the environment solely has // to fund the deployer, not create/pass a wallet pub async fn deploy_schnorr_verifier_contract( @@ -45,10 +34,9 @@ pub async fn deploy_schnorr_verifier_contract( client: Arc>, wallet: &k256::ecdsa::SigningKey, ) -> eyre::Result>> { - let path = "./artifacts/Schnorr.sol/Schnorr.json"; - let artifact: Artifact = serde_json::from_reader(File::open(path).unwrap()).unwrap(); - let abi = artifact.abi.unwrap(); - let hex_bin_buf = artifact.bytecode.object; + let abi: Abi = serde_json::from_reader(File::open("./artifacts/Schnorr.abi").unwrap()).unwrap(); + + let hex_bin_buf = std::fs::read_to_string("./artifacts/Schnorr.bin").unwrap(); let hex_bin = if let Some(stripped) = hex_bin_buf.strip_prefix("0x") { stripped } else { &hex_bin_buf }; let bin = hex::decode(hex_bin).unwrap(); diff --git a/docs/Getting Started.md b/docs/Getting Started.md index 2dd4b2c57..dae481e3d 100644 --- a/docs/Getting Started.md +++ b/docs/Getting Started.md @@ -48,7 +48,7 @@ svm install 0.8.16 svm use 0.8.16 ``` -### Install foundry and anvil +### Install foundry (for tests) ``` cargo install --git https://github.com/foundry-rs/foundry --profile local --locked forge cast chisel anvil