Skip to content

Commit

Permalink
add test for the max tx per IL validation
Browse files Browse the repository at this point in the history
Signed-off-by: Gabriel Fukushima <[email protected]>
  • Loading branch information
gfukushima committed Feb 13, 2025
1 parent 4e65989 commit b24132b
Showing 1 changed file with 42 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,29 @@

package tech.pegasys.teku.spec.logic.versions.eip7805.block;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.*;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import org.junit.jupiter.api.Test;
import tech.pegasys.teku.infrastructure.unsigned.UInt64;
import tech.pegasys.teku.spec.Spec;
import tech.pegasys.teku.spec.TestSpecFactory;
import tech.pegasys.teku.spec.config.SpecConfigDeneb;
import tech.pegasys.teku.spec.config.SpecConfigEip7805;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody;
import tech.pegasys.teku.spec.datastructures.execution.NewPayloadRequest;
import tech.pegasys.teku.spec.datastructures.operations.InclusionList;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState;
import tech.pegasys.teku.spec.datastructures.type.SszKZGCommitment;
import tech.pegasys.teku.spec.logic.common.helpers.MiscHelpers;
import tech.pegasys.teku.spec.logic.common.statetransition.exceptions.BlockProcessingException;
import tech.pegasys.teku.spec.logic.versions.deneb.block.BlockProcessorDenebTest;
import tech.pegasys.teku.spec.logic.versions.deneb.types.VersionedHash;

public class BlockProcessorEip7805Test extends BlockProcessorDenebTest {

Expand Down Expand Up @@ -56,4 +64,38 @@ protected Spec createSpec() {
.hasMessage(
"Number of transaction in the inclusion list in block exceeds max transaction per inclusion list");
}

@Test
@Override
public void shouldCreateNewPayloadRequest() throws BlockProcessingException {
final BeaconState preState = createBeaconState();
final BeaconBlockBody blockBody = dataStructureUtil.randomBeaconBlockBodyWithCommitments(3);
final MiscHelpers miscHelpers = spec.atSlot(UInt64.ONE).miscHelpers();
final List<VersionedHash> expectedVersionedHashes =
blockBody.getOptionalBlobKzgCommitments().orElseThrow().stream()
.map(SszKZGCommitment::getKZGCommitment)
.map(miscHelpers::kzgCommitmentToVersionedHash)
.collect(Collectors.toList());
final InclusionList inclusionList = dataStructureUtil.randomInclusionList();

final NewPayloadRequest newPayloadRequest =
spec.getBlockProcessor(UInt64.ONE)
.computeNewPayloadRequest(preState, blockBody, Optional.of(List.of(inclusionList)));

assertThat(newPayloadRequest.getExecutionPayload())
.isEqualTo(blockBody.getOptionalExecutionPayload().orElseThrow());
assertThat(newPayloadRequest.getVersionedHashes()).isPresent();
assertThat(newPayloadRequest.getVersionedHashes().get())
.hasSize(3)
.allSatisfy(
versionedHash ->
assertThat(versionedHash.getVersion())
.isEqualTo(SpecConfigDeneb.VERSIONED_HASH_VERSION_KZG))
.hasSameElementsAs(expectedVersionedHashes);
assertThat(newPayloadRequest.getParentBeaconBlockRoot()).isPresent();
assertThat(newPayloadRequest.getParentBeaconBlockRoot().get())
.isEqualTo(preState.getLatestBlockHeader().getParentRoot());
assertThat(newPayloadRequest.getInclusionList()).isPresent();
assertThat(newPayloadRequest.getInclusionList().get()).isEqualTo(inclusionList.getTransactions());
}
}

0 comments on commit b24132b

Please sign in to comment.