Skip to content

Commit

Permalink
fix: receipt encode and decode
Browse files Browse the repository at this point in the history
  • Loading branch information
thinkAfCod committed Jan 9, 2024
1 parent 60735b6 commit 2c08735
Show file tree
Hide file tree
Showing 20 changed files with 374 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,8 @@ protected MiningCoordinator createTransitionMiningCoordinator(
transactionPool,
miningParameters,
backwardSyncContext,
depositContractAddress);
depositContractAddress,
Optional.of(genesisConfigOptions));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
package org.hyperledger.besu.consensus.merge.blockcreation;

import org.hyperledger.besu.config.GenesisConfigOptions;
import org.hyperledger.besu.datatypes.Address;
import org.hyperledger.besu.datatypes.Wei;
import org.hyperledger.besu.ethereum.ProtocolContext;
Expand Down Expand Up @@ -68,7 +69,8 @@ public MergeBlockCreator(
final Wei minTransactionGasPrice,
final Address miningBeneficiary,
final BlockHeader parentHeader,
final Optional<Address> depositContractAddress) {
final Optional<Address> depositContractAddress,
final Optional<GenesisConfigOptions> genesisConfigOptions) {
super(
miningBeneficiary,
__ -> miningBeneficiary,
Expand All @@ -80,7 +82,8 @@ public MergeBlockCreator(
minTransactionGasPrice,
TRY_FILL_BLOCK,
parentHeader,
depositContractAddress);
depositContractAddress,
genesisConfigOptions);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import static java.util.stream.Collectors.joining;
import static org.hyperledger.besu.consensus.merge.blockcreation.MergeMiningCoordinator.ForkchoiceResult.Status.INVALID;

import org.hyperledger.besu.config.GenesisConfigOptions;
import org.hyperledger.besu.consensus.merge.MergeContext;
import org.hyperledger.besu.consensus.merge.PayloadWrapper;
import org.hyperledger.besu.datatypes.Address;
Expand Down Expand Up @@ -112,7 +113,8 @@ public MergeCoordinator(
final TransactionPool transactionPool,
final MiningParameters miningParams,
final BackwardSyncContext backwardSyncContext,
final Optional<Address> depositContractAddress) {
final Optional<Address> depositContractAddress,
final Optional<GenesisConfigOptions> genesisConfigOptions) {
this.protocolContext = protocolContext;
this.protocolSchedule = protocolSchedule;
this.blockBuilderExecutor = blockBuilderExecutor;
Expand All @@ -138,7 +140,8 @@ public MergeCoordinator(
this.miningParameters.getMinTransactionGasPrice(),
address.or(miningParameters::getCoinbase).orElse(Address.ZERO),
parentHeader,
depositContractAddress);
depositContractAddress,
genesisConfigOptions);

this.backwardSyncContext.subscribeBadChainListener(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.OptionalLong;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
Expand Down Expand Up @@ -154,7 +155,7 @@ public class MergeCoordinatorTest implements MergeGenesisConfigHelper {
private final Address suggestedFeeRecipient = Address.ZERO;
private final BlockHeaderTestFixture headerGenerator = new BlockHeaderTestFixture();
private final BaseFeeMarket feeMarket =
new LondonFeeMarket(0, genesisState.getBlock().getHeader().getBaseFee());
new LondonFeeMarket(0, genesisState.getBlock().getHeader().getBaseFee(), Optional.empty());

private final org.hyperledger.besu.metrics.StubMetricsSystem metricsSystem =
new StubMetricsSystem();
Expand Down Expand Up @@ -235,6 +236,7 @@ public void setUp() {
transactionPool,
miningParameters,
backwardSyncContext,
Optional.empty(),
Optional.empty());
}

Expand Down Expand Up @@ -290,6 +292,7 @@ public void exceptionDuringBuildingBlockShouldNotBeInvalid()
this.miningParameters.getMinTransactionGasPrice(),
address.or(miningParameters::getCoinbase).orElse(Address.ZERO),
parentHeader,
Optional.empty(),
Optional.empty()));

doCallRealMethod()
Expand Down Expand Up @@ -790,6 +793,7 @@ public void shouldUseExtraDataFromMiningParameters() {
transactionPool,
miningParameters,
backwardSyncContext,
Optional.empty(),
Optional.empty());

