美文网首页
022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开

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

作者: 吉祥在成长 | 来源:发表于2018-10-07 15:40 被阅读76次

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

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

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

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


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

    1、Zeppelin Crowdsale 分析

    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

    Crowdsale.sol

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

    2.2 MintedCrowdsale.sol

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

    MintedCrowdsale.sol

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

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

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

    2.3 TimedCrowdsale.sol

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

    TimedCrowdsale.sol

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

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


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

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

    相关文章

      网友评论

          本文标题:022:ERC20众筹实例之合约分析2|《ETH原理与智能合约开

          本文链接:https://www.haomeiwen.com/subject/zzumoftx.html