Skip to content

Commit a2b9d2d

Browse files
committed
update test
1 parent 9e42c20 commit a2b9d2d

7 files changed

+25
-41
lines changed

src/protocol/ETHBridge.sol

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {IETHBridge} from "./IETHBridge.sol";
66
/// @dev Abstract ETH bridging contract to send native ETH between L1 <-> L2 using storage proofs.
77
///
88
/// IMPORTANT: No recovery mechanism is implemented in case an account creates a deposit that can't be claimed.
9-
abstract contract ETHBridge is IETHBridge {
9+
contract ETHBridge is IETHBridge {
1010
mapping(bytes32 id => bool claimed) private _claimed;
1111

1212
/// Incremental nonce to generate unique deposit IDs.
@@ -36,10 +36,12 @@ abstract contract ETHBridge is IETHBridge {
3636
}
3737

3838
/// @inheritdoc IETHBridge
39-
function claimDeposit(ETHDeposit memory deposit, uint256 height, bytes memory proof)
39+
function claimDeposit(ETHDeposit memory ethDeposit, uint256 height, bytes memory proof)
4040
external
41-
virtual
42-
returns (bytes32 id);
41+
returns (bytes32 id)
42+
{
43+
id = _generateId(ethDeposit);
44+
}
4345

4446
/// @dev Processes deposit claim by id.
4547
/// @param id Identifier of the deposit

src/protocol/ICheckpointTracker.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ interface ICheckpointTracker {
1010
/// @notice Emitted when the proven checkpoint is updated
1111
/// @param publicationId the publication ID of the latest proven checkpoint
1212
/// @param commitment the commitment of the latest proven checkpoint
13-
event CheckpointUpdated(uint256 publicationId, bytes32 commitment);
13+
event CheckpointUpdated(uint256 indexed publicationId, bytes32 commitment);
1414

1515
/// @dev If genesis is not 0 it should be the latest publication
1616
/// @param latestPublicationId the current latest publication ID

src/protocol/SignalService.sol

-21
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,6 @@ contract SignalService is ISignalService, CommitmentStore {
4444
emit SignalVerified(sender, value);
4545
}
4646

47-
/// @dev Overrides ETHBridge.depositETH to add signaling functionality.
48-
function deposit(address to, bytes memory data) public payable override returns (bytes32 id) {
49-
id = super.deposit(to, data);
50-
id.signal(msg.sender, ETH_BRIDGE_NAMESPACE);
51-
}
52-
53-
// CHECK: Should this function be non-reentrant?
54-
/// @inheritdoc ETHBridge
55-
/// @dev Overrides ETHBridge.claimDeposit to add signal verification logic.
56-
function claimDeposit(ETHDeposit memory ethDeposit, uint256 height, bytes memory proof)
57-
external
58-
override
59-
returns (bytes32 id)
60-
{
61-
id = _generateId(ethDeposit);
62-
63-
_verifySignal(height, commitmentPublisher, ethDeposit.from, id, ETH_BRIDGE_NAMESPACE, proof);
64-
65-
super._processClaimDepositWithId(id, ethDeposit);
66-
}
67-
6847
function _verifySignal(
6948
uint256 height,
7049
address commitmentPublisher,

test/CheckpointTracker.t.sol

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ contract CheckpointTrackerTest is Test {
6464
ICheckpointTracker.Checkpoint({publicationId: 0, commitment: genesisCommitment});
6565

6666
vm.expectEmit();
67-
emit ICheckpointTracker.CheckpointUpdated(genesisCheckpoint);
67+
emit ICheckpointTracker.CheckpointUpdated(genesisCheckpoint.publicationId, genesisCheckpoint.commitment);
6868
new CheckpointTracker(
6969
genesisCommitment, address(feed), address(verifier), proverManager, address(signalService)
7070
);
@@ -78,7 +78,7 @@ contract CheckpointTrackerTest is Test {
7878
uint256 numRelevantPublications = 2;
7979

8080
vm.expectEmit();
81-
emit ICheckpointTracker.CheckpointUpdated(end);
81+
emit ICheckpointTracker.CheckpointUpdated(end.publicationId, end.commitment);
8282
tracker.proveTransition(start, end, numRelevantPublications, proof);
8383

8484
ICheckpointTracker.Checkpoint memory provenCheckpoint = tracker.getProvenCheckpoint();

test/ProverManager.t.sol

-2
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,9 @@ contract ProverManagerTest is Test {
4343
uint256 constant INITIAL_PERIOD = 1;
4444

4545
function setUp() public {
46-
signalService = new SignalService(rollupOperator);
4746
checkpointTracker = new MockCheckpointTracker(address(signalService));
4847
publicationFeed = new PublicationFeed();
4948
vm.prank(rollupOperator);
50-
signalService.setAuthorizedCommitter(address(checkpointTracker));
5149

5250
// Fund the initial prover so the constructor can receive the required livenessBond.
5351
vm.deal(initialProver, 10 ether);

test/signal/ETHBridge.t.sol

+14-6
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,26 @@ contract BridgeETHState is BaseState {
1919
uint256 public depositAmount = 4 ether;
2020
ETHBridge.ETHDeposit public depositOne;
2121

22+
ETHBridge public L1ethBridge;
23+
ETHBridge public L2ethBridge;
24+
2225
// this is a valid deposit ID but is sent via a signal not a deposit
2326
// hence "invalid" and should not be claimable
2427
bytes32 invalidDepositId = 0xbf8ce3088406c4ddbc32e32404ca006c3ef57f07d5139479f16c9124d6490f2e;
2528

2629
function setUp() public virtual override {
2730
super.setUp();
31+
32+
vm.selectFork(L2Fork);
33+
L2ethBridge = new ETHBridge();
34+
2835
vm.selectFork(L1Fork);
36+
L1ethBridge = new ETHBridge();
2937

3038
vm.prank(defaultSender);
3139
bytes memory emptyData = "";
3240
vm.recordLogs();
33-
depositIdOne = L1signalService.deposit{value: depositAmount}(defaultSender, emptyData);
41+
depositIdOne = L1ethBridge.deposit{value: depositAmount}(defaultSender, emptyData);
3442

3543
Vm.Log[] memory entries = vm.getRecordedLogs();
3644

@@ -47,7 +55,7 @@ contract ETHBridgeTest is BridgeETHState {
4755
assertEq(defaultSender.balance, senderBalanceL1 - depositAmount);
4856

4957
vm.selectFork(L2Fork);
50-
assertEq(L2signalService.claimed(depositIdOne), false);
58+
assertEq(L2ethBridge.claimed(depositIdOne), false);
5159
assertEq(defaultSender.balance, senderBalanceL2);
5260
}
5361
}
@@ -99,9 +107,9 @@ contract ClaimDepositTest is CommitmentStoredState {
99107
ISignalService.SignalProof memory signalProof = ISignalService.SignalProof(accountProof, storageProof);
100108
bytes memory encodedProof = abi.encode(signalProof);
101109

102-
L2signalService.claimDeposit(depositOne, commitmentHeight, encodedProof);
110+
L2ethBridge.claimDeposit(depositOne, commitmentHeight, encodedProof);
103111

104-
assertEq(address(L2signalService).balance, ETHBridgeInitBalance - depositAmount);
112+
assertEq(address(L2ethBridge).balance, ETHBridgeInitBalance - depositAmount);
105113
assertEq(defaultSender.balance, senderBalanceL2 + depositAmount);
106114
}
107115

@@ -129,9 +137,9 @@ contract ClaimDepositTest is CommitmentStoredState {
129137

130138
vm.selectFork(L2Fork);
131139
// to be extra sure its not a problem with the proof
132-
L2signalService.verifySignal(commitmentHeight, defaultSender, invalidDepositId, encodedProof);
140+
L2signalService.verifySignal(commitmentHeight, address(anchor), defaultSender, invalidDepositId, encodedProof);
133141
// I believe this error means that the proof is not valid for this deposit id
134142
vm.expectRevert("MerkleTrie: invalid large internal hash");
135-
L2signalService.claimDeposit(invalidDeposit, commitmentHeight, encodedProof);
143+
L2ethBridge.claimDeposit(invalidDeposit, commitmentHeight, encodedProof);
136144
}
137145
}

test/signal/SignalService.t.sol

+2-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ contract BaseState is Test {
4848
vm.deal(defaultSender, senderBalanceL1);
4949

5050
vm.prank(defaultSender);
51-
L1signalService = new SignalService(rollupOperator);
5251
vm.deal(address(L1signalService), ETHBridgeInitBalance);
5352

5453
checkpointTracker = new MockCheckpointTracker(address(L1signalService));
@@ -60,13 +59,11 @@ contract BaseState is Test {
6059
vm.deal(defaultSender, senderBalanceL2);
6160

6261
vm.prank(defaultSender);
63-
L2signalService = new SignalService(rollupOperator);
6462
vm.deal(address(L2signalService), ETHBridgeInitBalance);
6563

6664
anchor = new MockAnchor(address(L2signalService));
6765

6866
vm.prank(rollupOperator);
69-
L2signalService.setAuthorizedCommitter(address(anchor));
7067

7168
// Labels for debugging
7269
vm.label(address(L1signalService), "L1signalService");
@@ -132,7 +129,7 @@ contract SendL1SignalTest is SendL1SignalState {
132129
uint256 height = 1;
133130
anchor.anchor(height, stateRoot);
134131

135-
L2signalService.verifySignal(height, defaultSender, signal, encodedProof);
132+
L2signalService.verifySignal(height, address(anchor), defaultSender, signal, encodedProof);
136133
}
137134

138135
function test_verifyL1Signal_UsingStorageProof() public {
@@ -145,6 +142,6 @@ contract SendL1SignalTest is SendL1SignalState {
145142
uint256 height = 1;
146143
anchor.anchor(height, storageRoot);
147144

148-
L2signalService.verifySignal(height, defaultSender, signal, encodedProof);
145+
L2signalService.verifySignal(height, address(anchor), defaultSender, signal, encodedProof);
149146
}
150147
}

0 commit comments

Comments
 (0)