RawbinToken
0x2ad76123e2dd993def9fbcba31972ccc33f54999
Verification
Verified
v0.8.24+commit.e11b9ed9
Type
Contract
2,774 bytes
ABI entries
23
10 read · 4 write
License
none
Contract information
- Address
- 0x2ad76123e2dd993def9fbcba31972ccc33f54999
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.24+commit.e11b9ed9
- Optimization
- Enabled
- Creator
- 0x9eE7E27aC6…c905010999
- Creation tx
- 0xb42005e177…62c2d6ff6f
Token
- Name
- Ballin
- Symbol
- BALLIN
- Decimals
- 18
- Holders
- 2
- Market
- View token page →
Read contract (10)
allowance(address, address) → uint256
balanceOf(address) → uint256
decimals() → uint8
factory() → address
metadataURI() → string
name() → string
owner() → address
symbol() → string
tokenURI() → string
totalSupply() → uint256
Events (2)
ApprovalTransfer
ABI
[
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "uint256",
"name": "totalSupply_",
"type": "uint256"
},
{
"internalType": "address",
"name": "bondingCurve_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"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": "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": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"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": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "initializeMetadata",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "metadataURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
/// @title Rawbin RawbinToken
/// @author Rawbin — the #1 launchpad on Robinhood Chain
/// @custom:website https://rawbin.fun
/// @custom:mission We're building a transparent launchpad. This token is a plain,
/// immutable ERC-20: no owner, no mint, no tax, no blacklist, no pause. Read the
/// code and verify it yourself. Every launch is a drop. — rawbin
/// @notice Fixed-supply ERC-20 minted entirely to its BondingCurve at creation.
/// No owner-mint function exists — total supply can never change after deploy.
contract RawbinToken is ERC20 {
/// @notice The RawbinFun that deployed this token. Provenance check:
/// compare against the official factory address — fakes can't forge this.
address public immutable factory;
/// @notice Project metadata (image/description/socials URI), visible on-chain to
/// explorers and aggregators. Set exactly once by the factory at creation.
string public metadataURI;
bool private _metadataSet;
constructor(
string memory name_,
string memory symbol_,
uint256 totalSupply_,
address bondingCurve_
) ERC20(name_, symbol_) {
require(bondingCurve_ != address(0), "curve=0");
factory = msg.sender;
_mint(bondingCurve_, totalSupply_);
}
/// @notice Wires the metadata URI in. Callable exactly once, only by the factory,
/// in the same transaction as deployment (mirrors BondingCurve.initialize).
/// Kept out of the constructor so vanity-address grinding stays independent
/// of the (image-upload-derived) URI.
function initializeMetadata(string calldata uri) external {
require(msg.sender == factory, "only factory");
require(!_metadataSet, "already set");
_metadataSet = true;
metadataURI = uri;
}
/// @notice ERC-1046 token metadata URI — returns the same off-chain pointer as
/// `metadataURI`, but under the standard name that ERC-1046-aware wallets,
/// explorers and aggregators look for on an ERC-20. This is a LINK only
/// (the JSON it points to carries the image URL); the raw image bytes are
/// never stored on-chain — that would cost far more than the launch fee.
function tokenURI() external view returns (string memory) {
return metadataURI;
}
/// @notice Always the zero address — this token has no owner and never did.
/// Exposed so security scanners that read `owner()` report the token as
/// ownership-renounced (it's immutable: no mint, tax, pause or blacklist).
function owner() external pure returns (address) {
return address(0);
}
}
Chain explorer3395msChain node83ms