diff --git a/.gitignore b/.gitignore index 3db117d49..a537f9f1c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ scripts/deps /CMakeLists.txt.user /.idea /src/backend/opencl/cl/cn/cryptonight_gen.cl +.vscode diff --git a/src/base/tools/cryptonote/BlockTemplate.cpp b/src/base/tools/cryptonote/BlockTemplate.cpp index 310fedf4d..27557e024 100644 --- a/src/base/tools/cryptonote/BlockTemplate.cpp +++ b/src/base/tools/cryptonote/BlockTemplate.cpp @@ -241,8 +241,13 @@ bool xmrig::BlockTemplate::parse(bool hashes) ar(m_amount); ar(m_outputType); - // output type must be txout_to_key (2) or txout_to_tagged_key (3) - if ((m_outputType != 2) && (m_outputType != 3)) { + const bool is_fcmp_pp = (m_coin == Coin::MONERO) && (m_version.first >= 18); + + // output type must be txout_to_key (2) or txout_to_tagged_key (3) for versions < 18, and txout_to_carrot_v1 (0) for version FCMP++ + if (is_fcmp_pp && (m_outputType == 0)) { + // all good + } + else if ((m_outputType != 2) && (m_outputType != 3)) { return false; } @@ -250,6 +255,11 @@ bool xmrig::BlockTemplate::parse(bool hashes) ar(m_ephPublicKey, kKeySize); + if (is_fcmp_pp) { + ar(m_carrotViewTag); + ar(m_janusAnchor); + } + if (m_coin == Coin::ZEPHYR) { if (m_outputType != 2) { return false; diff --git a/src/base/tools/cryptonote/BlockTemplate.h b/src/base/tools/cryptonote/BlockTemplate.h index c731aad23..a4e75f3ff 100644 --- a/src/base/tools/cryptonote/BlockTemplate.h +++ b/src/base/tools/cryptonote/BlockTemplate.h @@ -148,6 +148,8 @@ private: Buffer m_hashes; Buffer m_minerTxMerkleTreeBranch; uint8_t m_rootHash[kHashSize]{}; + uint8_t m_carrotViewTag[3]{}; + uint8_t m_janusAnchor[16]{}; };