-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathInitialState.t.sol
More file actions
47 lines (35 loc) · 1.67 KB
/
Copy pathInitialState.t.sol
File metadata and controls
47 lines (35 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import "forge-std/Test.sol";
import {SampleDepositProof} from "./SampleDepositProof.t.sol";
import {ETHBridge} from "src/protocol/ETHBridge.sol";
import {SignalService} from "src/protocol/SignalService.sol";
abstract contract InitialState is Test {
ETHBridge bridge;
SignalService signalService;
address counterpart;
SampleDepositProof sampleDepositProof;
// zero address means any relayer is allowed
bytes anyRelayer = new bytes(0);
// address that can cancel deposits (if specified in the ETHDeposit)
address cancelerAddress = _randomAddress("canceler");
address zeroCanceler = address(0);
address trustedCommitmentPublisher = _randomAddress("trustedCommitmentPublisher");
function setUp() public virtual {
sampleDepositProof = new SampleDepositProof();
// The SignalService on this chain should be at the same address as the source chain.
signalService = SignalService(sampleDepositProof.getSignalServiceAddress());
deployCodeTo("SignalService.sol", address(signalService));
counterpart = sampleDepositProof.getBridgeAddress();
bridge = new ETHBridge(address(signalService), trustedCommitmentPublisher, counterpart);
}
function _randomAddress(string memory name) internal pure returns (address) {
return address(uint160(uint256(keccak256(abi.encode(_domainSeparator(), name)))));
}
function _domainSeparator() internal pure returns (bytes32) {
return keccak256("ETHBridge");
}
function getNonce() internal view returns (uint256) {
return uint256(vm.load(address(bridge), bytes32(uint256(1))));
}
}