目次
はじめに
みなさん、こんにちは。GMOインターネット株式会社の斉藤です。
今回はMetamaskを使ったWebページ作成の第2回です。第1回も併せてご覧ください。
前回はWebページとMetamaskを接続するところまで実装を行いました。今回は暗号資産ウォレットらしく、残高照会や送金の実装を行っていきたいと思います。
引き続きMetamaskの開発者ガイドは必読です。
Getting Started | MetaMask Docs
メインネットとテストネット
Metamaskは基本的にイーサリアムネットワーク用のウォレットです。暗号資産であるEther(ETH)を扱うネットワークですね。これはメインネットと呼ばれています。
一方で、イーサリアムプロトコルのテストなどを目的としたネットワークも存在しています。これらはテストネットと呼ばれています。今回のようにアプリのテストを行ったり、スマートコントラクトのテストなどに使います。
前回の記事でMetamaskの設定を変更してテストネットワークを有効にしたので、Metamask上でいくつかのテストネットを確認することができます。

どれを使っても良いですが、今回はRopsten Test Networkを利用していきます。
それぞれのテストネットには、そのテストネット上で使うEtherを取得するための方法が用意されています。これはFaucetと呼ばれています。日本語では蛇口という意味です。ひねると水が出てくるイメージですね。
RopstenのFaucetはこちらです。Metamaskから自分のRopstenネットワークのウォレットアドレスを確認して、それを入力しましょう。0.2ETHが付与されます。
ウォレットの残高を取得する
無事にRepstenネットワークのETHが取得できたら、さっそく残高を取得する実装をしていきましょう。
前回の記事で説明したwindow.ethereum オブジェクトを使います。requestメソッドでeth_getBalanceを呼び出します。またaccountはウォレットアドレスで、取得方法は前回の記事にあります。
const wei = 0.000000000000000001;
const amount = await window.ethereum.request({
method: "eth_getBalance",
params: [
account,
"latest",
],
});
// wei -> ether
const balance = parseInt(amount) * wei;
setBalance(balance)
返り値のamountが残高で、単位はWeiです。weiはイーサリアムの最小単位で、
1 Wei == 0.000000000000000001 ETH
です。
送金する
次に送金を実装してみましょう。ウォレットアプリっぽくなってきました。
まず一番最初に大事なことです。前回の ネットワークを取得する を利用してメインネットに接続しているときは送金を実行しないようにしておきます。
一応ですが、実際に送金を実行してもMetamaskが確認を求めてきますので、そこで気づくこともできます。ただ今回作っているのはテストアプリですので、実装上メインネットでは送金不可にしておくのが良いでしょう。
// メインネットでは実行しない
const chainId = await getChainID();
if (chainId == 1 || chainId == 61) {
console.warn("Do not send any transactions to the mainnet");
return;
}次に送金部分を実装していきます。Metamaskのドキュメントも併せて見ておきましょう。
const weiSendAmount = sendAmount * wei;
const hexSendAmount = "0x" + weiSendAmount.toString(16);
const transactionParameters = {
nonce: '0x00', // ignored by MetaMask
gasPrice: '', // customizable by user during MetaMask confirmation.
gas: '', // customizable by user during MetaMask confirmation.
to: sendTo, // Required except during contract publications.
from: window.ethereum.selectedAddress, // must match user's active address.
value: hexSendAmount, // Only required to send ether to the recipient from the initiating external account.
data: '', // Optional, but used for defining smart contract creation and interaction.
chainId: '', // Used to prevent transaction reuse across blockchains. Auto-filled by MetaMask.
};sendAmountが送金する額(ETH)です。それをweiにして16進変換します。
transactionParametersのsendToが送信先ウォレットアドレス、valueが送信額です。その他の項目はMetamaskが自動で埋めてくれます。
// txHash is a hex string
// As with any RPC call, it may throw an error
const txHash = await window.ethereum.request({
method: 'eth_sendTransaction',
params: [transactionParameters],
});送金は eth_sendTransaction を呼びます。返り値は送金トランザクションのハッシュ値です。
実際に送金を実行するとブロックチェーン上に反映されます。Etherscanで自分のトランザクションを確認してみましょう。
おわりに
完成したデモページはこちらです。実際に送金もできますので試してみてください。
2回にわたってMetamaskと連携したWebページを実装してきました。HTMLとJavaScriptの知識があれば実装できるので、非常に手軽です。これでWeb 3.0できますね!笑
それではまた次回お目にかかりましょう。
[PR]
私が働いているGMOインターネット株式会社ではエンジニアを含め採用を強化しています。
「いきなり応募するもなぁ」と言う方は、Twitter DMで私に直接ご相談いただいても構いません。社内の雰囲気、開発現場の雰囲気、人間関係、待遇など、社内の人物からリアルな情報を知りたいという方はお気軽にどうぞ。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(606)
-
イベント(242)
-
カルチャー(61)
-
デザイン(77)
TAG
- 5G
- Active Directory
- AI
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIエージェント
- AIコーディング
- AIセキュリティ
- AI人財
- AI教育
- AI研究
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Code
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- ConoHa VPS MCP
- CSS
- CTF
- DEF CON
- DEF CON 34
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- EDR
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOサイバーセキュリティbyイエラエ
- GMOデジキッズ
- GMOヒューマノイド・ラボ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメイクショップ
- GMOメディア
- GMOロボッツ
- GMO大会議
- GMO天秤AI
- Go
- GPUクラウド
- GTB
- Hack-1グランプリ
- IETF
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- JSAI2026
- K8s
- Kaigi on Rails
- Kerberos
- Kids VALLEY
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- OSS
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- QUIC
- RFC
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VLA
- VPN
- VPS
- VS Code
- WebRTC
- XR
- XSS
- Yoitoi Summit
- ZTNA
- アウトプット
- アドベントカレンダー
- イベントレポート
- インターンシップ
- インハウス
- インフラ
- エキスパート制度
- エンジニア採用
- エンジニア文化
- お名前.com
- クラウド
- クリエイターインタビュー
- クリエイティブ
- コンテナ
- コンピュータビジョン
- サイバーセキュリティ
- サマーインターン
- スクラム
- スパム対策
- スペシャリスト
- セキュリティ
- セキュリティカンファレンス
- セキュリティ人材
- センシング
- ソフトウェアサプライチェーン
- ソフトウェア開発
- チームビルディング
- データサイエンティスト
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バイブコーディング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- フィジカルAI
- プログラミング教育
- ブロックチェーン
- フロントエンド
- プロンプトインジェクション
- ペアリング暗号
- ペネトレーションテスト
- ホワイトハッカー
- ゆめみらいワーク
- リモートワーク
- レッドチーム
- レンタルサーバー
- ロボット
- ロボット導入
- ロボティクス
- 世界モデル
- 京大ミートアップ
- 京都大学
- 京都未踏
- 人型ロボット
- 人工知能
- 人工知能学会
- 光学
- 国際ロボット展
- 国際標準化
- 基礎
- 多拠点開発
- 大阪公立大学
- 宇宙セキュリティ
- 宮崎オフィス
- 強化学習
- 応用
- 技育プロジェクト
- 技術イベント
- 技術ブログ
- 技術同人誌
- 技術広報
- 技術書典
- 拡張知能
- 新卒
- 新卒研修
- 映像
- 映像クリエイター
- 暗号
- 未踏
- 業務効率化
- 機械学習
- 次世代育成
- 決済
- 生成AI
- 産学連携
- 研究開発
- 社会実装
- 社内コミュニティ
- 組織横断
- 耐量子暗号
- 脆弱性診断
- 若手人材育成
- 通信技術
- 開発組織
- 開発者
PICKUP
-
近畿圏の若手14名、半年の開発の起点に。「京都未踏」ブースト会議レポート
イベント
-
【第3回・AI TALK】GMOインターネットグループ・真次さんに聞く、ヒューマノイドの現在地と研究者としての挑戦
技術情報
-
【DEF CON 34 参加レポート】GMOインターネットグループが挑む、世界最高峰セキュリティカンファレンスの最前線
イベント
-
【Expert Cross #4・後編】「場づくり」を通じて新しい概念を組織に浸透。横のつながりと共に広がった「エキスパートとしての視野」
技術情報
-
【Expert Cross #4・前編】技術同人誌からアドベントカレンダーまで。「場づくりの名手」が促進する技術文化
技術情報
-
DEF CON 34参加記(2026/8/6 – 8/9)
カルチャー