Source Code
Latest 25 from a total of 117 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Aggregate | 8567683 | 2379 days ago | IN | 0 ETH | 0.00437367 | ||||
| Transfer | 7940368 | 2477 days ago | IN | 0 ETH | 0.00082644 | ||||
| Aggregate | 7939654 | 2477 days ago | IN | 0.12 ETH | 0.00057131 | ||||
| Aggregate | 7939650 | 2477 days ago | IN | 0 ETH | 0.00063468 | ||||
| Aggregate | 7939633 | 2477 days ago | IN | 0 ETH | 0.00088098 | ||||
| Aggregate | 7939623 | 2477 days ago | IN | 0.0002 ETH | 0.00057703 | ||||
| Aggregate | 7939619 | 2477 days ago | IN | 0.0005 ETH | 0.00056246 | ||||
| Aggregate | 7939612 | 2477 days ago | IN | 0.02 ETH | 0.00050023 | ||||
| Aggregate | 7939611 | 2477 days ago | IN | 0.001 ETH | 0.00075873 | ||||
| Aggregate | 7939602 | 2477 days ago | IN | 0.001 ETH | 0.00086583 | ||||
| Aggregate | 7939600 | 2477 days ago | IN | 0.3 ETH | 0.00089706 | ||||
| Aggregate | 7939598 | 2477 days ago | IN | 0.001 ETH | 0.00075883 | ||||
| Aggregate | 7939595 | 2477 days ago | IN | 0.001 ETH | 0.00075873 | ||||
| Aggregate | 7939593 | 2477 days ago | IN | 0.001 ETH | 0.00045216 | ||||
| Aggregate | 7939587 | 2477 days ago | IN | 0.3 ETH | 0.00081009 | ||||
| Aggregate | 7939583 | 2477 days ago | IN | 0.00166 ETH | 0.00045561 | ||||
| Aggregate | 7939572 | 2477 days ago | IN | 0.002 ETH | 0.00070752 | ||||
| Aggregate | 7939568 | 2477 days ago | IN | 0.003 ETH | 0.00075873 | ||||
| Aggregate | 7939564 | 2477 days ago | IN | 0.005 ETH | 0.00062055 | ||||
| Aggregate | 7939557 | 2477 days ago | IN | 0 ETH | 0.00011167 | ||||
| Aggregate | 7939551 | 2477 days ago | IN | 0.026 ETH | 0.00065203 | ||||
| Aggregate | 7939549 | 2477 days ago | IN | 0.02 ETH | 0.00064732 | ||||
| Aggregate | 7939548 | 2477 days ago | IN | 0.0008 ETH | 0.00045177 | ||||
| Aggregate | 7939541 | 2477 days ago | IN | 0.0433254 ETH | 0.00060366 | ||||
| Aggregate | 7939531 | 2477 days ago | IN | 0.001 ETH | 0.00066309 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 7939654 | 2477 days ago | 0.12 ETH | ||||
| - | 7939623 | 2477 days ago | 0.0002 ETH | ||||
| - | 7939619 | 2477 days ago | 0.0005 ETH | ||||
| - | 7939612 | 2477 days ago | 0.02 ETH | ||||
| - | 7939611 | 2477 days ago | 0.0001 ETH | ||||
| - | 7939611 | 2477 days ago | 0.0009 ETH | ||||
| - | 7939602 | 2477 days ago | 0.001 ETH | ||||
| - | 7939600 | 2477 days ago | 0.102 ETH | ||||
| - | 7939600 | 2477 days ago | 0.198 ETH | ||||
| - | 7939598 | 2477 days ago | 0.00002 ETH | ||||
| - | 7939598 | 2477 days ago | 0.00098 ETH | ||||
| - | 7939595 | 2477 days ago | 0.00002 ETH | ||||
| - | 7939595 | 2477 days ago | 0.00098 ETH | ||||
| - | 7939593 | 2477 days ago | 0.001 ETH | ||||
| - | 7939587 | 2477 days ago | 0.102 ETH | ||||
| - | 7939587 | 2477 days ago | 0.198 ETH | ||||
| - | 7939583 | 2477 days ago | 0.00166 ETH | ||||
| - | 7939572 | 2477 days ago | 0.002 ETH | ||||
| - | 7939568 | 2477 days ago | 0.00096 ETH | ||||
| - | 7939568 | 2477 days ago | 0.00204 ETH | ||||
| - | 7939564 | 2477 days ago | 0.005 ETH | ||||
| - | 7939557 | 2477 days ago | 0.01820222 ETH | ||||
| - | 7939557 | 2477 days ago | 0.00000364 ETH | ||||
| - | 7939557 | 2477 days ago | 0.01820586 ETH | ||||
| - | 7939551 | 2477 days ago | 0.026 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AggregatedTokenSwap
Compiler Version
v0.5.8+commit.23d335f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-06-03
*/
pragma solidity ^0.5.0;
interface IGST2 {
function freeUpTo(uint256 value) external returns (uint256 freed);
function freeFromUpTo(address from, uint256 value) external returns (uint256 freed);
function balanceOf(address who) external view returns (uint256);
}
library ExternalCall {
// Source: https://github.com/gnosis/MultiSigWallet/blob/master/contracts/MultiSigWallet.sol
// call has been separated into its own function in order to take advantage
// of the Solidity's code generator to produce a loop that copies tx.data into memory.
function externalCall(address destination, uint value, bytes memory data, uint dataOffset, uint dataLength) internal returns(bool result) {
// solium-disable-next-line security/no-inline-assembly
assembly {
let x := mload(0x40) // "Allocate" memory for output (0x40 is where "free memory" pointer is stored by convention)
let d := add(data, 32) // First 32 bytes are the padded length of data, so exclude that
result := call(
sub(gas, 34710), // 34710 is the value that solidity is currently emitting
// It includes callGas (700) + callVeryLow (3, to pay for SUB) + callValueTransferGas (9000) +
// callNewAccountGas (25000, in case the destination address does not exist and needs creating)
destination,
value,
add(d, dataOffset),
dataLength, // Size of the input (in bytes) - this is what fixes the padding problem
x,
0 // Output is ignored, therefore the output size is zero
)
}
}
}
/**
* @title ERC20 interface
* @dev see https://eips.ethereum.org/EIPS/eip-20
*/
interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title SafeMath
* @dev Unsigned math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two unsigned integers, reverts on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (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-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
/**
* @dev Adds two unsigned integers, reverts on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
/**
* @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
/**
* Utility library of inline functions on addresses
*/
library Address {
/**
* Returns whether the target address is a contract
* @dev This function will return false if invoked during the constructor of a contract,
* as the code is not actually created until after the constructor finishes.
* @param account address of the account to check
* @return whether the target address is a contract
*/
function isContract(address account) internal view returns (bool) {
uint256 size;
// XXX Currently there is no better way to check if there is a contract in an address
// than to check the size of the code at that address.
// See https://ethereum.stackexchange.com/a/14016/36603
// for more details about how this works.
// TODO Check this again before the Serenity release, because all addresses will be
// contracts then.
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor () internal {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @return the address of the owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner());
_;
}
/**
* @return true if `msg.sender` is the owner of the contract.
*/
function isOwner() public view returns (bool) {
return msg.sender == _owner;
}
/**
* @dev Allows the current owner to relinquish control of the contract.
* It will not be possible to call the functions with the `onlyOwner`
* modifier anymore.
* @notice Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0));
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
/**
* @title SafeERC20
* @dev Wrappers around ERC20 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 ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require((value == 0) || (token.allowance(address(this), spender) == 0));
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @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 equal true).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
require(address(token).isContract());
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success);
if (returndata.length > 0) { // Return data is optional
require(abi.decode(returndata, (bool)));
}
}
}
contract TokenSpender is Ownable {
using SafeERC20 for IERC20;
function claimTokens(IERC20 token, address who, address dest, uint256 amount) external onlyOwner {
token.safeTransferFrom(who, dest, amount);
}
}
contract AggregatedTokenSwap {
using SafeERC20 for IERC20;
using SafeMath for uint;
using ExternalCall for address;
address constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
TokenSpender public spender;
IGST2 gasToken;
address payable owner;
uint fee; // 10000 => 100%, 1 => 0.01%
event OneInchFeePaid(
IERC20 indexed toToken,
address indexed referrer,
uint256 fee
);
modifier onlyOwner {
require(
msg.sender == owner,
"Only owner can call this function."
);
_;
}
constructor(
address payable _owner,
IGST2 _gasToken,
uint _fee
)
public
{
spender = new TokenSpender();
owner = _owner;
gasToken = _gasToken;
fee = _fee;
}
function setFee(uint _fee) public onlyOwner {
fee = _fee;
}
function aggregate(
IERC20 fromToken,
IERC20 toToken,
uint tokensAmount,
address[] memory callAddresses,
bytes memory callDataConcat,
uint[] memory starts,
uint[] memory values,
uint mintGasPrice,
uint minTokensAmount,
address payable referrer
)
public
payable
returns (uint returnAmount)
{
returnAmount = gasleft();
uint gasTokenBalance = gasToken.balanceOf(address(this));
require(callAddresses.length + 1 == starts.length);
if (address(fromToken) != ETH_ADDRESS) {
spender.claimTokens(fromToken, msg.sender, address(this), tokensAmount);
}
for (uint i = 0; i < starts.length - 1; i++) {
if (starts[i + 1] - starts[i] > 0) {
if (
address(fromToken) != ETH_ADDRESS &&
fromToken.allowance(address(this), callAddresses[i]) == 0
) {
fromToken.safeApprove(callAddresses[i], uint256(- 1));
}
require(
callDataConcat[starts[i] + 0] != spender.claimTokens.selector[0] ||
callDataConcat[starts[i] + 1] != spender.claimTokens.selector[1] ||
callDataConcat[starts[i] + 2] != spender.claimTokens.selector[2] ||
callDataConcat[starts[i] + 3] != spender.claimTokens.selector[3]
);
require(callAddresses[i].externalCall(values[i], callDataConcat, starts[i], starts[i + 1] - starts[i]));
}
}
if (address(toToken) == ETH_ADDRESS) {
require(address(this).balance >= minTokensAmount);
} else {
require(toToken.balanceOf(address(this)) >= minTokensAmount);
}
//
require(gasTokenBalance == gasToken.balanceOf(address(this)));
if (mintGasPrice > 0) {
audoRefundGas(returnAmount, mintGasPrice);
}
//
returnAmount = _balanceOf(toToken, address(this)) * fee / 10000;
if (referrer != address(0)) {
returnAmount /= 2;
if (!_transfer(toToken, referrer, returnAmount, true)) {
returnAmount *= 2;
emit OneInchFeePaid(toToken, address(0), returnAmount);
} else {
emit OneInchFeePaid(toToken, referrer, returnAmount / 2);
}
}
_transfer(toToken, owner, returnAmount, false);
returnAmount = _balanceOf(toToken, address(this));
_transfer(toToken, msg.sender, returnAmount, false);
}
function _balanceOf(IERC20 token, address who) internal view returns(uint256) {
if (address(token) == ETH_ADDRESS || token == IERC20(0)) {
return who.balance;
} else {
return token.balanceOf(who);
}
}
function _transfer(IERC20 token, address payable to, uint256 amount, bool allowFail) internal returns(bool) {
if (address(token) == ETH_ADDRESS || token == IERC20(0)) {
if (allowFail) {
return to.send(amount);
} else {
to.transfer(amount);
return true;
}
} else {
token.safeTransfer(to, amount);
return true;
}
}
function audoRefundGas(
uint startGas,
uint mintGasPrice
)
private
returns (uint freed)
{
uint MINT_BASE = 32254;
uint MINT_TOKEN = 36543;
uint FREE_BASE = 14154;
uint FREE_TOKEN = 6870;
uint REIMBURSE = 24000;
uint tokensAmount = ((startGas - gasleft()) + FREE_BASE) / (2 * REIMBURSE - FREE_TOKEN);
uint maxReimburse = tokensAmount * REIMBURSE;
uint mintCost = MINT_BASE + (tokensAmount * MINT_TOKEN);
uint freeCost = FREE_BASE + (tokensAmount * FREE_TOKEN);
uint efficiency = (maxReimburse * 100 * tx.gasprice) / (mintCost * mintGasPrice + freeCost * tx.gasprice);
if (efficiency > 100) {
return refundGas(
tokensAmount
);
} else {
return 0;
}
}
function refundGas(
uint tokensAmount
)
private
returns (uint freed)
{
if (tokensAmount > 0) {
uint safeNumTokens = 0;
uint gas = gasleft();
if (gas >= 27710) {
safeNumTokens = (gas - 27710) / (1148 + 5722 + 150);
}
if (tokensAmount > safeNumTokens) {
tokensAmount = safeNumTokens;
}
uint gasTokenBalance = IERC20(address(gasToken)).balanceOf(address(this));
if (tokensAmount > 0 && gasTokenBalance >= tokensAmount) {
return gasToken.freeUpTo(tokensAmount);
} else {
return 0;
}
} else {
return 0;
}
}
function() external payable {
if (msg.value == 0 && msg.sender == owner) {
IERC20 _gasToken = IERC20(address(gasToken));
owner.transfer(address(this).balance);
_gasToken.safeTransfer(owner, _gasToken.balanceOf(address(this)));
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"fromToken","type":"address"},{"name":"toToken","type":"address"},{"name":"tokensAmount","type":"uint256"},{"name":"callAddresses","type":"address[]"},{"name":"callDataConcat","type":"bytes"},{"name":"starts","type":"uint256[]"},{"name":"values","type":"uint256[]"},{"name":"mintGasPrice","type":"uint256"},{"name":"minTokensAmount","type":"uint256"},{"name":"referrer","type":"address"}],"name":"aggregate","outputs":[{"name":"returnAmount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"spender","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_gasToken","type":"address"},{"name":"_fee","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"toToken","type":"address"},{"indexed":true,"name":"referrer","type":"address"},{"indexed":false,"name":"fee","type":"uint256"}],"name":"OneInchFeePaid","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b506040516060806116a18339810180604052606081101561003057600080fd5b508051602082015160409283015192519192909161004d906100b1565b604051809103906000f080158015610069573d6000803e3d6000fd5b50600080546001600160a01b03199081166001600160a01b039384161790915560028054821695831695909517909455600180549094169216919091179091556003556100be565b61041c8061128583390190565b6111b8806100cd6000396000f3fe6080604052600436106100345760003560e01c8063261fc7ef1461013157806369fe0e2d146103a2578063e8edc816146103cc575b3415801561004c57506002546001600160a01b031633145b1561012f576001546002546040516001600160a01b03928316929190911690303180156108fc02916000818181858888f19350505050158015610093573d6000803e3d6000fd5b5060025460408051600160e01b6370a08231028152306004820152905161012d926001600160a01b0390811692908516916370a0823191602480820192602092909190829003018186803b1580156100ea57600080fd5b505afa1580156100fe573d6000803e3d6000fd5b505050506040513d602081101561011457600080fd5b50516001600160a01b038416919063ffffffff6103fd16565b505b005b610390600480360361014081101561014857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561018257600080fd5b82018360208201111561019457600080fd5b803590602001918460208302840111600160201b831117156101b557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561020457600080fd5b82018360208201111561021657600080fd5b803590602001918460018302840111600160201b8311171561023757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561028957600080fd5b82018360208201111561029b57600080fd5b803590602001918460208302840111600160201b831117156102bc57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561030b57600080fd5b82018360208201111561031d57600080fd5b803590602001918460208302840111600160201b8311171561033e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160a01b0316610457565b60408051918252519081900360200190f35b3480156103ae57600080fd5b5061012f600480360360208110156103c557600080fd5b5035610b75565b3480156103d857600080fd5b506103e1610bc6565b604080516001600160a01b039092168252519081900360200190f35b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb02179052610452908490610bd5565b505050565b60005a60015460408051600160e01b6370a0823102815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156104ae57600080fd5b505afa1580156104c2573d6000803e3d6000fd5b505050506040513d60208110156104d857600080fd5b505187518a519192506001909101146104f057600080fd5b6001600160a01b038c1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146105d5576000809054906101000a90046001600160a01b03166001600160a01b0316630a5ea4668d33308e6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001945050505050600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b60005b60018851038110156108f25760008882815181106105f257fe5b602002602001015189836001018151811061060957fe5b60200260200101510311156108ea576001600160a01b038d1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906106f157508c6001600160a01b031663dd62ed3e308c848151811061065c57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d60208110156106ed57600080fd5b5051155b15610729576107298a828151811061070557fe5b60200260200101516000198f6001600160a01b0316610cd19092919063ffffffff16565b8751600160f91b600502908a908a908490811061074257fe5b60200260200101516000018151811061075757fe5b602001015160f81c60f81b6001600160f81b0319161415806107ba57508751600160f91b602f02908a908a908490811061078d57fe5b6020026020010151600101815181106107a257fe5b602001015160f81c60f81b6001600160f81b03191614155b8061080657508751600160fa1b602902908a908a90849081106107d957fe5b6020026020010151600201815181106107ee57fe5b602001015160f81c60f81b6001600160f81b03191614155b8061085257508751600160f91b603302908a908a908490811061082557fe5b60200260200101516003018151811061083a57fe5b602001015160f81c60f81b6001600160f81b03191614155b61085b57600080fd5b6108e187828151811061086a57fe5b60200260200101518a8a848151811061087f57fe5b60200260200101518b858151811061089357fe5b60200260200101518c86600101815181106108aa57fe5b6020026020010151038e86815181106108bf57fe5b60200260200101516001600160a01b0316610db890949392919063ffffffff16565b6108ea57600080fd5b6001016105d8565b506001600160a01b038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561092b57303184111561092657600080fd5b6109ae565b60408051600160e01b6370a08231028152306004820152905185916001600160a01b038e16916370a0823191602480820192602092909190829003018186803b15801561097757600080fd5b505afa15801561098b573d6000803e3d6000fd5b505050506040513d60208110156109a157600080fd5b505110156109ae57600080fd5b60015460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d6020811015610a2657600080fd5b50518114610a3357600080fd5b8415610a4557610a438286610ddc565b505b612710600354610a558d30610e60565b0281610a5d57fe5b0491506001600160a01b03831615610b3157600282049150610a828b84846001610f33565b610add5760028202915060006001600160a01b03168b6001600160a01b03167f713f62c1c63c3bb59b28b58e8486c5992361993a21817d75472fe9f2abad24cf846040518082815260200191505060405180910390a3610b31565b826001600160a01b03168b6001600160a01b03167f713f62c1c63c3bb59b28b58e8486c5992361993a21817d75472fe9f2abad24cf60028581610b1c57fe5b60408051929091048252519081900360200190a35b600254610b4b908c906001600160a01b0316846000610f33565b50610b568b30610e60565b9150610b658b33846000610f33565b50509a9950505050505050505050565b6002546001600160a01b03163314610bc157604051600160e51b62461bcd02815260040180806020018281038252602281526020018061116b6022913960400191505060405180910390fd5b600355565b6000546001600160a01b031681565b610be7826001600160a01b0316611004565b610bf057600080fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610c2e5780518252601f199092019160209182019101610c0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c90576040519150601f19603f3d011682016040523d82523d6000602084013e610c95565b606091505b509150915081610ca457600080fd5b805115610ccb57808060200190516020811015610cc057600080fd5b5051610ccb57600080fd5b50505050565b801580610d5a575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d6020811015610d5657600080fd5b5051155b610d6357600080fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b302179052610452908490610bd5565b600060405160208501600082858784018a8c6187965a03f198975050505050505050565b6000617dfe618ebf61374a611ad6615dc08561a0aa845a8b030181610dfd57fe5b0490508181028582028701848302860160003a8083028d8502019060649086020281610e2557fe5b0490506064811115610e4b57610e3a8561100e565b9a5050505050505050505050610e5a565b60009a50505050505050505050505b92915050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610e9457506001600160a01b038316155b15610eaa57506001600160a01b03811631610e5a565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f0057600080fd5b505afa158015610f14573d6000803e3d6000fd5b505050506040513d6020811015610f2a57600080fd5b50519050610e5a565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610f6757506001600160a01b038516155b15610fde578115610f9e576040516001600160a01b0385169084156108fc029085906000818181858888f193505050509050610ffc565b6040516001600160a01b0385169084156108fc029085906000818181858888f19350505050158015610fd4573d6000803e3d6000fd5b5060019050610ffc565b610ff86001600160a01b038616858563ffffffff6103fd16565b5060015b949350505050565b803b15155b919050565b60008115611162576000805a9050616c3e811061103257611b6c616c3d1982010491505b8184111561103e578193505b60015460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561108c57600080fd5b505afa1580156110a0573d6000803e3d6000fd5b505050506040513d60208110156110b657600080fd5b5051905084158015906110c95750848110155b156111565760015460408051600160e11b6331b35c9b0281526004810188905290516001600160a01b0390921691636366b936916024808201926020929091908290030181600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b5051935061100992505050565b60009350505050611009565b50600061100956fe4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6e2ea165627a7a723058204c0334d0cd98ac3d295193b791e315e477a40b6b207c72a926c3bc2c0ceeb140002960806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36103c5806100576000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630a5ea4661461005c578063715018a61461009a5780638da5cb5b146100a25780638f32d59b146100c6578063f2fde38b146100e2575b600080fd5b6100986004803603608081101561007257600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610108565b005b61009861013a565b6100aa610195565b604080516001600160a01b039092168252519081900360200190f35b6100ce6101a4565b604080519115158252519081900360200190f35b610098600480360360208110156100f857600080fd5b50356001600160a01b03166101b5565b6101106101a4565b61011957600080fd5b6101346001600160a01b03851684848463ffffffff6101d216565b50505050565b6101426101a4565b61014b57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6101bd6101a4565b6101c657600080fd5b6101cf8161022f565b50565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd0217905261013490859061029d565b6001600160a01b03811661024257600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6102af826001600160a01b0316610393565b6102b857600080fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106102f65780518252601f1990920191602091820191016102d7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610358576040519150601f19603f3d011682016040523d82523d6000602084013e61035d565b606091505b50915091508161036c57600080fd5b8051156101345780806020019051602081101561038857600080fd5b505161013457600080fd5b3b15159056fea165627a7a72305820527e51161d7752928ef3397f1ca34e4c247f84785325db9edb769475e7251f6a00290000000000000000000000004d37f28d2db99e8d35a6c725a5f1749a085850a30000000000000000000000000000000000b3f879cb30fe243b4dfee438691c040000000000000000000000000000000000000000000000000000000000000002
Deployed Bytecode
0x6080604052600436106100345760003560e01c8063261fc7ef1461013157806369fe0e2d146103a2578063e8edc816146103cc575b3415801561004c57506002546001600160a01b031633145b1561012f576001546002546040516001600160a01b03928316929190911690303180156108fc02916000818181858888f19350505050158015610093573d6000803e3d6000fd5b5060025460408051600160e01b6370a08231028152306004820152905161012d926001600160a01b0390811692908516916370a0823191602480820192602092909190829003018186803b1580156100ea57600080fd5b505afa1580156100fe573d6000803e3d6000fd5b505050506040513d602081101561011457600080fd5b50516001600160a01b038416919063ffffffff6103fd16565b505b005b610390600480360361014081101561014857600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561018257600080fd5b82018360208201111561019457600080fd5b803590602001918460208302840111600160201b831117156101b557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561020457600080fd5b82018360208201111561021657600080fd5b803590602001918460018302840111600160201b8311171561023757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561028957600080fd5b82018360208201111561029b57600080fd5b803590602001918460208302840111600160201b831117156102bc57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561030b57600080fd5b82018360208201111561031d57600080fd5b803590602001918460208302840111600160201b8311171561033e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160a01b0316610457565b60408051918252519081900360200190f35b3480156103ae57600080fd5b5061012f600480360360208110156103c557600080fd5b5035610b75565b3480156103d857600080fd5b506103e1610bc6565b604080516001600160a01b039092168252519081900360200190f35b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb02179052610452908490610bd5565b505050565b60005a60015460408051600160e01b6370a0823102815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156104ae57600080fd5b505afa1580156104c2573d6000803e3d6000fd5b505050506040513d60208110156104d857600080fd5b505187518a519192506001909101146104f057600080fd5b6001600160a01b038c1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146105d5576000809054906101000a90046001600160a01b03166001600160a01b0316630a5ea4668d33308e6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001945050505050600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b60005b60018851038110156108f25760008882815181106105f257fe5b602002602001015189836001018151811061060957fe5b60200260200101510311156108ea576001600160a01b038d1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015906106f157508c6001600160a01b031663dd62ed3e308c848151811061065c57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d60208110156106ed57600080fd5b5051155b15610729576107298a828151811061070557fe5b60200260200101516000198f6001600160a01b0316610cd19092919063ffffffff16565b8751600160f91b600502908a908a908490811061074257fe5b60200260200101516000018151811061075757fe5b602001015160f81c60f81b6001600160f81b0319161415806107ba57508751600160f91b602f02908a908a908490811061078d57fe5b6020026020010151600101815181106107a257fe5b602001015160f81c60f81b6001600160f81b03191614155b8061080657508751600160fa1b602902908a908a90849081106107d957fe5b6020026020010151600201815181106107ee57fe5b602001015160f81c60f81b6001600160f81b03191614155b8061085257508751600160f91b603302908a908a908490811061082557fe5b60200260200101516003018151811061083a57fe5b602001015160f81c60f81b6001600160f81b03191614155b61085b57600080fd5b6108e187828151811061086a57fe5b60200260200101518a8a848151811061087f57fe5b60200260200101518b858151811061089357fe5b60200260200101518c86600101815181106108aa57fe5b6020026020010151038e86815181106108bf57fe5b60200260200101516001600160a01b0316610db890949392919063ffffffff16565b6108ea57600080fd5b6001016105d8565b506001600160a01b038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561092b57303184111561092657600080fd5b6109ae565b60408051600160e01b6370a08231028152306004820152905185916001600160a01b038e16916370a0823191602480820192602092909190829003018186803b15801561097757600080fd5b505afa15801561098b573d6000803e3d6000fd5b505050506040513d60208110156109a157600080fd5b505110156109ae57600080fd5b60015460408051600160e01b6370a0823102815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109fc57600080fd5b505afa158015610a10573d6000803e3d6000fd5b505050506040513d6020811015610a2657600080fd5b50518114610a3357600080fd5b8415610a4557610a438286610ddc565b505b612710600354610a558d30610e60565b0281610a5d57fe5b0491506001600160a01b03831615610b3157600282049150610a828b84846001610f33565b610add5760028202915060006001600160a01b03168b6001600160a01b03167f713f62c1c63c3bb59b28b58e8486c5992361993a21817d75472fe9f2abad24cf846040518082815260200191505060405180910390a3610b31565b826001600160a01b03168b6001600160a01b03167f713f62c1c63c3bb59b28b58e8486c5992361993a21817d75472fe9f2abad24cf60028581610b1c57fe5b60408051929091048252519081900360200190a35b600254610b4b908c906001600160a01b0316846000610f33565b50610b568b30610e60565b9150610b658b33846000610f33565b50509a9950505050505050505050565b6002546001600160a01b03163314610bc157604051600160e51b62461bcd02815260040180806020018281038252602281526020018061116b6022913960400191505060405180910390fd5b600355565b6000546001600160a01b031681565b610be7826001600160a01b0316611004565b610bf057600080fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610c2e5780518252601f199092019160209182019101610c0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c90576040519150601f19603f3d011682016040523d82523d6000602084013e610c95565b606091505b509150915081610ca457600080fd5b805115610ccb57808060200190516020811015610cc057600080fd5b5051610ccb57600080fd5b50505050565b801580610d5a575060408051600160e11b636eb1769f0281523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610d2c57600080fd5b505afa158015610d40573d6000803e3d6000fd5b505050506040513d6020811015610d5657600080fd5b5051155b610d6357600080fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63095ea7b302179052610452908490610bd5565b600060405160208501600082858784018a8c6187965a03f198975050505050505050565b6000617dfe618ebf61374a611ad6615dc08561a0aa845a8b030181610dfd57fe5b0490508181028582028701848302860160003a8083028d8502019060649086020281610e2557fe5b0490506064811115610e4b57610e3a8561100e565b9a5050505050505050505050610e5a565b60009a50505050505050505050505b92915050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610e9457506001600160a01b038316155b15610eaa57506001600160a01b03811631610e5a565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f0057600080fd5b505afa158015610f14573d6000803e3d6000fd5b505050506040513d6020811015610f2a57600080fd5b50519050610e5a565b60006001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610f6757506001600160a01b038516155b15610fde578115610f9e576040516001600160a01b0385169084156108fc029085906000818181858888f193505050509050610ffc565b6040516001600160a01b0385169084156108fc029085906000818181858888f19350505050158015610fd4573d6000803e3d6000fd5b5060019050610ffc565b610ff86001600160a01b038616858563ffffffff6103fd16565b5060015b949350505050565b803b15155b919050565b60008115611162576000805a9050616c3e811061103257611b6c616c3d1982010491505b8184111561103e578193505b60015460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561108c57600080fd5b505afa1580156110a0573d6000803e3d6000fd5b505050506040513d60208110156110b657600080fd5b5051905084158015906110c95750848110155b156111565760015460408051600160e11b6331b35c9b0281526004810188905290516001600160a01b0390921691636366b936916024808201926020929091908290030181600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b505050506040513d602081101561114957600080fd5b5051935061100992505050565b60009350505050611009565b50600061100956fe4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6e2ea165627a7a723058204c0334d0cd98ac3d295193b791e315e477a40b6b207c72a926c3bc2c0ceeb1400029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004d37f28d2db99e8d35a6c725a5f1749a085850a30000000000000000000000000000000000b3f879cb30fe243b4dfee438691c040000000000000000000000000000000000000000000000000000000000000002
-----Decoded View---------------
Arg [0] : _owner (address): 0x4D37f28D2db99e8d35A6C725a5f1749A085850a3
Arg [1] : _gasToken (address): 0x0000000000b3F879cb30FE243b4Dfee438691c04
Arg [2] : _fee (uint256): 2
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004d37f28d2db99e8d35a6c725a5f1749a085850a3
Arg [1] : 0000000000000000000000000000000000b3f879cb30fe243b4dfee438691c04
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Swarm Source
bzzr://527e51161d7752928ef3397f1ca34e4c247f84785325db9edb769475e7251f6a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1.76
Net Worth in ETH
0.000811
Token Allocations
ANY
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 100.00% | $1.76 | 1 | $1.76 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.