ETH Price: $3,425.58 (+2.38%)

Contract

0x989252d4853DB438235fBd9c946AfC4CCA6e21f1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040122831292021-04-21 10:49:001312 days ago1619002140IN
 Create: QLF
0 ETH0.04329222111

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
QLF

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-04-27
*/

// Sources flattened with hardhat v2.2.0 https://hardhat.org
// File @openzeppelin/contracts/utils/introspection/[email protected]

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


// File contracts/IQLF.sol


/**
 * @author          Yisi Liu
 * @contact         [email protected]
 * @author_time     01/06/2021
**/

pragma solidity >= 0.8.0;

abstract contract IQLF is IERC165 {
    /**
     * @dev Returns if the given address is qualified, implemented on demand.
     */
    function ifQualified (address account) virtual external view returns (bool);

    /**
     * @dev Logs if the given address is qualified, implemented on demand.
     */
    function logQualified (address account, uint256 ito_start_time) virtual external returns (bool);

    /**
     * @dev Ensure that custom contract implements `ifQualified` amd `logQualified` correctly.
     */
    function supportsInterface(bytes4 interfaceId) virtual external override pure returns (bool) {
        return interfaceId == this.supportsInterface.selector || 
            interfaceId == (this.ifQualified.selector ^ this.logQualified.selector);
    }

    /**
     * @dev Emit when `ifQualified` is called to decide if the given `address`
     * is `qualified` according to the preset rule by the contract creator and 
     * the current block `number` and the current block `timestamp`.
     */
    event Qualification(address account, bool qualified, uint256 blockNumber, uint256 timestamp);
}


// File contracts/qualification.sol


/**
 * @author          Yisi Liu
 * @contact         [email protected]
 * @author_time     01/06/2021
**/

pragma solidity >= 0.8.0;

contract QLF is IQLF {
    string private name;
    uint256 private creation_time;
    uint256 start_time;
    address creator;
    mapping(address => bool) black_list;

    modifier creatorOnly {
        require(msg.sender == creator, "Not Authorized");
        _;
    }

    constructor (string memory _name, uint256 _start_time) {
        name = _name;
        creation_time = block.timestamp;
        start_time = _start_time;
        creator = msg.sender;
    }

    function get_name() public view returns (string memory) {
        return name;
    }

    function get_creation_time() public view returns (uint256) {
        return creation_time;
    }

    function get_start_time() public view returns (uint256) {
        return start_time;
    }

    function set_start_time(uint256 _start_time) public creatorOnly {
        start_time = _start_time;
    }

    function ifQualified(address) public pure override returns (bool qualified) {
        qualified = true;
    } 

    function logQualified(address account, uint256 ito_start_time) public override returns (bool qualified) {
        if (start_time > block.timestamp || ito_start_time > block.timestamp) {
            black_list[address(msg.sender)] = true;
            return false;
        }
        if (black_list[msg.sender]) {
            return false;
        }
        emit Qualification(account, true, block.number, block.timestamp);
        return true;
    } 

    function supportsInterface(bytes4 interfaceId) external override pure returns (bool) {
        return interfaceId == this.supportsInterface.selector || 
            interfaceId == (this.ifQualified.selector ^ this.logQualified.selector) ||
            interfaceId == this.get_start_time.selector;
    }    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_start_time","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"qualified","type":"bool"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Qualification","type":"event"},{"inputs":[],"name":"get_creation_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get_start_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ifQualified","outputs":[{"internalType":"bool","name":"qualified","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"ito_start_time","type":"uint256"}],"name":"logQualified","outputs":[{"internalType":"bool","name":"qualified","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_start_time","type":"uint256"}],"name":"set_start_time","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"}]

