ethers.js v6 の日本語チュートリアルを作った

はじめに Ethereum の JavaScript ライブラリである ethers.js の日本語チュートリアルを作成しました。 https://github.com/nakamura196/ethers-ja-tutorial VitePress で静的サイトとしても公開しています。 https://nakamura196.github.io/ethers-ja-tutorial/ 作った背景 ethers.js は Ethereum 開発において最も広く使われているライブラリの一つです。v6 に関する日本語記事は v5 からのマイグレーション解説が中心で、初心者がゼロから学べる体系的なチュートリアルは見当たりませんでした。公式ドキュメントも英語のみのため、日本語で基礎から順を追って学べるチュートリアルを作成しました。 チュートリアルの内容 全 8 章構成で、基礎から実践的な内容までカバーしています。 章 テーマ 内容 1 環境構築 Node.js と ethers.js のインストール 2 プロバイダー Ethereum ネットワークへの接続 3 ウォレット ウォレットの作成と管理 4 ブロックチェーンの読み取り 残高確認・ブロック情報の取得 5 トランザクション送信 ETH の送金 6 スマートコントラクト コントラクトとのやり取り 7 イベント イベントのリスニング 8 ユーティリティ 単位変換・ハッシュなどの便利機能 特徴 すぐに動くサンプルコード付き examples/ ディレクトリに実行可能なサンプルコードを用意しています。 g c n n i d p o t m d e e c t i l h n e o e s x n r t a e s a m - l p h j l l t a e t - s p t / s u 0 : t 1 / - r c g i o i a n t l n h e u c b t . . c m o j m s / n a k a m u r a 1 9 6 / e t h e r s - j a - t u t o r i a l . g i t たとえば 01-connect.mjs を実行すると、Ethereum メインネットの最新ブロック番号やガス価格が取得できます。 ...

2026年2月25日 · 3 分 · Nakamura

Pinata V3 API グループ機能の実装ガイド

Pinata の Files API v3 でグループ機能を使用する際のはまりポイントと解決策をまとめます。 背景 Pinata でアップロードしたファイルをグループで管理し、特定のグループに属するファイルのみを取得したいケースがあります。例えば、NFT登録フォームで使用する入力画像を「input」グループに格納し、そのグループからのみ画像を選択できるようにする場合などです。 はまりポイント 1. レガシーAPI と V3 API のファイル管理は分離されている 問題 : レガシーAPI(pinFileToIPFS)でアップロードしたファイルは、V3 API(/v3/files)では取得できません。逆も同様です。 レ V ガ 3 シ ー A A P P I I ( p v i 3 n / L f i i s l t e ) s ) → レ ガ → シ ー で V ア 3 ッ で プ ア ロ ッ ー プ ド ロ し ー た ド フ し ァ た イ フ ル ァ の イ み ル 表 の 示 み 表 示 解決策 : どちらかのAPIに統一する。V3 APIに移行する場合は、新規アップロードからV3を使用し、既存ファイルは手動でグループに追加するか、マイグレーションを検討。 ...

2025年12月28日 · 11 分 · Nakamura

デジタル文化財管理システム(試行版)のNFT対応

お知らせ: 2025-06-14 開発の経過は以下にまとめています。 https://zenn.dev/nakamura196/books/41693d2d017082 概要 以下の記事をはじめとして、ブロックチェーンを用いたデジタル文化財管理システムの試作をしています。 今回、アップロードしたデータがNFTとして認識されるように改修しました。 勉強過程のため、不完全な点があるかと思いますが、参考になりましたら幸いです。 使い方ページ ファイルのアップロード方法はこれまでと同様です。アップロード後に表示される一覧ページにおいて、詳細ページへのリンクを追加しました。 リンクをクリックすると、以下のような詳細画面に遷移します。 実装方法 ※ この章は、AIが執筆しました。 1. コントラクトのNFT対応 既存のデジタル文化財管理コントラクトを、ERC721規格に準拠したNFTコントラクトに改修しました。 主な変更点: 1. OpenZeppelinライブラリの追加 i i m m p p o o r r t t " " @ @ o o p p e e n n z z e e p p p p e e l l i i n n / / c c o o n n t t r r a a c c t t s s - - u u p p g g r r a a d d e e a a b b l l e e / / t t o o k k e e n n / / E E R R C C 7 7 2 2 1 1 / / E e R x C t 7 e 2 n 1 s U i p o g n r s a / d E e R a C b 7 l 2 e 1 . U s R o I l S " t ; o r a g e U p g r a d e a b l e . s o l " ; 2. コントラクトの継承構造を変更 ...

