More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,950 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Transit For BSC | 20156972 | 11 days ago | IN | 0 ETH | 0.00010428 | ||||
Withdraw From BS... | 20140619 | 13 days ago | IN | 0 ETH | 0.00062954 | ||||
Transit For BSC | 20136520 | 13 days ago | IN | 0 ETH | 0.00013555 | ||||
Transit For BSC | 20133674 | 14 days ago | IN | 0 ETH | 0.00054447 | ||||
Transit For BSC | 20132426 | 14 days ago | IN | 0 ETH | 0.00043231 | ||||
Withdraw From BS... | 20119591 | 16 days ago | IN | 0 ETH | 0.00086262 | ||||
Withdraw From BS... | 20043434 | 26 days ago | IN | 0 ETH | 0.00055023 | ||||
Withdraw From BS... | 20039785 | 27 days ago | IN | 0 ETH | 0.00079908 | ||||
Transit For BSC | 20038029 | 27 days ago | IN | 0 ETH | 0.00052162 | ||||
Transit For BSC | 20034233 | 28 days ago | IN | 0 ETH | 0.00183487 | ||||
Transit For BSC | 20020678 | 30 days ago | IN | 0 ETH | 0.00059372 | ||||
Withdraw From BS... | 20017091 | 30 days ago | IN | 0 ETH | 0.00041752 | ||||
Transit For BSC | 20011374 | 31 days ago | IN | 0 ETH | 0.00050542 | ||||
Transit For BSC | 20002774 | 32 days ago | IN | 0 ETH | 0.00036684 | ||||
Withdraw From BS... | 19930304 | 42 days ago | IN | 0 ETH | 0.00043385 | ||||
Transit For BSC | 19924944 | 43 days ago | IN | 0 ETH | 0.00043637 | ||||
Transit For BSC | 19924482 | 43 days ago | IN | 0 ETH | 0.00028404 | ||||
Transit For BSC | 19849783 | 53 days ago | IN | 0 ETH | 0.00023184 | ||||
Transit For BSC | 19849697 | 54 days ago | IN | 0 ETH | 0.0002502 | ||||
Transit For BSC | 19849696 | 54 days ago | IN | 0 ETH | 0.00016752 | ||||
Transit For BSC | 19849695 | 54 days ago | IN | 0 ETH | 0.00017551 | ||||
Withdraw From BS... | 19849666 | 54 days ago | IN | 0 ETH | 0.00031539 | ||||
Transit For BSC | 19788105 | 62 days ago | IN | 0 ETH | 0.0004403 | ||||
Transit For BSC | 19782506 | 63 days ago | IN | 0 ETH | 0.00054947 | ||||
Withdraw From BS... | 19747583 | 68 days ago | IN | 0 ETH | 0.00068921 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ETHGate
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity >=0.5.16; import "openzeppelin-solidity/contracts/access/Ownable.sol"; import "openzeppelin-solidity/contracts/utils/ReentrancyGuard.sol"; import "openzeppelin-solidity/contracts/math/SafeMath.sol"; import "../TransferHelper.sol"; contract ETHGate is ReentrancyGuard, Ownable { using SafeMath for uint; address public signWallet; address public feeWallet; uint public feeAvailable; uint public fee; // key: payback_id mapping (bytes32 => bool) public executedMap; event Transit(address indexed from, address indexed token, uint amount); event Withdraw(bytes32 paybackId, address indexed to, address indexed token, uint amount); event CollectFee(address indexed handler, uint amount); constructor(address _signer, address _feeWallet) ReentrancyGuard() Ownable() public { signWallet = _signer; feeWallet = _feeWallet; } function changeSigner(address _wallet) external onlyOwner { signWallet = _wallet; } function changeFeeWallet(address _feeWallet) external onlyOwner { feeWallet = _feeWallet; } function changeFee(uint _amount) external onlyOwner { fee = _amount; } function collectFee() external onlyOwner { require(feeWallet != address(0), "SETUP_FEE_WALLET"); require(feeAvailable > 0, "NO_FEE"); TransferHelper.safeTransferETH(feeWallet, feeAvailable); feeAvailable = 0; } function transitForBSC(address _token, uint _amount) external { require(_amount > 0, "INVALID_AMOUNT"); TransferHelper.safeTransferFrom(_token, msg.sender, address(this), _amount); emit Transit(msg.sender, _token, _amount); } function withdrawFromBSC(bytes calldata _signature, bytes32 _paybackId, address _token, uint _amount) external nonReentrant payable { require(executedMap[_paybackId] == false, "ALREADY_EXECUTED"); executedMap[_paybackId] = true; require(_amount > 0, "NOTHING_TO_WITHDRAW"); require(msg.value == fee, "INSUFFICIENT_VALUE"); bytes32 message = keccak256(abi.encodePacked(_paybackId, _token, msg.sender, _amount)); require(_verify(message, _signature), "INVALID_SIGNATURE"); TransferHelper.safeTransfer(_token, msg.sender, _amount); feeAvailable = feeAvailable.add(fee); emit Withdraw(_paybackId, msg.sender, _token, _amount); } function _verify(bytes32 _message, bytes memory _signature) internal view returns (bool) { bytes32 hash = _toEthBytes32SignedMessageHash(_message); address[] memory signList = _recoverAddresses(hash, _signature); return signList[0] == signWallet; } function _toEthBytes32SignedMessageHash (bytes32 _msg) pure internal returns (bytes32 signHash) { signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _msg)); } function _recoverAddresses(bytes32 _hash, bytes memory _signatures) pure internal returns (address[] memory addresses) { uint8 v; bytes32 r; bytes32 s; uint count = _countSignatures(_signatures); addresses = new address[](count); for (uint i = 0; i < count; i++) { (v, r, s) = _parseSignature(_signatures, i); addresses[i] = ecrecover(_hash, v, r, s); } } function _parseSignature(bytes memory _signatures, uint _pos) pure internal returns (uint8 v, bytes32 r, bytes32 s) { uint offset = _pos * 65; assembly { r := mload(add(_signatures, add(32, offset))) s := mload(add(_signatures, add(64, offset))) v := and(mload(add(_signatures, add(65, offset))), 0xff) } if (v < 27) v += 27; require(v == 27 || v == 28); } function _countSignatures(bytes memory _signatures) pure internal returns (uint) { return _signatures.length % 65 == 0 ? _signatures.length / 65 : 0; } }
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false pragma solidity >=0.6.0; library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeBurn(address token, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x42966c68, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: BURN_FAILED'); } function safeMint(address token, address holder, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x40c10f19, holder, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: MINT_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_signer","type":"address"},{"internalType":"address","name":"_feeWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"handler","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CollectFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"paybackId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeWallet","type":"address"}],"name":"changeFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"executedMap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transitForBSC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"bytes32","name":"_paybackId","type":"bytes32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFromBSC","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161130e38038061130e8339818101604052604081101561003357600080fd5b5080516020909101516001600090815561004b6100ca565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b039384166001600160a01b031991821617909155600380549290931691161790556100ce565b3390565b611231806100dd6000396000f3fe6080604052600436106100dd5760003560e01c8063aad2b7231161007f578063ddca3f4311610059578063ddca3f43146102c9578063f25f4b56146102de578063f2fde38b146102f3578063f9aebda014610326576100dd565b8063aad2b7231461025a578063bdf070b61461028d578063d4d5d32a146102b4576100dd565b80636a1db1bf116100bb5780636a1db1bf146101cd578063715018a6146101f75780638b5bdada1461020c5780638da5cb5b14610245576100dd565b80633463abb2146100e25780633e4d0310146101695780634ce748591461019c575b600080fd5b610167600480360360808110156100f857600080fd5b81019060208101813564010000000081111561011357600080fd5b82018360208201111561012557600080fd5b8035906020019184600183028401116401000000008311171561014757600080fd5b91935091508035906001600160a01b036020820135169060400135610364565b005b34801561017557600080fd5b506101676004803603602081101561018c57600080fd5b50356001600160a01b0316610607565b3480156101a857600080fd5b506101b161068b565b604080516001600160a01b039092168252519081900360200190f35b3480156101d957600080fd5b50610167600480360360208110156101f057600080fd5b503561069a565b34801561020357600080fd5b50610167610701565b34801561021857600080fd5b506101676004803603604081101561022f57600080fd5b506001600160a01b0381351690602001356107ad565b34801561025157600080fd5b506101b1610843565b34801561026657600080fd5b506101676004803603602081101561027d57600080fd5b50356001600160a01b0316610852565b34801561029957600080fd5b506102a26108d6565b60408051918252519081900360200190f35b3480156102c057600080fd5b506101676108dc565b3480156102d557600080fd5b506102a26109ee565b3480156102ea57600080fd5b506101b16109f4565b3480156102ff57600080fd5b506101676004803603602081101561031657600080fd5b50356001600160a01b0316610a03565b34801561033257600080fd5b506103506004803603602081101561034957600080fd5b5035610b06565b604080519115158252519081900360200190f35b600260005414156103bc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260009081558381526006602052604090205460ff1615610418576040805162461bcd60e51b815260206004820152601060248201526f1053149150511657d1561150d555115160821b604482015290519081900360640190fd5b6000838152600660205260409020805460ff1916600117905580610479576040805162461bcd60e51b81526020600482015260136024820152724e4f5448494e475f544f5f574954484452415760681b604482015290519081900360640190fd5b60055434146104c4576040805162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015290519081900360640190fd5b6040805160208082018690526bffffffffffffffffffffffff19606086811b919091168385015233901b60548301526068808301859052835180840390910181526088830180855281519183019190912060a8601f8a01849004909302840183019094528781526105509284928a918a91829101838280828437600092019190915250610b1b92505050565b610595576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6105a0833384610b6e565b6005546004546105af91610cd8565b600455604080518581526020810184905281516001600160a01b0386169233927fcd6ac346191b4b7531743e58f243dd4d350a52a9186641c1e5eac22b95aaedbe929081900390910190a35050600160005550505050565b61060f610d39565b6001600160a01b0316610620610843565b6001600160a01b031614610669576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6106a2610d39565b6001600160a01b03166106b3610843565b6001600160a01b0316146106fc576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600555565b610709610d39565b6001600160a01b031661071a610843565b6001600160a01b031614610763576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b600081116107f3576040805162461bcd60e51b815260206004820152600e60248201526d1253959053125117d05353d5539560921b604482015290519081900360640190fd5b6107ff82333084610d3d565b6040805182815290516001600160a01b0384169133917f63e35e92cba2f74cf881dc0d3cd0bb0d2d410f99203dce687272133843fef4069181900360200190a35050565b6001546001600160a01b031690565b61085a610d39565b6001600160a01b031661086b610843565b6001600160a01b0316146108b4576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b6108e4610d39565b6001600160a01b03166108f5610843565b6001600160a01b03161461093e576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6003546001600160a01b031661098e576040805162461bcd60e51b815260206004820152601060248201526f14d155155417d1915157d5d05313115560821b604482015290519081900360640190fd5b6000600454116109ce576040805162461bcd60e51b81526020600482015260066024820152654e4f5f46454560d01b604482015290519081900360640190fd5b6003546004546109e7916001600160a01b031690610e9a565b6000600455565b60055481565b6003546001600160a01b031681565b610a0b610d39565b6001600160a01b0316610a1c610843565b6001600160a01b031614610a65576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6001600160a01b038116610aaa5760405162461bcd60e51b815260040180806020018281038252602681526020018061116f6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60066020526000908152604090205460ff1681565b600080610b2784610f92565b90506060610b358285610fe3565b60025481519192506001600160a01b0316908290600090610b5257fe5b60200260200101516001600160a01b0316149250505092915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610beb5780518252601f199092019160209182019101610bcc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c4d576040519150601f19603f3d011682016040523d82523d6000602084013e610c52565b606091505b5091509150818015610c80575080511580610c805750808060200190516020811015610c7d57600080fd5b50515b610cd1576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b600082820183811015610d32576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310610dc25780518252601f199092019160209182019101610da3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5091509150818015610e57575080511580610e575750808060200190516020811015610e5457600080fd5b50515b610e925760405162461bcd60e51b81526004018080602001828103825260248152602001806111d86024913960400191505060405180910390fd5b505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310610ee65780518252601f199092019160209182019101610ec7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f48576040519150601f19603f3d011682016040523d82523d6000602084013e610f4d565b606091505b5050905080610f8d5760405162461bcd60e51b81526004018080602001828103825260238152602001806111b56023913960400191505060405180910390fd5b505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6060600080600080610ff4866110ef565b90508067ffffffffffffffff8111801561100d57600080fd5b50604051908082528060200260200182016040528015611037578160200160208202803683370190505b50945060005b818110156110e45761104f878261111c565b604080516000815260208082018084528e905260ff8616828401526060820185905260808201849052915194995092975090955060019260a080840193601f198301929081900390910190855afa1580156110ae573d6000803e3d6000fd5b505050602060405103518682815181106110c457fe5b6001600160a01b039092166020928302919091019091015260010161103d565b505050505092915050565b600060418251816110fc57fe5b0615611109576000611116565b604182518161111457fe5b045b92915050565b604180820283810160208101516040820151919093015160ff169291601b84101561114857601b840193505b8360ff16601b148061115d57508360ff16601c145b61116657600080fd5b50925092509256fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220379a074abd03d2c1ebacc9b64922aadf2c50d0fe9aac93dae2fe464781a557b064736f6c634300060c00330000000000000000000000007f9725d129edb2a7595aaf8c8bc3f6ecb5f3069500000000000000000000000077d29ed8a1a7a0bd62dde0bb2ce61ba2118a0629
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c8063aad2b7231161007f578063ddca3f4311610059578063ddca3f43146102c9578063f25f4b56146102de578063f2fde38b146102f3578063f9aebda014610326576100dd565b8063aad2b7231461025a578063bdf070b61461028d578063d4d5d32a146102b4576100dd565b80636a1db1bf116100bb5780636a1db1bf146101cd578063715018a6146101f75780638b5bdada1461020c5780638da5cb5b14610245576100dd565b80633463abb2146100e25780633e4d0310146101695780634ce748591461019c575b600080fd5b610167600480360360808110156100f857600080fd5b81019060208101813564010000000081111561011357600080fd5b82018360208201111561012557600080fd5b8035906020019184600183028401116401000000008311171561014757600080fd5b91935091508035906001600160a01b036020820135169060400135610364565b005b34801561017557600080fd5b506101676004803603602081101561018c57600080fd5b50356001600160a01b0316610607565b3480156101a857600080fd5b506101b161068b565b604080516001600160a01b039092168252519081900360200190f35b3480156101d957600080fd5b50610167600480360360208110156101f057600080fd5b503561069a565b34801561020357600080fd5b50610167610701565b34801561021857600080fd5b506101676004803603604081101561022f57600080fd5b506001600160a01b0381351690602001356107ad565b34801561025157600080fd5b506101b1610843565b34801561026657600080fd5b506101676004803603602081101561027d57600080fd5b50356001600160a01b0316610852565b34801561029957600080fd5b506102a26108d6565b60408051918252519081900360200190f35b3480156102c057600080fd5b506101676108dc565b3480156102d557600080fd5b506102a26109ee565b3480156102ea57600080fd5b506101b16109f4565b3480156102ff57600080fd5b506101676004803603602081101561031657600080fd5b50356001600160a01b0316610a03565b34801561033257600080fd5b506103506004803603602081101561034957600080fd5b5035610b06565b604080519115158252519081900360200190f35b600260005414156103bc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260009081558381526006602052604090205460ff1615610418576040805162461bcd60e51b815260206004820152601060248201526f1053149150511657d1561150d555115160821b604482015290519081900360640190fd5b6000838152600660205260409020805460ff1916600117905580610479576040805162461bcd60e51b81526020600482015260136024820152724e4f5448494e475f544f5f574954484452415760681b604482015290519081900360640190fd5b60055434146104c4576040805162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015290519081900360640190fd5b6040805160208082018690526bffffffffffffffffffffffff19606086811b919091168385015233901b60548301526068808301859052835180840390910181526088830180855281519183019190912060a8601f8a01849004909302840183019094528781526105509284928a918a91829101838280828437600092019190915250610b1b92505050565b610595576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6105a0833384610b6e565b6005546004546105af91610cd8565b600455604080518581526020810184905281516001600160a01b0386169233927fcd6ac346191b4b7531743e58f243dd4d350a52a9186641c1e5eac22b95aaedbe929081900390910190a35050600160005550505050565b61060f610d39565b6001600160a01b0316610620610843565b6001600160a01b031614610669576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6106a2610d39565b6001600160a01b03166106b3610843565b6001600160a01b0316146106fc576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600555565b610709610d39565b6001600160a01b031661071a610843565b6001600160a01b031614610763576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b600081116107f3576040805162461bcd60e51b815260206004820152600e60248201526d1253959053125117d05353d5539560921b604482015290519081900360640190fd5b6107ff82333084610d3d565b6040805182815290516001600160a01b0384169133917f63e35e92cba2f74cf881dc0d3cd0bb0d2d410f99203dce687272133843fef4069181900360200190a35050565b6001546001600160a01b031690565b61085a610d39565b6001600160a01b031661086b610843565b6001600160a01b0316146108b4576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60045481565b6108e4610d39565b6001600160a01b03166108f5610843565b6001600160a01b03161461093e576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6003546001600160a01b031661098e576040805162461bcd60e51b815260206004820152601060248201526f14d155155417d1915157d5d05313115560821b604482015290519081900360640190fd5b6000600454116109ce576040805162461bcd60e51b81526020600482015260066024820152654e4f5f46454560d01b604482015290519081900360640190fd5b6003546004546109e7916001600160a01b031690610e9a565b6000600455565b60055481565b6003546001600160a01b031681565b610a0b610d39565b6001600160a01b0316610a1c610843565b6001600160a01b031614610a65576040805162461bcd60e51b81526020600482018190526024820152600080516020611195833981519152604482015290519081900360640190fd5b6001600160a01b038116610aaa5760405162461bcd60e51b815260040180806020018281038252602681526020018061116f6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b60066020526000908152604090205460ff1681565b600080610b2784610f92565b90506060610b358285610fe3565b60025481519192506001600160a01b0316908290600090610b5257fe5b60200260200101516001600160a01b0316149250505092915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610beb5780518252601f199092019160209182019101610bcc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c4d576040519150601f19603f3d011682016040523d82523d6000602084013e610c52565b606091505b5091509150818015610c80575080511580610c805750808060200190516020811015610c7d57600080fd5b50515b610cd1576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b600082820183811015610d32576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310610dc25780518252601f199092019160209182019101610da3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5091509150818015610e57575080511580610e575750808060200190516020811015610e5457600080fd5b50515b610e925760405162461bcd60e51b81526004018080602001828103825260248152602001806111d86024913960400191505060405180910390fd5b505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310610ee65780518252601f199092019160209182019101610ec7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f48576040519150601f19603f3d011682016040523d82523d6000602084013e610f4d565b606091505b5050905080610f8d5760405162461bcd60e51b81526004018080602001828103825260238152602001806111b56023913960400191505060405180910390fd5b505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6060600080600080610ff4866110ef565b90508067ffffffffffffffff8111801561100d57600080fd5b50604051908082528060200260200182016040528015611037578160200160208202803683370190505b50945060005b818110156110e45761104f878261111c565b604080516000815260208082018084528e905260ff8616828401526060820185905260808201849052915194995092975090955060019260a080840193601f198301929081900390910190855afa1580156110ae573d6000803e3d6000fd5b505050602060405103518682815181106110c457fe5b6001600160a01b039092166020928302919091019091015260010161103d565b505050505092915050565b600060418251816110fc57fe5b0615611109576000611116565b604182518161111457fe5b045b92915050565b604180820283810160208101516040820151919093015160ff169291601b84101561114857601b840193505b8360ff16601b148061115d57508360ff16601c145b61116657600080fd5b50925092509256fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657248656c7065723a204554485f5452414e534645525f4641494c45445472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220379a074abd03d2c1ebacc9b64922aadf2c50d0fe9aac93dae2fe464781a557b064736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007f9725d129edb2a7595aaf8c8bc3f6ecb5f3069500000000000000000000000077d29ed8a1a7a0bd62dde0bb2ce61ba2118a0629
-----Decoded View---------------
Arg [0] : _signer (address): 0x7F9725d129edB2a7595AAF8c8Bc3F6Ecb5f30695
Arg [1] : _feeWallet (address): 0x77D29eD8A1a7A0BD62DDE0Bb2CE61ba2118a0629
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007f9725d129edb2a7595aaf8c8bc3f6ecb5f30695
Arg [1] : 00000000000000000000000077d29ed8a1a7a0bd62dde0bb2ce61ba2118a0629
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.