Description:
ERC20 token contract with Factory capabilities. Standard implementation for fungible tokens on Ethereum.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"VoltPay-Erc.sol": {
"content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.19;\r
\r
contract VoltPay {\r
string public name = "VoltPay";\r
string public symbol = "VLT";\r
uint8 public constant decimals = 18;\r
\r
uint256 public totalSupply;\r
\r
mapping(address => uint256) private _balances;\r
mapping(address => mapping(address => uint256)) private _allowances;\r
\r
event Transfer(address indexed from, address indexed to, uint256 value);\r
event Approval(address indexed owner, address indexed spender, uint256 value);\r
\r
constructor() {\r
uint256 initialSupply = 100_000_000 * 10 ** uint256(decimals);\r
totalSupply = initialSupply;\r
_balances[msg.sender] = initialSupply;\r
emit Transfer(address(0), msg.sender, initialSupply);\r
}\r
\r
function balanceOf(address account) public view returns (uint256) {\r
return _balances[account];\r
}\r
\r
function transfer(address to, uint256 amount) public returns (bool) {\r
_transfer(msg.sender, to, amount);\r
return true;\r
}\r
\r
function allowance(address owner, address spender) public view returns (uint256) {\r
return _allowances[owner][spender];\r
}\r
\r
function approve(address spender, uint256 amount) public returns (bool) {\r
_approve(msg.sender, spender, amount);\r
return true;\r
}\r
\r
function transferFrom(address from, address to, uint256 amount) public returns (bool) {\r
uint256 currentAllowance = _allowances[from][msg.sender];\r
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");\r
\r
_transfer(from, to, amount);\r
_approve(from, msg.sender, currentAllowance - amount);\r
return true;\r
}\r
\r
function _transfer(address from, address to, uint256 amount) internal {\r
require(from != address(0), "ERC20: transfer from zero address");\r
require(to != address(0), "ERC20: transfer to zero address");\r
require(_balances[from] >= amount, "ERC20: insufficient balance");\r
\r
_balances[from] -= amount;\r
_balances[to] += amount;\r
\r
emit Transfer(from, to, amount);\r
}\r
\r
function _approve(address owner, address spender, uint256 amount) internal {\r
require(owner != address(0), "ERC20: approve from zero address");\r
require(spender != address(0), "ERC20: approve to zero address");\r
\r
_allowances[owner][spender] = amount;\r
emit Approval(owner, spender, amount);\r
}\r
}\r
"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}
}}
Submitted on: 2025-11-04 12:46:26
Comments
Log in to comment.
No comments yet.