Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
Multi Chain
Multichain Addresses
6 addresses found via
Latest 25 from a total of 711 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Deposit ETH | 9758513 | 58 mins ago | IN | 0.1 ETH | 0.00087979 | ||||
Deposit ERC20 | 9755884 | 12 hrs 6 mins ago | IN | 0 ETH | 0.00077061 | ||||
Deposit ERC20 | 9755879 | 12 hrs 7 mins ago | IN | 0 ETH | 0.00056842 | ||||
Deposit ERC20 | 9755759 | 12 hrs 37 mins ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ERC20 | 9755424 | 14 hrs 1 min ago | IN | 0 ETH | 0.00076345 | ||||
Deposit ERC20 | 9755418 | 14 hrs 2 mins ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ERC20 | 9755406 | 14 hrs 5 mins ago | IN | 0 ETH | 0.00056842 | ||||
Deposit ERC20 | 9755399 | 14 hrs 7 mins ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ERC20 | 9755394 | 14 hrs 8 mins ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ETH | 9752133 | 1 day 3 hrs ago | IN | 1 wei | 0.0008797 | ||||
Deposit ERC20 | 9744489 | 2 days 11 hrs ago | IN | 0 ETH | 0.00078529 | ||||
Deposit ERC20 | 9744476 | 2 days 11 hrs ago | IN | 0 ETH | 0.00153938 | ||||
Deposit ERC20 | 9744265 | 2 days 12 hrs ago | IN | 0 ETH | 0.00102748 | ||||
Deposit ERC20 | 9744253 | 2 days 12 hrs ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ERC20 | 9744238 | 2 days 12 hrs ago | IN | 0 ETH | 0.00042631 | ||||
Deposit ETH | 9741564 | 2 days 23 hrs ago | IN | 0.02 ETH | 0.00087979 | ||||
Deposit ETH | 9741511 | 2 days 23 hrs ago | IN | 0.01 ETH | 0.00087979 | ||||
Deposit ETH | 9741005 | 3 days 1 hr ago | IN | 0.00023 ETH | 0.0008797 | ||||
Deposit ETH | 9740925 | 3 days 2 hrs ago | IN | 0.00123 ETH | 0.00087979 | ||||
Deposit ETH | 9740816 | 3 days 2 hrs ago | IN | 0.000069 ETH | 0.00087979 | ||||
Deposit ETH | 9740631 | 3 days 3 hrs ago | IN | 0.001 ETH | 0.0008797 | ||||
Deposit ETH | 9730439 | 4 days 22 hrs ago | IN | 1 wei | 0.00087979 | ||||
Deposit ETH To | 9728485 | 5 days 6 hrs ago | IN | 1 wei | 0 | ||||
Deposit ETH | 9727941 | 5 days 8 hrs ago | IN | 0.1 ETH | 0.00087979 | ||||
Deposit ETH | 9726234 | 5 days 15 hrs ago | IN | 0.1 ETH | 0.00087979 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
9758513 | 58 mins ago | 0.1 ETH | ||||
9758513 | 58 mins ago | 0.1 ETH | ||||
9758513 | 58 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755884 | 12 hrs 6 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755879 | 12 hrs 7 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755759 | 12 hrs 37 mins ago | 0 ETH | ||||
9755424 | 14 hrs 1 min ago | 0 ETH | ||||
9755424 | 14 hrs 1 min ago | 0 ETH | ||||
9755424 | 14 hrs 1 min ago | 0 ETH | ||||
9755424 | 14 hrs 1 min ago | 0 ETH |
Loading...
Loading
Contract Name:
L1ChugSplashProxy
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.15; /** * @title IL1ChugSplashDeployer */ interface IL1ChugSplashDeployer { function isUpgrading() external view returns (bool); } /** * @custom:legacy * @title L1ChugSplashProxy * @notice Basic ChugSplash proxy contract for L1. Very close to being a normal proxy but has added * functions `setCode` and `setStorage` for changing the code or storage of the contract. * * Note for future developers: do NOT make anything in this contract 'public' unless you * know what you're doing. Anything public can potentially have a function signature that * conflicts with a signature attached to the implementation contract. Public functions * SHOULD always have the `proxyCallIfNotOwner` modifier unless there's some *really* good * reason not to have that modifier. And there almost certainly is not a good reason to not * have that modifier. Beware! */ contract L1ChugSplashProxy { /** * @notice "Magic" prefix. When prepended to some arbitrary bytecode and used to create a * contract, the appended bytecode will be deployed as given. */ bytes13 internal constant DEPLOY_CODE_PREFIX = 0x600D380380600D6000396000f3; /** * @notice bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1) */ bytes32 internal constant IMPLEMENTATION_KEY = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @notice bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1) */ bytes32 internal constant OWNER_KEY = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; /** * @notice Blocks a function from being called when the parent signals that the system should * be paused via an isUpgrading function. */ modifier onlyWhenNotPaused() { address owner = _getOwner(); // We do a low-level call because there's no guarantee that the owner actually *is* an // L1ChugSplashDeployer contract and Solidity will throw errors if we do a normal call and // it turns out that it isn't the right type of contract. (bool success, bytes memory returndata) = owner.staticcall( abi.encodeWithSelector(IL1ChugSplashDeployer.isUpgrading.selector) ); // If the call was unsuccessful then we assume that there's no "isUpgrading" method and we // can just continue as normal. We also expect that the return value is exactly 32 bytes // long. If this isn't the case then we can safely ignore the result. if (success && returndata.length == 32) { // Although the expected value is a *boolean*, it's safer to decode as a uint256 in the // case that the isUpgrading function returned something other than 0 or 1. But we only // really care about the case where this value is 0 (= false). uint256 ret = abi.decode(returndata, (uint256)); require(ret == 0, "L1ChugSplashProxy: system is currently being upgraded"); } _; } /** * @notice Makes a proxy call instead of triggering the given function when the caller is * either the owner or the zero address. Caller can only ever be the zero address if * this function is being called off-chain via eth_call, which is totally fine and can * be convenient for client-side tooling. Avoids situations where the proxy and * implementation share a sighash and the proxy function ends up being called instead * of the implementation one. * * Note: msg.sender == address(0) can ONLY be triggered off-chain via eth_call. If * there's a way for someone to send a transaction with msg.sender == address(0) in any * real context then we have much bigger problems. Primary reason to include this * additional allowed sender is because the owner address can be changed dynamically * and we do not want clients to have to keep track of the current owner in order to * make an eth_call that doesn't trigger the proxied contract. */ // slither-disable-next-line incorrect-modifier modifier proxyCallIfNotOwner() { if (msg.sender == _getOwner() || msg.sender == address(0)) { _; } else { // This WILL halt the call frame on completion. _doProxyCall(); } } /** * @param _owner Address of the initial contract owner. */ constructor(address _owner) { _setOwner(_owner); } // slither-disable-next-line locked-ether receive() external payable { // Proxy call by default. _doProxyCall(); } // slither-disable-next-line locked-ether fallback() external payable { // Proxy call by default. _doProxyCall(); } /** * @notice Sets the code that should be running behind this proxy. * * Note: This scheme is a bit different from the standard proxy scheme where one would * typically deploy the code separately and then set the implementation address. We're * doing it this way because it gives us a lot more freedom on the client side. Can * only be triggered by the contract owner. * * @param _code New contract code to run inside this contract. */ function setCode(bytes memory _code) external proxyCallIfNotOwner { // Get the code hash of the current implementation. address implementation = _getImplementation(); // If the code hash matches the new implementation then we return early. if (keccak256(_code) == _getAccountCodeHash(implementation)) { return; } // Create the deploycode by appending the magic prefix. bytes memory deploycode = abi.encodePacked(DEPLOY_CODE_PREFIX, _code); // Deploy the code and set the new implementation address. address newImplementation; assembly { newImplementation := create(0x0, add(deploycode, 0x20), mload(deploycode)) } // Check that the code was actually deployed correctly. I'm not sure if you can ever // actually fail this check. Should only happen if the contract creation from above runs // out of gas but this parent execution thread does NOT run out of gas. Seems like we // should be doing this check anyway though. require( _getAccountCodeHash(newImplementation) == keccak256(_code), "L1ChugSplashProxy: code was not correctly deployed" ); _setImplementation(newImplementation); } /** * @notice Modifies some storage slot within the proxy contract. Gives us a lot of power to * perform upgrades in a more transparent way. Only callable by the owner. * * @param _key Storage key to modify. * @param _value New value for the storage key. */ function setStorage(bytes32 _key, bytes32 _value) external proxyCallIfNotOwner { assembly { sstore(_key, _value) } } /** * @notice Changes the owner of the proxy contract. Only callable by the owner. * * @param _owner New owner of the proxy contract. */ function setOwner(address _owner) external proxyCallIfNotOwner { _setOwner(_owner); } /** * @notice Queries the owner of the proxy contract. Can only be called by the owner OR by * making an eth_call and setting the "from" address to address(0). * * @return Owner address. */ function getOwner() external proxyCallIfNotOwner returns (address) { return _getOwner(); } /** * @notice Queries the implementation address. Can only be called by the owner OR by making an * eth_call and setting the "from" address to address(0). * * @return Implementation address. */ function getImplementation() external proxyCallIfNotOwner returns (address) { return _getImplementation(); } /** * @notice Sets the implementation address. * * @param _implementation New implementation address. */ function _setImplementation(address _implementation) internal { assembly { sstore(IMPLEMENTATION_KEY, _implementation) } } /** * @notice Changes the owner of the proxy contract. * * @param _owner New owner of the proxy contract. */ function _setOwner(address _owner) internal { assembly { sstore(OWNER_KEY, _owner) } } /** * @notice Performs the proxy call via a delegatecall. */ function _doProxyCall() internal onlyWhenNotPaused { address implementation = _getImplementation(); require(implementation != address(0), "L1ChugSplashProxy: implementation is not set yet"); assembly { // Copy calldata into memory at 0x0....calldatasize. calldatacopy(0x0, 0x0, calldatasize()) // Perform the delegatecall, make sure to pass all available gas. let success := delegatecall(gas(), implementation, 0x0, calldatasize(), 0x0, 0x0) // Copy returndata into memory at 0x0....returndatasize. Note that this *will* // overwrite the calldata that we just copied into memory but that doesn't really // matter because we'll be returning in a second anyway. returndatacopy(0x0, 0x0, returndatasize()) // Success == 0 means a revert. We'll revert too and pass the data up. if iszero(success) { revert(0x0, returndatasize()) } // Otherwise we'll just return and pass the data up. return(0x0, returndatasize()) } } /** * @notice Queries the implementation address. * * @return Implementation address. */ function _getImplementation() internal view returns (address) { address implementation; assembly { implementation := sload(IMPLEMENTATION_KEY) } return implementation; } /** * @notice Queries the owner of the proxy contract. * * @return Owner address. */ function _getOwner() internal view returns (address) { address owner; assembly { owner := sload(OWNER_KEY) } return owner; } /** * @notice Gets the code hash for a given account. * * @param _account Address of the account to get a code hash for. * * @return Code hash for the account. */ function _getAccountCodeHash(address _account) internal view returns (bytes32) { bytes32 codeHash; assembly { codeHash := extcodehash(_account) } return codeHash; } }
{ "remappings": [ "@eth-optimism-bedrock/=lib/optimism.git/packages/contracts-bedrock/", "@gnosissafe/contracts/=lib/safe-contracts/contracts/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@rari-capital/solmate/=lib/solmate.git/", "ds-test/=lib/solmate.git/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "optimism.git/=lib/optimism.git/", "optimism/=lib/optimism/", "safe-contracts/=lib/safe-contracts/contracts/", "solmate.git/=lib/solmate.git/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_code","type":"bytes"}],"name":"setCode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"setStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161082038038061082083398101604081905261002f9161005d565b610057817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b5061008d565b60006020828403121561006f57600080fd5b81516001600160a01b038116811461008657600080fd5b9392505050565b6107848061009c6000396000f3fe60806040526004361061004e5760003560e01c806313af4035146100655780636c5d4ad014610085578063893d20e8146100a55780639b0b0fda146100d6578063aaf10f42146100f65761005d565b3661005d5761005b61010b565b005b61005b61010b565b34801561007157600080fd5b5061005b610080366004610565565b6102f9565b34801561009157600080fd5b5061005b6100a03660046105ab565b61034c565b3480156100b157600080fd5b506100ba61047c565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e257600080fd5b5061005b6100f136600461065c565b6104d5565b34801561010257600080fd5b506100ba610517565b600061012360008051602061070f8339815191525490565b60408051600481526024810182526020810180516001600160e01b0316635bca393160e11b179052905191925060009182916001600160a01b0385169161016a91906106b9565b600060405180830381855afa9150503d80600081146101a5576040519150601f19603f3d011682016040523d82523d6000602084013e6101aa565b606091505b50915091508180156101bd575080516020145b1561024d576000818060200190518101906101d891906106c5565b9050801561024b5760405162461bcd60e51b815260206004820152603560248201527f4c314368756753706c61736850726f78793a2073797374656d206973206375726044820152741c995b9d1b1e4818995a5b99c81d5c19dc98591959605a1b60648201526084015b60405180910390fd5b505b600061026560008051602061072f8339815191525490565b90506001600160a01b0381166102d65760405162461bcd60e51b815260206004820152603060248201527f4c314368756753706c61736850726f78793a20696d706c656d656e746174696f60448201526f1b881a5cc81b9bdd081cd95d081e595d60821b6064820152608401610242565b3660008037600080366000845af43d6000803e806102f3573d6000fd5b503d6000f35b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610326575033155b15610344576103418160008051602061070f83398151915255565b50565b61034161010b565b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610379575033155b1561034457600061039660008051602061072f8339815191525490565b9050803f82516020840120036103aa575050565b6040516000906103d0906c600d380380600d6000396000f360981b9085906020016106de565b604051602081830303815290604052905060008151602083016000f084516020860120909150813f146104605760405162461bcd60e51b815260206004820152603260248201527f4c314368756753706c61736850726f78793a20636f646520776173206e6f742060448201527118dbdc9c9958dd1b1e4819195c1b1bde595960721b6064820152608401610242565b6104768160008051602061072f83398151915255565b50505050565b600061049460008051602061070f8339815191525490565b6001600160a01b0316336001600160a01b031614806104b1575033155b156104ca575060008051602061070f8339815191525490565b6104d261010b565b90565b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610502575033155b1561050b579055565b61051361010b565b5050565b600061052f60008051602061070f8339815191525490565b6001600160a01b0316336001600160a01b0316148061054c575033155b156104ca575060008051602061072f8339815191525490565b60006020828403121561057757600080fd5b81356001600160a01b038116811461058e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105bd57600080fd5b813567ffffffffffffffff808211156105d557600080fd5b818401915084601f8301126105e957600080fd5b8135818111156105fb576105fb610595565b604051601f8201601f19908116603f0116810190838211818310171561062357610623610595565b8160405282815287602084870101111561063c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806040838503121561066f57600080fd5b50508035926020909101359150565b6000815160005b8181101561069f5760208185018101518683015201610685565b818111156106ae576000828601525b509290920192915050565b600061058e828461067e565b6000602082840312156106d757600080fd5b5051919050565b72ffffffffffffffffffffffffffffffffffffff19831681526000610706600d83018461067e565b94935050505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e8be0399db17ec00d80d60d44047d4a51a7e6c568104a5656a8d13e96350e7a864736f6c634300080f0033000000000000000000000000833994eb0f293c4b314d94610cf2b5e57e061e41
Deployed Bytecode
0x60806040526004361061004e5760003560e01c806313af4035146100655780636c5d4ad014610085578063893d20e8146100a55780639b0b0fda146100d6578063aaf10f42146100f65761005d565b3661005d5761005b61010b565b005b61005b61010b565b34801561007157600080fd5b5061005b610080366004610565565b6102f9565b34801561009157600080fd5b5061005b6100a03660046105ab565b61034c565b3480156100b157600080fd5b506100ba61047c565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e257600080fd5b5061005b6100f136600461065c565b6104d5565b34801561010257600080fd5b506100ba610517565b600061012360008051602061070f8339815191525490565b60408051600481526024810182526020810180516001600160e01b0316635bca393160e11b179052905191925060009182916001600160a01b0385169161016a91906106b9565b600060405180830381855afa9150503d80600081146101a5576040519150601f19603f3d011682016040523d82523d6000602084013e6101aa565b606091505b50915091508180156101bd575080516020145b1561024d576000818060200190518101906101d891906106c5565b9050801561024b5760405162461bcd60e51b815260206004820152603560248201527f4c314368756753706c61736850726f78793a2073797374656d206973206375726044820152741c995b9d1b1e4818995a5b99c81d5c19dc98591959605a1b60648201526084015b60405180910390fd5b505b600061026560008051602061072f8339815191525490565b90506001600160a01b0381166102d65760405162461bcd60e51b815260206004820152603060248201527f4c314368756753706c61736850726f78793a20696d706c656d656e746174696f60448201526f1b881a5cc81b9bdd081cd95d081e595d60821b6064820152608401610242565b3660008037600080366000845af43d6000803e806102f3573d6000fd5b503d6000f35b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610326575033155b15610344576103418160008051602061070f83398151915255565b50565b61034161010b565b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610379575033155b1561034457600061039660008051602061072f8339815191525490565b9050803f82516020840120036103aa575050565b6040516000906103d0906c600d380380600d6000396000f360981b9085906020016106de565b604051602081830303815290604052905060008151602083016000f084516020860120909150813f146104605760405162461bcd60e51b815260206004820152603260248201527f4c314368756753706c61736850726f78793a20636f646520776173206e6f742060448201527118dbdc9c9958dd1b1e4819195c1b1bde595960721b6064820152608401610242565b6104768160008051602061072f83398151915255565b50505050565b600061049460008051602061070f8339815191525490565b6001600160a01b0316336001600160a01b031614806104b1575033155b156104ca575060008051602061070f8339815191525490565b6104d261010b565b90565b60008051602061070f833981519152546001600160a01b0316336001600160a01b03161480610502575033155b1561050b579055565b61051361010b565b5050565b600061052f60008051602061070f8339815191525490565b6001600160a01b0316336001600160a01b0316148061054c575033155b156104ca575060008051602061072f8339815191525490565b60006020828403121561057757600080fd5b81356001600160a01b038116811461058e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105bd57600080fd5b813567ffffffffffffffff808211156105d557600080fd5b818401915084601f8301126105e957600080fd5b8135818111156105fb576105fb610595565b604051601f8201601f19908116603f0116810190838211818310171561062357610623610595565b8160405282815287602084870101111561063c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806040838503121561066f57600080fd5b50508035926020909101359150565b6000815160005b8181101561069f5760208185018101518683015201610685565b818111156106ae576000828601525b509290920192915050565b600061058e828461067e565b6000602082840312156106d757600080fd5b5051919050565b72ffffffffffffffffffffffffffffffffffffff19831681526000610706600d83018461067e565b94935050505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e8be0399db17ec00d80d60d44047d4a51a7e6c568104a5656a8d13e96350e7a864736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000833994eb0f293c4b314d94610cf2b5e57e061e41
-----Decoded View---------------
Arg [0] : _owner (address): 0x833994EB0F293C4B314D94610cf2b5E57E061e41
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000833994eb0f293c4b314d94610cf2b5e57e061e41
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.