ETH Price: $2,594.71 (+0.09%)

Contract

0xe6aa2d277aAfBb9e19354F6f893737C3608ff995
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60c06040149981092022-06-20 18:48:00848 days ago1655750880IN
 Create: ConnectV2SwapAggregator
0 ETH0.0179927430

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConnectV2SwapAggregator

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : main.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

/**
 * @title Swap.
 * @dev Swap integration for DEX Aggregators.
 */

// import files
import { SwapHelpers } from "./helpers.sol";
import { Events } from "./events.sol";

abstract contract Swap is SwapHelpers, Events {
	/**
	 * @dev Swap ETH/ERC20_Token using dex aggregators.
	 * @notice Swap tokens from exchanges like 1INCH, 0x etc, with calculation done off-chain.
	 * @param _connectors The name of the connectors like 1INCH-A, 0x etc, in order of their priority.
	 * @param _datas Encoded function call data including function selector encoded with parameters.
	 */
	function swap(string[] memory _connectors, bytes[] memory _datas)
		external
		payable
		returns (string memory _eventName, bytes memory _eventParam)
	{
		(bool success, bytes memory returnData, string memory connector) = _swap(
			_connectors,
			_datas
		);

		require(success, "swap-Aggregator-failed");
		(string memory eventName, bytes memory eventParam) = abi.decode(
			returnData,
			(string, bytes)
		);

		_eventName = "LogSwapAggregator(string[],string,string,bytes)";
		_eventParam = abi.encode(_connectors, connector, eventName, eventParam);
	}
}

contract ConnectV2SwapAggregator is Swap {
	string public name = "Swap-Aggregator-v1";
}

File 2 of 4 : helpers.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma abicoder v2;

import { InstaConnectors } from "../../common/interfaces.sol";

contract SwapHelpers {
	/**
	 * @dev Instadapp Connectors Registry
	 */
	InstaConnectors internal constant instaConnectors =
		InstaConnectors(0x97b0B3A8bDeFE8cB9563a3c610019Ad10DB8aD11);

	/**
	 *@dev Swap using the dex aggregators.
	 *@param _connectors name of the connectors in preference order.
	 *@param _datas data for the swap cast.
	 */
	function _swap(string[] memory _connectors, bytes[] memory _datas)
		internal
		returns (
			bool success,
			bytes memory returnData,
			string memory connector
		)
	{
		uint256 _length = _connectors.length;
		require(_length > 0, "zero-length-not-allowed");
		require(_datas.length == _length, "calldata-length-invalid");

		(bool isOk, address[] memory connectors) = instaConnectors.isConnectors(
			_connectors
		);
		require(isOk, "connector-names-invalid");

		for (uint256 i = 0; i < _length; i++) {
			(success, returnData) = connectors[i].delegatecall(_datas[i]);
			if (success) {
				connector = _connectors[i];
				break;
			}
		}
	}
}

File 3 of 4 : events.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma abicoder v2;

contract Events {
	event LogSwapAggregator(
		string[] connectors,
		string connectorName,
		string eventName,
		bytes eventParam
	);
}

File 4 of 4 : interfaces.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma abicoder v2;

interface TokenInterface {
    function approve(address, uint256) external;
    function transfer(address, uint) external;
    function transferFrom(address, address, uint) external;
    function deposit() external payable;
    function withdraw(uint) external;
    function balanceOf(address) external view returns (uint);
    function decimals() external view returns (uint);
    function totalSupply() external view returns (uint);
}

interface MemoryInterface {
    function getUint(uint id) external returns (uint num);
    function setUint(uint id, uint val) external;
}

interface InstaMapping {
    function cTokenMapping(address) external view returns (address);
    function gemJoinMapping(bytes32) external view returns (address);
}

interface AccountInterface {
    function enable(address) external;
    function disable(address) external;
    function isAuth(address) external view returns (bool);
}

