待字閨中開發(fā)了一門區(qū)塊鏈方面的課程:《深入淺出ETH原理與智能合約開發(fā)》裸违,馬良老師講授湃鹊。此簡(jiǎn)書文集記錄我的學(xué)習(xí)筆記。
課程共8節(jié)課蛹尝。其中后豫,前四課講ETH原理,后四課講智能合約突那。
第七課分為三部分:
- Solidity語法之多繼承
- ERC20眾籌實(shí)例之合約分析
- ERC20眾籌實(shí)例之部署調(diào)試
這篇文章是第七課第二部分的學(xué)習(xí)筆記:ERC20眾籌實(shí)例之合約分析挫酿。(2)
前一小節(jié)介紹了發(fā)幣相關(guān)的合約,這一小節(jié)介紹眾籌相關(guān)的合約愕难。
1早龟、Zeppelin Crowdsale 分析
Crowdsale 是一個(gè)基類合約,它提供了很多的接口务漩,提供給子合約來重載拄衰。它的一個(gè)核心功能 buytoken ,不能被重載饵骨,它是由 fallback 函數(shù)觸發(fā)翘悉。
下面的兩個(gè)合約都繼承自 Crowdsale 。一個(gè)是 TimedCrowdsale 合約(限制的眾籌居触,有開始時(shí)間和結(jié)束時(shí)間妖混,在兩者之間有效)老赤,一個(gè)是 MintedCrowdsale 合約(按需發(fā)幣的眾籌)。
基類合約 Crowdsale 引用的是一個(gè) ERC20 抽象合約的地址制市,而在 MintedCrowdsale 中引用的則是 MintableToken 地址抬旺。
自己的眾籌合約繼承自 TimedCrowdsale 合約和 MintedCrowdsale 合約。自定義的 Mytoken 是基于 MintableToken 合約祥楣。
2开财、Open Zeppelin 代碼
2.1 Crowdsale.sol
/node_modules/openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol
部分代碼的分析見圖中注釋。
2.2 MintedCrowdsale.sol
/node_modules/openzeppelin-solidity/contracts/crowdsale/emission/MintedCrowdsale.sol
MintableCrowdsale 子合約繼承自基類合約 Crowdsale 合約误褪。
這個(gè)合約只有一個(gè)功能责鳍,就是重載了 deliverToken ,怎么給受益人發(fā)放 Token 兽间。
在基類中是直接調(diào)用的 transfer历葛,這里是先把類型轉(zhuǎn)換,轉(zhuǎn)成 mintabletoken 嘀略,然后調(diào)用 mint恤溶,向受益人發(fā)幣。
2.3 TimedCrowdsale.sol
/node_modules/openzeppelin-solidity/contracts/crowdsale/validation/TimedCrowdsale.sol
部分代碼的分析見圖中注釋帜羊。
小結(jié)咒程。本節(jié)主要介紹眾籌相關(guān)的三個(gè)合約源文件。
不足之處逮壁,請(qǐng)批評(píng)指正孵坚,謝謝。
課程地址為:深入淺出ETH原理與智能合約開發(fā)