Solidity 源文件结构
源文件中可以包含任意多个合约定义 、导入源文件指令 、 版本标识 指令、 结构体 , 枚举和函数定义。
SPDX 许可证标识符
SPDX 是一种用于交流软件开发清单信息的开放标准,包括出处、许可证、安全性和其他相关信息。SPDX 通过为组织和社区提供共享重要数据的通用格式来减少冗余工作,从而简化和提高合规性、安全性和可靠性。SPDX 的 ISO/IEC 5962:2021 规范被公认为安全性、许可证合规性和其他软件供应链工件的国际开放标准。
指导原则
- SPDX 以机器可读和人类可读的格式表示数据。
- SPDX 专注于收集和交流事实;并提供一个框架来对这些事实做出断言。
- SPDX 不做任何法律解释(许可证或许可证合规性)。
- SPDX 促进了供应链中元数据的有效交换。
Solidity中的使用
由于提供源代码会涉及版权方面的法律问题,Solidity 编译器鼓励使用机器可读的SPDX 许可证标识符。每个源文件都应以说明其许可证的注释开头:
// SPDX-License-Identifier: MIT
编译器不会验证许可证是否是 SPDX 允许的列表的一部分,但它会在:ref:bytecode metadata <metadata>
_中包含提供的字符串。
如果不想指定许可证或源代码不是开源的,请使用特殊值UNLICENSED
。
当然,提供SPDX并不能免除您与许可相关的其他义务,例如您必须在每个源文件或原始版权所有者中提及特定的许可标题。
编译器在文件级别的文件