2025年6月12日 · 9 分 · Nakamura

ブロックチェーンとPinata IPFSを使用したデジタル文化財管理システムの試作

お知らせ: 2025-06-14 開発の経過は以下にまとめています。 https://zenn.dev/nakamura196/books/41693d2d017082 概要 ブロックチェーンの学習にあたり、デジタル文化財の管理システムのプロトタイプを作成しました。ブロックチェーンの学習が目的のため、不足している機能などが多いですが、今後追加・改修を加えていく予定です。 https://digital-heritage-five.vercel.app/ 使用技術 EthereumのSepoliaネットワークを使用しています。ブロックチェーンの学習およびプロトタイプの開発が目的であるため、テストネットワークを使用します。 分散ファイルストレージIPFSのホスティングサービスとして、Pinataを使用しています。 https://pinata.cloud/ 準備 後述する本サイトの使用にあたり、MetaMaskのウォレットの作成や、ETHのSepoliaテストネットの作成などが必要です。また登録にあたっては、ガス代の支払いに必要なSepoliaETHが一定数必要です。 これらの方法については、別の記事で紹介したいと思いますが、インターネット上の記事を参考にしてください。 使い方 以下のURLにアクセスします。 https://digital-heritage-five.vercel.app/ MetaMaskがインストール済みの場合、以下のように表示されます。 「ウォレットを接続」ボタンを押すと、以下の画面が表示されます。 接続後、以下のような画面が表示されます。 サンプルとして、いらすとやさんの画像を利用させていただきます。 https://www.irasutoya.com/2020/12/blog-post_279.html 名前や説明、画像URLを入力して、登録ボタンを押します。 以下の画面が表示されます。確認ボタンを押します。 以下のようにデータが登録されます。 Transactionの確認 Etherscanを使って、取引の内容を確認することができます。 https://sepolia.etherscan.io/tx/0x1234567890abcdef…(例) Input Dataに入力されている文字列は、「スマートコントラクトの関数呼び出しのエンコードされたデータ」とのことです。以下の関数でデコードしてみます。 c c f } d o o u e n n n t } } c s デ s イ c r デ o t コ t ン t y c c c c c c c c c c c c コ d ー プ i o o o o o o o o o o a o ー e e ド i ッ o { n n n n n n n n n n t n ド I t す n ト n 関 s s パ s デ s パ s デ s 結 s s s s c s を n h る p デ 数 t o ラ t コ t ラ t ー t 果 o o o o h o 実 p e イ u ー d シ l メ ー メ タ を l l l l l 行 u r ン t タ e グ f e ー p ダ d ー t を d 表 e e e e ( e t s プ D を c ネ u . タ a ー e タ y デ e 示 . . . . e . ( ッ a デ o チ n l デ r を c の p コ c l l l l r e i = ト t コ d ャ c o ー a 作 o 型 e ー o o o o o r r n デ a ー e を t g タ m 成 d を s ド d g g g g o r p r ー ド I 取 i ( を s e 定 e ( ( ( ( r o u e タ = n 得 o ' 取 D r 義 = d ' ' ' ' ) r t q p n F 得 a \ N D I ( D u ' u S u ( t = [ = n a e m { ' a i 0 t i n 最 a ' D m s a デ t r x ( g c 初 n s d e e c g コ a e b i n t の = e t e c : r e ー ) ( 2 n a i 4 w r c o ' i ド ; ' f p t o バ ' i o d , p U エ e 2 u u n イ 0 e n d e t R ラ t 6 t r ト x t g e d d i L ー h 2 ) e S を ' h ' r e o : : e e i 除 e , . P c n ' ' r 4 { = g く + r d a o : , , s . n ) s ' e r d ' ' . i a i . s c a e , d e ) . n t n A t o m d e r ; ( p u p b r d e [ d c r 実 u r u i i e t 0 e o o 際 t e t C n ( e ] c d r の . : . o g t r ) o e ) 登 s ' s d ' y s ; d d ; 録 l , l e , p : e [ デ i i r e ' d 2 ー c f c ( ' s ) [ ] タ e u e ) s , ; 1 ) の ( n ( ; t ] ; 例 0 c 1 r p ) ) , t 0 i a ; ' i ) n r ; 1 o ; g a 0 n ' m ) S ] s ; i ; D g a n t a a t ) u ; r e ) ; 結果、以下のように確認することができました。 ...

2025年6月12日 · 5 分 · Nakamura