608060405234801561001057600080fd5b506040516106da3803806106da83398101604081905261002f916100fb565b8151610042906000906020850190610062565b504260015560025550600380546001600160a01b0319163317905561021e565b82805461006e906101cd565b90600052602060002090601f01602090048101928261009057600085556100d6565b82601f106100a957805160ff19168380011785556100d6565b828001600101855582156100d6579182015b828111156100d65782518255916020019190600101906100bb565b506100e29291506100e6565b5090565b5b808211156100e257600081556001016100e7565b6000806040838503121561010d578182fd5b82516001600160401b0380821115610123578384fd5b818501915085601f830112610136578384fd5b81518181111561014857610148610208565b604051601f8201601f19908116603f0116810190838211818310171561017057610170610208565b8160405282815260209350888484870101111561018b578687fd5b8691505b828210156101ac578482018401518183018501529083019061018f565b828211156101bc57868484830101525b969092015195979596505050505050565b6002810460018216806101e157607f821691505b6020821081141561020257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6104ad8061022d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063823b69f71161005b578063823b69f7146100d3578063a851c7ff146100e6578063b27b1a6d146100fb578063df29dfc4146101105761007d565b806301ffc9a7146100825780633a525c29146100ab57806379380372146100c0575b600080fd5b610095610090366004610347565b610118565b6040516100a291906103ad565b60405180910390f35b6100b361016c565b6040516100a291906103b8565b6100956100ce36600461031e565b6101fe565b6100956100e13660046102fd565b61029c565b6100ee6102a2565b6040516100a29190610433565b61010e61010936600461036f565b6102a8565b005b6100ee6102e0565b60006001600160e01b031982166301ffc9a760e01b148061014957506001600160e01b0319821663fb036a8560e01b145b8061016457506001600160e01b031982166337ca77f160e21b145b90505b919050565b60606000805461017b9061043c565b80601f01602080910402602001604051908101604052809291908181526020018280546101a79061043c565b80156101f45780601f106101c9576101008083540402835291602001916101f4565b820191906000526020600020905b8154815290600101906020018083116101d757829003601f168201915b5050505050905090565b600042600254118061020f57504282115b156102345750336000908152600460205260408120805460ff19166001179055610296565b3360009081526004602052604090205460ff161561025457506000610296565b7fb6948b8fb946de1d52ce1ef206f0d910504221f2f0d13f3307aa788ad2d7e3e6836001434260405161028a9493929190610387565b60405180910390a15060015b92915050565b50600190565b60015490565b6003546001600160a01b031633146102db5760405162461bcd60e51b81526004016102d29061040b565b60405180910390fd5b600255565b60025490565b80356001600160a01b038116811461016757600080fd5b60006020828403121561030e578081fd5b610317826102e6565b9392505050565b60008060408385031215610330578081fd5b610339836102e6565b946020939093013593505050565b600060208284031215610358578081fd5b81356001600160e01b031981168114610317578182fd5b600060208284031215610380578081fd5b5035919050565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b901515815260200190565b6000602080835283518082850152825b818110156103e4578581018301518582016040015282016103c8565b818111156103f55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d139bdd08105d5d1a1bdc9a5e995960921b604082015260600190565b90815260200190565b60028104600182168061045057607f821691505b6020821081141561047157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212209900e0e967b6d7ae740e339416f52c286c09c35433b67fa662e7fca21a763a1164736f6c6343000801003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000744454641554c5400000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063823b69f71161005b578063823b69f7146100d3578063a851c7ff146100e6578063b27b1a6d146100fb578063df29dfc4146101105761007d565b806301ffc9a7146100825780633a525c29146100ab57806379380372146100c0575b600080fd5b610095610090366004610347565b610118565b6040516100a291906103ad565b60405180910390f35b6100b361016c565b6040516100a291906103b8565b6100956100ce36600461031e565b6101fe565b6100956100e13660046102fd565b61029c565b6100ee6102a2565b6040516100a29190610433565b61010e61010936600461036f565b6102a8565b005b6100ee6102e0565b60006001600160e01b031982166301ffc9a760e01b148061014957506001600160e01b0319821663fb036a8560e01b145b8061016457506001600160e01b031982166337ca77f160e21b145b90505b919050565b60606000805461017b9061043c565b80601f01602080910402602001604051908101604052809291908181526020018280546101a79061043c565b80156101f45780601f106101c9576101008083540402835291602001916101f4565b820191906000526020600020905b8154815290600101906020018083116101d757829003601f168201915b5050505050905090565b600042600254118061020f57504282115b156102345750336000908152600460205260408120805460ff19166001179055610296565b3360009081526004602052604090205460ff161561025457506000610296565b7fb6948b8fb946de1d52ce1ef206f0d910504221f2f0d13f3307aa788ad2d7e3e6836001434260405161028a9493929190610387565b60405180910390a15060015b92915050565b50600190565b60015490565b6003546001600160a01b031633146102db5760405162461bcd60e51b81526004016102d29061040b565b60405180910390fd5b600255565b60025490565b80356001600160a01b038116811461016757600080fd5b60006020828403121561030e578081fd5b610317826102e6565b9392505050565b60008060408385031215610330578081fd5b610339836102e6565b946020939093013593505050565b600060208284031215610358578081fd5b81356001600160e01b031981168114610317578182fd5b600060208284031215610380578081fd5b5035919050565b6001600160a01b0394909416845291151560208401526040830152606082015260800190565b901515815260200190565b6000602080835283518082850152825b818110156103e4578581018301518582016040015282016103c8565b818111156103f55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d139bdd08105d5d1a1bdc9a5e995960921b604082015260600190565b90815260200190565b60028104600182168061045057607f821691505b6020821081141561047157634e487b7160e01b600052602260045260246000fd5b5091905056fea26469706673582212209900e0e967b6d7ae740e339416f52c286c09c35433b67fa662e7fca21a763a1164736f6c63430008010033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000744454641554c5400000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): DEFAULT
Arg [1] : _start_time (uint256): 0

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [3] : 44454641554c5400000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

