Skip to the content.

Web3.0アプリケーションリポジトリ

MetaMaskとWeb3.js、スマートコントラクト(solidity)とReact.jsから構築されています。

土台部分については、下記コマンドにより生成

truffle unbox react

solcのバージョン情報等については、truffle-config.jsを参照ください。

実装機能

  1. 資金調達関連機能: ほぼ実装済み(一部バグあり)
  2. NFT関連機能: 発行機能のみ実装ずみ(他はバグがあるので今後修正)
  3. マルチシグ関連機能: マルチシグウォレット生成&署名機能実装済み

今後実装予定機能

  1. ERC020規格のトークン発行関連機能
  2. ゲーム関連機能

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」ができていれば成功。)

事前にやっておくこと

  1. node.jsをインストールしておくこと
  2. ganacheをインストールして事前に起動しておくこと
  3. ganacheを使ってプライベートネット上にスマートコントラクトをデプロイすること
  4. デプロイしたコントラクトの情報が記載されているJSONファイルをclient/contractsフォルダ内にコピペする。(※重要)
  5. MetaMaskをインストールしておくこと
  6. プライベートネットの秘密鍵をMetaMaskにインポートしておくこと

動かし方

準備ができたら、clientフォルダで下記コマンドを実行する。

npm run start

http:localhost:3000/ にアクセスすると最初のページが表示されている。

buildしたい場合は、次のコマンドを打つこと!
npm run build

参考書籍&参考ページ

実践スマートコントラクト開発

試して学ぶスマートコントラクト開発

マスタリングイーサリアム

ブロックチェーン dapp&ゲーム開発入門 Solidityによるイーサリアム分散アプリプログラミング

いちばんやさしいブロックチェーンの教本 人気講師が教えるビットコインを支える仕組み

図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

絵で見てわかるブロックチェーンの仕組み

METAMASK

METAMASK Legacy Web3

INFURA

truffleの公式ページ

hardhatの公式ページ

Rinkeby Faucet

マルチシグウォレットのデモページ

REMIX IDE

myEthWallet

OpenZeppelin Docs

safe contractsの公式ページ

safe contractsについての紹介ページ

safe contractsのGitHub