Contract 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 2

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcdc8fd1c1de4dc16a9379573929b3e7a8fe0890dd9fc0a306f67dfe23b2cffbbApprove160977262022-06-27 16:55:019 mins ago0x3ad0b53538f1b34a6340759db67dcaf2ed0bb7b6 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000807580829 ETH
0xe372e4eb53cc8d119591577953e5393b3e79e9f7598e34914d9a465030885aafApprove160917972022-06-27 15:55:201 hr 8 mins ago0x0dd9f8d6b0b3735d0eae0a6e6720c6ffb025dfe8 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000806061912 ETH
0x040e27c25e4d75bbe3f453f954c04caa4bb6d01ede67fa0cc17169271a75bc63Approve160789732022-06-27 13:58:283 hrs 5 mins ago0xcad8c3c4bfda74f2d8b043a6eba0c2c3cdb78583 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000803685554 ETH
0x829e11a135d4a750346722a484e1e2754a4dfc9edfe17f450e2ffd0d14335e26Approve160582982022-06-27 11:08:585 hrs 55 mins ago0xcad8c3c4bfda74f2d8b043a6eba0c2c3cdb78583 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000169887229 ETH
0xdc752562926a8155dad3b4b615ab86bc0e59f1978ab2fbff20ec404e966f8cd3Approve160571532022-06-27 10:59:266 hrs 4 mins ago0xf599329262ad104364515e2d66aef5719cb45956 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000170300619 ETH
0x011a606603e13310c559cb87bf46d558c338ffe84f1d862e7a0a71e696998527Approve159739022022-06-26 23:09:5617 hrs 54 mins ago0xc46c19f63971230fab9ef64187629b783237551c IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000223586023 ETH
0x9aa88a6c89e619e3f5eac701572ce953515773315aba0f5644af6445397d8749Approve159706082022-06-26 22:40:3218 hrs 23 mins ago0xb91e2d5a815929874691f26a03b063d0d3fce7fc IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000187714104 ETH
0x2541a3f93d6760e89eab3e6ace17855138d7a75f6bfc974c70d96c649fa530b6Approve159418812022-06-26 17:16:2223 hrs 47 mins ago0xa1e86737eacce5a49d87158571d0b6b3ab5e745d IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000189878911 ETH
0xddc504f549557ae054e92933468aafbcf4395dc4a328a561be727469587e2c84Approve159406852022-06-26 17:01:271 day 2 mins ago0x00fb7ccb1f054792252d31b2f6a5d3e923765d02 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000189419868 ETH
0x764ae44d84d87baead67ff16504d69b5b60716adb87eae436ccf889773d41b39Transfer159071842022-06-26 12:13:471 day 4 hrs ago0x878c0cc4e7fc77249486a5344d9b27be8c135b4e IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000141746249 ETH
0x38a9c51db00433b1d81a6229c4644ab94948117bcf05faf339fb452b6b4c9f81Approve158828082022-06-26 9:04:411 day 7 hrs ago0x26e174dc8ff20831eaa75fef12822e371ad662e7 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000179806533 ETH
0xfbace288f268b4c84ead699152672ec0a9d2e84bedf17de226b83dc81ecce59bApprove158451342022-06-26 3:10:161 day 13 hrs ago0xbc1a7eab1c3842d5fc25704c1b4c7f9f85a0476e IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000215631036 ETH
0x5facf8fd55847acbbf6df739e36b753f53febce540ce7cc796805f6bed1bd8cdApprove157751952022-06-25 13:54:312 days 3 hrs ago0xb5e2429c4df00ed31fd9b69f00dbda887744f409 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000193812347 ETH
0xaf158a1ab76c6c875c9c83d464c19f16f6deb68db288cdd05dd9e7e9f434469fTransfer157397762022-06-25 8:47:022 days 8 hrs ago0xa3114b9a860fe3232aa97b5bde09017ce9f97cd0 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000180558129 ETH
0x1a5e1aed6467c88675638a76da9cc88132779a9ef230588981eddc06224fb0d9Approve157307692022-06-25 7:29:392 days 9 hrs ago0x5919b3d42bd84e816533c2dd6a7dff7d02303e87 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000199908729 ETH
0x7bc7ce9248a4b0459ec0a6d372d840ab246b213c26aa4664ce1593d725ecf871Approve157280102022-06-25 7:04:202 days 9 hrs ago0x2c0e0a004b728bb81b28f52e838ade1753f8189d IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000208224512 ETH
0xada4359ea652adeb72694fc721de7ba6c7f329d0948854b13e78f2e5bbb8b244Approve157036412022-06-25 2:10:332 days 14 hrs ago0xabc67a49d7d75bd04fa1dae22cd4b8c4f796540a IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000228517174 ETH
0x9013ff29bad17f5403522196d0d7337d0df242a9a6670e044b506866d0e75d65Approve156823522022-06-24 20:51:562 days 20 hrs ago0x8f188345cff9c4a9c257608129763a688a83af1c IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000305510203 ETH
0x420cfebdf6c986177d512f8fee50f77314ae44623a113fadac9f7f85ce511b7fApprove156611302022-06-24 16:51:113 days 13 mins ago0xa3114b9a860fe3232aa97b5bde09017ce9f97cd0 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000268751061 ETH
0xb8abcd0e2fe32c68f2c47821b903591aeee0e631c8404b9800eabc0f2acaaf2dTransfer156509592022-06-24 15:10:313 days 1 hr ago0x81aaed5ea3de3628bf6617f7d70809c617d2d765 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000258199965 ETH
0x02cb6b5d2278f5e8eb7d5f1331dd74bc650b3397a3fb281236130642cf1f67e2Approve156401932022-06-24 13:30:343 days 3 hrs ago0xbc277188ab8c9983b8098d6cbd7b0205a819bfb8 IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000273450595 ETH
0x9347539e6964c761ac629050624795bccfe6c2758b8e4299385460045a2f7608Approve155785632022-06-24 3:42:393 days 13 hrs ago0x4804b5c69db338685d1ada05ede0ba63cf6abc4a IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000357384903 ETH
0x76cd825b096c56a89adaff39428a57da55d5f08d9750dc5523e4cc793f6a5746Approve155676952022-06-24 1:32:383 days 15 hrs ago0x0642785c9bd3a38ae1ea0a44f900e09c1e54534c IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000416116763 ETH
0x5934b9b621bf87dd2202ce33fa6dd7cbcdfd5552ab13730932ee29a42ee25a14Approve155452592022-06-23 18:44:533 days 22 hrs ago0xf2b046e9d4335f764459fd66490e27dd2e08acbf IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000422725007 ETH
0x6ca8a45886275b79c93c94fc07183ac83f1c2e1ca8dd790177f3708b432b14aeApprove155325522022-06-23 15:43:544 days 1 hr ago0x01247fdf97ef4ce628d1e639b83a79a78dc1bb8e IN 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH0.000273994868 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x9129b368d9d92ac603ef1478a3a0ff99a73f08fd503a43dc9982fa468071569a160549412022-06-27 10:44:246 hrs 19 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x9129b368d9d92ac603ef1478a3a0ff99a73f08fd503a43dc9982fa468071569a160549412022-06-27 10:44:246 hrs 19 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0x9129b368d9d92ac603ef1478a3a0ff99a73f08fd503a43dc9982fa468071569a160549412022-06-27 10:44:246 hrs 19 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0xa39e37cc5a327141b3ce3d3932e6dab814dde98f2b06a2acbb72f2e09067c3f6160548322022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0xa39e37cc5a327141b3ce3d3932e6dab814dde98f2b06a2acbb72f2e09067c3f6160548322022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0xa39e37cc5a327141b3ce3d3932e6dab814dde98f2b06a2acbb72f2e09067c3f6160548322022-06-27 10:42:516 hrs 21 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0x957a49b7d0a27f6a78e93148e1abb2db308c272bd42c17ed7ebf0351217d6603160548312022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x957a49b7d0a27f6a78e93148e1abb2db308c272bd42c17ed7ebf0351217d6603160548312022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0x957a49b7d0a27f6a78e93148e1abb2db308c272bd42c17ed7ebf0351217d6603160548312022-06-27 10:42:516 hrs 21 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0x1c01ac62503325dfda3bfa821bfa64ea30bf00e110f1406dde3000e3eccdce60160547952022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x1c01ac62503325dfda3bfa821bfa64ea30bf00e110f1406dde3000e3eccdce60160547952022-06-27 10:42:516 hrs 21 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0x1c01ac62503325dfda3bfa821bfa64ea30bf00e110f1406dde3000e3eccdce60160547952022-06-27 10:42:516 hrs 21 mins ago Balancer: Vault0x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0xec6295e9d4b87d7617c6d91ff33d73d7425e67342330da9a39b29982546f6d13160547522022-06-27 10:42:096 hrs 22 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0xec6295e9d4b87d7617c6d91ff33d73d7425e67342330da9a39b29982546f6d13160547522022-06-27 10:42:096 hrs 22 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0xec6295e9d4b87d7617c6d91ff33d73d7425e67342330da9a39b29982546f6d13160547522022-06-27 10:42:096 hrs 22 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0xb9bbcdae2f5573bf8f620dc21a201a729c927b73f929fa8bb09f54e26774efb2160546582022-06-27 10:42:096 hrs 22 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0xb9bbcdae2f5573bf8f620dc21a201a729c927b73f929fa8bb09f54e26774efb2160546582022-06-27 10:42:096 hrs 22 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0xb9bbcdae2f5573bf8f620dc21a201a729c927b73f929fa8bb09f54e26774efb2160546582022-06-27 10:42:096 hrs 22 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0x9e23dbc5401a6e4dbe80904d633c64e4058e8189ddf8c35b99dedd70c25c4732160545492022-06-27 10:41:026 hrs 23 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x9e23dbc5401a6e4dbe80904d633c64e4058e8189ddf8c35b99dedd70c25c4732160545492022-06-27 10:41:026 hrs 23 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0x9e23dbc5401a6e4dbe80904d633c64e4058e8189ddf8c35b99dedd70c25c4732160545492022-06-27 10:41:026 hrs 23 mins ago 0xd997f35c9b1281b82c8928039d14cddab5e13c200x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0x5211e80b4e93b5916dc85d5cc94962786fa3add3c32006607067eca983599b5f160545402022-06-27 10:41:026 hrs 23 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
0x5211e80b4e93b5916dc85d5cc94962786fa3add3c32006607067eca983599b5f160545402022-06-27 10:41:026 hrs 23 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0xe72ba9418b5f2ce0a6a40501fe77c6839aa373330 ETH
0x5211e80b4e93b5916dc85d5cc94962786fa3add3c32006607067eca983599b5f160545402022-06-27 10:41:026 hrs 23 mins ago 0x104f1459a2ffea528121759b238bb609034c2f010x040d1edc9569d4bab2d15287dc5a4f10f56a56b80 ETH
0x23cc355d75243f5c0125ea8bca1842e8353e3d3f337d7d684f6cb1b6edd20381160544362022-06-27 10:39:486 hrs 24 mins ago 0x040d1edc9569d4bab2d15287dc5a4f10f56a56b8 0x3f770ac673856f105b586bb393d122721265ad460 ETH
[ Download CSV Export 
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
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f

Contract Name:
ClonableBeaconProxy

Compiler Version
v0.6.11+commit.5ef660b1

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion
File 1 of 9 : ClonableBeaconProxy.sol
// SPDX-License-Identifier: Apache-2.0

pragma solidity >=0.6.0 <0.8.0;

import "@openzeppelin/contracts/proxy/BeaconProxy.sol";
import "@openzeppelin/contracts/proxy/UpgradeableBeacon.sol";
import "@openzeppelin/contracts/utils/Create2.sol";

interface ProxySetter {
    function beacon() external view returns (address);
}

contract ClonableBeaconProxy is BeaconProxy {
    constructor() public BeaconProxy(ProxySetter(msg.sender).beacon(), "") {}
}

contract BeaconProxyFactory is ProxySetter {
    bytes32 public constant cloneableProxyHash = keccak256(type(ClonableBeaconProxy).creationCode);

    /**
     * @notice utility function used in ClonableBeaconProxy.
     * @dev this method makes it possible to use ClonableBeaconProxy.creationCode without encoding constructor parameters
     * @return the beacon to be used by the proxy contract.
     */
    address public override beacon;

    function initialize(address _beacon) external {
        require(_beacon != address(0), "INVALID_BEACON");
        require(beacon == address(0), "ALREADY_INIT");
        beacon = _beacon;
    }

    function getSalt(address user, bytes32 userSalt) public pure returns (bytes32) {
        return keccak256(abi.encode(user, userSalt));
    }

    function createProxy(bytes32 userSalt) external returns (address) {
        // deployment will fail and this function will revert if contract `salt` is not unique
        bytes32 salt = getSalt(msg.sender, userSalt);
        address createdContract = address(new ClonableBeaconProxy{ salt: salt }());
        return createdContract;
    }

    function calculateExpectedAddress(address user, bytes32 userSalt)
        public
        view
        returns (address)
    {
        bytes32 salt = getSalt(user, userSalt);
        return Create2.computeAddress(salt, cloneableProxyHash, address(this));
    }

    function calculateExpectedAddress(bytes32 salt) public view returns (address) {
        return Create2.computeAddress(salt, cloneableProxyHash, address(this));
    }
}

File 2 of 9 : BeaconProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./Proxy.sol";
import "../utils/Address.sol";
import "./IBeacon.sol";

/**
 * @dev This contract implements a proxy that gets the implementation address for each call from a {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.
 *
 * _Available since v3.4._
 */
contract BeaconProxy is Proxy {
    /**
     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 private constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Initializes the proxy with `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 initializating 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) public payable {
        assert(_BEACON_SLOT == bytes32(uint256(keccak256("eip1967.proxy.beacon")) - 1));
        _setBeacon(beacon, data);
    }

    /**
     * @dev Returns the current beacon address.
     */
    function _beacon() internal view virtual returns (address beacon) {
        bytes32 slot = _BEACON_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            beacon := sload(slot)
        }
    }

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

    /**
     * @dev Changes the proxy to use a new beacon.
     *
     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.
     *
     * Requirements:
     *
     * - `beacon` must be a contract.
     * - The implementation returned by `beacon` must be a contract.
     */
    function _setBeacon(address beacon, bytes memory data) internal virtual {
        require(
            Address.isContract(beacon),
            "BeaconProxy: beacon is not a contract"
        );
        require(
            Address.isContract(IBeacon(beacon).implementation()),
            "BeaconProxy: beacon implementation is not a contract"
        );
        bytes32 slot = _BEACON_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, beacon)
        }

        if (data.length > 0) {
            Address.functionDelegateCall(_implementation(), data, "BeaconProxy: function call failed");
        }
    }
}

