Solidity備忘録④(2021年5月20日)

今日はSolidityのコードをコンパイルした時に出てきた警告の中の「SPDX-License」とは?について勉強しようと思います。

スクリーンショット (120)

まずはこちらにURLがあるのでそちらに行ってみようと思います。

こちらがトップ画面です。

スクリーンショット (121)

まず、SPDXとは「The Software Package Data Exchange」の略なのですね。

ソフトウェアのパッケージに含まれるデータをやり取りする際の標準的なフォーマットを提供しているようです。このやり取りにはライセンスやコピーライトも含まれるようです。

このSPDXを利用してやり取りをすることが今ではライセンスなどを扱うにあたって標準にもかかわらず、含まれていないので警告を出しているのかと思いました。

SPDX Licenseについて、もう少し細かく見ていこうと思います。

スクリーンショット (122)

こちらを読むと

Solidity 0.6.8 introduces SPDX license identifiers so developers can specify the license 527 the contract uses. (e.g. OpenZeppelin Contracts use MIT license).

⇒solidity は0.6.8のバージョンからSPDX license identifierを取り入れたようです。ちなみにOpenZeppelinのコントラクトはMIT licenseを使っているようです。

SPDX license identifiers should be added to the top of contract files. (see example in OpenZeppelin Contracts ERC20.sol 372)

なお、SPDX license identifierはコードのトップに入れるようです。

The following identifier should be added to the top of your contract (example uses MIT license):

入れ方の例も書いてあり、コードの一番上に

// SPDX-License-Identifier: MIT

などのように書くようです。

The license should be from one of the following: https://spdx.org/licenses/ 527

ここからSPDXのライセンスリスト
==================
ライセンスは上のページのリストの一つのようです。

スクリーンショット (123)

確かにリストがありますね。

上の方の文章を読んでみると

The SPDX License List is an integral part of the SPDX Specification. The SPDX License List itself is a list of commonly found licenses and exceptions used in free and open or collaborative software, data, hardware, or documentation...

⇒このリストはSPDXの特定に不可欠です。フリー、オープンソフトウェアやデータ、文章などに使われるライセンスやエクセプションです

https://wa3.i-3-i.info/word1426.html

(ちなみにexceptionは上の記事がわかりやすかったです。「想定内のエラー」というような意味合いです。)

なお、openzeppelinが使っている「MIT」もこちらにありました。「MIT LICENSE」が正式名称なのですね。

スクリーンショット (124)

ちなみに右の方で「Y」となっているのは

①FSF Free/Libre?
②OSI Approved?

でした。脇道にそれすぎるのでここでは省略します。

ここまでライセンスリストの話
==================

戻ります。

warning: If the license identifier isn’t included in the contract file the compiler will now show a warning.

⇒警告:もしlicense identifier がコントラクトファイル内にないと、警告をだします。
⇒この理由で警告文が出ていたと理解できました。

exclamation: If there are multiple license identifiers in the contract file the compiler will now show an error.

⇒感嘆詞:もしlicense identifierがコントラクトファイル内に複数あった場合、エラーを表示します。

とのことでした。

ただ、今回は、個人で使うだけなのでライセンスはいらないので、警告文が出たまま進もうと思いました。

続きは次回にします。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