public override ITransactionSelectionMethod CreateTransactionSelectionMethod(TransactionSelectionMethodType type, long blockId, BlockElectionDistillate blockElectionDistillate, IWalletProvider walletProvider, BlockChainConfigurations blockChainConfigurations, BlockchainServiceSet serviceSet) { if (blockElectionDistillate.electionContext is INeuraliumElectionContext neuraliumElectionContext) { if (type == TransactionSelectionMethodTypes.Instance.Automatic) { // ok, this one is meant to be automatic. we wlil try to find the best method //TODO: make this more elaborate. Try to response to the various cues we can use like the declared bounty allocator if (neuraliumElectionContext.BountyAllocationMethod.Version.Type.Value == BountyAllocationMethodTypes.Instance.EqualSplit) { type = NeuraliumTransactionSelectionMethodTypes.Instance.HighestTips; } // the default automatic best choice type = NeuraliumTransactionSelectionMethodTypes.Instance.HighestTips; } if (type == NeuraliumTransactionSelectionMethodTypes.Instance.HighestTips) { // ok, nothing special here, lets just maximize profits by choosing the highest paying transactions return(new NeuraliumHighestTipTransactionSelectionMethod(blockId, neuraliumElectionContext.TransactionTipsAllocationMethod, (INeuraliumWalletProviderProxy)walletProvider, blockElectionDistillate.electionContext.MaximumElectedTransactionCount, ((NeuraliumBlockChainConfigurations)blockChainConfigurations).HighestTipTransactionSelectionStrategySettings, serviceSet.BlockchainTimeService)); } } return(base.CreateTransactionSelectionMethod(type, blockId, blockElectionDistillate, walletProvider, blockChainConfigurations, serviceSet)); }
protected NeuraliumTransactionSelectionMethodTypes() { this.HighestTips = this.CreateChildConstant(); }