Skip to content

Commit

Permalink
chore: group args in loader
Browse files Browse the repository at this point in the history
  • Loading branch information
junyu0312 committed Aug 14, 2023
1 parent 7e6cf50 commit 572e736
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 37 deletions.
24 changes: 15 additions & 9 deletions crates/cli/src/exec.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use anyhow::Result;
use delphinus_zkwasm::circuits::TestCircuit;
use delphinus_zkwasm::loader::ExecutionArg;
use delphinus_zkwasm::loader::ZkWasmLoader;
use halo2_proofs::arithmetic::BaseExt;
use halo2_proofs::pairing::bn256::Bn256;
Expand Down Expand Up @@ -166,12 +167,12 @@ pub fn exec_dry_run_service(
.unwrap();

let r = loader
.dry_run(
.dry_run(ExecutionArg {
public_inputs,
private_inputs,
sequence.context_input,
sequence.context_output,
)
context_input: sequence.context_input,
context_output: sequence.context_output,
})
.unwrap();
println!("return value: {:?}", r);

Expand Down Expand Up @@ -214,7 +215,12 @@ pub fn exec_dry_run(
) -> Result<()> {
let loader = ZkWasmLoader::<Bn256>::new(zkwasm_k, wasm_binary, phantom_functions)?;

loader.dry_run(public_inputs, private_inputs, context_input, context_output)?;
loader.dry_run(ExecutionArg {
public_inputs,
private_inputs,
context_input,
context_output,
})?;

Ok(())
}
Expand Down Expand Up @@ -242,12 +248,12 @@ pub fn exec_create_proof(
&output_dir.join(format!("{}.{}.vkey.data", prefix, 0)),
);

let (circuit, instances) = loader.circuit_with_witness(
let (circuit, instances) = loader.circuit_with_witness(ExecutionArg {
public_inputs,
private_inputs,
context_input,
context_output,
)?;
})?;

{
store_instance(
Expand Down Expand Up @@ -340,12 +346,12 @@ pub fn exec_aggregate_create_proof(
Ok::<_, anyhow::Error>((vec![], vec![])),
|acc, (((public_inputs, private_inputs), context_input), context_output)| {
acc.and_then(|(mut circuits, mut instances)| {
let (circuit, instance) = loader.circuit_with_witness(
let (circuit, instance) = loader.circuit_with_witness(ExecutionArg {
public_inputs,
private_inputs,
context_input,
context_output,
)?;
})?;

circuits.push(circuit);
instances.push(vec![instance]);
Expand Down
47 changes: 19 additions & 28 deletions crates/zkwasm/src/loader/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@ mod err;

const ENTRY: &str = "zkmain";

pub struct ExecutionArg {
pub public_inputs: Vec<u64>,
pub private_inputs: Vec<u64>,
pub context_input: Option<PathBuf>,
pub context_output: Option<PathBuf>,
}

pub struct ZkWasmLoader<E: MultiMillerLoop> {
k: u32,
module: wasmi::Module,
Expand Down Expand Up @@ -142,18 +149,12 @@ impl<E: MultiMillerLoop> ZkWasmLoader<E> {
}

impl<E: MultiMillerLoop> ZkWasmLoader<E> {
pub fn dry_run(
&self,
public_inputs: Vec<u64>,
private_inputs: Vec<u64>,
context_input: Option<PathBuf>,
context_output: Option<PathBuf>,
) -> Result<Option<RuntimeValue>> {
pub fn dry_run(&self, arg: ExecutionArg) -> Result<Option<RuntimeValue>> {
let (mut env, _) = HostEnv::new_with_full_foreign_plugins(
public_inputs,
private_inputs,
context_input,
context_output,
arg.public_inputs,
arg.private_inputs,
arg.context_input,
arg.context_output,
);

let compiled_module = self.compile(&env)?;
Expand All @@ -165,18 +166,12 @@ impl<E: MultiMillerLoop> ZkWasmLoader<E> {
r
}

pub fn run(
&self,
public_inputs: Vec<u64>,
private_inputs: Vec<u64>,
context_input: Option<PathBuf>,
context_output: Option<PathBuf>,
) -> Result<ExecutionResult<RuntimeValue>> {
pub fn run(&self, arg: ExecutionArg) -> Result<ExecutionResult<RuntimeValue>> {
let (mut env, wasm_runtime_io) = HostEnv::new_with_full_foreign_plugins(
public_inputs,
private_inputs,
context_input,
context_output,
arg.public_inputs,
arg.private_inputs,
arg.context_input,
arg.context_output,
);

let compiled_module = self.compile(&env)?;
Expand All @@ -192,13 +187,9 @@ impl<E: MultiMillerLoop> ZkWasmLoader<E> {

pub fn circuit_with_witness(
&self,
public_inputs: Vec<u64>,
private_inputs: Vec<u64>,
context_input: Option<PathBuf>,
context_output: Option<PathBuf>,
arg: ExecutionArg,
) -> Result<(TestCircuit<E::Scalar>, Vec<E::Scalar>)> {
let execution_result =
self.run(public_inputs, private_inputs, context_input, context_output)?;
let execution_result = self.run(arg)?;

#[allow(unused_mut)]
let mut instance: Vec<E::Scalar> = execution_result
Expand Down

0 comments on commit 572e736

Please sign in to comment.