GENY を Base に統合する。
GENY balance の読み取り、transfer の準備、network の検証、wallet onboarding の案内を必要とするアプリケーション向けの実践的なインターフェースです。
プロダクション定数
| ネットワーク | Base Mainnet |
|---|---|
| Chain ID | 8453 · 0x2105 |
| Native gas token | ETH |
| Token symbol | GENY |
| 小数桁 | 18 |
| コントラクト | 0x2a3d6f8c1fc4AcDcf3A75d19b445bae02F03676B |
BTC・ETH・GENYの価格を取得する
GenyleapはBTC、ETH、GENYをまとめて返す保護された価格エンドポイントを提供します。アクセスは個人用で、OpenProof IDに紐づきます。
Bearerトークンを作成する前に、管理者がGenyleapアカウントの開発者APIアクセスを有効にする必要があります。承認後、 アカウント → API を開いてトークンを生成またはローテーションしてください。アクセスが有効でない場合は [email protected] まで連絡し、構築しているもの、必要なAPI、想定リクエスト量を説明してください。
| エンドポイント | GET https://api.genyleap.com/v1/prices |
|---|---|
| 認証 | Authorization: Bearer <YOUR_TOKEN> |
| アセット | BTC · ETH · GENY |
| ソース | Dexscreener経由のBaseペア |
| 照合方法 | トークンシンボルで照合し、レスポンス配列の位置では照合しない |
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"
}
}Bearerトークンはサーバー側または信頼できる実行環境に保管してください。個人トークンを公開クライアントJavaScript、コミット済みソースコード、スクリーンショット、ログに埋め込まないでください。漏えいした可能性がある場合は、アカウント → APIからトークンをローテーションしてください。
残高を読む
GENY は標準 ERC-20 の balance interface を使用します。リクエストは常に Base Mainnet に固定し、返却された整数を 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);transfer を準備する
transfer はウォレットで承認される ERC-20 transaction です。ユーザーの recovery phrase や 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();write 操作を有効にする前に、接続チェーンが Base Mainnet (8453) であることを確認し、完全な宛先アドレスをユーザーに表示してください。
Wallet onboarding
injected または EIP-6963 wallet を検出
暗黙に選択せず、ユーザーが既に選んでいる wallet と provider を優先してください。
Base Mainnet を要求
用途 wallet_switchEthereumChain with 0x2105. 次の値へのフォールバックは wallet_addEthereumChain wallet が chain 未知を返した場合だけにしてください。
token import を案内
wallet_watchAsset 対応 wallet に GENY を提案できますが、contract address を使う手動経路は常に残してください。
独立して検証する
ユーザーを BaseScan に案内し、価値を移動する操作の前に contract address の検証を促してください。
統合ルール
- contract address を主たる token identifier として扱い、名称・symbol・logo は表示用 metadata とみなしてください。
- seed phrase や private key を要求しないでください。
- 署名前に active chain と destination を表示してください。
- アプリケーション状態が確認に依存する場合は transaction receipt を待ってください。
- cache された UI state から balance を推測せず、chain または信頼できる indexer から読み取ってください。