Overview
ETH Balance
ETH Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Deploy Increment... | 32267941 | 209 days ago | IN | 0 ETH | 0.0000009 |
Latest 1 internal transaction
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 32267941 | 209 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity)
/**
*Submitted for verification at basescan.org on 2025-07-02
*/
// File: solady/src/utils/CREATE3.sol
pragma solidity ^0.8.4;
/// @notice Deterministic deployments agnostic to the initialization code.
/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/CREATE3.sol)
/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)
/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)
library CREATE3 {
/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* CUSTOM ERRORS */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
/// @dev Unable to deploy the contract.
error DeploymentFailed();
/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* BYTECODE CONSTANTS */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
/**
* -------------------------------------------------------------------+
* Opcode | Mnemonic | Stack | Memory |
* -------------------------------------------------------------------|
* 36 | CALLDATASIZE | cds | |
* 3d | RETURNDATASIZE | 0 cds | |
* 3d | RETURNDATASIZE | 0 0 cds | |
* 37 | CALLDATACOPY | | [0..cds): calldata |
* 36 | CALLDATASIZE | cds | [0..cds): calldata |
* 3d | RETURNDATASIZE | 0 cds | [0..cds): calldata |
* 34 | CALLVALUE | value 0 cds | [0..cds): calldata |
* f0 | CREATE | newContract | [0..cds): calldata |
* -------------------------------------------------------------------|
* Opcode | Mnemonic | Stack | Memory |
* -------------------------------------------------------------------|
* 67 bytecode | PUSH8 bytecode | bytecode | |
* 3d | RETURNDATASIZE | 0 bytecode | |
* 52 | MSTORE | | [0..8): bytecode |
* 60 0x08 | PUSH1 0x08 | 0x08 | [0..8): bytecode |
* 60 0x18 | PUSH1 0x18 | 0x18 0x08 | [0..8): bytecode |
* f3 | RETURN | | [0..8): bytecode |
* -------------------------------------------------------------------+
*/
/// @dev The proxy initialization code.
uint256 private constant _PROXY_INITCODE = 0x67363d3d37363d34f03d5260086018f3;
/// @dev Hash of the `_PROXY_INITCODE`.
/// Equivalent to `keccak256(abi.encodePacked(hex"67363d3d37363d34f03d5260086018f3"))`.
bytes32 internal constant PROXY_INITCODE_HASH =
0x21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f;
/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* CREATE3 OPERATIONS */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
/// @dev Deploys `initCode` deterministically with a `salt`.
/// Returns the deterministic address of the deployed contract,
/// which solely depends on `salt`.
function deployDeterministic(bytes memory initCode, bytes32 salt)
internal
returns (address deployed)
{
deployed = deployDeterministic(0, initCode, salt);
}
/// @dev Deploys `initCode` deterministically with a `salt`.
/// The deployed contract is funded with `value` (in wei) ETH.
/// Returns the deterministic address of the deployed contract,
/// which solely depends on `salt`.
function deployDeterministic(uint256 value, bytes memory initCode, bytes32 salt)
internal
returns (address deployed)
{
/// @solidity memory-safe-assembly
assembly {
mstore(0x00, _PROXY_INITCODE) // Store the `_PROXY_INITCODE`.
let proxy := create2(0, 0x10, 0x10, salt)
if iszero(proxy) {
mstore(0x00, 0x30116425) // `DeploymentFailed()`.
revert(0x1c, 0x04)
}
mstore(0x14, proxy) // Store the proxy's address.
// 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01).
// 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex).
mstore(0x00, 0xd694)
mstore8(0x34, 0x01) // Nonce of the proxy contract (1).
deployed := keccak256(0x1e, 0x17)
if iszero(
mul( // The arguments of `mul` are evaluated last to first.
extcodesize(deployed),
call(gas(), proxy, value, add(initCode, 0x20), mload(initCode), 0x00, 0x00)
)
) {
mstore(0x00, 0x30116425) // `DeploymentFailed()`.
revert(0x1c, 0x04)
}
}
}
/// @dev Returns the deterministic address for `salt`.
function predictDeterministicAddress(bytes32 salt) internal view returns (address deployed) {
deployed = predictDeterministicAddress(salt, address(this));
}
/// @dev Returns the deterministic address for `salt` with `deployer`.
function predictDeterministicAddress(bytes32 salt, address deployer)
internal
pure
returns (address deployed)
{
/// @solidity memory-safe-assembly
assembly {
let m := mload(0x40) // Cache the free memory pointer.
mstore(0x00, deployer) // Store `deployer`.
mstore8(0x0b, 0xff) // Store the prefix.
mstore(0x20, salt) // Store the salt.
mstore(0x40, PROXY_INITCODE_HASH) // Store the bytecode hash.
mstore(0x14, keccak256(0x0b, 0x55)) // Store the proxy's address.
mstore(0x40, m) // Restore the free memory pointer.
// 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01).
// 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex).
mstore(0x00, 0xd694)
mstore8(0x34, 0x01) // Nonce of the proxy contract (1).
deployed := keccak256(0x1e, 0x17)
}
}
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/access/Ownable.sol
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File: contracts/factory/IIncrementalOwnableFactory.sol
pragma solidity ^0.8.30;
/**
* @title Ownable factory of custom contracts that are deployed with incrementally increased salt.
* @author Sebasky (https://github.com/sebasky-eth)
*/
interface IIncrementalOwnableFactory {
/**
* @notice Returns if 'base' contract was deployed (CREATE3 with salt = 0).
*/
function wasBaseDeployed() external view returns (bool);
/**
* @notice Returns iteration that was used in last contract for salt.
* Reverts, if there is too much iterations (2^256-1)
*/
function nextIteration() external view returns (uint256);
/**
* @notice Returns address of contract deployed (now or in future) by this factory based on 'iteration'.
* @param iteration - iteration of deployed contract. If '0': returns address of 'base'.
*/
function predictAddress(uint256 iteration) external view returns (address);
/**
* @notice Deploy base contract (CREATE3 with salt = 0)
* Reverts, if base was already deployed.
* Reverts, if caller is not 'owner'.
*/
function deployBase(bytes memory initCode) external returns (address base);
/**
* @notice Deploy contract with 'nextIteration' as CREATE3 salt and increase 'nextIteration'.
* Reverts, if caller is not 'owner'.
* Reverts, if there is too much iterations (2^256-1)
*/
function deploy(bytes memory initCode) external returns (address base);
}
// File: contracts/factory/IncrementalOwnableFactory.sol
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.30;
/**
* @title Ownable factory of custom contracts that are deployed with incrementally increased salt.
* @author Sebasky (https://github.com/sebasky-eth)
* @notice Used for IBindableToken.
* Core collection MUST emit event that points to factory address and be deployed with salt=0 {IIncrementalOwnableFactory.deployBase}.
*/
contract IncrementalOwnableFactory is Ownable, IIncrementalOwnableFactory {
uint256 private _previousIteration;
constructor(address initialOwner) Ownable(initialOwner) {}
/**
* @notice Returns if 'base' contract was deployed (CREATE3 with salt = 0).
*/
function wasBaseDeployed() external view returns (bool) {
return predictAddress(0).code.length != 0;
}
/**
* @notice Returns next iteration that will be used for salt.
*/
function nextIteration() external view returns (uint256) {
return _previousIteration + 1;
}
/**
* @notice Deploy base contract (CREATE3 with salt = 0)
* @return base - address of deployed contract.
* Reverts, if base was already deployed.
* Reverts, if caller is not 'owner'.
*/
function deployBase(bytes memory initCode) external onlyOwner returns (address base) {
base = CREATE3.deployDeterministic(initCode, 0);
}
/**
* @notice Deploy contract with 'nextIteration' as CREATE3 salt and increase 'nextIteration'.
* Returns address of deployed contract.
* Reverts, if caller is not 'owner'.
*/
function deploy(bytes memory initCode) external onlyOwner returns (address contractAdr) {
uint256 current = _previousIteration + 1;
contractAdr = CREATE3.deployDeterministic(initCode, bytes32(current));
_previousIteration = current;
}
function predictAddress(uint256 iteration) public view returns (address) {
return CREATE3.predictDeterministicAddress(bytes32(iteration));
}
}
// File: contracts/factory/BinderFactoryDeployer.sol
pragma solidity ^0.8.30;
/**
* @title Factory of IncrementalOwnableFactory (or custom code) with deterministic address.
* @author Sebasky (https://github.com/sebasky-eth)
* @notice Using this collection for factory deployment gives extra predictability in mapping (IBindableToken): (deployer, core collection name) -> collection address.
*/
contract BinderFactoryDeployer {
bytes32 private constant _incrementalOwnableFactoryCodeHash =
keccak256(type(IncrementalOwnableFactory).creationCode);
function saltOf(address deployer, string memory collectionName) public pure returns (bytes32) {
return keccak256(abi.encode(deployer, collectionName));
}
function addressOf(address deployer, string memory collectionName) public view returns (address) {
return CREATE3.predictDeterministicAddress(saltOf(deployer, collectionName));
}
function incrementalOwnableFactoryInitCode(address owner) public pure returns (bytes memory) {
return abi.encodePacked(type(IncrementalOwnableFactory).creationCode, abi.encode(owner));
}
function incrementalOwnableFactoryBytecode() public pure returns (bytes memory) {
return type(IncrementalOwnableFactory).creationCode;
}
function incrementalOwnableFactoryCodehash() public pure returns (bytes32) {
return _incrementalOwnableFactoryCodeHash;
}
///@notice Deploy custom factory with address based on 'collectionName' and caller.
///@dev Revert if name is not unique for caller.
function deployFactory(string memory collectionName, bytes memory initCode) public returns (address) {
bytes32 salt = saltOf(msg.sender, collectionName);
return CREATE3.deployDeterministic(initCode, salt);
}
///@notice Deploy incremental ownable factory with address based on 'collectionName' and caller.
///@dev Revert if name is not unique for caller.
function deployIncrementalOwnableFactory(string memory collectionName, address contractOwner)
external
returns (address)
{
return deployFactory(collectionName, incrementalOwnableFactoryInitCode(contractOwner));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"string","name":"collectionName","type":"string"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"collectionName","type":"string"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deployFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"collectionName","type":"string"},{"internalType":"address","name":"contractOwner","type":"address"}],"name":"deployIncrementalOwnableFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"incrementalOwnableFactoryBytecode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"incrementalOwnableFactoryCodehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"incrementalOwnableFactoryInitCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"string","name":"collectionName","type":"string"}],"name":"saltOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"}]Contract Creation Code
6080604052348015600e575f5ffd5b50610c398061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c806343b386b71161005857806343b386b7146100e657806355589cdd146100f95780638048e32f1461010c5780638590f3171461011f575f5ffd5b80631b046a4b1461007e57806326e46b1714610099578063276c5101146100ae575b5f5ffd5b610086610132565b6040519081526020015b60405180910390f35b6100a1610163565b6040516100909190610397565b6100c16100bc366004610493565b61018d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610090565b6100a16100f43660046104de565b6101a2565b6100c16101073660046104f7565b61021a565b6100c161011a366004610542565b61022d565b61008661012d3660046104f7565b61024d565b5f604051806020016101439061035c565b6020820181038252601f19601f8201166040525080519060200120905090565b6060604051806020016101759061035c565b601f1982820381018352601f90910116604052919050565b5f61019b8361011a846101a2565b9392505050565b6060604051806020016101b49061035c565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff851660208301520160408051601f198184030181529082905261020492916020016105c7565b6040516020818303038152906040529050919050565b5f61019b610228848461024d565b61027f565b5f5f610239338561024d565b90506102458382610290565b949350505050565b5f82826040516020016102619291906105db565b60405160208183030381529060405280519060200120905092915050565b5f61028a823061029c565b92915050565b5f61019b5f84846102f3565b5f604051825f5260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d6945f52600160345350506017601e20919050565b5f6f67363d3d37363d34f03d5260086018f35f52816010805ff58061031f5763301164255f526004601cfd5b8060145261d6945f5260016034536017601e2091505f5f85516020870188855af1823b026103545763301164255f526004601cfd5b509392505050565b6105fa8061060a83390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61019b6020830184610369565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f67ffffffffffffffff8411156103f0576103f06103a9565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561041f5761041f6103a9565b604052838152905080828401851015610436575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f83011261045c575f5ffd5b61019b838335602085016103d6565b803573ffffffffffffffffffffffffffffffffffffffff8116811461048e575f5ffd5b919050565b5f5f604083850312156104a4575f5ffd5b823567ffffffffffffffff8111156104ba575f5ffd5b6104c68582860161044d565b9250506104d56020840161046b565b90509250929050565b5f602082840312156104ee575f5ffd5b61019b8261046b565b5f5f60408385031215610508575f5ffd5b6105118361046b565b9150602083013567ffffffffffffffff81111561052c575f5ffd5b6105388582860161044d565b9150509250929050565b5f5f60408385031215610553575f5ffd5b823567ffffffffffffffff811115610569575f5ffd5b6105758582860161044d565b925050602083013567ffffffffffffffff811115610591575f5ffd5b8301601f810185136105a1575f5ffd5b610538858235602084016103d6565b5f81518060208401855e5f93019283525090919050565b5f6102456105d583866105b0565b846105b0565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f610245604083018461036956fe6080604052348015600e575f5ffd5b506040516105fa3803806105fa833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b61050e806100ec5f395ff3fe608060405234801561000f575f5ffd5b5060043610610084575f3560e01c8063715018a611610058578063715018a6146100f95780638da5cb5b14610103578063a6c8fe3a14610113578063f2fde38b14610126575f5ffd5b8062774360146100885780633331e8d9146100b857806343925a8c146100cb5780636757f7e8146100e3575b5f5ffd5b61009b6100963660046103c9565b610139565b6040516001600160a01b0390911681526020015b60405180910390f35b61009b6100c63660046103c9565b61016a565b6100d3610183565b60405190151581526020016100af565b6100eb61019e565b6040519081526020016100af565b6101016101b3565b005b5f546001600160a01b031661009b565b61009b61012136600461047c565b6101c6565b610101610134366004610493565b6101d0565b5f61014261022b565b5f600154600161015291906104b9565b905061015e8382610270565b60019190915592915050565b5f61017361022b565b61017d825f610270565b92915050565b5f61018d5f6101c6565b6001600160a01b03163b1515919050565b5f60015460016101ae91906104b9565b905090565b6101bb61022b565b6101c45f610283565b565b5f61017d826102ea565b6101d861022b565b6001600160a01b03811661021f576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61022881610283565b50565b5f546001600160a01b031633146101c4576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610216565b5f61027c5f84846102f5565b9392505050565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f61017d823061035e565b5f6f67363d3d37363d34f03d5260086018f35f52816010805ff5806103215763301164255f526004601cfd5b8060145261d6945f5260016034536017601e2091505f5f85516020870188855af1823b026103565763301164255f526004601cfd5b509392505050565b5f604051825f5260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d6945f52600160345350506017601e20919050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156103d9575f5ffd5b813567ffffffffffffffff8111156103ef575f5ffd5b8201601f810184136103ff575f5ffd5b803567ffffffffffffffff811115610419576104196103b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610448576104486103b5565b60405281815282820160200186101561045f575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f6020828403121561048c575f5ffd5b5035919050565b5f602082840312156104a3575f5ffd5b81356001600160a01b038116811461027c575f5ffd5b8082018082111561017d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ce0fcc788aa39b4be20fb8c5f78f2384710c14385c4bd349cf055b53b21e112864736f6c634300081e0033a2646970667358221220d915058dce1674c1fe6ada70aa2050fe3bb7b95e720eff06af5c917b4743e74164736f6c634300081e0033
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c806343b386b71161005857806343b386b7146100e657806355589cdd146100f95780638048e32f1461010c5780638590f3171461011f575f5ffd5b80631b046a4b1461007e57806326e46b1714610099578063276c5101146100ae575b5f5ffd5b610086610132565b6040519081526020015b60405180910390f35b6100a1610163565b6040516100909190610397565b6100c16100bc366004610493565b61018d565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610090565b6100a16100f43660046104de565b6101a2565b6100c16101073660046104f7565b61021a565b6100c161011a366004610542565b61022d565b61008661012d3660046104f7565b61024d565b5f604051806020016101439061035c565b6020820181038252601f19601f8201166040525080519060200120905090565b6060604051806020016101759061035c565b601f1982820381018352601f90910116604052919050565b5f61019b8361011a846101a2565b9392505050565b6060604051806020016101b49061035c565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff851660208301520160408051601f198184030181529082905261020492916020016105c7565b6040516020818303038152906040529050919050565b5f61019b610228848461024d565b61027f565b5f5f610239338561024d565b90506102458382610290565b949350505050565b5f82826040516020016102619291906105db565b60405160208183030381529060405280519060200120905092915050565b5f61028a823061029c565b92915050565b5f61019b5f84846102f3565b5f604051825f5260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d6945f52600160345350506017601e20919050565b5f6f67363d3d37363d34f03d5260086018f35f52816010805ff58061031f5763301164255f526004601cfd5b8060145261d6945f5260016034536017601e2091505f5f85516020870188855af1823b026103545763301164255f526004601cfd5b509392505050565b6105fa8061060a83390190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61019b6020830184610369565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f5f67ffffffffffffffff8411156103f0576103f06103a9565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561041f5761041f6103a9565b604052838152905080828401851015610436575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f83011261045c575f5ffd5b61019b838335602085016103d6565b803573ffffffffffffffffffffffffffffffffffffffff8116811461048e575f5ffd5b919050565b5f5f604083850312156104a4575f5ffd5b823567ffffffffffffffff8111156104ba575f5ffd5b6104c68582860161044d565b9250506104d56020840161046b565b90509250929050565b5f602082840312156104ee575f5ffd5b61019b8261046b565b5f5f60408385031215610508575f5ffd5b6105118361046b565b9150602083013567ffffffffffffffff81111561052c575f5ffd5b6105388582860161044d565b9150509250929050565b5f5f60408385031215610553575f5ffd5b823567ffffffffffffffff811115610569575f5ffd5b6105758582860161044d565b925050602083013567ffffffffffffffff811115610591575f5ffd5b8301601f810185136105a1575f5ffd5b610538858235602084016103d6565b5f81518060208401855e5f93019283525090919050565b5f6102456105d583866105b0565b846105b0565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f610245604083018461036956fe6080604052348015600e575f5ffd5b506040516105fa3803806105fa833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b61050e806100ec5f395ff3fe608060405234801561000f575f5ffd5b5060043610610084575f3560e01c8063715018a611610058578063715018a6146100f95780638da5cb5b14610103578063a6c8fe3a14610113578063f2fde38b14610126575f5ffd5b8062774360146100885780633331e8d9146100b857806343925a8c146100cb5780636757f7e8146100e3575b5f5ffd5b61009b6100963660046103c9565b610139565b6040516001600160a01b0390911681526020015b60405180910390f35b61009b6100c63660046103c9565b61016a565b6100d3610183565b60405190151581526020016100af565b6100eb61019e565b6040519081526020016100af565b6101016101b3565b005b5f546001600160a01b031661009b565b61009b61012136600461047c565b6101c6565b610101610134366004610493565b6101d0565b5f61014261022b565b5f600154600161015291906104b9565b905061015e8382610270565b60019190915592915050565b5f61017361022b565b61017d825f610270565b92915050565b5f61018d5f6101c6565b6001600160a01b03163b1515919050565b5f60015460016101ae91906104b9565b905090565b6101bb61022b565b6101c45f610283565b565b5f61017d826102ea565b6101d861022b565b6001600160a01b03811661021f576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61022881610283565b50565b5f546001600160a01b031633146101c4576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610216565b5f61027c5f84846102f5565b9392505050565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f61017d823061035e565b5f6f67363d3d37363d34f03d5260086018f35f52816010805ff5806103215763301164255f526004601cfd5b8060145261d6945f5260016034536017601e2091505f5f85516020870188855af1823b026103565763301164255f526004601cfd5b509392505050565b5f604051825f5260ff600b53836020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b20601452806040525061d6945f52600160345350506017601e20919050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156103d9575f5ffd5b813567ffffffffffffffff8111156103ef575f5ffd5b8201601f810184136103ff575f5ffd5b803567ffffffffffffffff811115610419576104196103b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610448576104486103b5565b60405281815282820160200186101561045f575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f6020828403121561048c575f5ffd5b5035919050565b5f602082840312156104a3575f5ffd5b81356001600160a01b038116811461027c575f5ffd5b8082018082111561017d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220ce0fcc788aa39b4be20fb8c5f78f2384710c14385c4bd349cf055b53b21e112864736f6c634300081e0033a2646970667358221220d915058dce1674c1fe6ada70aa2050fe3bb7b95e720eff06af5c917b4743e74164736f6c634300081e0033
Deployed Bytecode Sourcemap
14956:1846:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15870:135;;;:::i;:::-;;;160:25:1;;;148:2;133:18;15870:135:0;;;;;;;;15712:150;;;:::i;:::-;;;;;;;:::i;16550:249::-;;;;;;:::i;:::-;;:::i;:::-;;;2648:42:1;2636:55;;;2618:74;;2606:2;2591:18;16550:249:0;2472:226:1;15504:200:0;;;;;;:::i;:::-;;:::i;15304:192::-;;;;;;:::i;:::-;;:::i;16156:230::-;;;;;;:::i;:::-;;:::i;15129:167::-;;;;;;:::i;:::-;;:::i;15870:135::-;15936:7;15075:44;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;15065:55;;;;;;15956:41;;15870:135;:::o;15712:150::-;15778:12;15810:44;;;;;;;;:::i;:::-;-1:-1:-1;;15810:44:0;;;;;;;;;;;;;;;15712:150;-1:-1:-1;15712:150:0:o;16550:249::-;16680:7;16712:79;16726:14;16742:48;16776:13;16742:33;:48::i;16712:79::-;16705:86;16550:249;-1:-1:-1;;;16550:249:0:o;15504:200::-;15583:12;15632:44;;;;;;;;:::i;:::-;-1:-1:-1;;15632:44:0;;;;;;;;;;;;;;;;2648:42:1;2636:55;;15632:44:0;15678:17;;2618:74:1;2591:18;15678:17:0;;;-1:-1:-1;;15678:17:0;;;;;;;;;;15615:81;;;15678:17;15615:81;;:::i;:::-;;;;;;;;;;;;;15608:88;;15504:200;;;:::o;15304:192::-;15392:7;15419:69;15455:32;15462:8;15472:14;15455:6;:32::i;:::-;15419:35;:69::i;16156:230::-;16248:7;16268:12;16283:34;16290:10;16302:14;16283:6;:34::i;:::-;16268:49;;16335:43;16363:8;16373:4;16335:27;:43::i;:::-;16328:50;16156:230;-1:-1:-1;;;;16156:230:0:o;15129:167::-;15214:7;15262:8;15272:14;15251:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15241:47;;;;;;15234:54;;15129:167;;;;:::o;5440:170::-;5514:16;5554:48;5582:4;5596;5554:27;:48::i;:::-;5543:59;5440:170;-1:-1:-1;;5440:170:0:o;3637:193::-;3739:16;3784:38;3804:1;3807:8;3817:4;3784:19;:38::i;5694:1004::-;5813:16;5930:4;5924:11;5996:8;5990:4;5983:22;6054:4;6048;6040:19;6107:4;6101;6094:18;6158:19;6152:4;6145:33;6251:4;6245;6235:21;6229:4;6222:35;6314:1;6308:4;6301:15;;6557:6;6551:4;6544:20;6592:4;6586;6578:19;-1:-1:-1;;6675:4:0;6669;6659:21;;5694:1004;-1:-1:-1;5694:1004:0:o;4082:1290::-;4199:16;4314:15;4308:4;4301:29;4412:4;4406;4400;4397:1;4389:28;4441:5;4431:136;;4480:10;4474:4;4467:24;4547:4;4541;4534:18;4431:136;4594:5;4588:4;4581:19;4835:6;4829:4;4822:20;4870:4;4864;4856:19;4953:4;4947;4937:21;4925:33;;5195:4;5189;5178:8;5172:15;5165:4;5155:8;5151:19;5144:5;5137;5130;5125:75;5093:8;5081:21;5000:219;4972:382;;5267:10;5261:4;5254:24;5334:4;5328;5321:18;4972:382;;4082:1290;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;196:299:1:-;248:3;286:5;280:12;313:6;308:3;301:19;369:6;362:4;355:5;351:16;344:4;339:3;335:14;329:47;421:1;414:4;405:6;400:3;396:16;392:27;385:38;484:4;477:2;473:7;468:2;460:6;456:15;452:29;447:3;443:39;439:50;432:57;;;196:299;;;;:::o;500:228::-;647:2;636:9;629:21;610:4;667:55;718:2;707:9;703:18;695:6;667:55;:::i;733:184::-;785:77;782:1;775:88;882:4;879:1;872:15;906:4;903:1;896:15;922:716;987:5;1019:1;1043:18;1035:6;1032:30;1029:56;;;1065:18;;:::i;:::-;-1:-1:-1;1220:2:1;1214:9;-1:-1:-1;;1133:2:1;1112:15;;1108:29;;1278:2;1266:15;1262:29;1250:42;;1343:22;;;1322:18;1307:34;;1304:62;1301:88;;;1369:18;;:::i;:::-;1405:2;1398:22;1453;;;1438:6;-1:-1:-1;1438:6:1;1490:16;;;1487:25;-1:-1:-1;1484:45:1;;;1525:1;1522;1515:12;1484:45;1575:6;1570:3;1563:4;1555:6;1551:17;1538:44;1630:1;1623:4;1614:6;1606;1602:19;1598:30;1591:41;;922:716;;;;;:::o;1643:222::-;1686:5;1739:3;1732:4;1724:6;1720:17;1716:27;1706:55;;1757:1;1754;1747:12;1706:55;1779:80;1855:3;1846:6;1833:20;1826:4;1818:6;1814:17;1779:80;:::i;1870:196::-;1938:20;;1998:42;1987:54;;1977:65;;1967:93;;2056:1;2053;2046:12;1967:93;1870:196;;;:::o;2071:396::-;2149:6;2157;2210:2;2198:9;2189:7;2185:23;2181:32;2178:52;;;2226:1;2223;2216:12;2178:52;2266:9;2253:23;2299:18;2291:6;2288:30;2285:50;;;2331:1;2328;2321:12;2285:50;2354;2396:7;2387:6;2376:9;2372:22;2354:50;:::i;:::-;2344:60;;;2423:38;2457:2;2446:9;2442:18;2423:38;:::i;:::-;2413:48;;2071:396;;;;;:::o;2703:186::-;2762:6;2815:2;2803:9;2794:7;2790:23;2786:32;2783:52;;;2831:1;2828;2821:12;2783:52;2854:29;2873:9;2854:29;:::i;2894:396::-;2972:6;2980;3033:2;3021:9;3012:7;3008:23;3004:32;3001:52;;;3049:1;3046;3039:12;3001:52;3072:29;3091:9;3072:29;:::i;:::-;3062:39;;3152:2;3141:9;3137:18;3124:32;3179:18;3171:6;3168:30;3165:50;;;3211:1;3208;3201:12;3165:50;3234;3276:7;3267:6;3256:9;3252:22;3234:50;:::i;:::-;3224:60;;;2894:396;;;;;:::o;3295:666::-;3382:6;3390;3443:2;3431:9;3422:7;3418:23;3414:32;3411:52;;;3459:1;3456;3449:12;3411:52;3499:9;3486:23;3532:18;3524:6;3521:30;3518:50;;;3564:1;3561;3554:12;3518:50;3587;3629:7;3620:6;3609:9;3605:22;3587:50;:::i;:::-;3577:60;;;3690:2;3679:9;3675:18;3662:32;3719:18;3709:8;3706:32;3703:52;;;3751:1;3748;3741:12;3703:52;3774:24;;3829:4;3821:13;;3817:27;-1:-1:-1;3807:55:1;;3858:1;3855;3848:12;3807:55;3881:74;3947:7;3942:2;3929:16;3924:2;3920;3916:11;3881:74;:::i;3966:211::-;4007:3;4045:5;4039:12;4089:6;4082:4;4075:5;4071:16;4066:3;4060:36;4151:1;4115:16;;4140:13;;;-1:-1:-1;4115:16:1;;3966:211;-1:-1:-1;3966:211:1:o;4182:261::-;4357:3;4382:55;4407:29;4432:3;4424:6;4407:29;:::i;:::-;4399:6;4382:55;:::i;4448:350::-;4637:42;4629:6;4625:55;4614:9;4607:74;4717:2;4712;4701:9;4697:18;4690:30;4588:4;4737:55;4788:2;4777:9;4773:18;4765:6;4737:55;:::i
Swarm Source
ipfs://d915058dce1674c1fe6ada70aa2050fe3bb7b95e720eff06af5c917b4743e741
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.