🕛 2022.12.3 16:43

【web3.js】プロバイダやノードに接続する方法

web3.jsとは

Web3.jsは、Ethereumネットワーク上でJavaScriptから操作できるインターフェイスです。

Web3.jsを使用すると、Ethereumネットワーク上のスマートコントラクトやトランザクションを作成したり、データを取得したりすることができます。

また、Web3.jsを使って仮想通貨を取引したり、アプリケーションを開発したりすることも可能です。

web3.jsのインストール

1. フォルダーを作って準備します

$ mkdir web3js
$ cd web3js
$ npm init

2. web3.jsをインストール実行します。

$ npm install web3 --save

3. Web3.jsが正常にインストールされたことを確認するには、次のコマンドを実行します。

$ node
> const Web3 = require('web3');
> Web3.version

4. 生成されたバージョンが表示されれば、Web3.jsのインストールは完了です。

npm の save オプションは

npmのsaveオプションは、モジュールをインストールしたときに、package.jsonファイルにモジュールを追加するオプションです。

プロジェクトの依存関係を簡単に管理できます。

web3モジュール

Web3.modules

WebsocketProvider

WebsocketProviderとは、WebSocketプロトコルを使用して、Node.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。

IpcProvider

IpcProviderとは、JSON-RPCプロトコルを使用して、IPC(Inter-Process Communication)を使用してNode.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。

HttpProviderとは

HttpProviderとは、HTTPプロトコルを使用して、Node.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。

web3インスタンス

const Web3 = require('web3');

const web3 = new Web3(Web3.givenProvider || 'ws://local.node:8546');

> web3.eth
> web3.shh
> web3.bzz
> web3.utils
> web3.version

Web3.eth

スマートコントラクトを作成して実行したり、分散型アプリケーション(dApps)を開発したりするためのインターフェースを提供します。

Web3.ethを使用することで、ユーザーはEthereumネットワーク上で安全な分散型アプリケーションを開発して実行することができます。

web3.shh

Web3.shhは、Ethereumのスマートコントラクトプラットフォーム上で開発された暗号化されたP2Pメッセージングシステムです。

このシステムは、ユーザー間で安全に情報を交換するための、エンドツーエンドの暗号化プロトコルを提供します。

Web3.shhは、Ethereumネットワーク上でのメッセージングを安全に行うために重要な役割を果たしています。

web3.bzz

Web3.bzzは、Ethereumネットワーク上で動作する分散型インターネットのプラットフォームです。

インターネット上で安全かつ効率的にデータをやり取りするために、2つの新しい技術を組み合わせて開発しました。それらは、スワップネットワーキング(Swarm Networking)とイーサネットネットワーキング(Ethernet Networking)です。

これらの技術を組み合わせることで、安全な分散型インターネットを構築することができます。

Web3.utils

Ethereumネットワーク上で実行されているスマートコントラクトやdAppsの作成や実行を行うための便利なツールを提供します。

Web3.utilsを使用することで、開発者は効率的にEthereumネットワーク上のアプリケーションを開発および実行することができます。

例えばローカルノードに接続する

const Web3 = require('web3');
const web3 = new Web3('http://localhost:8545');
//or
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

ノードを変更する

web3.setProvider('ws://localhost:7546');
//or
web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:7546'));

IPC プロバイダーに接続する

const net = require('net');
const web3 = new Web3('/<Path>/geth.ipc', net); 
// or
var web3 = new Web3(new Web3.providers.IpcProvider('/<Path>/geth.ipc', net));

リモートプロバイダーに接続する

リモートプロバイダーのリストです。

  • Infura
  • Alchemy
  • QuikNode
  • Etherscan
  • MyEtherWallet
  • BlockCypher
  • Etherchain
  • MetaMask
  • Nodesmith
  • Nethereum
const Web3 = require('web3');
const web3 = new Web3("https://eth-mainnet.alchemyapi.io/v2/<api key>");

givenProvider

const Web3 = require('web3');
const web3 = new Web3("https://eth-mainnet.alchemyapi.io/v2/<api key>");

web3.givenProvider
web3.eth.givenProvider
web3.shh.givenProvider
web3.bzz.givenProvider

イーサリアム対応ブラウザでweb3.jsを使用する場合、そのブラウザの現在のネイティブプロバイダが設定されます。

ブラウザ環境で指定されたプロバイダを返し、それ以外はnullを返します。

currentProvider

現在のプロバイダを返し、そうでない場合は null を返す。

const Web3 = require('web3');
const web3 = new Web3("https://eth-mainnet.alchemyapi.io/v2/<api key>");

web3.currentProvider
web3.eth.currentProvider
web3.shh.currentProvider
web3.bzz.currentProvider

BatchRequest

バッチリクエストを作成し、実行するためのクラスです。

extend

web3モジュールの拡張を可能にする。

プロフィール

プログラマー歴20年の管理人がプログラミング、ブロックチェーンなどの話題に書いていきます。>>続く