final PayloadIdentifier payloadId =
Expand Down Expand Up @@ -1040,7 +1044,8 @@ private BlockHeader terminalPowBlock() {
genesisState.getBlock().getHeader().getNumber() + 1,
genesisState.getBlock().getHeader().getBaseFee().orElse(Wei.of(0x3b9aca00)),
0,
15000000l))
15000000l,
OptionalLong.empty()))
.timestamp(1)
.gasLimit(genesisState.getBlock().getHeader().getGasLimit())
.stateRoot(genesisState.getBlock().getHeader().getStateRoot())
Expand All @@ -1063,7 +1068,8 @@ private BlockHeader nextBlockHeader(
genesisState.getBlock().getHeader().getNumber() + 1,
parentHeader.getBaseFee().orElse(Wei.of(0x3b9aca00)),
0,
15000000l))
15000000l,
OptionalLong.empty()))
.buildHeader();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.OptionalLong;
import java.util.concurrent.CompletableFuture;

import org.junit.jupiter.api.BeforeEach;
Expand Down Expand Up @@ -78,7 +79,7 @@ public class MergeReorgTest implements MergeGenesisConfigHelper {
private final Address coinbase = genesisAllocations(getPowGenesisConfigFile()).findFirst().get();
private final BlockHeaderTestFixture headerGenerator = new BlockHeaderTestFixture();
private final BaseFeeMarket feeMarket =
new LondonFeeMarket(0, genesisState.getBlock().getHeader().getBaseFee());
new LondonFeeMarket(0, genesisState.getBlock().getHeader().getBaseFee(), Optional.empty());

@BeforeEach
public void setUp() {
Expand All @@ -95,6 +96,7 @@ public void setUp() {
mockTransactionPool,
new MiningParameters.Builder().coinbase(coinbase).build(),
mock(BackwardSyncContext.class),
Optional.empty(),
Optional.empty());
mergeContext.setIsPostMerge(genesisState.getBlock().getHeader().getDifficulty());
blockchain.observeBlockAdded(
Expand Down Expand Up @@ -186,7 +188,8 @@ private List<Block> subChain(
genesisState.getBlock().getHeader().getNumber() + 1,
newParent.getBaseFee().orElse(Wei.of(0x3b9aca00)),
0,
15000000))
15000000,
OptionalLong.empty()))
.gasLimit(newParent.getGasLimit())
.timestamp(newParent.getTimestamp() + 1)
.stateRoot(newParent.getStateRoot());
Expand All @@ -212,7 +215,8 @@ private BlockHeader terminalPowBlock(final BlockHeader parent, final Difficulty
genesisState.getBlock().getHeader().getNumber() + 1,
parent.getBaseFee().orElse(Wei.of(0x3b9aca00)),
0,
15000000l))
15000000l,
OptionalLong.empty()))
.gasLimit(parent.getGasLimit())
.timestamp(parent.getTimestamp() + 1)
.stateRoot(parent.getStateRoot())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.tuweni.bytes.Bytes;
import org.apache.tuweni.bytes.DelegatingBytes;

