Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ConnectV3AaveIncentivesOptimism
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
/**
* @title Aave v3 Rewards.
* @dev Claim Aave v3 rewards.
*/
import { TokenInterface } from "../../../../common/interfaces.sol";
import { Stores } from "../../../../common/stores.sol";
import { Helpers } from "./helpers.sol";
import { Events } from "./events.sol";
abstract contract IncentivesResolver is Helpers, Events {
/**
* @dev Claim Pending Rewards.
* @notice Claim Pending Rewards from Aave v3 incentives contract.
* @param assets The list of assets supplied and borrowed.
* @param amt The amount of reward to claim. (uint(-1) for max)
* @param reward The address of reward token to claim.
* @param getId ID to retrieve amt.
* @param setId ID stores the amount of rewards claimed.
*/
function claim(
address[] calldata assets,
uint256 amt,
address reward,
uint256 getId,
uint256 setId
)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
uint256 _amt = getUint(getId, amt);
require(assets.length > 0, "invalid-assets");
_amt = incentives.claimRewards(assets, _amt, address(this), reward);
TokenInterface weth = TokenInterface(wethAddr);
uint256 wethAmount = weth.balanceOf(address(this));
convertWethToEth(wethAmount > 0, weth, wethAmount);
setUint(setId, _amt);
_eventName = "LogClaimed(address[],uint256,uint256,uint256)";
_eventParam = abi.encode(assets, _amt, getId, setId);
}
/**
* @dev Claim All Pending Rewards.
* @notice Claim All Pending Rewards from Aave v3 incentives contract.
* @param assets The list of assets supplied and borrowed.
*/
function claimAll(address[] calldata assets)
external
payable
returns (string memory _eventName, bytes memory _eventParam)
{
require(assets.length > 0, "invalid-assets");
uint256[] memory _amts = new uint256[](assets.length);
address[] memory _rewards = new address[](assets.length);
(_rewards, _amts) = incentives.claimAllRewards(assets, address(this));
TokenInterface weth = TokenInterface(wethAddr);
uint256 wethAmount = weth.balanceOf(address(this));
convertWethToEth(wethAmount > 0, weth, wethAmount);
_eventName = "LogAllClaimed(address[],address[],uint256[])";
_eventParam = abi.encode(assets, _rewards, _amts);
}
}
contract ConnectV3AaveIncentivesOptimism is IncentivesResolver {
string public constant name = "Aave-V3-Incentives-v1";
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma abicoder v2;
interface TokenInterface {
function approve(address, uint256) external;
function transfer(address, uint) external;
function transferFrom(address, address, uint) external;
function deposit() external payable;
function withdraw(uint) external;
function balanceOf(address) external view returns (uint);
function decimals() external view returns (uint);
function totalSupply() external view returns (uint);
}
interface MemoryInterface {
function getUint(uint id) external returns (uint num);
function setUint(uint id, uint val) external;
}
interface AccountInterface {
function enable(address) external;
function disable(address) external;
function isAuth(address) external view returns (bool);
function cast(
string[] calldata _targetNames,
bytes[] calldata _datas,
address _origin
) external payable returns (bytes32[] memory responses);
}
interface ListInterface {
function accountID(address) external returns (uint64);
}
interface InstaConnectors {
function isConnectors(string[] calldata) external returns (bool, address[] memory);
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import { MemoryInterface, ListInterface, InstaConnectors } from "./interfaces.sol";
abstract contract Stores {
/**
* @dev Return ethereum address
*/
address constant internal ethAddr = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
/**
* @dev Return Wrapped ETH address
*/
address constant internal wethAddr = 0x4200000000000000000000000000000000000006;
/**
* @dev Return memory variable address
*/
MemoryInterface constant internal instaMemory = MemoryInterface(0x3254Ce8f5b1c82431B8f21Df01918342215825C2);
/**
* @dev Return InstaList address
*/
ListInterface internal constant instaList = ListInterface(0x9926955e0Dd681Dc303370C52f4Ad0a4dd061687);
/**
* @dev Returns connectors registry address
*/
InstaConnectors internal constant instaConnectors = InstaConnectors(0x127d8cD0E2b2E0366D522DeA53A787bfE9002C14);
/**
* @dev Get Uint value from InstaMemory Contract.
*/
function getUint(uint getId, uint val) internal returns (uint returnVal) {
returnVal = getId == 0 ? val : instaMemory.getUint(getId);
}
/**
* @dev Set Uint value in InstaMemory Contract.
*/
function setUint(uint setId, uint val) virtual internal {
if (setId != 0) instaMemory.setUint(setId, val);
}
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import { DSMath } from "../../../../common/math.sol";
import { Basic } from "../../../../common/basic.sol";
import { AaveIncentivesInterface } from "./interface.sol";
abstract contract Helpers is DSMath, Basic {
/**
* @dev Aave v3 Incentives
*/
AaveIncentivesInterface internal constant incentives =
AaveIncentivesInterface(0x929EC64c34a17401F460460D4B9390518E5B473e);
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
contract Events {
event LogClaimed(
address[] assets,
uint256 amt,
uint256 getId,
uint256 setId
);
event LogAllClaimed(address[] assets, address[] rewards, uint256[] amt);
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol";
contract DSMath {
uint constant WAD = 10 ** 18;
uint constant RAY = 10 ** 27;
function add(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.add(x, y);
}
function sub(uint x, uint y) internal virtual pure returns (uint z) {
z = SafeMath.sub(x, y);
}
function mul(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.mul(x, y);
}
function div(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.div(x, y);
}
function wmul(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.add(SafeMath.mul(x, y), WAD / 2) / WAD;
}
function wdiv(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.add(SafeMath.mul(x, WAD), y / 2) / y;
}
function rdiv(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.add(SafeMath.mul(x, RAY), y / 2) / y;
}
function rmul(uint x, uint y) internal pure returns (uint z) {
z = SafeMath.add(SafeMath.mul(x, y), RAY / 2) / RAY;
}
function toInt(uint x) internal pure returns (int y) {
y = int(x);
require(y >= 0, "int-overflow");
}
function toRad(uint wad) internal pure returns (uint rad) {
rad = mul(wad, 10 ** 27);
}
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
import { TokenInterface } from "./interfaces.sol";
import { Stores } from "./stores.sol";
import { DSMath } from "./math.sol";
abstract contract Basic is DSMath, Stores {
function convert18ToDec(uint _dec, uint256 _amt) internal pure returns (uint256 amt) {
amt = (_amt / 10 ** (18 - _dec));
}
function convertTo18(uint _dec, uint256 _amt) internal pure returns (uint256 amt) {
amt = mul(_amt, 10 ** (18 - _dec));
}
function getTokenBal(TokenInterface token) internal view returns(uint _amt) {
_amt = address(token) == ethAddr ? address(this).balance : token.balanceOf(address(this));
}
function getTokensDec(TokenInterface buyAddr, TokenInterface sellAddr) internal view returns(uint buyDec, uint sellDec) {
buyDec = address(buyAddr) == ethAddr ? 18 : buyAddr.decimals();
sellDec = address(sellAddr) == ethAddr ? 18 : sellAddr.decimals();
}
function encodeEvent(string memory eventName, bytes memory eventParam) internal pure returns (bytes memory) {
return abi.encode(eventName, eventParam);
}
function approve(TokenInterface token, address spender, uint256 amount) internal {
try token.approve(spender, amount) {
} catch {
token.approve(spender, 0);
token.approve(spender, amount);
}
}
function changeEthAddress(address buy, address sell) internal pure returns(TokenInterface _buy, TokenInterface _sell){
_buy = buy == ethAddr ? TokenInterface(wethAddr) : TokenInterface(buy);
_sell = sell == ethAddr ? TokenInterface(wethAddr) : TokenInterface(sell);
}
function changeEthAddrToWethAddr(address token) internal pure returns(address tokenAddr){
tokenAddr = token == ethAddr ? wethAddr : token;
}
function convertEthToWeth(bool isEth, TokenInterface token, uint amount) internal {
if(isEth) token.deposit{value: amount}();
}
function convertWethToEth(bool isEth, TokenInterface token, uint amount) internal {
if(isEth) {
approve(token, address(token), amount);
token.withdraw(amount);
}
}
}//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
interface AaveIncentivesInterface {
function claimRewards(
address[] calldata assets,
uint256 amount,
address to,
address reward
) external returns (uint256);
function claimAllRewards(address[] calldata assets, address to)
external
returns (address[] memory rewardsList, uint256[] memory claimedAmounts);
}// 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;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"rewards","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amt","type":"uint256[]"}],"name":"LogAllClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"assets","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"getId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogClaimed","type":"event"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address","name":"reward","type":"address"},{"internalType":"uint256","name":"getId","type":"uint256"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"claim","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"name":"claimAll","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50610cac806100206000396000f3fe6080604052600436106100345760003560e01c806306fdde03146100395780631e2de0d1146100c3578063ab4d93481461020f575b600080fd5b34801561004557600080fd5b5061004e610298565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610088578181015183820152602001610070565b50505050905090810190601f1680156100b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610131600480360360208110156100d957600080fd5b810190602081018135600160201b8111156100f357600080fd5b82018360208201111561010557600080fd5b803590602001918460208302840111600160201b8311171561012657600080fd5b5090925090506102c9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101d25781810151838201526020016101ba565b50505050905090810190601f1680156101ff5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610131600480360360a081101561022557600080fd5b810190602081018135600160201b81111561023f57600080fd5b82018360208201111561025157600080fd5b803590602001918460208302840111600160201b8311171561027257600080fd5b91935091508035906001600160a01b0360208201351690604081013590606001356106fd565b60405180604001604052806015815260200174416176652d56332d496e63656e74697665732d763160581b81525081565b6060808261030f576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c69642d61737365747360901b604482015290519081900360640190fd5b60008367ffffffffffffffff8111801561032857600080fd5b50604051908082528060200260200182016040528015610352578160200160208202803683370190505b50905060008467ffffffffffffffff8111801561036e57600080fd5b50604051908082528060200260200182016040528015610398578160200160208202803683370190505b506040805163bb492bf560e01b81523060248201819052600482019283526044820189905292935073929ec64c34a17401f460460d4b9390518e5b473e9263bb492bf5928a928a9291908190606401856020860280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561046457600080fd5b8101908080516040519392919084600160201b82111561048357600080fd5b90830190602082018581111561049857600080fd5b82518660208202830111600160201b821117156104b457600080fd5b82525081516020918201928201910280838360005b838110156104e15781810151838201526020016104c9565b5050505090500160405260200180516040519392919084600160201b82111561050957600080fd5b90830190602082018581111561051e57600080fd5b82518660208202830111600160201b8211171561053a57600080fd5b82525081516020918201928201910280838360005b8381101561056757818101518382015260200161054f565b505050509190910160408181526370a0823160e01b8252306004830152519598509596506006602160991b01956000958795506370a08231945060248083019450602093509091829003018186803b1580156105c257600080fd5b505afa1580156105d6573d6000803e3d6000fd5b505050506040513d60208110156105ec57600080fd5b505190506105fd8115158383610948565b6040518060600160405280602c8152602001610c4b602c91399550878784866040516020018080602001806020018060200184810384528888828181526020019250602002808284376000838201819052601f909101601f19169092018681038552885181528851602091820193828b0193509102908190849084905b8381101561069257818101518382015260200161067a565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156106d15781810151838201526020016106b9565b505050509050019750505050505050506040516020818303038152906040529450505050509250929050565b606080600061070c85886109bd565b905087610751576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c69642d61737365747360901b604482015290519081900360640190fd5b6040516308d8c03760e21b81526024810182905230604482018190526001600160a01b0388166064830152608060048301908152608483018b905273929ec64c34a17401f460460d4b9390518e5b473e9263236300dc928d928d928792918d91819060a401876020880280828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b505050506040513d602081101561082257600080fd5b5051604080516370a0823160e01b815230600482015290519192506006602160991b019160009183916370a0823191602480820192602092909190829003018186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d602081101561089b57600080fd5b505190506108ac8115158383610948565b6108b68684610a59565b6040518060600160405280602d8152602001610c1e602d913994508a8a84898960405160200180806020018581526020018481526020018381526020018281038252878782818152602001925060200280828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040529350505050965096945050505050565b82156109b857610959828383610ad6565b816001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561099f57600080fd5b505af11580156109b3573d6000803e3d6000fd5b505050505b505050565b60008215610a5057733254ce8f5b1c82431b8f21df01918342215825c26001600160a01b031663a9c70eaa846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b505050506040513d6020811015610a4957600080fd5b5051610a52565b815b9392505050565b8115610ad25760408051631878f25160e21b815260048101849052602481018390529051733254ce8f5b1c82431b8f21df01918342215825c2916361e3c94491604480830192600092919082900301818387803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050505b5050565b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b2d57600080fd5b505af1925050508015610b3e575060015b6109b8576040805163095ea7b360e01b81526001600160a01b03848116600483015260006024830181905292519086169263095ea7b3926044808201939182900301818387803b158015610b9157600080fd5b505af1158015610ba5573d6000803e3d6000fd5b50505050826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b505050506109b856fe4c6f67436c61696d656428616464726573735b5d2c75696e743235362c75696e743235362c75696e74323536294c6f67416c6c436c61696d656428616464726573735b5d2c616464726573735b5d2c75696e743235365b5d29a264697066735822122085b6ebffbff72a14cf03cf840a642ee413e6a9cb00034f680153d4a8714d3cac64736f6c63430007060033
Deployed Bytecode
0x6080604052600436106100345760003560e01c806306fdde03146100395780631e2de0d1146100c3578063ab4d93481461020f575b600080fd5b34801561004557600080fd5b5061004e610298565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610088578181015183820152602001610070565b50505050905090810190601f1680156100b55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610131600480360360208110156100d957600080fd5b810190602081018135600160201b8111156100f357600080fd5b82018360208201111561010557600080fd5b803590602001918460208302840111600160201b8311171561012657600080fd5b5090925090506102c9565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101d25781810151838201526020016101ba565b50505050905090810190601f1680156101ff5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b610131600480360360a081101561022557600080fd5b810190602081018135600160201b81111561023f57600080fd5b82018360208201111561025157600080fd5b803590602001918460208302840111600160201b8311171561027257600080fd5b91935091508035906001600160a01b0360208201351690604081013590606001356106fd565b60405180604001604052806015815260200174416176652d56332d496e63656e74697665732d763160581b81525081565b6060808261030f576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c69642d61737365747360901b604482015290519081900360640190fd5b60008367ffffffffffffffff8111801561032857600080fd5b50604051908082528060200260200182016040528015610352578160200160208202803683370190505b50905060008467ffffffffffffffff8111801561036e57600080fd5b50604051908082528060200260200182016040528015610398578160200160208202803683370190505b506040805163bb492bf560e01b81523060248201819052600482019283526044820189905292935073929ec64c34a17401f460460d4b9390518e5b473e9263bb492bf5928a928a9291908190606401856020860280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561046457600080fd5b8101908080516040519392919084600160201b82111561048357600080fd5b90830190602082018581111561049857600080fd5b82518660208202830111600160201b821117156104b457600080fd5b82525081516020918201928201910280838360005b838110156104e15781810151838201526020016104c9565b5050505090500160405260200180516040519392919084600160201b82111561050957600080fd5b90830190602082018581111561051e57600080fd5b82518660208202830111600160201b8211171561053a57600080fd5b82525081516020918201928201910280838360005b8381101561056757818101518382015260200161054f565b505050509190910160408181526370a0823160e01b8252306004830152519598509596506006602160991b01956000958795506370a08231945060248083019450602093509091829003018186803b1580156105c257600080fd5b505afa1580156105d6573d6000803e3d6000fd5b505050506040513d60208110156105ec57600080fd5b505190506105fd8115158383610948565b6040518060600160405280602c8152602001610c4b602c91399550878784866040516020018080602001806020018060200184810384528888828181526020019250602002808284376000838201819052601f909101601f19169092018681038552885181528851602091820193828b0193509102908190849084905b8381101561069257818101518382015260200161067a565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156106d15781810151838201526020016106b9565b505050509050019750505050505050506040516020818303038152906040529450505050509250929050565b606080600061070c85886109bd565b905087610751576040805162461bcd60e51b815260206004820152600e60248201526d696e76616c69642d61737365747360901b604482015290519081900360640190fd5b6040516308d8c03760e21b81526024810182905230604482018190526001600160a01b0388166064830152608060048301908152608483018b905273929ec64c34a17401f460460d4b9390518e5b473e9263236300dc928d928d928792918d91819060a401876020880280828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b505050506040513d602081101561082257600080fd5b5051604080516370a0823160e01b815230600482015290519192506006602160991b019160009183916370a0823191602480820192602092909190829003018186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d602081101561089b57600080fd5b505190506108ac8115158383610948565b6108b68684610a59565b6040518060600160405280602d8152602001610c1e602d913994508a8a84898960405160200180806020018581526020018481526020018381526020018281038252878782818152602001925060200280828437600081840152601f19601f82011690508083019250505096505050505050506040516020818303038152906040529350505050965096945050505050565b82156109b857610959828383610ad6565b816001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561099f57600080fd5b505af11580156109b3573d6000803e3d6000fd5b505050505b505050565b60008215610a5057733254ce8f5b1c82431b8f21df01918342215825c26001600160a01b031663a9c70eaa846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a1f57600080fd5b505af1158015610a33573d6000803e3d6000fd5b505050506040513d6020811015610a4957600080fd5b5051610a52565b815b9392505050565b8115610ad25760408051631878f25160e21b815260048101849052602481018390529051733254ce8f5b1c82431b8f21df01918342215825c2916361e3c94491604480830192600092919082900301818387803b158015610ab957600080fd5b505af1158015610acd573d6000803e3d6000fd5b505050505b5050565b826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b2d57600080fd5b505af1925050508015610b3e575060015b6109b8576040805163095ea7b360e01b81526001600160a01b03848116600483015260006024830181905292519086169263095ea7b3926044808201939182900301818387803b158015610b9157600080fd5b505af1158015610ba5573d6000803e3d6000fd5b50505050826001600160a01b031663095ea7b383836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c0057600080fd5b505af1158015610c14573d6000803e3d6000fd5b505050506109b856fe4c6f67436c61696d656428616464726573735b5d2c75696e743235362c75696e743235362c75696e74323536294c6f67416c6c436c61696d656428616464726573735b5d2c616464726573735b5d2c75696e743235365b5d29a264697066735822122085b6ebffbff72a14cf03cf840a642ee413e6a9cb00034f680153d4a8714d3cac64736f6c63430007060033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.