- 直达Hackquest链接 - Solidity 101 - 中文
- 重点
- contract
- 合约的名字遵循“大驼峰”:每个单词的首字母都大写,例如:MyContract
- 在 Solidity 中,没有内置的浮点数数据类型
- 在 UniswapV2中,开发者为了实现 solidity 的小数表示,将 uint256 拆分为了uint224 = uint112 x uint112,前面的112个 bit 用于表示整数部分,后112个bit用于表示小数部分。所以这个数可以有大概33位整数部分,和33位小数部分。
-
uint224 constant Q112 = 2**112;
- 优化和成本:
public函数通常需要更多的燃气( gas )来执行,因为它们需要处理许多安全性和访问控制检查。 - 通过将某些非必要公开函数标记为 private ,可以减少合约执行时的燃气成本,从而提高效率。
public、external、internal和private关键字的区别- public:
- 函数:可以被合约内部和外部调用。
- 变量:可以被任何人读取,但只能在合约内部修改。
- external:
- 函数:只能被合约外部调用,不能被合约内部的其他函数直接调用(可以通过
this关键字在合约内部调用)。 - 变量:没有
external修饰符用于变量。 - internal:
- 函数和变量:可以在当前合约以及所有继承该合约的子合约中访问。
- private:
- 函数和变量:只能在当前合约内部访问,不能在任何继承该合约的子合约中访问。
pure函数的意义pure函数就像计算器- 使用
pure定义的函数被调用时不用花费 gas,并且可以保证该函数不会访问和改变状态变量,有益于开发时的模块化管理。 view函数view函数就像只具有“读”权限的数据库,它既可以使用参数进行计算,也可以在数据库中查找数据进行运算- 在 solidity 中,只能对申明为
payable的地址进行转账。 - 状态变量
- 是永久存在于区块链上的变量
- 通常需要更多的 gas 来读写,所以应当仅在必要时使用