pragmasolidity^0.8.20;/**
* @title ERC7196 Simple token interface
* @dev See https://ercs.ethereum.org/ERCS/erc-7196
*/interfaceIERC7196{/**
* @notice Used to notify transfer tokens.
* @param from Address of the from
* @param to Address of the receive
* @param value The transaction amount
*/eventTransfer(addressindexedfrom,addressindexedto,uint256value);/**
* @notice Get the total supply
* @return total The total supply amount
*/functiontotalSupply()externalviewreturns(uint256total);/**
* @notice get the balance of owenr address
* @param owner Address of the owner
* @return balance The balance of the owenr address
*/functionbalanceOf(addressowner)externalviewreturns(uint256balance);/**
* @notice Transfer token
* @param to Address of the to
* @param value The transaction amount
* @return success The bool value returns whether the transfer is successful
*/functiontransfer(addressto,uint256value)externalreturns(boolsuccess);}
pragmasolidity^0.8.20;import"./IERC7196.sol";import"../../math/SafeMath.sol";/**
* @title Standard ERC7196 token
* @dev Note: the ERC-165 identifier for this interface is 0xc1b31357
* @dev Implementation of the basic standard token.
*/contractERC7196isIERC7196{usingSafeMathforuint256;mapping(address=>uint256)private_balances;uint256private_totalSupply;functiontotalSupply()externalviewreturns(uint256){return_totalSupply;}functionbalanceOf(addressowner)externalviewreturns(uint256){return_balances[owner];}functiontransfer(addressto,uint256value)externalreturns(bool){require(value<=_balances[msg.sender]);require(to!=address(0));_balances[msg.sender]=_balances[msg.sender].sub(value);_balances[to]=_balances[to].add(value);emitTransfer(msg.sender,to,value);returntrue;}}