Last active
July 16, 2018 21:33
-
-
Save PlasmaPower/6b9128e0ca2af21fc06d164d2407d34a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/rai/blockstore.cpp b/rai/blockstore.cpp | |
| index 335edfe3..700cc648 100644 | |
| --- a/rai/blockstore.cpp | |
| +++ b/rai/blockstore.cpp | |
| @@ -560,7 +560,9 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.push_back (0); // version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + bytes.push_back (0); // version field | |
| + auto status (mdb_put (transaction_a, accounts, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -573,7 +575,9 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.push_back (0); // min_version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + bytes.push_back (0); // min_version field | |
| + auto status (mdb_put (transaction_a, pending, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -586,7 +590,9 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.insert (bytes.begin () + rai::state_block::size, 0); // version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + bytes.insert (bytes.begin () + rai::state_block::size, 0); | |
| + auto status (mdb_put (transaction_a, state_blocks, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -609,7 +615,7 @@ rai::uint128_t rai::block_store::block_balance (MDB_txn * transaction_a, rai::bl | |
| return visitor.balance; | |
| } | |
| -uint8_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_hash const & hash_a) | |
| +uint16_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_hash const & hash_a) | |
| { | |
| rai::block_type type; | |
| rai::mdb_val value; | |
| @@ -618,8 +624,8 @@ uint8_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_has | |
| uint8_t result (0); | |
| if (status == 0) | |
| { | |
| - assert (value.size () > rai::state_block::size); | |
| - result = *(reinterpret_cast<uint8_t const *> (value.data ()) + rai::state_block::size); | |
| + assert (value.size () >= rai::state_block::size + 2); | |
| + result = *(reinterpret_cast<uint16_t const *> (reinterpret_cast<uint8_t const *> (value.data ()) + rai::state_block::size)); | |
| } | |
| return result; | |
| } | |
| @@ -666,7 +672,7 @@ void rai::block_store::block_put_raw (MDB_txn * transaction_a, MDB_dbi database_ | |
| assert (status2 == 0); | |
| } | |
| -void rai::block_store::block_put (MDB_txn * transaction_a, rai::block_hash const & hash_a, rai::block const & block_a, rai::block_hash const & successor_a, uint8_t version_a) | |
| +void rai::block_store::block_put (MDB_txn * transaction_a, rai::block_hash const & hash_a, rai::block const & block_a, rai::block_hash const & successor_a, uint16_t version_a) | |
| { | |
| assert (successor_a.is_zero () || block_exists (transaction_a, successor_a)); | |
| if (block_a.type () != rai::block_type::state) | |
| diff --git a/rai/blockstore.hpp b/rai/blockstore.hpp | |
| index ab1025eb..313a8c6d 100644 | |
| --- a/rai/blockstore.hpp | |
| +++ b/rai/blockstore.hpp | |
| @@ -38,7 +38,7 @@ public: | |
| MDB_dbi block_database (rai::block_type); | |
| void block_put_raw (MDB_txn *, MDB_dbi, rai::block_hash const &, MDB_val); | |
| - void block_put (MDB_txn *, rai::block_hash const &, rai::block const &, rai::block_hash const & = rai::block_hash (0), uint8_t version = 0); | |
| + void block_put (MDB_txn *, rai::block_hash const &, rai::block const &, rai::block_hash const & = rai::block_hash (0), uint16_t version = 0); | |
| MDB_val block_get_raw (MDB_txn *, rai::block_hash const &, rai::block_type &); | |
| rai::block_hash block_successor (MDB_txn *, rai::block_hash const &); | |
| void block_successor_clear (MDB_txn *, rai::block_hash const &); | |
| @@ -79,7 +79,7 @@ public: | |
| rai::store_iterator block_info_begin (MDB_txn *); | |
| rai::store_iterator block_info_end (); | |
| rai::uint128_t block_balance (MDB_txn *, rai::block_hash const &); | |
| - uint8_t block_version (MDB_txn *, rai::block_hash const &); | |
| + uint16_t block_version (MDB_txn *, rai::block_hash const &); | |
| static size_t const block_info_max = 32; | |
| rai::uint128_t representation_get (MDB_txn *, rai::account const &); | |
| diff --git a/rai/common.cpp b/rai/common.cpp | |
| index 891634d4..a0a1d122 100644 | |
| --- a/rai/common.cpp | |
| +++ b/rai/common.cpp | |
| @@ -302,7 +302,7 @@ rai::pending_info::pending_info (MDB_val const & val_a) | |
| std::copy (reinterpret_cast<uint8_t const *> (val_a.mv_data), reinterpret_cast<uint8_t const *> (val_a.mv_data) + sizeof (*this), reinterpret_cast<uint8_t *> (this)); | |
| } | |
| -rai::pending_info::pending_info (rai::account const & source_a, rai::amount const & amount_a, uint8_t min_version_a) : | |
| +rai::pending_info::pending_info (rai::account const & source_a, rai::amount const & amount_a, uint16_t min_version_a) : | |
| source (source_a), | |
| amount (amount_a), | |
| min_version (min_version_a) | |
| diff --git a/rai/common.hpp b/rai/common.hpp | |
| index 95f80311..68e089b6 100644 | |
| --- a/rai/common.hpp | |
| +++ b/rai/common.hpp | |
| @@ -130,7 +130,7 @@ public: | |
| /** Seconds since posix epoch */ | |
| uint64_t modified; | |
| uint64_t block_count; | |
| - uint8_t version; | |
| + uint16_t version; | |
| }; | |
| #pragma pack(pop) | |
| @@ -143,14 +143,14 @@ class pending_info | |
| public: | |
| pending_info (); | |
| pending_info (MDB_val const &); | |
| - pending_info (rai::account const &, rai::amount const &, uint8_t); | |
| + pending_info (rai::account const &, rai::amount const &, uint16_t); | |
| void serialize (rai::stream &) const; | |
| bool deserialize (rai::stream &); | |
| bool operator== (rai::pending_info const &) const; | |
| rai::mdb_val val () const; | |
| rai::account source; | |
| rai::amount amount; | |
| - uint8_t min_version; | |
| + uint16_t min_version; | |
| }; | |
| #pragma pack(pop) | |
| class pending_key | |
| diff --git a/rai/ledger.cpp b/rai/ledger.cpp | |
| index c657923d..c78d1e35 100644 | |
| --- a/rai/ledger.cpp | |
| +++ b/rai/ledger.cpp | |
| @@ -207,7 +207,7 @@ void ledger_processor::state_block_impl (rai::state_block const & block_a) | |
| result.code = block_a.hashables.account.is_zero () ? rai::process_result::opened_burn_account : rai::process_result::progress; // Is this for the burn account? (Unambiguous) | |
| if (result.code == rai::process_result::progress) | |
| { | |
| - uint8_t account_version (0); | |
| + uint16_t account_version (0); | |
| rai::account_info info; | |
| result.amount = block_a.hashables.balance; | |
| auto is_send (false); | |
| @@ -884,7 +884,7 @@ void rai::ledger::checksum_update (MDB_txn * transaction_a, rai::block_hash cons | |
| store.checksum_put (transaction_a, 0, 0, value); | |
| } | |
| -void rai::ledger::change_latest (MDB_txn * transaction_a, rai::account const & account_a, rai::block_hash const & hash_a, rai::block_hash const & rep_block_a, rai::amount const & balance_a, uint64_t block_count_a, bool is_state, uint8_t version_a) | |
| +void rai::ledger::change_latest (MDB_txn * transaction_a, rai::account const & account_a, rai::block_hash const & hash_a, rai::block_hash const & rep_block_a, rai::amount const & balance_a, uint64_t block_count_a, bool is_state, uint16_t version_a) | |
| { | |
| rai::account_info info; | |
| auto exists (!store.account_get (transaction_a, account_a, info)); | |
| diff --git a/rai/ledger.hpp b/rai/ledger.hpp | |
| index c549d100..eb7c6041 100644 | |
| --- a/rai/ledger.hpp | |
| +++ b/rai/ledger.hpp | |
| @@ -41,7 +41,7 @@ public: | |
| rai::block_hash block_source (MDB_txn *, rai::block const &); | |
| rai::process_return process (MDB_txn *, rai::block const &); | |
| void rollback (MDB_txn *, rai::block_hash const &); | |
| - void change_latest (MDB_txn *, rai::account const &, rai::block_hash const &, rai::account const &, rai::uint128_union const &, uint64_t, bool = false, uint8_t = 0); | |
| + void change_latest (MDB_txn *, rai::account const &, rai::block_hash const &, rai::account const &, rai::uint128_union const &, uint64_t, bool = false, uint16_t = 0); | |
| void checksum_update (MDB_txn *, rai::block_hash const &); | |
| rai::checksum checksum (MDB_txn *, rai::account const &, rai::account const &); | |
| void dump_account_chain (rai::account const &); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/rai/blockstore.cpp b/rai/blockstore.cpp | |
| index 335edfe3..ecb79b68 100644 | |
| --- a/rai/blockstore.cpp | |
| +++ b/rai/blockstore.cpp | |
| @@ -560,7 +560,8 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.push_back (0); // version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + auto status (mdb_put (transaction_a, accounts, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -573,7 +574,8 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.push_back (0); // min_version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + auto status (mdb_put (transaction_a, pending, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -586,7 +588,9 @@ void rai::block_store::upgrade_v11_to_v12 (MDB_txn * transaction_a) | |
| { | |
| std::vector<uint8_t> bytes ((uint8_t *)i->second.data (), (uint8_t *)i->second.data () + i->second.size ()); | |
| bytes.insert (bytes.begin () + rai::state_block::size, 0); // version field | |
| - mdb_cursor_put (i.cursor, i->first, rai::mdb_val (bytes.size (), bytes.data ()), MDB_CURRENT); | |
| + bytes.insert (bytes.begin () + rai::state_block::size, 0); | |
| + auto status (mdb_put (transaction_a, state_blocks, i->first, rai::mdb_val (bytes.size (), bytes.data ()), 0)); | |
| + assert (status == 0); | |
| } | |
| else | |
| { | |
| @@ -609,7 +613,7 @@ rai::uint128_t rai::block_store::block_balance (MDB_txn * transaction_a, rai::bl | |
| return visitor.balance; | |
| } | |
| -uint8_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_hash const & hash_a) | |
| +uint16_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_hash const & hash_a) | |
| { | |
| rai::block_type type; | |
| rai::mdb_val value; | |
| @@ -618,8 +622,8 @@ uint8_t rai::block_store::block_version (MDB_txn * transaction_a, rai::block_has | |
| uint8_t result (0); | |
| if (status == 0) | |
| { | |
| - assert (value.size () > rai::state_block::size); | |
| - result = *(reinterpret_cast<uint8_t const *> (value.data ()) + rai::state_block::size); | |
| + assert (value.size () >= rai::state_block::size + 2); | |
| + result = *(reinterpret_cast<uint16_t const *> (reinterpret_cast<uint8_t const *> (value.data ()) + rai::state_block::size)); | |
| } | |
| return result; | |
| } | |
| @@ -666,7 +670,7 @@ void rai::block_store::block_put_raw (MDB_txn * transaction_a, MDB_dbi database_ | |
| assert (status2 == 0); | |
| } | |
| -void rai::block_store::block_put (MDB_txn * transaction_a, rai::block_hash const & hash_a, rai::block const & block_a, rai::block_hash const & successor_a, uint8_t version_a) | |
| +void rai::block_store::block_put (MDB_txn * transaction_a, rai::block_hash const & hash_a, rai::block const & block_a, rai::block_hash const & successor_a, uint16_t version_a) | |
| { | |
| assert (successor_a.is_zero () || block_exists (transaction_a, successor_a)); | |
| if (block_a.type () != rai::block_type::state) | |
| diff --git a/rai/blockstore.hpp b/rai/blockstore.hpp | |
| index ab1025eb..313a8c6d 100644 | |
| --- a/rai/blockstore.hpp | |
| +++ b/rai/blockstore.hpp | |
| @@ -38,7 +38,7 @@ public: | |
| MDB_dbi block_database (rai::block_type); | |
| void block_put_raw (MDB_txn *, MDB_dbi, rai::block_hash const &, MDB_val); | |
| - void block_put (MDB_txn *, rai::block_hash const &, rai::block const &, rai::block_hash const & = rai::block_hash (0), uint8_t version = 0); | |
| + void block_put (MDB_txn *, rai::block_hash const &, rai::block const &, rai::block_hash const & = rai::block_hash (0), uint16_t version = 0); | |
| MDB_val block_get_raw (MDB_txn *, rai::block_hash const &, rai::block_type &); | |
| rai::block_hash block_successor (MDB_txn *, rai::block_hash const &); | |
| void block_successor_clear (MDB_txn *, rai::block_hash const &); | |
| @@ -79,7 +79,7 @@ public: | |
| rai::store_iterator block_info_begin (MDB_txn *); | |
| rai::store_iterator block_info_end (); | |
| rai::uint128_t block_balance (MDB_txn *, rai::block_hash const &); | |
| - uint8_t block_version (MDB_txn *, rai::block_hash const &); | |
| + uint16_t block_version (MDB_txn *, rai::block_hash const &); | |
| static size_t const block_info_max = 32; | |
| rai::uint128_t representation_get (MDB_txn *, rai::account const &); | |
| diff --git a/rai/common.cpp b/rai/common.cpp | |
| index 891634d4..a0a1d122 100644 | |
| --- a/rai/common.cpp | |
| +++ b/rai/common.cpp | |
| @@ -302,7 +302,7 @@ rai::pending_info::pending_info (MDB_val const & val_a) | |
| std::copy (reinterpret_cast<uint8_t const *> (val_a.mv_data), reinterpret_cast<uint8_t const *> (val_a.mv_data) + sizeof (*this), reinterpret_cast<uint8_t *> (this)); | |
| } | |
| -rai::pending_info::pending_info (rai::account const & source_a, rai::amount const & amount_a, uint8_t min_version_a) : | |
| +rai::pending_info::pending_info (rai::account const & source_a, rai::amount const & amount_a, uint16_t min_version_a) : | |
| source (source_a), | |
| amount (amount_a), | |
| min_version (min_version_a) | |
| diff --git a/rai/common.hpp b/rai/common.hpp | |
| index 95f80311..68e089b6 100644 | |
| --- a/rai/common.hpp | |
| +++ b/rai/common.hpp | |
| @@ -130,7 +130,7 @@ public: | |
| /** Seconds since posix epoch */ | |
| uint64_t modified; | |
| uint64_t block_count; | |
| - uint8_t version; | |
| + uint16_t version; | |
| }; | |
| #pragma pack(pop) | |
| @@ -143,14 +143,14 @@ class pending_info | |
| public: | |
| pending_info (); | |
| pending_info (MDB_val const &); | |
| - pending_info (rai::account const &, rai::amount const &, uint8_t); | |
| + pending_info (rai::account const &, rai::amount const &, uint16_t); | |
| void serialize (rai::stream &) const; | |
| bool deserialize (rai::stream &); | |
| bool operator== (rai::pending_info const &) const; | |
| rai::mdb_val val () const; | |
| rai::account source; | |
| rai::amount amount; | |
| - uint8_t min_version; | |
| + uint16_t min_version; | |
| }; | |
| #pragma pack(pop) | |
| class pending_key | |
| diff --git a/rai/ledger.cpp b/rai/ledger.cpp | |
| index c657923d..c78d1e35 100644 | |
| --- a/rai/ledger.cpp | |
| +++ b/rai/ledger.cpp | |
| @@ -207,7 +207,7 @@ void ledger_processor::state_block_impl (rai::state_block const & block_a) | |
| result.code = block_a.hashables.account.is_zero () ? rai::process_result::opened_burn_account : rai::process_result::progress; // Is this for the burn account? (Unambiguous) | |
| if (result.code == rai::process_result::progress) | |
| { | |
| - uint8_t account_version (0); | |
| + uint16_t account_version (0); | |
| rai::account_info info; | |
| result.amount = block_a.hashables.balance; | |
| auto is_send (false); | |
| @@ -884,7 +884,7 @@ void rai::ledger::checksum_update (MDB_txn * transaction_a, rai::block_hash cons | |
| store.checksum_put (transaction_a, 0, 0, value); | |
| } | |
| -void rai::ledger::change_latest (MDB_txn * transaction_a, rai::account const & account_a, rai::block_hash const & hash_a, rai::block_hash const & rep_block_a, rai::amount const & balance_a, uint64_t block_count_a, bool is_state, uint8_t version_a) | |
| +void rai::ledger::change_latest (MDB_txn * transaction_a, rai::account const & account_a, rai::block_hash const & hash_a, rai::block_hash const & rep_block_a, rai::amount const & balance_a, uint64_t block_count_a, bool is_state, uint16_t version_a) | |
| { | |
| rai::account_info info; | |
| auto exists (!store.account_get (transaction_a, account_a, info)); | |
| diff --git a/rai/ledger.hpp b/rai/ledger.hpp | |
| index c549d100..eb7c6041 100644 | |
| --- a/rai/ledger.hpp | |
| +++ b/rai/ledger.hpp | |
| @@ -41,7 +41,7 @@ public: | |
| rai::block_hash block_source (MDB_txn *, rai::block const &); | |
| rai::process_return process (MDB_txn *, rai::block const &); | |
| void rollback (MDB_txn *, rai::block_hash const &); | |
| - void change_latest (MDB_txn *, rai::account const &, rai::block_hash const &, rai::account const &, rai::uint128_union const &, uint64_t, bool = false, uint8_t = 0); | |
| + void change_latest (MDB_txn *, rai::account const &, rai::block_hash const &, rai::account const &, rai::uint128_union const &, uint64_t, bool = false, uint16_t = 0); | |
| void checksum_update (MDB_txn *, rai::block_hash const &); | |
| rai::checksum checksum (MDB_txn *, rai::account const &, rai::account const &); | |
| void dump_account_chain (rai::account const &); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment