|
|
@ -119,7 +119,8 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
{ |
|
|
|
{ |
|
|
|
tx.vout[0].nValue -= 1000000; |
|
|
|
tx.vout[0].nValue -= 1000000; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
bool spendsCoinbase = (i == 0) ? true : false; // only first tx spends coinbase
|
|
|
|
|
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(spendsCoinbase).FromTx(tx)); |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
} |
|
|
|
} |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
@ -139,7 +140,8 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
{ |
|
|
|
{ |
|
|
|
tx.vout[0].nValue -= 10000000; |
|
|
|
tx.vout[0].nValue -= 10000000; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
bool spendsCoinbase = (i == 0) ? true : false; // only first tx spends coinbase
|
|
|
|
|
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(spendsCoinbase).FromTx(tx)); |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
} |
|
|
|
} |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
@ -158,7 +160,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx.vin[0].prevout.hash = txFirst[1]->GetHash(); |
|
|
|
tx.vin[0].prevout.hash = txFirst[1]->GetHash(); |
|
|
|
tx.vout[0].nValue = 4900000000LL; |
|
|
|
tx.vout[0].nValue = 4900000000LL; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin.resize(2); |
|
|
|
tx.vin.resize(2); |
|
|
|
tx.vin[1].scriptSig = CScript() << OP_1; |
|
|
|
tx.vin[1].scriptSig = CScript() << OP_1; |
|
|
@ -166,7 +168,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx.vin[1].prevout.n = 0; |
|
|
|
tx.vin[1].prevout.n = 0; |
|
|
|
tx.vout[0].nValue = 5900000000LL; |
|
|
|
tx.vout[0].nValue = 5900000000LL; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
delete pblocktemplate; |
|
|
|
delete pblocktemplate; |
|
|
|
mempool.clear(); |
|
|
|
mempool.clear(); |
|
|
@ -177,7 +179,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx.vin[0].scriptSig = CScript() << OP_0 << OP_1; |
|
|
|
tx.vin[0].scriptSig = CScript() << OP_0 << OP_1; |
|
|
|
tx.vout[0].nValue = 0; |
|
|
|
tx.vout[0].nValue = 0; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(false).FromTx(tx)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
delete pblocktemplate; |
|
|
|
delete pblocktemplate; |
|
|
|
mempool.clear(); |
|
|
|
mempool.clear(); |
|
|
@ -190,12 +192,12 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
script = CScript() << OP_0; |
|
|
|
script = CScript() << OP_0; |
|
|
|
tx.vout[0].scriptPubKey = GetScriptForDestination(CScriptID(script)); |
|
|
|
tx.vout[0].scriptPubKey = GetScriptForDestination(CScriptID(script)); |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin[0].prevout.hash = hash; |
|
|
|
tx.vin[0].scriptSig = CScript() << (std::vector<unsigned char>)script; |
|
|
|
tx.vin[0].scriptSig = CScript() << (std::vector<unsigned char>)script; |
|
|
|
tx.vout[0].nValue -= 1000000; |
|
|
|
tx.vout[0].nValue -= 1000000; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(false).FromTx(tx)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
delete pblocktemplate; |
|
|
|
delete pblocktemplate; |
|
|
|
mempool.clear(); |
|
|
|
mempool.clear(); |
|
|
@ -206,10 +208,10 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx.vout[0].nValue = 4900000000LL; |
|
|
|
tx.vout[0].nValue = 4900000000LL; |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_2; |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_2; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
delete pblocktemplate; |
|
|
|
delete pblocktemplate; |
|
|
|
mempool.clear(); |
|
|
|
mempool.clear(); |
|
|
@ -235,7 +237,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
tx.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
tx.nLockTime = chainActive.Tip()->nHeight+1; |
|
|
|
tx.nLockTime = chainActive.Tip()->nHeight+1; |
|
|
|
hash = tx.GetHash(); |
|
|
|
hash = tx.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx)); |
|
|
|
BOOST_CHECK(!CheckFinalTx(tx, LOCKTIME_MEDIAN_TIME_PAST)); |
|
|
|
BOOST_CHECK(!CheckFinalTx(tx, LOCKTIME_MEDIAN_TIME_PAST)); |
|
|
|
|
|
|
|
|
|
|
|
// time locked
|
|
|
|
// time locked
|
|
|
@ -249,7 +251,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) |
|
|
|
tx2.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
tx2.vout[0].scriptPubKey = CScript() << OP_1; |
|
|
|
tx2.nLockTime = chainActive.Tip()->GetMedianTimePast()+1; |
|
|
|
tx2.nLockTime = chainActive.Tip()->GetMedianTimePast()+1; |
|
|
|
hash = tx2.GetHash(); |
|
|
|
hash = tx2.GetHash(); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).FromTx(tx2)); |
|
|
|
mempool.addUnchecked(hash, entry.Time(GetTime()).SpendsCoinbase(true).FromTx(tx2)); |
|
|
|
BOOST_CHECK(!CheckFinalTx(tx2, LOCKTIME_MEDIAN_TIME_PAST)); |
|
|
|
BOOST_CHECK(!CheckFinalTx(tx2, LOCKTIME_MEDIAN_TIME_PAST)); |
|
|
|
|
|
|
|
|
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|
BOOST_CHECK(pblocktemplate = CreateNewBlock(chainparams, scriptPubKey)); |
|
|
|