Skip to content

Commit

Permalink
hotfix for setPools
Browse files Browse the repository at this point in the history
  • Loading branch information
olegkron committed Dec 12, 2024
1 parent 50f87e9 commit e527565
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 143 deletions.
10 changes: 5 additions & 5 deletions .env.deployments.mainnet
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ CHILD_POOL_PROXY_ADMIN_AVALANCHE=0x3888A36fF10D894DA4000c94340C40761138C69F
CHILD_POOL_PROXY_ADMIN_POLYGON=0x3888A36fF10D894DA4000c94340C40761138C69F

### CHILD POOLS IMPLEMENTATIONS MAINNET ###
CHILD_POOL_ARBITRUM=0x0786fF7667393A926A19812F45c510BF148E9e07
CHILD_POOL_POLYGON=0x021CA4CFDFaDFc0Ec78731a6467d7e4110E2aFe8
CHILD_POOL_AVALANCHE=0xE6F7331FBf3aC0d2431Fa6e8E30025C27227Dc8B
CHILD_POOL_ARBITRUM=0x005fbD9F071089E4809D96125593C91DA06cfb8a
CHILD_POOL_POLYGON=0x0E7e4F4051dc1Ed9a4e6925c8ae81Bc7A7dadA03
CHILD_POOL_AVALANCHE=0xE00c9F35c22af8Ea0fE0e1aBB7055B036CD9670c

### PARENT POOL PROXY PRODUCTION CONTRACTS ADDRESSES ###
PARENT_POOL_PROXY_BASE=0x0AE1B2730066AD46481ab0a5fd2B5893f8aBa323
Expand All @@ -50,7 +50,7 @@ PARENT_POOL_PROXY_BASE=0x0AE1B2730066AD46481ab0a5fd2B5893f8aBa323
PARENT_POOL_PROXY_ADMIN_BASE=0xF069f384a177083c4d62539e187860d2e163b0F4

### PARENT POOL IMPLEMENTATION PRODUCTION CONTRACTS ADDRESSES ###
PARENT_POOL_BASE=0x00ae866A88ED98582F796A4a9c5e8a472a3fDd29
PARENT_POOL_BASE=0xd1e678F184Bc10814c834910B49207A3f84bbf8f

PARENT_POOL_AUTOMATION_FORWARDER_BASE=0x15B457D85653A2cdebCd8E742bBCcADB1691bc2A

Expand All @@ -72,4 +72,4 @@ CONCERO_PAUSE_POLYGON=0x00c4d25487297C4fc1341aa840a4F56e474f6A0d
CONCERO_PAUSE_BASE=0x00c4d25487297C4fc1341aa840a4F56e474f6A0d
CONCERO_PAUSE_AVALANCHE=0x00c4d25487297C4fc1341aa840a4F56e474f6A0d

PARENT_POOL_CLF_CLA_BASE=0x9015c8E94D168b4DF96aC189Cd7b54F94B77C94F
PARENT_POOL_CLF_CLA_BASE=0x16920260fbd66960A1Ef71dca1560c231C53B36f
69 changes: 0 additions & 69 deletions contracts/ChildPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,6 @@ contract ChildPool is CCIPReceiver, ChildPoolStorage {
abi.decode(any2EvmMessage.sender, (address))
)
{
if (_isOldCcipFailedMessage(any2EvmMessage)) {
_processOldCcipFailedMessage(any2EvmMessage);
return;
}

ICCIP.CcipTxData memory ccipTxData = abi.decode(any2EvmMessage.data, (ICCIP.CcipTxData));
uint256 ccipReceivedAmount = any2EvmMessage.destTokenAmounts[0].amount;
address ccipReceivedToken = any2EvmMessage.destTokenAmounts[0].token;
Expand Down Expand Up @@ -339,70 +334,6 @@ contract ChildPool is CCIPReceiver, ChildPoolStorage {
);
}

