Alchemy API 使い方:Web3開発者向け完全ガイド

Ashley Innocent

Ashley Innocent

23 4月 2026

Alchemy API 使い方:Web3開発者向け完全ガイド

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

信頼できるノードプロバイダーなしで本番環境のEthereum dAppを運用することは、すぐにページャーが鳴り響くことになります。自己ホスト型のGethノードは遅延し、リオーグを見逃し、アプリが注目を集めた瞬間に詰まってしまいます。Alchemy APIは、堅牢なノード層に加え、生のJSON-RPC仕様では定義されていない強化されたAPI(例えば、ジェネシスブロック以降の全ブロックをスキャンするのではなく、1回の呼び出しでウォレット内のすべてのNFTを取得するなど)を提供することで、この問題を解決します。

このガイドでは、Alchemy APIの全範囲を説明します。アプリの作成、認証、標準JSON-RPCメソッドの呼び出し、強化されたエンドポイントの使用、WebSocketを介した保留中のトランザクションの購読、そしてAccount Kitを介したガススポンサーシップ付きスマートアカウントの出荷についてです。すべての主要なフローについてcurlとNodeの例が表示され、出荷前に計算ユニット(CU)が月額料金にどのようにマッピングされるかを理解できます。

ウォレットとweb3インフラストラクチャをより広く評価している場合は、Apidogがすべてのエンドポイントを1か所でテストするのに役立ちます。また、プロバイダーを決定する前に、より広い市場の視点を得るために、最高の仮想通貨ウォレットAPIに関するガイドも参照してください。

button

要約

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_calleth_sendRawTransactioneth_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秒あたりのスループット上限があります。

最も頻繁に発生するエラーは次のとおりです。

バッチリクエストはあなたの味方です。1回のHTTP POSTで最大1000個のJSON-RPC呼び出しを送信でき、これによりネットワークオーバーヘッドが償却され、合計CUが少なくなることがよくあります。より広範なテストワークフローについては、2026年のPostmanなしでのAPIテストで、コレクション内のバッチJSON-RPC呼び出しを管理する方法が説明されています。

Alchemyの料金

Alchemyには4つの公開ティアがあります。

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分以内にコレクションをスキャフォールドします。

button

よくある質問

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のスポンサーポリシーはチェーン固有であるため、ネットワークごとに設定してください。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる