1.FirstContract
程序结构¶
- SPDX 版权声明
// SPDX-License-Identifier: MIT
- pragma solidity 指定版本
pragma solidity ^0.8.1;
- 创建合约
contract HelloWorld{
}
- 文件导入
用import关键词导入其他solidity文件
既可以导入本地文件,也可以导入 url (网络上的 ipfs,http 或者 git 文件)
- 导入所有的全局标志
import "filename";
到当前全局范围- 导入本地文件:
import "./ERC20.sol";
,其中./
表示当前目录,查找路径参考- 导入网络文件:
import "https://github.com/aaa/.../tools.sol";
- 导入本地 NPM 库:
$ npm install @openzeppelin/contracts
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
- 导入所有的全局标志,并创建新的全局符号
- 方式一:
import * as symbolName from "filename";
- 方式二:
import "filename" as symbolName;
- 按需导入,按需修改名称
import {symbol1 as aliasName, symbol2} from "filename";
不推荐导入变量标示名到当前全局范围的方式,因为一份源文件可以包含多个版本声明、多个导入声明和多个合约声明,不可控,容易污染当前的命名空间。如果全局导入,推荐使用
import "filename" as symbolName;
Hello, World¶
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.1;
contract HelloWorld {
string public mystring = "hello, world!"; // 字符串会被存储在区块链中
}
Get() Set()¶
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.1;
import "./Function.sol" as myFuntion;
contract FirstContract {
uint var1;
function set(uint x) public {
var1 = x;
}
function get() public view returns (uint) {
return var1;
}
}