Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 1,011 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Batch Meta Deleg... | 24601924 | 41 mins ago | IN | 0 ETH | 0.00001838 | ||||
| Batch Meta Deleg... | 24597423 | 15 hrs ago | IN | 0 ETH | 0.00006235 | ||||
| Batch Meta Deleg... | 24594929 | 24 hrs ago | IN | 0 ETH | 0.00001048 | ||||
| Batch Meta Deleg... | 24592857 | 31 hrs ago | IN | 0 ETH | 0.00003571 | ||||
| Batch Meta Deleg... | 24592852 | 31 hrs ago | IN | 0 ETH | 0.0000175 | ||||
| Batch Meta Deleg... | 24592844 | 31 hrs ago | IN | 0 ETH | 0.00004325 | ||||
| Batch Meta Deleg... | 24592836 | 31 hrs ago | IN | 0 ETH | 0.00002464 | ||||
| Batch Meta Deleg... | 24592818 | 31 hrs ago | IN | 0 ETH | 0.00003739 | ||||
| Batch Meta Deleg... | 24592788 | 31 hrs ago | IN | 0 ETH | 0.00001695 | ||||
| Batch Meta Deleg... | 24590628 | 38 hrs ago | IN | 0 ETH | 0.00007169 | ||||
| Batch Meta Deleg... | 24578668 | 3 days ago | IN | 0 ETH | 0.0000541 | ||||
| Batch Meta Deleg... | 24578490 | 3 days ago | IN | 0 ETH | 0.00002473 | ||||
| Batch Meta Deleg... | 24569165 | 4 days ago | IN | 0 ETH | 0.00001948 | ||||
| Batch Meta Deleg... | 24544293 | 8 days ago | IN | 0 ETH | 0.00001305 | ||||
| Batch Meta Deleg... | 24543916 | 8 days ago | IN | 0 ETH | 0.000023 | ||||
| Batch Meta Deleg... | 24541564 | 8 days ago | IN | 0 ETH | 0.00003555 | ||||
| Batch Meta Deleg... | 24539543 | 8 days ago | IN | 0 ETH | 0.00001336 | ||||
| Batch Meta Deleg... | 24537789 | 8 days ago | IN | 0 ETH | 0.00031565 | ||||
| Batch Meta Deleg... | 24535656 | 9 days ago | IN | 0 ETH | 0.00015723 | ||||
| Batch Meta Deleg... | 24535378 | 9 days ago | IN | 0 ETH | 0.00009948 | ||||
| Batch Meta Deleg... | 24518433 | 11 days ago | IN | 0 ETH | 0.00032902 | ||||
| Batch Meta Deleg... | 24505719 | 13 days ago | IN | 0 ETH | 0.00071787 | ||||
| Batch Meta Deleg... | 24499676 | 14 days ago | IN | 0 ETH | 0.00006503 | ||||
| Batch Meta Deleg... | 24498773 | 14 days ago | IN | 0 ETH | 0.00002526 | ||||
| Batch Meta Deleg... | 24497320 | 14 days ago | IN | 0 ETH | 0.00000522 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 18119867 | 906 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MetaDelegateHelper
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IGovernancePowerDelegationToken} from 'aave-token-v3/interfaces/IGovernancePowerDelegationToken.sol';
import {IMetaDelegateHelper} from './interfaces/IMetaDelegateHelper.sol';
import {Errors} from '../libraries/Errors.sol';
/**
* @title MetaDelegateHelper
* @author BGD Labs
* @notice The helper contract for the batch governance power delegation across multiple voting assets
*/
contract MetaDelegateHelper is IMetaDelegateHelper {
/// @inheritdoc IMetaDelegateHelper
function batchMetaDelegate(
MetaDelegateParams[] calldata delegateParams
) external {
bool atLeastOnePassed = false;
for (uint256 i = 0; i < delegateParams.length; i++) {
if (delegateParams[i].delegationType == DelegationType.ALL) {
try
delegateParams[i].underlyingAsset.metaDelegate(
delegateParams[i].delegator,
delegateParams[i].delegatee,
delegateParams[i].deadline,
delegateParams[i].v,
delegateParams[i].r,
delegateParams[i].s
)
{
atLeastOnePassed = true;
} catch {}
} else {
try
delegateParams[i].underlyingAsset.metaDelegateByType(
delegateParams[i].delegator,
delegateParams[i].delegatee,
delegateParams[i].delegationType == DelegationType.VOTING
? IGovernancePowerDelegationToken.GovernancePowerType.VOTING
: IGovernancePowerDelegationToken.GovernancePowerType.PROPOSITION,
delegateParams[i].deadline,
delegateParams[i].v,
delegateParams[i].r,
delegateParams[i].s
)
{
atLeastOnePassed = true;
} catch {}
}
}
require(atLeastOnePassed, Errors.ALL_DELEGATION_ACTIONS_FAILED);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IGovernancePowerDelegationToken {
enum GovernancePowerType {
VOTING,
PROPOSITION
}
/**
* @dev emitted when a user delegates to another
* @param delegator the user which delegated governance power
* @param delegatee the delegatee
* @param delegationType the type of delegation (VOTING, PROPOSITION)
**/
event DelegateChanged(
address indexed delegator,
address indexed delegatee,
GovernancePowerType delegationType
);
// @dev we removed DelegatedPowerChanged event because to reconstruct the full state of the system,
// is enough to have Transfer and DelegateChanged TODO: document it
/**
* @dev delegates the specific power to a delegatee
* @param delegatee the user which delegated power will change
* @param delegationType the type of delegation (VOTING, PROPOSITION)
**/
function delegateByType(address delegatee, GovernancePowerType delegationType) external;
/**
* @dev delegates all the governance powers to a specific user
* @param delegatee the user to which the powers will be delegated
**/
function delegate(address delegatee) external;
/**
* @dev returns the delegatee of an user
* @param delegator the address of the delegator
* @param delegationType the type of delegation (VOTING, PROPOSITION)
* @return address of the specified delegatee
**/
function getDelegateeByType(address delegator, GovernancePowerType delegationType)
external
view
returns (address);
/**
* @dev returns delegates of an user
* @param delegator the address of the delegator
* @return a tuple of addresses the VOTING and PROPOSITION delegatee
**/
function getDelegates(address delegator)
external
view
returns (address, address);
/**
* @dev returns the current voting or proposition power of a user.
* @param user the user
* @param delegationType the type of delegation (VOTING, PROPOSITION)
* @return the current voting or proposition power of a user
**/
function getPowerCurrent(address user, GovernancePowerType delegationType)
external
view
returns (uint256);
/**
* @dev returns the current voting or proposition power of a user.
* @param user the user
* @return the current voting and proposition power of a user
**/
function getPowersCurrent(address user)
external
view
returns (uint256, uint256);
/**
* @dev implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md
* @param delegator the owner of the funds
* @param delegatee the user to who owner delegates his governance power
* @param delegationType the type of governance power delegation (VOTING, PROPOSITION)
* @param deadline the deadline timestamp, type(uint256).max for no deadline
* @param v signature param
* @param s signature param
* @param r signature param
*/
function metaDelegateByType(
address delegator,
address delegatee,
GovernancePowerType delegationType,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
/**
* @dev implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md
* @param delegator the owner of the funds
* @param delegatee the user to who delegator delegates his voting and proposition governance power
* @param deadline the deadline timestamp, type(uint256).max for no deadline
* @param v signature param
* @param s signature param
* @param r signature param
*/
function metaDelegate(
address delegator,
address delegatee,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IGovernancePowerDelegationToken} from 'aave-token-v3/interfaces/IGovernancePowerDelegationToken.sol';
/**
* @title IMetaDelegateHelper
* @author BGD Labs
* @notice Interface containing the methods for the batch governance power delegation across multiple voting assets
*/
interface IMetaDelegateHelper {
enum DelegationType {
VOTING,
PROPOSITION,
ALL
}
/**
* @notice an object including parameters for the delegation change
* @param underlyingAsset the asset the governance power of which delegator wants to delegate
* @param delegationType the type of governance power delegation (VOTING, PROPOSITION, ALL)
* @param delegator the owner of the funds
* @param delegatee the user to who owner delegates his governance power
* @param deadline the deadline timestamp, type(uint256).max for no deadline
* @param v signature param
* @param s signature param
* @param r signature param
*/
struct MetaDelegateParams {
IGovernancePowerDelegationToken underlyingAsset;
DelegationType delegationType;
address delegator;
address delegatee;
uint256 deadline;
uint8 v;
bytes32 r;
bytes32 s;
}
/**
* @notice method for the batch upgrade governance power delegation across multiple voting assets with signatures
* @param delegateParams an array with signatures with the user and assets to interact with
*/
function batchMetaDelegate(MetaDelegateParams[] calldata delegateParams)
external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Errors library
* @author BGD Labs
* @notice Defines the error messages emitted by the different contracts of the Aave Governance V3
*/
library Errors {
string public constant VOTING_PORTALS_COUNT_NOT_0 = '1'; // to be able to rescue voting portals count must be 0
string public constant AT_LEAST_ONE_PAYLOAD = '2'; // to create a proposal, it must have at least one payload
string public constant VOTING_PORTAL_NOT_APPROVED = '3'; // the voting portal used to vote on proposal must be approved
string public constant PROPOSITION_POWER_IS_TOO_LOW = '4'; // proposition power of proposal creator must be equal or higher than the specified threshold for the access level
string public constant PROPOSAL_NOT_IN_CREATED_STATE = '5'; // proposal should be in the CREATED state
string public constant PROPOSAL_NOT_IN_ACTIVE_STATE = '6'; // proposal must be in an ACTIVE state
string public constant PROPOSAL_NOT_IN_QUEUED_STATE = '7'; // proposal must be in a QUEUED state
string public constant VOTING_START_COOLDOWN_PERIOD_NOT_PASSED = '8'; // to activate a proposal vote, the cool down delay must pass
string public constant CALLER_NOT_A_VALID_VOTING_PORTAL = '9'; // only an allowed voting portal can queue a proposal
string public constant QUEUE_COOLDOWN_PERIOD_NOT_PASSED = '10'; // to execute a proposal a cooldown delay must pass
string public constant PROPOSAL_NOT_IN_THE_CORRECT_STATE = '11'; // proposal must be created but not executed yet to be able to be canceled
string public constant CALLER_NOT_GOVERNANCE = '12'; // caller must be governance
string public constant VOTER_ALREADY_VOTED_ON_PROPOSAL = '13'; // voter can only vote once per proposal using voting portal
string public constant WRONG_MESSAGE_ORIGIN = '14'; // received message must come from registered source address, chain id, CrossChainController
string public constant NO_VOTING_ASSETS = '15'; // Strategy must have voting assets
string public constant PROPOSAL_VOTE_ALREADY_CREATED = '16'; // vote on proposal can only be created once
string public constant INVALID_SIGNATURE = '17'; // submitted signature is not valid
string public constant PROPOSAL_VOTE_NOT_FINISHED = '18'; // proposal vote must be finished
string public constant PROPOSAL_VOTE_NOT_IN_ACTIVE_STATE = '19'; // proposal vote must be in active state
string public constant PROPOSAL_VOTE_ALREADY_EXISTS = '20'; // proposal vote already exists
string public constant VOTE_ONCE_FOR_ASSET = '21'; // an asset can only be used once per vote
string public constant USER_BALANCE_DOES_NOT_EXISTS = '22'; // to vote an user must have balance in the token the user is voting with
string public constant USER_VOTING_BALANCE_IS_ZERO = '23'; // to vote an user must have some balance between all the tokens selected for voting
string public constant MISSING_AAVE_ROOTS = '24'; // must have AAVE roots registered to use strategy
string public constant MISSING_STK_AAVE_ROOTS = '25'; // must have stkAAVE roots registered to use strategy
string public constant MISSING_STK_AAVE_SLASHING_EXCHANGE_RATE = '26'; // must have stkAAVE slashing exchange rate registered to use strategy
string public constant UNPROCESSED_STORAGE_ROOT = '27'; // root must be registered beforehand
string public constant NOT_ENOUGH_MSG_VALUE = '28'; // method was not called with enough value to execute the call
string public constant FAILED_ACTION_EXECUTION = '29'; // action failed to execute
string public constant SHOULD_BE_AT_LEAST_ONE_EXECUTOR = '30'; // at least one executor is needed
string public constant INVALID_EMPTY_TARGETS = '31'; // target of the payload execution must not be empty
string public constant EXECUTOR_WAS_NOT_SPECIFIED_FOR_REQUESTED_ACCESS_LEVEL =
'32'; // payload executor must be registered for the specified payload access level
string public constant PAYLOAD_NOT_IN_QUEUED_STATE = '33'; // payload must be en the queued state
string public constant TIMELOCK_NOT_FINISHED = '34'; // delay has not passed before execution can be called
string public constant PAYLOAD_NOT_IN_THE_CORRECT_STATE = '35'; // payload must be created but not executed yet to be able to be canceled
string public constant PAYLOAD_NOT_IN_CREATED_STATE = '36'; // payload must be in the created state
string public constant MISSING_A_AAVE_ROOTS = '37'; // must have aAAVE roots registered to use strategy
string public constant MISSING_PROPOSAL_BLOCK_HASH = '38'; // block hash for this proposal was not bridged before
string public constant PROPOSAL_VOTE_CONFIGURATION_ALREADY_BRIDGED = '39'; // configuration for this proposal bridged already
string public constant INVALID_VOTING_PORTAL_ADDRESS = '40'; // voting portal address can't be 0x0
string public constant INVALID_POWER_STRATEGY = '41'; // 0x0 is not valid as the power strategy
string public constant INVALID_EXECUTOR_ADDRESS = '42'; // executor address can't be 0x0
string public constant EXECUTOR_ALREADY_SET_IN_DIFFERENT_LEVEL = '43'; // executor address already being used as executor of a different level
string public constant INVALID_VOTING_DURATION = '44'; // voting duration can not be bigger than the time it takes to execute a proposal
string public constant VOTING_DURATION_NOT_PASSED = '45'; // at least votingDuration should have passed since voting started for a proposal to be queued
string public constant INVALID_PROPOSAL_ACCESS_LEVEL = '46'; // the bridged proposal access level does not correspond with the maximum access level required by the payload
string public constant PAYLOAD_NOT_CREATED_BEFORE_PROPOSAL = '47'; // payload must be created before proposal
string public constant INVALID_CROSS_CHAIN_CONTROLLER_ADDRESS = '48';
string public constant INVALID_MESSAGE_ORIGINATOR_ADDRESS = '49';
string public constant INVALID_ORIGIN_CHAIN_ID = '50';
string public constant INVALID_ACTION_TARGET = '51';
string public constant INVALID_ACTION_ACCESS_LEVEL = '52';
string public constant INVALID_EXECUTOR_ACCESS_LEVEL = '53';
string public constant INVALID_VOTING_PORTAL_CROSS_CHAIN_CONTROLLER = '54';
string public constant INVALID_VOTING_PORTAL_VOTING_MACHINE = '55';
string public constant INVALID_VOTING_PORTAL_GOVERNANCE = '56';
string public constant INVALID_VOTING_MACHINE_CHAIN_ID = '57';
string public constant G_INVALID_CROSS_CHAIN_CONTROLLER_ADDRESS = '58';
string public constant G_INVALID_IPFS_HASH = '59';
string public constant G_INVALID_PAYLOAD_ACCESS_LEVEL = '60';
string public constant G_INVALID_PAYLOADS_CONTROLLER = '61';
string public constant G_INVALID_PAYLOAD_CHAIN = '62';
string public constant POWER_STRATEGY_HAS_NO_TOKENS = '63'; // power strategy should at least have
string public constant INVALID_VOTING_CONFIG_ACCESS_LEVEL = '64';
string public constant VOTING_DURATION_TOO_SMALL = '65';
string public constant NO_BRIDGED_VOTING_ASSETS = '66';
string public constant INVALID_VOTER = '67';
string public constant INVALID_DATA_WAREHOUSE = '68';
string public constant INVALID_VOTING_MACHINE_CROSS_CHAIN_CONTROLLER = '69';
string public constant INVALID_L1_VOTING_PORTAL = '70';
string public constant INVALID_VOTING_PORTAL_CHAIN_ID = '71';
string public constant INVALID_VOTING_STRATEGY = '72';
string public constant INVALID_VOTE_CONFIGURATION_BLOCKHASH = '73';
string public constant INVALID_VOTE_CONFIGURATION_VOTING_DURATION = '74';
string public constant INVALID_GAS_LIMIT = '75';
string public constant INVALID_VOTING_CONFIGS = '76'; // a lvl2 voting configuration must be sent to initializer
string public constant INVALID_EXECUTOR_DELAY = '77';
string public constant REPEATED_STRATEGY_ASSET = '78';
string public constant EMPTY_ASSET_STORAGE_SLOTS = '79';
string public constant REPEATED_STRATEGY_ASSET_SLOT = '80';
string public constant INVALID_EXECUTION_TARGET = '81';
string public constant MISSING_VOTING_CONFIGURATIONS = '82'; // voting configurations for lvl1 and lvl2 must be included on initialization
string public constant INVALID_PROPOSITION_POWER = '83';
string public constant INVALID_YES_THRESHOLD = '84';
string public constant INVALID_YES_NO_DIFFERENTIAL = '85';
string public constant ETH_TRANSFER_FAILED = '86';
string public constant INVALID_INITIAL_VOTING_CONFIGS = '87'; // initial voting configurations can not be of the same level
string public constant INVALID_VOTING_PORTAL_ADDRESS_IN_VOTING_MACHINE = '88';
string public constant INVALID_VOTING_PORTAL_OWNER = '89';
string public constant CANCELLATION_FEE_REDEEM_FAILED = '90'; // cancellation fee was not able to be redeemed
string public constant INVALID_CANCELLATION_FEE_COLLECTOR = '91'; // collector can not be address 0
string public constant INVALID_CANCELLATION_FEE_SENT = '92'; // cancellation fee sent does not match the needed amount
string public constant CANCELLATION_FEE_ALREADY_REDEEMED = '93'; // cancellation fee already redeemed
string public constant INVALID_STATE_TO_REDEEM_CANCELLATION_FEE = '94'; // proposal state is not a valid state to redeem cancellation fee
string public constant MISSING_REPRESENTATION_ROOTS = '95'; // to represent a voter the representation roots need to be registered
string public constant CALLER_IS_NOT_VOTER_REPRESENTATIVE = '96'; // to represent a voter, caller must be the stored representative
string public constant VM_INVALID_GOVERNANCE_ADDRESS = '97'; // governance address can not be 0
string public constant ALL_DELEGATION_ACTIONS_FAILED = '98'; // all meta delegation actions failed on MetaDelegateHelper
}{
"remappings": [
"solidity-utils/=lib/solidity-utils/src/",
"aave-crosschain-infra/=lib/aave-crosschain-infra/src/",
"aave-token-v3/=lib/aave-token-v3/src/",
"@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/",
"@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/",
"@openzeppelin/=lib/aave-crosschain-infra/lib/openzeppelin-contracts/",
"aave-address-book/=lib/aave-address-book/src/",
"aave-token-v2/=lib/aave-token-v3/lib/aave-token-v2/contracts/",
"aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/",
"aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"hyperlane-monorepo/=lib/aave-crosschain-infra/lib/hyperlane-monorepo/",
"nitro-contracts/=lib/aave-crosschain-infra/lib/nitro-contracts/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/",
"solidity-examples/=lib/aave-crosschain-infra/lib/solidity-examples/contracts/",
"aave-crosschain-infra-scripts/=lib/aave-crosschain-infra/scripts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"contract IGovernancePowerDelegationToken","name":"underlyingAsset","type":"address"},{"internalType":"enum IMetaDelegateHelper.DelegationType","name":"delegationType","type":"uint8"},{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IMetaDelegateHelper.MetaDelegateParams[]","name":"delegateParams","type":"tuple[]"}],"name":"batchMetaDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50610662806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063dfec976814610030575b600080fd5b61004361003e366004610434565b610045565b005b6000805b828110156103ed576002848483818110610065576100656104bf565b90506101000201602001602081019061007e91906104d5565b600281111561008f5761008f6104a9565b03610228578383828181106100a6576100a66104bf565b6100bd926020610100909202019081019150610515565b6001600160a01b031663a095ac198585848181106100dd576100dd6104bf565b9050610100020160400160208101906100f69190610515565b868685818110610108576101086104bf565b9050610100020160600160208101906101219190610515565b878786818110610133576101336104bf565b9050610100020160800135888887818110610150576101506104bf565b9050610100020160a00160208101906101699190610532565b89898881811061017b5761017b6104bf565b9050610100020160c001358a8a89818110610198576101986104bf565b60405160e08a811b6001600160e01b03191682526001600160a01b03998a16600483015297909816602489015260448801959095525060ff929092166064860152608485015261010090910201013560a482015260c401600060405180830381600087803b15801561020957600080fd5b505af192505050801561021a575060015b156103db57600191506103db565b83838281811061023a5761023a6104bf565b610251926020610100909202019081019150610515565b6001600160a01b031663657f0cde858584818110610271576102716104bf565b90506101000201604001602081019061028a9190610515565b86868581811061029c5761029c6104bf565b9050610100020160600160208101906102b59190610515565b60008888878181106102c9576102c96104bf565b9050610100020160200160208101906102e291906104d5565b60028111156102f3576102f36104a9565b146102ff576001610302565b60005b888887818110610314576103146104bf565b9050610100020160800135898988818110610331576103316104bf565b9050610100020160a001602081019061034a9190610532565b8a8a8981811061035c5761035c6104bf565b9050610100020160c001358b8b8a818110610379576103796104bf565b9050610100020160e001356040518863ffffffff1660e01b81526004016103a69796959493929190610555565b600060405180830381600087803b1580156103c057600080fd5b505af19250505080156103d1575060015b156103db57600191505b806103e5816105b7565b915050610049565b50604080518082019091526002815261072760f31b60208201528161042e5760405162461bcd60e51b815260040161042591906105de565b60405180910390fd5b50505050565b6000806020838503121561044757600080fd5b823567ffffffffffffffff8082111561045f57600080fd5b818501915085601f83011261047357600080fd5b81358181111561048257600080fd5b8660208260081b850101111561049757600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156104e757600080fd5b8135600381106104f657600080fd5b9392505050565b6001600160a01b038116811461051257600080fd5b50565b60006020828403121561052757600080fd5b81356104f6816104fd565b60006020828403121561054457600080fd5b813560ff811681146104f657600080fd5b6001600160a01b0388811682528716602082015260e081016002871061058b57634e487b7160e01b600052602160045260246000fd5b6040820196909652606081019490945260ff92909216608084015260a083015260c09091015292915050565b6000600182016105d757634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208083528351808285015260005b8181101561060b578581018301518582016040015282016105ef565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212204edd96d7c884971ed21774b04aeafd2818fb0820e06357b5fb3d929cc34ffb3a64736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063dfec976814610030575b600080fd5b61004361003e366004610434565b610045565b005b6000805b828110156103ed576002848483818110610065576100656104bf565b90506101000201602001602081019061007e91906104d5565b600281111561008f5761008f6104a9565b03610228578383828181106100a6576100a66104bf565b6100bd926020610100909202019081019150610515565b6001600160a01b031663a095ac198585848181106100dd576100dd6104bf565b9050610100020160400160208101906100f69190610515565b868685818110610108576101086104bf565b9050610100020160600160208101906101219190610515565b878786818110610133576101336104bf565b9050610100020160800135888887818110610150576101506104bf565b9050610100020160a00160208101906101699190610532565b89898881811061017b5761017b6104bf565b9050610100020160c001358a8a89818110610198576101986104bf565b60405160e08a811b6001600160e01b03191682526001600160a01b03998a16600483015297909816602489015260448801959095525060ff929092166064860152608485015261010090910201013560a482015260c401600060405180830381600087803b15801561020957600080fd5b505af192505050801561021a575060015b156103db57600191506103db565b83838281811061023a5761023a6104bf565b610251926020610100909202019081019150610515565b6001600160a01b031663657f0cde858584818110610271576102716104bf565b90506101000201604001602081019061028a9190610515565b86868581811061029c5761029c6104bf565b9050610100020160600160208101906102b59190610515565b60008888878181106102c9576102c96104bf565b9050610100020160200160208101906102e291906104d5565b60028111156102f3576102f36104a9565b146102ff576001610302565b60005b888887818110610314576103146104bf565b9050610100020160800135898988818110610331576103316104bf565b9050610100020160a001602081019061034a9190610532565b8a8a8981811061035c5761035c6104bf565b9050610100020160c001358b8b8a818110610379576103796104bf565b9050610100020160e001356040518863ffffffff1660e01b81526004016103a69796959493929190610555565b600060405180830381600087803b1580156103c057600080fd5b505af19250505080156103d1575060015b156103db57600191505b806103e5816105b7565b915050610049565b50604080518082019091526002815261072760f31b60208201528161042e5760405162461bcd60e51b815260040161042591906105de565b60405180910390fd5b50505050565b6000806020838503121561044757600080fd5b823567ffffffffffffffff8082111561045f57600080fd5b818501915085601f83011261047357600080fd5b81358181111561048257600080fd5b8660208260081b850101111561049757600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156104e757600080fd5b8135600381106104f657600080fd5b9392505050565b6001600160a01b038116811461051257600080fd5b50565b60006020828403121561052757600080fd5b81356104f6816104fd565b60006020828403121561054457600080fd5b813560ff811681146104f657600080fd5b6001600160a01b0388811682528716602082015260e081016002871061058b57634e487b7160e01b600052602160045260246000fd5b6040820196909652606081019490945260ff92909216608084015260a083015260c09091015292915050565b6000600182016105d757634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208083528351808285015260005b8181101561060b578581018301518582016040015282016105ef565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212204edd96d7c884971ed21774b04aeafd2818fb0820e06357b5fb3d929cc34ffb3a64736f6c63430008130033
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 ]
[ 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.