Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 45 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Create Token | 23613408 | 129 days ago | IN | 0.001 ETH | 0.00444393 | ||||
| Approve Creator | 23613401 | 129 days ago | IN | 0 ETH | 0.00007569 | ||||
| Create Token | 23613272 | 129 days ago | IN | 0.01 ETH | 0.00444302 | ||||
| Approve Creator | 23613262 | 129 days ago | IN | 0 ETH | 0.0000762 | ||||
| Set Implementati... | 23613246 | 129 days ago | IN | 0 ETH | 0.0000592 | ||||
| Create Token | 23613083 | 129 days ago | IN | 0.01 ETH | 0.00496933 | ||||
| Approve Creator | 23613082 | 129 days ago | IN | 0 ETH | 0.00008172 | ||||
| Transfer Ownersh... | 23611238 | 130 days ago | IN | 0 ETH | 0.00004723 | ||||
| Transfer Ownersh... | 23570611 | 135 days ago | IN | 0 ETH | 0.00006315 | ||||
| Create Token | 23569689 | 135 days ago | IN | 0.01 ETH | 0.00692304 | ||||
| Approve Creator | 23569662 | 135 days ago | IN | 0 ETH | 0.00010174 | ||||
| Transfer Ownersh... | 23569650 | 135 days ago | IN | 0 ETH | 0.0000665 | ||||
| Transfer Ownersh... | 23568476 | 136 days ago | IN | 0 ETH | 0.00005273 | ||||
| Approve Creator | 23566734 | 136 days ago | IN | 0 ETH | 0.00007503 | ||||
| Approve Creator | 23566732 | 136 days ago | IN | 0 ETH | 0.00007478 | ||||
| Approve Creator | 23566728 | 136 days ago | IN | 0 ETH | 0.00007485 | ||||
| Approve Creator | 23566726 | 136 days ago | IN | 0 ETH | 0.00007446 | ||||
| Approve Creator | 23566719 | 136 days ago | IN | 0 ETH | 0.00004271 | ||||
| Set Implementati... | 23566715 | 136 days ago | IN | 0 ETH | 0.00005822 | ||||
| Create Token | 23260287 | 179 days ago | IN | 0.01 ETH | 0.00468507 | ||||
| Approve Creator | 23260283 | 179 days ago | IN | 0 ETH | 0.00005306 | ||||
| Create Token | 23260007 | 179 days ago | IN | 0.01 ETH | 0.00460879 | ||||
| Approve Creator | 23259784 | 179 days ago | IN | 0 ETH | 0.00005331 | ||||
| Set Implementati... | 23259701 | 179 days ago | IN | 0 ETH | 0.00004113 | ||||
| Set Implementati... | 23245408 | 181 days ago | IN | 0 ETH | 0.00004567 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Initialize | 23613408 | 129 days ago | 0.001 ETH | ||||
| 0x3d602d80 | 23613408 | 129 days ago | Contract Creation | 0 ETH | |||
| Initialize | 23613272 | 129 days ago | 0.01 ETH | ||||
| 0x3d602d80 | 23613272 | 129 days ago | Contract Creation | 0 ETH | |||
| Initialize | 23613083 | 129 days ago | 0.01 ETH | ||||
| 0x3d602d80 | 23613083 | 129 days ago | Contract Creation | 0 ETH | |||
| Initialize | 23569689 | 135 days ago | 0.01 ETH | ||||
| 0x3d602d80 | 23569689 | 135 days ago | Contract Creation | 0 ETH | |||
| Initialize | 23260287 | 179 days ago | 0.01 ETH | ||||
| 0x3d602d80 | 23260287 | 179 days ago | Contract Creation | 0 ETH | |||
| Initialize | 23260007 | 179 days ago | 0.01 ETH | ||||
| 0x3d602d80 | 23260007 | 179 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22974288 | 219 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22974288 | 219 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22963436 | 220 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22963436 | 220 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22940867 | 223 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22940867 | 223 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22935291 | 224 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22935291 | 224 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22934501 | 224 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22934501 | 224 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22933915 | 224 days ago | 0.003 ETH | ||||
| 0x3d602d80 | 22933915 | 224 days ago | Contract Creation | 0 ETH | |||
| Initialize | 22871658 | 233 days ago | 0.003 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Factory
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: None
pragma solidity ^0.8.24;
import "@openzeppelin/contracts/proxy/Clones.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
interface IToken {
function initialize(bytes calldata params) external payable;
}
interface IValidationLogic {
function validate(uint256 ethAmt, bytes calldata params) external;
}
contract Factory is Ownable {
struct ImplementationData {
address addr;
uint256 version;
}
struct UserToken {
uint256 tokenType;
uint256 version;
}
IValidationLogic public validationLogic;
mapping(uint256 => ImplementationData) public tokenImplementations;
mapping(address => UserToken) public tokenData;
address[] public createdTokens;
mapping(address => bool) public canCreate;
event TokenCreated(address _address);
error NotApproved();
constructor(address _validationLogic, address[] memory implementations) Ownable(msg.sender) {
validationLogic = IValidationLogic(_validationLogic);
uint256 len = implementations.length;
for (uint256 i; i < len; i++) {
tokenImplementations[i] = ImplementationData({addr: implementations[i], version: 1});
}
}
function createToken(uint256 tokenID, bytes calldata params) external payable returns (address newToken) {
if (!canCreate[msg.sender]) {
revert NotApproved();
}
canCreate[msg.sender] = false;
ImplementationData storage tokenInfo = tokenImplementations[tokenID];
validationLogic.validate(msg.value, params);
newToken = Clones.clone(tokenInfo.addr);
createdTokens.push(newToken);
tokenData[newToken] = UserToken({tokenType: tokenID, version: tokenInfo.version});
IToken(newToken).initialize{value: msg.value}(params);
emit TokenCreated(newToken);
}
function approveCreator(address creator, bool approved) external onlyOwner {
canCreate[creator] = approved;
}
function setImplementations(uint256[] memory ids, address[] memory implementations) external onlyOwner {
if (ids.length != implementations.length) {
revert();
}
uint256 len = implementations.length;
for (uint256 i; i < len; i++) {
ImplementationData storage currImplementation = tokenImplementations[ids[i]];
if (currImplementation.addr != implementations[i]) {
currImplementation.addr = implementations[i];
currImplementation.version += 1;
}
}
}
function setValidationLogic(address vLogic) external onlyOwner {
validationLogic = IValidationLogic(vLogic);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @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);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Clones.sol)
pragma solidity ^0.8.20;
/**
* @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
* deploying minimal proxy contracts, also known as "clones".
*
* > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
* > a minimal bytecode implementation that delegates all calls to a known, fixed address.
*
* The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
* (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
* deterministic method.
*/
library Clones {
/**
* @dev A clone instance deployment failed.
*/
error ERC1167FailedCreateClone();
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create opcode, which should never revert.
*/
function clone(address implementation) internal returns (address instance) {
/// @solidity memory-safe-assembly
assembly {
// Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
// of the `implementation` address with the bytecode before the address.
mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
// Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
instance := create(0, 0x09, 0x37)
}
if (instance == address(0)) {
revert ERC1167FailedCreateClone();
}
}
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create2 opcode and a `salt` to deterministically deploy
* the clone. Using the same `implementation` and `salt` multiple time will revert, since
* the clones cannot be deployed twice at the same address.
*/
function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
/// @solidity memory-safe-assembly
assembly {
// Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
// of the `implementation` address with the bytecode before the address.
mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
// Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
instance := create2(0, 0x09, 0x37, salt)
}
if (instance == address(0)) {
revert ERC1167FailedCreateClone();
}
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(
address implementation,
bytes32 salt,
address deployer
) internal pure returns (address predicted) {
/// @solidity memory-safe-assembly
assembly {
let ptr := mload(0x40)
mstore(add(ptr, 0x38), deployer)
mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
mstore(add(ptr, 0x14), implementation)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
mstore(add(ptr, 0x58), salt)
mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
predicted := keccak256(add(ptr, 0x43), 0x55)
}
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(
address implementation,
bytes32 salt
) internal view returns (address predicted) {
return predictDeterministicAddress(implementation, salt, address(this));
}
}// SPDX-License-Identifier: MIT
// 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;
}
}{
"optimizer": {
"enabled": true,
"runs": 200,
"details": {
"yul": true
}
},
"viaIR": true,
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_validationLogic","type":"address"},{"internalType":"address[]","name":"implementations","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC1167FailedCreateClone","type":"error"},{"inputs":[],"name":"NotApproved","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"TokenCreated","type":"event"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"approveCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canCreate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"createToken","outputs":[{"internalType":"address","name":"newToken","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"createdTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"address[]","name":"implementations","type":"address[]"}],"name":"setImplementations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vLogic","type":"address"}],"name":"setValidationLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenData","outputs":[{"internalType":"uint256","name":"tokenType","type":"uint256"},{"internalType":"uint256","name":"version","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenImplementations","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"version","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validationLogic","outputs":[{"internalType":"contract IValidationLogic","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
604060808152346101b757610b1f8038038061001a816101d2565b928339810182828203126101b757610031826101f7565b6020838101516001600160401b0394929391928582116101b757019181601f840112156101b7578251918583116101bc576005938360051b9083806100778185016101d2565b8097815201928201019283116101b75783809101915b83831061019f5750505050331561018757600080546001600160a01b0319808216339081178455929490926001600160a01b039283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08780a38160019716836001541617600155805195855b87811061010f578a51610913908161020c8239f35b825181101561017357838682841b85010151168b51908c82018281108d82111761015f578d5281528681018a8152828952600288528c892091518254881690871617825551908a015588016100fa565b634e487b7160e01b8a52604160045260248afd5b634e487b7160e01b87526032600452602487fd5b8551631e4fbdf760e01b815260006004820152602490fd5b81906101aa846101f7565b815201910190839061008d565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176101bc57604052565b51906001600160a01b03821682036101b75756fe6040608081526004908136101561001557600080fd5b600091823560e01c80631672b0a61461077557806327e45c2c14610733578063512ea840146104a85780635b76c04f14610470578063715018a61461041657806371e6977e146103ed5780637804a5dc146103af57806382bc73dc146101f85780638da5cb5b146101d0578063d782d6471461018d578063d897ba96146101335763f2fde38b146100a557600080fd5b3461012f57602036600319011261012f576100be6107b5565b906100c76108b1565b6001600160a01b03918216928315610119575050600054826001600160601b0360a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b50503461018957806003193601126101895761014d6107b5565b9060243591821515809303610185576101646108b1565b60018060a01b03168352600560205282209060ff8019835416911617905580f35b8380fd5b5080fd5b5091346101cd5760203660031901126101cd57823592548310156101cd57506101b760209261082f565b905491519160018060a01b039160031b1c168152f35b80fd5b505034610189578160031936011261018957905490516001600160a01b039091168152602090f35b503461012f578160031936011261012f5780359067ffffffffffffffff908183116103ab57366023840112156103ab576024938184013561023881610817565b94610245835196876107f5565b818652602091878388019160051b830101913683116103935788849101915b83831061039b57505050508535938411610397573660238501121561039757838301359361029185610817565b9461029e845196876107f5565b808652878387019160051b83010191368311610393578801905b82821061036f575050506102ca6108b1565b845194845180960361036b57875b8681106102e3578880f35b6102ed818361089d565b5189526002835283892080546001600160a01b038061030c858b61089d565b511681831603610322575b5050506001016102d8565b61032c848a61089d565b5116906001600160601b0360a01b1617815560018091018054918201809211610359575560013880610317565b634e487b7160e01b8b5260118752898bfd5b8780fd5b81356001600160a01b038116810361038e5781529083019083016102b8565b600080fd5b8980fd5b8680fd5b8235815291810191849101610264565b8480fd5b5050346101895760203660031901126101895760209160ff9082906001600160a01b036103da6107b5565b1681526005855220541690519015158152f35b50503461018957816003193601126101895760015490516001600160a01b039091168152602090f35b83346101cd57806003193601126101cd5761042f6108b1565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461012f57602036600319011261012f579181923581526002602052206001808060a01b0382541691015482519182526020820152f35b5091908060031936011261018957823591602480359467ffffffffffffffff95868111610185573660238201121561018557808201358781116103ab5783820191848236920101116103ab573385526020976005895260ff8787205416156107235733865260058952868620805460ff19169055878652600289528686206001546001600160a01b039991908a16803b1561071f57888a518092631df7cc5d60e31b8252348a8301528c8b8301528183816105688c8c604484019161087c565b03925af1801561071557610702575b508054608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d7300000017895260781b6effffffffffffffffffffffffffffff19166e5af43d82803e903d91602b57fd5bf3178b5289603760098af016998a156106f2578654680100000000000000008110156106e057908b6105fc836001809695018b5561082f565b909283549160031b92831b921b191617905501549088519289840190848210908211176106cc578952825289820190815288875260038a528787209151825551600190910155863b156103ab579161066d889286948851968795869563439fab9160e01b875286015284019161087c565b038134885af180156106c2576106ae575b50507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e838251848152a151908152f35b6106b882916107cb565b6101cd578061067e565b83513d84823e3d90fd5b87604188634e487b7160e01b600052526000fd5b634e487b7160e01b8a5260418852888afd5b89516330be1a3d60e21b81528790fd5b61070e909891986107cb565b9638610577565b8a513d8b823e3d90fd5b8880fd5b865163c19f17a960e01b81528490fd5b505034610189576020366003190112610189579081906001600160a01b036107596107b5565b1681526003602052206001815491015482519182526020820152f35b83346101cd5760203660031901126101cd5761078f6107b5565b6107976108b1565b60018060a01b03166001600160601b0360a01b600154161760015580f35b600435906001600160a01b038216820361038e57565b67ffffffffffffffff81116107df57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176107df57604052565b67ffffffffffffffff81116107df5760051b60200190565b6004548110156108665760046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190600090565b634e487b7160e01b600052603260045260246000fd5b908060209392818452848401376000828201840152601f01601f1916010190565b80518210156108665760209160051b010190565b6000546001600160a01b031633036108c557565b60405163118cdaa760e01b8152336004820152602490fdfea26469706673582212207e79e4b376f817c0b52d1b71c24b5838c8901538f05ac0f2a98789a80e501f2d64736f6c63430008180033000000000000000000000000771b8e1d68a0ec5fea25da1f12c19e87e816d508000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002c076b3407c06ded41a6f483de294eefcda0f24c
Deployed Bytecode
0x6040608081526004908136101561001557600080fd5b600091823560e01c80631672b0a61461077557806327e45c2c14610733578063512ea840146104a85780635b76c04f14610470578063715018a61461041657806371e6977e146103ed5780637804a5dc146103af57806382bc73dc146101f85780638da5cb5b146101d0578063d782d6471461018d578063d897ba96146101335763f2fde38b146100a557600080fd5b3461012f57602036600319011261012f576100be6107b5565b906100c76108b1565b6001600160a01b03918216928315610119575050600054826001600160601b0360a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b51631e4fbdf760e01b8152908101849052602490fd5b8280fd5b50503461018957806003193601126101895761014d6107b5565b9060243591821515809303610185576101646108b1565b60018060a01b03168352600560205282209060ff8019835416911617905580f35b8380fd5b5080fd5b5091346101cd5760203660031901126101cd57823592548310156101cd57506101b760209261082f565b905491519160018060a01b039160031b1c168152f35b80fd5b505034610189578160031936011261018957905490516001600160a01b039091168152602090f35b503461012f578160031936011261012f5780359067ffffffffffffffff908183116103ab57366023840112156103ab576024938184013561023881610817565b94610245835196876107f5565b818652602091878388019160051b830101913683116103935788849101915b83831061039b57505050508535938411610397573660238501121561039757838301359361029185610817565b9461029e845196876107f5565b808652878387019160051b83010191368311610393578801905b82821061036f575050506102ca6108b1565b845194845180960361036b57875b8681106102e3578880f35b6102ed818361089d565b5189526002835283892080546001600160a01b038061030c858b61089d565b511681831603610322575b5050506001016102d8565b61032c848a61089d565b5116906001600160601b0360a01b1617815560018091018054918201809211610359575560013880610317565b634e487b7160e01b8b5260118752898bfd5b8780fd5b81356001600160a01b038116810361038e5781529083019083016102b8565b600080fd5b8980fd5b8680fd5b8235815291810191849101610264565b8480fd5b5050346101895760203660031901126101895760209160ff9082906001600160a01b036103da6107b5565b1681526005855220541690519015158152f35b50503461018957816003193601126101895760015490516001600160a01b039091168152602090f35b83346101cd57806003193601126101cd5761042f6108b1565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461012f57602036600319011261012f579181923581526002602052206001808060a01b0382541691015482519182526020820152f35b5091908060031936011261018957823591602480359467ffffffffffffffff95868111610185573660238201121561018557808201358781116103ab5783820191848236920101116103ab573385526020976005895260ff8787205416156107235733865260058952868620805460ff19169055878652600289528686206001546001600160a01b039991908a16803b1561071f57888a518092631df7cc5d60e31b8252348a8301528c8b8301528183816105688c8c604484019161087c565b03925af1801561071557610702575b508054608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d7300000017895260781b6effffffffffffffffffffffffffffff19166e5af43d82803e903d91602b57fd5bf3178b5289603760098af016998a156106f2578654680100000000000000008110156106e057908b6105fc836001809695018b5561082f565b909283549160031b92831b921b191617905501549088519289840190848210908211176106cc578952825289820190815288875260038a528787209151825551600190910155863b156103ab579161066d889286948851968795869563439fab9160e01b875286015284019161087c565b038134885af180156106c2576106ae575b50507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e838251848152a151908152f35b6106b882916107cb565b6101cd578061067e565b83513d84823e3d90fd5b87604188634e487b7160e01b600052526000fd5b634e487b7160e01b8a5260418852888afd5b89516330be1a3d60e21b81528790fd5b61070e909891986107cb565b9638610577565b8a513d8b823e3d90fd5b8880fd5b865163c19f17a960e01b81528490fd5b505034610189576020366003190112610189579081906001600160a01b036107596107b5565b1681526003602052206001815491015482519182526020820152f35b83346101cd5760203660031901126101cd5761078f6107b5565b6107976108b1565b60018060a01b03166001600160601b0360a01b600154161760015580f35b600435906001600160a01b038216820361038e57565b67ffffffffffffffff81116107df57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176107df57604052565b67ffffffffffffffff81116107df5760051b60200190565b6004548110156108665760046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190600090565b634e487b7160e01b600052603260045260246000fd5b908060209392818452848401376000828201840152601f01601f1916010190565b80518210156108665760209160051b010190565b6000546001600160a01b031633036108c557565b60405163118cdaa760e01b8152336004820152602490fdfea26469706673582212207e79e4b376f817c0b52d1b71c24b5838c8901538f05ac0f2a98789a80e501f2d64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000771b8e1d68a0ec5fea25da1f12c19e87e816d508000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000002c076b3407c06ded41a6f483de294eefcda0f24c
-----Decoded View---------------
Arg [0] : _validationLogic (address): 0x771b8E1D68a0eC5FEa25dA1f12C19E87E816d508
Arg [1] : implementations (address[]): 0x2c076b3407C06dEd41A6f483De294EefcdA0f24c
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000771b8e1d68a0ec5fea25da1f12c19e87e816d508
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000002c076b3407c06ded41a6f483de294eefcda0f24c
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.