From bea4c3885213da3d80a1ff33e1f33b93735b400c Mon Sep 17 00:00:00 2001 From: john xu Date: Wed, 22 May 2024 16:36:29 +0800 Subject: [PATCH 1/2] feat: use spec in setup --- docker/docker-compose.yml | 8 +++----- lib/src/consts.rs | 2 +- provers/sgx/setup/src/app_args.rs | 13 +++++++------ provers/sgx/setup/src/setup_bootstrap.rs | 15 +++++++++++---- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index e67819529..a42396680 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,8 +14,8 @@ services: - ${HOME}/.config/gramine:/root/.config/gramine - ${HOME}/.config/raiko:/root/.config/raiko # environment: - # you can use your own PCCS host - #- PCCS_HOST=host.docker.internal:8081 + # you can use your own PCCS host + #- PCCS_HOST=host.docker.internal:8081 depends_on: - pccs init-self-register: @@ -35,11 +35,9 @@ services: - ${HOME}/.config/gramine:/root/.config/gramine - ${HOME}/.config/raiko:/root/.config/raiko - ${HOME}/.config/raiko/config/config.sgx.json:/etc/raiko/config.sgx.json + - ${HOME}/.config/raiko/config/chain_spec_list.docker.json:/etc/raiko/chain_spec_list.docker.json environment: - SENDER_PRIV_KEY=${SENDER_PRIV_KEY} - - L1_RPC=${L1_RPC} - - L1_CHAIN_ID=${L1_CHAIN_ID} - - SGX_VERIFIER_ADDRESS=${SGX_VERIFIER_ADDRESS} - HOLESKY_RPC=${HOLESKY_RPC} - HOLESKY_BEACON_RPC=${HOLESKY_BEACON_RPC} - TAIKO_A7_RPC=${TAIKO_A7_RPC} diff --git a/lib/src/consts.rs b/lib/src/consts.rs index 7ef7373ae..2b4eee412 100644 --- a/lib/src/consts.rs +++ b/lib/src/consts.rs @@ -80,7 +80,7 @@ impl SupportedChainSpecs { self.0.keys().cloned().collect() } - pub fn get_chain_spec(&self, network: &String) -> Option { + pub fn get_chain_spec(&self, network: &str) -> Option { self.0.get(network).cloned() } diff --git a/provers/sgx/setup/src/app_args.rs b/provers/sgx/setup/src/app_args.rs index fdcdfae1c..bf67602e8 100644 --- a/provers/sgx/setup/src/app_args.rs +++ b/provers/sgx/setup/src/app_args.rs @@ -23,16 +23,17 @@ pub enum Command { #[derive(Debug, Args)] pub struct BootstrapArgs { - #[clap(long, default_value = "http://localhost:8545")] - pub l1_rpc: String, - #[clap(long, default_value = "31337")] - pub l1_chain_id: u64, - #[clap(long, default_value = "0x4826533B4897376654Bb4d4AD88B7faFD0C98528")] - pub sgx_verifier_address: String, #[clap(long, default_value = "config.sgx.json")] /// Path to a config file that includes sufficient json args to request /// a proof of specified type. Curl json-rpc overrides its contents pub config_filename: String, + + #[arg(long, default_value = "chain_spec_list_default.json")] + /// Path to a chain spec file that includes supported chain list + pub chain_spec_filename: String, + + #[arg(long, default_value = "holesky")] + pub l1_network: String, } fn get_default_raiko_user_config_path(subdir: &str) -> PathBuf { diff --git a/provers/sgx/setup/src/setup_bootstrap.rs b/provers/sgx/setup/src/setup_bootstrap.rs index 6410c7285..5901fe1d9 100644 --- a/provers/sgx/setup/src/setup_bootstrap.rs +++ b/provers/sgx/setup/src/setup_bootstrap.rs @@ -8,7 +8,8 @@ use std::{ use crate::app_args::BootstrapArgs; use alloy_primitives::Address; -use anyhow::{Context, Result}; +use anyhow::{anyhow, Context, Result}; +use raiko_lib::consts::SupportedChainSpecs; use serde_json::{Number, Value}; use sgx_prover::{ bootstrap, check_bootstrap, get_instance_id, register_sgx_instance, remove_instance_id, @@ -22,6 +23,12 @@ pub(crate) async fn setup_bootstrap( config_dir: PathBuf, bootstrap_args: &BootstrapArgs, ) -> Result<()> { + let cs_path = config_dir.join(&bootstrap_args.chain_spec_filename); + let chain_specs = SupportedChainSpecs::merge_from_file(cs_path.clone())?; + let l1_chain_spec = chain_specs + .get_chain_spec(&bootstrap_args.l1_network) + .ok_or_else(|| anyhow!("Unsupported l1 network: {}", bootstrap_args.l1_network))?; + let cur_dir = env::current_exe() .expect("Fail to get current directory") .parent() @@ -56,9 +63,9 @@ pub(crate) async fn setup_bootstrap( }?; let register_id = register_sgx_instance( &bootstrap_proof.quote, - &bootstrap_args.l1_rpc, - bootstrap_args.l1_chain_id, - Address::from_str(&bootstrap_args.sgx_verifier_address).unwrap(), + &l1_chain_spec.rpc, + l1_chain_spec.chain_id, + l1_chain_spec.sgx_verifier_address.unwrap(), ) .await .map_err(|e| anyhow::Error::msg(e.to_string()))?; From 4b3d83e681145bca7e6463dc4cd0e0e41c30ac11 Mon Sep 17 00:00:00 2001 From: john xu Date: Wed, 22 May 2024 16:39:10 +0800 Subject: [PATCH 2/2] refactor: update docker-compose.yml to use correct file paths --- docker/docker-compose.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index a42396680..cf10d864f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -34,8 +34,8 @@ services: - /var/log/raiko:/var/log/raiko - ${HOME}/.config/gramine:/root/.config/gramine - ${HOME}/.config/raiko:/root/.config/raiko - - ${HOME}/.config/raiko/config/config.sgx.json:/etc/raiko/config.sgx.json - - ${HOME}/.config/raiko/config/chain_spec_list.docker.json:/etc/raiko/chain_spec_list.docker.json + - ${HOME}/.config/raiko/config/config.sgx.json:/root/.config/raiko/config/config.sgx.json + - ${HOME}/.config/raiko/config/chain_spec_list.docker.json:/root/.config/raiko/config/chain_spec_list.docker.json environment: - SENDER_PRIV_KEY=${SENDER_PRIV_KEY} - HOLESKY_RPC=${HOLESKY_RPC} @@ -50,7 +50,7 @@ services: dockerfile: Dockerfile image: gcr.io/evmchain/raiko:latest container_name: raiko - command: --config-path=/etc/raiko/config.sgx.json --chain-spec-path=/etc/raiko/chain_spec_list.docker.json + command: --config-path=/root/.config/raiko/config/config.sgx.json --chain-spec-path=/root/.config/raiko/config/chain_spec_list.docker.json devices: - "/dev/sgx_enclave:/dev/sgx_enclave" - "/dev/sgx_provision:/dev/sgx_provision" @@ -82,7 +82,7 @@ services: dockerfile: Dockerfile image: gcr.io/evmchain/raiko:latest container_name: raiko-self-register - command: --config-path=/etc/raiko/config.sgx.json --chain-spec-path=/etc/raiko/chain_spec_list.docker.json + command: --config-path=/root/.config/raiko/config/config.sgx.json --chain-spec-path=/root/.config/raiko/config/chain_spec_list.docker.json devices: - "/dev/sgx_enclave:/dev/sgx_enclave" - "/dev/sgx_provision:/dev/sgx_provision" @@ -90,8 +90,8 @@ services: - /var/log/raiko:/var/log/raiko - ${HOME}/.config/gramine:/root/.config/gramine - ${HOME}/.config/raiko:/root/.config/raiko - - ${HOME}/.config/raiko/config/config.sgx.json:/etc/raiko/config.sgx.json - - ${HOME}/.config/raiko/config/chain_spec_list.docker.json:/etc/raiko/chain_spec_list.docker.json + - ${HOME}/.config/raiko/config/config.sgx.json:/root/.config/raiko/config/config.sgx.json + - ${HOME}/.config/raiko/config/chain_spec_list.docker.json:/root/.config/raiko/config/chain_spec_list.docker.json ports: - "8080:8080" environment: