Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 8 additions & 7 deletions crates/bitvm-gc/src/babe_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ pub use verifiable_circuit_babe::cac::{CACSetupPackage, FinalizedInstanceData};
use verifiable_circuit_babe::dre::N_PADDED;
use verifiable_circuit_babe::gc::{SGC_PART1_CONSTANT_SIZE, SparseAdaptorTable};
pub use verifiable_circuit_babe::instance::commit::CACInstanceCommit;
pub use verifiable_circuit_babe::instance::secret::Seed;
use verifiable_circuit_babe::prover::BABEProver;
use verifiable_circuit_babe::soldering::{
SolderedLabelsData, SolderingData as RealSolderingData, SolderingProof as RealSolderingProof,
Expand All @@ -39,7 +40,7 @@ pub const WOTS_SIG_COUNT: usize = Wots96::TOTAL_DIGIT_LEN as usize;
pub const BABE_N_CC: usize = 181;
pub const BABE_M_CC: usize = 7;

pub type OpenedInstanceSeeds = Vec<(usize, u64)>;
pub type OpenedInstanceSeeds = Vec<(usize, Seed)>;
pub type FinalizedInstances = Vec<FinalizedInstanceData>;
pub type SetupAndSolderingData = (OpenedInstanceSeeds, FinalizedInstances, SolderingData);

Expand All @@ -65,7 +66,7 @@ pub struct SolderingData {

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BabeVerifierPrivateState {
pub instance_seeds: Vec<u64>,
pub instance_seeds: Vec<Seed>,
pub statement_digest: [u8; 32],
}

Expand Down Expand Up @@ -210,7 +211,7 @@ pub fn open_real_setup_and_solder(
pub fn verify_real_setup(
soldering_builder: &BabeBundleBuilder,
package: &CACSetupPackage,
opened: &[(usize, u64)],
opened: &[(usize, Seed)],
finalized: &[FinalizedInstanceData],
soldering: &SolderingData,
vk: &Groth16VerifyingKey<Bn254>,
Expand All @@ -235,7 +236,7 @@ pub fn verify_real_setup(

/// Removes setup-derived public fields from the Verifier-to-Operator soldering proof payload.
pub fn compact_soldering_proof_payload(
opened: &[(usize, u64)],
opened: &[(usize, Seed)],
finalized: &[FinalizedInstanceData],
soldering: &SolderingData,
) -> Result<CompactSolderingProofPayload> {
Expand Down Expand Up @@ -291,7 +292,7 @@ pub fn open_and_solder(
/// Validates placeholder opened, finalized, and soldering data consistency.
pub fn verify_setup(
package: &CACSetupPackage,
opened: &[(usize, u64)],
opened: &[(usize, Seed)],
finalized: &[FinalizedInstanceData],
soldering: &SolderingData,
) -> Result<()> {
Expand Down Expand Up @@ -623,8 +624,8 @@ fn recover_a_valid_finalized_messages(
})
}

fn deterministic_seed(index: usize) -> u64 {
u64::from_le_bytes(hash32(&(index as u64).to_le_bytes())[0..8].try_into().expect("8 bytes"))
fn deterministic_seed(index: usize) -> Seed {
hash32(&(index as u64).to_le_bytes())
}

fn hash20(data: &[u8]) -> [u8; 20] {
Expand Down
4 changes: 2 additions & 2 deletions crates/bitvm-gc/tests/babe_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,11 +171,11 @@ fn verify_setup_accepts_valid_opening_and_rejects_invalid_shapes() {
assert!(verify_setup(&package, &opened, &duplicate_finalized, &soldering).is_err());

let mut overlapping_opened = opened.clone();
overlapping_opened.push((finalized[0].index, 0));
overlapping_opened.push((finalized[0].index, [0u8; 32]));
assert!(verify_setup(&package, &overlapping_opened, &finalized, &soldering).is_err());

let mut wrong_seed_opened = opened.clone();
wrong_seed_opened[0].1 ^= 1;
wrong_seed_opened[0].1[0] ^= 1;
assert!(verify_setup(&package, &wrong_seed_opened, &finalized, &soldering).is_err());

let mut mismatched_soldering = soldering.clone();
Expand Down
4 changes: 2 additions & 2 deletions crates/bitvm-gc/tests/regtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use bitcoin::{
};
use bitcoin_script::script;
use bitvm_gc::babe_adapter::{
BABE_M_CC, BabeProverState, CACSetupPackage, TxAssertWitness, assert_wots_message,
BABE_M_CC, BabeProverState, CACSetupPackage, Seed, TxAssertWitness, assert_wots_message,
build_assert_witness, build_setup_package, derive_finalized_indices, extract_gc_circuit_data,
open_and_solder, recover_operator_proof_from_assert_witness, verify_setup,
};
Expand Down Expand Up @@ -82,7 +82,7 @@ static MOCK_FIXTURE: OnceLock<std::result::Result<MockProofGcFixture, String>> =
struct MockProofGcFixture {
version: u32,
setup_package: CACSetupPackage,
opened: Vec<(usize, u64)>,
opened: Vec<(usize, Seed)>,
prover_state: BabeProverState,
gc_data: BitvmGcCircuitData,
proof_bytes: Vec<u8>,
Expand Down
6 changes: 3 additions & 3 deletions node/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ use crate::scheduled_tasks::graph_maintenance_tasks::{
};
use bitcoin_light_client_circuit::hash_operator_constant;
use bitvm_lib::babe_adapter::{
BABE_M_CC, BabeVerifierPrivateState, CACSetupPackage, FinalizedInstanceData, SolderingData,
compact_soldering_proof_payload,
BABE_M_CC, BabeVerifierPrivateState, CACSetupPackage, FinalizedInstanceData, Seed,
SolderingData, compact_soldering_proof_payload,
};
use bitvm_lib::transactions::base::BaseTransaction;
use client::goat_chain::{DisproveTxType, GraphData, PeginStatus, WithdrawStatus};
Expand Down Expand Up @@ -6107,7 +6107,7 @@ pub(crate) async fn save_soldering_proof_payload(
instance_id: Uuid,
graph_id: Uuid,
candidate_index: usize,
opened: &[(usize, u64)],
opened: &[(usize, Seed)],
finalized: &[FinalizedInstanceData],
soldering: &SolderingData,
) -> Result<SolderingProofReady> {
Expand Down
Loading