MENU

東大ブロックチェーン講座の復習:プログラミング初心者がSolidityの講義についていけるのか?その2

東大BC講座10回Solidity環境整備アイキャッチ
  • URLをコピーしました!

※アフィリエイト広告を利用しています

こんにちは。日本のNFTをみんなで盛り上げて応援したい!AIにも興味深々のWeb3じいじのko_sanです。

東大のブロックチェーン講座を受けているけど、だんだん難しくなってきて、プログラミング未経験の初心者にとってはついていけなさそう

私もそうですが、少しでも理解をするために、2024年第10回のDAOの簡易実装の講義の内容を整理して、その中で開発環境の整備と理解するところまで整理してまとめてみました。

1回の講義内容では盛りだくさんで、プログラミング初心者にとってはついていけませんでしたが、講義の構成をブレークダウンして、1つ1つできるところまでキャッチアップしてみようと思います。

今回は開発環境を理解するのところまでを、実際エディターの
VSCODEのインストール、FoundryのインストールとMetaContractの概要の理解のところまで進めました。

目次

◾️第10回のDAOの簡易実装の講義の全体構成

こちらが全体構成です。この記事では、〇開発環境を理解するのところを、プログラミング初心者の私が悪戦苦闘して開発環境のインストールとそれらの意味を理解するところまで進めた内容をまとめました。

〇開発環境を理解する
1)エディター:
2)スマートコントラクト開発環境のFoundryとは
3)スマートコントラクト開発フレームワークのMetaContractとは
〇開発演習①の中身を理解する。何をやろうとしているのか?
シンプルな提案と投票を通じて状態変移するDAOコントラクトとは
(例:MolochDAO、NounsDAOなど)
〇プロジェクトの立ち上げ方法
forge init -t metacontract/template
例)forge init simple-dao -t metacontract/template
をやってみる。
〇プロジェクトの構成を確認し理解する
)Bundleとは
2)Functionとは
3)Storageとは
〇コントラクト(Bundle)の構造を理解する
1)どのような機能が必要か:MetaContractにおけるFunction
2)どのようなデータ構造(モデル)が必要か:Meta ContractにおけるSchema.sol
〇機能を洗い出してブロック図で表す
1)ER図とは
2)状態遷移図とは
3)アクティビティ図とは
〇図を参考にmeta contractのSchema.sol を生成するには
〇Schema.solファイル、Storate.sol、各Functionの実装とは
〇テストとデプロイ
〇Meta Contract DevKitとは。その使い方

◾️開発環境を理解する

Solidityの開発環境として3つが紹介されています。それぞれ、どんな環境なのかを理解しておくと次に進みやすいです。

1)エディター:
2)スマートコントラクト開発環境のFoundryとは
3)スマートコントラクト開発フレームワークのMetaContractとは

1)エディター

文章をつくるときのテキストエディターのプログラム版と思えばわかりやすいです。とりあえずVSCODEをMacにインストールしました。

2)スマートコントラクト開発環境のFoundryとは

Foundryというのは、Solidityのプログラムでプロジェクトを作成するための環境のようです。こちらのページをみてみたところ、概要としては、

「Foundry は依存関係を管理し、プロジェクトをコンパイルし、テストを実行し、デプロイし、
コマンドラインや Solidity スクリプト経由でチェーンと対話できるようにします。」

ということです。ここでいう「依存関係」とは、ソフトウェアプロジェクトが正しく動作するために必要な外部のライブラリやモジュール、パッケージのことを指します。

具体的な手順としては以下となるようです。

①Forgeという開発環境をインストールする。
②新しいプロジェクトを作成する。
③Foundryに同梱されている、Forgeというコマンドラインツール(CLT)を使って、開発したスマートコントラクトをテスト、ビルド、デプロイする。

ここでForgeのインストール方法をAIに聞いた結果が以下です。

手順1: 必要なツールのインストール

macOS/Linuxの場合
  1. ターミナルを開きます。
  2. 以下のコマンドを実行して、foundryupをインストールします。
curl -L https://foundry.paradigm.xyz | bash
Windowsの場合
  1. PowerShellを管理者権限で開きます。
  2. 以下のコマンドを実行して、foundryupをインストールします。
iwr -Uri https://foundry.paradigm.xyz | iex

手順2: foundryupのセットアップ

インストールが完了したら、以下のコマンドを実行してfoundryupを初期化します。

foundryup

手順3: Forgeのインストール確認

Forgeが正しくインストールされたことを確認するために、以下のコマンドを実行します。

forge --version

言葉の意味について:スマートコントラクトをテスト、ビルド、デプロイするとは

ここで、スマートコントラクトをテスト、ビルド、デプロイする意味についてAIに聞いた答えがこちらです:

