@@ -33,15 +33,11 @@ contract HostPassage {
33
33
/// Corresponds to recipient_H in the RollupPassage contract.
34
34
/// @param amount - The amount of the token to be transferred to the recipient.
35
35
/// Corresponds to one or more amountOutMinimum_H in the RollupPassage contract.
36
- /// @param deadline - The deadline by which the exit order must be fulfilled.
37
- /// Corresponds to deadline in the RollupPassage contract.
38
- /// If the ExitOrder is a combination of multiple orders, the deadline SHOULD be the latest of all orders.
39
36
struct ExitOrder {
40
37
uint256 rollupChainId;
41
38
address token;
42
39
address recipient;
43
40
uint256 amount;
44
- uint256 deadline;
45
41
}
46
42
47
43
constructor (uint256 _defaultRollupChainId ) {
@@ -82,6 +78,11 @@ contract HostPassage {
82
78
/// @notice Fulfills exit orders by transferring tokenOut to the recipient
83
79
/// @param orders The exit orders to fulfill
84
80
/// @custom:emits ExitFilled for each exit order fulfilled.
81
+ /// @dev Builder SHOULD call `filfillExits` atomically with `submitBlock`.
82
+ /// Builder SHOULD set a block expiration time that is AT MOST the minimum of all exit order deadlines;
83
+ /// this way, `fulfillExits` + `submitBlock` will revert atomically on mainnet if any exit orders have expired.
84
+ /// Otherwise, `filfillExits` may mine on mainnet, while `submitExit` reverts on the rollup,
85
+ /// and the Builder can't collect the corresponding value on the rollup.
85
86
/// @dev Called by the Builder atomically with a transaction calling `submitBlock`.
86
87
/// The user-submitted transactions initiating the ExitOrders on the rollup
87
88
/// must be included by the Builder in the rollup block submitted via `submitBlock`.
@@ -96,8 +97,6 @@ contract HostPassage {
96
97
function fulfillExits (ExitOrder[] calldata orders ) external payable {
97
98
uint256 etherTransferred = msg .value ;
98
99
for (uint256 i = 0 ; i < orders.length ; i++ ) {
99
- // check that the deadline hasn't passed
100
- if (block .timestamp > orders[i].deadline) revert OrderExpired ();
101
100
// transfer value
102
101
if (orders[i].token == address (0 )) {
103
102
// transfer native Ether to the recipient
0 commit comments