022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记

待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此文集记录我的学习笔记。

课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第七课分为三部分:

  1. Solidity语法之多继承
  2. ERC20众筹实例之合约分析
  3. ERC20众筹实例之部署调试

这篇文章是第七课第二部分的学习笔记:ERC20众筹实例之合约分析。(2)


前一小节介绍了发币相关的合约,这一小节介绍众筹相关的合约。

1、Zeppelin Crowdsale 分析

022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记_第1张图片
Crowdsale 简介

Crowdsale 是一个基类合约,它提供了很多的接口,提供给子合约来重载。它的一个核心功能 buytoken ,不能被重载,它是由 fallback 函数触发。

下面的两个合约都继承自 Crowdsale 。一个是 TimedCrowdsale 合约(限制的众筹,有开始时间和结束时间,在两者之间有效),一个是 MintedCrowdsale 合约(按需发币的众筹)。

基类合约 Crowdsale 引用的是一个 ERC20 抽象合约的地址,而在 MintedCrowdsale 中引用的则是 MintableToken 地址。

自己的众筹合约继承自 TimedCrowdsale 合约和 MintedCrowdsale 合约。自定义的 Mytoken 是基于 MintableToken 合约。

2、Open Zeppelin 代码

2.1 Crowdsale.sol

/node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol

022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记_第2张图片
Crowdsale.sol

部分代码的分析见图中注释。

2.2 MintedCrowdsale.sol

/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol

022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记_第3张图片
MintedCrowdsale.sol

MintableCrowdsale 子合约继承自基类合约 Crowdsale 合约。

这个合约只有一个功能,就是重载了 deliverToken ,怎么给受益人发放 Token 。

在基类中是直接调用的 transfer,这里是先把类型转换,转成 mintabletoken ,然后调用 mint,向受益人发币。

2.3 TimedCrowdsale.sol

/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol

022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记_第4张图片
TimedCrowdsale.sol

部分代码的分析见图中注释。

小结。本节主要介绍众筹相关的三个合约源文件。


不足之处,请批评指正,谢谢。

课程地址为:深入浅出ETH原理与智能合约开发

你可能感兴趣的:(022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开发》笔记)