Skip to content

Commit 0d3df06

Browse files
MauroToscanocliraaJuArce
authored
Pull testnet changes to staging (#2038)
Co-authored-by: cliraa <[email protected]> Co-authored-by: Julian Arce <[email protected]>
2 parents 7be0542 + 5b30c6a commit 0d3df06

40 files changed

+6296
-198
lines changed

Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ batcher_send_sp1_task: ## Send a SP1 fibonacci proof to Batcher. Parameters: RPC
529529
--proving_system SP1 \
530530
--proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \
531531
--vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \
532+
--public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \
532533
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
533534
--rpc_url $(RPC_URL) \
534535
--network $(NETWORK)
@@ -539,6 +540,7 @@ batcher_send_sp1_burst: ## Send a burst of SP1 fibonacci proofs to Batcher. Para
539540
--proving_system SP1 \
540541
--proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \
541542
--vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \
543+
--public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \
542544
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
543545
--repetitions $(BURST_SIZE) \
544546
--rpc_url $(RPC_URL) \
@@ -763,6 +765,10 @@ generate_sp1_fibonacci_proof: ## Run the SP1 Fibonacci proof generator script
763765
@cd scripts/test_files/sp1/fibonacci_proof_generator/script && RUST_LOG=info cargo run --release
764766
@echo "Fibonacci proof and ELF generated in scripts/test_files/sp1 folder"
765767

768+
generate_sp1_fibonacci_proof_no_pub_input: ## Run the SP1 Fibonacci proof generator script with empty journal
769+
@cd scripts/test_files/sp1/no_public_inputs/script && RUST_LOG=info cargo run --release
770+
@echo "Fibonacci proof and ELF with no public inputs generated in scripts/test_files/sp1 folder"
771+
766772
generate_risc_zero_fibonacci_proof: ## Run the Risc0 Fibonacci proof generator script
767773
@cd scripts/test_files/risc_zero/fibonacci_proof_generator && \
768774
RUST_LOG=info cargo run --release && \
@@ -1073,6 +1079,7 @@ docker_batcher_send_sp1_burst:
10731079
--proving_system SP1 \
10741080
--proof ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \
10751081
--vm_program ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \
1082+
--public_input ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \
10761083
--repetitions $(DOCKER_BURST_SIZE) \
10771084
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
10781085
--rpc_url $(DOCKER_RPC_URL) \

crates/batcher/src/sp1/mod.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use log::{debug, error, warn};
2-
use sp1_sdk::{EnvProver, ProverClient};
2+
use sp1_sdk::{EnvProver, ProverClient, SP1ProofWithPublicValues};
33
use std::sync::OnceLock;
44

55
static SP1_PROVER_CLIENT: OnceLock<EnvProver> = OnceLock::new();
66

7-
pub fn verify_sp1_proof(proof: &[u8], elf: &[u8]) -> bool {
7+
pub fn verify_sp1_proof(proof: &[u8], public_inputs: &[u8], elf: &[u8]) -> bool {
88
if proof.is_empty() || elf.is_empty() {
99
error!("SP1 Input buffers zero size");
1010
return false;
@@ -14,8 +14,11 @@ pub fn verify_sp1_proof(proof: &[u8], elf: &[u8]) -> bool {
1414
let prover_client = SP1_PROVER_CLIENT.get_or_init(ProverClient::from_env);
1515

1616
let (_pk, vk) = prover_client.setup(elf);
17-
if let Ok(proof) = bincode::deserialize(proof) {
18-
//client.verify(&proof, &vk).expect("failed to verify proof");
17+
if let Ok(proof) = bincode::deserialize::<SP1ProofWithPublicValues>(proof) {
18+
if *proof.public_values.as_slice() != *public_inputs {
19+
warn!("SP1 public inputs do not match proof public values");
20+
return false;
21+
}
1922
let res = prover_client.verify(&proof, &vk).is_ok();
2023
debug!("SP1 proof is valid: {}", res);
2124
if res {

crates/batcher/src/zk_utils/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ fn verify_internal(verification_data: &VerificationData) -> bool {
2020
warn!("Trying to verify SP1 proof but ELF was not provided. Returning invalid");
2121
return false;
2222
};
23-
verify_sp1_proof(verification_data.proof.as_slice(), elf.as_slice())
23+
let pub_inputs = &verification_data.pub_input.clone().unwrap_or_default();
24+
verify_sp1_proof(
25+
verification_data.proof.as_slice(),
26+
pub_inputs.as_slice(),
27+
elf.as_slice(),
28+
)
2429
}
2530
ProvingSystemId::Risc0 => {
2631
let Some(image_id_slice) = &verification_data.vm_program_code else {

crates/cli/get_proof_test_files.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ CURRENT_TAG=$(curl -s -L \
88

99
SP1_ELF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf"
1010
SP1_PROOF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof"
11+
SP1_PUBLIC_INPUT_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub"
1112

1213
SP1_ELF_NAME="sp1_fibonacci_5_0_0.elf"
1314
SP1_PROOF_NAME="sp1_fibonacci_5_0_0.proof"
15+
SP1_PUBLIC_INPUT_NAME="sp1_fibonacci_5_0_0.pub"
1416

1517
BASE_DIR=$HOME
1618
ALIGNED_DIR="${ALIGNED_DIR-"$BASE_DIR/.aligned"}"
@@ -36,7 +38,17 @@ else
3638
exit 1
3739
fi
3840

41+
echo "Downloading SP1 public inputs file..."
42+
43+
if curl -sSf -L "$SP1_PUBLIC_INPUT_NAME" -o "$ALIGNED_TEST_FILES_DIR/$SP1_PUBLIC_INPUT_NAME"; then
44+
echo "SP1 public inputs downloaded successful"
45+
else
46+
echo "Error: Failed to downloaded $SP1_PUBLIC_INPUT_NAME"
47+
exit 1
48+
fi
49+
3950
chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_ELF_NAME"
4051
chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_PROOF_NAME"
52+
chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_PUBLIC_INPUT_NAME"
4153

42-
echo "SP1 ELF and proof files downloaded successfully in $ALIGNED_TEST_FILES_DIR"
54+
echo "SP1 ELF, proof and public inputs files downloaded successfully in $ALIGNED_TEST_FILES_DIR"

crates/cli/send_proof_with_random_address.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ if [[ $PROOF_TYPE == "sp1" ]]; then
3434
--proving_system SP1 \
3535
--proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \
3636
--vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \
37-
--random_address \
37+
--public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \
38+
--random_address \
3839
--repetitions $REPETITIONS \
3940
--rpc_url $RPC_URL \
4041
--network $NETWORK

crates/cli/src/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result<VerificationData, Su
877877
// Read proof file
878878
let proof = read_file(args.proof_file_name.clone())?;
879879

880-
let mut pub_input: Option<Vec<u8>> = None;
880+
let pub_input: Option<Vec<u8>>;
881881
let mut verification_key: Option<Vec<u8>> = None;
882882
let mut vm_program_code: Option<Vec<u8>> = None;
883883

@@ -887,6 +887,11 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result<VerificationData, Su
887887
"--vm_program",
888888
args.vm_program_code_file_name.clone(),
889889
)?);
890+
pub_input = args
891+
.pub_input_file_name
892+
.clone()
893+
.map(read_file)
894+
.transpose()?;
890895
}
891896
ProvingSystemId::Risc0 => {
892897
vm_program_code = Some(read_file_option(

0 commit comments

Comments
 (0)