aboutsummaryrefslogtreecommitdiff
path: root/zkvms/zkwasm/host
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-02-06 14:59:57 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-02-06 14:59:57 +0200
commit523000d75ac6c194ccaa3aec0d8b29ef07d3f504 (patch)
tree22ffc9ba300c4c7a0548ebde135fbba5d390abdf /zkvms/zkwasm/host
parentf56218406dbe5e4918d560778b24b366cd3bda9f (diff)
downloadzkVMs-benchmarks-523000d75ac6c194ccaa3aec0d8b29ef07d3f504.tar
zkVMs-benchmarks-523000d75ac6c194ccaa3aec0d8b29ef07d3f504.tar.gz
zkVMs-benchmarks-523000d75ac6c194ccaa3aec0d8b29ef07d3f504.zip
feat(zkvms/zkwasm): Proper handling of input strings and hashmaps
Diffstat (limited to 'zkvms/zkwasm/host')
-rw-r--r--zkvms/zkwasm/host/Cargo.lock43
-rw-r--r--zkvms/zkwasm/host/Cargo.toml1
-rw-r--r--zkvms/zkwasm/host/src/main.rs46
3 files changed, 46 insertions, 44 deletions
diff --git a/zkvms/zkwasm/host/Cargo.lock b/zkvms/zkwasm/host/Cargo.lock
index 26502b5..6c2d77a 100644
--- a/zkvms/zkwasm/host/Cargo.lock
+++ b/zkvms/zkwasm/host/Cargo.lock
@@ -111,9 +111,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
-version = "4.5.27"
+version = "4.5.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796"
+checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff"
dependencies = [
"clap_builder",
"clap_derive",
@@ -133,14 +133,14 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.24"
+version = "4.5.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c"
+checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed"
dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn 2.0.98",
]
[[package]]
@@ -265,7 +265,6 @@ checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
name = "host-zkwasm"
version = "0.1.0"
dependencies = [
- "regex",
"zkvms_host_io",
]
@@ -282,6 +281,9 @@ dependencies = [
[[package]]
name = "input_macros"
version = "0.1.0"
+dependencies = [
+ "toml",
+]
[[package]]
name = "is-terminal"
@@ -457,9 +459,9 @@ dependencies = [
[[package]]
name = "phf_shared"
-version = "0.10.0"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
dependencies = [
"siphasher",
]
@@ -572,7 +574,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn 2.0.98",
]
[[package]]
@@ -586,9 +588,9 @@ dependencies = [
[[package]]
name = "siphasher"
-version = "0.3.11"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
[[package]]
name = "smallvec"
@@ -598,12 +600,11 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "string_cache"
-version = "0.8.7"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe"
dependencies = [
"new_debug_unreachable",
- "once_cell",
"parking_lot",
"phf_shared",
"precomputed-hash",
@@ -628,9 +629,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.96"
+version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
@@ -665,7 +666,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.96",
+ "syn 2.0.98",
]
[[package]]
@@ -679,9 +680,9 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.19"
+version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
+checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
dependencies = [
"serde",
"serde_spanned",
@@ -832,9 +833,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e49d2d35d3fad69b39b94139037ecfb4f359f08958b9c11e7315ce770462419"
+checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f"
dependencies = [
"memchr",
]
diff --git a/zkvms/zkwasm/host/Cargo.toml b/zkvms/zkwasm/host/Cargo.toml
index 581038b..d1a68e7 100644
--- a/zkvms/zkwasm/host/Cargo.toml
+++ b/zkvms/zkwasm/host/Cargo.toml
@@ -5,4 +5,3 @@ edition = "2021"
[dependencies]
zkvms_host_io = { path = "../../../zkvms_host_io" }
-regex = "1.11.1"
diff --git a/zkvms/zkwasm/host/src/main.rs b/zkvms/zkwasm/host/src/main.rs
index 179d388..9263819 100644
--- a/zkvms/zkwasm/host/src/main.rs
+++ b/zkvms/zkwasm/host/src/main.rs
@@ -1,7 +1,6 @@
use zkvms_host_io::{PublicInput, PrivateInput, foreach_public_input_field, foreach_private_input_field, read_args, RunType::{Execute, Prove, Verify}, RunWith};
use std::io::{self, Write};
use std::process::{Command, Stdio};
-use regex::Regex;
static PUBLIC_INPUT_PATH: &str = "public_input.bin";
static PRIVATE_INPUT_PATH: &str = "private_input.bin";
@@ -51,9 +50,6 @@ fn get_with_sizes(flat: &str) -> String {
macro_rules! build_input {
($input:expr , $path:ident , $type:ident) => {
|run_info: &RunWith| {
- let numreg: Regex = Regex::new("(?:^|[^A-Za-z])([0-9]+)").unwrap();
- let stringreg: Regex = Regex::new("\\\"[^\"]*\\\"").unwrap();
-
let mut ret: Vec<u64> = Vec::new();
$type!{
let flat = format!("{:?}", $input.yield)
@@ -62,29 +58,35 @@ macro_rules! build_input {
.replace('(', "[")
.replace(')', "]")
.replace('{', "[")
- .replace('{', "]");
+ .replace('}', "]");
let flat = get_with_sizes(&flat);
- let numbers = numreg
- .captures_iter(&flat)
- .map(|cap|
- cap.get(1)
- .unwrap()
- .as_str()
- .to_string()
- .parse::<u64>()
- .unwrap())
+ let values = flat
+ .replace('[', ",")
+ .replace(']', " ")
+ .replace(':', ",")
+ .split(',')
+ .map(|val| {
+ let val = val.trim();
+ if let Some(num) = val.parse::<u64>().ok() {
+ vec![num]
+ }
+ else {
+ let val = val.trim_matches('"');
+ let mut size = vec![val.len() as u64];
+ size.extend(val
+ .bytes()
+ .into_iter()
+ .map(|x| x as u64)
+ .collect::<Vec<u64>>());
+ size
+ }
+ })
+ .flatten()
.collect::<Vec<u64>>();
- ret.extend(numbers);
-
- // let strings: Vec<&str> = stringreg
- // .captures_iter(&flat)
- // .map(|cap| cap.get(0).unwrap().as_str())
- // .collect();
- //
- // panic!("{:#?}", strings);
+ ret.extend(values);
}
let bytes = ret
.iter()