aboutsummaryrefslogtreecommitdiff
path: root/zkvms
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-03-05 10:49:48 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-03-05 11:47:28 +0200
commit94115de9aa4b52669c7140c89f6d1f439f611ab8 (patch)
tree6369d95ede264bdb92b11cfa2348b52629f584e2 /zkvms
parent776f0b6d501f97ded999d7842f0bdd100571610f (diff)
downloadzkVMs-benchmarks-94115de9aa4b52669c7140c89f6d1f439f611ab8.tar
zkVMs-benchmarks-94115de9aa4b52669c7140c89f6d1f439f611ab8.tar.gz
zkVMs-benchmarks-94115de9aa4b52669c7140c89f6d1f439f611ab8.zip
feat(zkvms/zkwasm): Support non-numeric types as guest function output
Diffstat (limited to 'zkvms')
-rw-r--r--zkvms/zkwasm/guest/Cargo.lock53
-rw-r--r--zkvms/zkwasm/guest/Cargo.toml1
-rw-r--r--zkvms/zkwasm/wrapper_macro/src/lib.rs5
3 files changed, 34 insertions, 25 deletions
diff --git a/zkvms/zkwasm/guest/Cargo.lock b/zkvms/zkwasm/guest/Cargo.lock
index 7dac1bd..80ede28 100644
--- a/zkvms/zkwasm/guest/Cargo.lock
+++ b/zkvms/zkwasm/guest/Cargo.lock
@@ -34,9 +34,9 @@ checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
[[package]]
name = "equivalent"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "fixed-hash"
@@ -52,6 +52,7 @@ name = "guest"
version = "0.1.0"
dependencies = [
"rlp",
+ "tobytes",
"wasm-bindgen",
"wrapper_macro",
"zkwasm-rust-sdk",
@@ -81,9 +82,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.25"
+version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
+checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
[[package]]
name = "memchr"
@@ -93,9 +94,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "once_cell"
-version = "1.20.2"
+version = "1.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
+checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
[[package]]
name = "primitive-types"
@@ -109,18 +110,18 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.93"
+version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.38"
+version = "1.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801"
dependencies = [
"proc-macro2",
]
@@ -143,18 +144,18 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
[[package]]
name = "serde"
-version = "1.0.217"
+version = "1.0.218"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
+checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.217"
+version = "1.0.218"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
+checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
dependencies = [
"proc-macro2",
"quote",
@@ -178,9 +179,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "syn"
-version = "2.0.98"
+version = "2.0.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2"
dependencies = [
"proc-macro2",
"quote",
@@ -188,10 +189,14 @@ dependencies = [
]
[[package]]
+name = "tobytes"
+version = "0.1.0"
+
+[[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",
@@ -210,9 +215,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.23"
+version = "0.22.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee"
+checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
"indexmap",
"serde",
@@ -235,9 +240,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.16"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "wasm-bindgen"
@@ -296,9 +301,9 @@ checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
[[package]]
name = "winnow"
-version = "0.7.0"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e49d2d35d3fad69b39b94139037ecfb4f359f08958b9c11e7315ce770462419"
+checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
dependencies = [
"memchr",
]
diff --git a/zkvms/zkwasm/guest/Cargo.toml b/zkvms/zkwasm/guest/Cargo.toml
index 5adaea6..41d432f 100644
--- a/zkvms/zkwasm/guest/Cargo.toml
+++ b/zkvms/zkwasm/guest/Cargo.toml
@@ -14,6 +14,7 @@ rlp = { version = "0.5.2", default-features = false }
zkwasm-rust-sdk = { git = "https://github.com/DelphinusLab/zkWasm-rust.git" }
wasm-bindgen = "=0.2.95"
+tobytes = { path = "../host/tobytes" }
wrapper_macro = { version = "0.1.0", path = "../wrapper_macro" }
# The zkp dependency references a chosen guest in guests. It is included
diff --git a/zkvms/zkwasm/wrapper_macro/src/lib.rs b/zkvms/zkwasm/wrapper_macro/src/lib.rs
index 288eddb..b21378c 100644
--- a/zkvms/zkwasm/wrapper_macro/src/lib.rs
+++ b/zkvms/zkwasm/wrapper_macro/src/lib.rs
@@ -78,7 +78,10 @@ pub fn make_wrapper(item: TokenStream) -> TokenStream {
format!(
"
let result = zkp::{}{};
- write(result as u64);
+ let bytes = tobytes::to_bytes!(result);
+ for val in bytes.into_iter() {{
+ write(val);
+ }}
",
name, ts_patterns
)