Polygon Sponsored slots available. Book your slot here!
Overview
POL Balance
0 POL
POL Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 39653215 | 653 days ago | IN | 0 POL | 0.00507881 | ||||
Deploy Upgradeab... | 39648714 | 653 days ago | IN | 0 POL | 0.02302611 | ||||
Register | 39648621 | 653 days ago | IN | 0 POL | 0.01042236 | ||||
Register | 39648621 | 653 days ago | IN | 0 POL | 0.01043147 | ||||
Register | 39648621 | 653 days ago | IN | 0 POL | 0.01042834 | ||||
Register | 39648621 | 653 days ago | IN | 0 POL | 0.01043337 | ||||
Register | 39648615 | 653 days ago | IN | 0 POL | 0.01041637 | ||||
Register | 39648615 | 653 days ago | IN | 0 POL | 0.01042589 | ||||
Register | 39648615 | 653 days ago | IN | 0 POL | 0.01042385 |
Latest 8 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
39861093 | 647 days ago | Contract Creation | 0 POL | |||
39861093 | 647 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL | |||
39648714 | 653 days ago | Contract Creation | 0 POL |
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:
UpgradeableModuleProxyFactory
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 100000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.17; import {Ownable} from "openzeppelin/access/Ownable.sol"; import {IModuleMetadata} from "../bases/interfaces/IModuleMetadata.sol"; uint256 constant LATEST_VERSION = type(uint256).max; contract UpgradeableModuleProxyFactory is Ownable { error ProxyAlreadyDeployedForNonce(); error FailedInitialization(); error ModuleVersionAlreadyRegistered(); error UnexistentModuleVersion(); event ModuleRegistered(IModuleMetadata indexed implementation, string moduleId, uint256 version); event ModuleProxyCreated(address indexed proxy, IModuleMetadata indexed implementation); mapping(string => mapping(uint256 => IModuleMetadata)) internal modules; mapping(string => uint256) public latestModuleVersion; function register(IModuleMetadata implementation) external onlyOwner { string memory moduleId = implementation.moduleId(); uint256 version = implementation.moduleVersion(); if (address(modules[moduleId][version]) != address(0)) { revert ModuleVersionAlreadyRegistered(); } modules[moduleId][version] = implementation; if (version > latestModuleVersion[moduleId]) { latestModuleVersion[moduleId] = version; } emit ModuleRegistered(implementation, moduleId, version); } function getImplementation(string memory moduleId, uint256 version) public view returns (IModuleMetadata implementation) { if (version == LATEST_VERSION) { version = latestModuleVersion[moduleId]; } implementation = modules[moduleId][version]; if (address(implementation) == address(0)) { revert UnexistentModuleVersion(); } } function deployUpgradeableModule(string memory moduleId, uint256 version, bytes memory initializer, uint256 salt) public returns (address proxy) { return deployUpgradeableModule(getImplementation(moduleId, version), initializer, salt); } function deployUpgradeableModule(IModuleMetadata implementation, bytes memory initializer, uint256 salt) public returns (address proxy) { proxy = createProxy(implementation, keccak256(abi.encodePacked(keccak256(initializer), salt))); (bool success,) = proxy.call(initializer); if (!success) { revert FailedInitialization(); } } /** * @dev Proxy EVM code from factory/proxy-asm generated with ETK */ function createProxy(IModuleMetadata implementation, bytes32 salt) internal returns (address proxy) { bytes memory initcode = abi.encodePacked( hex"73", implementation, hex"7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55603b8060403d393df3363d3d3760393d3d3d3d3d363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4913d913e3d9257fd5bf3" ); assembly { proxy := create2(0, add(initcode, 0x20), mload(initcode), salt) } if (proxy == address(0)) { revert ProxyAlreadyDeployedForNonce(); } emit ModuleProxyCreated(proxy, implementation); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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 v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IModuleMetadata { function moduleId() external pure returns (string memory); function moduleVersion() external pure returns (uint256); }
{ "remappings": [ "@gnosis.pm/safe-contracts/=lib/safe-contracts/", "@openzeppelin/contracts/=lib/zeppelin-solidity/contracts/", "BokkyPooBahsDateTimeLibrary/=lib/BokkyPooBahsDateTimeLibrary/", "datetime/=lib/BokkyPooBahsDateTimeLibrary/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "llamapay/=lib/llamapay/contracts/", "openzeppelin/=lib/zeppelin-solidity/contracts/", "safe-contracts/=lib/safe-contracts/contracts/", "safe/=lib/safe-contracts/contracts/", "zeppelin-solidity/=lib/zeppelin-solidity/" ], "optimizer": { "enabled": true, "runs": 100000 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"FailedInitialization","type":"error"},{"inputs":[],"name":"ModuleVersionAlreadyRegistered","type":"error"},{"inputs":[],"name":"ProxyAlreadyDeployedForNonce","type":"error"},{"inputs":[],"name":"UnexistentModuleVersion","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proxy","type":"address"},{"indexed":true,"internalType":"contract IModuleMetadata","name":"implementation","type":"address"}],"name":"ModuleProxyCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IModuleMetadata","name":"implementation","type":"address"},{"indexed":false,"internalType":"string","name":"moduleId","type":"string"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"ModuleRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"string","name":"moduleId","type":"string"},{"internalType":"uint256","name":"version","type":"uint256"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"deployUpgradeableModule","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IModuleMetadata","name":"implementation","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"deployUpgradeableModule","outputs":[{"internalType":"address","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"moduleId","type":"string"},{"internalType":"uint256","name":"version","type":"uint256"}],"name":"getImplementation","outputs":[{"internalType":"contract IModuleMetadata","name":"implementation","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"latestModuleVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IModuleMetadata","name":"implementation","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d898061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063e8009dda1461013e578063ed786c6214610151578063f2fde38b1461016457600080fd5b80634420e4861461008d5780634e0eb03d146100a257806362271999146100e0578063715018a614610118575b600080fd5b6100a061009b3660046109a5565b610177565b005b6100cd6100b0366004610ae3565b805160208183018101805160028252928201919093012091525481565b6040519081526020015b60405180910390f35b6100f36100ee366004610b20565b610421565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d7565b6100a0610440565b60005473ffffffffffffffffffffffffffffffffffffffff166100f3565b6100f361014c366004610b95565b610454565b6100f361015f366004610bda565b61051f565b6100a06101723660046109a5565b610611565b61017f6106cd565b60008173ffffffffffffffffffffffffffffffffffffffff1663a1308f276040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102129190810190610c57565b905060008273ffffffffffffffffffffffffffffffffffffffff1663baa3b4d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102859190610cc5565b9050600073ffffffffffffffffffffffffffffffffffffffff166001836040516102af9190610cde565b90815260408051602092819003830190206000858152925290205473ffffffffffffffffffffffffffffffffffffffff1614610317576040517f9b65e41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001836040516103289190610cde565b908152604080516020928190038301812060008681529352912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155600290610394908490610cde565b9081526020016040518091039020548111156103cc57806002836040516103bb9190610cde565b908152604051908190036020019020555b8273ffffffffffffffffffffffffffffffffffffffff167f0588989f5c0f7adc0ee11a57cb34e43779b0f896d1abebf46030993eecdb58708383604051610414929190610cfa565b60405180910390a2505050565b60006104376104308686610454565b848461051f565b95945050505050565b6104486106cd565b610452600061074e565b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361049f5760028360405161048d9190610cde565b90815260200160405180910390205491505b6001836040516104af9190610cde565b90815260408051602092819003830190206000858152925290205473ffffffffffffffffffffffffffffffffffffffff16905080610519576040517fdd9ece5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061056384848051906020012084604051602001610548929190918252602082015260400190565b604051602081830303815290604052805190602001206107c3565b905060008173ffffffffffffffffffffffffffffffffffffffff168460405161058c9190610cde565b6000604051808303816000865af19150503d80600081146105c9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ce565b606091505b5050905080610609576040517f7dabd39900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b6106196106cd565b73ffffffffffffffffffffffffffffffffffffffff81166106c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6106ca8161074e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b8565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f730000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660218201527f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382b60358201527fbc55603b8060403d393df3363d3d3760393d3d3d3d3d363d7f360894a13ba1a360558201527f210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4913d913e60758201527f3d9257fd5bf3000000000000000000000000000000000000000000000000000060958201526000908190609b016040516020818303038152906040529050828151602083016000f5915073ffffffffffffffffffffffffffffffffffffffff8216610922576040517f3f967bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc518929d67245722c5358eae559512c9aa58aec6a1db24e57cb222f36232eeca60405160405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146106ca57600080fd5b6000602082840312156109b757600080fd5b81356109c281610983565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3f57610a3f6109c9565b604052919050565b600067ffffffffffffffff821115610a6157610a616109c9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610a9e57600080fd5b8135610ab1610aac82610a47565b6109f8565b818152846020838601011115610ac657600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610af557600080fd5b813567ffffffffffffffff811115610b0c57600080fd5b610b1884828501610a8d565b949350505050565b60008060008060808587031215610b3657600080fd5b843567ffffffffffffffff80821115610b4e57600080fd5b610b5a88838901610a8d565b9550602087013594506040870135915080821115610b7757600080fd5b50610b8487828801610a8d565b949793965093946060013593505050565b60008060408385031215610ba857600080fd5b823567ffffffffffffffff811115610bbf57600080fd5b610bcb85828601610a8d565b95602094909401359450505050565b600080600060608486031215610bef57600080fd5b8335610bfa81610983565b9250602084013567ffffffffffffffff811115610c1657600080fd5b610c2286828701610a8d565b925050604084013590509250925092565b60005b83811015610c4e578181015183820152602001610c36565b50506000910152565b600060208284031215610c6957600080fd5b815167ffffffffffffffff811115610c8057600080fd5b8201601f81018413610c9157600080fd5b8051610c9f610aac82610a47565b818152856020838501011115610cb457600080fd5b610437826020830160208601610c33565b600060208284031215610cd757600080fd5b5051919050565b60008251610cf0818460208701610c33565b9190910192915050565b6040815260008351806040840152610d19816060850160208801610c33565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fea26469706673582212200cc1adb6cc184c8a8274187e44f37df658c2711379d934ed8f35b1fd3868654164736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063e8009dda1461013e578063ed786c6214610151578063f2fde38b1461016457600080fd5b80634420e4861461008d5780634e0eb03d146100a257806362271999146100e0578063715018a614610118575b600080fd5b6100a061009b3660046109a5565b610177565b005b6100cd6100b0366004610ae3565b805160208183018101805160028252928201919093012091525481565b6040519081526020015b60405180910390f35b6100f36100ee366004610b20565b610421565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d7565b6100a0610440565b60005473ffffffffffffffffffffffffffffffffffffffff166100f3565b6100f361014c366004610b95565b610454565b6100f361015f366004610bda565b61051f565b6100a06101723660046109a5565b610611565b61017f6106cd565b60008173ffffffffffffffffffffffffffffffffffffffff1663a1308f276040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102129190810190610c57565b905060008273ffffffffffffffffffffffffffffffffffffffff1663baa3b4d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102859190610cc5565b9050600073ffffffffffffffffffffffffffffffffffffffff166001836040516102af9190610cde565b90815260408051602092819003830190206000858152925290205473ffffffffffffffffffffffffffffffffffffffff1614610317576040517f9b65e41500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001836040516103289190610cde565b908152604080516020928190038301812060008681529352912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155600290610394908490610cde565b9081526020016040518091039020548111156103cc57806002836040516103bb9190610cde565b908152604051908190036020019020555b8273ffffffffffffffffffffffffffffffffffffffff167f0588989f5c0f7adc0ee11a57cb34e43779b0f896d1abebf46030993eecdb58708383604051610414929190610cfa565b60405180910390a2505050565b60006104376104308686610454565b848461051f565b95945050505050565b6104486106cd565b610452600061074e565b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361049f5760028360405161048d9190610cde565b90815260200160405180910390205491505b6001836040516104af9190610cde565b90815260408051602092819003830190206000858152925290205473ffffffffffffffffffffffffffffffffffffffff16905080610519576040517fdd9ece5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061056384848051906020012084604051602001610548929190918252602082015260400190565b604051602081830303815290604052805190602001206107c3565b905060008173ffffffffffffffffffffffffffffffffffffffff168460405161058c9190610cde565b6000604051808303816000865af19150503d80600081146105c9576040519150601f19603f3d011682016040523d82523d6000602084013e6105ce565b606091505b5050905080610609576040517f7dabd39900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b6106196106cd565b73ffffffffffffffffffffffffffffffffffffffff81166106c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6106ca8161074e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b8565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f730000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660218201527f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382b60358201527fbc55603b8060403d393df3363d3d3760393d3d3d3d3d363d7f360894a13ba1a360558201527f210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af4913d913e60758201527f3d9257fd5bf3000000000000000000000000000000000000000000000000000060958201526000908190609b016040516020818303038152906040529050828151602083016000f5915073ffffffffffffffffffffffffffffffffffffffff8216610922576040517f3f967bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc518929d67245722c5358eae559512c9aa58aec6a1db24e57cb222f36232eeca60405160405180910390a35092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146106ca57600080fd5b6000602082840312156109b757600080fd5b81356109c281610983565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610a3f57610a3f6109c9565b604052919050565b600067ffffffffffffffff821115610a6157610a616109c9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112610a9e57600080fd5b8135610ab1610aac82610a47565b6109f8565b818152846020838601011115610ac657600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610af557600080fd5b813567ffffffffffffffff811115610b0c57600080fd5b610b1884828501610a8d565b949350505050565b60008060008060808587031215610b3657600080fd5b843567ffffffffffffffff80821115610b4e57600080fd5b610b5a88838901610a8d565b9550602087013594506040870135915080821115610b7757600080fd5b50610b8487828801610a8d565b949793965093946060013593505050565b60008060408385031215610ba857600080fd5b823567ffffffffffffffff811115610bbf57600080fd5b610bcb85828601610a8d565b95602094909401359450505050565b600080600060608486031215610bef57600080fd5b8335610bfa81610983565b9250602084013567ffffffffffffffff811115610c1657600080fd5b610c2286828701610a8d565b925050604084013590509250925092565b60005b83811015610c4e578181015183820152602001610c36565b50506000910152565b600060208284031215610c6957600080fd5b815167ffffffffffffffff811115610c8057600080fd5b8201601f81018413610c9157600080fd5b8051610c9f610aac82610a47565b818152856020838501011115610cb457600080fd5b610437826020830160208601610c33565b600060208284031215610cd757600080fd5b5051919050565b60008251610cf0818460208701610c33565b9190910192915050565b6040815260008351806040840152610d19816060850160208801610c33565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fea26469706673582212200cc1adb6cc184c8a8274187e44f37df658c2711379d934ed8f35b1fd3868654164736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.