Skip to content

Commit 72bac44

Browse files
committed
chore(fast-inbox): remove legacy 128-bit inbox rolling hash (A-1386)
1 parent 4bf113e commit 72bac44

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
@@ -11,11 +11,6 @@ import {DataStructures} from "../../libraries/DataStructures.sol";
1111
*/
1212
interface IInbox {
1313
struct InboxState {
14-
// Legacy 128-bit keccak rolling hash of all messages inserted into the inbox. Consumed only by the
15-
// node for message sync and L1-reorg detection.
16-
// TODO: remove once the node relies on the full-width consensus rolling hash tracked in the buckets
17-
// instead (AZIP-22 Fast Inbox).
18-
bytes16 rollingHash;
1914
// Cumulative number of messages inserted into the inbox. Useful for synching the node faster as it can
2015
// more easily figure out if it can just skip looking for events for a time period.
2116
uint64 totalMessagesInserted;
@@ -45,13 +40,10 @@ interface IInbox {
4540
* @notice Emitted when a message is sent
4641
* @param index - The compact cumulative index of the message in the Inbox insertion order
4742
* @param hash - The hash of the message
48-
* @param rollingHash - The legacy 128-bit rolling hash of all messages inserted into the inbox
4943
* @param inboxRollingHash - The consensus rolling hash (truncated sha256 chain) after this message
5044
* @param bucketSeq - The sequence number of the bucket this message was absorbed into
5145
*/
52-
event MessageSent(
53-
uint256 index, bytes32 indexed hash, bytes16 rollingHash, bytes32 inboxRollingHash, uint256 bucketSeq
54-
);
46+
event MessageSent(uint256 index, bytes32 indexed hash, bytes32 inboxRollingHash, uint256 bucketSeq);
5547

5648
// docs:start:send_l1_to_l2_message
5749
/**

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

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

4343
uint256 public immutable BUCKET_RING_SIZE;
4444

45-
// Legacy 128-bit keccak rolling hash over every inserted message leaf. Consumed only by the node's
46-
// message sync and L1-reorg detection; retained until those switch to the full-width consensus rolling
47-
// hash tracked in the buckets (AZIP-22 Fast Inbox).
48-
bytes16 internal messagesRollingHash;
49-
5045
// Ring of rolling-hash buckets, keyed by `bucketSeq % BUCKET_RING_SIZE`. Consumed by the streaming inbox
5146
// checks at `propose` (AZIP-22 Fast Inbox).
5247
mapping(uint256 ringIndex => InboxBucket bucket) internal buckets;
@@ -111,11 +106,9 @@ contract Inbox is IInbox {
111106

112107
bytes32 leaf = message.sha256ToField();
113108

114-
messagesRollingHash = bytes16(keccak256(abi.encodePacked(messagesRollingHash, leaf)));
115-
116109
(uint64 bucketSeq, bytes32 inboxRollingHash) = _absorbIntoBucket(leaf);
117110

118-
emit MessageSent(index, leaf, messagesRollingHash, inboxRollingHash, bucketSeq);
111+
emit MessageSent(index, leaf, inboxRollingHash, bucketSeq);
119112

120113
return (leaf, index);
121114
}
@@ -125,7 +118,7 @@ contract Inbox is IInbox {
125118
}
126119

127120
function getState() external view override(IInbox) returns (InboxState memory) {
128-
return InboxState({rollingHash: messagesRollingHash, totalMessagesInserted: _totalMessagesInserted()});
121+
return InboxState({totalMessagesInserted: _totalMessagesInserted()});
129122
}
130123

131124
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)