Source Code
Overview
ETH Balance
0.000215850208383879 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 227 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Execute | 36369573 | 91 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 36369571 | 91 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36369568 | 91 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36331471 | 92 days ago | IN | 0 ETH | 0.00000062 | ||||
| Execute | 36331468 | 92 days ago | IN | 0 ETH | 0.00000072 | ||||
| Execute | 36331380 | 92 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 36331377 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36331375 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36331040 | 92 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 36331037 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36331035 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36330733 | 92 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 36330731 | 92 days ago | IN | 0 ETH | 0.00000042 | ||||
| Execute | 36330729 | 92 days ago | IN | 0 ETH | 0.00000037 | ||||
| Execute | 36330727 | 92 days ago | IN | 0 ETH | 0.00000036 | ||||
| Execute | 36330724 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36330722 | 92 days ago | IN | 0 ETH | 0.00000008 | ||||
| Execute | 36330415 | 92 days ago | IN | 0 ETH | 0.00000007 | ||||
| Execute | 36330412 | 92 days ago | IN | 0 ETH | 0.00000042 | ||||
| Execute | 36330408 | 92 days ago | IN | 0 ETH | 0.00000037 | ||||
| Execute | 36330405 | 92 days ago | IN | 0 ETH | 0.00000039 | ||||
| Execute | 36330403 | 92 days ago | IN | 0 ETH | 0.00000029 | ||||
| Execute | 36330399 | 92 days ago | IN | 0 ETH | 0.0000001 | ||||
| Execute | 36330395 | 92 days ago | IN | 0 ETH | 0.0000001 | ||||
| Execute | 36329875 | 92 days ago | IN | 0 ETH | 0.00000007 |
Latest 8 internal transactions
| Parent Transaction Hash | Block | From | To | Amount | ||
|---|---|---|---|---|---|---|
| 36065694 | 98 days ago | 0.00002076 ETH | ||||
| 36065587 | 98 days ago | 0.00000303 ETH | ||||
| 36065379 | 98 days ago | 0.00000303 ETH | ||||
| 36065194 | 98 days ago | 0.00000303 ETH | ||||
| 36065165 | 98 days ago | 0.00000591 ETH | ||||
| 36045151 | 99 days ago | 0.00002057 ETH | ||||
| 36045138 | 99 days ago | 0.00002777 ETH | ||||
| 36044755 | 99 days ago | Contract Creation | 0 ETH |
AA Transactions (ERC-4337)
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.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x02b5830f...A2d12430E The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Diamond
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 200 runs
Other Settings:
prague EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;
// solhint-disable ordering
import {IDiamondCut} from "../interfaces/IDiamondCut.sol";
import {Constants} from "./Constants.sol";
import {DiamondStorage} from "./DiamondStorage.sol";
/**
* @title Diamond
* @notice Core diamond proxy contract following EIP-2535
* @dev This is the only contract in the system that uses a constructor
* Storage is shared via DiamondStorage abstract contract
* The diamond delegates all function calls to registered facets
* @author CapSign Protocol Team
*/
contract Diamond is DiamondStorage {
// ============ Constructor ============
/**
* @notice Deploy a new diamond with initial facets
* @param _diamondCut Initial facet cuts to add
* @param _init Address of initialization contract (optional)
* @param _calldata Initialization call data (optional)
*/
constructor(
IDiamondCut.FacetCut[] memory _diamondCut,
address _init,
bytes memory _calldata
) payable {
// Perform diamond cut
diamondCut(_diamondCut);
// Emit DiamondCut event as per ERC-2535
emit IDiamondCut.DiamondCut(_diamondCut, _init, _calldata);
// Call initialization if provided
if (_init != address(0)) {
// Handle multi-init pattern
if (_init == Constants.MULTI_INIT_ADDRESS) {
IDiamondCut.MultiInit[] memory multiInitData = abi.decode(_calldata, (IDiamondCut.MultiInit[]));
uint256 length = multiInitData.length;
for (uint256 i = 0; i < length; i++) {
address initAddress = multiInitData[i].init;
// Check that init address has code
if (initAddress.code.length == 0) {
revert IDiamondCut.Diamond_InitializationFailed("");
}
(bool multiSuccess, bytes memory multiError) = initAddress.delegatecall(multiInitData[i].initData);
if (!multiSuccess) {
if (multiError.length > 0) {
// Bubble up the error from the initialization contract
assembly {
let returndata_size := mload(multiError)
revert(add(32, multiError), returndata_size)
}
} else {
revert IDiamondCut.Diamond_InitializationFailed(multiError);
}
}
}
} else {
// Handle single init
// Check that init address has code
if (_init.code.length == 0) {
revert IDiamondCut.Diamond_InitializationFailed("");
}
(bool success, bytes memory error) = _init.delegatecall(_calldata);
if (!success) {
if (error.length > 0) {
// Bubble up the error from the initialization contract
assembly {
let returndata_size := mload(error)
revert(add(32, error), returndata_size)
}
} else {
revert IDiamondCut.Diamond_InitializationFailed(error);
}
}
}
}
}
// ============ Fallback ============
/**
* @notice Fallback function that delegates calls to facets
* @dev Looks up the facet address for msg.sig and delegates via delegatecall
* Reverts if no facet is registered for the function selector
* All state modifications affect the diamond's storage, not the facet's
*/
fallback() external payable {
DiamondStorageLayout storage ds = getDiamondStorage();
address facet = ds.selectorInfo[msg.sig].facetAddress;
if (facet == address(0)) {
revert IDiamondCut.Diamond_FunctionDoesNotExist(msg.sig);
}
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
/**
* @notice Receive function to accept ETH transfers
* @dev Allows the diamond to receive ETH without calldata
*/
receive() external payable {}
// ============ Internal Diamond Cut ============
/**
* @notice Internal function to perform diamond cut during construction
* @dev Simplified version that only handles Add action during deployment
* Full diamond cut logic (Add/Replace/Remove) is in DiamondCutFacet
* @param _diamondCut Array of facet cuts to add during deployment
*/
function diamondCut(
IDiamondCut.FacetCut[] memory _diamondCut
) internal {
DiamondStorageLayout storage ds = getDiamondStorage();
uint256 length = _diamondCut.length;
for (uint256 facetIndex; facetIndex < length; facetIndex++) {
IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
bytes4[] memory functionSelectors = _diamondCut[facetIndex].functionSelectors;
address facetAddress = _diamondCut[facetIndex].facetAddress;
if (action == IDiamondCut.FacetCutAction.Add) {
uint16 selectorCount = uint16(ds.selectors.length);
for (uint256 selectorIndex; selectorIndex < functionSelectors.length; selectorIndex++) {
bytes4 selector = functionSelectors[selectorIndex];
ds.selectorInfo[selector] =
SelectorInfo({facetAddress: facetAddress, selectorPosition: selectorCount});
ds.selectors.push(selector);
selectorCount++;
}
}
}
}
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;
/**
* @title IDiamondCut
* @notice Interface for diamond modification operations
* @dev Implements ERC-2535 Diamond Standard for adding, replacing, and removing facets
* @author CapSign Protocol Team
*/
interface IDiamondCut {
// ============ Enums & Structs ============
/**
* @notice Types of facet modification operations
* @dev Add = 0: Add new function selectors to a facet
* Replace = 1: Replace existing function selectors with new facet
* Remove = 2: Remove function selectors from diamond
*/
enum FacetCutAction {
Add,
Replace,
Remove
}
/**
* @notice Represents a facet modification operation
* @dev Used to specify which functions to add, replace, or remove
* @param facetAddress Address of the facet contract (zero address for Remove action)
* @param action Type of operation to perform (Add, Replace, or Remove)
* @param functionSelectors Array of function selectors to modify
*/
struct FacetCut {
address facetAddress;
FacetCutAction action;
bytes4[] functionSelectors;
}
/**
* @notice Represents a multi-initialization call for diamond setup
* @dev Used to batch multiple initialization calls into a single transaction
* Each init contract will be delegatecalled with its corresponding initData
* @param init Address of the initialization contract
* @param initData Calldata for the initialization function
*/
struct MultiInit {
address init;
bytes initData;
}
// ============ Events ============
/**
* @notice Emitted when facets are added, replaced, or removed
* @dev This event enables off-chain tracking of all diamond modifications
* @param diamondCut Array of facet cuts that were performed
* @param init Address of initialization contract used (or address(0))
* @param data Initialization call data used (or empty bytes)
*/
event DiamondCut(FacetCut[] diamondCut, address init, bytes data);
// ============ Errors ============
/**
* @notice Thrown when no selectors provided for Add action
*/
error DiamondCut_NoSelectorsGivenToAdd();
/**
* @notice Thrown when facet cut has no selectors
* @param facet The facet address that was provided
*/
error DiamondCut_NoSelectorsProvidedForFacet(address facet);
/**
* @notice Thrown when trying to add selectors to zero address
* @param selectors The selectors that cannot be added
*/
error DiamondCut_CannotAddSelectorsToZeroAddress(bytes4[] selectors);
/**
* @notice Thrown when facet address has no bytecode
* @param facet The facet address with no code
* @param message Additional context message
*/
error DiamondCut_NoBytecodeAtAddress(address facet, string message);
/**
* @notice Thrown when trying to add a function that already exists
* @param selector The function selector that already exists
*/
error DiamondCut_FunctionAlreadyExists(bytes4 selector);
/**
* @notice Thrown when trying to replace functions from zero address
* @param selectors The selectors that cannot be replaced
*/
error DiamondCut_CannotReplaceFunctionsFromZeroAddress(bytes4[] selectors);
/**
* @notice Thrown when trying to replace function with same facet
* @param selector The function selector
*/
error DiamondCut_CannotReplaceFunctionWithSameFunctionFromSameFacet(bytes4 selector);
/**
* @notice Thrown when trying to replace a function that doesn't exist
* @param selector The function selector that doesn't exist
*/
error DiamondCut_CannotReplaceFunctionThatDoesNotExist(bytes4 selector);
/**
* @notice Thrown when remove action doesn't use zero address
* @param facet The non-zero facet address provided
*/
error DiamondCut_RemoveFacetAddressMustBeZeroAddress(address facet);
/**
* @notice Thrown when trying to remove a function that doesn't exist
* @param selector The function selector that doesn't exist
*/
error DiamondCut_CannotRemoveFunctionThatDoesNotExist(bytes4 selector);
/**
* @notice Thrown when initialization function reverts
* @param initAddress The initialization contract address
* @param data The calldata that caused the revert
*/
error DiamondCut_InitializationFunctionReverted(address initAddress, bytes data);
/**
* @notice Thrown when a function selector doesn't exist in the diamond
* @param selector The function selector that was called
*/
error Diamond_FunctionDoesNotExist(bytes4 selector);
/**
* @notice Thrown when diamond initialization fails
* @param error The error data from the failed initialization
*/
error Diamond_InitializationFailed(bytes error);
// ============ Functions ============
/**
* @notice Add/replace/remove facet functions from the diamond
* @dev Executes all cuts in sequence, then optionally calls initialization contract
* Emits DiamondCut event after successful execution
* Reverts if any cut fails or initialization fails
* @param _diamondCut Array of facet cuts to perform
* @param _init Address of initialization contract (or address(0) to skip initialization)
* @param _calldata Initialization call data (or empty bytes if no initialization)
* @custom:requires-auth Caller must have appropriate access control permissions
* @custom:security Initialization is executed via delegatecall, ensure init contract is trusted
* @custom:emits DiamondCut
*/
function diamondCut(
FacetCut[] calldata _diamondCut,
address _init,
bytes calldata _calldata
) external;
}// SPDX-License-Identifier: BUSL-1.1
// License details at https://github.com/capsign/protocol/blob/main/LICENSE
// Change Date: 2030-01-01
// Change License: MIT
pragma solidity ^0.8.30;
/**
* @title Constants
* @notice Global constants for the diamond system
* @author CapSign Inc.
*/
library Constants {
/**
* @notice Magic address to signal multi-initialization during diamond cut
* @dev When _init parameter equals this address, _calldata is decoded as MultiInit[]
* This allows multiple facet initializations in a single transaction
* This is a magic constant value, not a deployed contract address
*/
address internal constant MULTI_INIT_ADDRESS = 0xD1a302d1A302d1A302d1A302d1A302D1A302D1a3;
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.30;
/**
* @title DiamondStorage
* @notice Shared storage base for diamond and diamond facets
* @dev Abstract contract providing storage access helpers for diamond operations
* @author CapSign Inc.
*/
abstract contract DiamondStorage {
// ============ DIAMOND STORAGE (ERC-8042 Diamond Storage) ============
struct SelectorInfo {
address facetAddress;
uint16 selectorPosition;
}
struct DiamondStorageLayout {
mapping(bytes4 => SelectorInfo) selectorInfo;
bytes4[] selectors;
mapping(bytes4 => bool) supportedInterfaces;
}
/// @dev Format: capsign.<package>.<functionality>.storage
bytes32 internal constant DIAMOND_STORAGE_POSITION = keccak256("capsign.diamonds.core.storage");
/**
* @notice Get diamond storage using ERC-8042 Diamond Storage pattern
* @dev Uses assembly to set storage pointer to namespaced position
* @return ds Storage pointer to DiamondStorageLayout struct
*/
function getDiamondStorage() internal pure returns (DiamondStorageLayout storage ds) {
bytes32 position = DIAMOND_STORAGE_POSITION;
assembly {
ds.slot := position
}
}
}{
"remappings": [
"@account-abstraction/contracts/=lib/account-abstraction/contracts/",
"@escrows/=packages/escrows/",
"@diamonds/=packages/diamonds/",
"@offerings/=packages/offerings/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@paymaster/=packages/paymaster/",
"@tokens/=packages/tokens/",
"@wallets/=packages/wallets/",
"FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/",
"escrows-src/=packages/escrows/src/",
"escrows/=packages/escrows/interfaces/",
"diamonds-src/=packages/diamonds/src/",
"diamonds/=packages/diamonds/interfaces/",
"forge-std/=lib/forge-std/src/",
"offerings-src/=packages/offerings/src/",
"offerings/=packages/offerings/interfaces/",
"paymaster-src/=packages/paymaster/src/",
"paymaster/=packages/paymaster/interfaces/",
"solady/=lib/solady/src/",
"tokens-src/=packages/tokens/src/",
"tokens/=packages/tokens/interfaces/",
"wallets-src/=packages/wallets/src/",
"wallets/=packages/wallets/interfaces/",
"webauthn-sol/=lib/webauthn-sol/src/",
"@diamonds/interfaces/=packages/diamonds/interfaces/",
"@diamonds/src/=packages/diamonds/src/",
"@tokens/interfaces/=packages/tokens/interfaces/",
"@tokens/src/=packages/tokens/src/",
"@offerings/interfaces/=packages/offerings/interfaces/",
"@offerings/src/=packages/offerings/src/",
"@wallets/interfaces/=packages/wallets/interfaces/",
"@wallets/src/=packages/wallets/src/",
"v4-core/=lib/v4-core/src/",
"v4-periphery/=lib/v4-periphery/src/",
"permit2/=lib/v4-periphery/lib/permit2/",
"@ensdomains/=lib/v4-core/node_modules/@ensdomains/",
"@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/",
"account-abstraction/=lib/account-abstraction/contracts/",
"ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/",
"eas-contracts/=lib/eas-contracts/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-gas-snapshot/=lib/v4-periphery/lib/permit2/lib/forge-gas-snapshot/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"hardhat/=lib/v4-core/node_modules/hardhat/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"solmate/=lib/v4-core/lib/solmate/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "prague",
"viaIR": true
}Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"Diamond_FunctionDoesNotExist","type":"error"},{"inputs":[{"internalType":"bytes","name":"error","type":"bytes"}],"name":"Diamond_InitializationFailed","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCut.FacetCut[]","name":"diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"init","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
0x608060405261092e80380380610014816101f5565b9283398101906060818303126100c45780516001600160401b0381116100c45781019082601f830112156100c4578151916100566100518461021a565b6101f5565b9260208085838152019160051b830101918583116100c45760208101915b8383106100c8575050505061008b60208201610231565b6040820151939091906001600160401b0385116100c4576100b6946100b09201610260565b91610501565b60405160b890816108568239f35b5f80fd5b82516001600160401b0381116100c45782016060818903601f1901126100c4576100f06101b2565b906100fd60208201610231565b8252604081015160038110156100c457602083015260608101516001600160401b0381116100c457602091010188601f820112156100c45780516101436100518261021a565b9160208084848152019260051b820101908b82116100c457602001915b81831061017d575050506040820152815260209283019201610074565b82516001600160e01b0319811681036100c457815260209283019201610160565b634e487b7160e01b5f52604160045260245ffd5b60405190606082016001600160401b038111838210176101d157604052565b61019e565b60408051919082016001600160401b038111838210176101d157604052565b6040519190601f01601f191682016001600160401b038111838210176101d157604052565b6001600160401b0381116101d15760051b60200190565b51906001600160a01b03821682036100c457565b6001600160401b0381116101d157601f01601f191660200190565b81601f820112156100c45780519061027a61005183610245565b92828452602083830101116100c457815f9260208093018386015e8301015290565b600311156102a657565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9392909193606081016060825283518091526080820190602060808260051b8501019501915f905b828210610337575050506001600160a01b0390951660208201529293506103349260408184039101526102ba565b90565b848703607f19018152835180516001600160a01b0316885260208101519497939492939192606083019160038210156102a657604060809160209384870152015193606060408201528451809452019201905f905b8082106103aa57505050602080600192980192019201909291610306565b82516001600160e01b03191684526020938401939092019160019091019061038c565b3d156103ed573d906103e161005183610245565b9182523d5f602084013e565b606090565b9060206103349281815201906102ba565b6020818303126100c4578051906001600160401b0382116100c457019080601f830112156100c45781519161043a6100518461021a565b9260208085838152019160051b830101918383116100c45760208101915b83831061046757505050505090565b82516001600160401b0381116100c4578201906040828703601f1901126100c4576104906101d6565b9061049d60208401610231565b82526040830151916001600160401b0383116100c4576104c588602080969581960101610260565b83820152815201920191610458565b634e487b7160e01b5f52603260045260245ffd5b80518210156104fc5760209160051b010190565b6104d4565b817f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739161052d81610704565b61053d85604051938493846102de565b0390a16001600160a01b0381168061055457505050565b73d1a302d1a302d1a302d1a302d1a302d1a302d1a30361063757508060208061058293518301019101610403565b8051905f5b82811061059357505050565b6105ae6105a082846104e8565b51516001600160a01b031690565b803b15610618575f809160206105c485876104e8565b51015190602082519201905af46105d96103cd565b90156105e85750600101610587565b8051156105f757805190602001fd5b604051636e6e000d60e01b815290819061061490600483016103f2565b0390fd5b604051636e6e000d60e01b8152602060048201525f6024820152604490fd5b803b1561061857815f929160208493519201905af46106546103cd565b90156105e85750565b5160038110156102a65790565b5f51602061090e5f395f51905f525490680100000000000000008210156101d15760018201805f51602061090e5f395f51905f52558210156104fc575f51602061090e5f395f51905f525f5260205f208260031c019163ffffffff60e084549260051b169260e01c831b921b1916179055565b61ffff1661ffff81146106f05760010190565b634e487b7160e01b5f52601160045260245ffd5b8051905f5b82811061071557505050565b61072b602061072483856104e8565b510161065d565b604061073783856104e8565b5101516107476105a084866104e8565b916107518161029c565b15610761575b5050600101610709565b9091939461077e5f51602061090e5f395f51905f525461ffff1690565b955f965b83518810156108445761083c6001916108376107af6107a18c896104e8565b516001600160e01b03191690565b6108326107ba6101d6565b6001600160a01b038b8116825261ffff861660208084019182526001600160e01b031986165f9081527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215559091526040902092518354915161ffff60a01b60a09190911b1692166001600160b01b031990911617179055565b61066a565b6106dd565b970196610782565b50949150945060019150905f61075756fe608060405236156080575f80356001600160e01b0319168082527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215556020526040909120546001600160a01b0316908115606e575f8083368280378136915af43d5f803e15606a573d5ff35b3d5ffd5b632cf008a360e21b5f5260045260245ffd5b00fea26469706673582212208b565633b1d70786639677dbf962968f6b9511f0b3146eb8d5a9663830426a8664736f6c634300081e003349e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215560000000000000000000000000000000000000000000000000000000000000060000000000000000000000000d1a302d1a302d1a302d1a302d1a302d1a302d1a300000000000000000000000000000000000000000000000000000000000015e0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000005c000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009a00000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000d400000000000000000000000000000000000000000000000000000000000000f4000000000000000000000000000000000000000000000000000000000000010e00000000000000000000000001b2d4da93f89478692dd5e54e26f0e97b14d61900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000005d9723d48e41a09aad637cc9e075da2ef3580d5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000006feb7ab4f000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000adfca15e0000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000cdffacc60000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000031eddc287dfd8b1a90307d3d397bd92a453ea0da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001119c9eb1f00000000000000000000000000000000000000000000000000000000b61d27f60000000000000000000000000000000000000000000000000000000047e1da2a000000000000000000000000000000000000000000000000000000000f0f3f240000000000000000000000000000000000000000000000000000000029565e3b0000000000000000000000000000000000000000000000000000000089625b5700000000000000000000000000000000000000000000000000000000a2e1a8d800000000000000000000000000000000000000000000000000000000066a1eb7000000000000000000000000000000000000000000000000000000001ca5393f000000000000000000000000000000000000000000000000000000008ea6902900000000000000000000000000000000000000000000000000000000d948fd2e000000000000000000000000000000000000000000000000000000000db0262200000000000000000000000000000000000000000000000000000000c352dae200000000000000000000000000000000000000000000000000000000b0d691fe00000000000000000000000000000000000000000000000000000000d00960100000000000000000000000000000000000000000000000000000000099b20eaf0000000000000000000000000000000000000000000000000000000020a194b800000000000000000000000000000000000000000000000000000000000000000000000000000000443c332e58730139a084ef7b174d492cc706c93000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000dbbdc85a700000000000000000000000000000000000000000000000000000000b10d6b4100000000000000000000000000000000000000000000000000000000385dbda400000000000000000000000000000000000000000000000000000000beeb2a5700000000000000000000000000000000000000000000000000000000ce2620950000000000000000000000000000000000000000000000000000000075ca9a3c000000000000000000000000000000000000000000000000000000009fa5f50b00000000000000000000000000000000000000000000000000000000e56bfd1600000000000000000000000000000000000000000000000000000000cfa52c5300000000000000000000000000000000000000000000000000000000a4c96e75000000000000000000000000000000000000000000000000000000004209992700000000000000000000000000000000000000000000000000000000522f1b830000000000000000000000000000000000000000000000000000000050459e2500000000000000000000000000000000000000000000000000000000000000000000000000000000b4be37d3af0bac78fba4c0200fec016d8fbd5d6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a1626ba7e00000000000000000000000000000000000000000000000000000000333daf9200000000000000000000000000000000000000000000000000000000ce1506be0000000000000000000000000000000000000000000000000000000084b0196e00000000000000000000000000000000000000000000000000000000f698da250000000000000000000000000000000000000000000000000000000019822f7c000000000000000000000000000000000000000000000000000000003a871cdd00000000000000000000000000000000000000000000000000000000dbc34d0500000000000000000000000000000000000000000000000000000000c0baecc900000000000000000000000000000000000000000000000000000000b0a398d1000000000000000000000000000000000000000000000000000000000000000000000000000000003a264ae41af891d91ca5e1d927e4a9bf38c629390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000101e9f9c03000000000000000000000000000000000000000000000000000000005b3fb37d0000000000000000000000000000000000000000000000000000000065683b900000000000000000000000000000000000000000000000000000000019f00185000000000000000000000000000000000000000000000000000000008cc6f44c00000000000000000000000000000000000000000000000000000000315b9f95000000000000000000000000000000000000000000000000000000001544caa3000000000000000000000000000000000000000000000000000000009044e55300000000000000000000000000000000000000000000000000000000437375cf000000000000000000000000000000000000000000000000000000007a5ee0ca000000000000000000000000000000000000000000000000000000004e47bbc100000000000000000000000000000000000000000000000000000000f0fb990e000000000000000000000000000000000000000000000000000000007ca548c60000000000000000000000000000000000000000000000000000000011f646a30000000000000000000000000000000000000000000000000000000036cfd5ba00000000000000000000000000000000000000000000000000000000bc182cfa000000000000000000000000000000000000000000000000000000000000000000000000000000001bbd1bd16eb5036e48fc3fd0080495d7b48519170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000055f12013e000000000000000000000000000000000000000000000000000000004d5e1da60000000000000000000000000000000000000000000000000000000035deba3300000000000000000000000000000000000000000000000000000000fa5e13650000000000000000000000000000000000000000000000000000000059a8fea000000000000000000000000000000000000000000000000000000000000000000000000000000000a9b3b9caa1f57a4c035600e338ec89345fa0cf3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000ca1ad778b0000000000000000000000000000000000000000000000000000000009dd7c24000000000000000000000000000000000000000000000000000000007cfc2db400000000000000000000000000000000000000000000000000000000bebf4e9800000000000000000000000000000000000000000000000000000000632b3b4700000000000000000000000000000000000000000000000000000000781837050000000000000000000000000000000000000000000000000000000034dfbfee00000000000000000000000000000000000000000000000000000000ced4d85100000000000000000000000000000000000000000000000000000000a9ab90720000000000000000000000000000000000000000000000000000000043bf4e8d000000000000000000000000000000000000000000000000000000009b23fb0a00000000000000000000000000000000000000000000000000000000cb9ad44500000000000000000000000000000000000000000000000000000000000000000000000000000000af68fabbc6d598124edcba48fcfaebf0ccf4c8a60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000094c1c1fcd00000000000000000000000000000000000000000000000000000000ef4e95310000000000000000000000000000000000000000000000000000000067aff4840000000000000000000000000000000000000000000000000000000086bed3e00000000000000000000000000000000000000000000000000000000095a8c58d0000000000000000000000000000000000000000000000000000000074d5e100000000000000000000000000000000000000000000000000000000005fcc08b000000000000000000000000000000000000000000000000000000000bf7e214f000000000000000000000000000000000000000000000000000000007a9e5e4b0000000000000000000000000000000000000000000000000000000000000000000000000000000092c5add486e5ee7ee02a9a4e2f0480a0304161e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000205af6435d0000000000000000000000000000000000000000000000000000000017c4905c00000000000000000000000000000000000000000000000000000000d34e090a00000000000000000000000000000000000000000000000000000000b7009613000000000000000000000000000000000000000000000000000000004665096d00000000000000000000000000000000000000000000000000000000cc1b6c8100000000000000000000000000000000000000000000000000000000a166aa89000000000000000000000000000000000000000000000000000000006d5115bd000000000000000000000000000000000000000000000000000000004c1da1e200000000000000000000000000000000000000000000000000000000530dd456000000000000000000000000000000000000000000000000000000000b0a93ba0000000000000000000000000000000000000000000000000000000012be8727000000000000000000000000000000000000000000000000000000003078f11400000000000000000000000000000000000000000000000000000000d1f856ee00000000000000000000000000000000000000000000000000000000853551b80000000000000000000000000000000000000000000000000000000025c471a000000000000000000000000000000000000000000000000000000000b7d2b16200000000000000000000000000000000000000000000000000000000fe0776f50000000000000000000000000000000000000000000000000000000008d6122d00000000000000000000000000000000000000000000000000000000d22b598900000000000000000000000000000000000000000000000000000000167bd3950000000000000000000000000000000000000000000000000000000030cae187000000000000000000000000000000000000000000000000000000005296295200000000000000000000000000000000000000000000000000000000a64d95ce0000000000000000000000000000000000000000000000000000000018ff183c00000000000000000000000000000000000000000000000000000000f801a698000000000000000000000000000000000000000000000000000000001cff79cd00000000000000000000000000000000000000000000000000000000d6bb62c60000000000000000000000000000000000000000000000000000000094c7d7ee00000000000000000000000000000000000000000000000000000000abd9bd2a000000000000000000000000000000000000000000000000000000004136a33c000000000000000000000000000000000000000000000000000000003adc277a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000af68fabbc6d598124edcba48fcfaebf0ccf4c8a6000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000244c1c1fcd00000000000000000000000095ce7a06a73a31f1ea2c1be9c4ea6a50784d2b180000000000000000000000000000000000000000000000000000000000000000000000000000000031eddc287dfd8b1a90307d3d397bd92a453ea0da0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000012419c9eb1f000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000071727de22e5e9d8baf0edac6f37da03200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001495ce7a06a73a31f1ea2c1be9c4ea6a50784d2b18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4361705369676e57616c6c657400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a264ae41af891d91ca5e1d927e4a9bf38c62939000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001841e9f9c0300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095ce7a06a73a31f1ea2c1be9c4ea6a50784d2b180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000013456e746974792041646d696e205369676e65720000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405236156080575f80356001600160e01b0319168082527f49e5d4b4dffd3ea9dfcc29574ccfe2842c2a5e7f5ff2aa4017ab24c98e9215556020526040909120546001600160a01b0316908115606e575f8083368280378136915af43d5f803e15606a573d5ff35b3d5ffd5b632cf008a360e21b5f5260045260245ffd5b00fea26469706673582212208b565633b1d70786639677dbf962968f6b9511f0b3146eb8d5a9663830426a8664736f6c634300081e0033
Loading...
Loading
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.