信頼できるノードプロバイダーなしで本番環境のEthereum dAppを運用することは、すぐにページャーが鳴り響くことになります。自己ホスト型のGethノードは遅延し、リオーグを見逃し、アプリが注目を集めた瞬間に詰まってしまいます。Alchemy APIは、堅牢なノード層に加え、生のJSON-RPC仕様では定義されていない強化されたAPI(例えば、ジェネシスブロック以降の全ブロックをスキャンするのではなく、1回の呼び出しでウォレット内のすべてのNFTを取得するなど)を提供することで、この問題を解決します。
このガイドでは、Alchemy APIの全範囲を説明します。アプリの作成、認証、標準JSON-RPCメソッドの呼び出し、強化されたエンドポイントの使用、WebSocketを介した保留中のトランザクションの購読、そしてAccount Kitを介したガススポンサーシップ付きスマートアカウントの出荷についてです。すべての主要なフローについてcurlとNodeの例が表示され、出荷前に計算ユニット(CU)が月額料金にどのようにマッピングされるかを理解できます。
ウォレットとweb3インフラストラクチャをより広く評価している場合は、Apidogがすべてのエンドポイントを1か所でテストするのに役立ちます。また、プロバイダーを決定する前に、より広い市場の視点を得るために、最高の仮想通貨ウォレットAPIに関するガイドも参照してください。
要約
- Alchemyは、Ethereum、Polygon、Arbitrum、Optimism、Base、Solana、zkSync、Starknetなど、様々なチェーンを1つのダッシュボードからカバーします。
- 各アプリは、標準JSON-RPC用のHTTPSおよびWebSocketエンドポイントに加え、
alchemy_getAssetTransfers、alchemy_getTokenBalances、getNFTsなどの強化されたAPIを利用できます。 - JavaScript用Alchemy SDK(
alchemy-sdk)は、ethers.jsをラップし、すべての強化されたエンドポイントに対して型付きヘルパーを追加します。 - Account Kitは、ERC-4337スマートアカウントに、ガススポンサーシップ、セッションキー、Gas Managerを通じたパスキー認証を搭載しています。
- 利用状況は計算ユニット(CU)で計測されます。無料プランでは月に3億CUが付与され、Growthは4億CUに超過分が課金され、Scaleはカスタムです。
- レート制限はアプリごと、メソッドごとです。バッチリクエストとSDKの内蔵バックオフ機能により、スロットル制限に抵触することはありません。
Alchemy APIとは?
Alchemyは、マネージドブロックチェーンノードを運用し、その上にデータインデックスエンジンを重ねるweb3開発プラットフォームです。自身で簡単に構築できない3つの機能を提供します。40以上のチェーンにわたる高可用性JSON-RPCノード、転送とNFTメタデータを事前にインデックス化する強化されたAPI、そしてガスレスUXのためのアカウント抽象化スタック(Account Kit)です。
Infuraが主に生のノードアクセスを提供するのに対し、Alchemyはインデックス層を追加します。あるアドレスのすべてのERC-20転送を取得するには、1回のalchemy_getAssetTransfers呼び出しで済みます。プレーンなノードで同じクエリを実行すると、すべてのブロックを反復処理する必要があります。そのため、ほとんどのプロダクションウォレット、DeFiダッシュボード、NFTマーケットプレイスは、読み込み量の多いパスにAlchemyを使用しています。
認証とセットアップ
Alchemyダッシュボードでアカウントを作成し、Create new appをクリックします。チェーン(Ethereum Mainnet、Polygon、Baseなど)とネットワーク(メインネットまたは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キーは秘密として扱ってください。環境変数に入れ、クライアント側のコードには絶対に含めないでください。ブラウザdAppsの場合、APIキーが漏洩しても攻撃者のドメインから割り当て量が枯渇しないように、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("Latest block:", block);
コアエンドポイント
HTTPS経由の標準JSON-RPC
標準的なEthereum 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、内部、外部の転送を返します。この1回の呼び出しで、数千回の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
コントラクトアドレスを事前に知らなくても、ウォレットが保有するすべてのトークンを取得するには、1回の呼び出しで済みます。
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(`Owns ${nfts.totalCount} NFTs`);
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("Pending USDC tx:", tx.hash)
);
これは、memepoolボット、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 },
});
スマートアカウントと埋め込みウォレットを組み合わせるオンボーディングフローについては、コンシューマーdApps向けAccount Kitを補完するPrivy APIのガイドを参照してください。
一般的なエラーとレート制限
Alchemyは、計算ユニット (CU) で使用量を計測します。各メソッドにはCUコストがあります。eth_callは26 CU、eth_getLogsは75、alchemy_getAssetTransfersは150、eth_getBlockByNumberは16です。無料ティアでは月に3億CUが付与され、1秒あたりのスループット上限があります。
最も頻繁に発生するエラーは次のとおりです。
- 429 Too Many Requests: 1秒あたりのCU上限に達しました。間隔を空けて再試行してください。SDKが自動的に処理します。
- 403 Forbidden: APIキーの許可リストがリファラーと一致しないか、キーが無効になっています。
- -32600 Invalid Request: 不正な形式のJSON-RPCボディ。メソッド名とパラメーター配列を確認してください。
- -32000 execution reverted: コントラクト呼び出しがリバートされました。
eth_callとシミュレーションツールを使用してリバート理由をデコードしてください。
バッチリクエストはあなたの味方です。1回のHTTP POSTで最大1000個のJSON-RPC呼び出しを送信でき、これによりネットワークオーバーヘッドが償却され、合計CUが少なくなることがよくあります。より広範なテストワークフローについては、2026年のPostmanなしでのAPIテストで、コレクション内のバッチJSON-RPC呼び出しを管理する方法が説明されています。
Alchemyの料金
Alchemyには4つの公開ティアがあります。
- 無料: 月額3億CU、アプリ1つ、コミュニティサポート。プロトタイプや小規模な個人プロジェクトに適しています。
- Growth: 月額49ドルを基本とし、4億CUが含まれ、超過分はCUごとに課金されます。高度な分析機能も利用できます。
- Scale: 月額289ドル、15億CU、専用スループット、優先サポート。
- Enterprise: カスタム価格設定、SLA、プライベートノード、専用ソリューションエンジニアリング。
CUは毎月リセットされます。GrowthまたはScaleで超過した場合は、超過料金が請求されます。無料プランでは、次のサイクルまでリクエストが429エラーで失敗し始めます。最初の月はダッシュボードで毎日使用状況を監視し、適切なティアを選択できるようにしてください。
ApidogでAlchemy APIをテストする
手作業でJSON-RPCをデバッグするのは骨の折れる作業です。すべてのリクエストはネストされたparams配列を持つPOSTであり、レスポンスは16進数でエンコードされており、WebSocketサブスクリプションをプレーンなターミナルで検査するのは困難です。Apidogは、REST、GraphQL、WebSocketトラフィックの統合ワークスペースを提供するため、Alchemy HTTPSエンドポイントにアクセスし、wss://eth-mainnet.g.alchemy.com/v2/...へのWebSocketを開き、保留中のトランザクションサブスクリプションが並行してストリーミングされるのを見ることができます。
APIキーをApidogの環境変数として保存し、メインネット、Sepolia、Polygon、Baseのコレクション間で再利用します。応答フィールドのアサーションをスクリプト化して、Alchemyが新しい強化されたエンドポイントを展開したときにリグレッションを検出します。Apidogをダウンロードし、Alchemy OpenAPI仕様をインポートして、1分以内にコレクションをスキャフォールドします。
よくある質問
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は、Ethereum、Optimism、Arbitrum、Base、Polygon、およびそれらのテストネットをサポートしています。Gas Managerのスポンサーポリシーはチェーン固有であるため、ネットワークごとに設定してください。
