this.logger.LogDebug("Serialized size is {0} bytes, block weight is {1}, number of txs is {2}, tx fees are {3}, number of sigops is {4}.",nSerializeSize,coinviewRule.GetBlockWeight(this.block),this.BlockTx,this.fees,this.BlockSigOpsCost);
this.logger.LogDebug("Serialized size is {0} bytes, block weight is {1}, number of txs is {2}, tx fees are {3}, number of sigops is {4}.",nSerializeSize,coinviewRule.GetBlockWeight(this.block),this.BlockTx,this.fees,this.BlockSigOpsCost);
/// Creates a coinstake transaction with kernel that satisfies POS staking target.
/// Creates a coinstake transaction with kernel that satisfies POS staking target.
/// </summary>
/// </summary>
/// <param name="utxoStakeDescriptions">List of UTXOs that are available in the wallet for staking.</param>
/// <param name="utxoStakeDescriptions">List of UTXOs that are available in the wallet for staking.</param>
/// <param name="block">Template of the block that we are trying to mine.</param>
/// <param name="blockTemplate">Template of the block that we are trying to stake.</param>
/// <param name="chainTip">Tip of the best chain.</param>
/// <param name="chainTip">Tip of the best chain.</param>
/// <param name="searchInterval">Length of an unexplored block time space in seconds. It only makes sense to look for a solution within this interval.</param>
/// <param name="searchInterval">Length of an unexplored block time space in seconds. It only makes sense to look for a solution within this interval.</param>
/// <param name="fees">Transaction fees from the transactions included in the block if we mine it.</param>
/// <param name="fees">Transaction fees from the transactions included in the block if we mine it.</param>
/// <param name="coinstakeContext">Information about coinstake transaction and its private key that is to be filled when the kernel is found.</param>
/// <param name="coinstakeContext">Information about coinstake transaction and its private key that is to be filled when the kernel is found.</param>
/// <returns><c>true</c> if the function succeeds, <c>false</c> otherwise.</returns>
/// <returns><c>true</c> if the function succeeds, <c>false</c> otherwise.</returns>
this.logger.LogDebug("Removing transaction with timestamp {0} as it is greater than coinstake transaction timestamp {1}. New fee amount {2}.",blockTemplate.Block.Transactions[i].Time,coinstakeContext.CoinstakeTx.Time,fees);
// We have to make sure that we have no future timestamps in
// our transactions set.
for(inti=block.Transactions.Count-1;i>=0;i--)
{
if(block.Transactions[i].Time>block.Header.Time)
{
this.logger.LogTrace("Removing transaction with timestamp {0} as it is greater than coinstake transaction timestamp {1}.",block.Transactions[i].Time,block.Header.Time);
this.logger.LogDebug("Removing transaction with timestamp {0} as it is greater than coinstake transaction timestamp {1}. New fee amount {2}.",blockTemplate.Block.Transactions[i].Time,coinstakeContext.CoinstakeTx.Time,fees);