diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index f516b24a..e9cf60db 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -7,6 +7,7 @@ #define BLOCK_MAJOR_VERSION_1 1 #define BLOCK_MAJOR_VERSION_2 2 +#define BLOCK_MAJOR_VERSION_3 3 #define COIN ((uint64_t)100000000) // pow(10, 8) #define DEFAULT_FEE ((uint64_t)1000000) // pow(10, 6) diff --git a/src/cryptonote_core/cryptonote_basic.h b/src/cryptonote_core/cryptonote_basic.h index d59e37b7..e7e47012 100644 --- a/src/cryptonote_core/cryptonote_basic.h +++ b/src/cryptonote_core/cryptonote_basic.h @@ -456,7 +456,7 @@ namespace cryptonote BEGIN_SERIALIZE() VARINT_FIELD(major_version) - if(major_version > BLOCK_MAJOR_VERSION_2) return false; + if(major_version > BLOCK_MAJOR_VERSION_3) return false; VARINT_FIELD(minor_version) if (BLOCK_MAJOR_VERSION_1 == major_version) { @@ -479,7 +479,7 @@ namespace cryptonote BEGIN_SERIALIZE_OBJECT() FIELDS(*static_cast(this)) - if (BLOCK_MAJOR_VERSION_2 <= major_version) + if (BLOCK_MAJOR_VERSION_3 <= major_version) { auto sbb = make_serializable_bytecoin_block(*this, false, false); FIELD_N("parent_block", sbb); diff --git a/src/cryptonote_core/cryptonote_format_utils.cpp b/src/cryptonote_core/cryptonote_format_utils.cpp index 7d8562b3..1dcedc92 100644 --- a/src/cryptonote_core/cryptonote_format_utils.cpp +++ b/src/cryptonote_core/cryptonote_format_utils.cpp @@ -650,7 +650,7 @@ namespace cryptonote if (!get_block_hashing_blob(b, blob)) return false; - if (BLOCK_MAJOR_VERSION_2 <= b.major_version) + if (BLOCK_MAJOR_VERSION_3 <= b.major_version) { blobdata parent_blob; auto sbb = make_serializable_bytecoin_block(b, true, false); @@ -860,7 +860,7 @@ namespace cryptonote //--------------------------------------------------------------- bool check_proof_of_work_v2(const block& bl, difficulty_type current_diffic, crypto::hash& proof_of_work) { - if (BLOCK_MAJOR_VERSION_2 != bl.major_version) + if (BLOCK_MAJOR_VERSION_2 != bl.major_version || BLOCK_MAJOR_VERSION_3 != bl.major_version ) return false; if (!get_bytecoin_block_longhash(bl, proof_of_work)) @@ -900,6 +900,7 @@ namespace cryptonote { case BLOCK_MAJOR_VERSION_1: return check_proof_of_work_v1(bl, current_diffic, proof_of_work); case BLOCK_MAJOR_VERSION_2: return check_proof_of_work_v2(bl, current_diffic, proof_of_work); + case BLOCK_MAJOR_VERSION_3: return check_proof_of_work_v2(bl, current_diffic, proof_of_work); } CHECK_AND_ASSERT_MES(false, false, "unknown block major version: " << bl.major_version << "." << bl.minor_version); diff --git a/src/main.cc b/src/main.cc index 99e97c9a..6adff0f0 100644 --- a/src/main.cc +++ b/src/main.cc @@ -163,7 +163,7 @@ Handle construct_block_blob(const Arguments& args) { return except("Failed to parse block"); b.nonce = nonce; - if (b.major_version == BLOCK_MAJOR_VERSION_2) { + if (b.major_version == BLOCK_MAJOR_VERSION_2 || b.major_version == BLOCK_MAJOR_VERSION_3) { block parent_block; b.parent_block.nonce = nonce; if (!construct_parent_block(b, parent_block))