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 |
Get BTC, ETH and GENY prices
Genyleap exposes a protected price endpoint that returns BTC, ETH and GENY together. Access is personal and tied to your OpenProof identity.
Your Genyleap account must have developer API access enabled by an administrator before you can create a bearer token. After approval, open Account → APIs to generate or rotate your token. If access is not enabled, contact [email protected] and describe what you are building, which API you need and your expected request volume.
| Endpoint | GET https://api.genyleap.com/v1/prices |
|---|---|
| Authentication | Authorization: Bearer <YOUR_TOKEN> |
| Assets | BTC · ETH · GENY |
| Source | Base pairs via Dexscreener |
| Matching | Match by token symbol; never by response-array position |
curl -H "Authorization: Bearer <YOUR_TOKEN>" \ https://api.genyleap.com/v1/prices
const response = await fetch("https://api.genyleap.com/v1/prices", {
headers: {
Authorization: `Bearer ${process.env.GENYLEAP_API_TOKEN}`
}
});
if (!response.ok) {
throw new Error(`Genyleap API returned ${response.status}`);
}
const prices = await response.json();
console.log(prices.GENY.usd);{
"BTC": { "usd": 85703.46, "change24h": 0.38 },
"ETH": { "usd": 2707.72, "change24h": 0.28 },
"GENY": { "usd": 0.001266, "change24h": -0.42 },
"meta": {
"source": "dexscreener",
"chain": "base",
"fetchedAt": "2026-10-06T14:30:00+00:00"
}
}Keep bearer tokens server-side or in another trusted runtime. Do not embed a personal token in public client-side JavaScript, committed source code, screenshots or logs. Rotate the token from Account → APIs if you believe it has been exposed.
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.