Skip to content

2. プロバイダー ​

プロバイダーは、Ethereum ネットワークへの接続を担う最も基本的なオブジェクトです。ブロックチェーンの読み取り専用操作(残高確認、ブロック情報取得など)を行います。

デフォルトプロバイダー ​

最も簡単な接続方法です。ethers.js が自動的に無料の公開ノードに接続します。

javascript
import { ethers } from "ethers";

// Ethereum メインネットに接続
const provider = ethers.getDefaultProvider("mainnet");

// 最新ブロック番号を取得
const blockNumber = await provider.getBlockNumber();
console.log("最新ブロック:", blockNumber);

テストネットへの接続 ​

開発中はテストネット(Sepolia)を使います。本物の ETH は不要です。

javascript
const provider = ethers.getDefaultProvider("sepolia");
const blockNumber = await provider.getBlockNumber();
console.log("Sepolia 最新ブロック:", blockNumber);

Alchemy API キーの取得 ​

getDefaultProvider() は無料の公開ノードを使うため、レート制限にかかりやすく動作が不安定です。以降のチュートリアルでは Alchemy を使って安定した接続を行います。

アカウント作成手順 ​

  1. Alchemy 公式サイト にアクセスし、無料アカウントを作成
  2. ダッシュボードで 「Create new app」 をクリック
  3. Chain に「Ethereum」、Network に「Ethereum Mainnet」を選択(テストネットは後から追加可能)
  4. アプリが作成されたら 「API Key」 をコピー

.env への記入 ​

取得した API キーを .env ファイルに記入します。

ALCHEMY_API_KEY=your_alchemy_api_key_here

コードから読み込む ​

javascript
import "dotenv/config";
import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider(
  `https://eth-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`
);

JSON-RPC プロバイダー ​

Alchemy や Infura などのノードサービスを使う場合:

javascript
import "dotenv/config";
import { ethers } from "ethers";

// Alchemy(環境変数から読み込み)
const provider = new ethers.JsonRpcProvider(
  `https://eth-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`
);

// Infura
const provider = new ethers.JsonRpcProvider(
  "https://mainnet.infura.io/v3/YOUR_PROJECT_ID"
);

ネットワーク情報の取得 ​

javascript
const network = await provider.getNetwork();
console.log("ネットワーク名:", network.name);
console.log("チェーンID:", network.chainId);

よくあるトラブル ​

接続が遅い・タイムアウトする ​

getDefaultProvider() は無料の公開ノードを使うため、レート制限にかかることがあります。本格的な開発では Alchemy や Infura の API キーを取得しましょう(無料枠あり)。

network does not support ENS エラー ​

ENS(Ethereum Name Service)はメインネットのみ対応です。テストネットでは ENS 名ではなくアドレスを直接指定してください。


前へ: 環境構築 | 次へ: ウォレット