mirror of
https://github.com/monero-project/monero.git
synced 2024-11-18 00:37:43 +00:00
blockchain: reject rct signatures in coinbase txes from v12
This commit is contained in:
parent
555dc7c394
commit
d22dfb7594
2 changed files with 8 additions and 0 deletions
|
@ -152,6 +152,7 @@
|
||||||
#define HF_VERSION_MIN_2_OUTPUTS 12
|
#define HF_VERSION_MIN_2_OUTPUTS 12
|
||||||
#define HF_VERSION_MIN_V2_COINBASE_TX 12
|
#define HF_VERSION_MIN_V2_COINBASE_TX 12
|
||||||
#define HF_VERSION_SAME_MIXIN 12
|
#define HF_VERSION_SAME_MIXIN 12
|
||||||
|
#define HF_VERSION_REJECT_SIGS_IN_COINBASE 12
|
||||||
|
|
||||||
#define PER_KB_FEE_QUANTIZATION_DECIMALS 8
|
#define PER_KB_FEE_QUANTIZATION_DECIMALS 8
|
||||||
|
|
||||||
|
|
|
@ -1208,6 +1208,13 @@ bool Blockchain::prevalidate_miner_transaction(const block& b, uint64_t height,
|
||||||
CHECK_AND_ASSERT_MES(b.miner_tx.vin.size() == 1, false, "coinbase transaction in the block has no inputs");
|
CHECK_AND_ASSERT_MES(b.miner_tx.vin.size() == 1, false, "coinbase transaction in the block has no inputs");
|
||||||
CHECK_AND_ASSERT_MES(b.miner_tx.vin[0].type() == typeid(txin_gen), false, "coinbase transaction in the block has the wrong type");
|
CHECK_AND_ASSERT_MES(b.miner_tx.vin[0].type() == typeid(txin_gen), false, "coinbase transaction in the block has the wrong type");
|
||||||
CHECK_AND_ASSERT_MES(b.miner_tx.version > 1 || hf_version < HF_VERSION_MIN_V2_COINBASE_TX, false, "Invalid coinbase transaction version");
|
CHECK_AND_ASSERT_MES(b.miner_tx.version > 1 || hf_version < HF_VERSION_MIN_V2_COINBASE_TX, false, "Invalid coinbase transaction version");
|
||||||
|
|
||||||
|
// for v2 txes (ringct), we only accept empty rct signatures for miner transactions,
|
||||||
|
if (hf_version >= HF_VERSION_REJECT_SIGS_IN_COINBASE && b.miner_tx.version >= 2)
|
||||||
|
{
|
||||||
|
CHECK_AND_ASSERT_MES(b.miner_tx.rct_signatures.type == rct::RCTTypeNull, false, "RingCT signatures not allowed in coinbase transactions");
|
||||||
|
}
|
||||||
|
|
||||||
if(boost::get<txin_gen>(b.miner_tx.vin[0]).height != height)
|
if(boost::get<txin_gen>(b.miner_tx.vin[0]).height != height)
|
||||||
{
|
{
|
||||||
MWARNING("The miner transaction in block has invalid height: " << boost::get<txin_gen>(b.miner_tx.vin[0]).height << ", expected: " << height);
|
MWARNING("The miner transaction in block has invalid height: " << boost::get<txin_gen>(b.miner_tx.vin[0]).height << ", expected: " << height);
|
||||||
|
|
Loading…
Reference in a new issue