Skip to content

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

@gabrielbosio

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions