protected override void PrepareFinalElectionContext(long currentBlockId, AccountId miningAccountId, FinalElectionResultDistillate finalResultDistillateEntry, IFinalElectionResults finalElectionResult, IBlock currentBlock) { base.PrepareFinalElectionContext(currentBlockId, miningAccountId, finalResultDistillateEntry, finalElectionResult, currentBlock); if (finalElectionResult is INeuraliumFinalElectionResults neuraliumSimpleFinalElectionResults && finalResultDistillateEntry is NeuraliumFinalElectionResultDistillate neuraliumFinalElectionContext) { if (neuraliumSimpleFinalElectionResults.ElectedCandidates[miningAccountId] is INeuraliumElectedResults neuraliumElectedResults) { neuraliumFinalElectionContext.BountyShare = neuraliumElectedResults.BountyShare; var tippingTransactions = currentBlock.GetAllConfirmedTransactions().Where(t => neuraliumElectedResults.Transactions.Contains(t.Key)).Select(t => t.Value).OfType <ITipTransaction>().Select(t => t.Tip).ToList(); if (tippingTransactions.Any()) { neuraliumFinalElectionContext.TransactionTips = tippingTransactions.Sum(t => t); } } } }
protected override void ConfirmedPrimeElected(BlockElectionDistillate blockElectionDistillate, FinalElectionResultDistillate finalElectionResultDistillate) { base.ConfirmedPrimeElected(blockElectionDistillate, finalElectionResultDistillate); NeuraliumBlockElectionDistillate neuraliumBlockElectionDistillate = (NeuraliumBlockElectionDistillate)blockElectionDistillate; NeuraliumFinalElectionResultDistillate neuraliumFinalElectionContext = (NeuraliumFinalElectionResultDistillate)finalElectionResultDistillate; this.centralCoordinator.PostSystemEvent(NeuraliumSystemEventGenerator.NeuraliumMiningPrimeElected(blockElectionDistillate.currentBlockId, neuraliumFinalElectionContext.BountyShare, neuraliumFinalElectionContext.TransactionTips, AccountId.FromString(neuraliumFinalElectionContext.DelegateAccountId))); Log.Information($"We were officially announced as a prime elected in Block {blockElectionDistillate.currentBlockId} for the election that was announced in block {blockElectionDistillate.currentBlockId - neuraliumFinalElectionContext.BlockOffset}"); }
protected override MiningHistoryEntry PrepareMiningHistoryEntry(BlockElectionDistillate blockElectionDistillate, FinalElectionResultDistillate finalElectionResultDistillate) { MiningHistoryEntry entry = base.PrepareMiningHistoryEntry(blockElectionDistillate, finalElectionResultDistillate); if (entry is NeuraliumMiningHistoryEntry neuraliumMiningHistoryEntry && finalElectionResultDistillate is NeuraliumFinalElectionResultDistillate neuraliumFinalElectionContext) { neuraliumMiningHistoryEntry.BountyShare = neuraliumFinalElectionContext.BountyShare; neuraliumMiningHistoryEntry.TransactionTips = neuraliumFinalElectionContext.TransactionTips; } return(entry); }