Web3.jsは、Ethereumネットワーク上でJavaScriptから操作できるインターフェイスです。
Web3.jsを使用すると、Ethereumネットワーク上のスマートコントラクトやトランザクションを作成したり、データを取得したりすることができます。
また、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オプションは、モジュールをインストールしたときに、package.jsonファイルにモジュールを追加するオプションです。
プロジェクトの依存関係を簡単に管理できます。
Web3.modules
WebsocketProviderとは、WebSocketプロトコルを使用して、Node.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。
IpcProviderとは、JSON-RPCプロトコルを使用して、IPC(Inter-Process Communication)を使用してNode.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。
HttpProviderとは、HTTPプロトコルを使用して、Node.jsプロセス間でEthereumのノードを介して通信するためのWeb3.jsプロバイダーです。
const Web3 = require('web3');
const web3 = new Web3(Web3.givenProvider || 'ws://local.node:8546');
> web3.eth
> web3.shh
> web3.bzz
> web3.utils
> web3.version
スマートコントラクトを作成して実行したり、分散型アプリケーション(dApps)を開発したりするためのインターフェースを提供します。
Web3.ethを使用することで、ユーザーはEthereumネットワーク上で安全な分散型アプリケーションを開発して実行することができます。
Web3.shhは、Ethereumのスマートコントラクトプラットフォーム上で開発された暗号化されたP2Pメッセージングシステムです。
このシステムは、ユーザー間で安全に情報を交換するための、エンドツーエンドの暗号化プロトコルを提供します。
Web3.shhは、Ethereumネットワーク上でのメッセージングを安全に行うために重要な役割を果たしています。
Web3.bzzは、Ethereumネットワーク上で動作する分散型インターネットのプラットフォームです。
インターネット上で安全かつ効率的にデータをやり取りするために、2つの新しい技術を組み合わせて開発しました。それらは、スワップネットワーキング(Swarm Networking)とイーサネットネットワーキング(Ethernet Networking)です。
これらの技術を組み合わせることで、安全な分散型インターネットを構築することができます。
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));
リモートプロバイダーに接続する
リモートプロバイダーのリストです。
const Web3 = require('web3');
const web3 = new Web3("https://eth-mainnet.alchemyapi.io/v2/<api key>");
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を返します。
現在のプロバイダを返し、そうでない場合は 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
バッチリクエストを作成し、実行するためのクラスです。
web3モジュールの拡張を可能にする。