信頼できるノードプロバイダーなしで本番環境のEthereum dAppを運用するのは、すぐに障害対応に追われる原因になります。自己ホスト型のGethノードは遅延やリオーグの見逃しが発生し、トラフィック増加時に詰まるリスクがあります。Alchemy APIは、堅牢で管理されたノードインフラに加えて、標準のJSON-RPC仕様では取得できない強化API(例:全ブロックをスキャンせずにウォレット内NFTの一括取得など)を提供し、これらの課題を効率的に解決します。
このガイドでは、Alchemy APIの機能を実装ベースで解説します。アプリ作成・認証・標準JSON-RPC呼び出し・強化エンドポイントの利用・WebSocketによるイベント購読・Account Kitを使ったガススポンサー付きスマートアカウントの導入まで、curl・Node.jsコード例付きで手順化。計算ユニット(CU)によるコスト計算も事前に確認できます。
複数プロバイダーやウォレットAPIの比較・検証には、Apidogがエンドポイントの一括テストに便利です。選定前にマーケット全体を俯瞰したい場合は、最高の仮想通貨ウォレットAPIのガイドも併せてご覧ください。
要約
- AlchemyはEthereum・Polygon・Arbitrum・Optimism・Base・Solana・zkSync・Starknetなど多数チェーンを一元管理できます。
- 各アプリでHTTPS/WebSocketの標準JSON-RPCエンドポイント+
alchemy_getAssetTransfersやalchemy_getTokenBalances、getNFTs等の強化APIが利用可能です。 - JavaScript用SDK(
alchemy-sdk)はethers.jsをラップし、型安全な強化エンドポイントヘルパーを提供。 - Account KitはERC-4337スマートアカウントにガススポンサー・パスキー認証などを実装可能。
- 利用状況は計算ユニット(CU)で管理。無料プランは月3億CU、Growthは4億CU+従量課金、Scaleはカスタム対応。
- レート制限はアプリ・メソッド単位。バッチリクエストやSDKの自動バックオフでスロットル回避が容易。
Alchemy APIとは?
Alchemyは、40以上のチェーンで高可用性JSON-RPCノード+強化データインデックスAPI+アカウント抽象化(Account Kit)を提供するweb3開発プラットフォームです。
Infuraが「生のノードアクセス」に特化するのに対し、Alchemyはインデックス層を追加。例として、あるアドレスのERC-20転送履歴取得もalchemy_getAssetTransfers一発で完了(プレーンノードでは全ブロックを都度反復)。そのため、プロダクションウォレットやDeFiダッシュボード、NFTマーケットプレイスの多くがAlchemyを採用しています。
認証とセットアップ
- Alchemyダッシュボードでアカウント作成→「Create new app」。
- チェーン(例:Ethereum Mainnet, Polygon, Baseなど)とネットワーク(メイン/テスト)を選択。
- アプリごとにAPIキーが発行されます(URLのラストセグメント)。
HTTPSエンドポイント例:
https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
WebSocket例:
wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
APIキーは公開厳禁。サーバーの環境変数で管理し、クライアント側には含めないこと。ブラウザdAppsの場合はリファラー制限で漏洩リスクを軽減してください。
SDKインストール:
npm install alchemy-sdk
初期化例(Node.js):
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("Latest block:", block);
コアエンドポイント
HTTPS経由の標準JSON-RPC
すべてのEthereum標準RPCが利用可能です。例えばeth_getBalanceのcurl例:
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等も同様に利用可能です。
強化されたAPI: getAssetTransfers
alchemy_getAssetTransfersで指定アドレスのETH/ERC-20/ERC-721/内部/外部転送を一括取得できます。数千回のeth_getLogsを1回に集約。
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
ウォレット所有の全トークン・NFTをコントラクトアドレス不要で一括取得。
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の場合:
const nfts = await alchemy.nft.getNftsForOwner(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
console.log(`Owns ${nfts.totalCount} NFTs`);
WebSocket経由のサブスクリプション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("Pending USDC tx:", tx.hash)
);
MEV監視やリアルタイムポートフォリオに有効です。
Account KitとGas Manager
Account Kitを使えば、スマートアカウント+ガススポンサー付きUXを即導入可能。React SDK・スマートコントラクトアカウント(Light/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 },
});
埋め込みウォレットやオンボーディングフローの設計には、Privy APIのガイドも参考にしてください。
一般的なエラーとレート制限
- 各RPCメソッドごとにCUコストあり
- 例:
eth_call=26、eth_getLogs=75、alchemy_getAssetTransfers=150、eth_getBlockByNumber=16
- 例:
- 無料枠は月3億CU、超過時は429エラーでリクエストがブロック
- 代表的なエラー
- 429 Too Many Requests: CU上限超過。スリープして再試行。SDKは自動遅延対応。
- 403 Forbidden: APIキーの許可リスト違反または無効。
- -32600 Invalid Request: JSON-RPCボディの書式エラー。
-
-32000 execution reverted: コントラクト呼び出しリバート。
eth_callで原因調査。
- バッチリクエストは最大1000件までまとめて送信可能。CU効率化に有効。
より広範なテストワークフロー構築は、2026年のPostmanなしでのAPIテストも活用できます。
Alchemyの料金
- 無料: 月3億CU、アプリ1つ、コミュニティサポート。個人やプロトタイプ向け。
- Growth: 月49ドル、4億CU+従量課金、分析機能付き。
- Scale: 月289ドル、15億CU、優先サポート。
- Enterprise: カスタムSLA・専用ノード・技術サポート。
CUは毎月リセット。無料プランで超過すると429エラー。Growth/Scaleは超過分が請求対象。最初の月はダッシュボードで消費量を必ず監視し、適切なプラン選択を推奨します。
ApidogでAlchemy APIをテストする
JSON-RPCの手動デバッグは非効率です。ApidogならREST/GraphQL/WebSocketを統合管理でき、AlchemyのHTTPSエンドポイントやWebSocketサブスクリプションもGUIで即座に可視化できます。
- APIキーはApidogの環境変数に保存し、複数チェーンのコレクションで再利用可能
- レスポンスフィールドの自動アサーションや、強化エンドポイントの回帰テストも簡単
- Apidogをダウンロードし、Alchemy OpenAPI仕様をインポートすれば、1分で自動コレクション作成が可能
よくある質問
Alchemyは本番環境で無料利用できますか?
はい、月3億CU以内は無料。多くの小〜中規模dAppは無料枠で十分です。それ以上の場合はGrowth(月49ドル)が標準。
Solana対応は?
AlchemyはSolanaメインネット・devnet両対応。標準Solana RPC+強化エンドポイントも提供。Solanaアプリ作成で専用エンドポイント取得可。
SDKなしで呼び出し可能?
はい。curl・fetchなど任意のHTTPクライアントで直接呼び出しOK。SDKは型・再試行・WebSocket再接続等の補助として便利ですが必須ではありません。
MetaMaskの開発者APIとの違いは?
MetaMaskはウォレットUX/署名に特化、Alchemyはノード/データ層。用途が異なります。ウォレット側はMetaMask APIガイドを参照してください。
APIキーのローテーション方法は?
新アプリ作成→環境変数/デプロイ更新→旧アプリ削除、で切り替え。インプレースローテーションは不可、短期間の重複運用を推奨。
Account Kit対応チェーンは?
Ethereum、Optimism、Arbitrum、Base、Polygon、各テストネットに対応。Gas Managerのスポンサー設定はチェーンごとに調整必要です。
Top comments (0)