Contract 0xc31b15D2113784A9C4C23416dB5249f279631d2e

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf77cab9fa4d6d8be1bb8291de4b99fbb7b3f44a89f336b0803f11181f1e16f1aTransfer Ownersh...313814962022-02-19 2:30:15403 days 16 hrs ago0x8b43eb774bae835b20ac8a222c5a91dcd339f376 IN  0xc31b15d2113784a9c4c23416db5249f279631d2e0 FTM0.004330323666
0x2aa30f5cc28512c8c0e295f70e3aa880a1a5542ed0fcfaf37338c8d44b286d360x60806040313814802022-02-19 2:30:02403 days 16 hrs ago0x8b43eb774bae835b20ac8a222c5a91dcd339f376 IN  Create: FairLaunchNRT0 FTM0.07583031898
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2aa30f5cc28512c8c0e295f70e3aa880a1a5542ed0fcfaf37338c8d44b286d36313814802022-02-19 2:30:02403 days 16 hrs ago 0x8b43eb774bae835b20ac8a222c5a91dcd339f376  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FairLaunchNRT

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at FtmScan.com on 2022-02-19
*/

pragma solidity 0.8.5;

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



/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)





/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: AGPL-3.0-or-later




//NRT is like a private stock
//can only be traded with the issuer who remains in control of the market
//until he opens the redemption window
contract FairLaunchNRT is Ownable {
    uint256 private _issuedSupply;
    uint256 private _outstandingSupply;
    uint256 private _decimals;
    string private _symbol;

    mapping(address => uint256) private _balances;

    event Issued(address account, uint256 amount);
    event Redeemed(address account, uint256 amount);

    constructor(string memory __symbol, uint256 __decimals) {
        _symbol = __symbol;
        _decimals = __decimals;
        _issuedSupply = 0;
        _outstandingSupply = 0;
    }

    // Creates amount NRT and assigns them to account
    function issue(address account, uint256 amount) public onlyOwner {
        require(account != address(0), "zero address");

        _issuedSupply += amount;
        _outstandingSupply += amount;
        _balances[account] += amount;

        emit Issued(account, amount);
    }

    //redeem, caller handles transfer of created value
    function redeem(address account, uint256 amount) public onlyOwner {
        require(account != address(0), "zero address");
        require(_balances[account] >= amount, "Insufficent balance");

        _balances[account] -= amount;
        _outstandingSupply -= amount;

        emit Redeemed(account, amount);
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint256) {
        return _decimals;
    }

    function issuedSupply() public view returns (uint256) {
        return _issuedSupply;
    }

    function outstandingSupply() public view returns (uint256) {
        return _outstandingSupply;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"__symbol","type":"string"},{"internalType":"uint256","name":"__decimals","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Issued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeemed","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"issue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"issuedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"outstandingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620009d6380380620009d683398101604081905262000034916200015f565b6200003f3362000069565b815162000054906004906020850190620000b9565b50600355506000600181905560025562000297565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620000c79062000244565b90600052602060002090601f016020900481019282620000eb576000855562000136565b82601f106200010657805160ff191683800117855562000136565b8280016001018555821562000136579182015b828111156200013657825182559160200191906001019062000119565b506200014492915062000148565b5090565b5b8082111562000144576000815560010162000149565b600080604083850312156200017357600080fd5b82516001600160401b03808211156200018b57600080fd5b818501915085601f830112620001a057600080fd5b815181811115620001b557620001b562000281565b604051601f8201601f19908116603f01168101908382118183101715620001e057620001e062000281565b81604052828152602093508884848701011115620001fd57600080fd5b600091505b8282101562000221578482018401518183018501529083019062000202565b82821115620002335760008484830101525b969092015195979596505050505050565b600181811c908216806200025957607f821691505b602082108114156200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61072f80620002a76000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063867904b411610066578063867904b4146101085780638da5cb5b1461011b57806395d89b4114610136578063caacafe21461014b578063f2fde38b1461015357600080fd5b80631e9a6950146100a3578063313ce567146100b85780636291f572146100cf57806370a08231146100d7578063715018a614610100575b600080fd5b6100b66100b13660046105c5565b610166565b005b6003545b6040519081526020015b60405180910390f35b6001546100bc565b6100bc6100e53660046105a3565b6001600160a01b031660009081526005602052604090205490565b6100b66102c9565b6100b66101163660046105c5565b6102ff565b6000546040516001600160a01b0390911681526020016100c6565b61013e61040a565b6040516100c691906105ef565b6002546100bc565b6100b66101613660046105a3565b61049c565b6000546001600160a01b031633146101995760405162461bcd60e51b815260040161019090610644565b60405180910390fd5b6001600160a01b0382166101de5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610190565b6001600160a01b03821660009081526005602052604090205481111561023c5760405162461bcd60e51b8152602060048201526013602482015272496e737566666963656e742062616c616e636560681b6044820152606401610190565b6001600160a01b03821660009081526005602052604081208054839290610264908490610691565b92505081905550806002600082825461027d9190610691565b9091555050604080516001600160a01b0384168152602081018390527f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b936991015b60405180910390a15050565b6000546001600160a01b031633146102f35760405162461bcd60e51b815260040161019090610644565b6102fd6000610537565b565b6000546001600160a01b031633146103295760405162461bcd60e51b815260040161019090610644565b6001600160a01b03821661036e5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610190565b80600160008282546103809190610679565b9250508190555080600260008282546103999190610679565b90915550506001600160a01b038216600090815260056020526040812080548392906103c6908490610679565b9091555050604080516001600160a01b0384168152602081018390527fa59f12e354e8cd10bb74c559844c2dd69a5458e31fe56c7594c62ca57480509a91016102bd565b606060048054610419906106a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610445906106a8565b80156104925780601f1061046757610100808354040283529160200191610492565b820191906000526020600020905b81548152906001019060200180831161047557829003601f168201915b5050505050905090565b6000546001600160a01b031633146104c65760405162461bcd60e51b815260040161019090610644565b6001600160a01b03811661052b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610190565b61053481610537565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461059e57600080fd5b919050565b6000602082840312156105b557600080fd5b6105be82610587565b9392505050565b600080604083850312156105d857600080fd5b6105e183610587565b946020939093013593505050565b600060208083528351808285015260005b8181101561061c57858101830151858201604001528201610600565b8181111561062e576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561068c5761068c6106e3565b500190565b6000828210156106a3576106a36106e3565b500390565b600181811c908216806106bc57607f821691505b602082108114156106dd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220a37e9e2f96e8f72ab109ee421dd08eed2d2c1ac94d3faee9a8ce39fc791ca72a64736f6c634300080500330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000066246726f636b0000000000000000000000000000000000000000000000000000

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000066246726f636b0000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : __symbol (string): bFrock
Arg [1] : __decimals (uint256): 9

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 6246726f636b0000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

3493:1788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:325;;;;;;:::i;:::-;;:::i;:::-;;4981:85;5049:9;;4981:85;;;3334:25:1;;;3322:2;3307:18;4981:85:0;;;;;;;;5074:93;5146:13;;5074:93;;4768:110;;;;;;:::i;:::-;-1:-1:-1;;;;;4852:18:0;4825:7;4852:18;;;:9;:18;;;;;;;4768:110;2475:103;;;:::i;4086:285::-;;;;;;:::i;:::-;;:::i;1824:87::-;1870:7;1897:6;1824:87;;-1:-1:-1;;;;;1897:6:0;;;788:51:1;;776:2;761:18;1824:87:0;743:102:1;4886:87:0;;;:::i;:::-;;;;;;;:::i;5175:103::-;5252:18;;5175:103;;2733:201;;;;;;:::i;:::-;;:::i;4435:325::-;1870:7;1897:6;-1:-1:-1;;;;;1897:6:0;706:10;2044:23;2036:68;;;;-1:-1:-1;;;2036:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;4520:21:0;::::1;4512:46;;;::::0;-1:-1:-1;;;4512:46:0;;3049:2:1;4512:46:0::1;::::0;::::1;3031:21:1::0;3088:2;3068:18;;;3061:30;-1:-1:-1;;;3107:18:1;;;3100:42;3159:18;;4512:46:0::1;3021:162:1::0;4512:46:0::1;-1:-1:-1::0;;;;;4577:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;:28;-1:-1:-1;4577:28:0::1;4569:60;;;::::0;-1:-1:-1;;;4569:60:0;;2340:2:1;4569:60:0::1;::::0;::::1;2322:21:1::0;2379:2;2359:18;;;2352:30;-1:-1:-1;;;2398:18:1;;;2391:49;2457:18;;4569:60:0::1;2312:169:1::0;4569:60:0::1;-1:-1:-1::0;;;;;4642:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;4664:6;;4642:18;:28:::1;::::0;4664:6;;4642:28:::1;:::i;:::-;;;;;;;;4703:6;4681:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4727:25:0::1;::::0;;-1:-1:-1;;;;;1042:32:1;;1024:51;;1106:2;1091:18;;1084:34;;;4727:25:0::1;::::0;997:18:1;4727:25:0::1;;;;;;;;4435:325:::0;;:::o;2475:103::-;1870:7;1897:6;-1:-1:-1;;;;;1897:6:0;706:10;2044:23;2036:68;;;;-1:-1:-1;;;2036:68:0;;;;;;;:::i;:::-;2540:30:::1;2567:1;2540:18;:30::i;:::-;2475:103::o:0;4086:285::-;1870:7;1897:6;-1:-1:-1;;;;;1897:6:0;706:10;2044:23;2036:68;;;;-1:-1:-1;;;2036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4170:21:0;::::1;4162:46;;;::::0;-1:-1:-1;;;4162:46:0;;3049:2:1;4162:46:0::1;::::0;::::1;3031:21:1::0;3088:2;3068:18;;;3061:30;-1:-1:-1;;;3107:18:1;;;3100:42;3159:18;;4162:46:0::1;3021:162:1::0;4162:46:0::1;4238:6;4221:13;;:23;;;;;;;:::i;:::-;;;;;;;;4277:6;4255:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4294:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;4316:6;;4294:18;:28:::1;::::0;4316:6;;4294:28:::1;:::i;:::-;::::0;;;-1:-1:-1;;4340:23:0::1;::::0;;-1:-1:-1;;;;;1042:32:1;;1024:51;;1106:2;1091:18;;1084:34;;;4340:23:0::1;::::0;997:18:1;4340:23:0::1;979:145:1::0;4886:87:0;4925:13;4958:7;4951:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:87;:::o;2733:201::-;1870:7;1897:6;-1:-1:-1;;;;;1897:6:0;706:10;2044:23;2036:68;;;;-1:-1:-1;;;2036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2822:22:0;::::1;2814:73;;;::::0;-1:-1:-1;;;2814:73:0;;1933:2:1;2814:73:0::1;::::0;::::1;1915:21:1::0;1972:2;1952:18;;;1945:30;2011:34;1991:18;;;1984:62;-1:-1:-1;;;2062:18:1;;;2055:36;2108:19;;2814:73:0::1;1905:228:1::0;2814:73:0::1;2898:28;2917:8;2898:18;:28::i;:::-;2733:201:::0;:::o;3094:191::-;3168:16;3187:6;;-1:-1:-1;;;;;3204:17:0;;;-1:-1:-1;;;;;;3204:17:0;;;;;;3237:40;;3187:6;;;;;;;3237:40;;3168:16;3237:40;3157:128;3094:191;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;320:1;317;310:12;272:2;343:29;362:9;343:29;:::i;:::-;333:39;262:116;-1:-1:-1;;;262:116:1:o;383:254::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:2;;;528:1;525;518:12;480:2;551:29;570:9;551:29;:::i;:::-;541:39;627:2;612:18;;;;599:32;;-1:-1:-1;;;470:167:1:o;1129:597::-;1241:4;1270:2;1299;1288:9;1281:21;1331:6;1325:13;1374:6;1369:2;1358:9;1354:18;1347:34;1399:1;1409:140;1423:6;1420:1;1417:13;1409:140;;;1518:14;;;1514:23;;1508:30;1484:17;;;1503:2;1480:26;1473:66;1438:10;;1409:140;;;1567:6;1564:1;1561:13;1558:2;;;1637:1;1632:2;1623:6;1612:9;1608:22;1604:31;1597:42;1558:2;-1:-1:-1;1710:2:1;1689:15;-1:-1:-1;;1685:29:1;1670:45;;;;1717:2;1666:54;;1250:476;-1:-1:-1;;;1250:476:1:o;2486:356::-;2688:2;2670:21;;;2707:18;;;2700:30;2766:34;2761:2;2746:18;;2739:62;2833:2;2818:18;;2660:182::o;3370:128::-;3410:3;3441:1;3437:6;3434:1;3431:13;3428:2;;;3447:18;;:::i;:::-;-1:-1:-1;3483:9:1;;3418:80::o;3503:125::-;3543:4;3571:1;3568;3565:8;3562:2;;;3576:18;;:::i;:::-;-1:-1:-1;3613:9:1;;3552:76::o;3633:380::-;3712:1;3708:12;;;;3755;;;3776:2;;3830:4;3822:6;3818:17;3808:27;;3776:2;3883;3875:6;3872:14;3852:18;3849:38;3846:2;;;3929:10;3924:3;3920:20;3917:1;3910:31;3964:4;3961:1;3954:15;3992:4;3989:1;3982:15;3846:2;;3688:325;;;:::o;4018:127::-;4079:10;4074:3;4070:20;4067:1;4060:31;4110:4;4107:1;4100:15;4134:4;4131:1;4124:15

Swarm Source

ipfs://a37e9e2f96e8f72ab109ee421dd08eed2d2c1ac94d3faee9a8ce39fc791ca72a
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.