Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
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 Source Code Verified (Exact Match)
Contract Name:
g8keepBondingCurveFactoryConfiguration
Compiler Version
v0.8.26+commit.8a97fa7a
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.26; import {Ownable} from "solady/auth/Ownable.sol"; /** * @title g8keepBondingCurveFactoryConfiguration * @notice Configuration contract for factory deployment to allow deterministic * @notice addresses across chains that have different Uniswap addresses. */ contract g8keepBondingCurveFactoryConfiguration is Ownable { address private g8keepBondingCurveFactoryAdmin; address private g8keepFeeWallet; address private uniswapPositionManager; uint24 private uniswapFeeTier; error ZeroAddress(); constructor(address _configurationOwner) { _initializeOwner(_configurationOwner); } function setBondingCurveFactoryConfiguration( address _g8keepFactoryAdmin, address _g8keepFeeWallet, address _uniswapPositionManager, uint24 _uniswapFeeTier ) external onlyOwner { if ( _g8keepFactoryAdmin == address(0) || _g8keepFeeWallet == address(0) || _uniswapPositionManager == address(0) || _uniswapFeeTier == 0 ) { revert ZeroAddress(); } g8keepBondingCurveFactoryAdmin = _g8keepFactoryAdmin; g8keepFeeWallet = _g8keepFeeWallet; uniswapPositionManager = _uniswapPositionManager; uniswapFeeTier = _uniswapFeeTier; } function getBondingCurveFactoryConfiguration() external view returns ( address _g8keepBondingCurveFactoryAdmin, address _g8keepFeeWallet, address _uniswapPositionManager, uint24 _uniswapFeeTier ) { _g8keepBondingCurveFactoryAdmin = g8keepBondingCurveFactoryAdmin; _g8keepFeeWallet = g8keepFeeWallet; _uniswapPositionManager = uniswapPositionManager; _uniswapFeeTier = uniswapFeeTier; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice Simple single owner authorization mixin. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol) /// /// @dev Note: /// This implementation does NOT auto-initialize the owner to `msg.sender`. /// You MUST call the `_initializeOwner` in the constructor / initializer. /// /// While the ownable portion follows /// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility, /// the nomenclature for the 2-step ownership handover may be unique to this codebase. abstract contract Ownable { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The caller is not authorized to call the function. error Unauthorized(); /// @dev The `newOwner` cannot be the zero address. error NewOwnerIsZeroAddress(); /// @dev The `pendingOwner` does not have a valid handover request. error NoHandoverRequest(); /// @dev Cannot double-initialize. error AlreadyInitialized(); /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EVENTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The ownership is transferred from `oldOwner` to `newOwner`. /// This event is intentionally kept the same as OpenZeppelin's Ownable to be /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), /// despite it not being as lightweight as a single argument event. event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); /// @dev An ownership handover to `pendingOwner` has been requested. event OwnershipHandoverRequested(address indexed pendingOwner); /// @dev The ownership handover to `pendingOwner` has been canceled. event OwnershipHandoverCanceled(address indexed pendingOwner); /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`. uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE = 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0; /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE = 0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d; /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`. uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE = 0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* STORAGE */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The owner slot is given by: /// `bytes32(~uint256(uint32(bytes4(keccak256("_OWNER_SLOT_NOT")))))`. /// It is intentionally chosen to be a high value /// to avoid collision with lower slots. /// The choice of manual storage layout is to enable compatibility /// with both regular and upgradeable contracts. bytes32 internal constant _OWNER_SLOT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927; /// The ownership handover slot of `newOwner` is given by: /// ``` /// mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED)) /// let handoverSlot := keccak256(0x00, 0x20) /// ``` /// It stores the expiry timestamp of the two-step ownership handover. uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* INTERNAL FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Override to return true to make `_initializeOwner` prevent double-initialization. function _guardInitializeOwner() internal pure virtual returns (bool guard) {} /// @dev Initializes the owner directly without authorization guard. /// This function must be called upon initialization, /// regardless of whether the contract is upgradeable or not. /// This is to enable generalization to both regular and upgradeable contracts, /// and to save gas in case the initial owner is not the caller. /// For performance reasons, this function will not check if there /// is an existing owner. function _initializeOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT if sload(ownerSlot) { mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`. revert(0x1c, 0x04) } // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } else { /// @solidity memory-safe-assembly assembly { // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Store the new value. sstore(_OWNER_SLOT, newOwner) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner) } } } /// @dev Sets the owner directly without authorization guard. function _setOwner(address newOwner) internal virtual { if (_guardInitializeOwner()) { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner)))) } } else { /// @solidity memory-safe-assembly assembly { let ownerSlot := _OWNER_SLOT // Clean the upper 96 bits. newOwner := shr(96, shl(96, newOwner)) // Emit the {OwnershipTransferred} event. log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner) // Store the new value. sstore(ownerSlot, newOwner) } } } /// @dev Throws if the sender is not the owner. function _checkOwner() internal view virtual { /// @solidity memory-safe-assembly assembly { // If the caller is not the stored owner, revert. if iszero(eq(caller(), sload(_OWNER_SLOT))) { mstore(0x00, 0x82b42900) // `Unauthorized()`. revert(0x1c, 0x04) } } } /// @dev Returns how long a two-step ownership handover is valid for in seconds. /// Override to return a different value if needed. /// Made internal to conserve bytecode. Wrap it in a public function if needed. function _ownershipHandoverValidFor() internal view virtual returns (uint64) { return 48 * 3600; } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC UPDATE FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Allows the owner to transfer the ownership to `newOwner`. function transferOwnership(address newOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { if iszero(shl(96, newOwner)) { mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`. revert(0x1c, 0x04) } } _setOwner(newOwner); } /// @dev Allows the owner to renounce their ownership. function renounceOwnership() public payable virtual onlyOwner { _setOwner(address(0)); } /// @dev Request a two-step ownership handover to the caller. /// The request will automatically expire in 48 hours (172800 seconds) by default. function requestOwnershipHandover() public payable virtual { unchecked { uint256 expires = block.timestamp + _ownershipHandoverValidFor(); /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to `expires`. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), expires) // Emit the {OwnershipHandoverRequested} event. log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller()) } } } /// @dev Cancels the two-step ownership handover to the caller, if any. function cancelOwnershipHandover() public payable virtual { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, caller()) sstore(keccak256(0x0c, 0x20), 0) // Emit the {OwnershipHandoverCanceled} event. log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller()) } } /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`. /// Reverts if there is no existing ownership handover requested by `pendingOwner`. function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner { /// @solidity memory-safe-assembly assembly { // Compute and set the handover slot to 0. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) let handoverSlot := keccak256(0x0c, 0x20) // If the handover does not exist, or has expired. if gt(timestamp(), sload(handoverSlot)) { mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`. revert(0x1c, 0x04) } // Set the handover slot to 0. sstore(handoverSlot, 0) } _setOwner(pendingOwner); } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* PUBLIC READ FUNCTIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Returns the owner of the contract. function owner() public view virtual returns (address result) { /// @solidity memory-safe-assembly assembly { result := sload(_OWNER_SLOT) } } /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`. function ownershipHandoverExpiresAt(address pendingOwner) public view virtual returns (uint256 result) { /// @solidity memory-safe-assembly assembly { // Compute the handover slot. mstore(0x0c, _HANDOVER_SLOT_SEED) mstore(0x00, pendingOwner) // Load the handover slot. result := sload(keccak256(0x0c, 0x20)) } } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* MODIFIERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Marks a function as only callable by the owner. modifier onlyOwner() virtual { _checkOwner(); _; } }
{ "viaIR": false, "codegen": "yul", "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solady/=lib/solady/src/", "solmate/=lib/solmate/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
[{"inputs":[{"internalType":"address","name":"_configurationOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBondingCurveFactoryConfiguration","outputs":[{"internalType":"address","name":"_g8keepBondingCurveFactoryAdmin","type":"address"},{"internalType":"address","name":"_g8keepFeeWallet","type":"address"},{"internalType":"address","name":"_uniswapPositionManager","type":"address"},{"internalType":"uint24","name":"_uniswapFeeTier","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_g8keepFactoryAdmin","type":"address"},{"internalType":"address","name":"_g8keepFeeWallet","type":"address"},{"internalType":"address","name":"_uniswapPositionManager","type":"address"},{"internalType":"uint24","name":"_uniswapFeeTier","type":"uint24"}],"name":"setBondingCurveFactoryConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100008f2501217ab316b5e93c0e4f4b4e9e6ea32e6ecfaf8b9af708f1bc8ce8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000004df78e3a20c706d10c31e8d25d0a14c3b730770a
Deployed Bytecode
0x0003000000000002000000600310027000000066033001970000000100200190000000260000c13d0000008002000039000000400020043f000000040030008c000001480000413d000000000201043b000000e0022002700000006e0020009c0000005c0000a13d0000006f0020009c000000890000a13d000000700020009c000000af0000613d000000710020009c000001420000613d000000720020009c000001480000c13d000000240030008c000001480000413d0000000002000416000000000002004b000001480000c13d0000000401100370000000000101043b000000690010009c000001480000213d0000007a020000410000000c0020043f000000000010043f0192017b0000040f000000000101041a000000800010043f0000007b01000041000001930001042e0000000002000416000000000002004b000001480000c13d0000001f0230003900000067022001970000008002200039000000400020043f0000001f0430018f00000068053001980000008002500039000000370000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b000000330000c13d000000000004004b000000440000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000001480000413d000000800600043d000000690060009c000001480000213d0000006a01000041000000000061041b0000000001000414000000660010009c0000006601008041000000c0011002100000006b011001c70000800d0200003900000003030000390000006c040000410000000005000019019201880000040f0000000100200190000001480000613d0000002001000039000001000010044300000120000004430000006d01000041000001930001042e000000750020009c000000960000213d000000780020009c000000dd0000613d000000790020009c000001480000c13d0000007a010000410000000c0010043f0000000001000411000000000010043f0000007f0100004100000000001004430000000001000414000000660010009c0000006601008041000000c00110021000000080011001c70000800b020000390192018d0000040f00000001002001900000014a0000613d000000000101043b000300000001001d0000000001000414000000660010009c0000006601008041000000c0011002100000007e011001c700008010020000390192018d0000040f0000000100200190000001480000613d000000000101043b00000003020000290000008a0220009a000000000021041b0000000001000414000000660010009c0000006601008041000000c0011002100000006b011001c70000800d0200003900000002030000390000008b040000410000013c0000013d000000730020009c000000f00000613d000000740020009c000001480000c13d0000000001000416000000000001004b000001480000c13d0000006a01000041000000000101041a0000006901100197000000800010043f0000007b01000041000001930001042e000000760020009c000001250000613d000000770020009c000001480000c13d0000006a01000041000000000501041a0000000001000411000000000051004b000001560000c13d0000000001000414000000660010009c0000006601008041000000c0011002100000006b011001c70000800d0200003900000003030000390000006c040000410000000006000019019201880000040f0000000100200190000001480000613d0000006a01000041000000000001041b0000000001000019000001930001042e000000240030008c000001480000413d0000000401100370000000000301043b000000690030009c000001480000213d0000006a01000041000000000101041a0000000002000411000000000012004b000001560000c13d0000007a010000410000000c0010043f000000000030043f0000000001000414000000660010009c0000006601008041000000c0011002100000007e011001c70000801002000039000300000003001d0192018d0000040f0000000100200190000001480000613d000000000101043b000100000001001d000000000101041a000200000001001d0000007f0100004100000000001004430000000001000414000000660010009c0000006601008041000000c00110021000000080011001c70000800b020000390192018d0000040f00000001002001900000014a0000613d000000000101043b000000020010006c0000015a0000a13d0000008101000041000000000010043f0000007d0100004100000194000104300000000001000416000000000001004b000001480000c13d0000000201000039000000000101041a0000000102000039000000000202041a000000000300041a0000006903300197000000800030043f0000006902200197000000a00020043f0000006902100197000000c00020043f000000a0011002700000008201100197000000e00010043f0000008c01000041000001930001042e000000840030008c000001480000413d0000000002000416000000000002004b000001480000c13d0000000402100370000000000202043b000000690020009c000001480000213d0000002403100370000000000303043b000000690030009c000001480000213d0000004404100370000000000404043b000000690040009c000001480000213d0000006401100370000000000101043b000000820010009c000001480000213d0000006a05000041000000000505041a0000000006000411000000000056004b000001560000c13d000000000002004b000001600000613d0000006905300198000001600000613d0000006903400198000001600000613d0000008200100198000001600000613d000000000400041a0000008304400197000000000224019f000000000020041b0000000102000039000000000402041a0000008304400197000000000454019f000000000042041b000000a00110021000000084011001970000000202000039000000000402041a0000008504400197000000000141019f000000000131019f000000000012041b0000000001000019000001930001042e0000007a010000410000000c0010043f0000000001000411000000000010043f0000000001000414000000660010009c0000006601008041000000c0011002100000007e011001c700008010020000390192018d0000040f0000000100200190000001480000613d000000000101043b000000000001041b0000000001000414000000660010009c0000006601008041000000c0011002100000006b011001c70000800d02000039000000020300003900000089040000410000000005000411019201880000040f0000000100200190000001480000613d0000000001000019000001930001042e000000240030008c000001480000413d0000000401100370000000000101043b000000690010009c0000014b0000a13d00000000010000190000019400010430000000000001042f0000006a02000041000000000202041a0000000003000411000000000023004b000001560000c13d000000000001004b0000015d0000c13d0000007c01000041000000000010043f0000007d0100004100000194000104300000008801000041000000000010043f0000007d0100004100000194000104300000000101000029000000000001041b0000000301000029019201640000040f0000000001000019000001930001042e0000008601000041000000000010043f0000008701000041000001940001043000010000000000020000006a02000041000000000502041a00000000020004140000006906100197000000660020009c0000006602008041000000c0012002100000006b011001c70000800d0200003900000003030000390000006c04000041000100000006001d019201880000040f0000000100200190000001780000613d0000006a010000410000000102000029000000000021041b000000000001042d00000000010000190000019400010430000000000001042f0000000001000414000000660010009c0000006601008041000000c0011002100000007e011001c700008010020000390192018d0000040f0000000100200190000001860000613d000000000101043b000000000001042d000000000100001900000194000104300000018b002104210000000102000039000000000001042d0000000002000019000000000001042d00000190002104230000000102000039000000000001042d0000000002000019000000000001042d0000019200000432000001930001042e000001940001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392702000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000079b341bb00000000000000000000000000000000000000000000000000000000f04e283d00000000000000000000000000000000000000000000000000000000f04e283e00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000fee81cf40000000000000000000000000000000000000000000000000000000079b341bc000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000054d1f13c0000000000000000000000000000000000000000000000000000000054d1f13d00000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000000000000000000000011ef6d27000000000000000000000000000000000000000000000000000000002569296200000000000000000000000000000000000000000000000000000000389a75e10000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000007448fbae00000000000000000000000000000000000000040000001c000000000000000002000000000000000000000000000000000000200000000c0000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000006f5e88180000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000ffffff0000000000000000000000000000000000000000ffffffffffffffffff0000000000000000000000000000000000000000000000d92e233d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000082b42900fa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd5d00dbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d00000000000000000000000000000000000000800000008000000000000000000000000000000000000000000000000000000000000000000000000000000000f3213df9de7e22a2ac2a067bed49fa489bc557637ad2646c34ee92f8147f0cad
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004df78e3a20c706d10c31e8d25d0a14c3b730770a
-----Decoded View---------------
Arg [0] : _configurationOwner (address): 0x4Df78e3A20c706D10C31e8D25D0a14c3B730770A
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004df78e3a20c706d10c31e8d25d0a14c3b730770a
Loading...
Loading
Loading...
Loading
[ 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.