function _processOldCcipFailedMessage(Client.Any2EVMMessage memory message) internal {
if (message.destTokenAmounts[0].token != address(i_USDC)) {
revert NotUsdcToken();
}

(address lpAddress, address user, uint256 receivedFee) = abi.decode(
message.data,
(address, address, uint256)
);

bool isUserTx = receivedFee > 0 && user != address(0);
bool isWithdrawalTx = lpAddress != address(0);

if (isUserTx) {
bool isTxConfirmed = IInfraOrchestrator(i_infraProxy).isTxConfirmed(message.messageId);

if (!isTxConfirmed) {
IInfraOrchestrator(i_infraProxy).confirmTx(message.messageId);
i_USDC.safeTransfer(user, message.destTokenAmounts[0].amount);
} else {
uint256 amountAfterFees = (message.destTokenAmounts[0].amount - receivedFee);
s_loansInUse -= amountAfterFees;
}
} else if (isWithdrawalTx) {
revert("Old CCIP failed message");
}

emit CCIPReceived(
message.messageId,
message.sourceChainSelector,
abi.decode(message.sender, (address)),
message.destTokenAmounts[0].token,
message.destTokenAmounts[0].amount
);
}

function _isOldCcipFailedMessage(
Client.Any2EVMMessage memory message
) internal pure returns (bool) {
bytes32[13] memory failedMessages = [
bytes32(0xf5fa6715661250a9a69c0b7a3deee972f05e4a6ecc551e3731254c2d99bb0039),
bytes32(0x4214466b4db150fa026c619a1c37a5fa26864fde962e326bf78b4116ab25481f),
bytes32(0xbf395fee83447a4ec365efdf6b698daebaa7e1d93220b8bf7952a26493317205),
bytes32(0xb05685f874de4e1377e9b280a99d862fd52add8d7dea879f10b6fe0dcfdd7211),
bytes32(0x087e924eb468df95e97d0aea0cc85bf7367c476bb1751c570033dd6487206c90),
bytes32(0xfbf870987a20d29b24823f413342ccd5a1e85694bc49270b03bcd0091596024e),
bytes32(0xd6c0a2fb3bd52a0edef1c782d2ccd122c1945dd34179148e9488f75bc5e41e68),
bytes32(0x406f4caaaef00a91b16589fff2f4fcd334a9c05978296da810663b2e827b2224),
bytes32(0x32f49eac7b11d44f33215257f9b152e87b3cf572a872c26e7905752b56e7f368),
bytes32(0x828d6857ef072b9bc0f36bc8b363c624c92a67fd76ea62f39b5fa23b637a05c8),
bytes32(0xe70206c11d0773b922e331ec598cedc379e5e7ad2eed813171faf2f72e3d7e1c),
bytes32(0x184e805eec1e349090750e44abf68df005ff06d95a8929cf7eea86bf397a1730),
bytes32(0x185eb6b85943ffaa724a59f151d2b5e717ff1bb9dbaf802ceaec5f63910e0551)
];

for (uint256 i; i < failedMessages.length; i++) {
if (message.messageId == failedMessages[i]) {
return true;
}
}

return false;
}

