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