diff --git a/datatypes/src/main/java/org/hyperledger/besu/datatypes/BlobsWithCommitments.java b/datatypes/src/main/java/org/hyperledger/besu/datatypes/BlobsWithCommitments.java index 7a4f0f4de6c..d5277cf54ed 100644 --- a/datatypes/src/main/java/org/hyperledger/besu/datatypes/BlobsWithCommitments.java +++ b/datatypes/src/main/java/org/hyperledger/besu/datatypes/BlobsWithCommitments.java @@ -89,4 +89,11 @@ public List getKzgProofs() { public List getVersionedHashes() { return versionedHashes; } + + public int getByteCount() { + int blobSize = blobs.stream().mapToInt(b -> b.getData().size()).sum(); + int commitmentSize = kzgCommitments.stream().mapToInt(c -> c.getData().size()).sum(); + int proofSize = kzgProofs.stream().mapToInt(p -> p.getData().size()).sum(); + return blobSize + commitmentSize + proofSize; + } } diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransaction.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransaction.java index a716b1675e3..231b8ed16b2 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransaction.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransaction.java @@ -16,6 +16,7 @@ import org.hyperledger.besu.datatypes.AccessListEntry; import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.datatypes.BlobsWithCommitments; import org.hyperledger.besu.datatypes.Hash; import org.hyperledger.besu.datatypes.Wei; import org.hyperledger.besu.ethereum.core.Transaction; @@ -119,8 +120,9 @@ private int computeEIP1559MemorySize() { } private int computeBlobMemorySize() { - // ToDo 4844: adapt for blobs - return computeEIP1559MemorySize(); + int blobsSize = + transaction.getBlobsWithCommitments().map(BlobsWithCommitments::getByteCount).orElse(0); + return computeEIP1559MemorySize() + blobsSize; } private int computePayloadMemorySize() {