Block size computation improvement (#1528)

This commit is contained in:
cryptocode 2019-01-02 00:45:51 +01:00 committed by Roy Keene
commit c8d760cd61

View file

@ -81,6 +81,7 @@ public:
nano::block_hash previous; nano::block_hash previous;
nano::account destination; nano::account destination;
nano::amount balance; nano::amount balance;
static size_t constexpr size = sizeof (previous) + sizeof (destination) + sizeof (balance);
}; };
class send_block : public nano::block class send_block : public nano::block
{ {
@ -110,10 +111,10 @@ public:
bool operator== (nano::block const &) const override; bool operator== (nano::block const &) const override;
bool operator== (nano::send_block const &) const; bool operator== (nano::send_block const &) const;
bool valid_predecessor (nano::block const &) const override; bool valid_predecessor (nano::block const &) const override;
static size_t constexpr size = sizeof (nano::account) + sizeof (nano::block_hash) + sizeof (nano::amount) + sizeof (nano::signature) + sizeof (uint64_t);
send_hashables hashables; send_hashables hashables;
nano::signature signature; nano::signature signature;
uint64_t work; uint64_t work;
static size_t constexpr size = nano::send_hashables::size + sizeof (signature) + sizeof (work);
}; };
class receive_hashables class receive_hashables
{ {
@ -125,6 +126,7 @@ public:
void hash (blake2b_state &) const; void hash (blake2b_state &) const;
nano::block_hash previous; nano::block_hash previous;
nano::block_hash source; nano::block_hash source;
static size_t constexpr size = sizeof (previous) + sizeof (source);
}; };
class receive_block : public nano::block class receive_block : public nano::block
{ {
@ -154,10 +156,10 @@ public:
bool operator== (nano::block const &) const override; bool operator== (nano::block const &) const override;
bool operator== (nano::receive_block const &) const; bool operator== (nano::receive_block const &) const;
bool valid_predecessor (nano::block const &) const override; bool valid_predecessor (nano::block const &) const override;
static size_t constexpr size = sizeof (nano::block_hash) + sizeof (nano::block_hash) + sizeof (nano::signature) + sizeof (uint64_t);
receive_hashables hashables; receive_hashables hashables;
nano::signature signature; nano::signature signature;
uint64_t work; uint64_t work;
static size_t constexpr size = nano::receive_hashables::size + sizeof (signature) + sizeof (work);
}; };
class open_hashables class open_hashables
{ {
@ -170,6 +172,7 @@ public:
nano::block_hash source; nano::block_hash source;
nano::account representative; nano::account representative;
nano::account account; nano::account account;
static size_t constexpr size = sizeof (source) + sizeof (representative) + sizeof (account);
}; };
class open_block : public nano::block class open_block : public nano::block
{ {
@ -200,10 +203,10 @@ public:
bool operator== (nano::block const &) const override; bool operator== (nano::block const &) const override;
bool operator== (nano::open_block const &) const; bool operator== (nano::open_block const &) const;
bool valid_predecessor (nano::block const &) const override; bool valid_predecessor (nano::block const &) const override;
static size_t constexpr size = sizeof (nano::block_hash) + sizeof (nano::account) + sizeof (nano::account) + sizeof (nano::signature) + sizeof (uint64_t);
nano::open_hashables hashables; nano::open_hashables hashables;
nano::signature signature; nano::signature signature;
uint64_t work; uint64_t work;
static size_t constexpr size = nano::open_hashables::size + sizeof (signature) + sizeof (work);
}; };
class change_hashables class change_hashables
{ {
@ -215,6 +218,7 @@ public:
void hash (blake2b_state &) const; void hash (blake2b_state &) const;
nano::block_hash previous; nano::block_hash previous;
nano::account representative; nano::account representative;
static size_t constexpr size = sizeof (previous) + sizeof (representative);
}; };
class change_block : public nano::block class change_block : public nano::block
{ {
@ -244,10 +248,10 @@ public:
bool operator== (nano::block const &) const override; bool operator== (nano::block const &) const override;
bool operator== (nano::change_block const &) const; bool operator== (nano::change_block const &) const;
bool valid_predecessor (nano::block const &) const override; bool valid_predecessor (nano::block const &) const override;
static size_t constexpr size = sizeof (nano::block_hash) + sizeof (nano::account) + sizeof (nano::signature) + sizeof (uint64_t);
nano::change_hashables hashables; nano::change_hashables hashables;
nano::signature signature; nano::signature signature;
uint64_t work; uint64_t work;
static size_t constexpr size = nano::change_hashables::size + sizeof (signature) + sizeof (work);
}; };
class state_hashables class state_hashables
{ {
@ -271,6 +275,8 @@ public:
nano::amount balance; nano::amount balance;
// Link field contains source block_hash if receiving, destination account if sending // Link field contains source block_hash if receiving, destination account if sending
nano::uint256_union link; nano::uint256_union link;
// Serialized size
static size_t constexpr size = sizeof (account) + sizeof (previous) + sizeof (representative) + sizeof (balance) + sizeof (link);
}; };
class state_block : public nano::block class state_block : public nano::block
{ {
@ -300,10 +306,10 @@ public:
bool operator== (nano::block const &) const override; bool operator== (nano::block const &) const override;
bool operator== (nano::state_block const &) const; bool operator== (nano::state_block const &) const;
bool valid_predecessor (nano::block const &) const override; bool valid_predecessor (nano::block const &) const override;
static size_t constexpr size = sizeof (nano::account) + sizeof (nano::block_hash) + sizeof (nano::account) + sizeof (nano::amount) + sizeof (nano::uint256_union) + sizeof (nano::signature) + sizeof (uint64_t);
nano::state_hashables hashables; nano::state_hashables hashables;
nano::signature signature; nano::signature signature;
uint64_t work; uint64_t work;
static size_t constexpr size = nano::state_hashables::size + sizeof (signature) + sizeof (work);
}; };
class block_visitor class block_visitor
{ {