3.Solidity版权许可标识
为了更好地取得用户对你智能合约的信任,你可以开源智能合约的源代码。由于开源了智能合约的源代码,可能会有企业和个人用到你的源代码,这就涉及到版权方面的法律问题。你可以在你智能合约的源文件里声明版权。
Solidity编译器使用“SPDX版权许可标识”声明版权。SPDX版权许可标识是一个软件间交流的开放标准,即告诉别人如何使用你的智能合约。
3.1.SPDX版权许可标识书写格式:
- 书写格式:// SPDX-License-Identifier: <identifier>。
- <identifier>是指SPDX版权许可列表的identifier,如下图画圈处 (点击查看SPDX版权许可列表网址)。例如在你的智能合约源文件中声明版权如:// SPDX-License-Identifier: MIT。MIT意思是指本智能合约是不受任何限制的免费的提供给任何人使用,但不提供任何保证,如果出现版权和法律问题,则与作者无任何关系。(点击查看SPDX版权许可标识更多的使用说明网址)。
- 如果你不想指定一个<identifier>,或者如果源代码不开源,请将<identifier>写为UNLICENSED。注意:UNLICENSED不存在于SPDX版权许可列表中,是为智能合约提供的特殊值。
3.2.SPDX版权许可标识特殊说明:
- 版权声明一般写在智能合约源文件的首行。
- 每个智能合约源文件都应该声明版权。
- 编译器不会验证填写<identifier>是否属于SPDX版权许列表 (即你填写的<identifier>即使不属于SPDX版权许可列表,也不报错)。
4.Solidity版本标识
由于Solidity语言快速发展中,可能会引起语法的变更,若是使用新的编译器编译你的之前代码,势必造成语法错误。为解决这个问题,你可以在源文件中标识适合编译此源文件的编译器版本,当使用的编译器版本不属于标识的编译器版本,则编译器会提示一个错误。
Redix的”Solidity compiler"页面中的COMPILER选项可以更改编译器的版本。如在源文件将版本标识为大于等于0.7.0且小于0.9.0,在COMPILER选项中选择其他版本,如下图,等编译器编译完成后,则编译器弹出错误提示。
4.1.Solidity版本标识书写格式:
书写格式:pragma solidity <version range>。
<version range>称为版本范围,由运算符和版本组成,如:pragma solidity >=2.3.2 <3.3.2,匹配大于等于2.3.2且小于3.3.2的版本。
4.2.版本结构说明:
- 书写格式是:major.minor.patch 或 X.Y.Z,如:0.2.4、1.2.12、3.3.4。
- major:称为主版本号,当你做了对低版本不兼容的 API 修改,调整此版本号。
- minor:称为次版本号,当你做了对低版本兼容的功能性新增,调整此版本号。
- patch:称为修订号,当你做了对低版本兼容的问题修正,调整此版本号。
4.3.运算符说明:
运算符分类 | 运算符 | 运算符说明 |
通配符 | * | 匹配任意版本。 |
X/x | 用在次版本号和修订号上。 当用在次版本号上:匹配主版本号为指定值,次版本号和修订号为任意值的版本,如:2.x,匹配主版本号为2的任意版本。 当用在修订号上:匹配主版本号和次版本号为指定值,修订号为任意值的版本,如:2.4.x,匹配主版本号为2且次版本号为4的任意版本。 | |
比较运算符 | = | 只匹配指定的版本,如:=2.3.2,只匹配2.3.2版本。在版本标识中若未指定运算符,则默认运算符为“=”。 |
> | 匹配大于指定的版本,如:>2.3.2,匹配大于2.3.2的版本。 | |
>= | 匹配大于等于指定的版本,如:>=2.3.2,匹配大于等于2.3.2的版本。 | |
< | 匹配小于指定的版本,如:<2.3.2,匹配小于2.3.2的版本。 | |
<= | 匹配小于等于指定的版本,如:<=2.3.2,匹配小于等于2.3.2的版本。 | |
- | 匹配大于等于指定的版本且小于等于指定的版本,如:2.3.2 - 3.3.2,匹配大于等于2.3.2且小于等于3.3.2的版本。 | |
高级运算符 | ^ | 将最左侧非零版本号设为相应版本号的指定值。 当主版本号不为零时,匹配主版本号为指定值,次版本号和修订号为任意值的版本,如:^2.3.4,匹配主版本号为2的任意版本。 当主版本号为零,次版本号不为零时,匹配主版本号为0,次版本号为指定值,修订号为任意值的版本,如:0.3.4,匹配主版本号为0,次版本号为2的任意版本。 |
~ | 根据次版本号是否存在,将主版本号或次版本号设为指定值。 当次版本号存在时,匹配主版本号和次版本号为指定值,修订号为任意值的版本,如:~2.3.4,匹配主版本号为2,次版本号为3的任意版本。 当次版本号不存在时,匹配主版本号为指定值,次版本号和修订号为任意值的版本,如:~2,匹配主版本号为2的任意版本。 | |
并交运算符 | 空 | 表示且,如:>=2.3.2 <3.3.2,匹配大于等于2.3.2且小于3.3.2的版本。 |
|| | 表示或,如:>=3.3.2 || <2.3.2,匹配大于等于3.3.2或小于2.3.2的版本。 |
5.Solidity注释
对代码进行注释说明,目的是让人能够更加轻松的了解代码。solidity由两种注释方式:单行注释和多行注释。
单行注释:将注释写在//后面,如:// 这是一个单行注释。
多行注释:将注释写在/* */中,如:/*
这是一个
多行注释。
*/