diff options
| -rw-r--r-- | zkvms/risc0/default.nix | 7 | ||||
| -rw-r--r-- | zkvms/risc0/guest/Cargo.toml | 3 | ||||
| -rw-r--r-- | zkvms/risc0/guest_elf_patch/Cargo.toml | 9 | ||||
| -rw-r--r-- | zkvms/risc0/guest_elf_patch/src/main.rs | 11 |
4 files changed, 29 insertions, 1 deletions
diff --git a/zkvms/risc0/default.nix b/zkvms/risc0/default.nix index 6a4b796..132bce2 100644 --- a/zkvms/risc0/default.nix +++ b/zkvms/risc0/default.nix @@ -23,10 +23,15 @@ in zkvmLib.buildPackage craneLib (commonArgs // { guestTarget = "riscv32im-risc0-zkvm-elf"; + postBuildGuest = '' + cd ../guest_elf_patch + cargo run --release + ''; + preBuild = '' # Used for verification # https://github.com/risc0/risc0/blob/881e512732eca72849b2d0e263a1242aba3158af/risc0/build/src/lib.rs#L192-L195 - export GUEST_ID="$(${metacraft-labs.risc0}/bin/r0vm --elf ./host/src/guest --id)" + export GUEST_ID="$(${metacraft-labs.risc0}/bin/r0vm --elf ./src/guest --id)" ''; preRunBinaries = [ metacraft-labs.risc0 ]; diff --git a/zkvms/risc0/guest/Cargo.toml b/zkvms/risc0/guest/Cargo.toml index 8a12a8c..a5a61f2 100644 --- a/zkvms/risc0/guest/Cargo.toml +++ b/zkvms/risc0/guest/Cargo.toml @@ -11,5 +11,8 @@ risc0-zkvm = { path = "/nix/store/6992z4qxba51p1m9vjbjvcwh16gvdp56-risc0-unstabl wrapper_macro = { version = "0.1.0", path = "../wrapper_macro" } +# Not used, but needed for Nix to handle dependencies +guest-elf-patch-risc0 = { path = "../guest_elf_patch" } + # The zkp dependency references a chosen guest in guests. It is included # (inserted here) by Nix. See zkvmLib.nix diff --git a/zkvms/risc0/guest_elf_patch/Cargo.toml b/zkvms/risc0/guest_elf_patch/Cargo.toml new file mode 100644 index 0000000..2008faf --- /dev/null +++ b/zkvms/risc0/guest_elf_patch/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "guest-elf-patch-risc0" +version = "0.1.0" +edition = "2021" + +[dependencies] +risc0-binfmt = { path = "/nix/store/6992z4qxba51p1m9vjbjvcwh16gvdp56-risc0-unstable-2025-03-12/risc0/binfmt" } +risc0-zkos-v1compat = { path = "/nix/store/6992z4qxba51p1m9vjbjvcwh16gvdp56-risc0-unstable-2025-03-12/risc0/zkos/v1compat" } +bytemuck_derive = "<1.9.0" diff --git a/zkvms/risc0/guest_elf_patch/src/main.rs b/zkvms/risc0/guest_elf_patch/src/main.rs new file mode 100644 index 0000000..6999ab4 --- /dev/null +++ b/zkvms/risc0/guest_elf_patch/src/main.rs @@ -0,0 +1,11 @@ +use risc0_binfmt::ProgramBinary; +use risc0_zkos_v1compat::V1COMPAT_ELF; + +static ELF: &[u8] = include_bytes!("../../host/src/guest"); + +// https://github.com/risc0/risc0/blob/fee2e19a3c49b3da492403de5e2d011c890e52de/risc0/build/src/lib.rs#L179-L187 +fn main() { + let binary = ProgramBinary::new(&ELF, V1COMPAT_ELF); + let elf = binary.encode(); + std::fs::write("../host/src/guest", &elf).expect("couldn't add magic bytes to elf!"); +} |