File 3 of 9 : UpgradeableBeacon.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./IBeacon.sol";
import "../access/Ownable.sol";
import "../utils/Address.sol";

/**
 * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their
 * implementation contract, which is where they will delegate all function calls.
 *
 * An owner is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon.
 */
contract UpgradeableBeacon is IBeacon, Ownable {
    address private _implementation;

    /**
     * @dev Emitted when the implementation returned by the beacon is changed.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the
     * beacon.
     */
    constructor(address implementation_) public {
        _setImplementation(implementation_);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function implementation() public view virtual override returns (address) {
        return _implementation;
    }

    /**
     * @dev Upgrades the beacon to a new implementation.
     *
     * Emits an {Upgraded} event.
     *
     * Requirements:
     *
     * - msg.sender must be the owner of the contract.
     * - `newImplementation` must be a contract.
     */
    function upgradeTo(address newImplementation) public virtual onlyOwner {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Sets the implementation contract address for this beacon
     *
     * Requirements:
     *
     * - `newImplementation` must be a contract.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableBeacon: implementation is not a contract");
        _implementation = newImplementation;
    }
}

File 4 of 9 : Create2.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer.
 * `CREATE2` can be used to compute in advance the address where a smart
 * contract will be deployed, which allows for interesting new mechanisms known
 * as 'counterfactual interactions'.
 *
 * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more
 * information.
 */
library Create2 {
    /**
     * @dev Deploys a contract using `CREATE2`. The address where the contract
     * will be deployed can be known in advance via {computeAddress}.
     *
     * The bytecode for a contract can be obtained from Solidity with
     * `type(contractName).creationCode`.
     *
     * Requirements:
     *
     * - `bytecode` must not be empty.
     * - `salt` must have not been used for `bytecode` already.
     * - the factory must have a balance of at least `amount`.
     * - if `amount` is non-zero, `bytecode` must have a `payable` constructor.
     */
    function deploy(uint256 amount, bytes32 salt, bytes memory bytecode) internal returns (address) {
        address addr;
        require(address(this).balance >= amount, "Create2: insufficient balance");
        require(bytecode.length != 0, "Create2: bytecode length is zero");
        // solhint-disable-next-line no-inline-assembly
        assembly {
            addr := create2(amount, add(bytecode, 0x20), mload(bytecode), salt)
        }
        require(addr != address(0), "Create2: Failed on deploy");
        return addr;
    }

    /**
     * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the
     * `bytecodeHash` or `salt` will result in a new destination address.
     */
    function computeAddress(bytes32 salt, bytes32 bytecodeHash) internal view returns (address) {
        return computeAddress(salt, bytecodeHash, address(this));
    }

    /**
     * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at
     * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}.
     */
    function computeAddress(bytes32 salt, bytes32 bytecodeHash, address deployer) internal pure returns (address) {
        bytes32 _data = keccak256(
            abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHash)
        );
        return address(uint160(uint256(_data)));
    }
}

