synapsecns/sanguine

View on GitHub
ethergo/examples/contracttests/counter/counter.sol

Summary

Maintainability
Test Coverage
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

contract Counter {
    // this is used for testing account impersonation
    address constant VITALIK = address(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045);

    event Incremented(int count);
    event Decremented(int count);
    event IncrementedByUser(address user, int count);

    int private count = 0;
    int private vitaikCount = 0;

    // @dev the block the contract was deployed at
    uint256 public immutable deployBlock;

    constructor()  {
        deployBlock = block.number;
    }


    function incrementCounter() public {
        count += 1;
        emit Incremented(count);
    }
    function decrementCounter() public {
        count -= 1;
        emit Decremented(count);
    }

    function vitalikIncrement() public {
        require(msg.sender == VITALIK, "Only Vitalik can count by 10");
        vitaikCount += 10;
        emit IncrementedByUser(msg.sender, vitaikCount);
    }

    function getCount() public view returns (int) {
        return count;
    }

    function getVitalikCount() public view returns (int) {
        return vitaikCount;
    }
}