@@ -26,6 +26,7 @@ bool operator==(const Coin &a, const Coin &b) {
26
26
// Empty Coin objects are always equal.
27
27
if (a.IsSpent () && b.IsSpent ()) return true ;
28
28
return a.fCoinBase == b.fCoinBase &&
29
+ a.fCoinStake == b.fCoinStake &&
29
30
a.nHeight == b.nHeight &&
30
31
a.out == b.out ;
31
32
}
@@ -372,7 +373,7 @@ BOOST_AUTO_TEST_CASE(updatecoins_simulation_test)
372
373
// Update the expected result to know about the new output coins
373
374
assert (tx.vout .size () == 1 );
374
375
const COutPoint outpoint (tx.GetHash (), 0 );
375
- result[outpoint] = Coin (tx.vout [0 ], height, CTransaction (tx).IsCoinBase ());
376
+ result[outpoint] = Coin (tx.vout [0 ], height, CTransaction (tx).IsCoinBase (), CTransaction (tx). IsCoinStake () );
376
377
377
378
// Call UpdateCoins on the top cache
378
379
CTxUndo undo;
@@ -707,7 +708,7 @@ BOOST_AUTO_TEST_CASE(ccoins_spend)
707
708
CheckSpendCoins (VALUE1, VALUE2, ABSENT, DIRTY|FRESH, NO_ENTRY );
708
709
}
709
710
710
- void CheckAddCoinBase (CAmount base_value, CAmount cache_value, CAmount modify_value, CAmount expected_value, char cache_flags, char expected_flags, bool coinbase)
711
+ void CheckAddCoinBase (CAmount base_value, CAmount cache_value, CAmount modify_value, CAmount expected_value, char cache_flags, char expected_flags, bool coinbase, bool coinstake )
711
712
{
712
713
SingleEntryCacheTest test (base_value, cache_value, cache_flags);
713
714
@@ -716,7 +717,7 @@ void CheckAddCoinBase(CAmount base_value, CAmount cache_value, CAmount modify_va
716
717
try {
717
718
CTxOut output;
718
719
output.nValue = modify_value;
719
- test.cache .AddCoin (OUTPOINT, Coin (std::move (output), 1 , coinbase), coinbase);
720
+ test.cache .AddCoin (OUTPOINT, Coin (std::move (output), 1 , coinbase, coinstake ), coinbase);
720
721
test.cache .SelfTest ();
721
722
GetCoinsMapEntry (test.cache .map (), result_value, result_flags);
722
723
} catch (std::logic_error& e) {
@@ -750,24 +751,24 @@ BOOST_AUTO_TEST_CASE(ccoins_add)
750
751
* Cache Write Result Cache Result potential_overwrite
751
752
* Value Value Value Flags Flags
752
753
*/
753
- CheckAddCoin (ABSENT, VALUE3, VALUE3, NO_ENTRY , DIRTY|FRESH, false );
754
- CheckAddCoin (ABSENT, VALUE3, VALUE3, NO_ENTRY , DIRTY , true );
755
- CheckAddCoin (PRUNED, VALUE3, VALUE3, 0 , DIRTY|FRESH, false );
756
- CheckAddCoin (PRUNED, VALUE3, VALUE3, 0 , DIRTY , true );
757
- CheckAddCoin (PRUNED, VALUE3, VALUE3, FRESH , DIRTY|FRESH, false );
758
- CheckAddCoin (PRUNED, VALUE3, VALUE3, FRESH , DIRTY|FRESH, true );
759
- CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY , DIRTY , false );
760
- CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY , DIRTY , true );
761
- CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, false );
762
- CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, true );
763
- CheckAddCoin (VALUE2, VALUE3, FAIL , 0 , NO_ENTRY , false );
764
- CheckAddCoin (VALUE2, VALUE3, VALUE3, 0 , DIRTY , true );
765
- CheckAddCoin (VALUE2, VALUE3, FAIL , FRESH , NO_ENTRY , false );
766
- CheckAddCoin (VALUE2, VALUE3, VALUE3, FRESH , DIRTY|FRESH, true );
767
- CheckAddCoin (VALUE2, VALUE3, FAIL , DIRTY , NO_ENTRY , false );
768
- CheckAddCoin (VALUE2, VALUE3, VALUE3, DIRTY , DIRTY , true );
769
- CheckAddCoin (VALUE2, VALUE3, FAIL , DIRTY|FRESH, NO_ENTRY , false );
770
- CheckAddCoin (VALUE2, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, true );
754
+ CheckAddCoin (ABSENT, VALUE3, VALUE3, NO_ENTRY , DIRTY|FRESH, false , false );
755
+ CheckAddCoin (ABSENT, VALUE3, VALUE3, NO_ENTRY , DIRTY , true , false );
756
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, 0 , DIRTY|FRESH, false , false );
757
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, 0 , DIRTY , true , false );
758
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, FRESH , DIRTY|FRESH, false , false );
759
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, FRESH , DIRTY|FRESH, true , false );
760
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY , DIRTY , false , false );
761
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY , DIRTY , true , false );
762
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, false , false );
763
+ CheckAddCoin (PRUNED, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, true , false );
764
+ CheckAddCoin (VALUE2, VALUE3, FAIL , 0 , NO_ENTRY , false , false );
765
+ CheckAddCoin (VALUE2, VALUE3, VALUE3, 0 , DIRTY , true , false );
766
+ CheckAddCoin (VALUE2, VALUE3, FAIL , FRESH , NO_ENTRY , false , false );
767
+ CheckAddCoin (VALUE2, VALUE3, VALUE3, FRESH , DIRTY|FRESH, true , false );
768
+ CheckAddCoin (VALUE2, VALUE3, FAIL , DIRTY , NO_ENTRY , false , false );
769
+ CheckAddCoin (VALUE2, VALUE3, VALUE3, DIRTY , DIRTY , true , false );
770
+ CheckAddCoin (VALUE2, VALUE3, FAIL , DIRTY|FRESH, NO_ENTRY , false , false );
771
+ CheckAddCoin (VALUE2, VALUE3, VALUE3, DIRTY|FRESH, DIRTY|FRESH, true , false );
771
772
}
772
773
773
774
void CheckWriteCoins (CAmount parent_value, CAmount child_value, CAmount expected_value, char parent_flags, char child_flags, char expected_flags)
0 commit comments