Restore Foundry to a test dependency via direct usage of solc

This commit is contained in:
Luke Parker
2023-11-12 04:34:45 -05:00
parent 7f1732c8c0
commit a43815f101
7 changed files with 16 additions and 31 deletions

View File

@@ -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());
}

View File

@@ -1,6 +0,0 @@
[profile.default]
src = "contracts"
out = "artifacts"
optimizer = true
optimizer_runs = 20_000

View File

@@ -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<Provider<Http>>,

View File

@@ -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<Abi>,
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<Provider<Http>>,
wallet: &k256::ecdsa::SigningKey,
) -> eyre::Result<Schnorr<Provider<Http>>> {
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();