diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 74c87b921..d38586cd4 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -3009,21 +3009,6 @@ bool Blockchain::check_tx_outputs(const transaction& tx, tx_verification_context } } - // from v4, forbid invalid pubkeys - if (hf_version >= 4) { - for (const auto &o: tx.vout) { - crypto::public_key output_public_key; - if (!get_output_public_key(o, output_public_key)) { - tvc.m_invalid_output = true; - return false; - } - if (!crypto::check_key(output_public_key)) { - tvc.m_invalid_output = true; - return false; - } - } - } - // from v8, allow bulletproofs if (hf_version < 8) { if (tx.version >= 2) { diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index ee7e643a6..2df72a419 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -1041,6 +1041,8 @@ namespace cryptonote for(const auto& in: tx.vin) { CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false); + if (rct::ki2rct(tokey_in.k_image) == rct::identity()) + return false; if (!(rct::scalarmultKey(rct::ki2rct(tokey_in.k_image), rct::curveOrder()) == rct::identity())) return false; }