前回、Visual Studio Code/Ganache/Truffle で Solidity統合開発環境を構築し、サンプルコードを確認しました。
→→前回記事はこちら
今回からは、この環境でSolidityのブロックチェーンアプリを開発していきます。
その中でも初心者である自分がつまずいたポイントを紹介していこうと思います。
まずはコンパイルバージョンの話から。
コンパイルとは
SolidityはEthereumのスマートコントラクトを記述するための高級言語です。
他のプログラムと同様、プログラムを書くときには人間が読み書きできるように英語チックになっています。
しかし、このままではEtereum仮想マシン(EVM)は読むことができません。
EVMが読んで実行するためには、Ethereumバイトコードに変換しなければいけません。
この変換を実施するのが SOLC という、Solidityのコンパイラです。
バージョン
Solidityは発展途上中のプログラム言語のため、バージョン変更が激しいです。
2017年のバージョンは「0.4.**」でしたが、2022年では「0.8.**」まで上がっています。
バージョンが異なれば仕様も変更になるため、Solidityでプログラムを書くときには、そのプログラムがどのバージョンで記載されているものかを先頭で宣言する仕様になっています。
前回使用したサンプルコードでは、以下のように定義されていました。
pragma solidity >=0.4.22 <=0.8.0;
これは、「0.4.22以上 0.8.0未満のバージョンに対応していますよ」と宣言しています。
OpenZeppelin
突然ですが、OpenZeppelinはSolidityでイーサリアム開発を便利にしてくれるライブラリです。
今後はこちらのライブラリを使って開発を進めていきます。
Visual Code Studio のターミナルで以下のコマンドを実行するとインストールされます。
npm install @openzeppelin/contracts
プログラムソースの中身は、 https://github.com/OpenZeppelin/openzeppelin-contracts で読むことができるので、これを読むのも勉強になります。
ドキュメントは、 https://docs.openzeppelin.com/contracts です。英語です。
よく利用するライブラリは https://ichi.pro/tsuneni-shiyosuru-hitsuyo-ga-aru-7-tsu-no-openzeppelin-kontorakuto-100755228146884 にまとめられていました。日本語です。
サンプルコードもあるのでわかりやすかったです。
コンパイルバージョンの変更
インストールした OpenZeppelinのバージョンは 0.8.0 だったので、今回の開発ではこのバージョンで進めていきます。
利用可能なコンパイラのバージョンを確認
npm show solc versions
この時点では 〜 0.8.12 まで使用可能。
「0.8.0」をインストールします。
npm install --save-dev solc@0.8.0
Visual Studio Code の設定も変更
上で変更したのは、truffle経由でコンパイルするときのバージョンです。
Visual Studio Codeではプログラムを書いている途中でもコンパイラに準拠しているかチェックしてくれるので、こちらのVisual Studio Codeのコンパイルバージョンも変更していきます。
「Code」メニューから基本設定→設定を開く。
ワークスペースタブを開き、拡張機能の中の「Solidity Confire」を選択。
メイン画面の「Compile Using Remote Version」に 0.8.0 を指定する。
まとめ
今回は、Visual Studio Code/Ganache/Truffle を利用したSolidity統合開発環境のコンパイルバージョンを変更しました。
次からは開発中にはまったことなどを書いていこうと思います。
コメント