lesson-1_イーサリアム上でイールドファームを作ろう
👋 Yield Farm Project へようこそ!
Yield Farm Projectでは、イーサリアムネットワーク上にスマートコントラクトを実装して、トークンを配布できる独自のWebアプリケーションを構築します。
このプロジェクトでは、具体的に以下の実装します。
- ユーザーのウォレットをあなたのDapp Token Farmに接続する。
- Webアプリケーションを通して、ユーザーがスマートコントラクトとやりとりとりできる機能を実装する。
Solidityで バックエンドを実装し、Reactでフロントエンドを構築します。
プロジェクトを進めるには以下の技術が必要です。
いますべてを理解している必要はありません。 わからないことがあったらインターネットで検索したり、コミュニティで質問しながらプロジェクトを進めていきましょう! 開発初心者の方は、まずETH-DAPPプロジェクトから始めることをお勧めします☺️
🛠 何を構築するのか?
Dapp Token Farmと呼ばれる DeFi Web アプリケーション を構築します。
Dapp Token Farmでは、以下の機能を実装します。
- インターネット上の誰もが投資家となり、あなたのプロジェクトにトークンを預けることができる(流動性の提供)
- このプロジェクトでは、投資可能なトークンとして、米ドルにペッグされた模擬仮想通貨「mDAIトークン」を使用します。
- 投資家は、預けたトークンの量に比例して、あなたのプロジェクトのトークンを獲得できる(Staking)
- このプロジェクトでは、mDAIの投資金額に応じて、オリジナルのトークンであるDappトークンが投資家に還元されます。
- 投資家は自分が投資したトークンを手元に戻せる(Unstaking)
⛓ ブロックチェーンとは何か?
ブロックチェーンとは、互いに通信するコンピュータ(ノード)のピアツーピア・ネットワークです。
参加者全員がネットワークの運営を分担する分散型ネットワークですので、各ネットワークの参加者は、ブロックチェーン上のコードとデータのコピーを維持します。
これらのデータはすべて、「ブロック」と呼ばれる記録の束に含まれており、それらが「連鎖」してブロックチェーンを構成しています。
ネットワーク上のすべてのノードは、コードとデータがいつでも変更可能な中央集権型のアプリケーションとは異なり、このデータが安全で変更不可能であることを保証しています。これがブロックチェーンを強力なものにしているのです ✨
ブロックチェーンはデータの保存を担っているため、根本的にはデータベースです。
そして、互いに会話するコンピュータのネットワークですから、ネットワークとなります。ネットワークとデータベースが一体化したものと考えればよいでしょう。
また、従来のWebアプリケーションとブロックチェーンアプリケーションの根本的な違いとして、アプリケーションは、ユーザーのデータを一切管理しません。ユーザーのデータは、ブロックチェーンによって管理されています。
🥫 スマートコントラクトとは何か?
スマートコントラクトとは、ブロックチェーン上でコントラクト(=契約)を自動的に実行するしくみです。
よくたとえられるのは、自動販売機です。自動販売機には「100円が投下され、ボタンが押されたら、飲み物を落とす」というプログラムが搭載されており、「店員さんがお金を受け取って飲み物を渡す」というプロセスを必要としません。
人の介在を省き、自動的にプログラムが実行される点こそ、スマートコントラクトが、「スマート」と呼ばれる理由です。
実際には、スマートコントラクトのしくみは、イーサリアムネットワーク上のすべてのコンピュータに複製され、処理されるプログラムにより成り立っています。
イーサリアムの汎用性により、そのネットワーク上にアプリケーションを構築できます。
スマートコントラクトのコードはすべてイミュータブル(不変)、つまり変更不可能です。
つまり、スマートコントラクトをブロックチェーンにデプロイすると、コードを変更したり更新できなくなるのです。
これは、コードの信頼性と安全性を確保するための設計上の特徴です。
私はよくスマートコントラクトをWeb上のマイクロサービスにたとえます。ブロックチェーンからデータを読み書きしたり、ビジネスロジックを実行したりするためのインタフェースとして機能するのです。これらはパブリックにアクセス可能で、ブロックチェーンにアクセスできる人なら誰でもそのインタフェースにアクセスできることを意味します。
❓ エラーが出た時の進め方
このプロジェクトは動画を参考にして作られています。なのでエラーが出て詰まってしまったときには参考とした動画を見てもらいたいと思います。
動画URLについては、それぞれのレッスンに対応した時間からスタートするようにURLを設定しており、それぞれのレッスンの最初に貼っています(ただしこのレッスンに関してはわかりやすいようにこの文章の下に貼っています)。
もし動画を参考にしてもエラーが解決しない場合はdiscordで気軽に質問してください!