From 23ef3bc73c8eba5e5cd8983e4dfe7358c9d9bb8e Mon Sep 17 00:00:00 2001 From: Zhang Junyu Date: Thu, 1 Aug 2024 03:28:36 +0000 Subject: [PATCH] extend ExecutionArg --- crates/cli/src/main.rs | 7 +++++++ crates/host/src/lib.rs | 21 ------------------- crates/playground/examples/binary_search.rs | 5 +++++ crates/playground/examples/context.rs | 7 +++++++ crates/playground/examples/fibonacci.rs | 5 +++++ crates/playground/examples/phantom.rs | 5 +++++ crates/zkwasm/src/runtime/host/default_env.rs | 12 +++++++++-- 7 files changed, 39 insertions(+), 23 deletions(-) diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index dd5d24419..f7b3ffa87 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -1,8 +1,11 @@ #![deny(warnings)] #![allow(clippy::too_many_arguments, clippy::while_let_on_iterator)] +use std::cell::RefCell; +use std::collections::HashMap; use std::fs; use std::path::PathBuf; +use std::rc::Rc; use anyhow::Result; use app_builder::app; @@ -82,6 +85,8 @@ fn main() -> Result<()> { public_inputs, private_inputs, context_inputs, + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, arg.running_arg.context_output, arg.instruction_limit, @@ -152,6 +157,8 @@ fn main() -> Result<()> { public_inputs, private_inputs, context_inputs, + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, arg.running_arg.context_output, arg.mock_test, diff --git a/crates/host/src/lib.rs b/crates/host/src/lib.rs index 275ffaf78..03a1f7e39 100644 --- a/crates/host/src/lib.rs +++ b/crates/host/src/lib.rs @@ -15,22 +15,8 @@ use delphinus_zkwasm::runtime::host::HostEnvBuilder; use serde::Deserialize; use serde::Serialize; use std::collections::HashMap; -use zkwasm_host_circuits::host::db::TreeDB; use zkwasm_host_circuits::proof::OpType; -pub struct StandardExecutionArg { - /// Public inputs for `wasm_input(1)` - pub public_inputs: Vec, - /// Private inputs for `wasm_input(0)` - pub private_inputs: Vec, - /// Context inputs for `wasm_read_context()` - pub context_inputs: Vec, - /// indexed witness context - pub indexed_witness: Rc>>>, - /// db src - pub tree_db: Option>>, -} - #[derive(Serialize, Deserialize, Debug)] pub struct HostEnvConfig { pub ops: Vec, @@ -104,13 +90,6 @@ impl HostEnvBuilder for StandardHostEnvBuilder { let host_env_config = HostEnvConfig { ops: self.ops.clone(), }; - let arg = StandardExecutionArg { - public_inputs: arg.public_inputs, - private_inputs: arg.private_inputs, - context_inputs: arg.context_inputs, - indexed_witness: Rc::new(RefCell::new(HashMap::new())), - tree_db: None, - }; register_wasm_input_foreign(&mut env, arg.public_inputs, arg.private_inputs); register_require_foreign(&mut env); diff --git a/crates/playground/examples/binary_search.rs b/crates/playground/examples/binary_search.rs index b56bf8b81..c1cc6b607 100644 --- a/crates/playground/examples/binary_search.rs +++ b/crates/playground/examples/binary_search.rs @@ -8,6 +8,9 @@ use delphinus_zkwasm::runtime::host::default_env::ExecutionArg; use delphinus_zkwasm::runtime::host::HostEnvBuilder; use delphinus_zkwasm::runtime::monitor::table_monitor::TableMonitor; use pairing_bn256::bn256::Fr; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; const K: u32 = MIN_K; @@ -21,6 +24,8 @@ fn main() -> Result<()> { public_inputs: vec![0], private_inputs: vec![], context_inputs: vec![], + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, ); let mut monitor = TableMonitor::new(K, &vec![], TraceBackend::Memory, &env); diff --git a/crates/playground/examples/context.rs b/crates/playground/examples/context.rs index ecbf5a75b..93b2a0e6a 100644 --- a/crates/playground/examples/context.rs +++ b/crates/playground/examples/context.rs @@ -8,6 +8,9 @@ use delphinus_zkwasm::runtime::host::default_env::ExecutionArg; use delphinus_zkwasm::runtime::host::HostEnvBuilder; use delphinus_zkwasm::runtime::monitor::table_monitor::TableMonitor; use pairing_bn256::bn256::Fr; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; const K: u32 = MIN_K; @@ -22,6 +25,8 @@ fn main() -> Result<()> { public_inputs: vec![], private_inputs: vec![], context_inputs: vec![2, 1], + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, ); @@ -44,6 +49,8 @@ fn main() -> Result<()> { public_inputs: vec![], private_inputs: vec![], context_inputs: context_output.0, + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, ); diff --git a/crates/playground/examples/fibonacci.rs b/crates/playground/examples/fibonacci.rs index fd5f53140..40a144906 100644 --- a/crates/playground/examples/fibonacci.rs +++ b/crates/playground/examples/fibonacci.rs @@ -8,6 +8,9 @@ use delphinus_zkwasm::runtime::host::default_env::ExecutionArg; use delphinus_zkwasm::runtime::host::HostEnvBuilder; use delphinus_zkwasm::runtime::monitor::table_monitor::TableMonitor; use pairing_bn256::bn256::Fr; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; const K: u32 = MIN_K; @@ -21,6 +24,8 @@ fn main() -> Result<()> { public_inputs: vec![5], private_inputs: vec![], context_inputs: vec![], + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, ); let mut monitor = TableMonitor::new(K, &vec![], TraceBackend::Memory, &env); diff --git a/crates/playground/examples/phantom.rs b/crates/playground/examples/phantom.rs index 5821c47e2..cbb34dcfe 100644 --- a/crates/playground/examples/phantom.rs +++ b/crates/playground/examples/phantom.rs @@ -8,6 +8,9 @@ use delphinus_zkwasm::runtime::host::default_env::ExecutionArg; use delphinus_zkwasm::runtime::host::HostEnvBuilder; use delphinus_zkwasm::runtime::monitor::table_monitor::TableMonitor; use pairing_bn256::bn256::Fr; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; const K: u32 = MIN_K; @@ -21,6 +24,8 @@ fn main() -> Result<()> { public_inputs: vec![2], private_inputs: vec![], context_inputs: vec![], + indexed_witness: Rc::new(RefCell::new(HashMap::default())), + tree_db: None, }, ); let mut monitor = TableMonitor::new(K, &vec!["search".to_string()], TraceBackend::Memory, &env); diff --git a/crates/zkwasm/src/runtime/host/default_env.rs b/crates/zkwasm/src/runtime/host/default_env.rs index 7b4221ce0..8b50c9f56 100644 --- a/crates/zkwasm/src/runtime/host/default_env.rs +++ b/crates/zkwasm/src/runtime/host/default_env.rs @@ -1,3 +1,9 @@ +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; + +use zkwasm_host_circuits::host::db::TreeDB; + use crate::foreign::context::runtime::register_context_foreign; use crate::foreign::log_helper::register_log_foreign; use crate::foreign::require_helper::register_require_foreign; @@ -6,8 +12,6 @@ use crate::foreign::wasm_input_helper::runtime::register_wasm_input_foreign; use super::host_env::HostEnv; use super::HostEnvBuilder; -// TODO: remove me after refine tracer -#[derive(Clone)] pub struct ExecutionArg { /// Public inputs for `wasm_input(1)` pub public_inputs: Vec, @@ -15,6 +19,10 @@ pub struct ExecutionArg { pub private_inputs: Vec, /// Context inputs for `wasm_read_context()` pub context_inputs: Vec, + /// indexed witness context + pub indexed_witness: Rc>>>, + /// db src + pub tree_db: Option>>, } pub struct DefaultHostEnvBuilder;