diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java index 35b631652df..c6cabb4eb14 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/TransitionProtocolSchedule.java @@ -65,6 +65,10 @@ public ProtocolSchedule getPostMergeSchedule() { return transitionUtils.getPostMergeObject(); } + public ProtocolSpec getByTimestamp(final long timestamp) { + return timestampSchedule.getByTimestamp(timestamp).orElse(null); + } + @Override public ProtocolSpec getByBlockHeader(final BlockHeader blockHeader) { return this.timestampSchedule diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineForkchoiceUpdatedV2.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineForkchoiceUpdatedV2.java index 9d0a834a9a1..5e999229d1c 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineForkchoiceUpdatedV2.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineForkchoiceUpdatedV2.java @@ -21,6 +21,7 @@ import static org.hyperledger.besu.util.Slf4jLambdaHelper.debugLambda; import static org.hyperledger.besu.util.Slf4jLambdaHelper.warnLambda; +import org.hyperledger.besu.consensus.merge.TransitionProtocolSchedule; import org.hyperledger.besu.consensus.merge.blockcreation.MergeMiningCoordinator; import org.hyperledger.besu.consensus.merge.blockcreation.MergeMiningCoordinator.ForkchoiceResult; import org.hyperledger.besu.consensus.merge.blockcreation.PayloadAttributes; @@ -40,7 +41,6 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.EngineUpdateForkchoiceResult; import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.Withdrawal; -import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import java.util.List; import java.util.Optional; @@ -52,17 +52,17 @@ public class EngineForkchoiceUpdatedV2 extends ExecutionEngineJsonRpcMethod { private static final Logger LOG = LoggerFactory.getLogger(EngineForkchoiceUpdatedV2.class); - private final ProtocolSchedule protocolSchedule; + private final TransitionProtocolSchedule transitionProtocolSchedule; private final MergeMiningCoordinator mergeCoordinator; public EngineForkchoiceUpdatedV2( final Vertx vertx, - final ProtocolSchedule protocolSchedule, + final TransitionProtocolSchedule transitionProtocolSchedule, final ProtocolContext protocolContext, final MergeMiningCoordinator mergeCoordinator, final EngineCallListener engineCallListener) { super(vertx, protocolContext, engineCallListener); - this.protocolSchedule = protocolSchedule; + this.transitionProtocolSchedule = transitionProtocolSchedule; this.mergeCoordinator = mergeCoordinator; } @@ -218,8 +218,8 @@ private boolean validatePayloadAttributes( Optional.ofNullable(payloadAttributes.getWithdrawals()) .map(ws -> ws.stream().map(WithdrawalParameter::toWithdrawal).collect(toList())) .orElse(null); - return protocolSchedule - .getByBlockNumber(protocolContext.getBlockchain().getChainHeadBlockNumber() + 1) + return transitionProtocolSchedule + .getByTimestamp(payloadAttributes.getTimestamp()) .getWithdrawalsValidator() .validateWithdrawals(withdrawals); } diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java index 75fbd89fc28..a41bdbb36ef 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/ExecutionEngineJsonRpcMethods.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.methods; +import org.hyperledger.besu.consensus.merge.TransitionProtocolSchedule; import org.hyperledger.besu.consensus.merge.blockcreation.MergeMiningCoordinator; import org.hyperledger.besu.ethereum.ProtocolContext; import org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis; @@ -29,7 +30,6 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.BlockResultFactory; import org.hyperledger.besu.ethereum.blockcreation.MiningCoordinator; import org.hyperledger.besu.ethereum.eth.manager.EthPeers; -import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import java.util.Map; import java.util.Optional; @@ -41,14 +41,14 @@ public class ExecutionEngineJsonRpcMethods extends ApiGroupJsonRpcMethods { private final BlockResultFactory blockResultFactory = new BlockResultFactory(); private final Optional mergeCoordinator; - private final ProtocolSchedule protocolSchedule; + private final TransitionProtocolSchedule protocolSchedule; private final ProtocolContext protocolContext; private final EthPeers ethPeers; private final Vertx consensusEngineServer; ExecutionEngineJsonRpcMethods( final MiningCoordinator miningCoordinator, - final ProtocolSchedule protocolSchedule, + final TransitionProtocolSchedule protocolSchedule, final ProtocolContext protocolContext, final EthPeers ethPeers, final Vertx consensusEngineServer) { diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactory.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactory.java index 721b55c2c92..fb7899ae635 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactory.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactory.java @@ -15,6 +15,7 @@ package org.hyperledger.besu.ethereum.api.jsonrpc.methods; import org.hyperledger.besu.config.GenesisConfigOptions; +import org.hyperledger.besu.consensus.merge.TransitionProtocolSchedule; import org.hyperledger.besu.ethereum.ProtocolContext; import org.hyperledger.besu.ethereum.api.jsonrpc.JsonRpcConfiguration; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.filter.FilterManager; @@ -104,7 +105,7 @@ public Map methods( blockchainQueries, protocolSchedule, transactionPool, privacyParameters), new ExecutionEngineJsonRpcMethods( miningCoordinator, - protocolSchedule, + (TransitionProtocolSchedule) protocolSchedule, protocolContext, ethPeers, consensusEngineServer),