ウォレットをWEBアプリに接続しよう
🌅 window.ethereumを設定する
Webアプリケーショ ン上で、ユーザーがイーサリアムネットワークと通信するためには、Webアプリケーションはユーザーのウォレット情報を取得する必要があります。
これから、あなたのWebアプリケーションにウォレットを接続したユーザーに、スマートコントラクトを呼び出す権限を付与する機能を実装していきます。
- これは、Webサイトへの認証機能です。
それでは、ETH-NFT-Collection/packages/clientディレクトリ下のファイルを編集していきましょう。
下記のように、App.jsの中身を更新します。
App.jsはあなたのWebアプリケーションのフロントエンド機能を果たします。
// App.js
import React, { useEffect } from "react";
import "./styles/App.css";
import twitterLogo from "./assets/twitter-logo.svg";
// Constantsを宣言する: constとは値書き換えを禁止した変数を宣言する方法です。
const TWITTER_HANDLE = "あなたのTwitterのハンドルネームを貼り付けてください";
const TWITTER_LINK = `https://twitter.com/${TWITTER_HANDLE}`;
const App = () => {
const checkIfWalletIsConnected = () => {
/*
* ユーザーがMetaMaskを持っているか確認します。
*/
const { ethereum } = window;
if (!ethereum) {
console.log("Make sure you have MetaMask!");
return;
} else {
console.log("We have the ethereum object", ethereum);
}
};
// renderNotConnectedContainer メソッドを定義します。
const renderNotConnectedContainer = () => (
<button className="cta-button connect-wallet-button">
Connect to Wallet
</button>
);
/*
* ページがロードされたときに useEffect()内の関数が呼び出されます。
*/
useEffect(() => {
checkIfWalletIsConnected();
}, []);
return (
<div className="App">
<div className="container">
<div className="header-container">
<p className="header gradient-text">My NFT Collection</p>
<p className="sub-text">あなただけの特別な NFT を Mint しよう💫</p>
{/* メソッドを追加します */}
{renderNotConnectedContainer()}
</div>
<div className="footer-container">
<img alt="Twitter Logo" className="twitter-logo" src={twitterLogo} />
<a
className="footer-text"
href={TWITTER_LINK}
target="_blank"
rel="noreferrer"
>{`built on @${TWITTER_HANDLE}`}</a>
</div>
</div>
</div>
);
};
export default App;
新しく追加したコードを見ていきましょう。
// App.js
// ユーザーがMetaMaskを持っているか確認します。
const { ethereum } = window;
window.ethereumはMetaMaskが提供するAPIです。
詳しく知りたい方は こちら を参照してみてください。
公式のドキュメント こちら です。
🦊 ユーザーアカウントにアクセスできるか確認する
window.ethereumは、あ なたのWebサイトを訪問したユーザーがMetaMaskを持っているか確認し、結果をConsole logに出力します。
プロジェクトのルートディレクトリ(ETH-NFT-Collection/)にいることを確認し、下記を実行してみましょう。
yarn client start
ローカルサーバーでWebサイトを立ち上げたら、サイトの上で右クリックを行い、Inspectを選択します。

次に、Consoleを選択し、出力結果を確認してみましょう。

ConsoleにWe have the ethereum objectと表示されているでしょうか?
- これは、
window.ethereumが、このWebサイトを訪問したユーザー(ここでいうあなた)がMetaMaskを持っていることを確認したことを示しています。
次に、Webサイトがユーザーのウォレットにアクセスする権限があるか確認します。
- アクセスできたら、スマートコントラクトを呼び出すことができます。
これから、ユーザー自身が承認したWebサイトにウォレットのアクセス権限を与えるコードを書いていきます。