Contract 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcf815768853d16f853f03b8adcbb122c2acfc4b921f5496bc794a50aa1e29adaDeploy Vault200032112023-04-02 8:57:2611 mins ago0x5cfa5e9795d2cda049b820c32be917c124812b95 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xcc5f1917b19debd7b18fb318cb7fc0206f35be885636af964e4a23676ac726c5Deploy Vault199942882023-04-02 3:50:405 hrs 17 mins ago0x31f9925dd7a4f3f0881b81b4fba97c7e9f337b3f IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x5d56f47eaf616c7863d626a64560514585c56f1bb516620f1079b0509ae6a53dDeploy Vault199940452023-04-02 3:42:185 hrs 26 mins ago0x7f391e0b5968d0b9a9ffac20bc0390a77da546e1 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x76260343a0dcc01c9b224f714f8cb8f3bc2182508e798a02a8079aa28261485cDeploy Vault199940382023-04-02 3:42:045 hrs 26 mins ago0xfe4704b7aa7e1e6178009ddff6ff769059f45fba IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8326
0x3f270b1ed437181401fe9336f0006d47a71ff3da3b656ad47ffa5946e66a479cDeploy Vault199940002023-04-02 3:40:485 hrs 27 mins ago0xfb8d2447cfdcb10ff173fcca8a4c15d9f5361a1c IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x333defd2b9e495d8ba45bdaa05c38d803381e1a0947f107932224bf4cdbe09ebDeploy Vault199939692023-04-02 3:39:425 hrs 28 mins ago0x0f35192ce79b58d45300251d3f7a337fcd270fce IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8326
0x3514f6c5b2b64da6c8611027d247f833110c2be17bf6bb214e7ceaab8324a730Deploy Vault199939232023-04-02 3:38:105 hrs 30 mins ago0xff3539ecc9ac339e8a7abcf3bda26c83e0ac87dc IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xe89202f6c3f36bb7c542fb0fd3ffa3ef1c856489eebc52bde1d1009605cf1f54Deploy Vault199938842023-04-02 3:36:485 hrs 31 mins ago0x88cea3e916ad9c6fcf0d76ee7bd4623b615dbd40 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8362
0x118e55deb6deb67c4ef512958e8700040063902e8c0cdc21290c5eea714c628bDeploy Vault199938792023-04-02 3:36:385 hrs 31 mins ago0x6208357247275964c8b38d94fb5a9d65a3104920 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xc51b80be83615c3f0d7951c5e121acd929234df541f0ade9b69b048b5eca51e1Deploy Vault199938752023-04-02 3:36:305 hrs 32 mins ago0x974f50f1bd85770b5cf190e3c252fe1299ca395c IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x5b0ac8ef8096b16e08edceec66a66f6f4f529044e5e770b791a838a096ade3acDeploy Vault199938652023-04-02 3:36:105 hrs 32 mins ago0x692efe804dd9ec62454a2277ad1d18b9fc44df7a IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x1bfa26cdb4c2669e112d0628c0a449451383a9b2a623107e0bc4dcab1e3347c8Deploy Vault199938502023-04-02 3:35:365 hrs 32 mins ago0x8f41ea2d2b62ad8a335ce70ee92f8da51f7caeee IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xacb3282f66909a2971097c18a8ffcbf167025b961d0baaa4a4f65d9ab38c3689Deploy Vault199938482023-04-02 3:35:325 hrs 33 mins ago0xb3755ebbced4b4956e9ae23105a9409edc261a55 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xcfa833098c7d2c44997a87be04b113eac606b8f92fb9e175e721a8bd81872e62Deploy Vault199938242023-04-02 3:34:445 hrs 33 mins ago0x02822ae23cd7c7f0e837f267e25d8e6c265f205b IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8362
0x9fc99539cb2151c74f7ba8eb895504bda35f7154255587387e1d9041d4bd441eDeploy Vault199938072023-04-02 3:34:105 hrs 34 mins ago0x773f79c43e7f9d8a1ec8bfbdb2f3c2e1e41634c7 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xa4851a01504875fc3ff2780211133a305ae0a6ba40c2a7b174e4f67bd6fd9067Deploy Vault199937902023-04-02 3:33:325 hrs 35 mins ago0xc0397a445af5bf0191eea8053c3d0bc890e8c465 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xc36124ece6505cce27328eb33e7fa0cfe2efcaf17781a0de39db29925482e00dDeploy Vault199937792023-04-02 3:33:105 hrs 35 mins ago0x1ad1f43cff1f9a32128f1c31fe7720eb0df6dd80 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x4f14b61fdac60c51b18030f56c3c483a5495572d3c1a21f27cc14fbbe373ff23Deploy Vault199937672023-04-02 3:32:465 hrs 35 mins ago0x62db79fc3c11bff24b43ba88c3a71b617ecd8f28 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xb55018ab43a0d4aeb0c083ef6d33c8cb165322c694ad27005b8fba13afc5f375Deploy Vault199937642023-04-02 3:32:405 hrs 35 mins ago0xe2bc3d843f10b9e3b4ef88ebbb184d50c99a298f IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xb830a1c26638a7e05eb1206bda642637c4f840d8bf15d4ed3ada4be214f20361Deploy Vault199937522023-04-02 3:32:165 hrs 36 mins ago0xd5c7593b70ef830cacfe0d984e2105e1ed0b1ff8 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x68748dac947b7cf2f4b01734ca899dd4b4185cdb2f70fc081abbd676368b4a31Deploy Vault199937502023-04-02 3:32:125 hrs 36 mins ago0x54feeb9c7c3bc187fde84a4f1e524b2e6b62b160 IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x7d0f45b1598ae1faa829ac1ae50c740585c1f1d1918b387f9237e7181acfef1bDeploy Vault199937382023-04-02 3:31:485 hrs 36 mins ago0x73d90c44783e41556b86e5335cfe933fc20d0eac IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x9f9e0bb3ffbee4106ea55bce988d027dac02e25f3326ca99715f4dc1da400183Deploy Vault199937332023-04-02 3:31:385 hrs 36 mins ago0xde68eede936ae1dd1eeb785c9246727d5cee0eef IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0xdadde22decdcd35aecadd1b3988746ce5c19de537670eb94ae4a77a0fc63bd31Deploy Vault199936962023-04-02 3:30:205 hrs 38 mins ago0x31f76b3310aa5de17c849d290438e74a4993f1fe IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8398
0x87924856440b7017063ed447087f818489a3f7d6fbe1c56d2a26d870d79dc4f8Deploy Vault199936592023-04-02 3:29:025 hrs 39 mins ago0xa860a8f9eecbb391103bc26161cad5ad6521f9af IN 0x763d7858287b9a33f4be5bb3df0241dacc59bcc70 BTT65.8362
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xcf815768853d16f853f03b8adcbb122c2acfc4b921f5496bc794a50aa1e29ada200032112023-04-02 8:57:2611 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xcc5f1917b19debd7b18fb318cb7fc0206f35be885636af964e4a23676ac726c5199942882023-04-02 3:50:405 hrs 17 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x5d56f47eaf616c7863d626a64560514585c56f1bb516620f1079b0509ae6a53d199940452023-04-02 3:42:185 hrs 26 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x76260343a0dcc01c9b224f714f8cb8f3bc2182508e798a02a8079aa28261485c199940382023-04-02 3:42:045 hrs 26 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x3f270b1ed437181401fe9336f0006d47a71ff3da3b656ad47ffa5946e66a479c199940002023-04-02 3:40:485 hrs 27 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x333defd2b9e495d8ba45bdaa05c38d803381e1a0947f107932224bf4cdbe09eb199939692023-04-02 3:39:425 hrs 28 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x3514f6c5b2b64da6c8611027d247f833110c2be17bf6bb214e7ceaab8324a730199939232023-04-02 3:38:105 hrs 30 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xe89202f6c3f36bb7c542fb0fd3ffa3ef1c856489eebc52bde1d1009605cf1f54199938842023-04-02 3:36:485 hrs 31 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x118e55deb6deb67c4ef512958e8700040063902e8c0cdc21290c5eea714c628b199938792023-04-02 3:36:385 hrs 31 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xc51b80be83615c3f0d7951c5e121acd929234df541f0ade9b69b048b5eca51e1199938752023-04-02 3:36:305 hrs 32 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x5b0ac8ef8096b16e08edceec66a66f6f4f529044e5e770b791a838a096ade3ac199938652023-04-02 3:36:105 hrs 32 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x1bfa26cdb4c2669e112d0628c0a449451383a9b2a623107e0bc4dcab1e3347c8199938502023-04-02 3:35:365 hrs 32 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xacb3282f66909a2971097c18a8ffcbf167025b961d0baaa4a4f65d9ab38c3689199938482023-04-02 3:35:325 hrs 33 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xcfa833098c7d2c44997a87be04b113eac606b8f92fb9e175e721a8bd81872e62199938242023-04-02 3:34:445 hrs 33 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x9fc99539cb2151c74f7ba8eb895504bda35f7154255587387e1d9041d4bd441e199938072023-04-02 3:34:105 hrs 34 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xa4851a01504875fc3ff2780211133a305ae0a6ba40c2a7b174e4f67bd6fd9067199937902023-04-02 3:33:325 hrs 35 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xc36124ece6505cce27328eb33e7fa0cfe2efcaf17781a0de39db29925482e00d199937792023-04-02 3:33:105 hrs 35 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x4f14b61fdac60c51b18030f56c3c483a5495572d3c1a21f27cc14fbbe373ff23199937672023-04-02 3:32:465 hrs 35 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xb55018ab43a0d4aeb0c083ef6d33c8cb165322c694ad27005b8fba13afc5f375199937642023-04-02 3:32:405 hrs 35 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xb830a1c26638a7e05eb1206bda642637c4f840d8bf15d4ed3ada4be214f20361199937522023-04-02 3:32:165 hrs 36 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x68748dac947b7cf2f4b01734ca899dd4b4185cdb2f70fc081abbd676368b4a31199937502023-04-02 3:32:125 hrs 36 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x7d0f45b1598ae1faa829ac1ae50c740585c1f1d1918b387f9237e7181acfef1b199937382023-04-02 3:31:485 hrs 36 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x9f9e0bb3ffbee4106ea55bce988d027dac02e25f3326ca99715f4dc1da400183199937332023-04-02 3:31:385 hrs 36 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0xdadde22decdcd35aecadd1b3988746ce5c19de537670eb94ae4a77a0fc63bd31199936962023-04-02 3:30:205 hrs 38 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
0x87924856440b7017063ed447087f818489a3f7d6fbe1c56d2a26d870d79dc4f8199936592023-04-02 3:29:025 hrs 39 mins ago 0x763d7858287b9a33f4be5bb3df0241dacc59bcc7  Contract Creation0 BTT
[ 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.

Contract Source Code Verified (Exact Match)

Contract Name:
VaultFactory

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at bttcscan.com on 2022-04-06
*/

// File: @openzeppelin/contracts/proxy/Clones.sol


// OpenZeppelin Contracts v4.4.1 (proxy/Clones.sol)

pragma solidity ^0.8.0;

/**
 * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
 * deploying minimal proxy contracts, also known as "clones".
 *
 * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
 * > a minimal bytecode implementation that delegates all calls to a known, fixed address.
 *
 * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
 * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
 * deterministic method.
 *
 * _Available since v3.4._
 */
library Clones {
    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            instance := create(0, ptr, 0x37)
        }
        require(instance != address(0), "ERC1167: create failed");
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            instance := create2(0, ptr, 0x37, salt)
        }
        require(instance != address(0), "ERC1167: create2 failed");
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)
            mstore(add(ptr, 0x38), shl(0x60, deployer))
            mstore(add(ptr, 0x4c), salt)
            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))
            predicted := keccak256(add(ptr, 0x37), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(address implementation, bytes32 salt)
        internal
        view
        returns (address predicted)
    {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}

// File: @openzeppelin/contracts/proxy/Proxy.sol


// OpenZeppelin Contracts (last updated v4.5.0) (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 internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

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

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

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

    /**
     * @dev 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: @openzeppelin/contracts/utils/StorageSlot.sol


// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

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

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

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


// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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");

        (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");

        (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");

        (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");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/interfaces/draft-IERC1822.sol


// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)

pragma solidity ^0.8.0;

/**
 * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
 * proxy whose upgrades are fully controlled by the current implementation.
 */
interface IERC1822Proxiable {
    /**
     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
     * address.
     *
     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
     * function revert if invoked through a proxy.
     */
    function proxiableUUID() external view returns (bytes32);
}

// File: @openzeppelin/contracts/proxy/beacon/IBeacon.sol


// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol


// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;





/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @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 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

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

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallUUPS(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        // Upgrades from old implementations will perform a rollback test. This test requires the new
        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
        // this special case will break upgrade paths from old UUPS implementation to new ones.
        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
            _setImplementation(newImplementation);
        } else {
            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
            } catch {
                revert("ERC1967Upgrade: new implementation is not UUPS");
            }
            _upgradeToAndCall(newImplementation, data, forceCall);
        }
    }

    /**
     * @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 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

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

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @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 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

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

    /**
     * @dev Returns the current beacon.
     */
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }

    /**
     * @dev Stores a new beacon in the EIP1967 beacon slot.
     */
    function _setBeacon(address newBeacon) private {
        require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data,
        bool forceCall
    ) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
}

