ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
ethers.js v6 の日本語チュートリアルを作った

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/ ディレクトリに実行可能なサンプルコードを用意しています。 git clone https://github.com/nakamura196/ethers-ja-tutorial.git cd ethers-ja-tutorial npm install node examples/01-connect.mjs たとえば 01-connect.mjs を実行すると、Ethereum メインネットの最新ブロック番号やガス価格が取得できます。 ...

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

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

お知らせ: 2025-06-14 開発の経過は以下にまとめています。 https://zenn.dev/nakamura196/books/41693d2d017082 概要 以下の記事をはじめとして、ブロックチェーンを用いたデジタル文化財管理システムの試作をしています。 今回、アップロードしたデータがNFTとして認識されるように改修しました。 勉強過程のため、不完全な点があるかと思いますが、参考になりましたら幸いです。 使い方ページ ファイルのアップロード方法はこれまでと同様です。アップロード後に表示される一覧ページにおいて、詳細ページへのリンクを追加しました。 リンクをクリックすると、以下のような詳細画面に遷移します。 実装方法 ※ この章は、AIが執筆しました。 1. コントラクトのNFT対応 既存のデジタル文化財管理コントラクトを、ERC721規格に準拠したNFTコントラクトに改修しました。 主な変更点: 1. OpenZeppelinライブラリの追加 import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol"; 2. コントラクトの継承構造を変更 contract DigitalHeritage is Initializable, OwnableUpgradeable, UUPSUpgradeable, ERC721Upgradeable, ERC721URIStorageUpgradeable { // ... } 3. 初期化関数の更新 function initialize() public initializer { __Ownable_init(msg.sender); __UUPSUpgradeable_init(); __ERC721_init("Digital Heritage", "DH"); __ERC721URIStorage_init(); } 4. 文化財登録時のNFTミント機能 function registerHeritage( string memory _name, string memory _description, string memory _imageUrl, string memory _tokenURI ) public { uint256 id = heritages.length; // 文化財データを保存 heritages.push(Heritage({ id: id, name: _name, description: _description, imageUrl: _imageUrl, owner: msg.sender, timestamp: block.timestamp, isDeleted: false })); // NFTとしてミント _safeMint(msg.sender, id); _setTokenURI(id, _tokenURI); emit HeritageRegistered(id, msg.sender, _name); } 2. メタデータ管理システムの実装 NFTの標準的なメタデータ形式に対応するため、サーバーサイドでのメタデータ生成・アップロード機能を実装しました。 ...