Contract 0xf0b456250dc9990662a6f25808cc74a6d1131ea9

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0xbedcf8fb6585c081ebd1aa5e823c1a355c6f68bb0b0f78387ce58b555bc4f71767744802021-04-22 1:54:4846 mins ago0x488c7ae5f81e21fb2daadf6a9f641c84c9b0a7f8 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730325
0xbadb925f60a1df7e0ae37e4e0e10599e7fc4705027d0f1e4dc3fd1d3d6f0abc067744022021-04-22 1:50:5450 mins ago0x4406bdbdc934a4fd8b111c104562f95d8be1d6c8 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000880205
0x4ede151893d3b7192f222d411cc0c7127d4b72a0bd1e2dc0b351d96da7a868b667737252021-04-22 1:16:421 hr 24 mins ago0x4406bdbdc934a4fd8b111c104562f95d8be1d6c8 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x44a788c9a73ace2f6794362af0e7b78ee7b808a6531d6a27ee27cd534ad07c7867736312021-04-22 1:12:001 hr 29 mins ago0xe32938a976cda5331ab33e4df306b41c7aa5363f IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0xd963e2050a42869481dd2c40763428b6e7669554eac843a1cf7a75d46d34cd3d67725012021-04-22 0:15:302 hrs 25 mins ago0x9913da5c4126e30b9c4942b5c5b548f861885b00 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730205
0x6acc717bd0ad51b0c00573ecef4c9ae2abf63c412a38e5b198c6a1592196e66f67722992021-04-22 0:05:242 hrs 35 mins ago0xdb0132c875ea7a00c4a6283da592ae6500205396 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000880145
0x4a70c5854afbe0e22a6051dbd523682442b09f581afecd7f808b13193aeeb13767722892021-04-22 0:04:542 hrs 36 mins ago0x76a8d26b61495a4a8f60e08be83912194a820a5c IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.00093493
0xd6b429091b768ad0c0d0e1bbc7fdf4ad10deb46abbdcc270ae88faeaac3581a967722682021-04-22 0:03:512 hrs 37 mins ago0x9913da5c4126e30b9c4942b5c5b548f861885b00 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000880145
0x013d9c4e9c2a79838869ccf423870fda16dbc453a5a61a3b7453d00f8db0acea67708802021-04-21 22:54:013 hrs 47 mins ago0xcb23f74da73f434ef1990577dc69df534847c252 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x462b327f3124a6a52c09bbe27e480e9c60c35fb14a42fe33f0574dcddb44d94d67707672021-04-21 22:48:223 hrs 52 mins ago0x851497cf9b1362858c095cdd577b506d24f57336 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000805265
0x663a7af96817d076f90956ce16fe2142597dba132d0fc32f50671b3baa6db12767706332021-04-21 22:41:403 hrs 59 mins ago0xb4a134bde4261a45bf60d19f7a51cc1c2c451523 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x589263a4d7b07ed23f2a7b0597e389abe9dd3e854a5ae319c2562c1356ceb0fd67696692021-04-21 21:51:554 hrs 49 mins ago0x7c9bef5b1921b5d8a1a2127a0134a111fe607eae IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0xd68c4a1eacc7772f2039b23477999de0905597557dceb89297f8f802c436459f67692552021-04-21 21:29:595 hrs 11 mins ago0x888000001071e16f3ccb1b426cfa383597db153d IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.002364876
0x84716e83696779fc1bb9bc0475523f21c6fc60ff33f8ddee9cf716e3ed58b5f167691292021-04-21 21:23:405 hrs 17 mins ago0x7c9bef5b1921b5d8a1a2127a0134a111fe607eae IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000805385
0xcb89433e380fd3bf2957b3c99367fec94090e20d641d489f5d3bb401c54408a967686902021-04-21 21:00:385 hrs 40 mins ago0xde9483e822039918940e76668c586e944c29e072 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0xaad09dd25c6551f71423f33f52732d83f2821af363136258deae8f4c999701b867682222021-04-21 20:35:106 hrs 5 mins ago0x888188e6cead31748a814bb7d7c621a0f8aa4235 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x4701fb433c0ecd6946b3769b64c85f5424c2214b4718eea083ebe5dfaf2c725667674562021-04-21 19:56:516 hrs 44 mins ago0x8242acba56207dcd3dd3fb3b7ebd3ef137501c7e IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000805205
0x562001ea56fbf96bc13a8624470f01e19aa11de388811f0265393cdcad7ecfbd67671182021-04-21 19:39:577 hrs 1 min ago0x5b328bb20fbf15bbecc82298db269254c3fddb5d IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x1b5c0994e0eb20b3f63121bf0c2c9d45bdcd386c8faea580f6863519b37bb3a467658172021-04-21 18:34:488 hrs 6 mins ago0xc49bf14ce88b523cde88a9c1e23d6bed48638404 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0xf7749dc10d5c4a2abbaa117c1880b97ee312ef13d8f62764b5852ac2b792024267653632021-04-21 18:11:578 hrs 29 mins ago0xd08aa7b46be26a6cb9cdeddb1aed14d5dd92628f IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730265
0xfa8a4e8a05679ef8a47b82f229699fde21577c0f0b78b79c376b7a3b0ba251c767646152021-04-21 17:34:009 hrs 7 mins ago0xc49bf14ce88b523cde88a9c1e23d6bed48638404 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730265
0x3f838be989f3573e3c867e1d17d2d68c012ac6a4ca3d486eb2b35fa51add6a4567644932021-04-21 17:27:549 hrs 13 mins ago0xb4a134bde4261a45bf60d19f7a51cc1c2c451523 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730205
0x70379ebdbe12e29de319b4200b107f0f0d65ebc52d14fc7ca5eec5d93159f3f067639842021-04-21 17:02:039 hrs 39 mins ago0xc8384fa1486f3b956493e589c34a78ffcb625b65 IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000730385
0x2407bbac69742dc16e1ed858239dd5da689c5a7b0d0a06117c093b63a9d9e13867637412021-04-21 16:48:559 hrs 52 mins ago0x07ffb4afe923aa7a1d9d79cc84421ba0721dd31b IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000805325
0x95199f8a4a99c083a05584f9a83c8367a2db5ac4688f745c8befb82fa1f81ece67636232021-04-21 16:42:389 hrs 58 mins ago0x926fd5418e69563e9828cd73a3317dfcc4d3c5ec IN  0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB0.000941916
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xbb41a64932780c954dc8b0d1108895f2cd55d33da9a04d195d1df9db6984845554710732021-03-07 11:46:3645 days 14 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0xbb41a64932780c954dc8b0d1108895f2cd55d33da9a04d195d1df9db6984845554710732021-03-07 11:46:3645 days 14 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x7faf9f7b2006124599cc4f8fb556a6d46015fefe0 BNB
0xbb41a64932780c954dc8b0d1108895f2cd55d33da9a04d195d1df9db6984845554710732021-03-07 11:46:3645 days 14 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0xbb41a64932780c954dc8b0d1108895f2cd55d33da9a04d195d1df9db6984845554710732021-03-07 11:46:3645 days 14 hrs ago 0x7faf9f7b2006124599cc4f8fb556a6d46015fefe 0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB
0x619731a0ba5c43f473c28986fb38fa446616c6e8dfa1d31c6487e29a2c42ea9454709422021-03-07 11:40:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0x619731a0ba5c43f473c28986fb38fa446616c6e8dfa1d31c6487e29a2c42ea9454709422021-03-07 11:40:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 PancakeSwap: CAKE Token0 BNB
0x619731a0ba5c43f473c28986fb38fa446616c6e8dfa1d31c6487e29a2c42ea9454709422021-03-07 11:40:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0x619731a0ba5c43f473c28986fb38fa446616c6e8dfa1d31c6487e29a2c42ea9454709422021-03-07 11:40:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0x619731a0ba5c43f473c28986fb38fa446616c6e8dfa1d31c6487e29a2c42ea9454709422021-03-07 11:40:0345 days 15 hrs ago 0x05185872898b6f94aa600177ef41b9334b1fa48b 0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB
0x38956af04731f48e82b6812044fa27feaccab8976322f24e0d7c838e3a07c50d54708222021-03-07 11:34:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0x38956af04731f48e82b6812044fa27feaccab8976322f24e0d7c838e3a07c50d54708222021-03-07 11:34:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 DAI Stablecoin0 BNB
0x38956af04731f48e82b6812044fa27feaccab8976322f24e0d7c838e3a07c50d54708222021-03-07 11:34:0345 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0x8e4570f82d32737d6b688a9d03388e77d15e2bf12d4807900901099a520fb25954699252021-03-07 10:49:1245 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0x8e4570f82d32737d6b688a9d03388e77d15e2bf12d4807900901099a520fb25954699252021-03-07 10:49:1245 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 DAI Stablecoin0 BNB
0x8e4570f82d32737d6b688a9d03388e77d15e2bf12d4807900901099a520fb25954699252021-03-07 10:49:1245 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0x8e4570f82d32737d6b688a9d03388e77d15e2bf12d4807900901099a520fb25954699252021-03-07 10:49:1245 days 15 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0x8e4570f82d32737d6b688a9d03388e77d15e2bf12d4807900901099a520fb25954699252021-03-07 10:49:1245 days 15 hrs ago 0x05185872898b6f94aa600177ef41b9334b1fa48b 0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB
0xfb8b37b5874e445bc89fad072e036a57bc60ae0ceeb65d833e9f2f4a91d3bfcf54695912021-03-07 10:32:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0xfb8b37b5874e445bc89fad072e036a57bc60ae0ceeb65d833e9f2f4a91d3bfcf54695912021-03-07 10:32:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 USD Coin: USDC Token0 BNB
0xfb8b37b5874e445bc89fad072e036a57bc60ae0ceeb65d833e9f2f4a91d3bfcf54695912021-03-07 10:32:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0xd321313bede954e34f209a10a937dd89e7d0a265bd35880f25d182f659526f0154695312021-03-07 10:29:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0xd321313bede954e34f209a10a937dd89e7d0a265bd35880f25d182f659526f0154695312021-03-07 10:29:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 BUSD-T Stablecoin0 BNB
0xd321313bede954e34f209a10a937dd89e7d0a265bd35880f25d182f659526f0154695312021-03-07 10:29:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x05185872898b6f94aa600177ef41b9334b1fa48b0 BNB
0xd321313bede954e34f209a10a937dd89e7d0a265bd35880f25d182f659526f0154695312021-03-07 10:29:3045 days 16 hrs ago 0xf0b456250dc9990662a6f25808cc74a6d1131ea9 0x19dd70371a8fe50f1fa8ff8b4cfb091a41be548f0 BNB
0xd321313bede954e34f209a10a937dd89e7d0a265bd35880f25d182f659526f0154695312021-03-07 10:29:3045 days 16 hrs ago 0x05185872898b6f94aa600177ef41b9334b1fa48b 0xf0b456250dc9990662a6f25808cc74a6d1131ea90 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EternalStorageProxy

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at BscScan.com on 2021-02-12
*/

