Skip to content

Commit

Permalink
good kids handle errors
Browse files Browse the repository at this point in the history
  • Loading branch information
ec2 committed Dec 5, 2023
1 parent 2a510f2 commit 24d2fbb
Showing 1 changed file with 29 additions and 39 deletions.
68 changes: 29 additions & 39 deletions prover/src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,25 +57,23 @@ fn gen_evm_proof<C: AppCircuit>(
config_path: PathBuf,
witness: C::Witness,
yul_path_if_verify: Option<impl AsRef<Path>>,
) -> (Vec<u8>, Vec<Vec<Fr>>) {
) -> eyre::Result<(Vec<u8>, Vec<Vec<Fr>>)> {
let k = C::get_degree(&config_path);
let params = gen_srs(k);

let pk = C::read_pk(&params, pk_path, &witness);

let (proof, instances) = C::gen_evm_proof_shplonk(&params, &pk, &config_path, None, &witness)
.map_err(|e| eyre::eyre!("Failed to generate calldata: {}", e))
.unwrap();
.map_err(|e| eyre::eyre!("Failed to generate calldata: {}", e))?;

println!("Proof size: {}", proof.len());
if let Some(deployment_code_path) = yul_path_if_verify {
let deployment_code =
C::gen_evm_verifier_shplonk(&params, &pk, Some(deployment_code_path), &witness)
.unwrap();
C::gen_evm_verifier_shplonk(&params, &pk, Some(deployment_code_path), &witness)?;
println!("Deployment code size: {}", deployment_code.len());
evm_verify(deployment_code, instances.clone(), proof.clone());
}
(proof, instances)
Ok((proof, instances))
}

