From 13cf632593f56f6071b44c07a88e784dcd773d3f Mon Sep 17 00:00:00 2001 From: FiveMovesAhead Date: Thu, 12 Sep 2024 18:18:20 +0800 Subject: [PATCH] WIP --- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 174 bytes .../master/__pycache__/config.cpython-310.pyc | Bin 0 -> 868 bytes .../master/__pycache__/data.cpython-310.pyc | Bin 0 -> 11861 bytes .../__pycache__/data_fetcher.cpython-310.pyc | Bin 0 -> 3148 bytes .../src/benchmarker/find_proof_to_submit.rs | 4 +-- tig-benchmarker/src/benchmarker/mod.rs | 6 ++-- .../src/benchmarker/run_benchmark.rs | 4 +-- .../src/benchmarker/submit_proof.rs | 6 ++-- tig-benchmarker/src/main.rs | 8 ++--- tig-protocol/src/add_block.rs | 28 ++++++++++++++++++ tig-utils/src/merkle_tree.rs | 8 ++--- tig-utils/tests/merkle_tree.rs | 6 ++-- tig-worker/src/worker.rs | 7 +++-- 13 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 tig-benchmarker/master/__pycache__/__init__.cpython-310.pyc create mode 100644 tig-benchmarker/master/__pycache__/config.cpython-310.pyc create mode 100644 tig-benchmarker/master/__pycache__/data.cpython-310.pyc create mode 100644 tig-benchmarker/master/__pycache__/data_fetcher.cpython-310.pyc diff --git a/tig-benchmarker/master/__pycache__/__init__.cpython-310.pyc b/tig-benchmarker/master/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2189a67203e16057dcac17b59cb7bb9a9019a2b GIT binary patch literal 174 zcmd1j<>g`kfg4wi6E7}7yni_8_))XdZ@PN`#c$Zjhnav|_N?SD9qQ z3MJ3pwG&PZ4-B_~jd{>+)(-2PsIk2s)Y^?`uYR~55XpjWV<&pu>g>T@yVl)Zp8~b! zPOH=C?!MfQp0}FY^-eG%T9BiJn?T554c^)~;*!QG(I;F34`ZQFCHuf)I9?OKRuK}n z)*yX^)prk69YBEncv8jg_Uv}VGCgJNR!@nrkx9siUxL2O(&$(n8CN{zVi4P^=X^tB zse~NBx@BBYhVXnx>zPFqJl>;ep}Wgk#`F!?sq(K+1&q08%BD=0i1Y tW_sQ*4d*{f70VL-I3I)QLc$1p=N=S%4;KpFRmZ>apMrmh{7=8|?Jv*&`%wS@ literal 0 HcmV?d00001 diff --git a/tig-benchmarker/master/__pycache__/data.cpython-310.pyc b/tig-benchmarker/master/__pycache__/data.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..584f98f4b0457dd7d155cb2e15a65ba04475cae5 GIT binary patch literal 11861 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 Tk9hC^xB|_iHmkB5 Result)>> { +pub async fn execute() -> Result)>> { let QueryData { proofs, benchmarks, diff --git a/tig-benchmarker/src/benchmarker/mod.rs b/tig-benchmarker/src/benchmarker/mod.rs index a3502b07..aba091ce 100644 --- a/tig-benchmarker/src/benchmarker/mod.rs +++ b/tig-benchmarker/src/benchmarker/mod.rs @@ -279,7 +279,7 @@ async fn run_once(num_workers: u32, ms_per_benchmark: u32) -> Result<()> { }) .collect(), }; - let solutions_data = Arc::new(Mutex::new(Vec::::new())); + let solutions_data = Arc::new(Mutex::new(Vec::::new())); let solutions_count = Arc::new(Mutex::new(0u32)); update_status("Starting benchmark").await; run_benchmark::execute( @@ -396,7 +396,7 @@ async fn run_once(num_workers: u32, ms_per_benchmark: u32) -> Result<()> { Ok(()) } -pub async fn drain_solutions(benchmark_id: &String, solutions_data: &mut Vec) -> u32 { +pub async fn drain_solutions(benchmark_id: &String, solutions_data: &mut Vec) -> u32 { let mut state = (*state()).lock().await; let QueryData { benchmarks, proofs, .. @@ -407,7 +407,7 @@ pub async fn drain_solutions(benchmark_id: &String, solutions_data: &mut Vec>>, job: &Job, wasm: &Vec, - solutions_data: Arc>>, + solutions_data: Arc>>, solutions_count: Arc>, ) { for nonce_iter in nonce_iters { diff --git a/tig-benchmarker/src/benchmarker/submit_proof.rs b/tig-benchmarker/src/benchmarker/submit_proof.rs index ad3fb203..bd54f000 100644 --- a/tig-benchmarker/src/benchmarker/submit_proof.rs +++ b/tig-benchmarker/src/benchmarker/submit_proof.rs @@ -1,14 +1,14 @@ use super::{api, Result}; use crate::future_utils::sleep; use tig_api::SubmitProofReq; -use tig_worker::SolutionData; +use tig_worker::OutputData; const MAX_RETRIES: u32 = 3; -pub async fn execute(benchmark_id: String, solutions_data: Vec) -> Result<()> { +pub async fn execute(benchmark_id: String, solutions_data: Vec) -> Result<()> { let req = SubmitProofReq { benchmark_id, - solutions_data, + merkle_data: solutions_data, }; for attempt in 1..=MAX_RETRIES { println!("Submission attempt {} of {}", attempt, MAX_RETRIES); diff --git a/tig-benchmarker/src/main.rs b/tig-benchmarker/src/main.rs index 0402b242..b5066bd5 100644 --- a/tig-benchmarker/src/main.rs +++ b/tig-benchmarker/src/main.rs @@ -109,7 +109,7 @@ async fn slave_node(master: &String, port: u16, num_workers: u32) { let master_url = format!("http://{}:{}", master, port); let mut job: Option = None; let mut nonce_iters: Vec>> = Vec::new(); - let mut solutions_data = Arc::new(Mutex::new(Vec::::new())); + let mut solutions_data = Arc::new(Mutex::new(Vec::::new())); let mut solutions_count = Arc::new(Mutex::new(0u32)); let mut num_solutions = 0; loop { @@ -129,7 +129,7 @@ async fn slave_node(master: &String, port: u16, num_workers: u32) { (*(*nonce_iter).lock().await).empty(); } nonce_iters.clear(); - solutions_data = Arc::new(Mutex::new(Vec::::new())); + solutions_data = Arc::new(Mutex::new(Vec::::new())); solutions_count = Arc::new(Mutex::new(0u32)); num_solutions = 0; if next_job @@ -195,7 +195,7 @@ async fn slave_node(master: &String, port: u16, num_workers: u32) { let n = solutions_data.len(); if n > 0 { num_solutions += n as u32; - let data: Vec = solutions_data.drain(..).collect(); + let data: Vec = solutions_data.drain(..).collect(); println!("Posting {} solutions", n); if let Err(e) = post::( &format!("{}/solutions_data/{}", master_url, job.benchmark_id), @@ -264,7 +264,7 @@ async fn master_node( .and(warp::post()) .and(warp::body::json()) .and_then( - |benchmark_id: String, mut solutions_data: Vec| async move { + |benchmark_id: String, mut solutions_data: Vec| async move { benchmarker::drain_solutions(&benchmark_id, &mut solutions_data).await; Ok::<_, warp::Rejection>(warp::reply::with_status( "SolutionsData received", diff --git a/tig-protocol/src/add_block.rs b/tig-protocol/src/add_block.rs index 6ebe2a22..76f455f4 100644 --- a/tig-protocol/src/add_block.rs +++ b/tig-protocol/src/add_block.rs @@ -10,6 +10,7 @@ pub(crate) async fn execute(ctx: &T) -> String { let (block, mut cache) = create_block(ctx).await; confirm_mempool_challenges(&block, &mut cache).await; confirm_mempool_algorithms(&block, &mut cache).await; + confirm_mempool_precommits(&block, &mut cache).await; confirm_mempool_benchmarks(&block, &mut cache).await; confirm_mempool_proofs(ctx, &block, &mut cache).await; confirm_mempool_frauds(&block, &mut cache).await; @@ -19,6 +20,7 @@ pub(crate) async fn execute(ctx: &T) -> String { update_qualifiers(&block, &mut cache).await; update_frontiers(&block, &mut cache).await; update_solution_signature_thresholds(&block, &mut cache).await; + update_base_fees(&block, &mut cache).await; update_influence(&block, &mut cache).await; update_adoption(&block, &mut cache).await; update_innovator_rewards(&block, &mut cache).await; @@ -33,6 +35,7 @@ struct AddBlockCache { pub mempool_challenges: Vec, pub mempool_algorithms: Vec, pub mempool_benchmarks: Vec, + pub mempool_precommits: Vec, pub mempool_proofs: Vec, pub mempool_frauds: Vec, pub mempool_wasms: Vec, @@ -93,6 +96,17 @@ async fn setup_cache( }); mempool_benchmarks.push(benchmark); } + let mut mempool_precommits = Vec::new(); + for mut precommit in ctx + .get_precommits(PrecommitsFilter::Mempool { from_block_started }) + .await + .unwrap_or_else(|e| panic!("get_precommits error: {:?}", e)) + { + precommit.state = Some(PrecommitState { + block_confirmed: None, + }); + mempool_precommits.push(precommit); + } let mut mempool_proofs = Vec::new(); for mut proof in ctx .get_proofs(ProofsFilter::Mempool { from_block_started }, false) @@ -148,6 +162,7 @@ async fn setup_cache( cutoff_frontier: None, scaling_factor: None, qualifier_difficulties: None, + base_fee: None, }); active_challenges.insert(challenge.id.clone(), challenge); } @@ -292,6 +307,7 @@ async fn setup_cache( mempool_challenges, mempool_algorithms, mempool_benchmarks, + mempool_precommits, mempool_proofs, mempool_frauds, mempool_wasms, @@ -395,10 +411,17 @@ async fn confirm_mempool_algorithms(block: &Block, cache: &mut AddBlockCache) { } } +#[time] +async fn confirm_mempool_precommits(block: &Block, cache: &mut AddBlockCache) { + let config = block.config(); + // FIXME +} + #[time] async fn confirm_mempool_benchmarks(block: &Block, cache: &mut AddBlockCache) { let config = block.config(); + // FIXME sample solutions and non-solutions for benchmark in cache.mempool_benchmarks.iter_mut() { let seed = u32_from_str(format!("{:?}|{:?}", block.id, benchmark.id).as_str()); let mut rng = StdRng::seed_from_u64(seed as u64); @@ -614,6 +637,11 @@ async fn update_solution_signature_thresholds(block: &Block, cache: &mut AddBloc } } +#[time] +async fn update_base_fees(block: &Block, cache: &mut AddBlockCache) { + // FIXME +} + fn find_smallest_range_dimension(points: &Frontier) -> usize { (0..2) .min_by_key(|&d| { diff --git a/tig-utils/src/merkle_tree.rs b/tig-utils/src/merkle_tree.rs index b430145b..d39b5736 100644 --- a/tig-utils/src/merkle_tree.rs +++ b/tig-utils/src/merkle_tree.rs @@ -153,14 +153,14 @@ impl MerkleTree { hashes[0].clone() } - pub fn calc_merkle_proof(&self, branch_idx: usize) -> Result { + pub fn calc_merkle_branch(&self, branch_idx: usize) -> Result { if branch_idx >= self.n { return Err(anyhow!("Invalid branch index")); } let mut hashes = self.hashed_leafs.clone(); let null_hash = MerkleHash::null(); - let mut proof = Vec::new(); + let mut branch = Vec::new(); let mut idx = branch_idx; while hashes.len() > 1 { @@ -170,7 +170,7 @@ impl MerkleTree { let right = chunk.get(1).unwrap_or(&null_hash); if idx >> 1 == i { - proof.push(if idx % 2 == 0 { right } else { left }.clone()); + branch.push(if idx % 2 == 0 { right } else { left }.clone()); } let mut combined = [0u8; 32]; @@ -182,7 +182,7 @@ impl MerkleTree { idx /= 2; } - Ok(MerkleBranch(proof)) + Ok(MerkleBranch(branch)) } } diff --git a/tig-utils/tests/merkle_tree.rs b/tig-utils/tests/merkle_tree.rs index 7a3bb5d8..b8e25177 100644 --- a/tig-utils/tests/merkle_tree.rs +++ b/tig-utils/tests/merkle_tree.rs @@ -17,7 +17,7 @@ mod tests { let tree = MerkleTree::new(hashes.clone(), 16).unwrap(); let root = tree.calc_merkle_root(); - let proof = tree.calc_merkle_proof(7).unwrap(); + let proof = tree.calc_merkle_branch(7).unwrap(); let leaf_hash = &hashes[7]; let calculated_root = proof.calc_merkle_root(leaf_hash, 7); @@ -37,7 +37,7 @@ mod tests { let hashes = create_test_hashes(); let tree = MerkleTree::new(hashes, 16).unwrap(); - let result = tree.calc_merkle_proof(16); + let result = tree.calc_merkle_branch(16); assert!(result.is_err()); } @@ -46,7 +46,7 @@ mod tests { let hashes = create_test_hashes(); let tree = MerkleTree::new(hashes.clone(), 16).unwrap(); - let proof = tree.calc_merkle_proof(7).unwrap(); + let proof = tree.calc_merkle_branch(7).unwrap(); let tree_json = serde_json::to_string(&tree).unwrap(); let deserialized_tree: MerkleTree = serde_json::from_str(&tree_json).unwrap(); diff --git a/tig-worker/src/worker.rs b/tig-worker/src/worker.rs index db4805f2..df74aa94 100644 --- a/tig-worker/src/worker.rs +++ b/tig-worker/src/worker.rs @@ -1,7 +1,7 @@ use anyhow::{anyhow, Result}; use bincode; use tig_challenges::*; -pub use tig_structs::core::{BenchmarkSettings, Solution, SolutionData}; +pub use tig_structs::core::{BenchmarkSettings, OutputData, Solution}; use tig_utils::decompress_obj; use wasmi::{Config, Engine, Linker, Module, Store, StoreLimitsBuilder}; @@ -11,7 +11,7 @@ pub fn compute_solution( wasm: &[u8], max_memory: u64, max_fuel: u64, -) -> Result> { +) -> Result> { let seeds = settings.calc_seeds(nonce); let serialized_challenge = match settings.challenge_id.as_str() { "c001" => { @@ -86,6 +86,7 @@ pub fn compute_solution( .map_err(|e| anyhow!("Failed to call function: {:?}", e))?; // Get runtime signature + // FIXME read runtime signature on execution error let runtime_signature_u64 = store.get_runtime_signature(); let runtime_signature = (runtime_signature_u64 as u32) ^ ((runtime_signature_u64 >> 32) as u32); let fuel_consumed = max_fuel - store.get_fuel().unwrap(); @@ -103,7 +104,7 @@ pub fn compute_solution( &mut serialized_solution, ) .expect("Failed to read solution from memory"); - let mut solution_data = SolutionData { + let mut solution_data = OutputData { nonce, runtime_signature, fuel_consumed,