fix js
This commit is contained in:
parent
a58f77ddfc
commit
29ecd96b1b
3 changed files with 34 additions and 9 deletions
23
zokrates_js/Cargo.lock
generated
23
zokrates_js/Cargo.lock
generated
|
@ -696,6 +696,12 @@ version = "0.22.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724"
|
||||
|
||||
[[package]]
|
||||
name = "half"
|
||||
version = "1.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.11.2"
|
||||
|
@ -1229,6 +1235,16 @@ dependencies = [
|
|||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_cbor"
|
||||
version = "0.11.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
|
||||
dependencies = [
|
||||
"half",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.114"
|
||||
|
@ -1569,10 +1585,9 @@ version = "0.1.0"
|
|||
|
||||
[[package]]
|
||||
name = "zokrates_core"
|
||||
version = "0.6.6"
|
||||
version = "0.6.7"
|
||||
dependencies = [
|
||||
"bellman_ce",
|
||||
"bincode",
|
||||
"cfg-if 0.1.10",
|
||||
"csv",
|
||||
"ff_ce 0.9.0",
|
||||
|
@ -1588,6 +1603,7 @@ dependencies = [
|
|||
"reduce",
|
||||
"regex",
|
||||
"serde",
|
||||
"serde_cbor",
|
||||
"serde_json",
|
||||
"typed-arena",
|
||||
"zokrates_common",
|
||||
|
@ -1632,12 +1648,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zokrates_js"
|
||||
version = "1.0.35"
|
||||
version = "1.0.36"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"js-sys",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"typed-arena",
|
||||
"wasm-bindgen",
|
||||
"zokrates_abi",
|
||||
"zokrates_common",
|
||||
|
|
|
@ -12,6 +12,7 @@ js-sys = "0.3.33"
|
|||
serde = { version = "^1.0.59", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
wasm-bindgen = { version = "0.2.46", features = ["serde-serialize"] }
|
||||
typed-arena = "1.4.1"
|
||||
zokrates_core = { path = "../zokrates_core", features = ["wasm", "bellman"], default-features = false }
|
||||
zokrates_common = { path = "../zokrates_common" }
|
||||
zokrates_field = { path = "../zokrates_field", default-features = false, features = ["bellman"] }
|
||||
|
|
|
@ -2,6 +2,7 @@ use serde::{Deserialize, Serialize};
|
|||
use serde_json::to_string_pretty;
|
||||
use std::io::Cursor;
|
||||
use std::path::PathBuf;
|
||||
use typed_arena::Arena;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use zokrates_abi::{parse_strict, Decode, Encode, Inputs};
|
||||
use zokrates_common::Resolver;
|
||||
|
@ -41,13 +42,15 @@ pub struct ComputationResult {
|
|||
fn deserialize_program(value: &[u8]) -> Result<ir::Prog<Bn128Field>, JsValue> {
|
||||
let prog = ir::ProgEnum::deserialize(value).map_err(|err| JsValue::from_str(&err))?;
|
||||
match prog {
|
||||
ir::ProgEnum::Bn128Program(p) => Ok(p),
|
||||
ir::ProgEnum::Bn128Program(p) => Ok(p.collect()),
|
||||
_ => Err(JsValue::from_str("Unsupported binary")),
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn serialize_program(program: &ir::Prog<Bn128Field>) -> Vec<u8> {
|
||||
fn serialize_program<I: IntoIterator<Item = ir::Statement<Bn128Field>>>(
|
||||
program: ir::ProgIterator<Bn128Field, I>,
|
||||
) -> Vec<u8> {
|
||||
let mut buffer = Cursor::new(vec![]);
|
||||
program.serialize(&mut buffer);
|
||||
buffer.into_inner()
|
||||
|
@ -106,11 +109,15 @@ pub fn compile(
|
|||
let config: CompileConfig = config.into_serde().unwrap_or_default();
|
||||
|
||||
let fmt_error = |e: &CompileError| format!("{}:{}", e.file().display(), e.value());
|
||||
let artifacts: CompilationArtifacts<Bn128Field> = core_compile(
|
||||
|
||||
let arena = Arena::new();
|
||||
|
||||
let artifacts: CompilationArtifacts<Bn128Field, _> = core_compile(
|
||||
source.as_string().unwrap(),
|
||||
PathBuf::from(location.as_string().unwrap()),
|
||||
Some(&resolver),
|
||||
&config,
|
||||
config,
|
||||
&arena,
|
||||
)
|
||||
.map_err(|ce| {
|
||||
JsValue::from_str(
|
||||
|
@ -123,8 +130,8 @@ pub fn compile(
|
|||
})?;
|
||||
|
||||
let result = CompilationResult {
|
||||
program: serialize_program(artifacts.prog()),
|
||||
abi: to_string_pretty(artifacts.abi()).unwrap(),
|
||||
program: serialize_program(artifacts.prog()),
|
||||
};
|
||||
|
||||
Ok(JsValue::from_serde(&result).unwrap())
|
||||
|
@ -146,7 +153,7 @@ pub fn compute_witness(program: &[u8], abi: JsValue, args: JsValue) -> Result<Js
|
|||
let interpreter = ir::Interpreter::default();
|
||||
|
||||
let witness = interpreter
|
||||
.execute(&program_flattened, &inputs.encode())
|
||||
.execute(program_flattened, &inputs.encode())
|
||||
.map_err(|err| JsValue::from_str(&format!("Execution failed: {}", err)))?;
|
||||
|
||||
let return_values: serde_json::Value =
|
||||
|
|
Loading…
Reference in a new issue