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

目次
  1. web3.jsとは
  2. web3.jsのインストール
  3. npm の save オプションは
  4. web3モジュール
  5. WebsocketProvider
  6. IpcProvider
  7. HttpProviderとは
  8. web3インスタンス
  9. Web3.eth
  10. web3.shh
  11. web3.bzz
  12. Web3.utils
  13. 例えばローカルノードに接続する
  14. givenProvider
  15. currentProvider
  16. BatchRequest
  17. extend

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モジュールの拡張を可能にする。