Contract 0x9a1fc8c0369d49f3040bf49c1490e7006657ea56 5

Contract Overview

Balance:
6,221,764,635.161032665886241333 BTT

BTT Value:
$3,811.87 (@ $0.00/BTT)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8e0df815ca56b0604b7c8697d16b315fed2de8573a75b4634908100fd4462e8dDeposit Tokens195645212023-03-22 21:37:264 hrs 4 mins ago0xae01bed09c6359b1d04ca120d629e6740fb647d0 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0x997de81789ec24a868da2fe96fe6c632801964169f0eb78737f856dcdabff20aClaim195642972023-03-22 21:29:464 hrs 11 mins ago0xb116f2b79125cbd10ac6fec35d1e9f7eb6a77802 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT28.4505
0x5a00555263c2ef91eeee3715c8836357f934b094c497b36ee46f5fd0469d0ee9Deposit Tokens195629442023-03-22 20:43:164 hrs 58 mins ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0x1be0134f8c737cc316938d2ff886a170a0b3a845f1295b727a6b89e0c599ac1aDeposit Tokens195521792023-03-22 14:33:1011 hrs 8 mins ago0x99a763095aae45e357fb2740f1163e25a97e3c8c IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9207
0x6f25326db8f2530a0007610b9bfb71d73e0cabd1fa0286b6dcffd94b3e7959c1Deposit Tokens195521662023-03-22 14:32:4411 hrs 8 mins ago0x99a763095aae45e357fb2740f1163e25a97e3c8c IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9243
0xdf57612fee9212810cdcad25b7c3e0c4e0f6efeddbc02e98a89502379b92ac1cDeposit Tokens195506242023-03-22 13:39:4412 hrs 1 min ago0xae01bed09c6359b1d04ca120d629e6740fb647d0 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9135
0xd2a6e3e50bf5a7f4338ff897e6f33bfb7341213a93a072b2f8c58cfdac7f41ebDeposit Tokens195475292023-03-22 11:53:2213 hrs 48 mins ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0xb9c0aec035132f63d5886fec44b32e132aa4e88aebbabf5f863261ce22d7a2c8Deposit Tokens195345572023-03-22 4:27:2621 hrs 14 mins ago0xf876883d72bfeb821211c2c54b887fd2c2684ffc IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9207
0x65256d2a31eb649c5419646e302858cb540a4a1e75b0460baa5d808d699bfb99Claim195324552023-03-22 3:15:1022 hrs 26 mins ago0xb116f2b79125cbd10ac6fec35d1e9f7eb6a77802 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT32.4582
0x5fc6ff8d1699841ce0a1798e49d3d3b5f4c837faf1aad7fcc65fdcc2cfd0af64Claim195268322023-03-22 0:01:521 day 1 hr ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT32.4402
0x555043a47ce8e84d66a4dfe4e06b30e0199ea965e47408085825f32d45cb8fbaDeposit Tokens195225792023-03-21 21:35:421 day 4 hrs ago0xae01bed09c6359b1d04ca120d629e6740fb647d0 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0xbf7051365b459a3d3f39f3637d43a8d7bafd5227e3517a7bacd79c0b3a815fbcDeposit Tokens195221122023-03-21 21:19:401 day 4 hrs ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0x9bb5560ccf98c1f150133de957821945d111f0a3577df87521443085b68600ecDeposit Tokens195219282023-03-21 21:13:201 day 4 hrs ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9171
0x126c4a289275e75eb6260b0b0951a64f93b5ca354425a4771563c83b7f07989aClaim195162502023-03-21 17:58:081 day 7 hrs ago0x606c17f8281d234a10bf9bd4accae01b5ab6548b IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT32.4546
0x6530ab27cd4074a92bba6ba4434a538e1c91c7cdede0901d684956be81894445Deposit Tokens195113972023-03-21 15:11:181 day 10 hrs ago0xe22332a4996cd39b54c727c68089a616aece4c31 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9243
0x3306b8d76171136f4d3cef7425dfe99a1de4a4d3f664df3831aaa4e103c1292bDeposit Tokens195113472023-03-21 15:09:341 day 10 hrs ago0xe22332a4996cd39b54c727c68089a616aece4c31 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9207
0x45d99424065079a3cd44d2d89e91e6c071c592f65fc815d8523eeb952fb87d56Claim195100632023-03-21 14:25:261 day 11 hrs ago0x868e4f2f8ef7adc38d2082947d91a784a974f793 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT28.4541
0xc90bf0899b4ea3d705f406756b64e390cbc93c766ad7ce4691dbbd7ddb3c831aDeposit Tokens195095592023-03-21 14:08:061 day 11 hrs ago0xae01bed09c6359b1d04ca120d629e6740fb647d0 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9099
0x54e736b3498d3f3cf908337dfbae017cb5c92188804a88b4a13502b5be7b2e6dDeposit Tokens195093422023-03-21 14:00:401 day 11 hrs ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9135
0xa8fd245223b1e6cf70d817d8fa0782450f8adeb7fcc290c4f2f788b97b280cb6Deposit Tokens195090242023-03-21 13:49:441 day 11 hrs ago0x6840fd412f2a13b3e6b337e390b9762624d0b03d IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9243
0x975ad8762726b983fa01737e7337dcc50e1144137970073e9cf6d1b2b2d82772Claim195089912023-03-21 13:48:341 day 11 hrs ago0x6840fd412f2a13b3e6b337e390b9762624d0b03d IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT28.4505
0xcbe1424cc6106f21edf60b12f64178b8a6278e8c4850e260fed1f998f5add305Deposit Tokens195085122023-03-21 13:32:081 day 12 hrs ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9135
0x9f540a69feee56d878611e70aaf048b409f6e5f3085dc35194f6dc562f7d9946Deposit Tokens195060172023-03-21 12:06:221 day 13 hrs ago0xe22332a4996cd39b54c727c68089a616aece4c31 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea56395,204,723.12887 BTT11.0715
0xde620e1bb7d7ccdc5694f85604d5823547128f6acec6bc76a41e083c59d1ef8dDeposit Tokens195053992023-03-21 11:45:061 day 13 hrs ago0xfc8f3324b6d71d14bfd625ecdbd18f3bc29a9935 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9135
0x42aa4e16a9a7e4266f375105232a241d4c5b48b91df465aae2c54623e86ac171Deposit Tokens195015582023-03-21 9:33:041 day 16 hrs ago0x22df8ff50c6b61e62d9ff21f7a3da117c304bf90 IN  0x9a1fc8c0369d49f3040bf49c1490e7006657ea560 BTT18.9243
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x997de81789ec24a868da2fe96fe6c632801964169f0eb78737f856dcdabff20a195642972023-03-22 21:29:464 hrs 11 mins ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,198,520.13 BTT
0x45d99424065079a3cd44d2d89e91e6c071c592f65fc815d8523eeb952fb87d56195100632023-03-21 14:25:261 day 11 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x868e4f2f8ef7adc38d2082947d91a784a974f793333,574,472.0038432 BTT
0x975ad8762726b983fa01737e7337dcc50e1144137970073e9cf6d1b2b2d82772195089912023-03-21 13:48:341 day 11 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x6840fd412f2a13b3e6b337e390b9762624d0b03d41,369,964.48832661 BTT
0xb575c4a0bf56a2ecb8040901977a58d0e04c99df6cc264531201650ed347a0bb194711972023-03-20 16:09:262 days 9 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xcf06afc87c98791eeb2582522846f113153933b75,333,549.337840752 BTT
0x9e8a12d964618fdec2dbaf4db4cfba5395aad643d8a9dbdaf1d67db76c989dbd194704402023-03-20 15:43:242 days 9 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x14e8541d9cc3c5a01e99545f589a3bc64240171e3,700.11785566197 BTT
0x2b2a5daa299aea2fb1eeb1a156a389158eb10abf189da868e09f73560a7d31ef194588162023-03-20 9:03:522 days 16 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xcf06afc87c98791eeb2582522846f113153933b713,268,423.149570739 BTT
0x78583bb8069202ac6f7954efee566e99335ea5c237968aedf7116a5cd90ad550193528992023-03-17 20:22:585 days 5 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x1525383d5bc737c65fe06350052328a2a92d0326147,268,469.1167133 BTT
0x04e239ce30a5011296c5660bd308515aac63cb93ae08abfb24495dc22cfc0ec2192364572023-03-15 1:40:148 days 1 min ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,354,910.0249 BTT
0xc633e48b77b811f435ce054ebb1e6860eb95a195b05f65b3249cc3b3ad50fb7e187356432023-03-03 2:44:4619 days 22 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x8608a7f150f35340359544659b280331b0bce66841,193.331957317634 BTT
0x166660f71cb5ab7fe7efd0ff6b4cddc4989ae21eca024d6a83289ab2d8ffe184186551232023-03-01 4:36:5421 days 21 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x8adc5cad68250ed5628a4da3acc605ea99fe11cb11,192.640205697171 BTT
0x1979fbbea0a6c8fe30ad599b1be6831f867eabc433ab6663029d48573465af85185562842023-02-26 19:59:1624 days 5 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780231,735,280.21 BTT
0x3a106487678fdf50380b08635e7176a9ffe728753be98111e8387cf9d749952b185517112023-02-26 17:22:0624 days 8 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x868e4f2f8ef7adc38d2082947d91a784a974f79319,176,004.42350302 BTT
0x2b17a886394329c38c18c67c1163b7b75723c30c6c52277e437a9ac6357503fb184033252023-02-23 4:19:1027 days 21 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780220,396,144 BTT
0x5cdc386d39c08ef8a345b958c24e99577bd51b813bdbcd8f8dd80d61b9a81d8f182663742023-02-19 21:51:3231 days 3 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x060301ff410d4e69cdc3b6bdc2b7b48061a534d61,039,954.1504149055 BTT
0x4c1204942986820992db02ecdae7cd295bddad624c7eae2c372112266765efac180154412023-02-13 22:05:3937 days 3 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,159,234.77 BTT
0xa210a2e4a2c604b00468716109e65820dea72ec6db86a7da0b21d103e76043db179709602023-02-12 20:36:3738 days 5 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780231,109,603.6 BTT
0xb71f5ba5e57f113df66256f192c36b0aa4898367094083b6664a1183ac28437e179630942023-02-12 16:06:1338 days 9 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x868e4f2f8ef7adc38d2082947d91a784a974f79321,897,608.945409693 BTT
0xa6240bcb8856c29f0c24919962759c80c2a2f9fc275e44883ca4d0124b090cc1178507602023-02-09 23:44:4541 days 1 hr ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,163,363.4 BTT
0xfe1f8c812cb17628e0385be400b2a552e5503f36edd9d816bcb09f3a15dd5a1a177654532023-02-07 22:51:4343 days 2 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,113,511 BTT
0x8fd6724255246b7a0e446f52089c774527f58cf41ebc4358461d52fff021c68d177169662023-02-06 19:04:5744 days 6 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x868e4f2f8ef7adc38d2082947d91a784a974f79319,769,784.14066969 BTT
0x2cb5120250c59a7eb22b1753fd3d269970bec1112325296347d766d31eca1dfb176834502023-02-05 23:52:4945 days 1 hr ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780210,805,970.25 BTT
0x9715464d1590047075a684015ab030ae51a3ffa1f45e38f07a4d185970a3ab95176640122023-02-05 12:44:4145 days 12 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780220,524,076.8 BTT
0x3d62a3fbe7a505bd11d632e64d8d306402342e77a1ef61a0eb0f12c9204dbbbd175328492023-02-02 9:35:5548 days 16 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xa69232b5104d8acf985ef84c10302162b658ae882,361,989.405962836 BTT
0xfa6bbe589ed3a5f55e549ddfa5dee30a720669d1559245f069313f9f28f302da174216162023-01-30 17:52:1751 days 7 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560x868e4f2f8ef7adc38d2082947d91a784a974f79321,266,651.75555845 BTT
0x76afa7971dcb8604954b55e4126ba164dfc9069f1f230e593cb16e48cbf44578167264592023-01-14 3:36:1567 days 22 hrs ago 0x9a1fc8c0369d49f3040bf49c1490e7006657ea560xb116f2b79125cbd10ac6fec35d1e9f7eb6a7780240,221,401 BTT
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BridgeUpgradeableProxy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at bttcscan.com on 2022-05-24
*/

