Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: blobs 2. #10188

Merged
merged 71 commits into from
Dec 16, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
b4033be
Revert "fix: Revert "feat: blobs. (#9302)" (#10187)"
MirandaWood Nov 25, 2024
de14c32
chore: comments/renaming in Rollup.sol
MirandaWood Nov 27, 2024
b75a6f7
feat: give up and make blob oracle for simulation
MirandaWood Nov 27, 2024
3391096
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Nov 27, 2024
624c36d
fix: post merge fixes, fmt, fixtures
MirandaWood Nov 28, 2024
ccb82b2
chore: dummy change to fix ci runner
MirandaWood Nov 28, 2024
fe6fa68
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Nov 28, 2024
64586d8
fix: do horrible things to reduce contract size
MirandaWood Nov 28, 2024
21e8c3a
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Nov 28, 2024
24f2f0e
chore: post merge fixes, add libs to gen contracts, comments
MirandaWood Nov 28, 2024
566c2fc
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Nov 29, 2024
fc03321
feat: integrate private logs, add blob oracle issue num, regen fixtur…
MirandaWood Nov 30, 2024
5c5a655
chore: update proof fixture
MirandaWood Nov 30, 2024
4bd1312
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 2, 2024
f5aac25
fix: revert merge changes, compile time down from 90 to 10 mins (#10341)
MirandaWood Dec 3, 2024
d4bf371
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 3, 2024
78ca2ab
chore: post merge fixes, fmt
MirandaWood Dec 3, 2024
18a66b0
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 3, 2024
b14a892
chore: post merge fixes + update proof fixture
MirandaWood Dec 3, 2024
25d5ba0
chore: some orch cleanup
MirandaWood Dec 3, 2024
a325000
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 3, 2024
933191b
chore: remake consts after merge
MirandaWood Dec 3, 2024
64a4724
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 4, 2024
07449a3
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 4, 2024
5dd97e3
feat: redo blob publishing
MirandaWood Dec 4, 2024
359758f
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 4, 2024
6c0a22a
feat: rearrange all blob l1 logic, replicate in ts
MirandaWood Dec 5, 2024
681b53a
feat: add gas estimation for blob txs, cleanup contracts, increase he…
MirandaWood Dec 5, 2024
1153bf8
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 5, 2024
8511d52
chore: typos, comments clarifications
MirandaWood Dec 5, 2024
ede52a6
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 5, 2024
4d927d2
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 5, 2024
c44e158
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 6, 2024
5506aa2
chore: fix bad noir merge formatting
MirandaWood Dec 6, 2024
f71874b
fix: change slot overrides after merge
MirandaWood Dec 6, 2024
110692f
chore: update timeouts, comment, grab custom error from ext lib
MirandaWood Dec 6, 2024
389a596
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 6, 2024
dff8962
chore: post merge formatting
MirandaWood Dec 6, 2024
a01595d
chore: add leolib abi to error handling
MirandaWood Dec 6, 2024
9a89e75
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 6, 2024
5f5a10d
chore: inc test timeout after sync
MirandaWood Dec 7, 2024
c8c8758
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 7, 2024
03f4ce1
chore: inc timeout
MirandaWood Dec 7, 2024
7fd775f
chore: increase! those! timeouts!
MirandaWood Dec 7, 2024
a9bfda5
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 7, 2024
ba713cd
chore: header -> block_header to match merge
MirandaWood Dec 7, 2024
2daaa48
chore: guess what.
MirandaWood Dec 8, 2024
c6cde5d
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 9, 2024
ec0d50d
chore: fixture + comment out slower test
MirandaWood Dec 9, 2024
be805b6
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 10, 2024
09bcff3
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 10, 2024
949090f
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 11, 2024
a74377b
chore: remove some warnings from blob code
MirandaWood Dec 11, 2024
426f376
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 11, 2024
dc2955f
chore: post merge formatting
MirandaWood Dec 11, 2024
aa3d368
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 12, 2024
728d784
chore: remake constants after merge
MirandaWood Dec 12, 2024
0332bb8
fix: bad merge
MirandaWood Dec 12, 2024
59148e2
chore: proof fixture
MirandaWood Dec 12, 2024
76da0d4
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 12, 2024
e8685ac
feat: reduce the number unconstrained boundary hops in bloblib (#10603)
TomAFrench Dec 12, 2024
7827a73
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
e6fc5b5
fix: add temp brillig skip to run CI
MirandaWood Dec 13, 2024
c423c90
chore: update prover.tomls, ensure block-root is populated
MirandaWood Dec 13, 2024
f420a79
chore: add brillig gates skip to earthfile
MirandaWood Dec 13, 2024
36efe51
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
313c3d8
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
448187e
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
436b7d6
chore: reenable test
MirandaWood Dec 13, 2024
f096e25
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
b8699a2
Merge remote-tracking branch 'origin/master' into mw/blob-circuit-2
MirandaWood Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ bb::fr WorldState::compute_initial_archive(const StateReference& initial_state_r
// last archive - which, at genesis, is all 0s
0,
0,
// content commitment - at genesis all 0s
// content commitment - all 0s
0,
0,
0,
Expand Down
65 changes: 27 additions & 38 deletions l1-contracts/src/core/Rollup.sol
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ import {SafeERC20} from "@oz/token/ERC20/utils/SafeERC20.sol";
import {EIP712} from "@oz/utils/cryptography/EIP712.sol";
import {Math} from "@oz/utils/math/Math.sol";
import {SafeCast} from "@oz/utils/math/SafeCast.sol";
import {Vm} from "forge-std/Vm.sol";

struct ChainTips {
uint256 pendingBlockNumber;
Expand All @@ -64,6 +63,7 @@ struct SubmitEpochRootProofInterimValues {
* @author Aztec Labs
* @notice Rollup contract that is concerned about readability and velocity of development
* not giving a damn about gas costs.
* @dev WARNING: This contract is VERY close to the size limit (500B at time of writing).
*/
contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
using SafeCast for uint256;
Expand Down Expand Up @@ -181,7 +181,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
});
l1GasOracleValues = L1GasOracleValues({
pre: L1FeeData({baseFee: 1 gwei, blobFee: 1}),
post: L1FeeData({baseFee: block.basefee, blobFee: _getBlobBaseFee()}),
post: L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)}),
slotOfChange: LIFETIME
});
for (uint256 i = 0; i < _validators.length; i++) {
Expand Down Expand Up @@ -474,9 +474,15 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
bytes32 _blobsHash,
DataStructures.ExecutionFlags memory _flags
) external view override(IRollup) {
uint256 manaBaseFee = getManaBaseFeeAt(_currentTime, true);
HeaderLib.Header memory header = HeaderLib.decode(_header);
_validateHeader(header, _signatures, _digest, _currentTime, manaBaseFee, _blobsHash, _flags);
_validateHeader(
HeaderLib.decode(_header),
_signatures,
_digest,
_currentTime,
getManaBaseFeeAt(_currentTime, true),
_blobsHash,
_flags
);
}

/**
Expand Down Expand Up @@ -588,8 +594,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
// TODO(#7218): Revert to fixed height tree for outbox, currently just providing min as interim
// Min size = smallest path of the rollup tree + 1
(uint256 min,) = MerkleLib.computeMinMaxPathLength(header.contentCommitment.numTxs);
uint256 l2ToL1TreeMinHeight = min + 1;
OUTBOX.insert(blockNumber, header.contentCommitment.outHash, l2ToL1TreeMinHeight);
OUTBOX.insert(blockNumber, header.contentCommitment.outHash, min + 1);

emit L2BlockProposed(blockNumber, _args.archive);

Expand Down Expand Up @@ -628,7 +633,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
}

l1GasOracleValues.pre = l1GasOracleValues.post;
l1GasOracleValues.post = L1FeeData({baseFee: block.basefee, blobFee: _getBlobBaseFee()});
l1GasOracleValues.post =
L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)});
l1GasOracleValues.slotOfChange = slot + LAG;
}

Expand All @@ -649,11 +655,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
override(IRollup)
returns (L1FeeData memory)
{
Slot slot = getSlotAt(_timestamp);
if (slot < l1GasOracleValues.slotOfChange) {
return l1GasOracleValues.pre;
}
return l1GasOracleValues.post;
return getSlotAt(_timestamp) < l1GasOracleValues.slotOfChange
? l1GasOracleValues.pre
: l1GasOracleValues.post;
}

/**
Expand Down Expand Up @@ -699,8 +703,12 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
-int256(FeeMath.MANA_TARGET)
);

uint256 dataCost =
Math.mulDiv(3 * BLOB_GAS_PER_BLOB, getL1FeesAt(_timestamp).blobFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil);
uint256 dataCost = Math.mulDiv(
3 * BLOB_GAS_PER_BLOB,
getL1FeesAt(_timestamp).blobFee,
FeeMath.MANA_TARGET,
Math.Rounding.Ceil
);
uint256 gasUsed = FeeMath.L1_GAS_PER_BLOCK_PROPOSED + 3 * GAS_PER_BLOB_POINT_EVALUATION
+ FeeMath.L1_GAS_PER_EPOCH_VERIFIED / EPOCH_DURATION;
uint256 gasCost =
Expand Down Expand Up @@ -1029,10 +1037,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
* @return bytes32 - The archive root of the block
*/
function archiveAt(uint256 _blockNumber) public view override(IRollup) returns (bytes32) {
if (_blockNumber <= tips.pendingBlockNumber) {
return blocks[_blockNumber].archive;
}
return bytes32(0);
return _blockNumber <= tips.pendingBlockNumber ? blocks[_blockNumber].archive : bytes32(0);
}

function canPrune() public view override(IRollup) returns (bool) {
Expand Down Expand Up @@ -1244,15 +1249,14 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
returns (BlockLog memory)
{
FeeHeader memory parentFeeHeader = blocks[_blockNumber - 1].feeHeader;
uint256 excessMana = (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd(
-int256(FeeMath.MANA_TARGET)
);
return BlockLog({
archive: _args.archive,
blockHash: _args.blockHash,
slotNumber: Slot.wrap(uint256(bytes32(_args.header[0x0194:0x01b4]))),
feeHeader: FeeHeader({
excessMana: excessMana,
excessMana: (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd(
-int256(FeeMath.MANA_TARGET)
),
feeAssetPriceNumerator: parentFeeHeader.feeAssetPriceNumerator.clampedAdd(
_args.oracleInput.feeAssetPriceModifier
),
Expand Down Expand Up @@ -1283,19 +1287,4 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup {
}
}
}

/**
* @notice Get the blob base fee
*
* @dev If we are in a foundry test, we use the cheatcode to get the blob base fee.
* Otherwise, we use the `block.blobbasefee`
*
* @return uint256 - The blob base fee
*/
function _getBlobBaseFee() private view returns (uint256) {
if (IS_FOUNDRY_TEST) {
return Vm(VM_ADDRESS).getBlobBaseFee();
}
return block.blobbasefee;
}
}
73 changes: 45 additions & 28 deletions l1-contracts/src/core/libraries/BlobLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,48 +4,34 @@ pragma solidity >=0.8.27;

import {Hash} from "@aztec/core/libraries/crypto/Hash.sol";
import {Errors} from "@aztec/core/libraries/Errors.sol";
import {Vm} from "forge-std/Vm.sol";

library BlobLib {
/**
* @notice Validate a blob.
* Input bytes:
* input[:32] - versioned_hash
* input[32:64] - z
* input[64:96] - y
* input[96:144] - commitment C
* input[144:192] - proof (a commitment to the quotient polynomial q(X))
* - This can be relaxed to happen at the time of `submitProof` instead
* @notice Apparently there is no guarantee that the blobs will be processed in the order sent
* so the use of blobhash(_blobNumber) may fail in production
* @param _blobInput - The above bytes to verify a blob
* @notice Get the blob base fee
*
* @dev If we are in a foundry test, we use the cheatcode to get the blob base fee.
* Otherwise, we use the `block.blobbasefee`
*
* @return uint256 - The blob base fee
*/
function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob)
internal
view
returns (bytes32 blobHash)
{
if (!_checkBlob) {
return bytes32(_blobInput[0:32]);
function getBlobBaseFee(address _vmAddress) public view returns (uint256) {
if (_vmAddress.code.length > 0) {
return Vm(_vmAddress).getBlobBaseFee();
}
assembly {
blobHash := blobhash(_blobNumber)
}
require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash));

// Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile :
(bool success,) = address(0x0a).staticcall(_blobInput);
require(success, Errors.Rollup__InvalidBlobProof(blobHash));
return block.blobbasefee;
}

/**
* @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs.
* Input bytes:
* input[:1] - num blobs in block
* input[1:] - 192 * num blobs of the above _blobInput
* @dev Marked as public to reduce Rollup.sol contract size
* @param _blobsInput - The above bytes to verify a blob
*/
function validateBlobs(bytes calldata _blobsInput, bool _checkBlob)
internal
public
view
returns (bytes32 blobsHash, bytes32 blobPublicInputsHash)
{
Expand Down Expand Up @@ -74,13 +60,44 @@ library BlobLib {
blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes));
}

/**
* @notice Validate a blob.
* Input bytes:
* input[:32] - versioned_hash
* input[32:64] - z
* input[64:96] - y
* input[96:144] - commitment C
* input[144:192] - proof (a commitment to the quotient polynomial q(X))
* - This can be relaxed to happen at the time of `submitProof` instead
* @notice Apparently there is no guarantee that the blobs will be processed in the order sent
* so the use of blobhash(_blobNumber) may fail in production
* @param _blobInput - The above bytes to verify a blob
*/
function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob)
internal
view
returns (bytes32 blobHash)
{
if (!_checkBlob) {
return bytes32(_blobInput[0:32]);
}
assembly {
blobHash := blobhash(_blobNumber)
}
require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash));

// Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile :
(bool success,) = address(0x0a).staticcall(_blobInput);
require(success, Errors.Rollup__InvalidBlobProof(blobHash));
}

/**
* @notice Converts a BLS12 field element from bytes32 to a nr BigNum type
* The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts:
* firstLimb = last 15 bytes;
* secondLimb = bytes 2 -> 17;
* thirdLimb = first 2 bytes;
* Used when verifying epoch proofs to gather public inputs.
* Used when verifying epoch proofs to gather blob specific public inputs.
* @param _input - The field in bytes32
*/
function bytes32ToBigNum(bytes32 _input)
Expand Down
3 changes: 2 additions & 1 deletion l1-contracts/src/core/libraries/HeaderLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,11 @@ library HeaderLib {

/**
* @notice Decodes the header
* @dev Marked as public to reduce Rollup.sol contract size
* @param _header - The header calldata
* @return The decoded header
*/
function decode(bytes calldata _header) internal pure returns (Header memory) {
function decode(bytes calldata _header) public pure returns (Header memory) {
MirandaWood marked this conversation as resolved.
Show resolved Hide resolved
require(
_header.length == HEADER_LENGTH,
Errors.HeaderLib__InvalidHeaderSize(HEADER_LENGTH, _header.length)
Expand Down
77 changes: 39 additions & 38 deletions l1-contracts/src/core/libraries/crypto/MerkleLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,45 @@ import {Errors} from "@aztec/core/libraries/Errors.sol";
* @notice Library that contains functions useful when interacting with Merkle Trees
*/
library MerkleLib {
/**
* @notice Computes the minimum and maximum path size of an unbalanced tree.
* @dev Follows structure of rollup circuits by greedy filling subtrees.
* @dev Marked as public to reduce Rollup.sol contract size
* @param _numTxs - The number of txs to form into subtrees.
* @return (min, max) - The min and max path sizes.
*/
function computeMinMaxPathLength(uint256 _numTxs) public pure returns (uint256, uint256) {
uint256 numTxs = _numTxs < 2 ? 2 : _numTxs;
uint256 numSubtrees = 0;
uint256 currentSubtreeSize = 1;
uint256 currentSubtreeHeight = 0;
uint256 firstSubtreeHeight;
uint256 finalSubtreeHeight;
while (numTxs != 0) {
// If size & txs == 0, the subtree doesn't exist for this number of txs
if (currentSubtreeSize & numTxs == 0) {
currentSubtreeSize <<= 1;
currentSubtreeHeight++;
continue;
}
// Assign the smallest rightmost subtree height
if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight;
// Assign the largest leftmost subtree height
if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight;
numTxs -= currentSubtreeSize;
currentSubtreeSize <<= 1;
currentSubtreeHeight++;
numSubtrees++;
}
if (numSubtrees == 1) {
// We have a balanced tree
return (firstSubtreeHeight, firstSubtreeHeight);
}
uint256 min = finalSubtreeHeight + numSubtrees - 1;
uint256 max = firstSubtreeHeight + 1;
return (min, max);
}

/**
* @notice Verifies the membership of a leaf and path against an expected root.
* @dev In the case of a mismatched root, and subsequent inability to verify membership, this function throws.
Expand Down Expand Up @@ -53,44 +92,6 @@ library MerkleLib {
);
}

/**
* @notice Computes the minimum and maximum path size of an unbalanced tree.
* @dev Follows structure of rollup circuits by greedy filling subtrees.
* @param _numTxs - The number of txs to form into subtrees.
* @return (min, max) - The min and max path sizes.
*/
function computeMinMaxPathLength(uint256 _numTxs) internal pure returns (uint256, uint256) {
uint256 numTxs = _numTxs < 2 ? 2 : _numTxs;
uint256 numSubtrees = 0;
uint256 currentSubtreeSize = 1;
uint256 currentSubtreeHeight = 0;
uint256 firstSubtreeHeight;
uint256 finalSubtreeHeight;
while (numTxs != 0) {
// If size & txs == 0, the subtree doesn't exist for this number of txs
if (currentSubtreeSize & numTxs == 0) {
currentSubtreeSize <<= 1;
currentSubtreeHeight++;
continue;
}
// Assign the smallest rightmost subtree height
if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight;
// Assign the largest leftmost subtree height
if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight;
numTxs -= currentSubtreeSize;
currentSubtreeSize <<= 1;
currentSubtreeHeight++;
numSubtrees++;
}
if (numSubtrees == 1) {
// We have a balanced tree
return (firstSubtreeHeight, firstSubtreeHeight);
}
uint256 min = finalSubtreeHeight + numSubtrees - 1;
uint256 max = firstSubtreeHeight + 1;
return (min, max);
}

/**
* @notice Calculates a tree height from the amount of elements in the tree
* @dev - This mirrors the function in TestUtil, but assumes _size is an exact power of 2 or = 1
Expand Down
5 changes: 3 additions & 2 deletions l1-contracts/test/fees/FeeRollup.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase {
if (rollup.getCurrentSlot() == nextSlot) {
TestPoint memory point = points[nextSlot.unwrap() - 1];
Block memory b = getBlock();

skipBlobCheck(address(rollup));
rollup.propose(
ProposeArgs({
header: b.header,
Expand All @@ -243,7 +243,8 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase {
txHashes: b.txHashes
}),
b.signatures,
b.body
b.body,
b.blobInputs
);
nextSlot = nextSlot + Slot.wrap(1);
}
Expand Down
1 change: 0 additions & 1 deletion yarn-project/ethereum/src/test/start_anvil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ export async function startAnvil(l1BlockTime?: number): Promise<{ anvil: Anvil;
anvilBinary,
port: ethereumHostPort,
blockTime: l1BlockTime,
codeSizeLimit: 0x7000,
});
await anvil.start();
return anvil;
Expand Down
Loading