security – Quobjectcoin ERC20 coin weekly awarded to supporters of Quobject

I want to create an ERC20 token, and would like some help with reviewing the code for security issues.

From the whitepaper:

Quobjectcoins will be issued on a weekly basis. Beginning with 50000 tokens rewarded every week for the first 210 weeks (4.0274 years). Every 210 weeks the reward will be halved. Similar to bitcoin this schedule will limit the supply to a maximum of 21 million tokens.
Every Quobjectcoin consists of 100,000,000 Quox (1 with 8 zeroes or 100
Million.) The first issue will be T.B.A..

The token produced will be regularly distributed by the superuser to the supporters of Quobject within no more than three days after the tokens have been issued. The total amount of available tokens will be divided by the number of supporters, and each supporter gets an equal amount of tokens.

The code:

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

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

import "./Utils.sol";

contract Quobjectcoin is ERC20, AccessControl {
    uint256 constant WEEK_IN_SECONDS = 604800;
    // Create a new role identifier for the minter role
    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    address payable public owner;
    uint256 public startdate;

    struct WeekMinted {
        bool minted;
        address minter;
        uint256 date;

    mapping (uint256 => WeekMinted) public weekWasMinted;

    constructor() ERC20("Quobjectcoin", "QUOBTC") public {
        owner = msg.sender;
        startdate = currentTime();
        _setupRole(MINTER_ROLE, owner);
        _setupRole(DEFAULT_ADMIN_ROLE, owner);

    function grantMinterRole(address account) public {
        require(msg.sender == owner, "Only the owner can grantMinterRole");
        super.grantRole(MINTER_ROLE, account);

    function revokeMinterRole(address account) public {
        require(msg.sender == owner, "Only the owner can revokeMinterRole");
        super.revokeRole(MINTER_ROLE, account);

    function weeklyMint() public {
        // Check that the calling account has the minter role
        require(hasRole(MINTER_ROLE, msg.sender), "Caller is not a minter");
        uint256 current_week = getCurrentWeek();
        WeekMinted memory weekminted = weekWasMinted(current_week);
        require(!weekminted.minted, "Week was already minted");
        uint256 amount = weekToReward(current_week);
        _mint(msg.sender, amount);
        WeekMinted memory weekMint = WeekMinted(true, msg.sender, currentTime());
        weekWasMinted(current_week) = weekMint;

    function getCurrentWeek() public view returns (uint256) {
        uint256 secondsSinceStart = currentTime() - startdate;
        uint256 week = uint256(secondsSinceStart)/uint256(WEEK_IN_SECONDS);
        return week;

    function kill() external {
        require(msg.sender == owner, "Only the owner can kill this contract");

    function currentTime() internal virtual view  returns(uint) {
        return now;

    function minutesToSeconds(uint timeInMin) public pure returns(uint) {
        return Utils.minutesToSeconds(timeInMin);

    function weekToReward(uint week) public pure returns(uint) {
        return Utils.weekToReward(week);

    function fund() external payable {}



// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

library Utils {
    uint256 constant WEEKLY_REWARD = 50000;
    uint256 constant NUMBER_OF_WEEKS_SAMEREWARD = 210;

    function etherToWei(uint sumInEth) public pure returns(uint) {
        return sumInEth * 1 ether;

    function minutesToSeconds(uint timeInMin) public pure returns(uint) {
        return timeInMin * 1 minutes;

    function weekToReward(uint week) public pure returns(uint256) {
        uint256 n = uint256(week/NUMBER_OF_WEEKS_SAMEREWARD);
        uint256 result = WEEKLY_REWARD;
        for (uint i = 0; i < n; i++) {
            result = uint256(result / 2);

        return  result;


Why are Trump and his supporters so fragile and sensitive that they think “black lives matter” is hate speech?

Matthew 7:15-17

Beware of false prophets. They come to you in sheep’s clothing, but inwardly they are ravenous wolves. By their fruit you will recognize them. Are grapes gathered from thornbushes, or figs from thistles? Likewise, every good tree bears good fruit, but a bad tree bears bad fruit.…

What can Trump supporters possibly say to defend Trump after he ignored the report on Russia having bounties on US Troops?

1) The intelligence services get thousands of reports every day and they are not passed on to the president unless they are corroborated. You don’t want POTUS to be worrying about things that are probably not true.

2) We know the NYT report was not completely true because they claimed POTUS was briefed and both the White House and the Director of National Intelligence say otherwise. (Doesn’t President Trump get into lots of trouble when he is thought to be disbelieving of his intel agencies? Are we doing it now?)

3) Seeding false stories to known groups of people is a good way to catch any leakers. If that false story gets out then you are part way to tracking that pathway.

4) Leaking a story and blaming POTUS which will cause MSM outrage then point back to the real story which implicates someone else is a tricky smart move. It lets the MSM commit themselves and makes it harder for them to spin it or backtrack.

This could have been the original story. Note the date. <Iran is paying Taliban fighters $1,000 for each U.S. soldier they kill in Afghanistan>…

[ Politics ] Open Question : Trump supporters: are you heading to the Make Coronavirus Great Again Moron Convention in Tulsa today? If not, are you even a real supporter?

[ Politics ] Open Question : Trump supporters: are you heading to the Make Coronavirus Great Again Moron Convention in Tulsa today? If not, are you even a real supporter?

Why didn’t you Republicans and Trump supporters remove Trump when you had the chance?

I said the same thing when Trump got the nomination. I said that the USA was going to regret the day Trump took office. I also said that he was a malignant narcissist, pathological liar, and will never take responsibility for anything.

  Donald “Super-Duper” Trump has the emotional maturity of a six-year-old. He talks like a child. He behaves like a snot-nosed bully. How his followers can tolerate that in a President is beyond me.

YA Politics, help me with this, according to Trump supporters, Flynn is innocent, but Flynn pleaded guilty, so did Flynn lie about his guilt?

Let's pretend. Imagine you're running an organization that receives federal funding. They mix the federal funds with state and operating funds. Every time you sign a check that is outside the federal program, it is a crime. The FBI shows up on your doorstep and tells you the following: We will charge you a count of misuse of federal funds for every check you have signed. plus insurance fraud; plus a few other things. You were in prison 100 years ago. OR you can plead guilty to misusing federal funds, wearing an anklet for a month, and then living happily ever after.

Now the crime seems petty, more of a mistake than a crime. Maybe you can fight it in court. They will fight the US government with its billions of dollars in lawyers and assets. You will likely need to liquidate your home and other items to ensure that you have competent lawyers who can defeat the U.S. government. Win or lose, you won't get your home and things back. Or you can plead guilty.

The US government does this every day. They threaten people with the full weight of the government … or … they will give you a gentle punishment for admitting guilt. For most of us, that's not a big choice.

How stupid are Trump supporters?

What is most unimaginable is that they voted for a man and continue to support him who does everything to harm them.

Yes, he said what they wanted to hear. Yes, he promised them a return to the good old days as they sing in the opening theme of Archie Bunker's show "All In The Family".

But what they don't understand is that he lied to them.

They say, "Don't listen to what he says, see what he does." But do it and you will see someone who has injured farmers, military and teachers – well, everyone, except the very rich. It is only intended for itself.

We were lucky until recently – no crises, just stupid stuff. But now, thanks to its delay / concealment / lies, people are dying.

But as long as intelligent people are mad (the "elite"), his followers are happy to join in and make fun of "triggering" the rest of us (NOT just liberals – many of the strongest conservatives have declared that they will vote for Democrats for the first time ever).

Well that's stupid!