Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 524 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Exit | 24565428 | 3 hrs ago | IN | 0 ETH | 0.00000453 | ||||
| Exit | 24561167 | 18 hrs ago | IN | 0 ETH | 0.00000615 | ||||
| Exit | 24560611 | 20 hrs ago | IN | 0 ETH | 0.000004 | ||||
| Exit | 24560610 | 20 hrs ago | IN | 0 ETH | 0.0000114 | ||||
| Exit | 24554669 | 39 hrs ago | IN | 0 ETH | 0.00000646 | ||||
| Exit | 24552440 | 47 hrs ago | IN | 0 ETH | 0.00007932 | ||||
| Exit | 24550391 | 2 days ago | IN | 0 ETH | 0.00017461 | ||||
| Exit | 24550299 | 2 days ago | IN | 0 ETH | 0.00008114 | ||||
| Exit | 24550297 | 2 days ago | IN | 0 ETH | 0.00000555 | ||||
| Exit | 24550284 | 2 days ago | IN | 0 ETH | 0.0000821 | ||||
| Exit | 24547404 | 2 days ago | IN | 0 ETH | 0.00000657 | ||||
| Exit | 24544684 | 3 days ago | IN | 0 ETH | 0.00000211 | ||||
| Exit | 24544684 | 3 days ago | IN | 0 ETH | 0.00000517 | ||||
| Exit | 24544187 | 3 days ago | IN | 0 ETH | 0.00000248 | ||||
| Exit | 24544187 | 3 days ago | IN | 0 ETH | 0.00000819 | ||||
| Exit | 24543515 | 3 days ago | IN | 0 ETH | 0.00017546 | ||||
| Exit | 24540736 | 3 days ago | IN | 0 ETH | 0.0000045 | ||||
| Exit | 24540444 | 3 days ago | IN | 0 ETH | 0.00000209 | ||||
| Exit | 24540442 | 3 days ago | IN | 0 ETH | 0.00017683 | ||||
| Exit | 24540130 | 3 days ago | IN | 0 ETH | 0.00002366 | ||||
| Exit | 24539161 | 3 days ago | IN | 0 ETH | 0.00017433 | ||||
| Exit | 24538854 | 3 days ago | IN | 0 ETH | 0.00002127 | ||||
| Exit | 24538625 | 3 days ago | IN | 0 ETH | 0.00000941 | ||||
| Exit | 24537201 | 4 days ago | IN | 0 ETH | 0.0001773 | ||||
| Exit | 24537145 | 4 days ago | IN | 0 ETH | 0.00009392 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ICOSwap
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract ICOSwap {
using SafeERC20 for IERC20;
IERC20 public immutable tokenToGet;
IERC20 public immutable tokenToGive;
mapping(address => bool) public nullified;
constructor(address _tokenToGet, address _tokenToGive) {
tokenToGet = IERC20(_tokenToGet);
tokenToGive = IERC20(_tokenToGive);
}
function exit() external {
uint256 balance = tokenToGet.balanceOf(msg.sender);
require(balance > 0, "Balance must be > 0");
require(!nullified[msg.sender], "You already got your tokens!");
nullified[msg.sender] = true;
// Contract must have enough Token B
require(tokenToGive.balanceOf(address(this)) >= balance, "Not enough Token B liquidity");
// Send Token B to user (1:1 ratio)
tokenToGive.safeTransfer(msg.sender, balance);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
import {IERC1363} from "../../../interfaces/IERC1363.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC-20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
/**
* @dev An operation with an ERC-20 token failed.
*/
error SafeERC20FailedOperation(address token);
/**
* @dev Indicates a failed `decreaseAllowance` request.
*/
error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
* calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
*/
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));
}
/**
* @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.
*/
function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {
return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));
}
/**
* @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 oldAllowance = token.allowance(address(this), spender);
forceApprove(token, spender, oldAllowance + value);
}
/**
* @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
* value, non-reverting calls are assumed to be successful.
*
* IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the "client"
* smart contract uses ERC-7674 to set temporary allowances, then the "client" smart contract should avoid using
* this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract
* that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.
*/
function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {
unchecked {
uint256 currentAllowance = token.allowance(address(this), spender);
if (currentAllowance < requestedDecrease) {
revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);
}
forceApprove(token, spender, currentAllowance - requestedDecrease);
}
}
/**
* @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
* non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
* to be set to zero before setting it to a non-zero value, such as USDT.
*
* NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function
* only sets the "standard" allowance. Any temporary allowance will remain active, in addition to the value being
* set here.
*/
function forceApprove(IERC20 token, address spender, uint256 value) internal {
bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));
if (!_callOptionalReturnBool(token, approvalCall)) {
_callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));
_callOptionalReturn(token, approvalCall);
}
}
/**
* @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
safeTransfer(token, to, value);
} else if (!token.transferAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target
* has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* Reverts if the returned value is other than `true`.
*/
function transferFromAndCallRelaxed(
IERC1363 token,
address from,
address to,
uint256 value,
bytes memory data
) internal {
if (to.code.length == 0) {
safeTransferFrom(token, from, to, value);
} else if (!token.transferFromAndCall(from, to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no
* code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when
* targeting contracts.
*
* NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.
* Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}
* once without retrying, and relies on the returned value to be true.
*
* Reverts if the returned value is other than `true`.
*/
function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {
if (to.code.length == 0) {
forceApprove(token, to, value);
} else if (!token.approveAndCall(to, value, data)) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
// bubble errors
if iszero(success) {
let ptr := mload(0x40)
returndatacopy(ptr, 0, returndatasize())
revert(ptr, returndatasize())
}
returnSize := returndatasize()
returnValue := mload(0)
}
if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {
revert SafeERC20FailedOperation(address(token));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*
* This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.
*/
function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {
bool success;
uint256 returnSize;
uint256 returnValue;
assembly ("memory-safe") {
success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)
returnSize := returndatasize()
returnValue := mload(0)
}
return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC165} from "./IERC165.sol";
/**
* @title IERC1363
* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].
*
* Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract
* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.
*/
interface IERC1363 is IERC20, IERC165 {
/*
* Note: the ERC-165 identifier for this interface is 0xb0202a11.
* 0xb0202a11 ===
* bytes4(keccak256('transferAndCall(address,uint256)')) ^
* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^
* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^
* bytes4(keccak256('approveAndCall(address,uint256)')) ^
* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))
*/
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism
* and then calls {IERC1363Receiver-onTransferReceived} on `to`.
* @param from The address which you want to send tokens from.
* @param to The address which you want to transfer to.
* @param value The amount of tokens to be transferred.
* @param data Additional data with no specified format, sent in call to `to`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value) external returns (bool);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
* @param data Additional data with no specified format, sent in call to `spender`.
* @return A boolean value indicating whether the operation succeeded unless throwing.
*/
function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../token/ERC20/IERC20.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "../utils/introspection/IERC165.sol";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "prague",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_tokenToGet","type":"address"},{"internalType":"address","name":"_tokenToGive","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nullified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenToGet","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenToGive","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561000f575f5ffd5b506040516109ff3803806109ff833981810160405281019061003191906100fe565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505061013c565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100cd826100a4565b9050919050565b6100dd816100c3565b81146100e7575f5ffd5b50565b5f815190506100f8816100d4565b92915050565b5f5f60408385031215610114576101136100a0565b5b5f610121858286016100ea565b9250506020610132858286016100ea565b9150509250929050565b60805160a05161088e6101715f395f8181610106015281816102e501526103c301525f818160c6015261012b015261088e5ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c8063d16204031461004e578063d3abd27c1461006c578063e8edb5431461009c578063e9fad8ee146100ba575b5f5ffd5b6100566100c4565b604051610063919061059e565b60405180910390f35b610086600480360381019061008191906105f6565b6100e8565b604051610093919061063b565b60405180910390f35b6100a4610104565b6040516100b1919061059e565b60405180910390f35b6100c2610128565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b5f602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016101829190610663565b602060405180830381865afa15801561019d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c191906106af565b90505f8111610205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fc90610734565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561028e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102859061079c565b60405180910390fd5b60015f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161033c9190610663565b602060405180830381865afa158015610357573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037b91906106af565b10156103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390610804565b60405180910390fd5b61040733827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661040a9092919063ffffffff16565b50565b610484838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161043d929190610831565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610489565b505050565b5f5f60205f8451602086015f885af1806104a8576040513d5f823e3d81fd5b3d92505f519150505f82146104c15760018114156104dc565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561051e57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016105159190610663565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61056661056161055c84610524565b610543565b610524565b9050919050565b5f6105778261054c565b9050919050565b5f6105888261056d565b9050919050565b6105988161057e565b82525050565b5f6020820190506105b15f83018461058f565b92915050565b5f5ffd5b5f6105c582610524565b9050919050565b6105d5816105bb565b81146105df575f5ffd5b50565b5f813590506105f0816105cc565b92915050565b5f6020828403121561060b5761060a6105b7565b5b5f610618848285016105e2565b91505092915050565b5f8115159050919050565b61063581610621565b82525050565b5f60208201905061064e5f83018461062c565b92915050565b61065d816105bb565b82525050565b5f6020820190506106765f830184610654565b92915050565b5f819050919050565b61068e8161067c565b8114610698575f5ffd5b50565b5f815190506106a981610685565b92915050565b5f602082840312156106c4576106c36105b7565b5b5f6106d18482850161069b565b91505092915050565b5f82825260208201905092915050565b7f42616c616e6365206d757374206265203e2030000000000000000000000000005f82015250565b5f61071e6013836106da565b9150610729826106ea565b602082019050919050565b5f6020820190508181035f83015261074b81610712565b9050919050565b7f596f7520616c726561647920676f7420796f757220746f6b656e7321000000005f82015250565b5f610786601c836106da565b915061079182610752565b602082019050919050565b5f6020820190508181035f8301526107b38161077a565b9050919050565b7f4e6f7420656e6f75676820546f6b656e2042206c6971756964697479000000005f82015250565b5f6107ee601c836106da565b91506107f9826107ba565b602082019050919050565b5f6020820190508181035f83015261081b816107e2565b9050919050565b61082b8161067c565b82525050565b5f6040820190506108445f830185610654565b6108516020830184610822565b939250505056fea2646970667358221220790ffed482072f8ba70170c768bf5b0136d2c7ff0a88448f77a6e44d1089a3eb64736f6c634300081c0033000000000000000000000000f81e34cc12fcc8c56681777881ee7e37698856ff000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b29
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c8063d16204031461004e578063d3abd27c1461006c578063e8edb5431461009c578063e9fad8ee146100ba575b5f5ffd5b6100566100c4565b604051610063919061059e565b60405180910390f35b610086600480360381019061008191906105f6565b6100e8565b604051610093919061063b565b60405180910390f35b6100a4610104565b6040516100b1919061059e565b60405180910390f35b6100c2610128565b005b7f000000000000000000000000f81e34cc12fcc8c56681777881ee7e37698856ff81565b5f602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b2981565b5f7f000000000000000000000000f81e34cc12fcc8c56681777881ee7e37698856ff73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016101829190610663565b602060405180830381865afa15801561019d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c191906106af565b90505f8111610205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fc90610734565b60405180910390fd5b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561028e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102859061079c565b60405180910390fd5b60015f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550807f000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b2973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161033c9190610663565b602060405180830381865afa158015610357573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037b91906106af565b10156103bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b390610804565b60405180910390fd5b61040733827f000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b2973ffffffffffffffffffffffffffffffffffffffff1661040a9092919063ffffffff16565b50565b610484838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161043d929190610831565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610489565b505050565b5f5f60205f8451602086015f885af1806104a8576040513d5f823e3d81fd5b3d92505f519150505f82146104c15760018114156104dc565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561051e57836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016105159190610663565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61056661056161055c84610524565b610543565b610524565b9050919050565b5f6105778261054c565b9050919050565b5f6105888261056d565b9050919050565b6105988161057e565b82525050565b5f6020820190506105b15f83018461058f565b92915050565b5f5ffd5b5f6105c582610524565b9050919050565b6105d5816105bb565b81146105df575f5ffd5b50565b5f813590506105f0816105cc565b92915050565b5f6020828403121561060b5761060a6105b7565b5b5f610618848285016105e2565b91505092915050565b5f8115159050919050565b61063581610621565b82525050565b5f60208201905061064e5f83018461062c565b92915050565b61065d816105bb565b82525050565b5f6020820190506106765f830184610654565b92915050565b5f819050919050565b61068e8161067c565b8114610698575f5ffd5b50565b5f815190506106a981610685565b92915050565b5f602082840312156106c4576106c36105b7565b5b5f6106d18482850161069b565b91505092915050565b5f82825260208201905092915050565b7f42616c616e6365206d757374206265203e2030000000000000000000000000005f82015250565b5f61071e6013836106da565b9150610729826106ea565b602082019050919050565b5f6020820190508181035f83015261074b81610712565b9050919050565b7f596f7520616c726561647920676f7420796f757220746f6b656e7321000000005f82015250565b5f610786601c836106da565b915061079182610752565b602082019050919050565b5f6020820190508181035f8301526107b38161077a565b9050919050565b7f4e6f7420656e6f75676820546f6b656e2042206c6971756964697479000000005f82015250565b5f6107ee601c836106da565b91506107f9826107ba565b602082019050919050565b5f6020820190508181035f83015261081b816107e2565b9050919050565b61082b8161067c565b82525050565b5f6040820190506108445f830185610654565b6108516020830184610822565b939250505056fea2646970667358221220790ffed482072f8ba70170c768bf5b0136d2c7ff0a88448f77a6e44d1089a3eb64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f81e34cc12fcc8c56681777881ee7e37698856ff000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b29
-----Decoded View---------------
Arg [0] : _tokenToGet (address): 0xF81e34cC12fcc8C56681777881eE7e37698856Ff
Arg [1] : _tokenToGive (address): 0xfC9d98CdB3529F32cD7fb02d175547641e145B29
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f81e34cc12fcc8c56681777881ee7e37698856ff
Arg [1] : 000000000000000000000000fc9d98cdb3529f32cd7fb02d175547641e145b29
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.