// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; /** * YAQUT BITCOIN (YQB) * Ett BEP20-mynt för BNB Smart Chain. * * - Fast maxutbud: 21 000 000 YQB (18 decimaler), allt mintas till ägaren vid utläggning. * - Ingen ytterligare mint är möjlig: mint-funktionen finns inte. * - Ägaren kan bränna sina egna mynt och överlåta ägarskapet. * - Standard BEP20/ERC20: transfer, approve, transferFrom, allowance. * * Kontraktet är avsiktligt litet och utan externa beroenden så att det kan * klistras in direkt i Remix (https://remix.ethereum.org) och läggas ut. */ contract YaqutBitcoin { string public constant name = "YAQUT BITCOIN"; string public constant symbol = "YQB"; uint8 public constant decimals = 18; uint256 public totalSupply; address public owner; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { owner = msg.sender; totalSupply = 21_000_000 * 10 ** uint256(decimals); balanceOf[msg.sender] = totalSupply; emit Transfer(address(0), msg.sender, totalSupply); emit OwnershipTransferred(address(0), msg.sender); } modifier onlyOwner() { require(msg.sender == owner, "YQB: endast agaren"); _; } function transfer(address to, uint256 value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function approve(address spender, uint256 value) external returns (bool) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function transferFrom(address from, address to, uint256 value) external returns (bool) { uint256 allowed = allowance[from][msg.sender]; require(allowed >= value, "YQB: for lag allowance"); if (allowed != type(uint256).max) { allowance[from][msg.sender] = allowed - value; } _transfer(from, to, value); return true; } function burn(uint256 value) external { require(balanceOf[msg.sender] >= value, "YQB: for lagt saldo"); balanceOf[msg.sender] -= value; totalSupply -= value; emit Transfer(msg.sender, address(0), value); } function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), "YQB: ogiltig adress"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function _transfer(address from, address to, uint256 value) internal { require(to != address(0), "YQB: ogiltig mottagare"); require(balanceOf[from] >= value, "YQB: for lagt saldo"); balanceOf[from] -= value; balanceOf[to] += value; emit Transfer(from, to, value); } }