Edited at

MetaMask を使用した Web3 の初期化

More than 1 year has passed since last update.


  • 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


Note