df8039f494
new file: Interchain-message/.eslintrc.js new file: Interchain-message/.gitignore new file: Interchain-message/.prettierrc new file: Interchain-message/.solhint.json new file: Interchain-message/.solhintignore new file: Interchain-message/contracts/interfaces/IBridge.sol new file: Interchain-message/contracts/interfaces/IMessageBus.sol new file: Interchain-message/contracts/interfaces/IMessageReceiverApp.sol new file: Interchain-message/contracts/interfaces/IUniswapRouterV3.sol new file: Interchain-message/contracts/interfaces/IWETH.sol new file: Interchain-message/contracts/message/apps/BridgeSwap.sol new file: Interchain-message/contracts/message/apps/RubicRouterV2.sol new file: Interchain-message/contracts/message/apps/RubicRouterV2ETH.sol new file: Interchain-message/contracts/message/apps/SwapBase.sol new file: Interchain-message/contracts/message/apps/TransferSwapInch.sol new file: Interchain-message/contracts/message/apps/TransferSwapV2.sol new file: Interchain-message/contracts/message/apps/TransferSwapV3.sol new file: Interchain-message/contracts/message/framework/MessageReceiverApp.sol new file: Interchain-message/contracts/message/framework/MessageSenderApp.sol new file: Interchain-message/contracts/message/libraries/MessageSenderLib.sol new file: Interchain-message/contracts/message/libraries/MsgDataTypes.sol new file: Interchain-message/contracts/test/MessageBusSender.sol new file: Interchain-message/contracts/test/TestERC20.sol new file: Interchain-message/contracts/test/TestMessages.sol new file: Interchain-message/contracts/test/WETH9.sol new file: Interchain-message/deployments/Readme.md new file: Interchain-message/executor/config/cbridge.toml new file: Interchain-message/executor/config/executor.toml new file: Interchain-message/executor/eth-ks/signer.json new file: Interchain-message/hardhat.config.ts new file: Interchain-message/package-lock.json new file: Interchain-message/package.json new file: Interchain-message/reports/contract_sizes.txt new file: Interchain-message/reports/gas_usage/summary.txt new file: Interchain-message/scripts/deploy/deploy.js new file: Interchain-message/scripts/deploy/deployAVAX.ts new file: Interchain-message/scripts/deploy/deployArbitrum.ts new file: Interchain-message/scripts/deploy/deployAurora.ts new file: Interchain-message/scripts/deploy/deployBSC.ts new file: Interchain-message/scripts/deploy/deployEth.ts new file: Interchain-message/scripts/deploy/deployFantom.ts new file: Interchain-message/scripts/deploy/deployPoly.ts new file: Interchain-message/scripts/privateKey.js new file: Interchain-message/scripts/sendTx/avaxToFantomBridge.js new file: Interchain-message/scripts/sendTx/avaxToFantomNativeV2.js new file: Interchain-message/test/RubicCrossChainBridge.spec.ts new file: Interchain-message/test/RubicCrossChainV2.spec.ts new file: Interchain-message/test/RubicCrossChainV3.spec.ts new file: Interchain-message/test/RubicFallback.spec.ts new file: Interchain-message/test/RubicSettings.spec.ts new file: Interchain-message/test/shared/consts.ts new file: Interchain-message/test/shared/fixtures.ts new file: Interchain-message/test/shared/utils.ts new file: Interchain-message/tsconfig.json deleted: Rubic-Inter-chain-Message-develop.zip deleted: proxy-instant-trades-master.zip deleted: rubic-app-master.zip deleted: rubic-sdk-master.zip
100 lines
2.4 KiB
Solidity
100 lines
2.4 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity >=0.8.9;
|
|
|
|
import "./SwapBase.sol";
|
|
|
|
contract BridgeSwap is SwapBase {
|
|
function bridgeWithSwapNative(
|
|
address _receiver,
|
|
uint256 _amountIn,
|
|
uint64 _dstChainId,
|
|
address _srcBridgeToken,
|
|
SwapInfoDest calldata _dstSwap,
|
|
uint32 _maxBridgeSlippage
|
|
) external payable {
|
|
uint256 _fee = _deriveFeeAndPerformChecksNative(
|
|
_amountIn,
|
|
_dstChainId,
|
|
_dstSwap.integrator,
|
|
_srcBridgeToken
|
|
);
|
|
|
|
_sendBridgeMessage(
|
|
_receiver,
|
|
_dstChainId,
|
|
_srcBridgeToken,
|
|
_dstSwap,
|
|
_maxBridgeSlippage,
|
|
_fee,
|
|
_amountIn
|
|
);
|
|
}
|
|
|
|
function bridgeWithSwap(
|
|
address _receiver,
|
|
uint256 _amountIn,
|
|
uint64 _dstChainId,
|
|
address _srcBridgeToken,
|
|
SwapInfoDest calldata _dstSwap,
|
|
uint32 _maxBridgeSlippage
|
|
) external payable {
|
|
uint256 _fee = _deriveFeeAndPerformChecks(
|
|
_amountIn,
|
|
_dstChainId,
|
|
_dstSwap.integrator,
|
|
_srcBridgeToken
|
|
);
|
|
|
|
_sendBridgeMessage(
|
|
_receiver,
|
|
_dstChainId,
|
|
_srcBridgeToken,
|
|
_dstSwap,
|
|
_maxBridgeSlippage,
|
|
_fee,
|
|
_amountIn
|
|
);
|
|
}
|
|
|
|
function _sendBridgeMessage(
|
|
address _receiver,
|
|
uint64 _dstChainId,
|
|
address _srcBridgeToken,
|
|
SwapInfoDest calldata _dstSwap,
|
|
uint32 _maxBridgeSlippage,
|
|
uint256 _fee,
|
|
uint256 _amountIn
|
|
) private {
|
|
BaseCrossChainParams memory _baseParams = BaseCrossChainParams(
|
|
_srcBridgeToken,
|
|
_amountIn,
|
|
_dstChainId,
|
|
_retrieveDstTokenAddress(_dstSwap),
|
|
_dstSwap.amountOutMinimum,
|
|
_dstSwap.receiverEOA,
|
|
_dstSwap.integrator,
|
|
address(0)
|
|
);
|
|
|
|
require(
|
|
_baseParams.dstChainID != uint64(block.chainid),
|
|
"same chain id"
|
|
);
|
|
|
|
bytes32 id = _sendMessage(
|
|
_receiver,
|
|
uint64(_baseParams.dstChainID),
|
|
_dstSwap,
|
|
_maxBridgeSlippage,
|
|
_beforeSwapAndSendMessage(),
|
|
_fee,
|
|
_baseParams.srcInputToken,
|
|
_baseParams.srcInputAmount,
|
|
true
|
|
);
|
|
|
|
emit CrossChainRequestSent(id, _baseParams);
|
|
}
|
|
}
|