public Block AttachBlockFee(Block block, Node speaker) { if (block.Transactions == null) { throw new Exception("AttachBlockFee: Block transactions is null."); } if (block.Transactions.Count > 0 && block.Transactions.Last() is TransactionBlockFee) { throw new Exception("Fee already attached to this block"); } TransactionBlockFee blockFeeTx = new TransactionBlockFee(); blockFeeTx.Nonce = block.Header.Index; //Nonce of block fee is block index for block fee to standardize across all nodes without network transfer blockFeeTx.TotalFee = block.Transactions.Sum(x => x.Fee); blockFeeTx.ToAddress = speaker.WalletAddress; blockFeeTx.TransactionId = GenerateTransactionId(blockFeeTx); blockFeeTx.Type = blockFeeTx.GetType().Name; block.Transactions.Add(blockFeeTx); block.Header.TransactionCount += 1; block.Header.Hash = HashBlockHeaderAndTransactions(block.Header, block.Transactions); return(block); }
public void AddToFeeIndex(TransactionBlockFee record) { UpdateBalanceIndex(ReservedAddresses.FeeWallet, record.ToAddress, nativeToken, record.TotalFee); }