Skip to content

Proofs of programs that use the print_string syscall are not valid #588

Description

@gabrielbosio

Tested with print.elf and commit.elf:

print.elf

% cargo run -p cli --release -- prove executor/program_artifacts/rust/print.elf -o /tmp/proof.bin
    Finished `release` profile [optimized] target(s) in 0.06s
     Running `target/release/cli prove executor/program_artifacts/rust/print.elf -o /tmp/proof.bin`
Reading ELF file...
Generating proof...
PRINT VM: Hello, World!
Writing proof...
Proof written to "/tmp/proof.bin"
% cargo run -p cli --release -- verify /tmp/proof.bin executor/program_artifacts/rust/print.elf 
    Finished `release` profile [optimized] target(s) in 0.06s
     Running `target/release/cli verify /tmp/proof.bin executor/program_artifacts/rust/print.elf`
Reading ELF file...
Reading proof...
Verifying proof...
Verification failed!

commit.elf

% echo hello > /tmp/input.bin
% cargo run -p cli --release -- prove executor/program_artifacts/rust/commit.elf --private-input /tmp/input.bin -o /tmp/proof.bin
    Finished `release` profile [optimized] target(s) in 0.17s
     Running `target/release/cli prove executor/program_artifacts/rust/commit.elf --private-input /tmp/input.bin -o /tmp/proof.bin`
Reading ELF file...
Reading private input file...
Generating proof...
PRINT VM: Private input received: [104, 101, 108, 108, 111, 10]

Writing proof...
Proof written to "/tmp/proof.bin"
% cargo run -p cli --release -- verify /tmp/proof.bin executor/program_artifacts/rust/commit.elf
    Finished `release` profile [optimized] target(s) in 0.06s
     Running `target/release/cli verify /tmp/proof.bin executor/program_artifacts/rust/commit.elf`
Reading ELF file...
Reading proof...
Verifying proof...
Verification failed!

Expected

Both programs should pass its verification, independent of the private input passed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions