以太坊实战-OpenZeppelin中ERC20接口的实现

关于ERC20.sol中的decimals()函数的理解

这个函数的目的就是告诉别人,合约中运行的计量单位Wei和程序员显示的计量单位Ethers之间的数量级关系。相当于我们在电子商城中,内部使用的单位是分,但是外部使用的单位是元,于是我就可以返回2作为进制差异。

在以太坊网络中,内部使用的单位是Wei,外部使用的单位是Ether,所以,返回18作为进制差异。

  • 关于view标识符

其中的view的目的是控制函数,不可以改变状态。最典型的有下面三个情况:

第一个个毋庸置疑,就是改变状态变量;第二个可以简单归类为view函数不能发送事件,一旦发送事件,那么以太坊的日志就会改变,所以也不算view;创建其他合约,以太坊的数据也会改变。

总之,但凡使得以太坊数据可能发生变更的内容,都不可以在view函数中出现。

  • 关于virtual标识符

virtual标识能被子合约继承,override标识重写了父亲合约。

returns(uint8)标识返回的内容是uint8类型,uint8标识无符号的8位整数,也就是能表示0~255的数字,完全足够。

function decimals() public view virtual override returns (uint8) {
	return 18;
}
关于balanceOf函数来获得用户余额
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);

注意这个指定账户的余额,是按照单位Wei进行标识的。这里的external就是告诉我们,这个是外部函数,但是为什么不用public呢?

public表明函数或者变量,对外部和内部都可见;external表明函数或者变量,只对外部可见,内部不可见。

  1. 下面这个函数时关于转账的逻辑transfer
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值