Description:
Smart contract deployed on Ethereum with Factory features.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"EuroDigital.sol": {
"content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.18;\r
\r
/// @title Euro Digital Token (BEP-20) con prezzo virtuale fisso 1 € per token\r
contract EuroDigital {\r
string public name = "Euro Digital";\r
string public symbol = "EURC";\r
uint8 public decimals = 18;\r
uint256 public totalSupply;\r
address public owner;\r
\r
// Prezzo virtuale 1 € per token (scaled 1e18)\r
uint256 public virtualPriceEUR = 1e18;\r
\r
mapping(address => uint256) private _balances;\r
mapping(address => mapping(address => uint256)) public allowance;\r
\r
event Transfer(address indexed from, address indexed to, uint256 value);\r
event Approval(address indexed ownerAddr, address indexed spender, uint256 value);\r
event VirtualPriceUpdated(uint256 oldPrice, uint256 newPrice);\r
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r
\r
modifier onlyOwner() {\r
require(msg.sender == owner, "Only owner");\r
_;\r
}\r
\r
constructor() {\r
owner = msg.sender;\r
totalSupply = 1_000_000_000_000 * 10**decimals; // trilioni con 18 decimali\r
_balances[msg.sender] = totalSupply;\r
emit Transfer(address(0), msg.sender, totalSupply);\r
}\r
\r
// --- ERC20-like ---\r
function balanceOf(address account) public view returns (uint256) {\r
return _balances[account];\r
}\r
\r
function transfer(address to, uint256 value) public returns (bool) {\r
require(_balances[msg.sender] >= value, "balance too low");\r
_balances[msg.sender] -= value;\r
_balances[to] += value;\r
emit Transfer(msg.sender, to, value);\r
return true;\r
}\r
\r
function approve(address spender, uint256 value) public returns (bool) {\r
allowance[msg.sender][spender] = value;\r
emit Approval(msg.sender, spender, value);\r
return true;\r
}\r
\r
function transferFrom(address from, address to, uint256 value) public returns (bool) {\r
require(_balances[from] >= value, "balance too low");\r
require(allowance[from][msg.sender] >= value, "allowance too low");\r
allowance[from][msg.sender] -= value;\r
_balances[from] -= value;\r
_balances[to] += value;\r
emit Transfer(from, to, value);\r
return true;\r
}\r
\r
// --- Owner functions ---\r
function mint(address to, uint256 amount) external onlyOwner {\r
_balances[to] += amount;\r
totalSupply += amount;\r
emit Transfer(address(0), to, amount);\r
}\r
\r
function burn(address from, uint256 amount) external onlyOwner {\r
require(_balances[from] >= amount, "insufficient");\r
_balances[from] -= amount;\r
totalSupply -= amount;\r
emit Transfer(from, address(0), amount);\r
}\r
\r
function setVirtualPriceEUR(uint256 newPriceScaled) external onlyOwner {\r
emit VirtualPriceUpdated(virtualPriceEUR, newPriceScaled);\r
virtualPriceEUR = newPriceScaled;\r
}\r
\r
function transferOwnership(address newOwner) external onlyOwner {\r
require(newOwner != address(0), "zero addr");\r
emit OwnershipTransferred(owner, newOwner);\r
owner = newOwner;\r
}\r
\r
// --- Helper view: calcola valore in € di un saldo ---\r
function valueInEURScaled(uint256 tokenAmountBaseUnits) public view returns (uint256) {\r
return (tokenAmountBaseUnits * virtualPriceEUR) / (10**uint256(decimals));\r
}\r
}\r
"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}
}}
Submitted on: 2025-10-28 18:40:35
Comments
Log in to comment.
No comments yet.