From 1542fd4d79a2dcd886565723a52e4698da00d00b Mon Sep 17 00:00:00 2001 From: clemahieu Date: Tue, 20 Mar 2018 15:36:49 -0500 Subject: [PATCH] Serializing work as big-endian to match other numbers and also network byte order. --- rai/core_test/block.cpp | 1 + rai/lib/blocks.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/rai/core_test/block.cpp b/rai/core_test/block.cpp index 89862ad8..bbc55f0e 100644 --- a/rai/core_test/block.cpp +++ b/rai/core_test/block.cpp @@ -341,6 +341,7 @@ TEST (state_block, serialization) rai::vectorstream stream (bytes); block1.serialize (stream); } + ASSERT_EQ (0x5, bytes [215]); // Ensure work is serialized big-endian ASSERT_EQ (rai::state_block::size, bytes.size ()); bool error1; rai::bufferstream stream (bytes.data (), bytes.size ()); diff --git a/rai/lib/blocks.cpp b/rai/lib/blocks.cpp index cb671e05..1f9eaccb 100644 --- a/rai/lib/blocks.cpp +++ b/rai/lib/blocks.cpp @@ -1,5 +1,7 @@ #include +#include + std::string rai::to_string_hex (uint64_t value_a) { std::stringstream stream; @@ -919,6 +921,7 @@ hashables (error_a, stream_a) if (!error_a) { error_a = rai::read (stream_a, work); + boost::endian::big_to_native_inplace (work); } } } @@ -980,7 +983,7 @@ void rai::state_block::serialize (rai::stream & stream_a) const write (stream_a, hashables.balance); write (stream_a, hashables.link); write (stream_a, signature); - write (stream_a, work); + write (stream_a, boost::endian::native_to_big (work)); } void rai::state_block::serialize_json (std::string & string_a) const @@ -1023,6 +1026,7 @@ bool rai::state_block::deserialize (rai::stream & stream_a) if (!error) { error = read (stream_a, work); + boost::endian::big_to_native_inplace (work); } } }