Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 168 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Add New Proxy | 24572271 | 10 days ago | IN | 0 ETH | 0.00008219 | ||||
| Add New Proxy | 24415149 | 32 days ago | IN | 0 ETH | 0.00003296 | ||||
| Add New Proxy | 24321211 | 45 days ago | IN | 0 ETH | 0.00158874 | ||||
| Add New Proxy | 24315916 | 46 days ago | IN | 0 ETH | 0.0015762 | ||||
| Add New Proxy | 24120131 | 73 days ago | IN | 0 ETH | 0.00005696 | ||||
| Add New Proxy | 24089682 | 77 days ago | IN | 0 ETH | 0.00002743 | ||||
| Add New Proxy | 24075626 | 79 days ago | IN | 0 ETH | 0.00157155 | ||||
| Add New Proxy | 23947911 | 97 days ago | IN | 0 ETH | 0.00011888 | ||||
| Add New Proxy | 23850588 | 111 days ago | IN | 0 ETH | 0.00017186 | ||||
| Add New Proxy | 23571259 | 150 days ago | IN | 0 ETH | 0.00079835 | ||||
| Add New Proxy | 23566283 | 151 days ago | IN | 0 ETH | 0.00160879 | ||||
| Add New Proxy | 23566237 | 151 days ago | IN | 0 ETH | 0.00161803 | ||||
| Add New Proxy | 23515960 | 158 days ago | IN | 0 ETH | 0.00006456 | ||||
| Add New Proxy | 23509462 | 159 days ago | IN | 0 ETH | 0.00007837 | ||||
| Add New Proxy | 23405190 | 173 days ago | IN | 0 ETH | 0.00020245 | ||||
| Add New Proxy | 23349620 | 181 days ago | IN | 0 ETH | 0.0007822 | ||||
| Add New Proxy | 23213669 | 200 days ago | IN | 0 ETH | 0.00021031 | ||||
| Add New Proxy | 23195143 | 202 days ago | IN | 0 ETH | 0.00071597 | ||||
| Add New Proxy | 23145710 | 209 days ago | IN | 0 ETH | 0.00042801 | ||||
| Add New Proxy | 23145706 | 209 days ago | IN | 0 ETH | 0.00047234 | ||||
| Add New Proxy | 23107884 | 215 days ago | IN | 0 ETH | 0.00033438 | ||||
| Add New Proxy | 23019199 | 227 days ago | IN | 0 ETH | 0.00198491 | ||||
| Add New Proxy | 22976618 | 233 days ago | IN | 0 ETH | 0.00068115 | ||||
| Add New Proxy | 22964137 | 235 days ago | IN | 0 ETH | 0.00191534 | ||||
| Add New Proxy | 22933741 | 239 days ago | IN | 0 ETH | 0.00679665 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LSVProxyRegistry
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-08-25
*/
// SPDX-License-Identifier: MIT
pragma solidity =0.8.10;
contract MainnetActionsUtilAddresses {
address internal constant DFS_REG_CONTROLLER_ADDR = 0xF8f8B3C98Cf2E63Df3041b73f80F362a4cf3A576;
address internal constant REGISTRY_ADDR = 0x287778F121F134C66212FB16c9b53eC991D32f5b;
address internal constant DFS_LOGGER_ADDR = 0xcE7a977Cac4a481bc84AC06b2Da0df614e621cf3;
address internal constant SUB_STORAGE_ADDR = 0x1612fc28Ee0AB882eC99842Cde0Fc77ff0691e90;
address internal constant PROXY_AUTH_ADDR = 0x149667b6FAe2c63D1B4317C716b0D0e4d3E2bD70;
address internal constant LSV_PROXY_REGISTRY_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address internal constant TRANSIENT_STORAGE = 0x2F7Ef2ea5E8c97B8687CA703A0e50Aa5a49B7eb2;
}
contract ActionsUtilHelper is MainnetActionsUtilAddresses {
}
contract MainnetAuthAddresses {
address internal constant ADMIN_VAULT_ADDR = 0xCCf3d848e08b94478Ed8f46fFead3008faF581fD;
address internal constant FACTORY_ADDRESS = 0x5a15566417e6C1c9546523066500bDDBc53F88C7;
address internal constant ADMIN_ADDR = 0x25eFA336886C74eA8E282ac466BdCd0199f85BB9; // USED IN ADMIN VAULT CONSTRUCTOR
}
contract AuthHelper is MainnetAuthAddresses {
}
contract AdminVault is AuthHelper {
address public owner;
address public admin;
error SenderNotAdmin();
constructor() {
owner = msg.sender;
admin = ADMIN_ADDR;
}
/// @notice Admin is able to change owner
/// @param _owner Address of new owner
function changeOwner(address _owner) public {
if (admin != msg.sender){
revert SenderNotAdmin();
}
owner = _owner;
}
/// @notice Admin is able to set new admin
/// @param _admin Address of multisig that becomes new admin
function changeAdmin(address _admin) public {
if (admin != msg.sender){
revert SenderNotAdmin();
}
admin = _admin;
}
}
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint256 digits);
function totalSupply() external view returns (uint256 supply);
function balanceOf(address _owner) external view returns (uint256 balance);
function transfer(address _to, uint256 _value) external returns (bool success);
function transferFrom(
address _from,
address _to,
uint256 _value
) external returns (bool success);
function approve(address _spender, uint256 _value) external returns (bool success);
function allowance(address _owner, address _spender) external view returns (uint256 remaining);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
library Address {
//insufficient balance
error InsufficientBalance(uint256 available, uint256 required);
//unable to send value, recipient may have reverted
error SendingValueFail();
//insufficient balance for call
error InsufficientBalanceForCall(uint256 available, uint256 required);
//call to non-contract
error NonContractCall();
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly {
codehash := extcodehash(account)
}
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
uint256 balance = address(this).balance;
if (balance < amount){
revert InsufficientBalance(balance, amount);
}
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{value: amount}("");
if (!(success)){
revert SendingValueFail();
}
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
uint256 balance = address(this).balance;
if (balance < value){
revert InsufficientBalanceForCall(balance, value);
}
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(
address target,
bytes memory data,
uint256 weiValue,
string memory errorMessage
) private returns (bytes memory) {
if (!(isContract(target))){
revert NonContractCall();
}
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{value: weiValue}(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
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-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
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)
);
}
/// @dev Edited so it always first approves 0 and then the value, because of non standard tokens
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, 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,
"SafeERC20: decreased allowance below zero"
);
_callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, newAllowance)
);
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(
data,
"SafeERC20: low-level call failed"
);
if (returndata.length > 0) {
// Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
contract AdminAuth is AuthHelper {
using SafeERC20 for IERC20;
AdminVault public constant adminVault = AdminVault(ADMIN_VAULT_ADDR);
error SenderNotOwner();
error SenderNotAdmin();
modifier onlyOwner() {
if (adminVault.owner() != msg.sender){
revert SenderNotOwner();
}
_;
}
modifier onlyAdmin() {
if (adminVault.admin() != msg.sender){
revert SenderNotAdmin();
}
_;
}
/// @notice withdraw stuck funds
function withdrawStuckFunds(address _token, address _receiver, uint256 _amount) public onlyOwner {
if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) {
payable(_receiver).transfer(_amount);
} else {
IERC20(_token).safeTransfer(_receiver, _amount);
}
}
/// @notice Destroy the contract
function kill() public onlyAdmin {
selfdestruct(payable(msg.sender));
}
}
abstract contract DSAuthority {
function canCall(
address src,
address dst,
bytes4 sig
) public view virtual returns (bool);
}
contract DSAuthEvents {
event LogSetAuthority(address indexed authority);
event LogSetOwner(address indexed owner);
}
contract DSAuth is DSAuthEvents {
DSAuthority public authority;
address public owner;
constructor() {
owner = msg.sender;
emit LogSetOwner(msg.sender);
}
function setOwner(address owner_) public auth {
owner = owner_;
emit LogSetOwner(owner);
}
function setAuthority(DSAuthority authority_) public auth {
authority = authority_;
emit LogSetAuthority(address(authority));
}
modifier auth {
require(isAuthorized(msg.sender, msg.sig), "Not authorized");
_;
}
function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
if (src == address(this)) {
return true;
} else if (src == owner) {
return true;
} else if (authority == DSAuthority(address(0))) {
return false;
} else {
return authority.canCall(src, address(this), sig);
}
}
}
contract DSNote {
event LogNote(
bytes4 indexed sig,
address indexed guy,
bytes32 indexed foo,
bytes32 indexed bar,
uint256 wad,
bytes fax
) anonymous;
modifier note {
bytes32 foo;
bytes32 bar;
assembly {
foo := calldataload(4)
bar := calldataload(36)
}
emit LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);
_;
}
}
abstract contract DSProxy is DSAuth, DSNote {
DSProxyCache public cache; // global cache for contracts
constructor(address _cacheAddr) {
if (!(setCache(_cacheAddr))){
require(isAuthorized(msg.sender, msg.sig), "Not authorized");
}
}
// solhint-disable-next-line no-empty-blocks
receive() external payable {}
// use the proxy to execute calldata _data on contract _code
function execute(bytes memory _code, bytes memory _data)
public
payable
virtual
returns (address target, bytes32 response);
function execute(address _target, bytes memory _data)
public
payable
virtual
returns (bytes32 response);
//set new cache
function setCache(address _cacheAddr) public payable virtual returns (bool);
}
contract DSProxyCache {
mapping(bytes32 => address) cache;
function read(bytes memory _code) public view returns (address) {
bytes32 hash = keccak256(_code);
return cache[hash];
}
function write(bytes memory _code) public returns (address target) {
assembly {
target := create(0, add(_code, 0x20), mload(_code))
switch iszero(extcodesize(target))
case 1 {
// throw if contract failed to deploy
revert(0, 0)
}
}
bytes32 hash = keccak256(_code);
cache[hash] = target;
}
}
abstract contract DSProxyFactoryInterface {
function build(address owner) public virtual returns (DSProxy proxy);
function build() public virtual returns (DSProxy proxy);
}
contract MainnetUtilAddresses {
address internal refillCaller = 0x33fDb79aFB4456B604f376A45A546e7ae700e880;
address internal feeAddr = 0x76720aC2574631530eC8163e4085d6F98513fb27;
address internal constant BOT_REGISTRY_ADDRESS = 0x637726f8b08a7ABE3aE3aCaB01A80E2d8ddeF77B;
address internal constant UNI_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
address internal constant MKR_PROXY_REGISTRY = 0x4678f0a6958e4D2Bc4F1BAF7Bc52E8F3564f3fE4;
address internal constant AAVE_MARKET = 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5;
address internal constant PROXY_FACTORY_ADDR = 0xA26e15C895EFc0616177B7c1e7270A4C7D51C997;
address internal constant DFS_PROXY_REGISTRY_ADDR = 0x29474FdaC7142f9aB7773B8e38264FA15E3805ed;
address internal constant WETH_ADDR = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
address internal constant ETH_ADDR = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address internal constant WSTETH_ADDR = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0;
address internal constant STETH_ADDR = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;
address internal constant WBTC_ADDR = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599;
address internal constant CHAINLINK_WBTC_ADDR = 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB;
address internal constant DAI_ADDR = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
address internal constant FEE_RECEIVER_ADMIN_ADDR = 0xA74e9791D7D66c6a14B2C571BdA0F2A1f6D64E06;
address internal constant UNI_V3_ROUTER = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
address internal constant UNI_V3_QUOTER = 0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6;
address internal constant FEE_RECIPIENT = 0x39C4a92Dc506300c3Ea4c67ca4CA611102ee6F2A;
// not needed on mainnet
address internal constant DEFAULT_BOT = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address public constant CHAINLINK_FEED_REGISTRY = 0x47Fb2585D2C56Fe188D0E6ec628a38b74fCeeeDf;
}
contract UtilHelper is MainnetUtilAddresses{
}
contract LSVProxyRegistry is AdminAuth, UtilHelper, ActionsUtilHelper {
/// @dev List of proxies a user owns
mapping(address => address[]) public proxies;
/// @dev List of prebuilt proxies the users can claim to save gas
address[] public proxyPool;
event NewProxy(address, address);
event ChangedOwner(address oldOwner, address newOwner, address proxy);
/// @notice User calls from EOA to build a new LSV registered proxy
function addNewProxy() public returns (address) {
address newProxy = getFromPoolOrBuild(msg.sender);
proxies[msg.sender].push(newProxy);
emit NewProxy(msg.sender, newProxy);
return newProxy;
}
function updateRegistry(address _proxyAddr, address _oldOwner, uint256 _indexNumInOldOwnerProxiesArr) public {
// check if msg.sender is the owner of proxy in question
require(DSProxy(payable(_proxyAddr)).owner() == msg.sender);
// check if oldOwner really was the owner of proxy in question
require(proxies[_oldOwner][_indexNumInOldOwnerProxiesArr] == _proxyAddr);
// remove proxy from oldOwners proxies
uint256 oldOwnersProxyCount = proxies[_oldOwner].length;
if (oldOwnersProxyCount > 1 && _indexNumInOldOwnerProxiesArr < (oldOwnersProxyCount - 1)) {
proxies[_oldOwner][_indexNumInOldOwnerProxiesArr] = proxies[_oldOwner][oldOwnersProxyCount - 1];
}
proxies[_oldOwner].pop();
// add proxy to msg.sender proxies
proxies[msg.sender].push(_proxyAddr);
}
/// @notice Adds proxies to pool for users to later claim and save on gas
function addToPool(uint256 _numNewProxies) public {
for (uint256 i = 0; i < _numNewProxies; ++i) {
DSProxy newProxy = DSProxyFactoryInterface(PROXY_FACTORY_ADDR).build();
proxyPool.push(address(newProxy));
}
}
/// @notice helper function to get all users proxies
function getProxies(address _user) public view returns (address[] memory){
address[] memory resultProxies = new address[](proxies[_user].length);
for (uint256 i = 0; i < proxies[_user].length; i++){
resultProxies[i] = proxies[_user][i];
}
return resultProxies;
}
/// @notice helper function to check how many proxies are there in the proxy pool for cheaper user onboarding
function getProxyPoolCount() public view returns (uint256) {
return proxyPool.length;
}
/// @notice Create a new DSProxy or grabs a prebuilt one
function getFromPoolOrBuild(address _user) internal returns (address) {
if (proxyPool.length > 0) {
address newProxy = proxyPool[proxyPool.length - 1];
proxyPool.pop();
DSAuth(newProxy).setOwner(_user);
return newProxy;
} else {
DSProxy newProxy = DSProxyFactoryInterface(PROXY_FACTORY_ADDR).build(_user);
return address(newProxy);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"NonContractCall","type":"error"},{"inputs":[],"name":"SenderNotAdmin","type":"error"},{"inputs":[],"name":"SenderNotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"},{"indexed":false,"internalType":"address","name":"proxy","type":"address"}],"name":"ChangedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"NewProxy","type":"event"},{"inputs":[],"name":"CHAINLINK_FEED_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addNewProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numNewProxies","type":"uint256"}],"name":"addToPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getProxies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyPoolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"proxies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proxyPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_proxyAddr","type":"address"},{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"uint256","name":"_indexNumInOldOwnerProxiesArr","type":"uint256"}],"name":"updateRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600080546001600160a01b03199081167333fdb79afb4456b604f376a45a546e7ae700e88017909155600180549091167376720ac2574631530ec8163e4085d6f98513fb2717905534801561005857600080fd5b506112d3806100686000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063632e6e3211610081578063ac890c4e1161005b578063ac890c4e14610199578063c579d490146101aa578063dfc0c754146101bd57600080fd5b8063632e6e32146101435780637d9f7712146101635780638cedca711461017e57600080fd5b806341c0e1b5116100b257806341c0e1b514610115578063438aacf21461011d5780635dcf7c8c1461013057600080fd5b80631c5fc483146100ce578063214f403f146100e3575b600080fd5b6100e16100dc366004610f97565b6101d0565b005b6100eb6102ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e1610399565b6100eb61012b366004610f97565b610483565b6100eb61013e366004610fd5565b6104ba565b610156610151366004611001565b6104ff565b60405161010c919061101e565b6100eb7347fb2585d2c56fe188d0e6ec628a38b74fceeedf81565b6100eb73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b60035460405190815260200161010c565b6100e16101b8366004611078565b61064f565b6100e16101cb366004611078565b6107d7565b60005b818110156102e857600073a26e15c895efc0616177b7c1e7270a4c7d51c99773ffffffffffffffffffffffffffffffffffffffff16638e1a55fc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561023e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026291906110b9565b600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055506102e181611105565b90506101d3565b5050565b6000806102f833610ad4565b33600081815260026020908152604080832080546001810182559084529282902090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301529192507fa94ca626c15b5acbc6f820b88b794bce0d7a9198f2ed3e248aa0a362e2bdd60b910160405180910390a1919050565b3373ffffffffffffffffffffffffffffffffffffffff1673ccf3d848e08b94478ed8f46ffead3008faf581fd73ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043391906110b9565b73ffffffffffffffffffffffffffffffffffffffff1614610480576040517fa6c827a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33ff5b6003818154811061049357600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600260205281600052604060002081815481106104d657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260408120546060919067ffffffffffffffff8111156105415761054161113e565b60405190808252806020026020018201604052801561056a578160200160208202803683370190505b50905060005b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260205260409020548110156106485773ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090208054829081106105d4576105d461116d565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106106115761061161116d565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101528061064081611105565b915050610570565b5092915050565b3373ffffffffffffffffffffffffffffffffffffffff1673ccf3d848e08b94478ed8f46ffead3008faf581fd73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e991906110b9565b73ffffffffffffffffffffffffffffffffffffffff1614610736576040517f19494c8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff841614156107b15760405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156107ab573d6000803e3d6000fd5b50505050565b6107d273ffffffffffffffffffffffffffffffffffffffff84168383610cc9565b505050565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d91906110b9565b73ffffffffffffffffffffffffffffffffffffffff161461087d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020805491851691839081106108b9576108b961116d565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146108e557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054600181118015610924575061092160018261119c565b82105b156109fc5773ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902061095960018361119c565b815481106109695761096961116d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600290925260409092208054919092169190849081106109b3576109b361116d565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409020805480610a3057610a306111b3565b600082815260208082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908401810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155930190935533815260028352604081208054600181018255908252929020909101805490911673ffffffffffffffffffffffffffffffffffffffff9590951694909417909355505050565b60035460009015610c1b576003805460009190610af39060019061119c565b81548110610b0357610b0361116d565b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921692509080610b3b57610b3b6111b3565b6000828152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190556040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528216906313af403590602401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b509295945050505050565b6040517ff3701da200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260009073a26e15c895efc0616177b7c1e7270a4c7d51c9979063f3701da2906024016020604051808303816000875af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906110b9565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107d292869291600091610d94918516908490610e43565b8051909150156107d25780806020019051810190610db291906111e2565b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6060610e528484600085610e5a565b949350505050565b6060610e6585610f5e565b610e9b576040517f304619b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ec49190611230565b60006040518083038185875af1925050503d8060008114610f01576040519150601f19603f3d011682016040523d82523d6000602084013e610f06565b606091505b50915091508115610f1a579150610e529050565b805115610f2a5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a919061124c565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e52575050151592915050565b600060208284031215610fa957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fd257600080fd5b50565b60008060408385031215610fe857600080fd5b8235610ff381610fb0565b946020939093013593505050565b60006020828403121561101357600080fd5b8135610cc281610fb0565b6020808252825182820181905260009190848201906040850190845b8181101561106c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161103a565b50909695505050505050565b60008060006060848603121561108d57600080fd5b833561109881610fb0565b925060208401356110a881610fb0565b929592945050506040919091013590565b6000602082840312156110cb57600080fd5b8151610cc281610fb0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611137576111376110d6565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111ae576111ae6110d6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000602082840312156111f457600080fd5b81518015158114610cc257600080fd5b60005b8381101561121f578181015183820152602001611207565b838111156107ab5750506000910152565b60008251611242818460208701611204565b9190910192915050565b602081526000825180602084015261126b816040850160208701611204565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122093648c8257e965fa48751a3fab548e3bec1d301e7e75ca1af43d1c87db4749ce64736f6c634300080a0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100c95760003560e01c8063632e6e3211610081578063ac890c4e1161005b578063ac890c4e14610199578063c579d490146101aa578063dfc0c754146101bd57600080fd5b8063632e6e32146101435780637d9f7712146101635780638cedca711461017e57600080fd5b806341c0e1b5116100b257806341c0e1b514610115578063438aacf21461011d5780635dcf7c8c1461013057600080fd5b80631c5fc483146100ce578063214f403f146100e3575b600080fd5b6100e16100dc366004610f97565b6101d0565b005b6100eb6102ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e1610399565b6100eb61012b366004610f97565b610483565b6100eb61013e366004610fd5565b6104ba565b610156610151366004611001565b6104ff565b60405161010c919061101e565b6100eb7347fb2585d2c56fe188d0e6ec628a38b74fceeedf81565b6100eb73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b60035460405190815260200161010c565b6100e16101b8366004611078565b61064f565b6100e16101cb366004611078565b6107d7565b60005b818110156102e857600073a26e15c895efc0616177b7c1e7270a4c7d51c99773ffffffffffffffffffffffffffffffffffffffff16638e1a55fc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561023e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061026291906110b9565b600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055506102e181611105565b90506101d3565b5050565b6000806102f833610ad4565b33600081815260026020908152604080832080546001810182559084529282902090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301529192507fa94ca626c15b5acbc6f820b88b794bce0d7a9198f2ed3e248aa0a362e2bdd60b910160405180910390a1919050565b3373ffffffffffffffffffffffffffffffffffffffff1673ccf3d848e08b94478ed8f46ffead3008faf581fd73ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043391906110b9565b73ffffffffffffffffffffffffffffffffffffffff1614610480576040517fa6c827a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33ff5b6003818154811061049357600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600260205281600052604060002081815481106104d657600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260408120546060919067ffffffffffffffff8111156105415761054161113e565b60405190808252806020026020018201604052801561056a578160200160208202803683370190505b50905060005b73ffffffffffffffffffffffffffffffffffffffff84166000908152600260205260409020548110156106485773ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090208054829081106105d4576105d461116d565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106106115761061161116d565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101528061064081611105565b915050610570565b5092915050565b3373ffffffffffffffffffffffffffffffffffffffff1673ccf3d848e08b94478ed8f46ffead3008faf581fd73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e991906110b9565b73ffffffffffffffffffffffffffffffffffffffff1614610736576040517f19494c8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff841614156107b15760405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f193505050501580156107ab573d6000803e3d6000fd5b50505050565b6107d273ffffffffffffffffffffffffffffffffffffffff84168383610cc9565b505050565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d91906110b9565b73ffffffffffffffffffffffffffffffffffffffff161461087d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020805491851691839081106108b9576108b961116d565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16146108e557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902054600181118015610924575061092160018261119c565b82105b156109fc5773ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902061095960018361119c565b815481106109695761096961116d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff8681168452600290925260409092208054919092169190849081106109b3576109b361116d565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260409020805480610a3057610a306111b3565b600082815260208082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908401810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155930190935533815260028352604081208054600181018255908252929020909101805490911673ffffffffffffffffffffffffffffffffffffffff9590951694909417909355505050565b60035460009015610c1b576003805460009190610af39060019061119c565b81548110610b0357610b0361116d565b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff90921692509080610b3b57610b3b6111b3565b6000828152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908201810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190556040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528216906313af403590602401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b509295945050505050565b6040517ff3701da200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260009073a26e15c895efc0616177b7c1e7270a4c7d51c9979063f3701da2906024016020604051808303816000875af1158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906110b9565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107d292869291600091610d94918516908490610e43565b8051909150156107d25780806020019051810190610db291906111e2565b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6060610e528484600085610e5a565b949350505050565b6060610e6585610f5e565b610e9b576040517f304619b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610ec49190611230565b60006040518083038185875af1925050503d8060008114610f01576040519150601f19603f3d011682016040523d82523d6000602084013e610f06565b606091505b50915091508115610f1a579150610e529050565b805115610f2a5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a919061124c565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e52575050151592915050565b600060208284031215610fa957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fd257600080fd5b50565b60008060408385031215610fe857600080fd5b8235610ff381610fb0565b946020939093013593505050565b60006020828403121561101357600080fd5b8135610cc281610fb0565b6020808252825182820181905260009190848201906040850190845b8181101561106c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161103a565b50909695505050505050565b60008060006060848603121561108d57600080fd5b833561109881610fb0565b925060208401356110a881610fb0565b929592945050506040919091013590565b6000602082840312156110cb57600080fd5b8151610cc281610fb0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611137576111376110d6565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111ae576111ae6110d6565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000602082840312156111f457600080fd5b81518015158114610cc257600080fd5b60005b8381101561121f578181015183820152602001611207565b838111156107ab5750506000910152565b60008251611242818460208701611204565b9190910192915050565b602081526000825180602084015261126b816040850160208701611204565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122093648c8257e965fa48751a3fab548e3bec1d301e7e75ca1af43d1c87db4749ce64736f6c634300080a0033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.