From 49937daeb8be6897cfd931895ede58bfec4ea6b2 Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Thu, 9 Jul 2015 18:11:52 -0400 Subject: [PATCH] Rename delegate_signature->witness_signature #147 - changed secret hash of block headers from 224 to 160 to save 16 bytes per header which will add up to 1 MB per day in savings. --- libraries/chain/db_witness_schedule.cpp | 3 ++- libraries/chain/include/graphene/chain/config.hpp | 2 +- libraries/chain/include/graphene/chain/database.hpp | 2 +- libraries/chain/include/graphene/chain/protocol/block.hpp | 4 ++-- libraries/chain/include/graphene/chain/protocol/types.hpp | 2 +- .../chain/include/graphene/chain/witness_schedule_object.hpp | 2 +- .../chain/include/graphene/chain/witness_scheduler_rng.hpp | 2 +- libraries/chain/protocol/block.cpp | 4 ++-- 8 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libraries/chain/db_witness_schedule.cpp b/libraries/chain/db_witness_schedule.cpp index 98ce95dd..4585e605 100644 --- a/libraries/chain/db_witness_schedule.cpp +++ b/libraries/chain/db_witness_schedule.cpp @@ -90,7 +90,7 @@ vector database::get_near_witness_schedule()const return result; } -void database::update_witness_schedule(signed_block next_block) +void database::update_witness_schedule(const signed_block& next_block) { const global_property_object& gpo = get_global_properties(); const witness_schedule_object& wso = get(witness_schedule_id_type()); @@ -109,6 +109,7 @@ void database::update_witness_schedule(signed_block next_block) witness_id_type wit; const dynamic_global_property_object& dpo = get_dynamic_global_properties(); + assert( dpo.random.data_size() == witness_scheduler_rng::seed_length ); assert( witness_scheduler_rng::seed_length == wso.rng_seed.size() ); diff --git a/libraries/chain/include/graphene/chain/config.hpp b/libraries/chain/include/graphene/chain/config.hpp index de9bf592..d7bad7b7 100644 --- a/libraries/chain/include/graphene/chain/config.hpp +++ b/libraries/chain/include/graphene/chain/config.hpp @@ -122,7 +122,7 @@ // counter used to determine bits of entropy // must be less than or equal to secret_hash_type::data_length() -#define GRAPHENE_RNG_SEED_LENGTH (224 / 8) +#define GRAPHENE_RNG_SEED_LENGTH (160 / 8) /** * every second, the fraction of burned core asset which cycles is diff --git a/libraries/chain/include/graphene/chain/database.hpp b/libraries/chain/include/graphene/chain/database.hpp index 491761d7..d17bab6e 100644 --- a/libraries/chain/include/graphene/chain/database.hpp +++ b/libraries/chain/include/graphene/chain/database.hpp @@ -422,7 +422,7 @@ namespace graphene { namespace chain { void update_withdraw_permissions(); //////////////////// db_witness_schedule.cpp //////////////////// - void update_witness_schedule(signed_block next_block); /// no-op except for scheduling blocks + void update_witness_schedule(const signed_block& next_block); /// no-op except for scheduling blocks ///Steps performed only at maintenance intervals ///@{ diff --git a/libraries/chain/include/graphene/chain/protocol/block.hpp b/libraries/chain/include/graphene/chain/protocol/block.hpp index a74dbfb2..d9e882a1 100644 --- a/libraries/chain/include/graphene/chain/protocol/block.hpp +++ b/libraries/chain/include/graphene/chain/protocol/block.hpp @@ -42,7 +42,7 @@ namespace graphene { namespace chain { void sign( const fc::ecc::private_key& signer ); bool validate_signee( const fc::ecc::public_key& expected_signee )const; - signature_type delegate_signature; + signature_type witness_signature; }; struct signed_block : public signed_block_header @@ -55,5 +55,5 @@ namespace graphene { namespace chain { FC_REFLECT( graphene::chain::block_header, (previous)(timestamp)(witness) (next_secret_hash)(previous_secret)(transaction_merkle_root)(extensions) ) -FC_REFLECT_DERIVED( graphene::chain::signed_block_header, (graphene::chain::block_header), (delegate_signature) ) +FC_REFLECT_DERIVED( graphene::chain::signed_block_header, (graphene::chain::block_header), (witness_signature) ) FC_REFLECT_DERIVED( graphene::chain::signed_block, (graphene::chain::signed_block_header), (transactions) ) diff --git a/libraries/chain/include/graphene/chain/protocol/types.hpp b/libraries/chain/include/graphene/chain/protocol/types.hpp index e244d0aa..62bfea5d 100644 --- a/libraries/chain/include/graphene/chain/protocol/types.hpp +++ b/libraries/chain/include/graphene/chain/protocol/types.hpp @@ -220,7 +220,7 @@ namespace graphene { namespace chain { typedef fc::sha256 digest_type; typedef fc::ecc::compact_signature signature_type; typedef safe share_type; - typedef fc::sha224 secret_hash_type; + typedef fc::ripemd160 secret_hash_type; typedef uint16_t weight_type; /** diff --git a/libraries/chain/include/graphene/chain/witness_schedule_object.hpp b/libraries/chain/include/graphene/chain/witness_schedule_object.hpp index 2819d20f..5661651c 100644 --- a/libraries/chain/include/graphene/chain/witness_schedule_object.hpp +++ b/libraries/chain/include/graphene/chain/witness_schedule_object.hpp @@ -56,7 +56,7 @@ class witness_schedule_object : public abstract_object witness_scheduler scheduler; uint32_t last_scheduling_block; uint64_t slots_since_genesis = 0; - fc::array< char, GRAPHENE_RNG_SEED_LENGTH > rng_seed; + fc::array< char, sizeof(secret_hash_type) > rng_seed; }; } } diff --git a/libraries/chain/include/graphene/chain/witness_scheduler_rng.hpp b/libraries/chain/include/graphene/chain/witness_scheduler_rng.hpp index 4c3e0509..e7467010 100644 --- a/libraries/chain/include/graphene/chain/witness_scheduler_rng.hpp +++ b/libraries/chain/include/graphene/chain/witness_scheduler_rng.hpp @@ -38,7 +38,7 @@ class nullary_rng * The sha256_ctr_rng generates bits using SHA256 in counter (CTR) * mode. */ -template< class HashClass, int SeedLength=32 > +template< class HashClass, int SeedLength=sizeof(secret_hash_type) > class hash_ctr_rng { public: diff --git a/libraries/chain/protocol/block.cpp b/libraries/chain/protocol/block.cpp index 4c491aea..aa68c21b 100644 --- a/libraries/chain/protocol/block.cpp +++ b/libraries/chain/protocol/block.cpp @@ -42,12 +42,12 @@ namespace graphene { namespace chain { fc::ecc::public_key signed_block_header::signee()const { - return fc::ecc::public_key( delegate_signature, digest(), true/*enforce canonical*/ ); + return fc::ecc::public_key( witness_signature, digest(), true/*enforce canonical*/ ); } void signed_block_header::sign( const fc::ecc::private_key& signer ) { - delegate_signature = signer.sign_compact( digest() ); + witness_signature = signer.sign_compact( digest() ); } bool signed_block_header::validate_signee( const fc::ecc::public_key& expected_signee )const