// File: contracts/upgradeability/EternalStorage.sol

pragma solidity 0.7.5;

/**
 * @title EternalStorage
 * @dev This contract holds all the necessary state variables to carry out the storage of any contract.
 */
contract EternalStorage {
    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;
}

// File: @openzeppelin/contracts/utils/Address.sol


pragma solidity ^0.7.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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        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: contracts/upgradeability/Proxy.sol

pragma solidity 0.7.5;

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
abstract contract Proxy {
    /**
     * @dev Tells the address of the implementation where every call will be delegated.
     * @return address of the implementation to which it will be delegated
     */
    function implementation() public view virtual returns (address);

    /**
     * @dev Fallback function allowing to perform a delegatecall to the given implementation.
     * This function will return whatever the implementation call returns
     */
    fallback() external payable {
        // solhint-disable-previous-line no-complex-fallback
        address _impl = implementation();
        require(_impl != address(0));
        assembly {
            /*
                0x40 is the "free memory slot", meaning a pointer to next slot of empty memory. mload(0x40)
                loads the data in the free memory slot, so `ptr` is a pointer to the next slot of empty
                memory. It's needed because we're going to write the return data of delegatecall to the
                free memory slot.
            */
            let ptr := mload(0x40)
            /*
                `calldatacopy` is copy calldatasize bytes from calldata
                First argument is the destination to which data is copied(ptr)
                Second argument specifies the start position of the copied data.
                    Since calldata is sort of its own unique location in memory,
                    0 doesn't refer to 0 in memory or 0 in storage - it just refers to the zeroth byte of calldata.
                    That's always going to be the zeroth byte of the function selector.
                Third argument, calldatasize, specifies how much data will be copied.
                    calldata is naturally calldatasize bytes long (same thing as msg.data.length)
            */
            calldatacopy(ptr, 0, calldatasize())
            /*
                delegatecall params explained:
                gas: the amount of gas to provide for the call. `gas` is an Opcode that gives
                    us the amount of gas still available to execution

                _impl: address of the contract to delegate to

                ptr: to pass copied data

                calldatasize: loads the size of `bytes memory data`, same as msg.data.length

                0, 0: These are for the `out` and `outsize` params. Because the output could be dynamic,
                        these are set to 0, 0 so the output data will not be written to memory. The output
                        data will be read using `returndatasize` and `returdatacopy` instead.

                result: This will be 0 if the call fails and 1 if it succeeds
            */
            let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0)
            /*

            */
            /*
                ptr current points to the value stored at 0x40,
                because we assigned it like ptr := mload(0x40).
                Because we use 0x40 as a free memory pointer,
                we want to make sure that the next time we want to allocate memory,
                we aren't overwriting anything important.
                So, by adding ptr and returndatasize,
                we get a memory location beyond the end of the data we will be copying to ptr.
                We place this in at 0x40, and any reads from 0x40 will now read from free memory
            */
            mstore(0x40, add(ptr, returndatasize()))
            /*
                `returndatacopy` is an Opcode that copies the last return data to a slot. `ptr` is the
                    slot it will copy to, 0 means copy from the beginning of the return data, and size is
                    the amount of data to copy.
                `returndatasize` is an Opcode that gives us the size of the last return data. In this case, that is the size of the data returned from delegatecall
            */
            returndatacopy(ptr, 0, returndatasize())

            /*
                if `result` is 0, revert.
                if `result` is 1, return `size` amount of data from `ptr`. This is the data that was
                copied to `ptr` from the delegatecall return data
            */
            switch result
                case 0 {
                    revert(ptr, returndatasize())
                }
                default {
                    return(ptr, returndatasize())
                }
        }
    }
}

