GENY를 Base에 통합하세요.
GENY balance를 읽고, transfer를 준비하고, 네트워크를 검증하고, 사용자의 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 surface를 사용합니다. 요청은 항상 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는 wallet이 승인한 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 작업을 활성화하기 전에 연결된 chain이 Base Mainnet인지 확인하세요 (8453) 그리고 전체 destination address를 사용자에게 표시하세요.
Wallet onboarding
injected 또는 EIP-6963 wallet 감지
자동으로 선택하지 말고 사용자가 이미 선택한 wallet과 provider를 우선하세요.
Base Mainnet 요청
용도 wallet_switchEthereumChain with 0x2105. 다음 값으로의 fallback은 wallet_addEthereumChain wallet이 chain을 알 수 없다고 보고할 때만 사용하세요.
token import 제공
wallet_watchAsset 호환 wallet에 GENY를 제안할 수 있지만 contract address를 통한 수동 경로는 항상 제공해야 합니다.
독립적으로 검증
사용자를 BaseScan으로 연결하고 가치가 이동하는 작업 전에 contract address 검증을 권장하세요.
통합 규칙
- contract address를 기본 token identifier로 취급하세요. 이름, 심볼, 로고는 표시용 metadata입니다.
- seed phrase 또는 private key를 절대 요청하지 마세요.
- 서명 전에 active chain과 destination을 표시하세요.
- 애플리케이션 상태가 확인에 의존한다면 transaction receipt를 기다리세요.
- 캐시된 UI state에서 balance를 추론하지 말고 chain 또는 신뢰할 수 있는 indexer에서 읽으세요.