pragma solidity =0.5.16; /** @title ERC20MPCSInterface @dev Implements EIP20 interface at "https://eips.ethereum.org/EIPS/eip-20" */ contract ERC20MPCSInterface { uint256 public totalSupply; // getters function getName() public view returns (string memory); function getSymbol() public view returns (string memory); function getDecimals() public view returns (uint8); function getTotalSupply() public view returns (uint256); // ERC-20 Interface functions /** @dev Returns the account balance of another account with address _owner. @param _owner the address of the token's owner @return balance The account's balance */ function balanceOf(address _owner) public view returns (uint balance); /** @dev Transfers _value amount of tokens to address _to, and MUST fire the Transfer event. The function SHOULD throw if the message caller’s account balance does not have enough tokens to spend. @dev Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. @param _to The address the token is to be transferred to @param _value The amount of the transfer @return success boolean indicator of success or failure */ function transfer(address _to, uint256 _value) public returns (bool success); /** @dev Transfers _value amount of tokens from address _from to address _to, and MUST fire the Transfer event. @dev The transferFrom method is used for a withdraw workflow, allowing contracts to transfer tokens on your behalf. This can be used for example to allow a contract to transfer tokens on your behalf and/or to charge fees in sub-currencies. The function SHOULD throw unless the _from account has deliberately authorized the sender of the message via some mechanism. Note Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. @param _from the address the tokens are being transferred from @param _to the address the tokens are being transferred to @param _value the amount of the transfer @return success boolean indicator of success or failure */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); /** @dev Allows _spender to withdraw from your account multiple times, up to the _value amount. If this function is called again it overwrites the current allowance with _value. NOTE: To prevent attack vectors like the one described here and discussed here, clients SHOULD make sure to create user interfaces in such a way that they set the allowance first to 0 before setting it to another value for the same spender. THOUGH The contract itself shouldn’t enforce it, to allow backwards compatibility with contracts deployed before @param _spender the address of the spender @param _value the amount of the spend @return success boolean indicator of success or failure */ function approve(address _spender, uint256 _value) public returns (bool success); /** @dev Returns the amount which _spender is still allowed to withdraw from _owner. @param _owner the owner of the account @param _spender the address of the spender @return success boolean indicator of success or failure */ function allowance(address _owner, address _spender) public view returns (uint remaining); // ERC-20 Events /** @dev MUST trigger when tokens are transferred, including zero value transfers. A token contract which creates new tokens SHOULD trigger a Transfer event with the _from address set to 0x0 when tokens are created. */ event Transfer(address indexed from, address indexed to, uint tokens); /** @dev MUST trigger on any successful call to approve(address _spender, uint256 _value). */ event Approval(address indexed tokenOwner, address indexed spender, uint tokens); }