interface InstaConnectors {
    function isConnectors(string[] calldata) external returns (bool, address[] memory);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string[]","name":"connectors","type":"string[]"},{"indexed":false,"internalType":"string","name":"connectorName","type":"string"},{"indexed":false,"internalType":"string","name":"eventName","type":"string"},{"indexed":false,"internalType":"bytes","name":"eventParam","type":"bytes"}],"name":"LogSwapAggregator","type":"event"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"_connectors","type":"string[]"},{"internalType":"bytes[]","name":"_datas","type":"bytes[]"}],"name":"swap","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"}]

60c06040526012608081905271537761702d41676772656761746f722d763160701b60a09081526100339160009190610046565b5034801561004057600080fd5b506100e7565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261007c57600085556100c2565b82601f1061009557805160ff19168380011785556100c2565b828001600101855582156100c2579182015b828111156100c25782518255916020019190600101906100a7565b506100ce9291506100d2565b5090565b5b808211156100ce57600081556001016100d3565b61096d806100f66000396000f3fe6080604052600436106100295760003560e01c806306fdde031461002e578063fd05818314610059575b600080fd5b34801561003a57600080fd5b5061004361007a565b604051610050919061075e565b60405180910390f35b61006c61006736600461045d565b610108565b604051610050929190610771565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101005780601f106100d557610100808354040283529160200191610100565b820191906000526020600020905b8154815290600101906020018083116100e357829003601f168201915b505050505081565b606080600080600061011a87876101b0565b925092509250826101465760405162461bcd60e51b815260040161013d9061079f565b60405180910390fd5b6000808380602001905181019061015d91906105e2565b915091506040518060600160405280602f8152602001610909602f91399650888383836040516020016101939493929190610706565b604051602081830303815290604052955050505050509250929050565b6000606080600085519050600081116101db5760405162461bcd60e51b815260040161013d90610806565b808551146101fb5760405162461bcd60e51b815260040161013d906107cf565b60405163a0a32c0b60e01b815260009081907397b0b3a8bdefe8cb9563a3c610019ad10db8ad119063a0a32c0b90610237908b906004016106f3565b600060405180830381600087803b15801561025157600080fd5b505af1158015610265573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028d9190810190610523565b91509150816102ae5760405162461bcd60e51b815260040161013d9061083d565b60005b83811015610366578181815181106102c557fe5b60200260200101516001600160a01b03168882815181106102e257fe5b60200260200101516040516102f791906106d7565b600060405180830381855af49150503d8060008114610332576040519150601f19603f3d011682016040523d82523d6000602084013e610337565b606091505b509097509550861561035e5788818151811061034f57fe5b60200260200101519450610366565b6001016102b1565b505050509250925092565b600061038461037f846108b6565b610874565b905082815283838301111561039857600080fd5b828260208301376000602084830101529392505050565b60006103bd61037f846108b6565b90508281528383830111156103d157600080fd5b6103df8360208301846108d8565b9392505050565b600082601f8301126103f6578081fd5b8135602061040661037f83610898565b82815281810190858301855b85811015610450578135880189603f82011261042c578788fd5b61043d8a8783013560408401610371565b8552509284019290840190600101610412565b5090979650505050505050565b6000806040808486031215610470578283fd5b833567ffffffffffffffff80821115610487578485fd5b818601915086601f83011261049a578485fd5b813560206104aa61037f83610898565b82815281810190858301895b858110156104f357813588018d603f8201126104d0578b8cfd5b6104e08e878301358c8401610371565b85525092840192908401906001016104b6565b5090985050508701359350508083111561050b578384fd5b5050610519858286016103e6565b9150509250929050565b60008060408385031215610535578182fd5b82518015158114610544578283fd5b8092505060208084015167ffffffffffffffff811115610562578283fd5b8401601f81018613610572578283fd5b805161058061037f82610898565b81815283810190838501858402850186018a101561059c578687fd5b8694505b838510156105d25780516001600160a01b03811681146105be578788fd5b8352600194909401939185019185016105a0565b5080955050505050509250929050565b600080604083850312156105f4578182fd5b825167ffffffffffffffff8082111561060b578384fd5b818501915085601f83011261061e578384fd5b61062d868351602085016103af565b93506020850151915080821115610642578283fd5b508301601f81018513610653578182fd5b610519858251602084016103af565b60008282518085526020808601955080818302840101818601855b8481101561045057601f198684030189526106998383516106ab565b9884019892509083019060010161067d565b600081518084526106c38160208601602086016108d8565b601f01601f19169290920160200192915050565b600082516106e98184602087016108d8565b9190910192915050565b6000602082526103df6020830184610662565b6000608082526107196080830187610662565b828103602084015261072b81876106ab565b9050828103604084015261073f81866106ab565b9050828103606084015261075381856106ab565b979650505050505050565b6000602082526103df60208301846106ab565b60006040825261078460408301856106ab565b828103602084015261079681856106ab565b95945050505050565b6020808252601690820152751cddd85c0b5059d9dc9959d85d1bdc8b59985a5b195960521b604082015260600190565b60208082526017908201527f63616c6c646174612d6c656e6774682d696e76616c6964000000000000000000604082015260600190565b60208082526017908201527f7a65726f2d6c656e6774682d6e6f742d616c6c6f776564000000000000000000604082015260600190565b60208082526017908201527f636f6e6e6563746f722d6e616d65732d696e76616c6964000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561089057fe5b604052919050565b600067ffffffffffffffff8211156108ac57fe5b5060209081020190565b600067ffffffffffffffff8211156108ca57fe5b50601f01601f191660200190565b60005b838110156108f35781810151838201526020016108db565b83811115610902576000848401525b5050505056fe4c6f675377617041676772656761746f7228737472696e675b5d2c737472696e672c737472696e672c627974657329a2646970667358221220e0bc5c6c6eedf695f19c54dd751ee48617b9f68a76de6a55b758d7bccf612c1464736f6c63430007060033

Deployed Bytecode

0x6080604052600436106100295760003560e01c806306fdde031461002e578063fd05818314610059575b600080fd5b34801561003a57600080fd5b5061004361007a565b604051610050919061075e565b60405180910390f35b61006c61006736600461045d565b610108565b604051610050929190610771565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101005780601f106100d557610100808354040283529160200191610100565b820191906000526020600020905b8154815290600101906020018083116100e357829003601f168201915b505050505081565b606080600080600061011a87876101b0565b925092509250826101465760405162461bcd60e51b815260040161013d9061079f565b60405180910390fd5b6000808380602001905181019061015d91906105e2565b915091506040518060600160405280602f8152602001610909602f91399650888383836040516020016101939493929190610706565b604051602081830303815290604052955050505050509250929050565b6000606080600085519050600081116101db5760405162461bcd60e51b815260040161013d90610806565b808551146101fb5760405162461bcd60e51b815260040161013d906107cf565b60405163a0a32c0b60e01b815260009081907397b0b3a8bdefe8cb9563a3c610019ad10db8ad119063a0a32c0b90610237908b906004016106f3565b600060405180830381600087803b15801561025157600080fd5b505af1158015610265573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028d9190810190610523565b91509150816102ae5760405162461bcd60e51b815260040161013d9061083d565b60005b83811015610366578181815181106102c557fe5b60200260200101516001600160a01b03168882815181106102e257fe5b60200260200101516040516102f791906106d7565b600060405180830381855af49150503d8060008114610332576040519150601f19603f3d011682016040523d82523d6000602084013e610337565b606091505b509097509550861561035e5788818151811061034f57fe5b60200260200101519450610366565b6001016102b1565b505050509250925092565b600061038461037f846108b6565b610874565b905082815283838301111561039857600080fd5b828260208301376000602084830101529392505050565b60006103bd61037f846108b6565b90508281528383830111156103d157600080fd5b6103df8360208301846108d8565b9392505050565b600082601f8301126103f6578081fd5b8135602061040661037f83610898565b82815281810190858301855b85811015610450578135880189603f82011261042c578788fd5b61043d8a8783013560408401610371565b8552509284019290840190600101610412565b5090979650505050505050565b6000806040808486031215610470578283fd5b833567ffffffffffffffff80821115610487578485fd5b818601915086601f83011261049a578485fd5b813560206104aa61037f83610898565b82815281810190858301895b858110156104f357813588018d603f8201126104d0578b8cfd5b6104e08e878301358c8401610371565b85525092840192908401906001016104b6565b5090985050508701359350508083111561050b578384fd5b5050610519858286016103e6565b9150509250929050565b60008060408385031215610535578182fd5b82518015158114610544578283fd5b8092505060208084015167ffffffffffffffff811115610562578283fd5b8401601f81018613610572578283fd5b805161058061037f82610898565b81815283810190838501858402850186018a101561059c578687fd5b8694505b838510156105d25780516001600160a01b03811681146105be578788fd5b8352600194909401939185019185016105a0565b5080955050505050509250929050565b600080604083850312156105f4578182fd5b825167ffffffffffffffff8082111561060b578384fd5b818501915085601f83011261061e578384fd5b61062d868351602085016103af565b93506020850151915080821115610642578283fd5b508301601f81018513610653578182fd5b610519858251602084016103af565b60008282518085526020808601955080818302840101818601855b8481101561045057601f198684030189526106998383516106ab565b9884019892509083019060010161067d565b600081518084526106c38160208601602086016108d8565b601f01601f19169290920160200192915050565b600082516106e98184602087016108d8565b9190910192915050565b6000602082526103df6020830184610662565b6000608082526107196080830187610662565b828103602084015261072b81876106ab565b9050828103604084015261073f81866106ab565b9050828103606084015261075381856106ab565b979650505050505050565b6000602082526103df60208301846106ab565b60006040825261078460408301856106ab565b828103602084015261079681856106ab565b95945050505050565b6020808252601690820152751cddd85c0b5059d9dc9959d85d1bdc8b59985a5b195960521b604082015260600190565b60208082526017908201527f63616c6c646174612d6c656e6774682d696e76616c6964000000000000000000604082015260600190565b60208082526017908201527f7a65726f2d6c656e6774682d6e6f742d616c6c6f776564000000000000000000604082015260600190565b60208082526017908201527f636f6e6e6563746f722d6e616d65732d696e76616c6964000000000000000000604082015260600190565b60405181810167ffffffffffffffff8111828210171561089057fe5b604052919050565b600067ffffffffffffffff8211156108ac57fe5b5060209081020190565b600067ffffffffffffffff8211156108ca57fe5b50601f01601f191660200190565b60005b838110156108f35781810151838201526020016108db565b83811115610902576000848401525b5050505056fe4c6f675377617041676772656761746f7228737472696e675b5d2c737472696e672c737472696e672c627974657329a2646970667358221220e0bc5c6c6eedf695f19c54dd751ee48617b9f68a76de6a55b758d7bccf612c1464736f6c63430007060033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.