MemeToken
0xb3e1995fba5f91662d887ef2d8b037216596135d
Verification
Verified
v0.8.24+commit.e11b9ed9
Type
Contract
1,665 bytes
ABI entries
16
9 read · 3 write
License
none
Contract information
- Address
- 0xb3e1995fba5f91662d887ef2d8b037216596135d
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.24+commit.e11b9ed9
- Optimization
- Enabled
- Creator
- 0xA790E6593C…E25e72d72f
- Creation tx
- 0x935e82d856…00275cc1cf
Token
- Name
- Green
- Symbol
- GREEN
- Decimals
- 18
- Holders
- 9
- Market
- View token page →
Read contract (9)
allowance(address, address) → uint256
balanceOf(address) → uint256
contractURI() → string
decimals() → uint8
name() → string
owner() → address
symbol() → string
tokenURI() → string
totalSupply() → uint256
Events (3)
ApprovalOwnershipTransferredTransfer
ABI
[
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "_supply",
"type": "uint256"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "string",
"name": "_uri",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "contractURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
/// @title MemeToken — minimal fixed-supply ERC-20 used by robinhood.meme
/// @notice Mints the entire supply to `_owner` on deploy. No mint/burn afterwards.
/// Ownership is renounced by construction: `owner()` always returns the
/// zero address and the constructor emits Ownable's
/// OwnershipTransferred(previousOwner, address(0)) event so scanners
/// that key off the event (GMGN etc.) flag the token as "renounced".
contract MemeToken {
string public name;
string public symbol;
uint8 public constant decimals = 18;
uint256 public totalSupply;
/// Per-token metadata URI (ipfs://... or https://...). Some explorers /
/// scanners read this to display the token logo and description.
string public tokenURI;
/// Alias used by ERC-7572 (contract-level metadata).
string public contractURI;
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);
/// Standard Ownable event — emitted twice in the constructor to signal
/// that ownership was granted to the deployer and immediately renounced.
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(
string memory _name,
string memory _symbol,
uint256 _supply,
address _owner,
string memory _uri
) {
name = _name;
symbol = _symbol;
totalSupply = _supply;
tokenURI = _uri;
contractURI = _uri;
balanceOf[_owner] = _supply;
emit Transfer(address(0), _owner, _supply);
// Ownable renounce trace: zero -> deployer -> zero.
emit OwnershipTransferred(address(0), _owner);
emit OwnershipTransferred(_owner, address(0));
}
/// @notice Ownable-compatible view. Always returns the zero address so
/// chain security scanners (GMGN, DexScreener, Honeypot.is, etc.)
/// detect the token as having renounced ownership. There is no
/// setter — the token has no admin, no mint, no burn, no pause.
function owner() external pure returns (address) {
return address(0);
}
function approve(address spender, uint256 value) external returns (bool) {
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transfer(address to, uint256 value) external returns (bool) {
_transfer(msg.sender, to, value);
return true;
}
function transferFrom(address from, address to, uint256 value) external returns (bool) {
uint256 a = allowance[from][msg.sender];
if (a != type(uint256).max) {
require(a >= value, "allowance");
allowance[from][msg.sender] = a - value;
}
_transfer(from, to, value);
return true;
}
function _transfer(address from, address to, uint256 value) internal {
require(to != address(0), "to=0");
uint256 b = balanceOf[from];
require(b >= value, "balance");
unchecked { balanceOf[from] = b - value; }
balanceOf[to] += value;
emit Transfer(from, to, value);
}
}
Chain explorer4174msChain node74ms