diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index 9dccf4a..fac0caa 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -3,10 +3,11 @@ #define CURRENT_TRANSACTION_VERSION 1 enum BLOB_TYPE { - BLOB_TYPE_CRYPTONOTE = 0, - BLOB_TYPE_FORKNOTE1 = 1, - BLOB_TYPE_FORKNOTE2 = 2, - BLOB_TYPE_CRYPTONOTE2 = 3, // Masari - BLOB_TYPE_CRYPTONOTE_RYO = 4, // Ryo + BLOB_TYPE_CRYPTONOTE = 0, + BLOB_TYPE_FORKNOTE1 = 1, + BLOB_TYPE_FORKNOTE2 = 2, + BLOB_TYPE_CRYPTONOTE2 = 3, // Masari + BLOB_TYPE_CRYPTONOTE_RYO = 4, // Ryo BLOB_TYPE_CRYPTONOTE_LOKI = 5, // Loki + BLOB_TYPE_CRYPTONOTE3 = 6, // Masari }; \ No newline at end of file diff --git a/src/cryptonote_core/cryptonote_basic.h b/src/cryptonote_core/cryptonote_basic.h index a7e2ac1..83e94c6 100644 --- a/src/cryptonote_core/cryptonote_basic.h +++ b/src/cryptonote_core/cryptonote_basic.h @@ -398,6 +398,7 @@ namespace cryptonote transaction miner_tx; std::vector tx_hashes; + mutable crypto::hash uncle = cryptonote::null_hash; void set_blob_type(enum BLOB_TYPE bt) { miner_tx.blob_type = blob_type = bt; } @@ -410,6 +411,10 @@ namespace cryptonote } FIELD(miner_tx) FIELD(tx_hashes) + if (blob_type == BLOB_TYPE_CRYPTONOTE3) + { + FIELD(uncle) + } END_SERIALIZE() }; diff --git a/src/cryptonote_core/cryptonote_format_utils.cpp b/src/cryptonote_core/cryptonote_format_utils.cpp index d66dc5d..bf51cfd 100644 --- a/src/cryptonote_core/cryptonote_format_utils.cpp +++ b/src/cryptonote_core/cryptonote_format_utils.cpp @@ -433,7 +433,9 @@ namespace cryptonote crypto::hash tree_root_hash = get_tx_tree_hash(b); blob.append(reinterpret_cast(&tree_root_hash), sizeof(tree_root_hash)); blob.append(tools::get_varint_data(b.tx_hashes.size()+1)); - + if (b.blob_type == BLOB_TYPE_CRYPTONOTE3) { + blob.append(reinterpret_cast(&b.uncle), sizeof(b.uncle)); + } return true; } //---------------------------------------------------------------