From e6414dd4b75feed738cf759181e80da41bfaaada Mon Sep 17 00:00:00 2001 From: arvidn Date: Wed, 9 Oct 2024 19:01:11 +0200 Subject: [PATCH] address review comments --- crates/chia-consensus/src/gen/conditions.rs | 32 ++++++++----------- .../src/spendbundle_conditions.rs | 4 +-- .../src/spendbundle_validation.rs | 2 +- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/crates/chia-consensus/src/gen/conditions.rs b/crates/chia-consensus/src/gen/conditions.rs index ed6837d4c..435ecf843 100644 --- a/crates/chia-consensus/src/gen/conditions.rs +++ b/crates/chia-consensus/src/gen/conditions.rs @@ -23,7 +23,7 @@ use crate::gen::messages::{Message, SpendId}; use crate::gen::spend_visitor::SpendVisitor; use crate::gen::validation_error::check_nil; use chia_bls::{aggregate_verify, BlsCache, PublicKey, Signature}; -use chia_protocol::Bytes32; +use chia_protocol::{Bytes, Bytes32}; use chia_sha2::Sha256; use clvmr::allocator::{Allocator, NodePtr, SExp}; use clvmr::cost::Cost; @@ -785,7 +785,7 @@ pub struct ParseState { // DONT_VALIDATE_SIGNATURE flag is set // TODO: We would probably save heap allocations by turning this into a // blst_pairing object. - pub pkm_pairs: Vec<(PublicKey, Vec)>, + pub pkm_pairs: Vec<(PublicKey, Bytes)>, } // returns (parent-id, puzzle-hash, amount, condition-list) @@ -1136,7 +1136,7 @@ pub fn parse_conditions( let mut msg = a.atom(msg).as_ref().to_vec(); msg.extend((*spend.coin_id).as_slice()); msg.extend(constants.agg_sig_me_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigParent(pk, msg) => { @@ -1145,7 +1145,7 @@ pub fn parse_conditions( let mut msg = a.atom(msg).as_ref().to_vec(); msg.extend(a.atom(spend.parent_id).as_ref()); msg.extend(constants.agg_sig_parent_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigPuzzle(pk, msg) => { @@ -1154,7 +1154,7 @@ pub fn parse_conditions( let mut msg = a.atom(msg).as_ref().to_vec(); msg.extend(a.atom(spend.puzzle_hash).as_ref()); msg.extend(constants.agg_sig_puzzle_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigAmount(pk, msg) => { @@ -1163,7 +1163,7 @@ pub fn parse_conditions( let mut msg = a.atom(msg).as_ref().to_vec(); msg.extend(u64_to_bytes(spend.coin_amount).as_slice()); msg.extend(constants.agg_sig_amount_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigPuzzleAmount(pk, msg) => { @@ -1173,7 +1173,7 @@ pub fn parse_conditions( msg.extend(a.atom(spend.puzzle_hash).as_ref()); msg.extend(u64_to_bytes(spend.coin_amount).as_slice()); msg.extend(constants.agg_sig_puzzle_amount_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigParentAmount(pk, msg) => { @@ -1183,7 +1183,7 @@ pub fn parse_conditions( msg.extend(a.atom(spend.parent_id).as_ref()); msg.extend(u64_to_bytes(spend.coin_amount).as_slice()); msg.extend(constants.agg_sig_parent_amount_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigParentPuzzle(pk, msg) => { @@ -1193,7 +1193,7 @@ pub fn parse_conditions( msg.extend(a.atom(spend.parent_id).as_ref()); msg.extend(a.atom(spend.puzzle_hash).as_ref()); msg.extend(constants.agg_sig_parent_puzzle_additional_data.as_slice()); - state.pkm_pairs.push((to_key(a, pk)?, msg)); + state.pkm_pairs.push((to_key(a, pk)?, msg.into())); } } Condition::AggSigUnsafe(pk, msg) => { @@ -1204,7 +1204,7 @@ pub fn parse_conditions( if (flags & DONT_VALIDATE_SIGNATURE) == 0 { state .pkm_pairs - .push((to_key(a, pk)?, a.atom(msg).as_ref().to_vec())); + .push((to_key(a, pk)?, a.atom(msg).as_ref().to_vec().into())); } } Condition::Softfork(cost) => { @@ -4760,14 +4760,10 @@ fn test_agg_sig( b"foobar", )); } - match cond_test_sig(puzzle.as_str(), &signature, cache, 0) { - Ok(..) => { - assert!(expect_pass); - } - Err(..) => { - assert!(!expect_pass); - } - } + assert_eq!( + expect_pass, + cond_test_sig(puzzle.as_str(), &signature, cache, 0).is_ok() + ); } // the message condition takes a mode-parameter. This is a 6-bit integer that diff --git a/crates/chia-consensus/src/spendbundle_conditions.rs b/crates/chia-consensus/src/spendbundle_conditions.rs index 22f99e53f..236cf33a3 100644 --- a/crates/chia-consensus/src/spendbundle_conditions.rs +++ b/crates/chia-consensus/src/spendbundle_conditions.rs @@ -8,7 +8,7 @@ use crate::gen::solution_generator::calculate_generator_length; use crate::gen::validation_error::ValidationErr; use crate::spendbundle_validation::get_flags_for_height_and_constants; use chia_bls::PublicKey; -use chia_protocol::SpendBundle; +use chia_protocol::{Bytes, SpendBundle}; use clvm_utils::tree_hash; use clvmr::allocator::Allocator; use clvmr::chia_dialect::ChiaDialect; @@ -46,7 +46,7 @@ pub fn run_spendbundle( height: u32, flags: u32, constants: &ConsensusConstants, -) -> Result<(SpendBundleConditions, Vec<(PublicKey, Vec)>), ValidationErr> { +) -> Result<(SpendBundleConditions, Vec<(PublicKey, Bytes)>), ValidationErr> { let flags = get_flags_for_height_and_constants(height, constants) | flags | MEMPOOL_MODE; // below is an adapted version of the code from run_block_generators::run_block_generator2() diff --git a/crates/chia-consensus/src/spendbundle_validation.rs b/crates/chia-consensus/src/spendbundle_validation.rs index 0a790d47c..814d5dcca 100644 --- a/crates/chia-consensus/src/spendbundle_validation.rs +++ b/crates/chia-consensus/src/spendbundle_validation.rs @@ -37,7 +37,7 @@ pub fn validate_clvm_and_signature( for (pk, msg) in pkm_pairs { aug_msg.clear(); aug_msg.extend_from_slice(&pk.to_bytes()); - aug_msg.extend(&msg); + aug_msg.extend(&*msg); let aug_hash = hash_to_g2(&aug_msg); let pairing = aug_hash.pair(&pk);