pragmasolidity ^0.5.0;import"./SafeMath.sol";
import"./ERC20Interface.sol";
// ----------------------------------------------------------------------------// 'Bavala' 'BVA' token contract//// Symbol : BVA// Name : Bavala// Total supply : 28,000,000.000000000000000000// Decimals : 18//// ----------------------------------------------------------------------------// ----------------------------------------------------------------------------// ERC20 Token, with the addition of symbol, name and decimals and an// initial fixed supply// ----------------------------------------------------------------------------contractBVAisERC20Interface{
usingSafeMathforuint;
stringpublic symbol ="BVA";
stringpublic name ="Bavala";
uint8public decimals =18;
uint _totalSupply =28000000e18;
addresspayable owner;
mapping(address=>uint) balances;
mapping(address=>mapping(address=>uint)) allowed;
modifierisOwner() {
require(msg.sender== owner, "must be contract owner");
_;
}
// ------------------------------------------------------------------------// Constructor// ------------------------------------------------------------------------constructor() public{
address ctr =address(this);
owner =msg.sender;
balances[ctr] = _totalSupply;
emit Transfer(address(0x0), ctr, _totalSupply);
}
// ------------------------------------------------------------------------// Transfer the balance from this contract to `to` account// ------------------------------------------------------------------------functionsendBVA(address to, uint tokens) externalisOwnerreturns(bool) {
address ctr =address(this);
balances[ctr] = balances[ctr].sub(tokens);
balances[to] = balances[to].add(tokens);
emit Transfer(ctr, to, tokens);
returntrue;
}
// ------------------------------------------------------------------------// Withdraw ETH from this contract to `owner`// ------------------------------------------------------------------------functionwithdrawEther(uint _amount) externalisOwner{
owner.transfer(_amount);
}
// ------------------------------------------------------------------------// Total supply// ------------------------------------------------------------------------functiontotalSupply() publicviewreturns (uint) {
return _totalSupply;
}
// ------------------------------------------------------------------------// Get the token balance for account `tokenOwner`// ------------------------------------------------------------------------functionbalanceOf(address tokenOwner) publicviewreturns (uint balance) {
return balances[tokenOwner];
}
// ------------------------------------------------------------------------// Transfer the balance from token owner's account to `to` account// - Owner's account must have sufficient balance to transfer// - 0 value transfers are allowed// ------------------------------------------------------------------------functiontransfer(address to, uint tokens) publicreturns (bool success) {
balances[msg.sender] = balances[msg.sender].sub(tokens);
balances[to] = balances[to].add(tokens);
emit Transfer(msg.sender, to, tokens);
returntrue;
}
// ------------------------------------------------------------------------// Token owner can approve for `spender` to transferFrom(...) `tokens`// from the token owner's account//// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md// recommends that there are no checks for the approval double-spend attack// as this should be implemented in user interfaces// ------------------------------------------------------------------------functionapprove(address spender, uint tokens) publicreturns (bool success) {
allowed[msg.sender][spender] = tokens;
emit Approval(msg.sender, spender, tokens);
returntrue;
}
// ------------------------------------------------------------------------// Transfer `tokens` from the `from` account to the `to` account//// The calling account must already have sufficient tokens approve(...)-d// for spending from the `from` account and// - From account must have sufficient balance to transfer// - Spender must have sufficient allowance to transfer// - 0 value transfers are allowed// ------------------------------------------------------------------------functiontransferFrom(addressfrom, address to, uint tokens) publicreturns (bool success) {
balances[from] = balances[from].sub(tokens);
allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
balances[to] = balances[to].add(tokens);
emit Transfer(from, to, tokens);
returntrue;
}
// ------------------------------------------------------------------------// Returns the amount of tokens approved by the owner that can be// transferred to the spender's account// ------------------------------------------------------------------------functionallowance(address tokenOwner, address spender) publicviewreturns (uint remaining) {
return allowed[tokenOwner][spender];
}
// ------------------------------------------------------------------------// accept ETH// ------------------------------------------------------------------------function () externalpayable{
}
}
pragmasolidity ^0.5.0;// ----------------------------------------------------------------------------// Safe maths// ----------------------------------------------------------------------------librarySafeMath{
functionadd(uint a, uint b) internalpurereturns (uint c) {
c = a + b;
require(c >= a);
}
functionsub(uint a, uint b) internalpurereturns (uint c) {
require(b <= a);
c = a - b;
}
functionmul(uint a, uint b) internalpurereturns (uint c) {
c = a * b;
require(a ==0|| c / a == b);
}
functiondiv(uint a, uint b) internalpurereturns (uint c) {
require(b >0);
c = a / b;
}
}