This commit is contained in:
Jaremy Creechley 2023-12-11 16:20:41 -07:00
parent 5f07bff2df
commit 7bea9e83a0
No known key found for this signature in database
GPG Key ID: 4E66FB67B21D3300

View File

@ -50,45 +50,45 @@ impl StorageProofs {
} }
} }
pub fn prove( // pub fn prove(
&mut self, // &mut self,
chunks: &[U256], // chunks: &[U256],
siblings: &[U256], // siblings: &[U256],
hashes: &[U256], // hashes: &[U256],
path: &[i32], // path: &[i32],
root: U256, // root: U256,
salt: U256, // salt: U256,
proof_bytes: &mut Vec<u8>, // proof_bytes: &mut Vec<u8>,
public_inputs_bytes: &mut Vec<u8>, // public_inputs_bytes: &mut Vec<u8>,
) -> Result<(), String> { // ) -> Result<(), String> {
let mut builder = self.builder.clone(); // let mut builder = self.builder.clone();
// vec of vecs is flattened, since wasm expects a contiguous array in memory // // vec of vecs is flattened, since wasm expects a contiguous array in memory
chunks.iter().for_each(|c| builder.push_input("chunks", *c)); // chunks.iter().for_each(|c| builder.push_input("chunks", *c));
siblings // siblings
.iter() // .iter()
.for_each(|c| builder.push_input("siblings", *c)); // .for_each(|c| builder.push_input("siblings", *c));
hashes.iter().for_each(|c| builder.push_input("hashes", *c)); // hashes.iter().for_each(|c| builder.push_input("hashes", *c));
path.iter().for_each(|c| builder.push_input("path", *c)); // path.iter().for_each(|c| builder.push_input("path", *c));
builder.push_input("root", root); // builder.push_input("root", root);
builder.push_input("salt", salt); // builder.push_input("salt", salt);
let circuit = builder.build().map_err(|e| e.to_string())?; // let circuit = builder.build().map_err(|e| e.to_string())?;
let inputs = circuit // let inputs = circuit
.get_public_inputs() // .get_public_inputs()
.ok_or("Unable to get public inputs!")?; // .ok_or("Unable to get public inputs!")?;
let proof = prove(circuit, &self.params, &mut self.rng).map_err(|e| e.to_string())?; // let proof = prove(circuit, &self.params, &mut self.rng).map_err(|e| e.to_string())?;
proof.serialize(proof_bytes).map_err(|e| e.to_string())?; // proof.serialize(proof_bytes).map_err(|e| e.to_string())?;
inputs // inputs
.serialize(public_inputs_bytes) // .serialize(public_inputs_bytes)
.map_err(|e| e.to_string())?; // .map_err(|e| e.to_string())?;
Ok(()) // Ok(())
} // }
pub fn prove_run( pub fn prove_run(
&mut self, &mut self,
@ -188,7 +188,7 @@ fn parse_mpack_args(builder: &mut CircomBuilder<Params256Ty>, mut inputs: &[u8])
// ie, "path" => "/some/file/path" // ie, "path" => "/some/file/path"
rmpv::Value::String(s) => { rmpv::Value::String(s) => {
let s = s.clone().into_bytes(); let s = s.clone().into_bytes();
s.iter().for_each(|c| builder.push_input(name, *c)); s.iter().for_each(|c| builder.push_input(name, (*c) as i32));
} }
// directly add a (name,u256) arg pair // directly add a (name,u256) arg pair
rmpv::Value::Ext(_, _) => { rmpv::Value::Ext(_, _) => {