public BoostBlockImprovementContextFactory(IManualBlockProductionTrigger blockProductionTrigger, TimeSpan timeout, IBoostRelay boostRelay, IStateReader stateReader)
 {
     _blockProductionTrigger = blockProductionTrigger;
     _timeout     = timeout;
     _boostRelay  = boostRelay;
     _stateReader = stateReader;
 }
Esempio n. 2
0
 public AssembleBlockHandler(IBlockTree blockTree, IManualBlockProductionTrigger blockProductionTrigger, ManualTimestamper timestamper, ILogManager logManager)
 {
     _blockTree = blockTree;
     _blockProductionTrigger = blockProductionTrigger;
     _timestamper            = timestamper;
     _logger = logManager.GetClassLogger();
 }
Esempio n. 3
0
        public void Evm_mine()
        {
            IManualBlockProductionTrigger trigger = Substitute.For <IManualBlockProductionTrigger>();
            EvmModule module   = new EvmModule(trigger);
            string    response = RpcTest.TestSerializedRequest <IEvmModule>(module, "evm_mine");

            Assert.AreEqual("{\"jsonrpc\":\"2.0\",\"result\":true,\"id\":67}", response);
            trigger.Received().BuildBlock();
        }
 public DelayBlockImprovementContext(
     Block currentBestBlock,
     IManualBlockProductionTrigger blockProductionTrigger,
     TimeSpan timeout,
     BlockHeader parentHeader,
     PayloadAttributes payloadAttributes,
     int delay)
 {
     _cancellationTokenSource = new CancellationTokenSource(timeout);
     CurrentBestBlock         = currentBestBlock;
     ImprovementTask          = BuildBlock(blockProductionTrigger, parentHeader, payloadAttributes, delay, _cancellationTokenSource.Token);
 }
 public BlockImprovementContext(
     Block currentBestBlock,
     IManualBlockProductionTrigger blockProductionTrigger,
     TimeSpan timeout,
     BlockHeader parentHeader,
     PayloadAttributes payloadAttributes)
 {
     _cancellationTokenSource = new CancellationTokenSource(timeout);
     CurrentBestBlock         = currentBestBlock;
     ImprovementTask          = blockProductionTrigger
                                .BuildBlock(parentHeader, _cancellationTokenSource.Token, NullBlockTracer.Instance, payloadAttributes)
                                .ContinueWith(SetCurrentBestBlock, _cancellationTokenSource.Token);
 }
 public BoostBlockImprovementContext(
     Block currentBestBlock,
     IManualBlockProductionTrigger blockProductionTrigger,
     TimeSpan timeout,
     BlockHeader parentHeader,
     PayloadAttributes payloadAttributes,
     IBoostRelay boostRelay,
     IStateReader stateReader)
 {
     _boostRelay              = boostRelay;
     _stateReader             = stateReader;
     _cancellationTokenSource = new CancellationTokenSource(timeout);
     CurrentBestBlock         = currentBestBlock;
     ImprovementTask          = StartImprovingBlock(blockProductionTrigger, parentHeader, payloadAttributes, _cancellationTokenSource.Token);
 }
        private async Task <Block?> BuildBlock(
            IManualBlockProductionTrigger blockProductionTrigger,
            BlockHeader parentHeader,
            PayloadAttributes payloadAttributes,
            int delay,
            CancellationToken cancellationToken)
        {
            Block?block = await blockProductionTrigger.BuildBlock(parentHeader, cancellationToken, NullBlockTracer.Instance, payloadAttributes);

            await Task.Delay(delay, cancellationToken);

            if (block is not null)
            {
                CurrentBestBlock = block;
            }

            return(CurrentBestBlock);
        }
    private async Task <Block?> StartImprovingBlock(
        IManualBlockProductionTrigger blockProductionTrigger,
        BlockHeader parentHeader,
        PayloadAttributes payloadAttributes,
        CancellationToken cancellationToken)
    {
        payloadAttributes = await _boostRelay.GetPayloadAttributes(payloadAttributes, cancellationToken);

        UInt256 balanceBefore = _stateReader.GetAccount(parentHeader.StateRoot !, payloadAttributes.SuggestedFeeRecipient)?.Balance ?? UInt256.Zero;
        Block?  block         = await blockProductionTrigger.BuildBlock(parentHeader, cancellationToken, NullBlockTracer.Instance, payloadAttributes);

        if (block is not null)
        {
            CurrentBestBlock = block;
            UInt256 balanceAfter = _stateReader.GetAccount(block.StateRoot !, payloadAttributes.SuggestedFeeRecipient)?.Balance ?? UInt256.Zero;
            await _boostRelay.SendPayload(new BoostExecutionPayloadV1 { Block = new ExecutionPayloadV1(block), Profit = balanceAfter - balanceBefore }, cancellationToken);
        }

        return(CurrentBestBlock);
    }
Esempio n. 9
0
 public EvmModule(IManualBlockProductionTrigger?trigger)
 {
     _trigger = trigger ?? throw new ArgumentNullException(nameof(trigger));
 }
 public BlockImprovementContextFactory(IManualBlockProductionTrigger blockProductionTrigger, TimeSpan timeout)
 {
     _blockProductionTrigger = blockProductionTrigger;
     _timeout = timeout;
 }
 public DelayBlockImprovementContextFactory(IManualBlockProductionTrigger productionTrigger, TimeSpan timeout, int delay)
 {
     _productionTrigger = productionTrigger;
     _timeout           = timeout;
     _delay             = delay;
 }