Token contract code
below is source code off token VBA
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract VampireToken is IERC20 {
string public constant name = "Vampire Auto Bot Token";
string public constant symbol = "VAB";
uint8 public constant decimals = 18;
uint256 public constant totalSupply = 1_000_000_000 * 10**decimals; // 1 billion tokens
mapping(address => uint256) private balances;
mapping(address => mapping(address => uint256)) private allowances;
address public owner;
// Burn mechanism
uint256 public burnRate = 5; // 0.5% burn rate (scaled by 10)
uint256 public burnedTokens;
// Events
event Burn(address indexed from, uint256 amount);
constructor() {
owner = msg.sender;
balances[owner] = totalSupply; // Assign all tokens to the contract owner
emit Transfer(address(0), owner, totalSupply);
}
// ERC-20 Functions
function balanceOf(address account) external view override returns (uint256) {
return balances[account];
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(address owner, address spender) external view override returns (uint256) {
return allowances[owner][spender];
}
function approve(address spender, uint256 amount) external override returns (bool) {
allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
require(allowances[sender][msg.sender] >= amount, "Allowance exceeded");
allowances[sender][msg.sender] -= amount;
_transfer(sender, recipient, amount);
return true;
}
// Internal Transfer with Burn Mechanism
function _transfer(address sender, address recipient, uint256 amount) internal {
require(balances[sender] >= amount, "Insufficient balance");
require(recipient != address(0), "Invalid recipient address");
uint256 burnAmount = (amount * burnRate) / 1000; // Calculate 0.5% burn
uint256 transferAmount = amount - burnAmount;
balances[sender] -= amount;
balances[recipient] += transferAmount;
if (burnAmount > 0) {
burnedTokens += burnAmount;
emit Burn(sender, burnAmount);
}
emit Transfer(sender, recipient, transferAmount);
}
// Burn Function
function burn(uint256 amount) external {
require(balances[msg.sender] >= amount, "Insufficient balance to burn");
balances[msg.sender] -= amount;
burnedTokens += amount;
emit Burn(msg.sender, amount);
}
// Total burned tokens
function totalBurned() external view returns (uint256) {
return burnedTokens;
}
// Only Owner Modifier
modifier onlyOwner() {
require(msg.sender == owner, "Not the contract owner");
_;
}
}
// Interface for ERC-20
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}1. Features of the $VAB Token Contract
1. ERC-20 Standard Compliance
• Implements all basic ERC-20 functions: transfer, approve, transferFrom, and balanceOf.
2. Burn Mechanism
• Automatic Burn: 0.5% of every transaction is burned, reducing the total circulating supply.
• Manual Burn: Token holders can burn their tokens using the burn function.
3. Total Supply
• Fixed total supply of 1 billion $VAB tokens.
4. Ownership
• The contract assigns all initial tokens to the deployer (owner), typically the project’s wallet.
Last updated