/**
* @notice Function to Distribute Liquidity across Concero Pools and process withdrawals
* @param _chainSelector the chainSelector of the pool to send the USDC
Expand Down
72 changes: 3 additions & 69 deletions contracts/ParentPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ contract ParentPool is IParentPool, CCIPReceiver, ParentPoolCommon, ParentPoolSt
* @param _usdcAmount amount to be deposited
*/
function startDeposit(uint256 _usdcAmount) external onlyProxyContext {
revert("paused");
if (_usdcAmount < MIN_DEPOSIT) {
revert DepositAmountBelowMinimum(MIN_DEPOSIT);
}
Expand Down Expand Up @@ -297,6 +298,7 @@ contract ParentPool is IParentPool, CCIPReceiver, ParentPoolCommon, ParentPoolSt
* @param _depositRequestId the ID of the deposit request
*/
function completeDeposit(bytes32 _depositRequestId) external onlyProxyContext {
revert("paused");
DepositRequest storage request = s_depositRequests[_depositRequestId];
address lpAddress = request.lpAddress;
uint256 usdcAmount = request.usdcAmountToDeposit;
Expand Down Expand Up @@ -337,6 +339,7 @@ contract ParentPool is IParentPool, CCIPReceiver, ParentPoolCommon, ParentPoolSt
* @param _lpAmount the amount of LP tokens to be burnt
*/
function startWithdrawal(uint256 _lpAmount) external onlyProxyContext {
revert("paused");
if (_lpAmount < 1 ether) revert WithdrawAmountBelowMinimum(1 ether);
if (s_withdrawalIdByLPAddress[msg.sender] != bytes32(0)) {
revert WithdrawalRequestAlreadyExists();
Expand Down Expand Up @@ -621,11 +624,6 @@ contract ParentPool is IParentPool, CCIPReceiver, ParentPoolCommon, ParentPoolSt
abi.decode(any2EvmMessage.sender, (address))
)
{
if (_isOldCcipFailedMessage(any2EvmMessage)) {
_processOldCcipFailedMessage(any2EvmMessage);
return;
}

ICCIP.CcipTxData memory ccipTxData = abi.decode(any2EvmMessage.data, (ICCIP.CcipTxData));
uint256 ccipReceivedAmount = any2EvmMessage.destTokenAmounts[0].amount;
address ccipReceivedToken = any2EvmMessage.destTokenAmounts[0].token;
Expand Down Expand Up @@ -688,70 +686,6 @@ contract ParentPool is IParentPool, CCIPReceiver, ParentPoolCommon, ParentPoolSt
);
}

function _processOldCcipFailedMessage(Client.Any2EVMMessage memory message) internal {
if (message.destTokenAmounts[0].token != address(i_USDC)) {
revert NotUsdcToken();
}

(address lpAddress, address user, uint256 receivedFee) = abi.decode(
message.data,
(address, address, uint256)
);

bool isUserTx = receivedFee > 0 && user != address(0);
bool isWithdrawalTx = lpAddress != address(0);

if (isUserTx) {
bool isTxConfirmed = IInfraOrchestrator(i_infraProxy).isTxConfirmed(message.messageId);

if (!isTxConfirmed) {
IInfraOrchestrator(i_infraProxy).confirmTx(message.messageId);
i_USDC.safeTransfer(user, message.destTokenAmounts[0].amount);
} else {
uint256 amountAfterFees = (message.destTokenAmounts[0].amount - receivedFee);
s_loansInUse -= amountAfterFees;
}
} else if (isWithdrawalTx) {
revert("Old CCIP failed message");
}

emit CCIPReceived(
message.messageId,
message.sourceChainSelector,
abi.decode(message.sender, (address)),
message.destTokenAmounts[0].token,
message.destTokenAmounts[0].amount
);
}

function _isOldCcipFailedMessage(
Client.Any2EVMMessage memory message
) internal pure returns (bool) {
bytes32[13] memory failedMessages = [
bytes32(0xf5fa6715661250a9a69c0b7a3deee972f05e4a6ecc551e3731254c2d99bb0039),
bytes32(0x4214466b4db150fa026c619a1c37a5fa26864fde962e326bf78b4116ab25481f),
bytes32(0xbf395fee83447a4ec365efdf6b698daebaa7e1d93220b8bf7952a26493317205),
bytes32(0xb05685f874de4e1377e9b280a99d862fd52add8d7dea879f10b6fe0dcfdd7211),
bytes32(0x087e924eb468df95e97d0aea0cc85bf7367c476bb1751c570033dd6487206c90),
bytes32(0xfbf870987a20d29b24823f413342ccd5a1e85694bc49270b03bcd0091596024e),
bytes32(0xd6c0a2fb3bd52a0edef1c782d2ccd122c1945dd34179148e9488f75bc5e41e68),
bytes32(0x406f4caaaef00a91b16589fff2f4fcd334a9c05978296da810663b2e827b2224),
bytes32(0x32f49eac7b11d44f33215257f9b152e87b3cf572a872c26e7905752b56e7f368),
bytes32(0x828d6857ef072b9bc0f36bc8b363c624c92a67fd76ea62f39b5fa23b637a05c8),
bytes32(0xe70206c11d0773b922e331ec598cedc379e5e7ad2eed813171faf2f72e3d7e1c),
bytes32(0x184e805eec1e349090750e44abf68df005ff06d95a8929cf7eea86bf397a1730),
bytes32(0x185eb6b85943ffaa724a59f151d2b5e717ff1bb9dbaf802ceaec5f63910e0551)
];

for (uint256 i; i < failedMessages.length; i++) {
if (message.messageId == failedMessages[i]) {
return true;
}
}

return false;
}

/**
* @notice Function to process the withdraw request
* @param withdrawalId the id of the withdraw request
Expand Down

0 comments on commit e527565

Please sign in to comment.