【Remix】OpenZeppelin のバージョンを指定して import する

サイオステクノロジーの菊地啓哉です。今回は、Remix で Solidity をコーディングする際に、Openzeppelin のバージョンを指定する方法について書きました。

対象

  • Remix で Solidity のコーディングをする人

はじめに

Solidityの代表的なライブラリと言えば OpenZeppelin ですよね。OpenZeppelin を使って Remix でコーディングする際、ネット上の情報や過去の自分のコードを参考に同じようにコーディングしているのに動かなくなってしまったりすることがあります。

全く同じコードなのに動かないなら多くの場合、OpenZeppelin のソースコードに変更が入り、Remix で OpenZeppelin がデフォルトの動作で最新のコードを持ってきたことでバージョン違いが起こったことが原因と思います。

ということで、Remix上でコーディングする際に OpenZeppelin のバージョンを指定する方法をご紹介します。

OpenZeppelin のバージョンを指定する

早速結論にいきましょう。

Using Remix Safelyに書かれている内容になります。

.solファイルで OpenZeppelin を importする際に、例えば以下のように書きます。

import "@openzeppelin/contracts@4.7.3/token/ERC20/ERC20.sol";

これで、ERC20.sol のバージョン4.7.3を importできます。

最小構成で ERC20 の Contract を実装すると以下のような感じですね。

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

import "@openzeppelin/contracts@4.7.3/token/ERC20/ERC20.sol";

contract VersionSpecifyFT is ERC20("Version Specify ERC20", "VSF") {

}
指定されたバージョンのものが .deps 以下に入ります。

その他のバージョン違いとしては、コンパイラがあるかと思いますが、こちらの記事コンパイルのところで、バージョンを確認できると書いてありますが、そこから変更できます。

pragma solidityで指定しているコンパイラのバージョンが古い場合には確認してみてください。

ついでに

内容が薄いのと、せっかくなので、Using Remix Safelyに書いてあることをざっくりまとめます。

安全に Remix を使う

  • よくわからない Contract は使わない
  • 詐欺に関する記事を書いてあるから読んでね
  • ローカルで Remix を使う場合などを除いて、Remix には HTTPS で接続する
  • import でバージョンを指定する
  • deploy済みの Contract に接続する時には、それが正しいものか、バージョンはあっているのか確認する
  • 警告については、全て対処する、もしくは理解する
  • ethereum.org のサブドメインの Remix だけが本物(偽物Remix には注意)

リミックスの手軽さがユーザーを標的にする

Remix にはセットアップが無いため、多くのSmartContract開発初心者のコミュニティが利用している。

これ自体は素晴らしいことだが、対象の利用者を詐欺師の搾取の対象にしかねない。

Remix が無ければ、詐欺師たちは被害者にローカル開発環境をセットアップさせる必要がある。これによって、詐欺の成功率は制限がつく。

詐欺について、或いはプログラムの読み方や理解の仕方について、詐欺の被害者になり得る人たちが勉強すると、詐欺の被害に遭いにくくなる。

ぜひ、Solidity についてよく学びましょう。

Remix で Solidity のチュートリアルを行うには、LearnEthプラグインを使ってください。

終わりに

今回は Remix で Solidity をコーディングする際に OpenZeppelin のバージョンを指定する方法をご紹介いたしました。

私がこの方法を調べた時は Remix上で npm を実行してバージョンを指定するのかと思って調べていたために、今回の情報に辿り着くのに少し時間がかかりましたが、結果としては INTRODUCTION に書いてあるというある意味残念な結果でした。

ドキュメント類はちゃんと読んだ方が良いというのはわかっていても、優先度とかで読まなかったりしてしまいますね。

私自身もこれからはサンプルのコードを Remix で書く時には、バージョン指定を気を付けたいと思います。

またかきます

またね

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です