0x3c3f2f22…be26sent to0x00004c4c…d4e9·#25,777,413·0x027f4650…457bca
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
/// @title Laki BVM
/// @notice Simple fixed-supply ERC-20 token.
/// @dev No owner, no mint, no pause, no blacklist,
/// no whitelist, no taxes, no proxy and no upgrade logic.
contract LakiBVM {
string public constant name = "Laki BVM";
string public constant symbol = "BVM";
uint8 public constant decimals = 18;
// Fixed initial supply: 10,000 BVM
uint256 public constant TOTAL_SUPPLY =
10_000 * 10 ** uint256(decimals);
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
error ZeroAddress();
error InsufficientBalance();
error InsufficientAllowance();
event Transfer(
address indexed from,
address indexed to,
uint256 value
);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
/// @notice Creates the full supply and sends it to the wallet
/// that deploys this contract.
constructor() {
totalSupply = TOTAL_SUPPLY;
balanceOf[msg.sender] = TOTAL_SUPPLY;
emit Transfer(
address(0),
msg.sender,
TOTAL_SUPPLY
);
}
/// @notice Transfer BVM to another wallet.
function transfer(
address to,
uint256 value
) external returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
/// @notice Give another address permission to spend BVM.
function approve(
address spender,
uint256 value
) external returns (bool) {
if (spender == address(0)) {
revert ZeroAddress();
}
allowance[msg.sender][spender] = value;
emit Approval(
msg.sender,
spender,
value
);
return true;
}
/// @notice Transfer BVM using an existing allowance.
funipfs://bafkreihsyklmq6wmhb7ad3a623mnheglf5aznbvsxm2hbgsmit23wt7p24