신뢰할 수 있는 노드 제공업체 없이 프로덕션 이더리움 dApp을 운영하는 것은 호출 근무(pager duty)로 이어지는 지름길입니다. 자체 호스팅 Geth 노드는 지연되고, 재편성을 놓치며, 앱이 인기를 얻는 순간 작동을 멈춥니다. Alchemy API는 강화된 노드 레이어와 함께, 제네시스 이후 모든 블록을 스캔하는 대신 한 번의 호출로 지갑의 모든 NFT를 가져오는 것과 같이 원시 JSON-RPC 사양에는 정의되지 않은 향상된 API 세트를 제공하여 이러한 문제를 해결합니다. 이 가이드는 Alchemy API의 전체 표면을 안내합니다: 앱 생성, 인증, 표준 JSON-RPC 메서드 호출, 향상된 엔드포인트 사용, WebSocket을 통한 보류 중인 트랜잭션 구독, Account Kit을 통한 가스 스폰서십을 이용한 스마트 계정 배포. 모든 주요 흐름에 대한 curl 및 Node 예시를 볼 수 있으며, 배포 전에 컴퓨팅 유닛(CU)이 월별 청구서에 어떻게 매핑되는지 이해할 수 있습니다. 지갑 및 웹3 인프라를 더 광범위하게 평가하고 있다면, Apidog는 모든 엔드포인트를 한 곳에서 테스트하는 데 도움을 줍니다. 또한 공급업체를 결정하기 전에 더 넓은 시장 관점을 위해 최고의 암호화폐 지갑 API에 대한 저희 가이드를 참조하세요.
요약 (TL;DR)
- Alchemy는 이더리움, 폴리곤, 아비트럼, 옵티미즘, 베이스, 솔라나, zkSync, 스타크넷 등을 하나의 대시보드에서 지원합니다.
- 모든 앱은 표준 JSON-RPC 외에
alchemy_getAssetTransfers,alchemy_getTokenBalances,getNFTs와 같은 향상된 API를 위한 HTTPS 및 WebSocket 엔드포인트를 얻습니다. - JavaScript용 Alchemy SDK(
alchemy-sdk)는 ethers.js를 감싸고 모든 향상된 엔드포인트에 대한 타입화된 헬퍼를 추가합니다. - Account Kit은 Gas Manager를 통해 가스 스폰서십, 세션 키, 패스키 인증을 포함한 ERC-4337 스마트 계정을 제공합니다.
- 사용량은 컴퓨팅 유닛으로 측정됩니다; 무료 티어는 월 3억 CU를 제공하며, Growth는 4억 CU에 초과 요금이 붙고, Scale은 맞춤형입니다.
- 속도 제한은 앱별 및 메서드별로 적용됩니다; 배치 요청과 SDK의 내장된 백오프 기능은 스로틀 제한을 넘지 않도록 도와줍니다.
Alchemy API란 무엇인가요?
Alchemy는 관리형 블록체인 노드를 운영하고 그 위에 데이터 인덱싱 엔진을 레이어링하는 웹3 개발자 플랫폼입니다. 직접 구축하기 어려운 세 가지를 제공합니다: 40개 이상의 체인에 걸친 고가용성 JSON-RPC 노드, 전송 및 NFT 메타데이터를 사전 인덱싱하는 향상된 API, 가스 없는 UX를 위한 계정 추상화 스택(Account Kit)입니다.
Infura가 주로 원시 노드 접근을 제공하는 반면, Alchemy는 인덱싱 레이어를 추가합니다. 주소에 대한 모든 ERC-20 전송을 가져오는 것은 단 하나의 alchemy_getAssetTransfers 호출로 가능합니다; 일반 노드에서 동일한 쿼리는 모든 블록을 반복해야 합니다. 이것이 대부분의 프로덕션 지갑, DeFi 대시보드 및 NFT 마켓플레이스가 읽기 위주 경로에 Alchemy를 사용하는 이유입니다.
인증 및 설정
Alchemy 대시보드에서 계정을 생성한 다음, 새 앱 생성(Create new app)을 클릭합니다. 체인(이더리움 메인넷, 폴리곤, 베이스 등)과 네트워크(메인넷 또는 Sepolia와 같은 테스트넷)를 선택합니다. 각 앱은 URL의 마지막 경로 세그먼트를 구성하는 고유한 API 키를 얻습니다.
HTTPS 엔드포인트는 다음과 같습니다:
https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
WebSocket 엔드포인트는 다음과 같습니다:
wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
API 키를 비밀처럼 다루세요. 환경 변수에 넣고, 클라이언트 측 코드에는 절대 넣지 마세요. 브라우저 dApp의 경우, Alchemy 대시보드에서 허용 목록(리퍼러 제한)을 사용하여 유출된 키가 공격자의 도메인에서 할당량을 소진하지 못하도록 하세요.
SDK를 설치합니다:
npm install alchemy-sdk
그런 다음 클라이언트를 초기화합니다:
import { Alchemy, Network } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const block = await alchemy.core.getBlockNumber();
console.log("최신 블록:", block);
핵심 엔드포인트
HTTPS를 통한 표준 JSON-RPC
모든 표준 이더리움 JSON-RPC 메서드가 작동합니다. 다음은 curl을 사용한 eth_getBalance입니다:
curl https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"method":"eth_getBalance",
"params":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"],
"id":1
}'
응답은 wei 단위의 잔액을 16진수 문자열로 반환합니다. 동일한 패턴이 eth_call, eth_sendRawTransaction, eth_getLogs 및 기타 모든 표준 메서드에 적용됩니다.
향상된 API: getAssetTransfers
alchemy_getAssetTransfers는 블록 범위 내에서 주소에 대한 모든 ETH, ERC-20, ERC-721, ERC-1155, 내부 및 외부 전송을 반환합니다. 한 번의 호출로 수천 개의 eth_getLogs 쿼리를 대체합니다.
import { Alchemy, Network, AssetTransfersCategory } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const transfers = await alchemy.core.getAssetTransfers({
fromBlock: "0x0",
toAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
category: [
AssetTransfersCategory.EXTERNAL,
AssetTransfersCategory.ERC20,
AssetTransfersCategory.ERC721,
],
maxCount: 100,
});
for (const t of transfers.transfers) {
console.log(`${t.asset} ${t.value} from ${t.from} to ${t.to}`);
}
향상된 API: getTokenBalances 및 getNFTs
컨트랙트 주소를 미리 알 필요 없이 지갑이 보유한 모든 토큰을 한 번의 호출로 가져옵니다:
const balances = await alchemy.core.getTokenBalances(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
for (const token of balances.tokenBalances) {
const meta = await alchemy.core.getTokenMetadata(token.contractAddress);
console.log(`${meta.symbol}: ${token.tokenBalance}`);
}
NFT의 경우 NFT 네임스페이스를 사용하세요:
const nfts = await alchemy.nft.getNftsForOwner(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
console.log(`${nfts.totalCount}개의 NFT를 소유합니다`);
WebSocket을 통한 구독 API
구독 API는 폴링 대신 업데이트를 푸시합니다. 보류 중인 트랜잭션 또는 주소 활동을 구독하세요:
import { Alchemy, Network, AlchemySubscription } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
alchemy.ws.on(
{
method: AlchemySubscription.PENDING_TRANSACTIONS,
toAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
},
(tx) => console.log("보류 중인 USDC 트랜잭션:", tx.hash)
);
이것이 멤풀 봇, MEV 감시자, 실시간 포트폴리오 UI가 eth_blockNumber 폴링으로 CU를 소모하지 않고도 최신 상태를 유지하는 방법입니다.
Account Kit 및 Gas Manager
Account Kit은 Alchemy의 스마트 계정 스택입니다. React SDK, 스마트 컨트랙트 계정 구현(Light Account 및 Modular Account), 사용자 작업 스폰서링을 위한 Gas Manager를 제공합니다. 사용자는 패스키 또는 이메일로 가입하고 스마트 지갑을 얻으며, 시드 구문이나 가스 토큰을 만질 필요가 없습니다.
import { createLightAccountClient } from "@account-kit/smart-contracts";
import { alchemy, sepolia } from "@account-kit/infra";
const client = createLightAccountClient({
transport: alchemy({ apiKey: process.env.ALCHEMY_API_KEY }),
chain: sepolia,
signer: yourSigner,
});
const { hash } = await client.sendUserOperation({
uo: { target: "0x...", data: "0x", value: 0n },
});
스마트 계정과 임베디드 지갑을 결합하는 온보딩 플로우의 경우, 일반 소비자용 dApp에 Account Kit을 훌륭하게 보완하는 Privy API 가이드를 참조하세요.
일반적인 오류 및 속도 제한
Alchemy는 컴퓨팅 유닛(CU)으로 사용량을 측정합니다. 각 메서드에는 CU 비용이 있습니다: eth_call은 26 CU, eth_getLogs는 75, alchemy_getAssetTransfers는 150, eth_getBlockByNumber는 16입니다. 무료 티어는 월 3억 CU와 초당 처리량 제한을 제공합니다.
가장 자주 보게 될 오류는 다음과 같습니다:
- 429 너무 많은 요청(Too Many Requests): 초당 CU 한도에 도달했습니다. 재시도 전에 잠시 기다리세요; SDK는 이를 자동으로 처리합니다.
- 403 접근 금지(Forbidden): API 키의 허용 목록이 리퍼러와 일치하지 않거나 키가 비활성화되었습니다.
- -32600 잘못된 요청(Invalid Request): 잘못된 형식의 JSON-RPC 본문입니다. 메서드 이름과 매개변수 배열을 확인하세요.
- -32000 실행 롤백됨(execution reverted): 컨트랙트 호출이 롤백되었습니다.
eth_call과 시뮬레이션 도구를 사용하여 롤백 이유를 디코딩하세요.
배치 요청은 당신의 친구입니다. 한 번의 HTTP POST로 최대 1000개의 JSON-RPC 호출을 보내면 네트워크 오버헤드를 상각하고 종종 총 CU 비용을 줄일 수 있습니다. 더 광범위한 테스팅 워크플로우를 위해 2026년 Postman 없이 API 테스팅은 컬렉션에서 배치 JSON-RPC 호출을 관리하는 방법을 다룹니다.
Alchemy 가격 정책
Alchemy는 네 가지 공개 티어를 제공합니다:
- 무료(Free): 월 3억 CU, 1개 앱, 커뮤니티 지원. 프로토타입 및 소규모 개인 프로젝트에 적합합니다.
- 성장(Growth): 월 $49 기본 요금, 4억 CU 포함, CU당 초과 요금 청구, 고급 분석.
- 확장(Scale): 월 $289, 15억 CU, 전용 처리량, 우선 지원.
- 엔터프라이즈(Enterprise): 맞춤 가격, SLA, 프라이빗 노드, 전담 솔루션 엔지니어링.
CU는 매월 재설정됩니다. Growth 또는 Scale에서 초과 사용 시 초과 요금이 청구됩니다; Free 티어에서는 다음 주기까지 429 오류와 함께 요청이 실패하기 시작합니다. 첫 달 동안 대시보드에서 일일 사용량을 모니터링하여 적절한 티어를 선택하세요.
Apidog로 Alchemy API 테스트
JSON-RPC를 수동으로 디버깅하는 것은 고통스럽습니다. 모든 요청은 중첩된 매개변수 배열을 가진 POST이며, 응답은 16진수로 인코딩되고, WebSocket 구독은 일반 터미널에서 검사하기 어렵습니다. Apidog는 REST, GraphQL 및 WebSocket 트래픽을 위한 통합 작업 공간을 제공하므로, Alchemy HTTPS 엔드포인트를 호출하고 wss://eth-mainnet.g.alchemy.com/v2/...로 WebSocket을 열고 보류 중인 트랜잭션 구독 스트림을 나란히 볼 수 있습니다.
Apidog에 API 키를 환경 변수로 저장하고 메인넷, Sepolia, Polygon 및 Base용 컬렉션에서 재사용하세요. Alchemy가 새로운 향상된 엔드포인트를 출시할 때 회귀를 감지하기 위해 응답 필드에 스크립트 어설션을 사용하세요. Apidog를 다운로드하고 Alchemy OpenAPI 사양을 가져와 1분 이내에 컬렉션을 스캐폴딩하세요.
자주 묻는 질문(FAQ)
Alchemy는 프로덕션 용도로 무료인가요?네, 월 3억 CU 이내에서는 무료입니다. 많은 소규모 dApp은 무료 티어를 무기한 사용합니다. 이 한도를 초과하거나 더 높은 처리량이 필요한 경우, $49의 Growth 티어가 일반적인 다음 단계입니다.
Alchemy는 Solana를 지원하나요?네. Alchemy는 Solana 메인넷 및 개발넷을 표준 Solana RPC 메서드와 토큰 및 NFT 데이터용 향상된 엔드포인트를 통해 지원합니다. 대시보드에서 Solana 앱을 생성하여 전용 엔드포인트를 얻을 수 있습니다.
SDK 없이 Alchemy API를 사용할 수 있나요?물론입니다. 모든 엔드포인트는 curl, fetch 또는 모든 HTTP 클라이언트를 통해 HTTPS로 호출할 수 있습니다. SDK는 편의 래퍼입니다; 타입화된 헬퍼, 자동 재시도 및 WebSocket 재연결 기능을 추가하지만 선택 사항입니다.
Alchemy와 MetaMask의 개발자 API의 차이점은 무엇인가요?MetaMask는 지갑 UX 및 서명에 중점을 둡니다; Alchemy는 노드 인프라 및 데이터에 중점을 둡니다. 그들은 다른 문제를 해결합니다. 지갑 측면에 대해서는 MetaMask API 가이드를 참조하세요.
Alchemy API 키를 어떻게 변경(로테이션)하나요?대시보드에서 새 앱을 생성하고, 환경을 업데이트하고, 배포한 다음, 이전 앱을 삭제하세요. 즉석 로테이션은 없으므로 짧은 중첩 기간을 계획하세요.
Account Kit은 모든 EVM 체인에서 작동하나요?Account Kit은 이더리움, 옵티미즘, 아비트럼, 베이스, 폴리곤 및 해당 테스트넷을 지원합니다. Gas Manager 스폰서십 정책은 체인별로 다르므로 네트워크별로 설정해야 합니다.
