Web3.0アプリケーションリポジトリ
MetaMaskとWeb3.js、スマートコントラクト(solidity)とReact.jsから構築されています。
土台部分については、下記コマンドにより生成
truffle unbox react
solcのバージョン情報等については、truffle-config.jsを参照ください。
実装機能
- 資金調達関連機能: ほぼ実装済み(一部バグあり)
- NFT関連機能: 発行機能のみ実装ずみ(他はバグがあるので今後修正)
- マルチシグ関連機能: マルチシグウォレット生成&署名機能実装済み
今後実装予定機能
- ERC020規格のトークン発行関連機能
- ゲーム関連機能
GitHub PagesのURL
https://mashharuki.github.io/fundraiser-dapp/
主なディレクトリ構成
root/
┣ client/ : フロントエンド側のディレクトリ
└ src/ :App.jsなどのアプリを構成するファイルを格納するディレクトリ
└ public/ : CSSファイルなど全体を通して使用するファイルを格納するディレクトリ
└ node_modules/ : npmによってインストールするモジュール群を格納するディレクトリ
└ package.json: npm用の設定ファイル
└ package-lock.json: npm installによってインストールされたモジュールの情報を記載したファイル
┣ contracts/ : スマートコントラクト(バックエンド側)のディレクトリ
└ safeContracts/: マルチシグウォレット関連のコントラクトを格納したディレクトリ
└ base/ : ベースとなるコントラクトを格納したディレクトリ
└ common/ : 共通機能コントラクトを格納したディレクトリ
└ external/ : 上限値チェック用のコントラクトを格納したディレクトリ
└ interfaces/ : インターフェース関連のコントラクト格納ディレクトリ
┣ develop/ : 実装途中のファイルを格納するディレクトリ
┣ migrations/ : デプロイ用のJsファイルを格納するディレクトリ
┣ node_modules/ : npmによってインストールするモジュール群を格納するディレクトリ
┣ test/ : スマートコントラクトのテストコードを格納するディレクトリ
┣ img/ : 画像データを格納するディレクトリ
┣ truffle-config.js: truffle用の設定ファイル
┣ README.md: リポジトリの各種説明を記載
┣ LICENSE: ライセンス情報を記載
┣ package-lock.json: npm installによってインストールされたモジュールの情報を記載したファイル
画面例
1. NFT作成画面
2. マルチシグウォレット作成画面
3. 署名実行画面
4. 署名時のトランザクション
5. 資金調達企画作成画面
6. 資金調達確認画面
7. ホーム画面
clientフォルダ直下で実行するコマンド
npm i
npm install -g mocha
npm install -g chai
npm install @openzeppelin/contracts
npm install --save react-router-dom
テストコードを実行するコマンド(fundraiser-dappフォルダ直下で実行する)
truffle test
コントラクトのコンパイルとデプロイ用のコマンド(ローカルチェーンの場合)
truffle compile
truffle migrate
なお、マイグレーションしたいファイルを指定する場合は下記のように打ち込む
truffle migrate --f 2 --to 3
(client/contracts/ 配下に「コントラクト名.json」ができていれば成功。)
コントラクトのコンパイルとデプロイ用のコマンド(Rinkebyの場合)
truffle compile --network rinkeby
truffle migrate --network rinkeby
(client/contracts/ 配下に「コントラクト名.json」ができていれば成功。)
事前にやっておくこと
- node.jsをインストールしておくこと
- ganacheをインストールして事前に起動しておくこと
- ganacheを使ってプライベートネット上にスマートコントラクトをデプロイすること
- デプロイしたコントラクトの情報が記載されているJSONファイルをclient/contractsフォルダ内にコピペする。(※重要)
- MetaMaskをインストールしておくこと
- プライベートネットの秘密鍵をMetaMaskにインポートしておくこと
動かし方
準備ができたら、clientフォルダで下記コマンドを実行する。
npm run start
http:localhost:3000/ にアクセスすると最初のページが表示されている。
buildしたい場合は、次のコマンドを打つこと!
npm run build
参考書籍&参考ページ
ブロックチェーン dapp&ゲーム開発入門 Solidityによるイーサリアム分散アプリプログラミング
いちばんやさしいブロックチェーンの教本 人気講師が教えるビットコインを支える仕組み