Skip to content

Commit c7ee156

Browse files
use centrifuge lib in foreign controller (#101)
1 parent 1af278f commit c7ee156

File tree

2 files changed

+17
-35
lines changed

2 files changed

+17
-35
lines changed

src/ForeignController.sol

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ import { ICCTPLike } from "./interfaces/CCTPInterfaces.sol";
1818
import { IRateLimits } from "./interfaces/IRateLimits.sol";
1919
import { IPendleMarket } from "./interfaces/PendleInterfaces.sol";
2020

21-
import { CurveLib } from "./libraries/CurveLib.sol";
22-
import { MerklLib } from "./libraries/MerklLib.sol";
23-
import { PendleLib } from "./libraries/PendleLib.sol";
24-
import { CCTPLib } from "./libraries/CCTPLib.sol";
25-
import { ERC20Lib } from "./libraries/common/ERC20Lib.sol";
26-
import { UniswapV3Lib } from "./libraries/UniswapV3Lib.sol";
21+
import { CentrifugeLib } from "./libraries/CentrifugeLib.sol";
22+
import { CurveLib } from "./libraries/CurveLib.sol";
23+
import { MerklLib } from "./libraries/MerklLib.sol";
24+
import { PendleLib } from "./libraries/PendleLib.sol";
25+
import { CCTPLib } from "./libraries/CCTPLib.sol";
26+
import { ERC20Lib } from "./libraries/common/ERC20Lib.sol";
27+
import { UniswapV3Lib } from "./libraries/UniswapV3Lib.sol";
2728

2829
import { ISwapRouter, INonfungiblePositionManager } from "./interfaces/UniswapV3Interfaces.sol";
2930
import { ICentrifugeV3VaultLike, IAsyncRedeemManagerLike, ISpokeLike } from "./interfaces/CentrifugeInterfaces.sol";
@@ -615,34 +616,15 @@ contract ForeignController is AccessControl {
615616
external payable
616617
{
617618
_checkRole(RELAYER);
618-
_rateLimited(
619-
keccak256(abi.encode(LIMIT_CENTRIFUGE_TRANSFER, token, destinationCentrifugeId)),
620-
amount
621-
);
622-
623-
bytes32 recipient = centrifugeRecipients[destinationCentrifugeId];
624-
require(recipient != 0, "FC/id-not-configured");
625-
626-
ICentrifugeV3VaultLike centrifugeVault = ICentrifugeV3VaultLike(token);
627-
628-
address spoke = IAsyncRedeemManagerLike(centrifugeVault.manager()).spoke();
629-
630-
// Initiate cross-chain transfer via the specific spoke address
631-
proxy.doCallWithValue{value: msg.value}(
632-
spoke,
633-
abi.encodeCall(
634-
ISpokeLike(spoke).crosschainTransferShares,
635-
(
636-
destinationCentrifugeId,
637-
centrifugeVault.poolId(),
638-
centrifugeVault.scId(),
639-
recipient,
640-
amount,
641-
0
642-
)
643-
),
644-
msg.value
645-
);
619+
CentrifugeLib.transferSharesCentrifuge(CentrifugeLib.CentrifugeTransferParams({
620+
proxy : proxy,
621+
rateLimits : rateLimits,
622+
token : token,
623+
amount : amount,
624+
recipient : centrifugeRecipients[destinationCentrifugeId],
625+
destinationCentrifugeId : destinationCentrifugeId,
626+
rateLimitId : LIMIT_CENTRIFUGE_TRANSFER
627+
}));
646628
}
647629

648630
/**********************************************************************************************/

test/grove-avalanche-fork/Centrifuge.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ contract ForeignControllerTransferSharesCentrifugeFailureTests is CentrifugeTest
10121012
deal(ALM_RELAYER, 1 ether); // Gas cost for Centrifuge
10131013

10141014
vm.startPrank(ALM_RELAYER);
1015-
vm.expectRevert("FC/id-not-configured");
1015+
vm.expectRevert("CentrifugeLib/id-not-configured");
10161016
foreignController.transferSharesCentrifuge{value: 0.5 ether}(
10171017
CENTRIFUGE_VAULT,
10181018
10_000_000e6,

0 commit comments

Comments
 (0)