ETH Price: $3,202.99 (+5.25%)

Contract

0xB0c7a3Ba49C7a6EaBa6cD4a96C55a1391070Ac9A
 

More Info

Private Name Tags

TokenTracker

MAGIC (MAGIC) (@$0.4456)

Multichain Info

Transaction Hash
Method
Block
Age
From
To
Approve216216432025-01-14 8:51:473 hrs ago1736844707IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.00019233.70932542
Approve216215552025-01-14 8:33:473 hrs ago1736843627IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.00018713.62910475
Approve216213842025-01-14 7:59:354 hrs ago1736841575IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000201253.87744754
Approve216213742025-01-14 7:57:354 hrs ago1736841455IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000198413.82256522
Approve216213122025-01-14 7:44:594 hrs ago1736840699IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000217284.18613172
Approve216204952025-01-14 5:00:597 hrs ago1736830859IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000203053.94025823
Approve216200632025-01-14 3:33:598 hrs ago1736825639IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000088482.98721411
Approve216200602025-01-14 3:33:238 hrs ago1736825603IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000154813
Approve216182502025-01-13 21:28:1114 hrs ago1736803691IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000238236.90181739
Approve216175602025-01-13 19:09:3517 hrs ago1736795375IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000463758.98669784
Approve216174732025-01-13 18:51:5917 hrs ago1736794319IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000362147.01764891
Approve216154522025-01-13 12:06:2324 hrs ago1736769983IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.0010177619.71305602
Approve216150592025-01-13 10:47:4725 hrs ago1736765267IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000372137.21783866
Approve216143032025-01-13 8:14:3528 hrs ago1736756075IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000126142.44498832
Approve216137782025-01-13 6:28:4729 hrs ago1736749727IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000114232.21360039
Approve216133362025-01-13 4:59:2331 hrs ago1736744363IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000172423.34117474
Approve216133022025-01-13 4:52:3531 hrs ago1736743955IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000147242.85397391
Approve216132822025-01-13 4:48:3531 hrs ago1736743715IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.00014562.82212357
Approve216128342025-01-13 3:18:1132 hrs ago1736738291IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000222814.29774899
Approve216124212025-01-13 1:54:3534 hrs ago1736733275IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000159373.07058187
Approve216121972025-01-13 1:09:4735 hrs ago1736730587IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000216574.1774349
Approve216119602025-01-13 0:21:3535 hrs ago1736727695IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000200343.86432119
Approve216118972025-01-13 0:08:5936 hrs ago1736726939IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.00015252.95462457
Approve216118502025-01-12 23:59:3536 hrs ago1736726375IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000098721.91268487
Approve216118322025-01-12 23:55:5936 hrs ago1736726159IN
0xB0c7a3Ba...91070Ac9A
0 ETH0.000097071.8811268
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
Age
From
To
215207022024-12-31 6:35:4714 days ago1735626947
0xB0c7a3Ba...91070Ac9A
0.0000594 ETH
184701182023-10-31 12:29:59440 days ago1698755399
0xB0c7a3Ba...91070Ac9A
0.00099 ETH
182248152023-09-27 4:47:47475 days ago1695790067
0xB0c7a3Ba...91070Ac9A
0.006435 ETH
181806902023-09-21 0:29:47481 days ago1695256187
0xB0c7a3Ba...91070Ac9A
0.00054747 ETH
181802082023-09-20 22:53:23481 days ago1695250403
0xB0c7a3Ba...91070Ac9A
0.003168 ETH
181801872023-09-20 22:49:11481 days ago1695250151
0xB0c7a3Ba...91070Ac9A
0.0007 ETH
181801462023-09-20 22:40:59481 days ago1695249659
0xB0c7a3Ba...91070Ac9A
0.006138 ETH
181789772023-09-20 18:44:47481 days ago1695235487
0xB0c7a3Ba...91070Ac9A
0.001485 ETH
181789742023-09-20 18:44:11481 days ago1695235451
0xB0c7a3Ba...91070Ac9A
0.001485 ETH
181789712023-09-20 18:43:35481 days ago1695235415
0xB0c7a3Ba...91070Ac9A
0.001485 ETH
181789682023-09-20 18:42:59481 days ago1695235379
0xB0c7a3Ba...91070Ac9A
0.001485 ETH
171146542023-04-24 7:26:35631 days ago1682321195
0xB0c7a3Ba...91070Ac9A
0.00021879 ETH
170569752023-04-16 4:02:23639 days ago1681617743
0xB0c7a3Ba...91070Ac9A
0.006336 ETH
169648042023-04-02 23:57:47652 days ago1680479867
0xB0c7a3Ba...91070Ac9A
0.0004041 ETH
169603442023-04-02 8:53:11653 days ago1680425591
0xB0c7a3Ba...91070Ac9A
0.002756 ETH
169541522023-04-01 11:58:35654 days ago1680350315
0xB0c7a3Ba...91070Ac9A
0.01430245 ETH
169527082023-04-01 7:05:59654 days ago1680332759
0xB0c7a3Ba...91070Ac9A
0.00109098 ETH
169526082023-04-01 6:45:23654 days ago1680331523
0xB0c7a3Ba...91070Ac9A
0.00044549 ETH
167638532023-03-05 18:03:35680 days ago1678039415
0xB0c7a3Ba...91070Ac9A
0.0002745 ETH
167540532023-03-04 9:00:59682 days ago1677920459
0xB0c7a3Ba...91070Ac9A
0.0002945 ETH
166434602023-02-16 19:44:11697 days ago1676576651
0xB0c7a3Ba...91070Ac9A
0.00099 ETH
166434462023-02-16 19:41:23697 days ago1676576483
0xB0c7a3Ba...91070Ac9A
0.00428659 ETH
166379992023-02-16 1:25:11698 days ago1676510711
0xB0c7a3Ba...91070Ac9A
0.0004356 ETH
166109122023-02-12 6:33:11702 days ago1676183591
0xB0c7a3Ba...91070Ac9A
0.021 ETH
165829102023-02-08 8:36:35706 days ago1675845395
0xB0c7a3Ba...91070Ac9A
0.000396 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MagicProxy

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 21 : MagicProxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import '@solidstate/contracts/proxy/diamond/Diamond.sol';
import '@solidstate/contracts/token/ERC20/metadata/ERC20MetadataStorage.sol';
contract MagicProxy is Diamond {
constructor() {
ERC20MetadataStorage.Layout storage l = ERC20MetadataStorage.layout();
l.name = 'MAGIC';
l.symbol = 'MAGIC';
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 21 : Diamond.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {SafeOwnable, OwnableStorage, Ownable} from '../../access/SafeOwnable.sol';
import {IERC173} from '../../access/IERC173.sol';
import {ERC165, IERC165, ERC165Storage} from '../../introspection/ERC165.sol';
import {DiamondBase, DiamondBaseStorage} from './DiamondBase.sol';
import {DiamondCuttable, IDiamondCuttable} from './DiamondCuttable.sol';
import {DiamondLoupe, IDiamondLoupe} from './DiamondLoupe.sol';
/**
* @notice SolidState "Diamond" proxy reference implementation
*/
abstract contract Diamond is DiamondBase, DiamondCuttable, DiamondLoupe, SafeOwnable, ERC165 {
using DiamondBaseStorage for DiamondBaseStorage.Layout;
using ERC165Storage for ERC165Storage.Layout;
using OwnableStorage for OwnableStorage.Layout;
constructor () {
ERC165Storage.Layout storage erc165 = ERC165Storage.layout();
bytes4[] memory selectors = new bytes4[](12);
// register DiamondCuttable
selectors[0] = IDiamondCuttable.diamondCut.selector;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 21 : ERC20MetadataStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library ERC20MetadataStorage {
struct Layout {
string name;
string symbol;
uint8 decimals;
}
bytes32 internal constant STORAGE_SLOT = keccak256(
'solidstate.contracts.storage.ERC20Metadata'
);
function layout () internal pure returns (Layout storage l) {
bytes32 slot = STORAGE_SLOT;
assembly { l.slot := slot }
}
function setName (
Layout storage l,
string memory name
) internal {
l.name = name;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 21 : SafeOwnable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {Ownable, OwnableStorage} from './Ownable.sol';
import {SafeOwnableInternal} from './SafeOwnableInternal.sol';
import {SafeOwnableStorage} from './SafeOwnableStorage.sol';
/**
* @title Ownership access control based on ERC173 with ownership transfer safety check
*/
abstract contract SafeOwnable is Ownable, SafeOwnableInternal {
using OwnableStorage for OwnableStorage.Layout;
using SafeOwnableStorage for SafeOwnableStorage.Layout;
function nomineeOwner () virtual public view returns (address) {
return SafeOwnableStorage.layout().nomineeOwner;
}
/**
* @inheritdoc Ownable
* @dev ownership transfer must be accepted by beneficiary before transfer is complete
*/
function transferOwnership (
address account
) virtual override public onlyOwner {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 21 : IERC173.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Contract ownership standard interface
* @dev see https://eips.ethereum.org/EIPS/eip-173
*/
interface IERC173 {
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @notice get the ERC173 contract owner
* @return conract owner
*/
function owner () external view returns (address);
/**
* @notice transfer contract ownership to new account
* @param account address of new owner
*/
function transferOwnership (address account) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 21 : ERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC165} from './IERC165.sol';
import {ERC165Storage} from './ERC165Storage.sol';
/**
* @title ERC165 implementation
*/
abstract contract ERC165 is IERC165 {
using ERC165Storage for ERC165Storage.Layout;
/**
* @inheritdoc IERC165
*/
function supportsInterface (bytes4 interfaceId) override public view returns (bool) {
return ERC165Storage.layout().isSupportedInterface(interfaceId);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 21 : DiamondBase.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {Proxy} from '../Proxy.sol';
import {DiamondBaseStorage} from './DiamondBaseStorage.sol';
import {IDiamondLoupe} from './IDiamondLoupe.sol';
import {IDiamondCuttable} from './IDiamondCuttable.sol';
/**
* @title EIP-2535 "Diamond" proxy base contract
* @dev see https://eips.ethereum.org/EIPS/eip-2535
*/
abstract contract DiamondBase is Proxy {
/**
* @inheritdoc Proxy
*/
function _getImplementation () override internal view returns (address) {
// inline storage layout retrieval uses less gas
DiamondBaseStorage.Layout storage l;
bytes32 slot = DiamondBaseStorage.STORAGE_SLOT;
assembly { l.slot := slot }
address implementation = address(bytes20(l.facets[msg.sig]));
if (implementation == address(0)) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 21 : DiamondCuttable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {OwnableInternal} from '../../access/OwnableInternal.sol';
import {IDiamondCuttable} from './IDiamondCuttable.sol';
import {DiamondBaseStorage} from './DiamondBaseStorage.sol';
/**
* @title EIP-2535 "Diamond" proxy update contract
*/
abstract contract DiamondCuttable is IDiamondCuttable, OwnableInternal {
using DiamondBaseStorage for DiamondBaseStorage.Layout;
/**
* @notice update functions callable on Diamond proxy
* @param facetCuts array of structured Diamond facet update data
* @param target optional recipient of initialization delegatecall
* @param data optional initialization call data
*/
function diamondCut (
FacetCut[] calldata facetCuts,
address target,
bytes calldata data
) external override onlyOwner {
DiamondBaseStorage.layout().diamondCut(facetCuts, target, data);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 21 : DiamondLoupe.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {DiamondBaseStorage} from './DiamondBaseStorage.sol';
import {IDiamondLoupe} from './IDiamondLoupe.sol';
/**
* @title EIP-2535 "Diamond" proxy introspection contract
* @dev derived from https://github.com/mudgen/diamond-2 (MIT license)
*/
abstract contract DiamondLoupe is IDiamondLoupe {
/**
* @inheritdoc IDiamondLoupe
*/
function facets () external override view returns (Facet[] memory diamondFacets) {
DiamondBaseStorage.Layout storage l = DiamondBaseStorage.layout();
diamondFacets = new Facet[](l.selectorCount);
uint8[] memory numFacetSelectors = new uint8[](l.selectorCount);
uint256 numFacets;
uint256 selectorIndex;
// loop through function selectors
for (uint256 slotIndex; selectorIndex < l.selectorCount; slotIndex++) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 21 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC173} from './IERC173.sol';
import {OwnableInternal} from './OwnableInternal.sol';
import {OwnableStorage} from './OwnableStorage.sol';
/**
* @title Ownership access control based on ERC173
*/
abstract contract Ownable is IERC173, OwnableInternal {
using OwnableStorage for OwnableStorage.Layout;
/**
* @inheritdoc IERC173
*/
function owner () virtual override public view returns (address) {
return OwnableStorage.layout().owner;
}
/**
* @inheritdoc IERC173
*/
function transferOwnership (
address account
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 21 : SafeOwnableInternal.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {SafeOwnableStorage} from './SafeOwnableStorage.sol';
abstract contract SafeOwnableInternal {
using SafeOwnableStorage for SafeOwnableStorage.Layout;
modifier onlyNomineeOwner () {
require(
msg.sender == SafeOwnableStorage.layout().nomineeOwner,
'SafeOwnable: sender must be nominee owner'
);
_;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 21 : SafeOwnableStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library SafeOwnableStorage {
struct Layout {
address nomineeOwner;
}
bytes32 internal constant STORAGE_SLOT = keccak256(
'solidstate.contracts.storage.SafeOwnable'
);
function layout () internal pure returns (Layout storage l) {
bytes32 slot = STORAGE_SLOT;
assembly { l.slot := slot }
}
function setNomineeOwner (
Layout storage l,
address nomineeOwner
) internal {
l.nomineeOwner = nomineeOwner;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 21 : OwnableInternal.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {OwnableStorage} from './OwnableStorage.sol';
abstract contract OwnableInternal {
using OwnableStorage for OwnableStorage.Layout;
modifier onlyOwner {
require(
msg.sender == OwnableStorage.layout().owner,
'Ownable: sender must be owner'
);
_;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 21 : OwnableStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library OwnableStorage {
struct Layout {
address owner;
}
bytes32 internal constant STORAGE_SLOT = keccak256(
'solidstate.contracts.storage.Ownable'
);
function layout () internal pure returns (Layout storage l) {
bytes32 slot = STORAGE_SLOT;
assembly { l.slot := slot }
}
function setOwner (
Layout storage l,
address owner
) internal {
l.owner = owner;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 21 : IERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title ERC165 interface registration interface
* @dev see https://eips.ethereum.org/EIPS/eip-165
*/
interface IERC165 {
/**
* @notice query whether contract has registered support for given interface
* @param interfaceId interface id
* @return bool whether interface is supported
*/
function supportsInterface (
bytes4 interfaceId
) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 21 : ERC165Storage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library ERC165Storage {
struct Layout {
// TODO: use EnumerableSet to allow post-diamond-cut auditing
mapping (bytes4 => bool) supportedInterfaces;
}
bytes32 internal constant STORAGE_SLOT = keccak256(
'solidstate.contracts.storage.ERC165'
);
function layout () internal pure returns (Layout storage l) {
bytes32 slot = STORAGE_SLOT;
assembly { l.slot := slot }
}
function isSupportedInterface (
Layout storage l,
bytes4 interfaceId
) internal view returns (bool) {
return l.supportedInterfaces[interfaceId];
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 21 : Proxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {AddressUtils} from '../utils/AddressUtils.sol';
/**
* @title Base proxy contract
*/
abstract contract Proxy {
using AddressUtils for address;
/**
* @notice delegate all calls to implementation contract
* @dev reverts if implementation address contains no code, for compatibility with metamorphic contracts
* @dev memory location in use by assembly may be unsafe in other contexts
*/
fallback () virtual external payable {
address implementation = _getImplementation();
require(
implementation.isContract(),
'Proxy: implementation must be contract'
);
assembly {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 21 : DiamondBaseStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {AddressUtils} from '../../utils/AddressUtils.sol';
import {IDiamondCuttable} from './IDiamondCuttable.sol';
/**
* @dev derived from https://github.com/mudgen/diamond-2 (MIT license)
*/
library DiamondBaseStorage {
using AddressUtils for address;
using DiamondBaseStorage for DiamondBaseStorage.Layout;
struct Layout {
// function selector => (facet address, selector slot position)
mapping (bytes4 => bytes32) facets;
// total number of selectors registered
uint16 selectorCount;
// array of selector slots with 8 selectors per slot
mapping (uint256 => bytes32) selectorSlots;
address fallbackAddress;
}
bytes32 constant CLEAR_ADDRESS_MASK = bytes32(uint256(0xffffffffffffffffffffffff));
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 21 : IDiamondLoupe.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Diamond proxy introspection interface
* @dev see https://eips.ethereum.org/EIPS/eip-2535
*/
interface IDiamondLoupe {
struct Facet {
address target;
bytes4[] selectors;
}
/**
* @notice get all facets and their selectors
* @return diamondFacets array of structured facet data
*/
function facets () external view returns (Facet[] memory diamondFacets);
/**
* @notice get all selectors for given facet address
* @param facet address of facet to query
* @return selectors array of function selectors
*/
function facetFunctionSelectors (
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 20 of 21 : IDiamondCuttable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Diamond proxy upgrade interface
* @dev see https://eips.ethereum.org/EIPS/eip-2535
*/
interface IDiamondCuttable {
enum FacetCutAction { ADD, REPLACE, REMOVE }
event DiamondCut (FacetCut[] facetCuts, address target, bytes data);
struct FacetCut {
address target;
FacetCutAction action;
bytes4[] selectors;
}
/**
* @notice update diamond facets and optionally execute arbitrary initialization function
* @param facetCuts facet addresses, actions, and function selectors
* @param target initialization function target
* @param data initialization function call data
*/
function diamondCut (
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 21 of 21 : AddressUtils.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library AddressUtils {
function toString (address account) internal pure returns (string memory) {
bytes32 value = bytes32(uint256(uint160(account)));
bytes memory alphabet = '0123456789abcdef';
bytes memory chars = new bytes(42);
chars[0] = '0';
chars[1] = 'x';
for (uint256 i = 0; i < 20; i++) {
chars[2 + i * 2] = alphabet[uint8(value[i + 12] >> 4)];
chars[3 + i * 2] = alphabet[uint8(value[i + 12] & 0x0f)];
}
return string(chars);
}
function isContract (address account) internal view returns (bool) {
uint size;
assembly { size := extcodesize(account) }
return size > 0;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"enum IDiamondCuttable.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IDiamondCuttable.FacetCut[]","name":"facetCuts","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"DiamondCut","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"enum IDiamondCuttable.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"internalType":"struct IDiamondCuttable.FacetCut[]","name":"facetCuts","type":"tuple[]"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"diamondFacets","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFallbackAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nomineeOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"fallbackAddress","type":"address"}],"name":"setFallbackAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506000620000296200059860201b62000ebe1760201c565b60408051600c8082526101a08201909252919250600091906020820161018080368337019050509050631f931c1c60e01b816000815181106200007c57634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101820152620000b69083906307e4c70760e21b9060019062000ee2620005bc821b17901c565b637a0ed62760e01b81600181518110620000e057634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b90829060029081106200012657634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060039081106200016c57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b9082906004908110620001b257634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101820152620001ec9083906348e2b09360e01b9060019062000ee2620005bc821b17901c565b6301ffc9a760e01b816005815181106200021657634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101820152620002509083906301ffc9a760e01b9060019062000ee2620005bc821b17901c565b638da5cb5b60e01b816006815181106200027a57634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910190910152805163455a8a8560e11b9082906007908110620002c057634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910190910152805163f2fde38b60e01b90829060089081106200030657634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516379ba509760e01b90829060099081106200034c57634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101820152620003869083906307f5828d60e41b9060019062000ee2620005bc821b17901c565b632c40805960e01b81600a81518110620003b057634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101909101528051639142376560e01b908290600b908110620003f657634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199290921660209283029190910190910152604080516001808252818301909252600091816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162000427579050506040805160608101909152308152909150602081016000815260200183815250816000815181106200049957634e487b7160e01b600052603260045260246000fd5b6020026020010181905250620004e681600060405180602001604052806000815250620004d06200064a60201b62000f6a1760201c565b6200066e60201b62000f8e17909392919060201c565b620005143362000500620008c160201b6200119a1760201c565b620008e560201b620011be1790919060201c565b50505060006200052e6200090260201b620011db1760201c565b604080518082019091526005808252644d4147494360d81b60209092019182529192506200055f91839190620011b3565b50604080518082019091526005808252644d4147494360d81b602090920191825262000590916001840191620011b3565b505062001418565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b031980831614156200061c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff8116908190600090600716156200069f5750600381901c60009081526002870160205260409020545b60005b86518110156200082f576000878281518110620006cf57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600081602001519050600082604001515111620007455760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b606482015260840162000613565b60008160028111156200076857634e487b7160e01b600052602160045260246000fd5b141562000798576200078d8585848d6200092660201b620011ff17909392919060201c565b909550935062000824565b6002816002811115620007bb57634e487b7160e01b600052602160045260246000fd5b1415620007e0576200078d8585848d62000b0460201b620013c017909392919060201c565b60018160028111156200080357634e487b7160e01b600052602160045260246000fd5b1415620008245762000824828b62000dd860201b620016601790919060201c565b5050600101620006a2565b508282146200084c5760018701805461ffff191661ffff84161790555b60078216156200086f57600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686604051620008a493929190620012a5565b60405180910390a1620008b885856200101e565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b805160009081906001600160a01b03163014806200096257506200096283600001516001600160a01b0316620011ad60201b620003a41760201c565b620009bc5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b606482015260840162000613565b60005b83604001515181101562000af757600084604001518281518110620009f457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c1562000a7d5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b606482015260840162000613565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c1999909916179781141562000ae757600389901c600090815260028b0160205260408120989098555b50505060019586019501620009bf565b5093959294509192505050565b805160009081906001600160a01b03161562000b7b5760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b606482015260840162000613565b600385901c6007861660005b85604001515181101562000dc45760008660400151828151811062000bbc57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c62000c385760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e6400604482015260640162000613565b606081901c30141562000c885760405162461bcd60e51b81526020600482015260226024820152600080516020620034948339815191526044820152616c6560f01b606482015260840162000613565b8862000cb257600019909401600081815260028c0160205260409020549850936007935062000cba565b600019909301925b600584901b89901b6000806001600160e01b03198084169086161462000d0d576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166001600160601b0386161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b1687821462000d7257600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c17905562000d96565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8662000db257600088815260028f01602052604081208190559b505b50506001909301925062000b87915050565b5060039190911b1796939550929350505050565b62000dfb81600001516001600160a01b0316620011ad60201b620003a41760201c565b62000e595760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b606482015260840162000613565b60005b816040015151811015620010195760008260400151828151811062000e9157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c8062000f0e5760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e6400604482015260640162000613565b6001600160a01b03811630141562000f635760405162461bcd60e51b81526020600482015260226024820152600080516020620034948339815191526044820152616c6560f01b606482015260840162000613565b84516001600160a01b038281169116141562000fd35760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b606482015260840162000613565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166001600160601b039190911617905560010162000e5c565b505050565b8051156001600160a01b0383161514620010925760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b606482015260840162000613565b6001600160a01b03821615620011a9576001600160a01b03821630146200113757620010d2826001600160a01b0316620011ad60201b620003a41760201c565b620011375760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b606482015260840162000613565b6000826001600160a01b03168260405162001153919062001287565b600060405180830381855af49150503d806000811462001190576040519150601f19603f3d011682016040523d82523d6000602084013e62001195565b606091505b505090508062001019573d6000803e3d6000fd5b5050565b3b151590565b828054620011c190620013db565b90600052602060002090601f016020900481019282620011e5576000855562001230565b82601f106200120057805160ff191683800117855562001230565b8280016001018555821562001230579182015b828111156200123057825182559160200191906001019062001213565b506200123e92915062001242565b5090565b5b808211156200123e576000815560010162001243565b6000815180845262001273816020860160208601620013a8565b601f01601f19169290920160200192915050565b600082516200129b818460208701620013a8565b9190910192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b01875b848110156200137657898403607f19018652815180516001600160a01b031685528381015189860190600381106200131357634e487b7160e01b8c52602160045260248cfd5b868601526040918201519186018a9052815190819052908401908a90898701905b80831015620013605783516001600160e01b031916825292860192600192909201919086019062001334565b50978501979550505090820190600101620012cd565b50506001600160a01b038a169088015286810360408801526200139a818962001259565b9a9950505050505050505050565b60005b83811015620013c5578181015183820152602001620013ab565b83811115620013d5576000848401525b50505050565b600181811c90821680620013f057607f821691505b602082108114156200141257634e487b7160e01b600052602260045260246000fd5b50919050565b61206c80620014286000396000f3fe6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a1461022a5780638da5cb5b1461023f5780639142376514610254578063adfca15e14610274578063cdffacc6146102a1578063f2fde38b146102c1576100b2565b806301ffc9a71461014d5780631f931c1c146101825780632c408059146101a457806352ef6b2c146101d157806379ba5097146101f35780637a0ed62714610208576100b2565b366100b257005b60006100bc6102e1565b90506001600160a01b0381163b6101295760405162461bcd60e51b815260206004820152602660248201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610148573d6000f35b3d6000fd5b34801561015957600080fd5b5061016d610168366004611b10565b6103aa565b60405190151581526020015b60405180910390f35b34801561018e57600080fd5b506101a261019d366004611a64565b6103df565b005b3480156101b057600080fd5b506101b961046c565b6040516001600160a01b039091168152602001610179565b3480156101dd57600080fd5b506101e6610488565b6040516101799190611bb6565b3480156101ff57600080fd5b506101a261065c565b34801561021457600080fd5b5061021d610743565b6040516101799190611cdc565b34801561023657600080fd5b506101b9610c52565b34801561024b57600080fd5b506101b9610c73565b34801561026057600080fd5b506101a261026f366004611a4a565b610c7d565b34801561028057600080fd5b5061029461028f366004611a4a565b610cda565b6040516101799190611c03565b3480156102ad57600080fd5b506101b96102bc366004611b10565b610e49565b3480156102cd57600080fd5b506101a26102dc366004611a4a565b610e76565b600080356001600160e01b03191681527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9360208190526040822054819060601c8061039d575060038201546001600160a01b03168061039d5760405162461bcd60e51b815260206004820152603260248201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060448201527166756e6374696f6e207369676e617475726560701b6064820152608401610120565b9392505050565b3b151590565b60006103d9826103b8610ebe565b906001600160e01b0319166000908152602091909152604090205460ff1690565b92915050565b6103e761119a565b546001600160a01b0316331461040f5760405162461bcd60e51b815260040161012090611d58565b61046561041c8587611e4f565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061045d9250610f6a915050565b929190610f8e565b5050505050565b6000610476610f6a565b600301546001600160a01b0316919050565b60606000610494610f6a565b600181015490915061ffff1667ffffffffffffffff8111156104c657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156104ef578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610654576000818152600285016020526040812054905b600881101561063f578361052e81611faf565b600188015490955061ffff1685111590506105485761063f565b600581901b82901b6001600160e01b0319811660009081526020889052604081205460601c90805b888110156105d4578a818151811061059857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316836001600160a01b031614156105c257600191506105d4565b806105cc81611faf565b915050610570565b5080156105e35750505061062d565b818a898151811061060457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528761062681611faf565b9850505050505b8061063781611faf565b91505061051b565b5050808061064c90611faf565b9150506104f8565b505082525090565b600080516020612017833981519152546001600160a01b031633146106d55760405162461bcd60e51b815260206004820152602960248201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d696044820152683732b29037bbb732b960b91b6064820152608401610120565b60006106df61119a565b805460405191925033916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a361072581336111be565b61074060006000805160206120178339815191525b906111be565b50565b6060600061074f610f6a565b600181015490915061ffff1667ffffffffffffffff81111561078157634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156107c757816020015b60408051808201909152600081526060602082015281526020019060019003908161079f5790505b50600182015490925060009061ffff1667ffffffffffffffff8111156107fd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610826578160200160208202803683370190505b50905060008060005b600185015461ffff16821015610bc4576000818152600286016020526040812054905b6008811015610baf578361086581611faf565b600189015490955061ffff16851115905061087f57610baf565b600581901b82901b6001600160e01b0319811660009081526020899052604081205460601c90805b88811015610a1957826001600160a01b03168c82815181106108d957634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03161415610a0757838c828151811061091557634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518b838151811061094157634e487b7160e01b600052603260045260246000fd5b602002602001015160ff168151811061096a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160e01b03191690816001600160e01b0319168152505060ff8a82815181106109ae57634e487b7160e01b600052603260045260246000fd5b602002602001015160ff16106109c357600080fd5b8981815181106109e357634e487b7160e01b600052603260045260246000fd5b6020026020010180518091906109f890611fca565b60ff1690525060019150610a19565b80610a1181611faf565b9150506108a7565b508015610a2857505050610b9d565b818b8981518110610a4957634e487b7160e01b600052603260045260246000fd5b60209081029190910101516001600160a01b03909116905260018a015461ffff1667ffffffffffffffff811115610a9057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610ab9578160200160208202803683370190505b508b8981518110610ada57634e487b7160e01b600052603260045260246000fd5b602002602001015160200181905250828b8981518110610b0a57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151600081518110610b3657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160e01b03191690816001600160e01b031916815250506001898981518110610b7a57634e487b7160e01b600052603260045260246000fd5b60ff9092166020928302919091019091015287610b9681611faf565b9850505050505b80610ba781611faf565b915050610852565b50508080610bbc90611faf565b91505061082f565b5060005b82811015610c47576000848281518110610bf257634e487b7160e01b600052603260045260246000fd5b602002602001015160ff1690506000878381518110610c2157634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905081815250508080610c3f90611faf565b915050610bc8565b508185525050505090565b60006000805160206120178339815191525b546001600160a01b0316919050565b6000610c6461119a565b610c8561119a565b546001600160a01b03163314610cad5760405162461bcd60e51b815260040161012090611d58565b80610cb6610f6a565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b60606000610ce6610f6a565b600181015490915061ffff1667ffffffffffffffff811115610d1857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d41578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610e3f576000818152600285016020526040812054905b6008811015610e2a5783610d8081611faf565b600188015490955061ffff168511159050610d9a57610e2a565b600581901b82901b6001600160e01b0319811660009081526020889052604090205460601c6001600160a01b038a161415610e175780888781518110610df057634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015285610e1381611faf565b9650505b5080610e2281611faf565b915050610d6d565b50508080610e3790611faf565b915050610d4a565b5050825250919050565b6000610e53610f6a565b6001600160e01b0319909216600090815260209290925250604090205460601c90565b610e7e61119a565b546001600160a01b03163314610ea65760405162461bcd60e51b815260040161012090611d58565b6107408160008051602061201783398151915261073a565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083161415610f3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610120565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615610fbe5750600381901c60009081526002870160205260409020545b60005b865181101561110e576000878281518110610fec57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000816020015190506000826040015151116110605760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401610120565b600081600281111561108257634e487b7160e01b600052602160045260246000fd5b141561109e576110948a8686856111ff565b9095509350611104565b60028160028111156110c057634e487b7160e01b600052602160045260246000fd5b14156110d2576110948a8686856113c0565b60018160028111156110f457634e487b7160e01b600052602160045260246000fd5b1415611104576111048a83611660565b5050600101610fc1565b5082821461112a5760018701805461ffff191661ffff84161790555b600782161561114c57600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67386868660405161117f93929190611c16565b60405180910390a1611191858561185f565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b805160009081906001600160a01b0316301480611226575082516001600160a01b03163b15155b61127e5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401610120565b60005b8360400151518110156113b3576000846040015182815181106112b457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c1561133b5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401610120565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978114156113a457600389901c600090815260028b0160205260408120989098555b50505060019586019501611281565b5093959294509192505050565b805160009081906001600160a01b0316156114355760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401610120565b600385901c6007861660005b85604001515181101561164c5760008660400151828151811061147457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c6114ee5760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b606081901c3014156115125760405162461bcd60e51b815260040161012090611d8f565b8861153a57600019909401600081815260028c01602052604090205498509360079350611542565b600019909301925b600584901b89901b6000806001600160e01b031980841690861614611599576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166bffffffffffffffffffffffff86161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b168782146115fc57600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c179055611620565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8661163b57600088815260028f01602052604081208190559b505b505060019093019250611441915050565b5060039190911b1796939550929350505050565b80516001600160a01b03163b6116c85760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401610120565b60005b81604001515181101561185a576000826040015182815181106116fe57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c806117795760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b6001600160a01b0381163014156117a25760405162461bcd60e51b815260040161012090611d8f565b84516001600160a01b03828116911614156118105760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401610120565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166bffffffffffffffffffffffff919091161790556001016116cb565b505050565b8051156001600160a01b03831615146118d15760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401610120565b6001600160a01b038216156119cb576001600160a01b038216301461195e576001600160a01b0382163b61195e5760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401610120565b6000826001600160a01b0316826040516119789190611b9a565b600060405180830381855af49150503d80600081146119b3576040519150601f19603f3d011682016040523d82523d6000602084013e6119b8565b606091505b505090508061185a573d6000803e3d6000fd5b5050565b80356001600160a01b03811681146119e657600080fd5b919050565b80356001600160e01b0319811681146119e657600080fd5b60008083601f840112611a14578182fd5b50813567ffffffffffffffff811115611a2b578182fd5b602083019150836020828501011115611a4357600080fd5b9250929050565b600060208284031215611a5b578081fd5b61039d826119cf565b600080600080600060608688031215611a7b578081fd5b853567ffffffffffffffff80821115611a92578283fd5b818801915088601f830112611aa5578283fd5b813581811115611ab3578384fd5b8960208260051b8501011115611ac7578384fd5b60208301975080965050611add602089016119cf565b94506040880135915080821115611af2578283fd5b50611aff88828901611a03565b969995985093965092949392505050565b600060208284031215611b21578081fd5b61039d826119eb565b6000815180845260208085019450808401835b83811015611b635781516001600160e01b03191687529582019590820190600101611b3d565b509495945050505050565b60008151808452611b86816020860160208601611f7f565b601f01601f19169290920160200192915050565b60008251611bac818460208701611f7f565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015611bf75783516001600160a01b031683529284019291840191600101611bd2565b50909695505050505050565b60208152600061039d6020830184611b2a565b6000606080830181845280875180835260808601915060808160051b87010192506020808a01865b83811015611cad57888603607f19018552815180516001600160a01b031687528381015160038110611c7e57634e487b7160e01b8a52602160045260248afd5b87850152604090810151908701889052611c9a88880182611b2a565b9650509382019390820190600101611c3e565b50506001600160a01b0389169087015250508381036040850152611cd18186611b6e565b979650505050505050565b60006020808301818452808551808352604092508286019150828160051b870101848801865b83811015611d4a57888303603f19018552815180516001600160a01b03168452870151878401879052611d3787850182611b2a565b9588019593505090860190600101611d02565b509098975050505050505050565b6020808252601d908201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604082015260600190565b60208082526022908201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d757461626040820152616c6560f01b606082015260800190565b6040516060810167ffffffffffffffff81118282101715611df457611df4612000565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e2357611e23612000565b604052919050565b600067ffffffffffffffff821115611e4557611e45612000565b5060051b60200190565b6000611e62611e5d84611e2b565b611dfa565b838152602080820191908460053688821b83011115611e7f578586fd5b855b88811015611f7257823567ffffffffffffffff80821115611ea0578889fd5b818a01915060608236031215611eb4578889fd5b611ebc611dd1565b611ec5836119cf565b81528683013560038110611ed7578a8bfd5b8188015260408381013583811115611eed578b8cfd5b939093019236601f850112611f00578a8bfd5b83359250611f10611e5d84611e2b565b83815288810190858a0136868a1b88018c011115611f2c578d8efd5b8d96505b85871015611f5557611f41816119eb565b835260019690960195918a01918a01611f30565b509183019190915250885250509483019491830191600101611e81565b5092979650505050505050565b60005b83811015611f9a578181015183820152602001611f82565b83811115611fa9576000848401525b50505050565b6000600019821415611fc357611fc3611fea565b5060010190565b600060ff821660ff811415611fe157611fe1611fea565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890a2646970667358221220bd930cfc7d47142cc2e541ff334e3933cf9ac9bb977638c6f6fa5e9e5423037a64736f6c634300080400334469616d6f6e64426173653a2073656c6563746f7220697320696d6d75746162

Deployed Bytecode

0x6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a1461022a5780638da5cb5b1461023f5780639142376514610254578063adfca15e14610274578063cdffacc6146102a1578063f2fde38b146102c1576100b2565b806301ffc9a71461014d5780631f931c1c146101825780632c408059146101a457806352ef6b2c146101d157806379ba5097146101f35780637a0ed62714610208576100b2565b366100b257005b60006100bc6102e1565b90506001600160a01b0381163b6101295760405162461bcd60e51b815260206004820152602660248201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610148573d6000f35b3d6000fd5b34801561015957600080fd5b5061016d610168366004611b10565b6103aa565b60405190151581526020015b60405180910390f35b34801561018e57600080fd5b506101a261019d366004611a64565b6103df565b005b3480156101b057600080fd5b506101b961046c565b6040516001600160a01b039091168152602001610179565b3480156101dd57600080fd5b506101e6610488565b6040516101799190611bb6565b3480156101ff57600080fd5b506101a261065c565b34801561021457600080fd5b5061021d610743565b6040516101799190611cdc565b34801561023657600080fd5b506101b9610c52565b34801561024b57600080fd5b506101b9610c73565b34801561026057600080fd5b506101a261026f366004611a4a565b610c7d565b34801561028057600080fd5b5061029461028f366004611a4a565b610cda565b6040516101799190611c03565b3480156102ad57600080fd5b506101b96102bc366004611b10565b610e49565b3480156102cd57600080fd5b506101a26102dc366004611a4a565b610e76565b600080356001600160e01b03191681527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9360208190526040822054819060601c8061039d575060038201546001600160a01b03168061039d5760405162461bcd60e51b815260206004820152603260248201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060448201527166756e6374696f6e207369676e617475726560701b6064820152608401610120565b9392505050565b3b151590565b60006103d9826103b8610ebe565b906001600160e01b0319166000908152602091909152604090205460ff1690565b92915050565b6103e761119a565b546001600160a01b0316331461040f5760405162461bcd60e51b815260040161012090611d58565b61046561041c8587611e4f565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061045d9250610f6a915050565b929190610f8e565b5050505050565b6000610476610f6a565b600301546001600160a01b0316919050565b60606000610494610f6a565b600181015490915061ffff1667ffffffffffffffff8111156104c657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156104ef578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610654576000818152600285016020526040812054905b600881101561063f578361052e81611faf565b600188015490955061ffff1685111590506105485761063f565b600581901b82901b6001600160e01b0319811660009081526020889052604081205460601c90805b888110156105d4578a818151811061059857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316836001600160a01b031614156105c257600191506105d4565b806105cc81611faf565b915050610570565b5080156105e35750505061062d565b818a898151811061060457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528761062681611faf565b9850505050505b8061063781611faf565b91505061051b565b5050808061064c90611faf565b9150506104f8565b505082525090565b600080516020612017833981519152546001600160a01b031633146106d55760405162461bcd60e51b815260206004820152602960248201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d696044820152683732b29037bbb732b960b91b6064820152608401610120565b60006106df61119a565b805460405191925033916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a361072581336111be565b61074060006000805160206120178339815191525b906111be565b50565b6060600061074f610f6a565b600181015490915061ffff1667ffffffffffffffff81111561078157634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156107c757816020015b60408051808201909152600081526060602082015281526020019060019003908161079f5790505b50600182015490925060009061ffff1667ffffffffffffffff8111156107fd57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610826578160200160208202803683370190505b50905060008060005b600185015461ffff16821015610bc4576000818152600286016020526040812054905b6008811015610baf578361086581611faf565b600189015490955061ffff16851115905061087f57610baf565b600581901b82901b6001600160e01b0319811660009081526020899052604081205460601c90805b88811015610a1957826001600160a01b03168c82815181106108d957634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03161415610a0757838c828151811061091557634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518b838151811061094157634e487b7160e01b600052603260045260246000fd5b602002602001015160ff168151811061096a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160e01b03191690816001600160e01b0319168152505060ff8a82815181106109ae57634e487b7160e01b600052603260045260246000fd5b602002602001015160ff16106109c357600080fd5b8981815181106109e357634e487b7160e01b600052603260045260246000fd5b6020026020010180518091906109f890611fca565b60ff1690525060019150610a19565b80610a1181611faf565b9150506108a7565b508015610a2857505050610b9d565b818b8981518110610a4957634e487b7160e01b600052603260045260246000fd5b60209081029190910101516001600160a01b03909116905260018a015461ffff1667ffffffffffffffff811115610a9057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610ab9578160200160208202803683370190505b508b8981518110610ada57634e487b7160e01b600052603260045260246000fd5b602002602001015160200181905250828b8981518110610b0a57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151600081518110610b3657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160e01b03191690816001600160e01b031916815250506001898981518110610b7a57634e487b7160e01b600052603260045260246000fd5b60ff9092166020928302919091019091015287610b9681611faf565b9850505050505b80610ba781611faf565b915050610852565b50508080610bbc90611faf565b91505061082f565b5060005b82811015610c47576000848281518110610bf257634e487b7160e01b600052603260045260246000fd5b602002602001015160ff1690506000878381518110610c2157634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905081815250508080610c3f90611faf565b915050610bc8565b508185525050505090565b60006000805160206120178339815191525b546001600160a01b0316919050565b6000610c6461119a565b610c8561119a565b546001600160a01b03163314610cad5760405162461bcd60e51b815260040161012090611d58565b80610cb6610f6a565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b60606000610ce6610f6a565b600181015490915061ffff1667ffffffffffffffff811115610d1857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d41578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610e3f576000818152600285016020526040812054905b6008811015610e2a5783610d8081611faf565b600188015490955061ffff168511159050610d9a57610e2a565b600581901b82901b6001600160e01b0319811660009081526020889052604090205460601c6001600160a01b038a161415610e175780888781518110610df057634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015285610e1381611faf565b9650505b5080610e2281611faf565b915050610d6d565b50508080610e3790611faf565b915050610d4a565b5050825250919050565b6000610e53610f6a565b6001600160e01b0319909216600090815260209290925250604090205460601c90565b610e7e61119a565b546001600160a01b03163314610ea65760405162461bcd60e51b815260040161012090611d58565b6107408160008051602061201783398151915261073a565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083161415610f3c5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610120565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615610fbe5750600381901c60009081526002870160205260409020545b60005b865181101561110e576000878281518110610fec57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000816020015190506000826040015151116110605760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401610120565b600081600281111561108257634e487b7160e01b600052602160045260246000fd5b141561109e576110948a8686856111ff565b9095509350611104565b60028160028111156110c057634e487b7160e01b600052602160045260246000fd5b14156110d2576110948a8686856113c0565b60018160028111156110f457634e487b7160e01b600052602160045260246000fd5b1415611104576111048a83611660565b5050600101610fc1565b5082821461112a5760018701805461ffff191661ffff84161790555b600782161561114c57600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67386868660405161117f93929190611c16565b60405180910390a1611191858561185f565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b805160009081906001600160a01b0316301480611226575082516001600160a01b03163b15155b61127e5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401610120565b60005b8360400151518110156113b3576000846040015182815181106112b457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c1561133b5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401610120565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978114156113a457600389901c600090815260028b0160205260408120989098555b50505060019586019501611281565b5093959294509192505050565b805160009081906001600160a01b0316156114355760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401610120565b600385901c6007861660005b85604001515181101561164c5760008660400151828151811061147457634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c6114ee5760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b606081901c3014156115125760405162461bcd60e51b815260040161012090611d8f565b8861153a57600019909401600081815260028c01602052604090205498509360079350611542565b600019909301925b600584901b89901b6000806001600160e01b031980841690861614611599576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166bffffffffffffffffffffffff86161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b168782146115fc57600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c179055611620565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8661163b57600088815260028f01602052604081208190559b505b505060019093019250611441915050565b5060039190911b1796939550929350505050565b80516001600160a01b03163b6116c85760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401610120565b60005b81604001515181101561185a576000826040015182815181106116fe57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c806117795760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b6001600160a01b0381163014156117a25760405162461bcd60e51b815260040161012090611d8f565b84516001600160a01b03828116911614156118105760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401610120565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166bffffffffffffffffffffffff919091161790556001016116cb565b505050565b8051156001600160a01b03831615146118d15760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401610120565b6001600160a01b038216156119cb576001600160a01b038216301461195e576001600160a01b0382163b61195e5760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401610120565b6000826001600160a01b0316826040516119789190611b9a565b600060405180830381855af49150503d80600081146119b3576040519150601f19603f3d011682016040523d82523d6000602084013e6119b8565b606091505b505090508061185a573d6000803e3d6000fd5b5050565b80356001600160a01b03811681146119e657600080fd5b919050565b80356001600160e01b0319811681146119e657600080fd5b60008083601f840112611a14578182fd5b50813567ffffffffffffffff811115611a2b578182fd5b602083019150836020828501011115611a4357600080fd5b9250929050565b600060208284031215611a5b578081fd5b61039d826119cf565b600080600080600060608688031215611a7b578081fd5b853567ffffffffffffffff80821115611a92578283fd5b818801915088601f830112611aa5578283fd5b813581811115611ab3578384fd5b8960208260051b8501011115611ac7578384fd5b60208301975080965050611add602089016119cf565b94506040880135915080821115611af2578283fd5b50611aff88828901611a03565b969995985093965092949392505050565b600060208284031215611b21578081fd5b61039d826119eb565b6000815180845260208085019450808401835b83811015611b635781516001600160e01b03191687529582019590820190600101611b3d565b509495945050505050565b60008151808452611b86816020860160208601611f7f565b601f01601f19169290920160200192915050565b60008251611bac818460208701611f7f565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015611bf75783516001600160a01b031683529284019291840191600101611bd2565b50909695505050505050565b60208152600061039d6020830184611b2a565b6000606080830181845280875180835260808601915060808160051b87010192506020808a01865b83811015611cad57888603607f19018552815180516001600160a01b031687528381015160038110611c7e57634e487b7160e01b8a52602160045260248afd5b87850152604090810151908701889052611c9a88880182611b2a565b9650509382019390820190600101611c3e565b50506001600160a01b0389169087015250508381036040850152611cd18186611b6e565b979650505050505050565b60006020808301818452808551808352604092508286019150828160051b870101848801865b83811015611d4a57888303603f19018552815180516001600160a01b03168452870151878401879052611d3787850182611b2a565b9588019593505090860190600101611d02565b509098975050505050505050565b6020808252601d908201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604082015260600190565b60208082526022908201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d757461626040820152616c6560f01b606082015260800190565b6040516060810167ffffffffffffffff81118282101715611df457611df4612000565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e2357611e23612000565b604052919050565b600067ffffffffffffffff821115611e4557611e45612000565b5060051b60200190565b6000611e62611e5d84611e2b565b611dfa565b838152602080820191908460053688821b83011115611e7f578586fd5b855b88811015611f7257823567ffffffffffffffff80821115611ea0578889fd5b818a01915060608236031215611eb4578889fd5b611ebc611dd1565b611ec5836119cf565b81528683013560038110611ed7578a8bfd5b8188015260408381013583811115611eed578b8cfd5b939093019236601f850112611f00578a8bfd5b83359250611f10611e5d84611e2b565b83815288810190858a0136868a1b88018c011115611f2c578d8efd5b8d96505b85871015611f5557611f41816119eb565b835260019690960195918a01918a01611f30565b509183019190915250885250509483019491830191600101611e81565b5092979650505050505050565b60005b83811015611f9a578181015183820152602001611f82565b83811115611fa9576000848401525b50505050565b6000600019821415611fc357611fc3611fea565b5060010190565b600060ff821660ff811415611fe157611fe1611fea565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890a2646970667358221220bd930cfc7d47142cc2e541ff334e3933cf9ac9bb977638c6f6fa5e9e5423037a64736f6c63430008040033

Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
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.