Skip to main content
PulseScanner.io

Address

0x42bbfa2e77757c645eeaad1655e0911a7553efbc
Current Holdings
$0.00
TXs sent
not counted
First Active
2023-05-13
block 17,250,619
Last Active
95 days ago
block 26,796,440
Funded By
not identified

Net worth historyi

2 snapshots · to block 27,497,242coverage change 26 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Aug
exact matchBOBAsolc 0.8.0+commit.c7dfd78eruntime exact · creation exact
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

//Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, 
//as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
import "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";

//Extension of ERC20 to support Compound-like voting and delegation
//This extension keeps a history (checkpoints) of each account's vote power.
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";

//Extension of ERC20 to support Compound's voting and delegation
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20VotesComp.sol";

//Extension of {ERC20} that allows token holders to destroy both their own
//tokens and those that they have an allowance for, in a way that can be
//recognized off-chain (via event analysis).
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";

/**
 * @title Boba Token (BOBA)
 * 
 */

contract BOBA is Context, ERC20, ERC20Burnable, ERC20Permit, ERC20Votes, ERC20VotesComp {

    /// @notice Maximum possible number of tokens
    uint224 public constant maxSupply = 500000000e18; // 500 million BOBA

    /// @notice Maximum token supply. Needed to fit the COMP interface.
    //  The math: The classic Comp governance contracts are 
    //  limited to `type(uint96).max` (2^96^ - 1) = 7.9228163e+28
    //  Our maxSupply is 5e+26, so we are under the limit
    function _maxSupply() internal pure override(ERC20Votes, ERC20VotesComp) returns (uint224) {
        return maxSupply;
    }

    constructor() ERC20("Boba Token", "BOBA") ERC20Permit("Boba Token") {
         //mint maxSupply at genesis, allocated to deployer
        _mint(_msgSender(), maxSupply);
    }

    // Override required by Solidity because _mint is defined by two base classes
    function _mint(address _to, uint256 _amount) internal override(ERC20, ERC20Votes) {
        super._mint(_to, _amount);
    }

    // Override required by Solidity because _burn is defined by two base classes
    function _burn(address _account, uint256 _amount) internal override(ERC20, ERC20Votes) {
        super._burn(_account, _amount);
    }

    // Override required by Solidity because _afterTokenTransfer is defined by two base classes
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override(ERC20, ERC20Votes) {
        super._afterTokenTransfer(from, to, amount);
    }

}