// File: contracts/VaultProxy.sol



pragma solidity ^0.8.0;



/**
 * @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.
 */
contract VaultProxy is Proxy, ERC1967Upgrade {
    /**
     * @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.
     */
    function init(address _logic, bytes memory _data) public payable {
        require(_implementation() == address(0), "already initialized");
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }

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

// File: contracts/VaultFactory.sol


pragma solidity ^0.8.0;
pragma abicoder v2;



/**
@title Factory contract for Vault
@author The Btfs Authors
@notice This contract deploys Vault contracts
*/
contract VaultFactory {

  /**
  @notice event fired after new Vault deployed
  @param issuer the issuer of the new vault contract
  @param contractAddress the address of the new deployed contract
  @param id the peerID of the btfs node
  */
  event VaultDeployed(address issuer,address contractAddress,string id);

  /* mapping to keep track of which contracts were deployed by this factory */
  mapping (address => bool) public deployedContracts;
  /* mapping between btfs node's peerID and its vault address */
  mapping (string => address) public peerVaultAddress;

  /* address of the code contract from which all vaults are cloned */
  address public master;
  /* address of the TRC20-token, to be used by the to-be-deployed vaults */
  address public TokenAddress;

  constructor(address _TokenAddress) {
    TokenAddress = _TokenAddress;
    VaultProxy _master = new VaultProxy();
    master = address(_master);
  }
  /**
  @notice creates a clone of the master Vault contract
  @param issuer the issuer of cheques for the new vault
  @param _logic the logic vault addr
  @param salt salt to include in create2 to enable the same address to deploy multiple Vaults
  @param id the peerID of the btfs node
  @param _data the calldata to run when deploy vault proxy
  */
  function deployVault(address issuer, address _logic, bytes32 salt, string memory id, bytes memory _data)
  public returns (address) {
    require(peerVaultAddress[id] == address(0), "vault alerady created");
    address payable contractAddress = payable(Clones.cloneDeterministic(master, keccak256(abi.encode(msg.sender, salt))));
    VaultProxy(contractAddress).init(_logic, _data);
    deployedContracts[contractAddress] = true;
    peerVaultAddress[id] = contractAddress;
    emit VaultDeployed(issuer,contractAddress,id);
    return contractAddress;
  }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_TokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"issuer","type":"address"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"id","type":"string"}],"name":"VaultDeployed","type":"event"},{"inputs":[],"name":"TokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"issuer","type":"address"},{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"string","name":"id","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"deployVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deployedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"peerVaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610d27380380610d2783398101604081905261002f916100ab565b600380546001600160a01b0319166001600160a01b0383161790556040516000906100599061009e565b604051809103906000f080158015610075573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055506100d99050565b6105e78061074083390190565b6000602082840312156100bc578081fd5b81516001600160a01b03811681146100d2578182fd5b9392505050565b610658806100e86000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633695ddb21461005c578063c2cba3061461008c578063c70242ad1461009f578063e4e36723146100d2578063ee97f7f314610106575b600080fd5b61006f61006a366004610461565b610119565b6040516001600160a01b0390911681526020015b60405180910390f35b60035461006f906001600160a01b031681565b6100c26100ad366004610447565b60006020819052908152604090205460ff1681565b6040519015158152602001610083565b61006f6100e0366004610500565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b60025461006f906001600160a01b031681565b6000806001600160a01b03166001846040516101359190610567565b908152604051908190036020019020546001600160a01b0316146101985760405162461bcd60e51b81526020600482015260156024820152741d985d5b1d08185b195c98591e4818dc99585d1959605a1b60448201526064015b60405180910390fd5b600254604080513360208201529081018690526000916101dc916001600160a01b0390911690606001604051602081830303815290604052805190602001206102e9565b60405163c0d91eaf60e01b81529091506001600160a01b0382169063c0d91eaf9061020d90899087906004016105b8565b600060405180830381600087803b15801561022757600080fd5b505af115801561023b573d6000803e3d6000fd5b5050506001600160a01b03821660009081526020819052604090819020805460ff191660019081179091559051839250610276908790610567565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b0319909316929092179091557fb2e029ab52a406bb52fae42d1d1e5dca2793900c250a242af032038b02eb8659906102d790899084908890610583565b60405180910390a19695505050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166103895760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640161018f565b92915050565b600067ffffffffffffffff808411156103aa576103aa61060c565b604051601f8501601f19908116603f011681019082821181831017156103d2576103d261060c565b816040528093508581528686860111156103eb57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461041c57600080fd5b919050565b600082601f830112610431578081fd5b6104408383356020850161038f565b9392505050565b600060208284031215610458578081fd5b61044082610405565b600080600080600060a08688031215610478578081fd5b61048186610405565b945061048f60208701610405565b935060408601359250606086013567ffffffffffffffff808211156104b2578283fd5b6104be89838a01610421565b935060808801359150808211156104d3578283fd5b508601601f810188136104e4578182fd5b6104f38882356020840161038f565b9150509295509295909350565b600060208284031215610511578081fd5b813567ffffffffffffffff811115610527578182fd5b61053384828501610421565b949350505050565b600081518084526105538160208601602086016105dc565b601f01601f19169290920160200192915050565b600082516105798184602087016105dc565b9190910192915050565b6001600160a01b038481168252831660208201526060604082018190526000906105af9083018461053b565b95945050505050565b6001600160a01b03831681526040602082018190526000906105339083018461053b565b60005b838110156105f75781810151838201526020016105df565b83811115610606576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea264697066735822122059d06d999e706dafb3c116ebf57456505059026b103b38cf7520feb64ead230b64736f6c63430008030033608060405234801561001057600080fd5b506105c7806100206000396000f3fe6080604052600436106100225760003560e01c8063c0d91eaf1461003957610031565b366100315761002f61004c565b005b61002f61004c565b61002f6100473660046103ec565b61005e565b61005c610057610130565b610168565b565b6000610068610130565b6001600160a01b0316146100b95760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b6100e460017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610505565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461012057634e487b7160e01b600052600160045260246000fd5b61012c82826000610191565b5050565b60006101637f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610187573d6000f35b3d6000fd5b505050565b61019a836101bc565b6000825111806101a75750805b1561018c576101b683836101fc565b50505050565b6101c581610228565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610221838360405180606001604052806027815260200161056b602791396102d6565b9392505050565b6001600160a01b0381163b6102955760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100b0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b61033e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016100b0565b600080856001600160a01b03168560405161035991906104b6565b600060405180830381855af49150503d8060008114610394576040519150601f19603f3d011682016040523d82523d6000602084013e610399565b606091505b50915091506103a98282866103b3565b9695505050505050565b606083156103c2575081610221565b8251156103d25782518084602001fd5b8160405162461bcd60e51b81526004016100b091906104d2565b600080604083850312156103fe578182fd5b82356001600160a01b0381168114610414578283fd5b9150602083013567ffffffffffffffff80821115610430578283fd5b818501915085601f830112610443578283fd5b81358181111561045557610455610554565b604051601f8201601f19908116603f0116810190838211818310171561047d5761047d610554565b81604052828152886020848701011115610495578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600082516104c8818460208701610528565b9190910192915050565b60006020825282518060208401526104f1816040850160208701610528565b601f01601f19169190910160400192915050565b60008282101561052357634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561054357818101518382015260200161052b565b838111156101b65750506000910152565b634e487b7160e01b600052604160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122001f21cb156cb80e0b0ec53817007a98f3e67d4faf5e579c1b8ce2ad48674073064736f6c6343000803003300000000000000000000000023181f21dea5936e24163ffaba4ea3b316b57f3c

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

00000000000000000000000023181f21dea5936e24163ffaba4ea3b316b57f3c

-----Decoded View---------------
Arg [0] : _TokenAddress (address): 0x23181f21dea5936e24163ffaba4ea3b316b57f3c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000023181f21dea5936e24163ffaba4ea3b316b57f3c


Deployed ByteCode Sourcemap

27740:1880:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29051:566;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3250:32:1;;;3232:51;;3220:2;3205:18;29051:566:0;;;;;;;;28501:27;;;;;-1:-1:-1;;;;;28501:27:0;;;28148:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;4487:14:1;;4480:22;4462:41;;4450:2;4435:18;28148:50:0;4417:92:1;28269:51:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28269:51:0;;;28398:21;;;;;-1:-1:-1;;;;;28398:21:0;;;29051:566;29175:7;29231:1;-1:-1:-1;;;;;29199:34:0;:16;29216:2;29199:20;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;29199:20:0;:34;29191:68;;;;-1:-1:-1;;;29191:68:0;;5068:2:1;29191:68:0;;;5050:21:1;5107:2;5087:18;;;5080:30;-1:-1:-1;;;5126:18:1;;;5119:51;5187:18;;29191:68:0;;;;;;;;;29334:6;;29352:28;;;29363:10;29352:28;;;3898:51:1;3965:18;;;3958:34;;;29266:31:0;;29308:74;;-1:-1:-1;;;;;29334:6:0;;;;3871:18:1;;29352:28:0;;;;;;;;;;;;29342:39;;;;;;29308:25;:74::i;:::-;29390:47;;-1:-1:-1;;;29390:47:0;;29266:117;;-1:-1:-1;;;;;;29390:32:0;;;;;:47;;29423:6;;29431:5;;29390:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;29444:34:0;;:17;:34;;;;;;;;;;;;:41;;-1:-1:-1;;29444:41:0;29481:4;29444:41;;;;;;29492:20;;29462:15;;-1:-1:-1;29492:20:0;;29509:2;;29492:20;:::i;:::-;;;;;;;;;;;;;;:38;;-1:-1:-1;;;;;29492:38:0;;;;-1:-1:-1;;;;;;29492:38:0;;;;;;;;;;29542:40;;;;29556:6;;29563:15;;29579:2;;29542:40;:::i;:::-;;;;;;;;29596:15;29051:566;-1:-1:-1;;;;;;29051:566:0:o;1912:559::-;1996:16;2066:4;2060:11;-1:-1:-1;;;2092:3:0;2085:79;2211:14;2205:4;2201:25;2194:4;2189:3;2185:14;2178:49;-1:-1:-1;;;2257:4:0;2252:3;2248:14;2241:90;2379:4;2373;2368:3;2365:1;2357:27;2345:39;-1:-1:-1;;;;;;;2413:22:0;;2405:58;;;;-1:-1:-1;;;2405:58:0;;4716:2:1;2405:58:0;;;4698:21:1;4755:2;4735:18;;;4728:30;4794:25;4774:18;;;4767:53;4837:18;;2405:58:0;4688:173:1;2405:58:0;1912:559;;;;:::o;14:631:1:-;;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:2;;813:1;810;803:12;747:2;699:124;;;:::o;828:229::-;;924:3;917:4;909:6;905:17;901:27;891:2;;946:5;939;932:20;891:2;972:79;1047:3;1038:6;1025:20;1018:4;1010:6;1006:17;972:79;:::i;:::-;963:88;881:176;-1:-1:-1;;;881:176:1:o;1062:196::-;;1174:2;1162:9;1153:7;1149:23;1145:32;1142:2;;;1195:6;1187;1180:22;1142:2;1223:29;1242:9;1223:29;:::i;1263:928::-;;;;;;1462:3;1450:9;1441:7;1437:23;1433:33;1430:2;;;1484:6;1476;1469:22;1430:2;1512:29;1531:9;1512:29;:::i;:::-;1502:39;;1560:38;1594:2;1583:9;1579:18;1560:38;:::i;:::-;1550:48;;1645:2;1634:9;1630:18;1617:32;1607:42;;1700:2;1689:9;1685:18;1672:32;1723:18;1764:2;1756:6;1753:14;1750:2;;;1785:6;1777;1770:22;1750:2;1813:50;1855:7;1846:6;1835:9;1831:22;1813:50;:::i;:::-;1803:60;;1916:3;1905:9;1901:19;1888:33;1872:49;;1946:2;1936:8;1933:16;1930:2;;;1967:6;1959;1952:22;1930:2;-1:-1:-1;1995:24:1;;2050:4;2042:13;;2038:27;-1:-1:-1;2028:2:1;;2084:6;2076;2069:22;2028:2;2112:73;2177:7;2172:2;2159:16;2154:2;2150;2146:11;2112:73;:::i;:::-;2102:83;;;1420:771;;;;;;;;:::o;2196:342::-;;2318:2;2306:9;2297:7;2293:23;2289:32;2286:2;;;2339:6;2331;2324:22;2286:2;2384:9;2371:23;2417:18;2409:6;2406:30;2403:2;;;2454:6;2446;2439:22;2403:2;2482:50;2524:7;2515:6;2504:9;2500:22;2482:50;:::i;:::-;2472:60;2276:262;-1:-1:-1;;;;2276:262:1:o;2543:257::-;;2622:5;2616:12;2649:6;2644:3;2637:19;2665:63;2721:6;2714:4;2709:3;2705:14;2698:4;2691:5;2687:16;2665:63;:::i;:::-;2782:2;2761:15;-1:-1:-1;;2757:29:1;2748:39;;;;2789:4;2744:50;;2592:208;-1:-1:-1;;2592:208:1:o;2805:276::-;;2974:6;2968:13;2990:53;3036:6;3031:3;3024:4;3016:6;3012:17;2990:53;:::i;:::-;3059:16;;;;;2944:137;-1:-1:-1;;2944:137:1:o;3294:425::-;-1:-1:-1;;;;;3545:15:1;;;3527:34;;3597:15;;3592:2;3577:18;;3570:43;3649:2;3644;3629:18;;3622:30;;;3294:425;;3669:44;;3694:18;;3686:6;3669:44;:::i;:::-;3661:52;3479:240;-1:-1:-1;;;;;3479:240:1:o;4003:314::-;-1:-1:-1;;;;;4178:32:1;;4160:51;;4247:2;4242;4227:18;;4220:30;;;4003:314;;4267:44;;4292:18;;4284:6;4267:44;:::i;5216:258::-;5288:1;5298:113;5312:6;5309:1;5306:13;5298:113;;;5388:11;;;5382:18;5369:11;;;5362:39;5334:2;5327:10;5298:113;;;5429:6;5426:1;5423:13;5420:2;;;5464:1;5455:6;5450:3;5446:16;5439:27;5420:2;;5269:205;;;:::o;5479:127::-;5540:10;5535:3;5531:20;5528:1;5521:31;5571:4;5568:1;5561:15;5595:4;5592:1;5585:15

Swarm Source

ipfs://01f21cb156cb80e0b0ec53817007a98f3e67d4faf5e579c1b8ce2ad486740730
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.