@JsonPropertyOrder({
"accessList",
Expand All @@ -39,6 +40,7 @@
"maxPriorityFeePerGas",
"maxFeePerGas",
"maxFeePerBlobGas",
"mint",
"hash",
"input",
"nonce",
Expand All @@ -49,6 +51,7 @@
"v",
"r",
"s",
"sourceHash",
"blobVersionedHashes"
})
public class TransactionCompleteResult implements TransactionResult {
Expand All @@ -75,6 +78,9 @@ public class TransactionCompleteResult implements TransactionResult {
@JsonInclude(JsonInclude.Include.NON_NULL)
private final String maxFeePerBlobGas;

@JsonInclude(JsonInclude.Include.NON_NULL)
private final String mint;

private final String hash;
private final String input;
private final String nonce;
Expand All @@ -86,6 +92,9 @@ public class TransactionCompleteResult implements TransactionResult {
private final String r;
private final String s;

@JsonInclude(JsonInclude.Include.NON_NULL)
private final String sourceHash;

@JsonInclude(JsonInclude.Include.NON_NULL)
private final List<VersionedHash> versionedHashes;

Expand All @@ -110,6 +119,7 @@ public TransactionCompleteResult(final TransactionWithMetadata tx) {
.getGasPrice()
.orElseGet(() -> transaction.getEffectiveGasPrice(tx.getBaseFee())));
this.hash = transaction.getHash().toString();
this.mint = transaction.getMint().map(Wei::toShortHexString).orElse(null);
this.input = transaction.getPayload().toString();
this.nonce = Quantity.create(transaction.getNonce());
this.to = transaction.getTo().map(Bytes::toHexString).orElse(null);
Expand All @@ -122,6 +132,7 @@ public TransactionCompleteResult(final TransactionWithMetadata tx) {
this.v = Quantity.create(transaction.getV());
this.r = Quantity.create(transaction.getR());
this.s = Quantity.create(transaction.getS());
this.sourceHash = transaction.getSourceHash().map(DelegatingBytes::toString).orElse(null);
this.versionedHashes = transaction.getVersionedHashes().orElse(null);
}

Expand Down Expand Up @@ -180,6 +191,11 @@ public String getHash() {
return hash;
}

@JsonGetter(value = "mint")
public String getMint() {
return mint;
}

@JsonGetter(value = "input")
public String getInput() {
return input;
Expand Down Expand Up @@ -225,6 +241,11 @@ public String getS() {
return s;
}

@JsonGetter(value = "sourceHash")
public String getSourceHash() {
return sourceHash;
}

@JsonGetter(value = "blobVersionedHashes")
public List<VersionedHash> getVersionedHashes() {
return versionedHashes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import static org.hyperledger.besu.ethereum.mainnet.feemarket.ExcessBlobGasCalculator.calculateExcessBlobGasForParent;

import org.hyperledger.besu.config.GenesisConfigOptions;
import org.hyperledger.besu.datatypes.Address;
import org.hyperledger.besu.datatypes.BlobGas;
import org.hyperledger.besu.datatypes.Hash;
Expand Down Expand Up @@ -95,6 +96,7 @@ public interface ExtraDataCalculator {
private final Double minBlockOccupancyRatio;
protected final BlockHeader parentHeader;
private final Optional<Address> depositContractAddress;
private final Optional<GenesisConfigOptions> genesisConfigOptions;

private final AtomicBoolean isCancelled = new AtomicBoolean(false);

Expand All @@ -110,6 +112,34 @@ protected AbstractBlockCreator(
final Double minBlockOccupancyRatio,
final BlockHeader parentHeader,
final Optional<Address> depositContractAddress) {
this(
coinbase,
miningBeneficiaryCalculator,
targetGasLimitSupplier,
extraDataCalculator,
transactionPool,
protocolContext,
protocolSchedule,
minTransactionGasPrice,
minBlockOccupancyRatio,
parentHeader,
depositContractAddress,
Optional.empty());
}

protected AbstractBlockCreator(
final Address coinbase,
final MiningBeneficiaryCalculator miningBeneficiaryCalculator,
final Supplier<Optional<Long>> targetGasLimitSupplier,
final ExtraDataCalculator extraDataCalculator,
final TransactionPool transactionPool,
final ProtocolContext protocolContext,
final ProtocolSchedule protocolSchedule,
final Wei minTransactionGasPrice,
final Double minBlockOccupancyRatio,
final BlockHeader parentHeader,
final Optional<Address> depositContractAddress,
final Optional<GenesisConfigOptions> genesisConfigOptions) {
this.coinbase = coinbase;
this.miningBeneficiaryCalculator = miningBeneficiaryCalculator;
this.targetGasLimitSupplier = targetGasLimitSupplier;
Expand All @@ -122,6 +152,7 @@ protected AbstractBlockCreator(
this.parentHeader = parentHeader;
this.depositContractAddress = depositContractAddress;
blockHeaderFunctions = ScheduleBasedBlockHeaderFunctions.create(protocolSchedule);
this.genesisConfigOptions = genesisConfigOptions;
}

/**
Expand Down Expand Up @@ -364,7 +395,8 @@ private TransactionSelectionResults selectTransactions(
protocolSpec.getFeeMarket(),
protocolSpec.getGasCalculator(),
protocolSpec.getGasLimitCalculator(),
protocolContext.getTransactionSelectorFactory());
protocolContext.getTransactionSelectorFactory(),
genesisConfigOptions);

if (noTxFromPool.isEmpty()) {
if (transactions.isPresent()) {
Expand Down
Loading

0 comments on commit 2c08735

Please sign in to comment.