ETH Price: $3,165.66 (+3.47%)

Token

Red Hat - The Book of Oaths (RDHTBOO)
 

Overview

Max Total Supply

145 RDHTBOO

Holders

124

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0xdf35c2f217593f1065b46c77b8e3682342b4e916
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xdBc63dEd...0755c5d21
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
FairxyzBeaconProxy

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 2 : FairxyzBeaconProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

import {IBeacon} from "@openzeppelin/contracts/proxy/beacon/IBeacon.sol";

/**
 * @dev This contract implements a proxy that gets the implementation address for each call from an {UpgradeableBeacon}.
 *
 * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't
 * conflict with the storage layout of the implementation behind the proxy.
 */
contract FairxyzBeaconProxy {
    /**
     * @dev Emitted when the beacon is upgraded.
     */
    event BeaconUpgraded(address indexed beacon);

    struct AddressSlot {
        address value;
    }

    /**
     * @dev The storage slot of the Beacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 internal constant _BEACON_SLOT =
        0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Initializes the proxy, upgrading to beacon `beacon`.
     *
     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This
     * will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity
     * constructor.
     *
     * Requirements:
     *
     * - `beacon` must be a contract with the interface {IBeacon}.
     */
    constructor(address beacon, bytes memory data) payable {
        _upgradeBeaconToAndCall(beacon, data);
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _delegate(_implementation());
    }

    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(
                gas(),
                implementation,
                0,
                calldatasize(),
                0,
                0
            )

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function _getAddressSlot(
        bytes32 slot
    ) internal pure returns (AddressSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns the current implementation address of the associated beacon.
     */
    function _implementation() internal view virtual returns (address) {
        return IBeacon(_getAddressSlot(_BEACON_SLOT).value).implementation();
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data
    ) internal {
        require(
            newBeacon.code.length > 0,
            "ERC1967: new beacon is not a contract"
        );

        address implementation = IBeacon(newBeacon).implementation();

        require(
            implementation.code.length > 0,
            "ERC1967: beacon implementation is not a contract"
        );

        _getAddressSlot(_BEACON_SLOT).value = newBeacon;

        emit BeaconUpgraded(newBeacon);

        if (data.length > 0) {
            (bool success, bytes memory returndata) = implementation
                .delegatecall(data);

            if (!success) {
                if (returndata.length > 0) {
                    assembly {
                        let returndata_size := mload(returndata)
                        revert(add(32, returndata), returndata_size)
                    }
                } else {
                    revert("Address: low-level delegate call failed");
                }
            }
        }
    }
}

File 2 of 2 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.0;

/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
interface IBeacon {
    /**
     * @dev Must return an address that can be used as a delegate call target.
     *
     * {BeaconProxy} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405161058f38038061058f83398101604081905261002291610311565b61002c8282610033565b505061040f565b6000826001600160a01b03163b116100a05760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6000826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010491906103d1565b90506000816001600160a01b03163b116101795760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610097565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0385169081179091556040517f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28151156102b657600080826001600160a01b03168460405161020191906103f3565b600060405180830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b5091509150816102b35780511561025b5780518082602001fd5b60405162461bcd60e51b815260206004820152602760248201527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6044820152660819985a5b195960ca1b6064820152608401610097565b50505b505050565b80516001600160a01b03811681146102d257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103085781810151838201526020016102f0565b50506000910152565b6000806040838503121561032457600080fd5b61032d836102bb565b60208401519092506001600160401b038082111561034a57600080fd5b818501915085601f83011261035e57600080fd5b815181811115610370576103706102d7565b604051601f8201601f19908116603f01168101908382118183101715610398576103986102d7565b816040528281528860208487010111156103b157600080fd5b6103c28360208301602088016102ed565b80955050505050509250929050565b6000602082840312156103e357600080fd5b6103ec826102bb565b9392505050565b600082516104058184602087016102ed565b9190910192915050565b6101718061041e6000396000f3fe60806040523661001b57610019610014610022565b6100da565b005b6100196100145b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054604080517f5c60da1b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c60da1b9160048083019260209291908290030181865afa1580156100b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d591906100fe565b905090565b3660008037600080366000845af43d6000803e8080156100f9573d6000f35b3d6000fd5b60006020828403121561011057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013457600080fd5b939250505056fea26469706673582212205f937e101a15b5b43cb683925cb18aa9952c3258643ff276fc0c5c7cd665df4c64736f6c63430008130033000000000000000000000000e1b12cf925475dd0b019ca5b992edc68fa33d5fa000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003a465a79c8d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000a418734c291ecb1b694ffc5ab7fcd0d12a496ed300000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000124d7574616e742043617274656c204f617468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f415448000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d633459456b78343163566f6b525462464a796d65344573435758714455676b44543272364143434e584854323f00000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000649df0d000000000000000000000000000000000000000000000000000000000a954f9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040523661001b57610019610014610022565b6100da565b005b6100196100145b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054604080517f5c60da1b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c60da1b9160048083019260209291908290030181865afa1580156100b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d591906100fe565b905090565b3660008037600080366000845af43d6000803e8080156100f9573d6000f35b3d6000fd5b60006020828403121561011057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013457600080fd5b939250505056fea26469706673582212205f937e101a15b5b43cb683925cb18aa9952c3258643ff276fc0c5c7cd665df4c64736f6c63430008130033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.