LittleRabbitToken

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": {
    "Littlerabbitv2.sol": {
      "content": "// SPDX-License-Identifier: MIT\r
pragma solidity ^0.8.19;\r
\r
interface IBEP20 {\r
    function totalSupply() external view returns (uint256);\r
    function balanceOf(address account) external view returns (uint256);\r
    function transfer(address recipient, uint256 amount) external returns (bool);\r
    function allowance(address owner, address spender) external view returns (uint256);\r
    function approve(address spender, uint256 amount) external returns (bool);\r
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\r
    event Transfer(address indexed from, address indexed to, uint256 value);\r
    event Approval(address indexed owner, address indexed spender, uint256 value);\r
}\r
\r
contract LittleRabbitToken is IBEP20 {\r
    string private _name = "Little Rabbit";\r
    string private _symbol = "LTRBT";\r
    uint8 private _decimals = 18;\r
    \r
    uint256 private _totalSupply;\r
    mapping(address => uint256) private _balances;\r
    mapping(address => mapping(address => uint256)) private _allowances;\r
    \r
    address public owner;\r
    uint256 public gasFeePercentage = 1; // 1% gas fee\r
    \r
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r
    event GasFeeUpdated(uint256 previousPercentage, uint256 newPercentage);\r
    \r
    modifier onlyOwner() {\r
        require(msg.sender == owner, "Only owner can call this function");\r
        _;\r
    }\r
    \r
    constructor(uint256 initialSupply) {\r
        owner = msg.sender;\r
        _totalSupply = initialSupply * 10**uint256(_decimals);\r
        _balances[msg.sender] = _totalSupply;\r
        emit Transfer(address(0), msg.sender, _totalSupply);\r
    }\r
    \r
    function name() public view returns (string memory) {\r
        return _name;\r
    }\r
    \r
    function symbol() public view returns (string memory) {\r
        return _symbol;\r
    }\r
    \r
    function decimals() public view returns (uint8) {\r
        return _decimals;\r
    }\r
    \r
    function totalSupply() public view override returns (uint256) {\r
        return _totalSupply;\r
    }\r
    \r
    function balanceOf(address account) public view override returns (uint256) {\r
        return _balances[account];\r
    }\r
    \r
    function transfer(address recipient, uint256 amount) public override returns (bool) {\r
        _transfer(msg.sender, recipient, amount);\r
        return true;\r
    }\r
    \r
    function allowance(address _owner, address spender) public view override returns (uint256) {\r
        return _allowances[_owner][spender];\r
    }\r
    \r
    function approve(address spender, uint256 amount) public override returns (bool) {\r
        _approve(msg.sender, spender, amount);\r
        return true;\r
    }\r
    \r
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\r
        _transfer(sender, recipient, amount);\r
        \r
        uint256 currentAllowance = _allowances[sender][msg.sender];\r
        require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");\r
        _approve(sender, msg.sender, currentAllowance - amount);\r
        \r
        return true;\r
    }\r
    \r
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\r
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);\r
        return true;\r
    }\r
    \r
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\r
        uint256 currentAllowance = _allowances[msg.sender][spender];\r
        require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");\r
        _approve(msg.sender, spender, currentAllowance - subtractedValue);\r
        \r
        return true;\r
    }\r
    \r
    function _transfer(address sender, address recipient, uint256 amount) internal {\r
        require(sender != address(0), "BEP20: transfer from the zero address");\r
        require(recipient != address(0), "BEP20: transfer to the zero address");\r
        require(amount > 0, "Transfer amount must be greater than zero");\r
        require(_balances[sender] >= amount, "BEP20: transfer amount exceeds balance");\r
        \r
        // Calculate gas fee (percentage of the transfer amount)\r
        uint256 gasFee = (amount * gasFeePercentage) / 100;\r
        uint256 netAmount = amount - gasFee;\r
        \r
        // Deduct from sender\r
        _balances[sender] -= amount;\r
        \r
        // Transfer net amount to recipient (automatically appears in their wallet)\r
        _balances[recipient] += netAmount;\r
        \r
        // Burn the gas fee (remove from total supply)\r
        _totalSupply -= gasFee;\r
        \r
        emit Transfer(sender, recipient, netAmount);\r
        emit Transfer(sender, address(0), gasFee); // Burn event\r
    }\r
    \r
    function _approve(address _owner, address spender, uint256 amount) internal {\r
        require(_owner != address(0), "BEP20: approve from the zero address");\r
        require(spender != address(0), "BEP20: approve to the zero address");\r
        \r
        _allowances[_owner][spender] = amount;\r
        emit Approval(_owner, spender, amount);\r
    }\r
    \r
    function setGasFeePercentage(uint256 newPercentage) external onlyOwner {\r
        require(newPercentage <= 10, "Gas fee cannot exceed 10%");\r
        emit GasFeeUpdated(gasFeePercentage, newPercentage);\r
        gasFeePercentage = newPercentage;\r
    }\r
    \r
    function renounceOwnership() external onlyOwner {\r
        emit OwnershipTransferred(owner, address(0));\r
        owner = address(0);\r
    }\r
    \r
    function transferOwnership(address newOwner) external onlyOwner {\r
        require(newOwner != address(0), "New owner is the zero address");\r
        emit OwnershipTransferred(owner, newOwner);\r
        owner = newOwner;\r
    }\r
    \r
    // Safety function to recover any accidentally sent BNB\r
    function recoverBNB() external onlyOwner {\r
        payable(owner).transfer(address(this).balance);\r
    }\r
    \r
    // Accept BNB (for potential future functionalities)\r
    receive() external payable {}\r
}"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 50
    },
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    },
    "remappings": [],
    "evmVersion": "london"
  }
}}

Tags:
ERC20, Token, Factory|addr:0x0ee4bdce3647de078a35d90f8b26c61894e8cc71|verified:true|block:23378535|tx:0x524affefab5e984e4b9dc8be1dea4a830b2be8b8a10c275eb85a484a663e315a|first_check:1758119832

Submitted on: 2025-09-17 16:37:14

Comments

Log in to comment.

No comments yet.