Integrate GENY on Base.
The practical surface for applications that need to read GENY balances, prepare transfers, verify the network and guide users through wallet onboarding.
Production constants
| Network | Base Mainnet |
|---|---|
| Chain ID | 8453 · 0x2105 |
| Native gas token | ETH |
| Token symbol | GENY |
| Decimals | 18 |
| Contract | 0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B |
Read a balance
GENY uses the standard ERC-20 balance surface. Always bind the request to Base Mainnet and format the returned integer using 18 decimals.
import { JsonRpcProvider, Contract, formatUnits } from "ethers";
const provider = new JsonRpcProvider("https://mainnet.base.org");
const token = new Contract(
"0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B",
["function balanceOf(address) view returns (uint256)"],
provider
);
const raw = await token.balanceOf(userAddress);
const balance = formatUnits(raw, 18);Prepare a transfer
A transfer is a wallet-authorized ERC-20 transaction. Do not request or handle a user's recovery phrase or private key.
import { BrowserProvider, Contract, parseUnits } from "ethers";
const provider = new BrowserProvider(window.ethereum);
const signer = await provider.getSigner();
const token = new Contract(
"0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B",
["function transfer(address,uint256) returns (bool)"],
signer
);
const tx = await token.transfer(recipient, parseUnits("12.5", 18));
await tx.wait();Before enabling a write action, verify the connected chain is Base Mainnet (8453) and show the full destination address to the user.
Wallet onboarding
Detect an injected or EIP-6963 wallet
Prefer the user's existing wallet and provider choice instead of silently selecting one.
Request Base Mainnet
Use wallet_switchEthereumChain with 0x2105. Only fall back to wallet_addEthereumChain when the wallet reports the chain is unknown.
Offer token import
wallet_watchAsset can suggest GENY to compatible wallets, but a manual contract-address path should always remain available.
Verify independently
Link users to BaseScan and encourage contract-address verification before any value-moving action.
Integration rules
- Treat the contract address as the primary token identifier; names, symbols and logos are display metadata.
- Never ask for a seed phrase or private key.
- Surface the active chain and destination before signing.
- Wait for transaction receipts when the application state depends on confirmation.
- Do not infer balances from cached UI state; read from chain or a trusted indexer.