// File: contracts/upgradeability/UpgradeabilityStorage.sol

pragma solidity 0.7.5;

/**
 * @title UpgradeabilityStorage
 * @dev This contract holds all the necessary state variables to support the upgrade functionality
 */
contract UpgradeabilityStorage {
    // Version name of the current implementation
    uint256 internal _version;

    // Address of the current implementation
    address internal _implementation;

    /**
     * @dev Tells the version name of the current implementation
     * @return uint256 representing the name of the current version
     */
    function version() external view returns (uint256) {
        return _version;
    }

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

// File: contracts/upgradeability/UpgradeabilityProxy.sol

pragma solidity 0.7.5;




/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy, UpgradeabilityStorage {
    /**
     * @dev This event will be emitted every time the implementation gets upgraded
     * @param version representing the version name of the upgraded implementation
     * @param implementation representing the address of the upgraded implementation
     */
    event Upgraded(uint256 version, address indexed implementation);

    /**
     * @dev Tells the address of the current implementation
     * @return address of the current implementation
     */
    function implementation() public view override(Proxy, UpgradeabilityStorage) returns (address) {
        return UpgradeabilityStorage.implementation();
    }

    /**
     * @dev Upgrades the implementation address
     * @param version representing the version name of the new implementation to be set
     * @param implementation representing the address of the new implementation to be set
     */
    function _upgradeTo(uint256 version, address implementation) internal {
        require(_implementation != implementation);

        // This additional check verifies that provided implementation is at least a contract
        require(Address.isContract(implementation));

        // This additional check guarantees that new version will be at least greater than the privios one,
        // so it is impossible to reuse old versions, or use the last version twice
        require(version > _version);

        _version = version;
        _implementation = implementation;
        emit Upgraded(version, implementation);
    }
}

// File: contracts/upgradeability/UpgradeabilityOwnerStorage.sol

pragma solidity 0.7.5;

/**
 * @title UpgradeabilityOwnerStorage
 * @dev This contract keeps track of the upgradeability owner
 */
contract UpgradeabilityOwnerStorage {
    // Owner of the contract
    address internal _upgradeabilityOwner;

    /**
     * @dev Tells the address of the owner
     * @return the address of the owner
     */
    function upgradeabilityOwner() public view returns (address) {
        return _upgradeabilityOwner;
    }

    /**
     * @dev Sets the address of the owner
     */
    function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
        _upgradeabilityOwner = newUpgradeabilityOwner;
    }
}

