跳转至

1.FirstContract

程序结构

  1. SPDX 版权声明
// SPDX-License-Identifier: MIT
  1. pragma solidity 指定版本
pragma solidity ^0.8.1;
  1. 创建合约
contract HelloWorld{

}
  1. 文件导入

用import关键词导入其他solidity文件

既可以导入本地文件,也可以导入 url (网络上的 ipfs,http 或者 git 文件)

  1. 导入所有的全局标志 import "filename"; 到当前全局范围
  2. 导入本地文件: import "./ERC20.sol"; ,其中 ./ 表示当前目录,查找路径参考
  3. 导入网络文件: import "https://github.com/aaa/.../tools.sol";
  4. 导入本地 NPM 库:
    1. $ npm install @openzeppelin/contracts
    2. import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
  5. 导入所有的全局标志,并创建新的全局符号
  6. 方式一: import * as symbolName from "filename";
  7. 方式二: import "filename" as symbolName;
  8. 按需导入,按需修改名称
  9. 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;
   }
}