return false;
}
- // Coinbase output should be empty if proof-of-stake block
+ // Coinbase output must be empty if proof-of-stake block
if (vtx[0].vout.Length != 1 || !vtx[0].vout[0].IsEmpty)
{
return false;
// Check proof-of-stake block signature
if (fCheckSig && !SignatureOK)
{
- return false;
+ return false; // Proof-of-Stake signature checking failure.
}
if (!vtx[1].CheckTransaction())
return true;
}
- private bool CheckProofOfWork(uint256 hash, uint nBits)
+ private static bool CheckProofOfWork(uint256 hash, uint nBits)
{
uint256 nTarget = new uint256();
nTarget.Compact = nBits;
return nSubsidy;
}
- }
+
+ public Tuple<COutPoint, uint> ProofOfStake
+ {
+ get { return IsProofOfStake ? new Tuple<COutPoint, uint>(vtx[1].vin[0].prevout, vtx[1].nTime) : new Tuple<COutPoint, uint>(new COutPoint(), 0); }
+ }
+
+}
}