playground

The world is a playground.

MetaMask を使用した Web3 の初期化

  • MetaMask は Chrome プラグインとして使える大変便利な Ethereum ウォレットです。
  • MetaMask を使用するとボタン 1 つでトランザクションに署名ができるので、エンドユーザーが DApps を使用する際に重宝します。

MetaMask を使用した Web3 の初期化

  • MetaMask をアンロックした状態で、Web3 ライブラリを使用しているウェブサイトを開くと、web3 というグローバル変数に自動的に Web3 オブジェクトがインジェクトされます。
  • 通常、web3 にセットされたオブジェクトをそのまま使用するのではなく、次のような方法で初期化します。
  • なお、MetaMask の github によると、ブラウザの load イベントで MetaMask のインジェクトが行われるようです。
var web3js;  // ローカルの Web3 オブジェクトを格納するための変数
window.addEventListener('load', function() {
  // Web3 が Ethereum 対応ブラウザ (Mist や MetaMask) によってインジェクトされているかどうかをチェックします。
  if (typeof web3 !== 'undefined') {
    // Mist または MetaMask のプロバイダを使用して Web3 を初期化します。
    web3js = new Web3(web3.currentProvider);
  } else {
    // Mist や MetaMask 等の Ethereum 対応ブラウザを使用していない場合の初期化です。
    // 必要に応じて、ローカルノードやホスティングしているノード等を使用します。
    // 以下の例では infura.io をプロバイダとして使用し、Web3 を初期化しています。
    web3js = new Web3('wss://mainnet.infura.io/ws');
  }
});

References