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 39 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deploy Balance R... | 24546082 | 23 hrs ago | IN | 0 ETH | 0.00063151 | ||||
| Deploy Balance R... | 24546060 | 23 hrs ago | IN | 0 ETH | 0.00107912 | ||||
| Deploy Balance R... | 24538919 | 47 hrs ago | IN | 0 ETH | 0.00092599 | ||||
| Deploy Balance R... | 24531737 | 2 days ago | IN | 0 ETH | 0.00038286 | ||||
| Deploy Balance R... | 24531730 | 2 days ago | IN | 0 ETH | 0.00032653 | ||||
| Deploy Balance R... | 24531720 | 2 days ago | IN | 0 ETH | 0.00037899 | ||||
| Deploy Balance R... | 24402792 | 20 days ago | IN | 0 ETH | 0.00046063 | ||||
| Deploy Balance R... | 24402785 | 20 days ago | IN | 0 ETH | 0.0004767 | ||||
| Deploy Balance R... | 24402776 | 20 days ago | IN | 0 ETH | 0.00036155 | ||||
| Deploy Balance R... | 24395610 | 21 days ago | IN | 0 ETH | 0.00153625 | ||||
| Deploy Balance R... | 24388432 | 22 days ago | IN | 0 ETH | 0.0004916 | ||||
| Deploy Balance R... | 24375106 | 24 days ago | IN | 0 ETH | 0.00049131 | ||||
| Deploy Balance R... | 24372420 | 25 days ago | IN | 0 ETH | 0.00035561 | ||||
| Deploy Balance R... | 24371733 | 25 days ago | IN | 0 ETH | 0.00042483 | ||||
| Deploy Balance R... | 24371714 | 25 days ago | IN | 0 ETH | 0.00042172 | ||||
| Deploy Balance R... | 24371702 | 25 days ago | IN | 0 ETH | 0.00044778 | ||||
| Deploy Balance R... | 24352662 | 27 days ago | IN | 0 ETH | 0.00023585 | ||||
| Deploy Balance R... | 24338345 | 29 days ago | IN | 0 ETH | 0.00018714 | ||||
| Deploy Balance R... | 24338321 | 29 days ago | IN | 0 ETH | 0.00017502 | ||||
| Deploy Balance R... | 24332212 | 30 days ago | IN | 0 ETH | 0.00051198 | ||||
| Deploy Balance R... | 24332203 | 30 days ago | IN | 0 ETH | 0.00051836 | ||||
| Deploy Balance R... | 24331282 | 30 days ago | IN | 0 ETH | 0.00016665 | ||||
| Deploy Balance R... | 24330421 | 31 days ago | IN | 0 ETH | 0.00012938 | ||||
| Deploy Balance R... | 24330402 | 31 days ago | IN | 0 ETH | 0.00013162 | ||||
| Deploy Balance R... | 24302485 | 34 days ago | IN | 0 ETH | 0.00014682 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60a06040 | 24546082 | 23 hrs ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24546060 | 23 hrs ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24538919 | 47 hrs ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24531737 | 2 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24531730 | 2 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24531720 | 2 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24402792 | 20 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24402785 | 20 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24402776 | 20 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24395610 | 21 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24388432 | 22 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24375106 | 24 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24372420 | 25 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24371733 | 25 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24371714 | 25 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24371702 | 25 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24352662 | 27 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24338345 | 29 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24338321 | 29 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24332212 | 30 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24332203 | 30 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24331282 | 30 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24330421 | 31 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24330402 | 31 days ago | Contract Creation | 0 ETH | |||
| 0x60a06040 | 24302485 | 34 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PayBalanceFactory
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 999999 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.12;
import "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol";
import "openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import "openzeppelin-contracts/contracts/utils/Create2.sol";
import "solmate/utils/SSTORE2.sol";
/// Factory to deploy PayBalanceReader contracts at deterministic addresses.
contract PayBalanceFactory {
bytes32 private constant SALT = bytes32(0);
/// Emitted when a new PayBalanceReader is deployed
event Deploy(address indexed reader, uint256 nTokens);
/// Predicts the address where a PayBalanceReader will be deployed.
function getBalanceReader(
IERC20[] memory _tokens
) public view returns (address addr, uint256 codeSize) {
bytes memory bytecode = _getCreationBytecode(_tokens);
addr = Create2.computeAddress(SALT, keccak256(bytecode));
codeSize = addr.code.length;
}
/// Deploys a PayBalanceReader deterministically, using CREATE2.
function deployBalanceReader(
IERC20[] memory _tokens
) public returns (address) {
bytes memory bytecode = _getCreationBytecode(_tokens);
address reader = Create2.deploy(0, SALT, bytecode);
emit Deploy(reader, _tokens.length);
return reader;
}
function _getCreationBytecode(
IERC20[] memory _tokens
) private pure returns (bytes memory) {
require(_tokens.length > 0, "No tokens provided");
bytes memory creationBytecode = type(PayBalanceReader).creationCode;
return abi.encodePacked(creationBytecode, abi.encode(_tokens));
}
}
/// Efficiently fetches token balances using SSTORE2 for address storage.
contract PayBalanceReader {
/// Pointer to SSTORE2 storage containing packed token addresses
address public immutable pointer;
constructor(IERC20[] memory _tokens) {
bytes memory packed = new bytes(_tokens.length * 20);
for (uint256 i = 0; i < _tokens.length; ++i) {
bytes20 tokenAddr = bytes20(address(_tokens[i]));
assembly {
mstore(add(add(packed, 32), mul(i, 20)), tokenAddr)
}
}
pointer = SSTORE2.write(packed);
}
/// Returns list of ERC-20 tokens by reading from SSTORE2 storage
function getAllTokens() public view returns (IERC20[] memory) {
bytes memory packed = SSTORE2.read(pointer);
uint256 n = packed.length / 20;
IERC20[] memory tokens = new IERC20[](n);
for (uint256 i = 0; i < n; ++i) {
bytes20 tokenAddr;
assembly {
tokenAddr := mload(add(add(packed, 32), mul(i, 20)))
}
tokens[i] = IERC20(address(tokenAddr));
}
return tokens;
}
/// Get the balances for all saved tokens and the balance of the native
/// asset (the last array element) for a given owner.
/// Also returns the block number at which the balances were fetched.
function getTokenBalances(
address owner
) public view returns (uint256[] memory balances, uint256 blockNumber) {
IERC20[] memory tokens = getAllTokens();
uint256 n = tokens.length;
balances = new uint256[](n + 1);
for (uint256 i = 0; i < n; ++i) {
balances[i] = tokens[i].balanceOf(owner);
}
balances[n] = owner.balance;
blockNumber = block.number;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/Create2.sol)
pragma solidity ^0.8.20;
import {Errors} from "./Errors.sol";
/**
* @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.
* `CREATE2` can be used to compute in advance the address where a smart
* contract will be deployed, which allows for interesting new mechanisms known
* as 'counterfactual interactions'.
*
* See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more
* information.
*/
library Create2 {
/**
* @dev There's no code to deploy.
*/
error Create2EmptyBytecode();
/**
* @dev Deploys a contract using `CREATE2`. The address where the contract
* will be deployed can be known in advance via {computeAddress}.
*
* The bytecode for a contract can be obtained from Solidity with
* `type(contractName).creationCode`.
*
* Requirements:
*
* - `bytecode` must not be empty.
* - `salt` must have not been used for `bytecode` already.
* - the factory must have a balance of at least `amount`.
* - if `amount` is non-zero, `bytecode` must have a `payable` constructor.
*/
function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address addr) {
if (address(this).balance < amount) {
revert Errors.InsufficientBalance(address(this).balance, amount);
}
if (bytecode.length == 0) {
revert Create2EmptyBytecode();
}
assembly ("memory-safe") {
addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)
// if no address was created, and returndata is not empty, bubble revert
if and(iszero(addr), not(iszero(returndatasize()))) {
let p := mload(0x40)
returndatacopy(p, 0, returndatasize())
revert(p, returndatasize())
}
}
if (addr == address(0)) {
revert Errors.FailedDeployment();
}
}
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the
* `bytecodeHash` or `salt` will result in a new destination address.
*/
function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {
return computeAddress(salt, bytecodeHash, address(this));
}
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at
* `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.
*/
function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address addr) {
assembly ("memory-safe") {
let ptr := mload(0x40) // Get free memory pointer
// | | ↓ ptr ... ↓ ptr + 0x0B (start) ... ↓ ptr + 0x20 ... ↓ ptr + 0x40 ... |
// |-------------------|---------------------------------------------------------------------------|
// | bytecodeHash | CCCCCCCCCCCCC...CC |
// | salt | BBBBBBBBBBBBB...BB |
// | deployer | 000000...0000AAAAAAAAAAAAAAAAAAA...AA |
// | 0xFF | FF |
// |-------------------|---------------------------------------------------------------------------|
// | memory | 000000...00FFAAAAAAAAAAAAAAAAAAA...AABBBBBBBBBBBBB...BBCCCCCCCCCCCCC...CC |
// | keccak(start, 85) | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ |
mstore(add(ptr, 0x40), bytecodeHash)
mstore(add(ptr, 0x20), salt)
mstore(ptr, deployer) // Right-aligned with 12 preceding garbage bytes
let start := add(ptr, 0x0b) // The hashed data starts at the final garbage byte which we will set to 0xff
mstore8(start, 0xff)
addr := and(keccak256(start, 85), 0xffffffffffffffffffffffffffffffffffffffff)
}
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Read and write to persistent storage at a fraction of the cost.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SSTORE2.sol)
/// @author Modified from 0xSequence (https://github.com/0xSequence/sstore2/blob/master/contracts/SSTORE2.sol)
library SSTORE2 {
uint256 internal constant DATA_OFFSET = 1; // We skip the first byte as it's a STOP opcode to ensure the contract can't be called.
/*//////////////////////////////////////////////////////////////
WRITE LOGIC
//////////////////////////////////////////////////////////////*/
function write(bytes memory data) internal returns (address pointer) {
// Prefix the bytecode with a STOP opcode to ensure it cannot be called.
bytes memory runtimeCode = abi.encodePacked(hex"00", data);
bytes memory creationCode = abi.encodePacked(
//---------------------------------------------------------------------------------------------------------------//
// Opcode | Opcode + Arguments | Description | Stack View //
//---------------------------------------------------------------------------------------------------------------//
// 0x60 | 0x600B | PUSH1 11 | codeOffset //
// 0x59 | 0x59 | MSIZE | 0 codeOffset //
// 0x81 | 0x81 | DUP2 | codeOffset 0 codeOffset //
// 0x38 | 0x38 | CODESIZE | codeSize codeOffset 0 codeOffset //
// 0x03 | 0x03 | SUB | (codeSize - codeOffset) 0 codeOffset //
// 0x80 | 0x80 | DUP | (codeSize - codeOffset) (codeSize - codeOffset) 0 codeOffset //
// 0x92 | 0x92 | SWAP3 | codeOffset (codeSize - codeOffset) 0 (codeSize - codeOffset) //
// 0x59 | 0x59 | MSIZE | 0 codeOffset (codeSize - codeOffset) 0 (codeSize - codeOffset) //
// 0x39 | 0x39 | CODECOPY | 0 (codeSize - codeOffset) //
// 0xf3 | 0xf3 | RETURN | //
//---------------------------------------------------------------------------------------------------------------//
hex"60_0B_59_81_38_03_80_92_59_39_F3", // Returns all code in the contract except for the first 11 (0B in hex) bytes.
runtimeCode // The bytecode we want the contract to have after deployment. Capped at 1 byte less than the code size limit.
);
/// @solidity memory-safe-assembly
assembly {
// Deploy a new contract with the generated creation code.
// We start 32 bytes into the code to avoid copying the byte length.
pointer := create(0, add(creationCode, 32), mload(creationCode))
}
require(pointer != address(0), "DEPLOYMENT_FAILED");
}
/*//////////////////////////////////////////////////////////////
READ LOGIC
//////////////////////////////////////////////////////////////*/
function read(address pointer) internal view returns (bytes memory) {
return readBytecode(pointer, DATA_OFFSET, pointer.code.length - DATA_OFFSET);
}
function read(address pointer, uint256 start) internal view returns (bytes memory) {
start += DATA_OFFSET;
return readBytecode(pointer, start, pointer.code.length - start);
}
function read(
address pointer,
uint256 start,
uint256 end
) internal view returns (bytes memory) {
start += DATA_OFFSET;
end += DATA_OFFSET;
require(pointer.code.length >= end, "OUT_OF_BOUNDS");
return readBytecode(pointer, start, end - start);
}
/*//////////////////////////////////////////////////////////////
INTERNAL HELPER LOGIC
//////////////////////////////////////////////////////////////*/
function readBytecode(
address pointer,
uint256 start,
uint256 size
) private view returns (bytes memory data) {
/// @solidity memory-safe-assembly
assembly {
// Get a pointer to some free memory.
data := mload(0x40)
// Update the free memory pointer to prevent overriding our data.
// We use and(x, not(31)) as a cheaper equivalent to sub(x, mod(x, 32)).
// Adding 31 to size and running the result through the logic above ensures
// the memory pointer remains word-aligned, following the Solidity convention.
mstore(0x40, add(data, and(add(add(size, 32), 31), not(31))))
// Store the size of the data in the first 32 byte chunk of free memory.
mstore(data, size)
// Copy the code into memory right after the 32 bytes we used to store the size.
extcodecopy(pointer, add(data, 32), start, size)
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)
pragma solidity ^0.8.20;
/**
* @dev Collection of common custom errors used in multiple contracts
*
* IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.
* It is recommended to avoid relying on the error API for critical functionality.
*
* _Available since v5.1._
*/
library Errors {
/**
* @dev The ETH balance of the account is not enough to perform the operation.
*/
error InsufficientBalance(uint256 balance, uint256 needed);
/**
* @dev A call to an address target failed. The target may have reverted.
*/
error FailedCall();
/**
* @dev The deployment failed.
*/
error FailedDeployment();
/**
* @dev A necessary precompile is missing.
*/
error MissingPrecompile(address);
}{
"remappings": [
"@axelar-network/=lib/axelar-gmp-sdk-solidity/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
"@layerzerolabs/oft-evm/=lib/devtools/packages/oft-evm/",
"@layerzerolabs/oapp-evm/=lib/devtools/packages/oapp-evm/",
"@layerzerolabs/lz-evm-protocol-v2/=lib/LayerZero-v2/packages/layerzero-v2/evm/protocol/",
"@layerzerolabs/lz-evm-messagelib-v2/=lib/LayerZero-v2/packages/layerzero-v2/evm/messagelib/",
"@layerzerolabs/lz-evm-oapp-v2/=lib/LayerZero-v2/packages/layerzero-v2/evm/oapp/",
"@stargatefinance/stg-evm-v2/=lib/stargate-v2/packages/stg-evm-v2/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"LayerZero-v2/=lib/LayerZero-v2/",
"axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/",
"devtools/=lib/devtools/packages/toolbox-foundry/src/",
"ds-test/=lib/solmate/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"solmate/=lib/solmate/src/",
"stargate-v2/=lib/stargate-v2/packages/stg-evm-v2/src/"
],
"optimizer": {
"enabled": true,
"runs": 999999
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": true
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"Create2EmptyBytecode","type":"error"},{"inputs":[],"name":"FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reader","type":"address"},{"indexed":false,"internalType":"uint256","name":"nTokens","type":"uint256"}],"name":"Deploy","type":"event"},{"inputs":[{"internalType":"contract IERC20[]","name":"_tokens","type":"address[]"}],"name":"deployBalanceReader","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"_tokens","type":"address[]"}],"name":"getBalanceReader","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"codeSize","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60808060405234601557610d35908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80633875f3dc1461011b57634229ea131461003257600080fd5b3461011657610040366101e9565b610049816102d8565b8051156100ec57805160009160200182f53d15198115166100e05773ffffffffffffffffffffffffffffffffffffffff1680156100b657807faf354defc104ba9267634f156652b1f1cfbd10746c329e2bdd48abd4c9cff9296020809451604051908152a2604051908152f35b7fb06ebf3d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b7f4ca249dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b3461011657604073ffffffffffffffffffffffffffffffffffffffff6055600b61014c610147366101e9565b6102d8565b6020815191012084519085820152600060208201523081520160ff81532016803b82519182526020820152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101ba57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101165760043567ffffffffffffffff811161011657816023820112156101165780600401359167ffffffffffffffff83116101ba578260051b916040519361025b6020850186610179565b84526024602085019382010191821161011657602401915b8183106102805750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361011657815260209283019201610273565b9081519160005b8381106102c5575050016000815290565b80602080928401015181850152016102b4565b8051156103d457604051906108cd6102f36020820184610179565b80835261043360208401396040519060408201602080840152815180915260206060840192019060005b8181106103a85750505091610379826103636103a59461037396037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610179565b60405194859360208501906102ad565b906102ad565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610179565b90565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161031d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f20746f6b656e732070726f766964656400000000000000000000000000006044820152fdfe60a0604052346100d7576108cd803803809161001a826100f2565b60a03960208160a00191126100d75760a051906001600160401b0382116100d7578060bf830112156100d75760a0820151906001600160401b0382116100dc578160051b92604051926100706020860185610118565b835260c060208401948201019182116100d75760c001925b8184106100b75761009883610180565b6040516105b69081610317823960805181818161012901526104640152f35b83516001600160a01b03811681036100d757815260209384019301610088565b600080fd5b634e487b7160e01b600052604160045260246000fd5b60a0601f91909101601f19168101906001600160401b038211908210176100dc57604052565b601f909101601f19168101906001600160401b038211908210176100dc57604052565b6001600160401b0381116100dc57601f01601f191660200190565b805182101561016a5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815160148102908082046014149015171561022f5761019f8161013b565b906101ad6040519283610118565b8082526101bc601f199161013b565b0136602083013760005b835181101561021e578061020e6101fe6101f26101e560019589610156565b516001600160a01b031690565b6001600160a01b031690565b60601b6001600160601b03191690565b60206014830285010152016101c6565b5061022a919250610270565b608052565b634e487b7160e01b600052601160045260246000fd5b9081519160005b83811061025d575050016000815290565b806020809284010151818501520161024c565b61029c61028e91604051928391600060208401526021830190610245565b03601f198101835282610118565b6040516102c68161028e60208201946a600b5981380380925939f360a81b8652602b830190610245565b51906000f0906001600160a01b038216156102dd57565b60405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606490fdfe6080604052600436101561001257600080fd5b60003560e01c80632a5c792a146100475780632f5f3b3c146100425763764f3aa81461003d57600080fd5b610192565b6100de565b346100d95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95761007e610462565b60405180916020820160208352815180915260206040840192019060005b8181106100aa575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff1684528594506020938401939092019160010161009c565b600080fd5b346100d95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b929190604084019060408552805180925260206060860191019160005b81811061017c57505060209150930152565b835183526020938401939092019160010161016a565b346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95760043573ffffffffffffffffffffffffffffffffffffffff811681036100d9576101e9610462565b80516101fc6101f782610557565b6103d0565b9160005b82811061022b5750506102186102279331918361041f565b5260405191829143908361014d565b0390f35b61026e61025561023b838561041f565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201529190602090839060249082905afa801561030f576001926000916102e1575b506102da828761041f565b5201610200565b610302915060203d8111610308575b6102fa8183610372565b810190610565565b386102cf565b503d6102f0565b610574565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103b357604052565b610343565b67ffffffffffffffff81116103b35760051b60200190565b906103da826103b8565b6103e76040519182610372565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061041582946103b8565b0190602036910137565b80518210156104335760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000803b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820190828211610552576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603e604051950116840160405282845260208401903c8051601490046104fa816103d0565b9160005b82811061050b5750505090565b8061054c61052761025560206014600196028701015160601c90565b610531838861041f565b9073ffffffffffffffffffffffffffffffffffffffff169052565b016104fe565b610314565b906001820180921161055257565b908160209103126100d9575190565b6040513d6000823e3d90fdfea2646970667358221220252b955297c2684e823be6e070c5262908373d17aa0fe210e08e38005d7639cc64736f6c634300081a0033a2646970667358221220acc78e9d7e9ce18d2d93425846f83412cf96838e0acf651691eb27064a6d815d64736f6c634300081a0033
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c80633875f3dc1461011b57634229ea131461003257600080fd5b3461011657610040366101e9565b610049816102d8565b8051156100ec57805160009160200182f53d15198115166100e05773ffffffffffffffffffffffffffffffffffffffff1680156100b657807faf354defc104ba9267634f156652b1f1cfbd10746c329e2bdd48abd4c9cff9296020809451604051908152a2604051908152f35b7fb06ebf3d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b7f4ca249dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b3461011657604073ffffffffffffffffffffffffffffffffffffffff6055600b61014c610147366101e9565b6102d8565b6020815191012084519085820152600060208201523081520160ff81532016803b82519182526020820152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101ba57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101165760043567ffffffffffffffff811161011657816023820112156101165780600401359167ffffffffffffffff83116101ba578260051b916040519361025b6020850186610179565b84526024602085019382010191821161011657602401915b8183106102805750505090565b823573ffffffffffffffffffffffffffffffffffffffff8116810361011657815260209283019201610273565b9081519160005b8381106102c5575050016000815290565b80602080928401015181850152016102b4565b8051156103d457604051906108cd6102f36020820184610179565b80835261043360208401396040519060408201602080840152815180915260206060840192019060005b8181106103a85750505091610379826103636103a59461037396037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610179565b60405194859360208501906102ad565b906102ad565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610179565b90565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161031d565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f20746f6b656e732070726f766964656400000000000000000000000000006044820152fdfe60a0604052346100d7576108cd803803809161001a826100f2565b60a03960208160a00191126100d75760a051906001600160401b0382116100d7578060bf830112156100d75760a0820151906001600160401b0382116100dc578160051b92604051926100706020860185610118565b835260c060208401948201019182116100d75760c001925b8184106100b75761009883610180565b6040516105b69081610317823960805181818161012901526104640152f35b83516001600160a01b03811681036100d757815260209384019301610088565b600080fd5b634e487b7160e01b600052604160045260246000fd5b60a0601f91909101601f19168101906001600160401b038211908210176100dc57604052565b601f909101601f19168101906001600160401b038211908210176100dc57604052565b6001600160401b0381116100dc57601f01601f191660200190565b805182101561016a5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815160148102908082046014149015171561022f5761019f8161013b565b906101ad6040519283610118565b8082526101bc601f199161013b565b0136602083013760005b835181101561021e578061020e6101fe6101f26101e560019589610156565b516001600160a01b031690565b6001600160a01b031690565b60601b6001600160601b03191690565b60206014830285010152016101c6565b5061022a919250610270565b608052565b634e487b7160e01b600052601160045260246000fd5b9081519160005b83811061025d575050016000815290565b806020809284010151818501520161024c565b61029c61028e91604051928391600060208401526021830190610245565b03601f198101835282610118565b6040516102c68161028e60208201946a600b5981380380925939f360a81b8652602b830190610245565b51906000f0906001600160a01b038216156102dd57565b60405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606490fdfe6080604052600436101561001257600080fd5b60003560e01c80632a5c792a146100475780632f5f3b3c146100425763764f3aa81461003d57600080fd5b610192565b6100de565b346100d95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95761007e610462565b60405180916020820160208352815180915260206040840192019060005b8181106100aa575050500390f35b825173ffffffffffffffffffffffffffffffffffffffff1684528594506020938401939092019160010161009c565b600080fd5b346100d95760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b929190604084019060408552805180925260206060860191019160005b81811061017c57505060209150930152565b835183526020938401939092019160010161016a565b346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95760043573ffffffffffffffffffffffffffffffffffffffff811681036100d9576101e9610462565b80516101fc6101f782610557565b6103d0565b9160005b82811061022b5750506102186102279331918361041f565b5260405191829143908361014d565b0390f35b61026e61025561023b838561041f565b5173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201529190602090839060249082905afa801561030f576001926000916102e1575b506102da828761041f565b5201610200565b610302915060203d8111610308575b6102fa8183610372565b810190610565565b386102cf565b503d6102f0565b610574565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103b357604052565b610343565b67ffffffffffffffff81116103b35760051b60200190565b906103da826103b8565b6103e76040519182610372565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061041582946103b8565b0190602036910137565b80518210156104335760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f0000000000000000000000000000000000000000000000000000000000000000803b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820190828211610552576001907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603e604051950116840160405282845260208401903c8051601490046104fa816103d0565b9160005b82811061050b5750505090565b8061054c61052761025560206014600196028701015160601c90565b610531838861041f565b9073ffffffffffffffffffffffffffffffffffffffff169052565b016104fe565b610314565b906001820180921161055257565b908160209103126100d9575190565b6040513d6000823e3d90fdfea2646970667358221220252b955297c2684e823be6e070c5262908373d17aa0fe210e08e38005d7639cc64736f6c634300081a0033a2646970667358221220acc78e9d7e9ce18d2d93425846f83412cf96838e0acf651691eb27064a6d815d64736f6c634300081a0033
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.