Token FLASH

 

Overview [ERC-20]

Max Total Supply:
200,000,000 FLASH

Holders:
137

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Flashloans.com is an easy-to-use website that allows people to build and execute Flash loan-backed trades through a simple yet powerful User Interface

# Exchange Pair Price  24H Volume % Volume
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:
Proxy

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Proxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

contract Admin {
    address public admin;

    modifier onlyAdmin() {
        require(msg.sender == admin, "Admin: Not admin");
        _;
    }

    constructor() {
        setAdmin(msg.sender);
    }

    function setAdmin(address _newAdmin) private {
        admin = _newAdmin;
    }

    function tranfserAdminRights(address _newAdmin) external onlyAdmin {
        _transferAdminRights(_newAdmin);
    }

    function _transferAdminRights(address _newAdmin) private {
        require(_newAdmin != address(0), "Admin: Zero Address");
        setAdmin(_newAdmin);
    }
}

contract Upgradeable is Admin {
    bytes32 private constant implementationPosition =
        keccak256("implementation");

    function getImplementation() public view returns (address implementation) {
        bytes32 position = implementationPosition;
        assembly {
            implementation := sload(position)
        }
    }

    function setImplementation(address _newImplementation) external onlyAdmin {
        require(_newImplementation != address(0), "Upgradeable: Zero Address");
        require(
            isContract(_newImplementation),
            "Upgradeable: Implemenentation address must be a contract"
        );
        address currentImplementation = getImplementation();
        require(
            currentImplementation != _newImplementation,
            "Upgradeable: Old and New implementation addresses are same"
        );
        bytes32 position = implementationPosition;
        assembly {
            sstore(position, _newImplementation)
        }
    }

    function isContract(address _target) private view returns (bool) {
        if (_target == address(0)) {
            return false;
        }

        uint256 size;
        assembly {
            size := extcodesize(_target)
        }
        return size > 0;
    }
}

contract Proxy is Upgradeable {
    fallback() external {
        require(msg.data.length > 0, "Upgradeable: Invalid data sent");
        address _impl = getImplementation();
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0x0, calldatasize())
            let result := delegatecall(
                gas(),
                _impl,
                ptr,
                calldatasize(),
                0x0,
                0
            )
            let size := returndatasize()
            returndatacopy(ptr, 0x0, size)
            switch result
            case 0 {
                revert(ptr, size)
            }
            default {
                return(ptr, size)
            }
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"tranfserAdminRights","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610480806100326000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806326b98a6c146100dd578063aaf10f42146100f2578063d784d4261461011f578063f851a44014610132575b3661009e5760405162461bcd60e51b815260206004820152601e60248201527f5570677261646561626c653a20496e76616c696420646174612073656e74000060448201526064015b60405180910390fd5b60006100b660008051602061042b8339815191525490565b905060405136600082376000803683855af43d806000843e8180156100d9578184f35b8184fd5b6100f06100eb3660046103fa565b610145565b005b60008051602061042b833981519152545b6040516001600160a01b03909116815260200160405180910390f35b6100f061012d3660046103fa565b61019e565b600054610103906001600160a01b031681565b6000546001600160a01b031633146101925760405162461bcd60e51b815260206004820152601060248201526f20b236b4b71d102737ba1030b236b4b760811b6044820152606401610095565b61019b81610371565b50565b6000546001600160a01b031633146101eb5760405162461bcd60e51b815260206004820152601060248201526f20b236b4b71d102737ba1030b236b4b760811b6044820152606401610095565b6001600160a01b0381166102415760405162461bcd60e51b815260206004820152601960248201527f5570677261646561626c653a205a65726f2041646472657373000000000000006044820152606401610095565b61024a816103db565b6102bc5760405162461bcd60e51b815260206004820152603860248201527f5570677261646561626c653a20496d706c656d656e656e746174696f6e20616460448201527f6472657373206d757374206265206120636f6e747261637400000000000000006064820152608401610095565b60006102d460008051602061042b8339815191525490565b9050816001600160a01b0316816001600160a01b0316141561035e5760405162461bcd60e51b815260206004820152603a60248201527f5570677261646561626c653a204f6c6420616e64204e657720696d706c656d6560448201527f6e746174696f6e20616464726573736573206172652073616d650000000000006064820152608401610095565b5060008051602061042b83398151915255565b6001600160a01b0381166103bd5760405162461bcd60e51b815260206004820152601360248201527241646d696e3a205a65726f204164647265737360681b6044820152606401610095565b600080546001600160a01b0319166001600160a01b03831617905550565b60006001600160a01b0382166103f357506000919050565b503b151590565b60006020828403121561040c57600080fd5b81356001600160a01b038116811461042357600080fd5b939250505056fe8ba0ed1f62da1d3048614c2c1feb566f041c8467eb00fb8294776a9179dc1643a2646970667358221220f319a67f11aea1355aa5037c4d3b38eee811548670f5779b810f45039c3a7e5364736f6c63430008090033

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