This commit is contained in:
sanchaymittal 2023-03-13 16:02:29 +07:00
parent 6e7477bd1b
commit 0ee4b2af83
No known key found for this signature in database
GPG Key ID: D794EEBC262F179E
4 changed files with 53 additions and 104 deletions

View File

@ -3,12 +3,12 @@ pragma solidity ^0.7.0;
contract Events { contract Events {
event LogXCall( event LogXCall(
uint32 destination, uint32 destination,
address to, address to,
address asset, address asset,
address delegate, address delegate,
uint256 amount, uint256 amount,
uint256 slippage, uint256 slippage,
uint256 getId uint256 getId
); );
} }

View File

@ -8,17 +8,20 @@ import { IConnext } from "./interface.sol";
import { IInstaReceiver } from "./interface.sol"; import { IInstaReceiver } from "./interface.sol";
contract Helpers is DSMath, Basic { contract Helpers is DSMath, Basic {
/** /**
* @dev Connext Diamond Address * @dev Connext Diamond Address
*/ */
address internal constant connextAddr = 0x8f7492DE823025b4CfaAB1D34c58963F2af5DEDA; address internal constant connextAddr =
0x8f7492DE823025b4CfaAB1D34c58963F2af5DEDA;
IConnext internal constant connext = IConnext(connextAddr); IConnext internal constant connext = IConnext(connextAddr);
/** /**
* @dev InstaReceiver Address * @dev InstaReceiver Address
*/ */
address internal constant instaReceiverAddr = 0x0000000000000000000000000000000000000000; // TODO: Add InstaReceiver address address internal constant instaReceiverAddr =
IInstaReceiver internal constant instaReceiver = IInstaReceiver(instaReceiverAddr); 0x0000000000000000000000000000000000000000; // TODO: Add InstaReceiver address
IInstaReceiver internal constant instaReceiver =
IInstaReceiver(instaReceiverAddr);
/** /**
* @param destination The destination domain ID. * @param destination The destination domain ID.
@ -30,14 +33,14 @@ contract Helpers is DSMath, Basic {
* @param callData Encoded calldata to send. * @param callData Encoded calldata to send.
*/ */
struct XCallParams { struct XCallParams {
uint32 destination; uint32 destination;
address to; address to;
address asset; address asset;
address delegate; address delegate;
uint256 amount; uint256 amount;
uint256 slippage; uint256 slippage;
uint256 relayerFee; uint256 relayerFee;
bytes callData; bytes callData;
} }
function _xcall(XCallParams memory params) internal { function _xcall(XCallParams memory params) internal {
@ -49,7 +52,7 @@ contract Helpers is DSMath, Basic {
? address(this).balance ? address(this).balance
: params.amount; : params.amount;
// xcall does not take native asset, must wrap // xcall does not take native asset, must wrap
TokenInterface tokenContract = TokenInterface(wethAddr); TokenInterface tokenContract = TokenInterface(wethAddr);
convertEthToWeth(true, tokenContract, params.amount); convertEthToWeth(true, tokenContract, params.amount);
@ -70,11 +73,11 @@ contract Helpers is DSMath, Basic {
connext.xcall{ value: params.relayerFee + nativeTokenAmt }( connext.xcall{ value: params.relayerFee + nativeTokenAmt }(
params.destination, params.destination,
params.to, params.to,
params.asset, params.asset,
params.delegate, params.delegate,
params.amount, params.amount,
params.slippage, params.slippage,
params.callData params.callData
); );
} }
} }

View File

@ -2,29 +2,28 @@
pragma solidity ^0.7.0; pragma solidity ^0.7.0;
interface IConnext { interface IConnext {
function xcall( function xcall(
uint32 _destination, uint32 _destination,
address _to, address _to,
address _asset, address _asset,
address _delegate, address _delegate,
uint256 _amount, uint256 _amount,
uint256 _slippage, uint256 _slippage,
bytes calldata _callData bytes calldata _callData
) external payable returns (bytes32); ) external payable returns (bytes32);
} }
interface IInstaReceiver { interface IInstaReceiver {
function withdraw( function withdraw(address _asset, uint256 _amount)
address _asset, external
uint256 _amount returns (bytes memory);
) external returns (bytes memory);
function xReceive( function xReceive(
bytes32 _transferId, bytes32 _transferId,
uint256 _amount, uint256 _amount,
address _asset, address _asset,
address _originSender, address _originSender,
uint32 _origin, uint32 _origin,
bytes memory _callData bytes memory _callData
) external returns (bytes memory); ) external returns (bytes memory);
} }

View File

@ -1,101 +1,48 @@
//SPDX-License-Identifier: MIT //SPDX-License-Identifier: MIT
pragma solidity ^0.7.0; pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
/** /**
* @title Connext. * @title Connext.
* @dev Cross chain bridge. * @dev Cross chain bridge.
*/ */
import { TokenInterface, MemoryInterface } from "../../common/interfaces.sol"; import { TokenInterface, MemoryInterface } from "../../common/interfaces.sol";
import { Stores } from "../../common/stores.sol"; import { Stores } from "../../common/stores.sol";
import "./interface.sol"; import "./interface.sol";
import "./helpers.sol"; import "./helpers.sol";
import "./events.sol"; import "./events.sol";
abstract contract ConnextResolver is Helpers { abstract contract ConnextResolver is Helpers {
/** /**
* @dev Call xcall on Connext. * @dev Call xcall on Connext.
* @notice Call xcall on Connext. * @notice Call xcall on Connext.
* @param params XCallParams struct. * @param params XCallParams struct.
* @param getId ID to retrieve amount from last spell. * @param getId ID to retrieve amount from last spell.
*/ */
function xcall(XCallParams memory params, uint256 getId) function xcall(XCallParams memory params, uint256 getId)
external external
payable payable
returns (string memory _eventName, bytes memory _eventParam) returns (string memory _eventName, bytes memory _eventParam)
{ {
params.amount = getUint(getId, params.amount); params.amount = getUint(getId, params.amount);
TokenInterface tokenContract = TokenInterface(params.asset); TokenInterface tokenContract = TokenInterface(params.asset);
_xcall(params); _xcall(params);
_eventName = "LogXCall(uint32,address,address,address,uint256,uint256,uint256)"; _eventName = "LogXCall(uint32,address,address,address,uint256,uint256,uint256)";
_eventParam = abi.encode( _eventParam = abi.encode(
params.destination, params.destination,
params.to, params.to,
params.asset,
params.asset,
params.delegate, params.delegate,
params.amount, params.amount,
params.slippage, params.slippage,
getId getId
); );
} }
} }
contract ConnectV2ConnextOptimism is ConnextResolver { contract ConnectV2ConnextOptimism is ConnextResolver {
string public constant name = "Connext-v1.0"; string public constant name = "Connext-v1.0";
}
}