// SPDX-License-Identifier: No License (None)

// File: openzeppelin-solidity/contracts/proxy/Proxy.sol
pragma solidity ^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 {
        // 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 virtual view 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 {
        _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 {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () external payable {
        _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: openzeppelin-solidity/contracts/utils/Address.sol

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

    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: openzeppelin-solidity/contracts/proxy/UpgradeableProxy.sol

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 * 
 * Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see
 * {TransparentUpgradeableProxy}.
 */
contract UpgradeableProxy is Proxy {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     * 
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            // solhint-disable-next-line avoid-low-level-calls
            (bool success,) = _logic.delegatecall(_data);
            require(success);
        }
    }

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal override view returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * 
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

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

// File: openzeppelin-solidity/contracts/proxy/TransparentUpgradeableProxy.sol


/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 * 
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 * 
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 * 
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 * 
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
 */
contract TransparentUpgradeableProxy is UpgradeableProxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
     */
    constructor(address _logic, address admin_, bytes memory _data) payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     * 
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external view returns (address admin_) {
        admin_ = _admin();
    }

    /**
     * @dev Returns the current implementation.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     * 
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external view returns (address implementation_) {
        implementation_ = _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     * 
     * Emits an {AdminChanged} event.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgrade() external ifAdmin {
        address newImplementation = IBridge(address(this)).upgradeTo();
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

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

interface IBridge {
    function upgradeTo() external view returns(address);
}

// initialize() = 0x8129fc1c
contract BridgeUpgradeableProxy is TransparentUpgradeableProxy {

    constructor(address logic, address admin, bytes memory data) TransparentUpgradeableProxy(logic, admin, data) {

    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"logic","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161089d38038061089d83398101604081905261002f9161021d565b828282828161005f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610309565b60008051602061087d8339815191521461007b5761007b61035e565b61008482610160565b8051156100f5576000826001600160a01b0316826040516100a591906102ed565b600060405180830381855af49150503d80600081146100e0576040519150601f19603f3d011682016040523d82523d6000602084013e6100e5565b606091505b50509050806100f357600080fd5b505b50610123905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610309565b60008051602061085d8339815191521461013f5761013f61035e565b6101558260008051602061085d83398151915255565b50505050505061038a565b610173816101fb60201b6103211760201c565b6101e95760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160448201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606482015260840160405180910390fd5b60008051602061087d83398151915255565b3b151590565b80516001600160a01b038116811461021857600080fd5b919050565b60008060006060848603121561023257600080fd5b61023b84610201565b925061024960208501610201565b60408501519092506001600160401b038082111561026657600080fd5b818601915086601f83011261027a57600080fd5b81518181111561028c5761028c610374565b604051601f8201601f19908116603f011681019083821181831017156102b4576102b4610374565b816040528281528960208487010111156102cd57600080fd5b6102de83602083016020880161032e565b80955050505050509250925092565b600082516102ff81846020870161032e565b9190910192915050565b60008282101561032957634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015610349578181015183820152602001610331565b83811115610358576000848401525b50505050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6104c4806103996000396000f3fe6080604052600436106100435760003560e01c80635c60da1b1461005a5780638f2839701461008b578063d55ec697146100ab578063f851a440146100c057610052565b36610052576100506100d5565b005b6100506100d5565b34801561006657600080fd5b5061006f610107565b6040516001600160a01b03909116815260200160405180910390f35b34801561009757600080fd5b506100506100a636600461041c565b610136565b3480156100b757600080fd5b5061005061025a565b3480156100cc57600080fd5b5061006f610309565b6101056101007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610327565b565b60006101317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b60008051602061046f833981519152546001600160a01b0316336001600160a01b03161415610252576001600160a01b0381166101e05760405162461bcd60e51b815260206004820152603a60248201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760448201527f2061646d696e20697320746865207a65726f206164647265737300000000000060648201526084015b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61021760008051602061046f8339815191525490565b604080516001600160a01b03928316815291841660208301520160405180910390a161024f8160008051602061046f83398151915255565b50565b61024f6100d5565b60008051602061046f833981519152546001600160a01b0316336001600160a01b03161415610301576000306001600160a01b03166316a27ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f69190610440565b905061024f8161034b565b6101056100d5565b600061013160008051602061046f8339815191525490565b3b151590565b3660008037600080366000845af43d6000803e808015610346573d6000f35b3d6000fd5b6103548161038b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b803b6103f85760405162461bcd60e51b815260206004820152603660248201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e74616044820152751d1a5bdb881a5cc81b9bdd08184818dbdb9d1c9858dd60521b60648201526084016101d7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60006020828403121561042e57600080fd5b813561043981610459565b9392505050565b60006020828403121561045257600080fd5b8151610439815b6001600160a01b038116811461024f57600080fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a2646970667358221220e05818cdd39c832c7c5598b025d4b93c867d38adfbc95155ed7c353990eed8aa64736f6c63430008070033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc000000000000000000000000de5ef4d37f2b9053afed197c8a10ef7fb68cf5100000000000000000000000006a56d0f7498c9f2aeb9bb6892ade5b2e0a50379f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000de5ef4d37f2b9053afed197c8a10ef7fb68cf5100000000000000000000000006a56d0f7498c9f2aeb9bb6892ade5b2e0a50379f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : logic (address): 0xde5ef4d37f2b9053afed197c8a10ef7fb68cf510
Arg [1] : admin (address): 0x6a56d0f7498c9f2aeb9bb6892ade5b2e0a50379f
Arg [2] : data (bytes): 0x

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000de5ef4d37f2b9053afed197c8a10ef7fb68cf510
Arg [1] : 0000000000000000000000006a56d0f7498c9f2aeb9bb6892ade5b2e0a50379f
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

18730:194:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2950:11;:9;:11::i;:::-;18730:194;;2726:11;:9;:11::i;17106:128::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;686:32:1;;;668:51;;656:2;641:18;17106:128:0;;;;;;;17450:246;;;;;;;;;;-1:-1:-1;17450:246:0;;;;;:::i;:::-;;:::i;17864:157::-;;;;;;;;;;;;;:::i;16541:92::-;;;;;;;;;;;;;:::i;2378:105::-;2447:28;2457:17;12119:66;12488:11;;12269:248;2457:17;2447:9;:28::i;:::-;2378:105::o;17106:128::-;17155:23;17209:17;12119:66;12488:11;;12269:248;17209:17;17191:35;;17106:128;:::o;17450:246::-;-1:-1:-1;;;;;;;;;;;18277:11:0;-1:-1:-1;;;;;15983:22:0;:10;-1:-1:-1;;;;;15983:22:0;;15979:100;;;-1:-1:-1;;;;;17525:22:0;::::1;17517:93;;;::::0;-1:-1:-1;;;17517:93:0;;1241:2:1;17517:93:0::1;::::0;::::1;1223:21:1::0;1280:2;1260:18;;;1253:30;1319:34;1299:18;;;1292:62;1390:28;1370:18;;;1363:56;1436:19;;17517:93:0::1;;;;;;;;;17626:32;17639:8;-1:-1:-1::0;;;;;;;;;;;18277:11:0;;18087:219;17639:8:::1;17626:32;::::0;;-1:-1:-1;;;;;960:15:1;;;942:34;;1012:15;;;1007:2;992:18;;985:43;877:18;17626:32:0::1;;;;;;;17669:19;17679:8;-1:-1:-1::0;;;;;;;;;;;18569:22:0;18393:216;17669:19:::1;17450:246:::0;:::o;15979:100::-;16056:11;:9;:11::i;17864:157::-;-1:-1:-1;;;;;;;;;;;18277:11:0;-1:-1:-1;;;;;15983:22:0;:10;-1:-1:-1;;;;;15983:22:0;;15979:100;;;17911:25:::1;17955:4;-1:-1:-1::0;;;;;17939:32:0::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17911:62;;17984:29;17995:17;17984:10;:29::i;15979:100::-:0;16056:11;:9;:11::i;16541:92::-;16581:14;16617:8;-1:-1:-1;;;;;;;;;;;18277:11:0;;18087:219;4061:422;4428:20;4467:8;;;4061:422::o;978:907::-;1370:14;1367:1;1364;1351:34;1588:1;1585;1569:14;1566:1;1550:14;1543:5;1530:60;1667:16;1664:1;1661;1646:38;1707:6;1776:38;;;;1848:16;1845:1;1838:27;1776:38;1795:16;1792:1;1785:27;12644:155;12711:37;12730:17;12711:18;:37::i;:::-;12764:27;;-1:-1:-1;;;;;12764:27:0;;;;;;;;12644:155;:::o;12895:369::-;4428:20;;12969:104;;;;-1:-1:-1;;;12969:104:0;;1668:2:1;12969:104:0;;;1650:21:1;1707:2;1687:18;;;1680:30;1746:34;1726:18;;;1719:62;-1:-1:-1;;;1797:18:1;;;1790:52;1859:19;;12969:104:0;1466:418:1;12969:104:0;12119:66;13215:31;12895:369::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;1889:131;-1:-1:-1;;;;;1964:31:1;;1954:42;;1944:70;;2010:1;2007;2000:12

Swarm Source

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