Skip to content

Commit 4bed9de

Browse files
committed
fixed relayed openFor call
1 parent 904d5d8 commit 4bed9de

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

src/allocators/ERC7683Allocator.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ contract ERC7683Allocator is SimpleAllocator, IERC7683Allocator {
195195
returns (bytes32 tokenHash_)
196196
{
197197
tokenHash_ = _checkAllocation(
198-
Compact({arbiter: arbiter, sponsor: sponsor, nonce: nonce, expires: expires, id: id, amount: amount})
198+
Compact({arbiter: arbiter, sponsor: sponsor, nonce: nonce, expires: expires, id: id, amount: amount}), false
199199
);
200200
_claim[tokenHash_] = expires;
201201
_amount[tokenHash_] = amount;

test/ERC7683Allocator.t.sol

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ contract ERC7683Allocator_openFor is GaslessCrossChainOrderData {
459459
erc7683Allocator.openFor(gaslessCrossChainOrder_, sponsorSignature, '');
460460
}
461461

462-
function test_successful() public {
462+
function test_successful_userHimself() public {
463463
// Deposit tokens
464464
vm.startPrank(user);
465465
usdc.mint(user, defaultAmount);
@@ -514,6 +514,61 @@ contract ERC7683Allocator_openFor is GaslessCrossChainOrderData {
514514
erc7683Allocator.openFor(gaslessCrossChainOrder_, sponsorSignature, '');
515515
}
516516

517+
function test_successful_relayed() public {
518+
// Deposit tokens
519+
vm.startPrank(user);
520+
usdc.mint(user, defaultAmount);
521+
usdc.approve(address(compactContract), defaultAmount);
522+
compactContract.deposit(
523+
address(usdc), address(erc7683Allocator), defaultResetPeriod, defaultScope, defaultAmount, user
524+
);
525+
vm.stopPrank();
526+
527+
(IOriginSettler.GaslessCrossChainOrder memory gaslessCrossChainOrder_, bytes memory sponsorSignature) =
528+
_getGaslessCrossChainOrder();
529+
IOriginSettler.Output[] memory maxSpent = new IOriginSettler.Output[](1);
530+
IOriginSettler.Output[] memory minReceived = new IOriginSettler.Output[](1);
531+
IOriginSettler.FillInstruction[] memory fillInstructions = new IOriginSettler.FillInstruction[](1);
532+
maxSpent[0] = IOriginSettler.Output({
533+
token: bytes32(uint256(uint160(defaultOutputToken))),
534+
amount: type(uint256).max,
535+
recipient: bytes32(uint256(uint160(user))),
536+
chainId: defaultOutputChainId
537+
});
538+
minReceived[0] = IOriginSettler.Output({
539+
token: bytes32(uint256(uint160(address(usdc)))),
540+
amount: defaultAmount,
541+
recipient: '',
542+
chainId: block.chainid
543+
});
544+
Claim memory claim = Claim({
545+
chainId: block.chainid,
546+
compact: _getCompact(),
547+
sponsorSignature: sponsorSignature,
548+
allocatorSignature: ''
549+
});
550+
fillInstructions[0] = IOriginSettler.FillInstruction({
551+
destinationChainId: defaultOutputChainId,
552+
destinationSettler: bytes32(uint256(uint160(tribunal))),
553+
originData: abi.encode(claim, _getMandate())
554+
});
555+
556+
IOriginSettler.ResolvedCrossChainOrder memory resolvedCrossChainOrder = IOriginSettler.ResolvedCrossChainOrder({
557+
user: user,
558+
originChainId: block.chainid,
559+
openDeadline: uint32(_getClaimExpiration()),
560+
fillDeadline: uint32(_getFillExpiration()),
561+
orderId: bytes32(defaultNonce),
562+
maxSpent: maxSpent,
563+
minReceived: minReceived,
564+
fillInstructions: fillInstructions
565+
});
566+
vm.prank(makeAddr('filler'));
567+
vm.expectEmit(true, false, false, true, address(erc7683Allocator));
568+
emit IOriginSettler.Open(bytes32(defaultNonce), resolvedCrossChainOrder);
569+
erc7683Allocator.openFor(gaslessCrossChainOrder_, sponsorSignature, '');
570+
}
571+
517572
function test_revert_NonceAlreadyInUse() public {
518573
// Nonce is already used
519574

0 commit comments

Comments
 (0)