mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-04-23 03:00:50 -04:00
change l2geth config to option
This commit is contained in:
@@ -46,7 +46,7 @@ pub struct Config {
|
||||
pub db_path: String,
|
||||
pub core: ProverCoreConfig,
|
||||
pub coordinator: CoordinatorConfig,
|
||||
pub l2geth: L2GethConfig,
|
||||
pub l2geth: Option<L2GethConfig>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub struct Prover<'a> {
|
||||
key_signer: Rc<KeySigner>,
|
||||
circuits_handler_provider: CircuitsHandlerProvider,
|
||||
coordinator_client: RefCell<CoordinatorClient>,
|
||||
geth_client: RefCell<GethClient>,
|
||||
geth_client: Option<RefCell<GethClient>>,
|
||||
}
|
||||
|
||||
// a u64 is positive when it's 63th index bit not set
|
||||
@@ -53,14 +53,18 @@ impl<'a> Prover<'a> {
|
||||
let key_signer = Rc::new(KeySigner::new(&keystore_path, &keystore_password)?);
|
||||
let coordinator_client = CoordinatorClient::new(coordinator_config, Rc::clone(&key_signer))?;
|
||||
|
||||
let prover = Prover {
|
||||
let mut prover = Prover {
|
||||
config,
|
||||
key_signer: Rc::clone(&key_signer),
|
||||
circuits_handler_provider: CircuitsHandlerProvider::new(proof_type, params_path, assets_path)?,
|
||||
coordinator_client: RefCell::new(coordinator_client),
|
||||
geth_client: RefCell::new(GethClient::new("test", &config.l2geth.endpoint)?),
|
||||
geth_client: None,
|
||||
};
|
||||
|
||||
if config.core.proof_type == ProofType::ProofTypeChunk {
|
||||
prover.geth_client = Some(RefCell::new(GethClient::new("test", &config.l2geth.as_ref().unwrap().endpoint)?));
|
||||
}
|
||||
|
||||
Ok(prover)
|
||||
}
|
||||
|
||||
@@ -83,7 +87,7 @@ impl<'a> Prover<'a> {
|
||||
};
|
||||
|
||||
if self.get_proof_type() == ProofType::ProofTypeChunk {
|
||||
let latest_block_number = self.get_configured_block_number_value()?;
|
||||
let latest_block_number = self.get_latest_block_number_value()?;
|
||||
if let Some(v) = latest_block_number {
|
||||
if v.as_u64() == 0 {
|
||||
bail!("omit to prove task of the genesis block")
|
||||
@@ -179,30 +183,35 @@ impl<'a> Prover<'a> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn get_configured_block_number_value(&self) -> Result<Option<U64>> {
|
||||
self.get_block_number_value(&self.config.l2geth.confirmations)
|
||||
fn get_latest_block_number_value(&self) -> Result<Option<U64>> {
|
||||
let number = self.geth_client.as_ref().unwrap().borrow_mut().block_number()?;
|
||||
Ok(number.as_number())
|
||||
}
|
||||
|
||||
fn get_block_number_value(&self, block_number: &BlockNumber) -> Result<Option<U64>> {
|
||||
match block_number {
|
||||
BlockNumber::Safe | BlockNumber::Finalized => {
|
||||
let header = self.geth_client.borrow_mut().header_by_number(block_number)?;
|
||||
Ok(header.get_number())
|
||||
},
|
||||
BlockNumber::Latest => {
|
||||
let number = self.geth_client.borrow_mut().block_number()?;
|
||||
Ok(number.as_number())
|
||||
},
|
||||
BlockNumber::Number(n) if is_positive(n) => {
|
||||
let number = self.geth_client.borrow_mut().block_number()?;
|
||||
let diff = number.as_number()
|
||||
.filter(|m| m.as_u64() >= n.as_u64())
|
||||
.map(|m| U64::from(m.as_u64() - n.as_u64()));
|
||||
Ok(diff)
|
||||
},
|
||||
_ => bail!("unknown confirmation type"),
|
||||
}
|
||||
}
|
||||
// fn get_configured_block_number_value(&self) -> Result<Option<U64>> {
|
||||
// self.get_block_number_value(&self.config.l2geth.as_ref().unwrap().confirmations)
|
||||
// }
|
||||
|
||||
// fn get_block_number_value(&self, block_number: &BlockNumber) -> Result<Option<U64>> {
|
||||
// match block_number {
|
||||
// BlockNumber::Safe | BlockNumber::Finalized => {
|
||||
// let header = self.geth_client.as_ref().unwrap().borrow_mut().header_by_number(block_number)?;
|
||||
// Ok(header.get_number())
|
||||
// },
|
||||
// BlockNumber::Latest => {
|
||||
// let number = self.geth_client.as_ref().unwrap().borrow_mut().block_number()?;
|
||||
// Ok(number.as_number())
|
||||
// },
|
||||
// BlockNumber::Number(n) if is_positive(n) => {
|
||||
// let number = self.geth_client.as_ref().unwrap().borrow_mut().block_number()?;
|
||||
// let diff = number.as_number()
|
||||
// .filter(|m| m.as_u64() >= n.as_u64())
|
||||
// .map(|m| U64::from(m.as_u64() - n.as_u64()));
|
||||
// Ok(diff)
|
||||
// },
|
||||
// _ => bail!("unknown confirmation type"),
|
||||
// }
|
||||
// }
|
||||
|
||||
fn get_output_dir(&self) -> Option<&str> {
|
||||
OUTPUT_DIR.as_deref()
|
||||
@@ -231,7 +240,7 @@ impl<'a> Prover<'a> {
|
||||
|
||||
let mut block_traces = Vec::new();
|
||||
for (_, hash) in block_hashes.into_iter().enumerate() {
|
||||
let trace = self.geth_client.borrow_mut().get_block_trace_by_hash(hash)?;
|
||||
let trace = self.geth_client.as_ref().unwrap().borrow_mut().get_block_trace_by_hash(hash)?;
|
||||
block_traces.push(trace.block_trace);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
use anyhow::{Ok, Result};
|
||||
use anyhow::{bail, Ok, Result};
|
||||
use crate::types::ProofType;
|
||||
use super::CircuitsHandler;
|
||||
use super::types::{ChunkProof, BatchProof, BlockTrace, ChunkHash};
|
||||
@@ -27,8 +27,7 @@ impl BaseCircuitsHandler {
|
||||
batch_prover: Some(RefCell::new(BatchProver::from_dirs(params_dir, assets_dir))),
|
||||
..Default::default()
|
||||
}),
|
||||
// TODO: add custom error system and change unreachable to error
|
||||
_ => unreachable!()
|
||||
_ => bail!("proof type invalid")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,8 +46,7 @@ impl CircuitsHandler for BaseCircuitsHandler {
|
||||
if let Some(prover) = self.chunk_prover.as_ref() {
|
||||
return prover.borrow_mut().gen_chunk_proof(chunk_trace, name, inner_id, output_dir)
|
||||
}
|
||||
// TODO: add custom error system and change unreachable to error
|
||||
unreachable!()
|
||||
unreachable!("please check errors in proof_type logic")
|
||||
}
|
||||
|
||||
// api of aggregator::Prover
|
||||
@@ -63,15 +61,13 @@ impl CircuitsHandler for BaseCircuitsHandler {
|
||||
if let Some(prover) = self.batch_prover.as_ref() {
|
||||
return prover.borrow_mut().gen_agg_evm_proof(chunk_hashes_proofs, name, output_dir)
|
||||
}
|
||||
// TODO: add custom error system and change unreachable to error
|
||||
unreachable!()
|
||||
unreachable!("please check errors in proof_type logic")
|
||||
}
|
||||
|
||||
fn aggregator_check_chunk_proofs(&self, chunk_proofs: &[ChunkProof]) -> bool {
|
||||
if let Some(prover) = self.batch_prover.as_ref() {
|
||||
return prover.borrow_mut().check_chunk_proofs(chunk_proofs)
|
||||
}
|
||||
// TODO: add custom error system and change unreachable to error
|
||||
unreachable!()
|
||||
unreachable!("please check errors in proof_type logic")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user