Skip to content

Commit 6865d71

Browse files
committed
chore(fast-inbox): remove legacy 128-bit inbox rolling hash (A-1386)
1 parent ed633e5 commit 6865d71

6 files changed

Lines changed: 8 additions & 29 deletions

File tree

l1-contracts/src/core/interfaces/messagebridge/IInbox.sol

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@ uint256 constant MAX_MSGS_PER_BUCKET = 256;
1616
*/
1717
interface IInbox {
1818
struct InboxState {
19-
// Legacy 128-bit keccak rolling hash of all messages inserted into the inbox. Consumed only by the
20-
// node for message sync and L1-reorg detection.
21-
// TODO: remove once the node relies on the full-width consensus rolling hash tracked in the buckets
22-
// instead (AZIP-22 Fast Inbox).
23-
bytes16 rollingHash;
2419
// Cumulative number of messages inserted into the inbox. Useful for synching the node faster as it can
2520
// more easily figure out if it can just skip looking for events for a time period.
2621
uint64 totalMessagesInserted;
@@ -50,13 +45,10 @@ interface IInbox {
5045
* @notice Emitted when a message is sent
5146
* @param index - The compact cumulative index of the message in the Inbox insertion order
5247
* @param hash - The hash of the message
53-
* @param rollingHash - The legacy 128-bit rolling hash of all messages inserted into the inbox
5448
* @param inboxRollingHash - The consensus rolling hash (truncated sha256 chain) after this message
5549
* @param bucketSeq - The sequence number of the bucket this message was absorbed into
5650
*/
57-
event MessageSent(
58-
uint256 index, bytes32 indexed hash, bytes16 rollingHash, bytes32 inboxRollingHash, uint256 bucketSeq
59-
);
51+
event MessageSent(uint256 index, bytes32 indexed hash, bytes32 inboxRollingHash, uint256 bucketSeq);
6052

6153
// docs:start:send_l1_to_l2_message
6254
/**

l1-contracts/src/core/messagebridge/Inbox.sol

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ contract Inbox is IInbox {
3737

3838
uint256 public immutable BUCKET_RING_SIZE;
3939

40-
// Legacy 128-bit keccak rolling hash over every inserted message leaf. Consumed only by the node's
41-
// message sync and L1-reorg detection; retained until those switch to the full-width consensus rolling
42-
// hash tracked in the buckets (AZIP-22 Fast Inbox).
43-
bytes16 internal messagesRollingHash;
44-
4540
// Ring of rolling-hash buckets, keyed by `bucketSeq % BUCKET_RING_SIZE`. Consumed by the streaming inbox
4641
// checks at `propose` (AZIP-22 Fast Inbox).
4742
mapping(uint256 ringIndex => InboxBucket bucket) internal buckets;
@@ -106,11 +101,9 @@ contract Inbox is IInbox {
106101

107102
bytes32 leaf = message.sha256ToField();
108103

109-
messagesRollingHash = bytes16(keccak256(abi.encodePacked(messagesRollingHash, leaf)));
110-
111104
(uint64 bucketSeq, bytes32 inboxRollingHash) = _absorbIntoBucket(leaf);
112105

113-
emit MessageSent(index, leaf, messagesRollingHash, inboxRollingHash, bucketSeq);
106+
emit MessageSent(index, leaf, inboxRollingHash, bucketSeq);
114107

115108
return (leaf, index);
116109
}
@@ -120,7 +113,7 @@ contract Inbox is IInbox {
120113
}
121114

122115
function getState() external view override(IInbox) returns (InboxState memory) {
123-
return InboxState({rollingHash: messagesRollingHash, totalMessagesInserted: _totalMessagesInserted()});
116+
return InboxState({totalMessagesInserted: _totalMessagesInserted()});
124117
}
125118

126119
function getTotalMessagesInserted() external view override(IInbox) returns (uint64) {

l1-contracts/test/Inbox.t.sol

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,10 @@ contract InboxTest is Test {
6666
DataStructures.L1ToL2Msg memory message = _boundMessage(_message, globalLeafIndex);
6767

6868
bytes32 leaf = message.sha256ToField();
69-
bytes16 expectedRollingHash = bytes16(keccak256(abi.encodePacked(stateBefore.rollingHash, leaf)));
7069
bytes32 expectedInboxRollingHash = Hash.accumulateInboxRollingHash(bytes32(0), leaf);
7170
vm.expectEmit(true, true, true, true);
7271
// event we expect
73-
emit IInbox.MessageSent(globalLeafIndex, leaf, expectedRollingHash, expectedInboxRollingHash, 1);
72+
emit IInbox.MessageSent(globalLeafIndex, leaf, expectedInboxRollingHash, 1);
7473
// event we will get
7574
(bytes32 insertedLeaf, uint256 insertedIndex) =
7675
inbox.sendL2Message(message.recipient, message.content, message.secretHash);
@@ -80,7 +79,6 @@ contract InboxTest is Test {
8079

8180
Inbox.InboxState memory stateAfter = inbox.getState();
8281
assertEq(stateBefore.totalMessagesInserted + 1, stateAfter.totalMessagesInserted);
83-
assertEq(expectedRollingHash, stateAfter.rollingHash);
8482
}
8583

8684
function testSendDuplicateL2Messages() public {

l1-contracts/test/InboxBuckets.t.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,10 @@ contract InboxBucketsTest is Test {
132132
index: inbox.getState().totalMessagesInserted
133133
});
134134
bytes32 leaf = Hash.sha256ToField(message);
135-
bytes16 legacyHash = bytes16(keccak256(abi.encodePacked(inbox.getState().rollingHash, leaf)));
136135
bytes32 inboxRollingHash = Hash.accumulateInboxRollingHash(bytes32(0), leaf);
137136

138137
vm.expectEmit(true, true, true, true, address(inbox));
139-
emit IInbox.MessageSent(message.index, leaf, legacyHash, inboxRollingHash, 1);
138+
emit IInbox.MessageSent(message.index, leaf, inboxRollingHash, 1);
140139
inbox.sendL2Message(recipient, content, secretHash);
141140
}
142141

l1-contracts/test/fee_portal/depositToAztecPublic.t.sol

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,9 @@ contract DepositToAztecPublic is Test {
8686

8787
assertEq(inbox.getTotalMessagesInserted(), 0);
8888

89-
bytes16 expectedHash = bytes16(keccak256(abi.encodePacked(inbox.getState().rollingHash, expectedKey)));
9089
bytes32 expectedInboxRollingHash = Hash.accumulateInboxRollingHash(bytes32(0), expectedKey);
9190
vm.expectEmit(true, true, true, true, address(inbox));
92-
emit IInbox.MessageSent(expectedIndex, expectedKey, expectedHash, expectedInboxRollingHash, 1);
91+
emit IInbox.MessageSent(expectedIndex, expectedKey, expectedInboxRollingHash, 1);
9392
vm.expectEmit(true, true, true, true, address(feeJuicePortal));
9493
emit IFeeJuicePortal.DepositToAztecPublic(to, amount, secretHash, expectedKey, expectedIndex);
9594

l1-contracts/test/portals/TokenPortal.t.sol

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,11 @@ contract TokenPortalTest is Test {
120120
DataStructures.L1ToL2Msg memory expectedMessage = _createExpectedMintPrivateL1ToL2Message(expectedIndex);
121121

122122
bytes32 expectedLeaf = expectedMessage.sha256ToField();
123-
bytes16 expectedHash = bytes16(keccak256(abi.encodePacked(inbox.getState().rollingHash, expectedLeaf)));
124123
bytes32 expectedInboxRollingHash = Hash.accumulateInboxRollingHash(bytes32(0), expectedLeaf);
125124
// Check the event was emitted
126125
vm.expectEmit(true, true, true, true);
127126
// event we expect
128-
emit IInbox.MessageSent(expectedIndex, expectedLeaf, expectedHash, expectedInboxRollingHash, 1);
127+
emit IInbox.MessageSent(expectedIndex, expectedLeaf, expectedInboxRollingHash, 1);
129128
// event we will get
130129

131130
// Perform op
@@ -148,13 +147,12 @@ contract TokenPortalTest is Test {
148147
uint256 expectedIndex = 0;
149148
DataStructures.L1ToL2Msg memory expectedMessage = _createExpectedMintPublicL1ToL2Message(expectedIndex);
150149
bytes32 expectedLeaf = expectedMessage.sha256ToField();
151-
bytes16 expectedHash = bytes16(keccak256(abi.encodePacked(inbox.getState().rollingHash, expectedLeaf)));
152150
bytes32 expectedInboxRollingHash = Hash.accumulateInboxRollingHash(bytes32(0), expectedLeaf);
153151

154152
// Check the event was emitted
155153
vm.expectEmit(true, true, true, true);
156154
// event we expect
157-
emit IInbox.MessageSent(expectedIndex, expectedLeaf, expectedHash, expectedInboxRollingHash, 1);
155+
emit IInbox.MessageSent(expectedIndex, expectedLeaf, expectedInboxRollingHash, 1);
158156

159157
// Perform op
160158
(bytes32 leaf, uint256 index) = tokenPortal.depositToAztecPublic(to, amount, secretHashForL2MessageConsumption);

0 commit comments

Comments
 (0)