Skip to content

Commit

Permalink
use paris evm config in merge protocolschedule (hyperledger#3748)
Browse files Browse the repository at this point in the history
* use paris evm config in merge protocolschedule
catch exception on block persist so that it can be added to badBlocks

Signed-off-by: garyschulte <garyschulte@gmail.com>
  • Loading branch information
garyschulte authored Apr 21, 2022
1 parent 90e29e8 commit 12a06d5
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@
import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters;
import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder;
import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket;
import org.hyperledger.besu.evm.MainnetEVMs;
import org.hyperledger.besu.evm.internal.EvmConfiguration;

import java.math.BigInteger;
import java.util.Optional;

public class MergeProtocolSchedule {

Expand All @@ -44,7 +46,11 @@ public static ProtocolSchedule create(
return new ProtocolScheduleBuilder(
config,
DEFAULT_CHAIN_ID,
ProtocolSpecAdapters.create(0, MergeProtocolSchedule::applyMergeSpecificModifications),
ProtocolSpecAdapters.create(
0,
(specBuilder) ->
MergeProtocolSchedule.applyMergeSpecificModifications(
specBuilder, config.getChainId())),
privacyParameters,
isRevertReasonEnabled,
config.isQuorum(),
Expand All @@ -53,9 +59,13 @@ public static ProtocolSchedule create(
}

private static ProtocolSpecBuilder applyMergeSpecificModifications(
final ProtocolSpecBuilder specBuilder) {
final ProtocolSpecBuilder specBuilder, final Optional<BigInteger> chainId) {

return specBuilder
.evmBuilder(
(gasCalculator, jdCacheConfig) ->
MainnetEVMs.paris(
gasCalculator, chainId.orElse(BigInteger.ZERO), EvmConfiguration.DEFAULT))
.blockProcessorBuilder(MergeBlockProcessor::new)
.blockHeaderValidatorBuilder(MergeProtocolSchedule::getBlockHeaderValidator)
.blockReward(Wei.ZERO)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,14 @@

import org.hyperledger.besu.config.GenesisConfigFile;
import org.hyperledger.besu.config.GenesisConfigOptions;
import org.hyperledger.besu.datatypes.Hash;
import org.hyperledger.besu.datatypes.Wei;
import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule;
import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec;
import org.hyperledger.besu.evm.Code;
import org.hyperledger.besu.evm.operation.PrevRanDaoOperation;

import org.apache.tuweni.bytes.Bytes;
import org.junit.Test;

public class MergeProtocolScheduleTest {
Expand Down Expand Up @@ -55,5 +59,9 @@ public void parametersAlignWithMainnetWithAdjustments() {
assertThat(london.getName()).isEqualTo("Frontier");
assertThat(london.getBlockReward()).isEqualTo(Wei.ZERO);
assertThat(london.isSkipZeroBlockRewards()).isEqualTo(true);

Bytes diffOp = Bytes.fromHexString("0x44");
var op = london.getEvm().operationAtOffset(Code.createLegacyCode(diffOp, Hash.hash(diffOp)), 0);
assertThat(op).isInstanceOf(PrevRanDaoOperation.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,12 @@ public AbstractBlockProcessor.Result processBlock(
return AbstractBlockProcessor.Result.failed();
}

worldState.persist(blockHeader);
try {
worldState.persist(blockHeader);
} catch (Exception e) {
LOG.error("failed persisting block", e);
return AbstractBlockProcessor.Result.failed();
}
return AbstractBlockProcessor.Result.successful(receipts);
}

Expand Down

0 comments on commit 12a06d5

Please sign in to comment.