pub(crate) async fn gen_evm_proof_rotation_circuit_handler(
Expand Down Expand Up @@ -165,8 +163,8 @@ pub(crate) async fn gen_evm_proof_rotation_circuit_with_witness_handler(

let (snark, verifier_filename) = match spec {
Spec::Minimal => {
let mut update = ssz_rs::deserialize(&light_client_update).unwrap();
let witness = rotation_args_from_update(&mut update).await.unwrap();
let mut update = ssz_rs::deserialize(&light_client_update)?;
let witness = rotation_args_from_update(&mut update).await?;
let snark = gen_committee_update_snark::<eth_types::Minimal>(
PathBuf::from("./lightclient-circuits/config/committee_update_minimal.json"),
PathBuf::from("./build/committee_update_minimal.pkey"),
Expand All @@ -176,8 +174,8 @@ pub(crate) async fn gen_evm_proof_rotation_circuit_with_witness_handler(
(snark, "committee_update_verifier_minimal")
}
Spec::Testnet => {
let mut update = ssz_rs::deserialize(&light_client_update).unwrap();
let witness = rotation_args_from_update(&mut update).await.unwrap();
let mut update = ssz_rs::deserialize(&light_client_update)?;
let witness = rotation_args_from_update(&mut update).await?;
let snark = gen_committee_update_snark::<eth_types::Testnet>(
PathBuf::from("./lightclient-circuits/config/committee_update_testnet.json"),
PathBuf::from("./build/committee_update_testnet.pkey"),
Expand All @@ -187,8 +185,8 @@ pub(crate) async fn gen_evm_proof_rotation_circuit_with_witness_handler(
(snark, "committee_update_verifier_testnet")
}
Spec::Mainnet => {
let mut update = ssz_rs::deserialize(&light_client_update).unwrap();
let witness = rotation_args_from_update(&mut update).await.unwrap();
let mut update = ssz_rs::deserialize(&light_client_update)?;
let witness = rotation_args_from_update(&mut update).await?;
let snark = gen_committee_update_snark::<eth_types::Mainnet>(
PathBuf::from("./lightclient-circuits/config/committee_update_mainnet.json"),
PathBuf::from("./build/committee_update_mainnet.pkey"),
Expand Down Expand Up @@ -239,36 +237,36 @@ pub(crate) async fn gen_evm_proof_step_circuit_handler(
let (proof, instances) = match spec {
Spec::Minimal => {
let client = beacon_api_client::minimal::Client::new(Url::parse(&beacon_api)?);
let witness = fetch_step_args(&client).await.unwrap();
let witness = fetch_step_args(&client).await?;

gen_evm_proof::<StepCircuit<eth_types::Minimal, Fr>>(
PathBuf::from("./build/sync_step_minimal.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_minimal.json"),
witness,
None::<PathBuf>,
)
)?
}
Spec::Testnet => {
let client = beacon_api_client::mainnet::Client::new(Url::parse(&beacon_api)?);
let witness = fetch_step_args(&client).await.unwrap();
let witness = fetch_step_args(&client).await?;

gen_evm_proof::<StepCircuit<eth_types::Testnet, Fr>>(
PathBuf::from("./build/sync_step_testnet.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_testnet.json"),
witness,
None::<PathBuf>,
)
)?
}
Spec::Mainnet => {
let client = beacon_api_client::mainnet::Client::new(Url::parse(&beacon_api)?);
let witness = fetch_step_args(&client).await.unwrap();
let witness = fetch_step_args(&client).await?;

gen_evm_proof::<StepCircuit<eth_types::Mainnet, Fr>>(
PathBuf::from("./build/sync_step_mainnet.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_mainnet.json"),
witness,
None::<PathBuf>,
)
)?
}
};

Expand All @@ -295,46 +293,40 @@ pub(crate) async fn gen_evm_proof_step_circuit_with_witness_handler(

let (proof, instances) = match spec {
Spec::Minimal => {
let update = ssz_rs::deserialize(&light_client_finality_update).unwrap();
let pubkeys = ssz_rs::deserialize(&pubkeys).unwrap();
let witness = step_args_from_finality_update(update, pubkeys, domain)
.await
.unwrap();
let update = ssz_rs::deserialize(&light_client_finality_update)?;
let pubkeys = ssz_rs::deserialize(&pubkeys)?;
let witness = step_args_from_finality_update(update, pubkeys, domain).await?;

gen_evm_proof::<StepCircuit<eth_types::Minimal, Fr>>(
PathBuf::from("./build/sync_step_minimal.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_minimal.json"),
witness,
None::<PathBuf>,
)
)?
}
Spec::Testnet => {
let update = ssz_rs::deserialize(&light_client_finality_update).unwrap();
let pubkeys = ssz_rs::deserialize(&pubkeys).unwrap();
let witness = step_args_from_finality_update(update, pubkeys, domain)
.await
.unwrap();
let update = ssz_rs::deserialize(&light_client_finality_update)?;
let pubkeys = ssz_rs::deserialize(&pubkeys)?;
let witness = step_args_from_finality_update(update, pubkeys, domain).await?;

gen_evm_proof::<StepCircuit<eth_types::Testnet, Fr>>(
PathBuf::from("./build/sync_step_testnet.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_testnet.json"),
witness,
None::<PathBuf>,
)
)?
}
Spec::Mainnet => {
let update = ssz_rs::deserialize(&light_client_finality_update).unwrap();
let pubkeys = ssz_rs::deserialize(&pubkeys).unwrap();
let witness = step_args_from_finality_update(update, pubkeys, domain)
.await
.unwrap();
let update = ssz_rs::deserialize(&light_client_finality_update)?;
let pubkeys = ssz_rs::deserialize(&pubkeys)?;
let witness = step_args_from_finality_update(update, pubkeys, domain).await?;

gen_evm_proof::<StepCircuit<eth_types::Mainnet, Fr>>(
PathBuf::from("./build/sync_step_mainnet.pkey"),
PathBuf::from("./lightclient-circuits/config/sync_step_mainnet.json"),
witness,
None::<PathBuf>,
)
)?
}
};

Expand Down Expand Up @@ -404,9 +396,7 @@ pub(crate) fn jsonrpc_server() -> JsonRpcServer<JsonRpcMapRouter> {
}

pub async fn run_rpc(port: usize) -> Result<(), eyre::Error> {
let tcp_listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{}", port))
.await
.unwrap();
let tcp_listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{}", port)).await?;
let rpc_server = Arc::new(jsonrpc_server());

let router = Router::new()
Expand Down

0 comments on commit 24d2fbb

Please sign in to comment.