2454:1806:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3947:306;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2945:86;;;:::i;:::-;;;;;;;:::i;3480:458::-;;;;;;:::i;:::-;;:::i;3360:111::-;;;;;;:::i;:::-;;:::i;3039:98::-;;;:::i;:::-;;;;;;;:::i;3245:107::-;;;;;;:::i;:::-;;:::i;:::-;;3145:92;;;:::i;3947:306::-;4026:4;-1:-1:-1;;;;;;4050:46:0;;-1:-1:-1;;;4050:46:0;;:135;;-1:-1:-1;;;;;;;4114:71:0;;-1:-1:-1;;;4114:71:0;4050:135;:195;;;-1:-1:-1;;;;;;;4202:43:0;;-1:-1:-1;;;4202:43:0;4050:195;4043:202;;3947:306;;;;:::o;2945:86::-;2986:13;3019:4;3012:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2945:86;:::o;3480:458::-;3568:14;3612:15;3599:10;;:28;:64;;;;3648:15;3631:14;:32;3599:64;3595:162;;;-1:-1:-1;3699:10:0;3680:31;;;;:10;:31;;;;;:38;;-1:-1:-1;;3680:38:0;3714:4;3680:38;;;3733:12;;3595:162;3782:10;3771:22;;;;:10;:22;;;;;;;;3767:67;;;-1:-1:-1;3817:5:0;3810:12;;3767:67;3849:59;3863:7;3872:4;3878:12;3892:15;3849:59;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;3926:4:0;3480:458;;;;;:::o;3360:111::-;-1:-1:-1;3459:4:0;;3360:111::o;3039:98::-;3116:13;;3039:98;:::o;3245:107::-;2689:7;;-1:-1:-1;;;;;2689:7:0;2675:10;:21;2667:48;;;;-1:-1:-1;;;2667:48:0;;;;;;;:::i;:::-;;;;;;;;;3320:10:::1;:24:::0;3245:107::o;3145:92::-;3219:10;;3145:92;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;:::-;345:41;264:128;-1:-1:-1;;;264:128:1:o;397:266::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;653:2;638:18;;;;625:32;;-1:-1:-1;;;484:179:1:o;668:306::-;;779:2;767:9;758:7;754:23;750:32;747:2;;;800:6;792;785:22;747:2;831:23;;-1:-1:-1;;;;;;883:32:1;;873:43;;863:2;;935:6;927;920:22;979:190;;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;-1:-1:-1;1140:23:1;;1049:120;-1:-1:-1;1049:120:1:o;1174:427::-;-1:-1:-1;;;;;1417:32:1;;;;1399:51;;1493:14;;1486:22;1481:2;1466:18;;1459:50;1540:2;1525:18;;1518:34;1583:2;1568:18;;1561:34;1386:3;1371:19;;1353:248::o;1606:187::-;1771:14;;1764:22;1746:41;;1734:2;1719:18;;1701:92::o;1798:603::-;;1939:2;1968;1957:9;1950:21;2000:6;1994:13;2043:6;2038:2;2027:9;2023:18;2016:34;2068:4;2081:140;2095:6;2092:1;2089:13;2081:140;;;2190:14;;;2186:23;;2180:30;2156:17;;;2175:2;2152:26;2145:66;2110:10;;2081:140;;;2239:6;2236:1;2233:13;2230:2;;;2309:4;2304:2;2295:6;2284:9;2280:22;2276:31;2269:45;2230:2;-1:-1:-1;2385:2:1;2364:15;-1:-1:-1;;2360:29:1;2345:45;;;;2392:2;2341:54;;1919:482;-1:-1:-1;;;1919:482:1:o;2406:338::-;2608:2;2590:21;;;2647:2;2627:18;;;2620:30;-1:-1:-1;;;2681:2:1;2666:18;;2659:44;2735:2;2720:18;;2580:164::o;2749:177::-;2895:25;;;2883:2;2868:18;;2850:76::o;2931:380::-;3016:1;3006:12;;3063:1;3053:12;;;3074:2;;3128:4;3120:6;3116:17;3106:27;;3074:2;3181;3173:6;3170:14;3150:18;3147:38;3144:2;;;3227:10;3222:3;3218:20;3215:1;3208:31;3262:4;3259:1;3252:15;3290:4;3287:1;3280:15;3144:2;;2986:325;;;:::o

Swarm Source

ipfs://9900e0e967b6d7ae740e339416f52c286c09c35433b67fa662e7fca21a763a11

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.