// File: contracts/upgradeability/OwnedUpgradeabilityProxy.sol

pragma solidity 0.7.5;



/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityOwnerStorage, UpgradeabilityProxy {
    /**
     * @dev Event to show ownership has been transferred
     * @param previousOwner representing the address of the previous owner
     * @param newOwner representing the address of the new owner
     */
    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    /**
     * @dev the constructor sets the original owner of the contract to the sender account.
     */
    constructor() {
        setUpgradeabilityOwner(msg.sender);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyUpgradeabilityOwner() {
        require(msg.sender == upgradeabilityOwner());
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferProxyOwnership(address newOwner) external onlyUpgradeabilityOwner {
        require(newOwner != address(0));
        emit ProxyOwnershipTransferred(upgradeabilityOwner(), newOwner);
        setUpgradeabilityOwner(newOwner);
    }

    /**
     * @dev Allows the upgradeability owner to upgrade the current version of the proxy.
     * @param version representing the version name of the new implementation to be set.
     * @param implementation representing the address of the new implementation to be set.
     */
    function upgradeTo(uint256 version, address implementation) public onlyUpgradeabilityOwner {
        _upgradeTo(version, implementation);
    }

    /**
     * @dev Allows the upgradeability owner to upgrade the current version of the proxy and call the new implementation
     * to initialize whatever is needed through a low level call.
     * @param version representing the version name of the new implementation to be set.
     * @param implementation representing the address of the new implementation to be set.
     * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
     * signature of the implementation to be called with the needed payload
     */
    function upgradeToAndCall(
        uint256 version,
        address implementation,
        bytes calldata data
    ) external payable onlyUpgradeabilityOwner {
        upgradeTo(version, implementation);
        // solhint-disable-next-line avoid-call-value
        (bool status, ) = address(this).call{ value: msg.value }(data);
        require(status);
    }
}

// File: contracts/upgradeability/EternalStorageProxy.sol

pragma solidity 0.7.5;



/**
 * @title EternalStorageProxy
 * @dev This proxy holds the storage of the token contract and delegates every call to the current implementation set.
 * Besides, it allows to upgrade the token's behaviour towards further implementations, and provides basic
 * authorization control functionalities
 */
// solhint-disable-next-line no-empty-blocks
contract EternalStorageProxy is EternalStorage, OwnedUpgradeabilityProxy {

}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"version","type":"uint256"},{"internalType":"address","name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"version","type":"uint256"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"upgradeabilityOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b610041565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6104c6806100506000396000f3fe6080604052600436106100555760003560e01c80633ad06d161461009e57806354fd4d50146100d95780635c60da1b146101005780636fde820214610131578063a9c45fcb14610146578063f1739cae146101cb575b600061005f6101fe565b90506001600160a01b03811661007457600080fd5b60405136600082376000803683855af43d82016040523d6000833e80801561009a573d83f35b3d83fd5b3480156100aa57600080fd5b506100d7600480360360408110156100c157600080fd5b50803590602001356001600160a01b031661020d565b005b3480156100e557600080fd5b506100ee610240565b60408051918252519081900360200190f35b34801561010c57600080fd5b506101156101fe565b604080516001600160a01b039092168252519081900360200190f35b34801561013d57600080fd5b50610115610246565b6100d76004803603606081101561015c57600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561018c57600080fd5b82018360208201111561019e57600080fd5b803590602001918460018302840111640100000000831117156101c057600080fd5b509092509050610255565b3480156101d757600080fd5b506100d7600480360360208110156101ee57600080fd5b50356001600160a01b03166102fe565b600061020861038d565b905090565b610215610246565b6001600160a01b0316336001600160a01b03161461023257600080fd5b61023c828261039c565b5050565b60075490565b6006546001600160a01b031690565b61025d610246565b6001600160a01b0316336001600160a01b03161461027a57600080fd5b610284848461020d565b6000306001600160a01b0316348484604051808383808284376040519201945060009350909150508083038185875af1925050503d80600081146102e4576040519150601f19603f3d011682016040523d82523d6000602084013e6102e9565b606091505b50509050806102f757600080fd5b5050505050565b610306610246565b6001600160a01b0316336001600160a01b03161461032357600080fd5b6001600160a01b03811661033657600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961035f610246565b604080516001600160a01b03928316815291841660208301528051918290030190a161038a81610432565b50565b6008546001600160a01b031690565b6008546001600160a01b03828116911614156103b757600080fd5b6103c081610454565b6103c957600080fd5b60075482116103d757600080fd5b6007829055600880546001600160a01b0383166001600160a01b031990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061048857508115155b94935050505056fea26469706673582212206707d8a32a5e8f60eb3e8e11738097a8d312e184eb6b79440ba4b78dba64a0af64736f6c63430007050033

Deployed ByteCode Sourcemap

18359:79:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:13;7597:16;:14;:16::i;:::-;7581:32;-1:-1:-1;;;;;;7632:19:0;;7624:28;;;;;;8090:4;8084:11;8871:14;8868:1;8863:3;8850:36;9808:1;9805;9789:14;9784:3;9777:5;9770;9757:53;10498:16;10493:3;10489:26;10483:4;10476:40;11010:16;11007:1;11002:3;10987:40;11294:6;11318:78;;;;11457:16;11452:3;11445:29;11318:78;11360:16;11355:3;11348:29;16797:145;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16797:145:0;;;;;;-1:-1:-1;;;;;16797:145:0;;:::i;:::-;;12113:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13247:159;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13247:159:0;;;;;;;;;;;;;;14734:107;;;;;;;;;;;;;:::i;17534:370::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17534:370:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17534:370:0;;-1:-1:-1;17534:370:0;-1:-1:-1;17534:370:0;:::i;16249:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16249:250:0;-1:-1:-1;;;;;16249:250:0;;:::i;13247:159::-;13333:7;13360:38;:36;:38::i;:::-;13353:45;;13247:159;:::o;16797:145::-;16030:21;:19;:21::i;:::-;-1:-1:-1;;;;;16016:35:0;:10;-1:-1:-1;;;;;16016:35:0;;16008:44;;;;;;16899:35:::1;16910:7;16919:14;16899:10;:35::i;:::-;16797:145:::0;;:::o;12113:85::-;12182:8;;12113:85;:::o;14734:107::-;14813:20;;-1:-1:-1;;;;;14813:20:0;14734:107;:::o;17534:370::-;16030:21;:19;:21::i;:::-;-1:-1:-1;;;;;16016:35:0;:10;-1:-1:-1;;;;;16016:35:0;;16008:44;;;;;;17708:34:::1;17718:7;17727:14;17708:9;:34::i;:::-;17809:11;17834:4;-1:-1:-1::0;;;;;17826:18:0::1;17853:9;17865:4;;17826:44;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;17826:44:0::1;::::0;-1:-1:-1;17826:44:0;;-1:-1:-1;;17826:44:0;;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17808:62;;;17889:6;17881:15;;;::::0;::::1;;16063:1;17534:370:::0;;;;:::o;16249:250::-;16030:21;:19;:21::i;:::-;-1:-1:-1;;;;;16016:35:0;:10;-1:-1:-1;;;;;16016:35:0;;16008:44;;;;;;-1:-1:-1;;;;;16351:22:0;::::1;16343:31;;;::::0;::::1;;16390:58;16416:21;:19;:21::i;:::-;16390:58;::::0;;-1:-1:-1;;;;;16390:58:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;16459:32;16482:8;16459:22;:32::i;:::-;16249:250:::0;:::o;12339:105::-;12421:15;;-1:-1:-1;;;;;12421:15:0;12339:105;:::o;13661:639::-;13750:15;;-1:-1:-1;;;;;13750:33:0;;;:15;;:33;;13742:42;;;;;;13900:34;13919:14;13900:18;:34::i;:::-;13892:43;;;;;;14160:8;;14150:7;:18;14142:27;;;;;;14182:8;:18;;;14211:15;:32;;-1:-1:-1;;;;;14211:32:0;;-1:-1:-1;;;;;;14211:32:0;;;;;;;;14259:33;;;;;;;;;;;;;;;;;13661:639;;:::o;14910:137::-;14994:20;:45;;-1:-1:-1;;;;;;14994:45:0;-1:-1:-1;;;;;14994:45:0;;;;;;;;;;14910:137::o;1347:619::-;1407:4;1875:20;;1718:66;1915:23;;;;;;:42;;-1:-1:-1;1942:15:0;;;1915:42;1907:51;1347:619;-1:-1:-1;;;;1347:619:0:o

Swarm Source

ipfs://6707d8a32a5e8f60eb3e8e11738097a8d312e184eb6b79440ba4b78dba64a0af
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.