File 5 of 9 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        // solhint-disable-next-line no-inline-assembly
        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 This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @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 {
        _fallback();
    }

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

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}

File 6 of 9 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 7 of 9 : IBeacon.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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);
}

File 8 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../utils/Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 9 of 9 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50336001600160a01b03166359659e906040518163ffffffff1660e01b815260040160206040518083038186803b15801561004a57600080fd5b505afa15801561005e573d6000803e3d6000fd5b505050506040513d602081101561007457600080fd5b5051604080516020810182526000815281517f656970313936372e70726f78792e626561636f6e00000000000000000000000081529151918290036014019091206000805160206107a1833981519152600019909101146100d157fe5b6100e482826001600160e01b036100eb16565b505061049a565b6100fe8261024960201b6100311760201c565b6101395760405162461bcd60e51b81526004018080602001828103825260258152602001806107e26025913960400191505060405180910390fd5b6101b1826001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017557600080fd5b505afa158015610189573d6000803e3d6000fd5b505050506040513d602081101561019f57600080fd5b5051610249602090811b61003117901c565b6101ec5760405162461bcd60e51b815260040180806020018281038252603481526020018061082d6034913960400191505060405180910390fd5b6000805160206107a1833981519152828155815115610244576102426102196001600160e01b0361024f16565b836040518060600160405280602181526020016107c1602191396102cb60201b6100371760201c565b505b505050565b3b151590565b60006102626001600160e01b036103e316565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029a57600080fd5b505afa1580156102ae573d6000803e3d6000fd5b505050506040513d60208110156102c457600080fd5b5051905090565b60606102df846001600160e01b0361024916565b61031a5760405162461bcd60e51b81526004018080602001828103825260268152602001806108076026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b602083106103585780518252601f199092019160209182019101610339565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146103b8576040519150601f19603f3d011682016040523d82523d6000602084013e6103bd565b606091505b5090925090506103d78282866001600160e01b036103f616565b925050505b9392505050565b6000805160206107a18339815191525490565b606083156104055750816103dc565b8251156104155782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561045f578181015183820152602001610447565b50505050905090810190601f16801561048c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6102f8806104a96000396000f3fe60806040523661001357610011610017565b005b6100115b61001f61002f565b61002f61002a61013c565b6101af565b565b3b151590565b606061004284610031565b61007d5760405162461bcd60e51b815260040180806020018281038252602681526020018061029d6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b602083106100bb5780518252601f19909201916020918201910161009c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101308282866101d3565b925050505b9392505050565b6000610146610277565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017e57600080fd5b505afa158015610192573d6000803e3d6000fd5b505050506040513d60208110156101a857600080fd5b5051905090565b3660008037600080366000845af43d6000803e8080156101ce573d6000f35b3d6000fd5b606083156101e2575081610135565b8251156101f25782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561023c578181015183820152602001610224565b50505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50549056fe416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374a2646970667358221220aeef0abef4c11b04ff0868cdc7dcb509103be03cfebb8f3070abd786c02b421064736f6c634300060b0033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50426561636f6e50726f78793a2066756e6374696f6e2063616c6c206661696c6564426561636f6e50726f78793a20626561636f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374426561636f6e50726f78793a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.