スマートコントラクトをテスト、ビルド、デプロイするとは、
ブロックチェーン上で動作するプログラムを作成し、それを動作させるための一連の手順を指します。
〇テスト(Testing):
スマートコントラクトをテストすることは、そのプログラムが予想通りに動作することを確認する作業です。
プログラムがブロックチェーン上で実行されると、一度デプロイされた後に修正するのが難しくなるため、
初めに十分なテストを行うことが重要です。テストの方法には、以下のようなものがあります:
〇ユニットテスト(Unit Testing): コードの各部分が正しく動作するかを個別にテストすること。
〇統合テスト(Integration Testing): 複数の部分が協調して動作するかを確認すること。
シミュレーション: ブロックチェーンの挙動を模擬する環境で、実際のブロックチェーン上での動作を予測すること。
〇ビルド(Building):
スマートコントラクトをビルドするとは、そのプログラムをコンピューターが理解できる形式に変換することです。
通常、スマートコントラクトは特定のプログラミング言語で書かれ、
その言語に対応するコンパイラやビルドツールを使用して、実際にブロックチェーン上で動作する形に変換し
ます。
〇デプロイ(Deploying):
デプロイとは、作成したスマートコントラクトを実際のブロックチェーンネットワークに配置し、実行可能な状態にすることです。
これには、次の手順が含まれます:
・ブロックチェーンネットワークの選択: スマートコントラクトをデプロイするためのブロックチェーン(例えば、Ethereum、Binance Smart Chainなど)を選びます。
・ウォレットと接続: ブロックチェーンネットワークに接続するためのウォレット(たとえばMetaMask)を設定し、デプロイに必要な仮想通貨(ガス)を用意します。
・デプロイメント: スマートコントラクトのコードをブロックチェーンネットワークに送信し、トランザクションを発行してブロックチェーンに記録されるようにします。

これらの手順を経て、スマートコントラクトはブロックチェーン上で正常に動作し、予定通りの機能を提供できるようになります。

3)スマートコントラクト開発フレームワークとしてのMetaContract

MetaContractについては、こちらの記事で概要のみまとめておきました。それによると:

「複数のスマートコントラクトを統一的に管理し、アップグレードやカスタマイズを容易にするための仕組み」

と表現されています。

講義資料のMetaContractのリンクをクリックすると、MetaContractについてのGithubのページになりました。

そこでの概要の中身でこう表現されています。

「Meta Contract ライブラリは、標準関数コントラクトを含む、MC-DevKit でスマート コントラクトを開発するための便利なコントラクトのコレクションです。
DevX を活用して、スマート コントラクトの開発、デプロイメント スクリプトの作成、テストをより簡単かつ迅速に行うことができます。」

◾️開発演習の中身の理解とプロジェクトの立ち上げをトライしてみる

1)開発演習の中身の理解

演習の内容は以下です:

「ある提案に対してメンバーが投票によって多数決で可否決の判定をする簡易DAOのスマートコントラクトをSolidityというプログラム言語で作成する」

DAOについては、NinjaDAOをはじめ、いくつか親しんだ経験があるものの、そのスマートコントラクトを作成するとは、プログラミング初心者にはハードル高すぎの演習です。

まずはどんなことをしようとしているのかというと、開発以下の項目を開発環境を整備した上で、チャート図を作成し、Solidityのプログラミングコードを作成していく演習と理解しました。

シンプルな提案と投票による状態遷移
○ 状態遷移提案(可決で数値インクリメントのみ)
○ 単投票(多数決)
○ 単集計
○ 状態遷移実行

2)プロジェクトの立ち上げをトライしてみる

テキストによると、Forgeをインストールした上で、以下のコマンドでプロジェクトを立ち上げることができるとのことです。<project name>のところは個々の任意の名前を入れるということです。

forge init <project name> -t metacontract/template

最初< >をつけたままにしてしまいました(汗)。< >なしで名前をつけて課題にとりくむための自分の開発環境フォルダーができたっぽくなりました。

VSCODEでそのフォルダー開きたくても、どこに格納されているのかわからず、ターミナルにずらっと表示された文字列をスクショして、ChatGPTに聞いたら、図のように格納先を教えてくれてやっとVSCODEで開くことができて一安心。

開発演習の中身の理解とプロジェクトの立ち上げをトライしてみる

Vscodeの画面でを触っていたら、なんとなくGithubとVSCODEを連携の画面がでてきて、ようやく
プロジェクトの構成が確認できる画面にたどりつきました。

開発演習の中身の理解とプロジェクトの立ち上げをトライしてみる

これがプロジェクトの構成が確認できた画面です。

開発演習の中身の理解とプロジェクトの立ち上げをトライしてみる

ここまでで、やっと第10回の講義の1/3ぐらいのところまで追いついた感じです。ふー..。

◾️まとめ

この記事では、2024年第10回のDAOの簡易実装の講義の内容を整理して、プログラミング初心者がどこまでついていけるのか、AIの助けを借りて復習して、その中で開発環境の整備と理解するところまで整理してまとめてみました。

プログラミング初心者の参考になれば嬉しいです。

東大BC講座10回Solidity環境整備アイキャッチ

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次