eth智能合約眾籌Crowdsale精簡版注釋解讀

'''
pragma solidity ^0.4.2;
contract token { function transfer(address receiver, uint amount){ } }

contract Crowdsale {
address public beneficiary;//受益人
uint public fundingGoal; //目標(biāo)金額
uint public amountRaised;
uint public deadline; //截止時(shí)間
uint public price; //每個(gè)價(jià)格
token public tokenReward;
mapping(address => uint256) public balanceOf;//每個(gè)地址的眾籌數(shù)目把敢,map類型
bool fundingGoalReached = false;
event GoalReached(address beneficiary, uint amountRaised); //事件晌块,眾籌目標(biāo)達(dá)到
event FundTransfer(address backer, uint amount, bool isContribution);//事件,發(fā)送資金發(fā)送時(shí)候
bool crowdsaleClosed = false;

/* data structure to hold information about campaign contributors */

/*  at initialization, setup the owner */
function Crowdsale(
    address ifSuccessfulSendTo,       //眾籌成功后河质,轉(zhuǎn)移目標(biāo)地址
    uint fundingGoalInEthers,         //投資目標(biāo)
    uint durationInMinutes,           //持續(xù)時(shí)間
    uint etherCostOfEachToken,        //每個(gè)的最小投資額度
    token addressOfTokenUsedAsReward  //當(dāng)前受益地址
) {
    beneficiary = ifSuccessfulSendTo;
    fundingGoal = fundingGoalInEthers * 1 ether;
    deadline = now + durationInMinutes * 1 minutes;
    price = etherCostOfEachToken * 1 ether;
    tokenReward = token(addressOfTokenUsedAsReward); //受益地址,數(shù)量合約
}

/* The function without name is the default function that is called whenever anyone sends funds to a contract */
function () payable {//合約默認(rèn)執(zhí)行函數(shù)抹缕,在有人給合約地址發(fā)送資金時(shí)執(zhí)行
    if (crowdsaleClosed) throw;//眾籌關(guān)閉時(shí),拋出異常
    uint amount = msg.value;
    balanceOf[msg.sender] = amount;                 //計(jì)入統(tǒng)計(jì),發(fā)送者發(fā)送的數(shù)量
    amountRaised += amount;                         //累計(jì)收到的金額
    tokenReward.transfer(msg.sender, amount / price);
    FundTransfer(msg.sender, amount, true);         //發(fā)送資金變動(dòng)事件通知
}

// modifier可以方便的驗(yàn)證輸入信息
modifier afterDeadline() { if (now >= deadline) _; }//modifier 修飾符堕仔,函數(shù)啟動(dòng)前執(zhí)行。_表示函數(shù)體占位符毒涧,此處表示afterDeadline修飾的函數(shù)本體贮预。

//檢查是否眾籌成功,達(dá)到目標(biāo)金額
/* checks if the goal or time limit has been reached and ends the campaign */
function checkGoalReached() afterDeadline {
    if (amountRaised >= fundingGoal){            //收集總金額大于目標(biāo)金額
        fundingGoalReached = true;               //修改眾籌金額達(dá)成標(biāo)志為成功
        GoalReached(beneficiary, amountRaised);  //觸發(fā)金額達(dá)到事件
    }
    crowdsaleClosed = true;                     //眾籌標(biāo)識(shí)關(guān)閉
}


//安全撤出,       有afterDeadline的話契讲,只有到眾籌結(jié)束時(shí)間才可以執(zhí)行
function safeWithdrawal() afterDeadline {
    if (!fundingGoalReached) {//如果眾籌眾籌金額未達(dá)成
        uint amount = balanceOf[msg.sender];
        balanceOf[msg.sender] = 0;
        if (amount > 0) {
            if (msg.sender.send(amount)) {//金額退回資金發(fā)送者
                FundTransfer(msg.sender, amount, false);
            } else {
                balanceOf[msg.sender] = amount;//記錄放入balanceOfmap里面
            }
        }
    }

    if (fundingGoalReached && beneficiary == msg.sender) {//眾籌金額達(dá)成仿吞,且發(fā)送者(查詢者)是受益人
        if (beneficiary.send(amountRaised)) {//金額發(fā)送給受益人
            FundTransfer(beneficiary, amountRaised, false);
        } else {
            //If we fail to send the funds to beneficiary, unlock funders balance
            fundingGoalReached = false; ////眾籌金額未達(dá)成
        }
    }
}

}

'''

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捡偏,隨后出現(xiàn)的幾起案子唤冈,更是在濱河造成了極大的恐慌,老刑警劉巖银伟,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件你虹,死亡現(xiàn)場離奇詭異,居然都是意外死亡彤避,警方通過查閱死者的電腦和手機(jī)傅物,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琉预,“玉大人董饰,你說我怎么就攤上這事≡裁祝” “怎么了卒暂?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長娄帖。 經(jīng)常有香客問我也祠,道長,這世上最難降的妖魔是什么近速? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任诈嘿,我火速辦了婚禮,結(jié)果婚禮上数焊,老公的妹妹穿的比我還像新娘永淌。我一直安慰自己,他們只是感情好佩耳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布遂蛀。 她就那樣靜靜地躺著,像睡著了一般干厚。 火紅的嫁衣襯著肌膚如雪李滴。 梳的紋絲不亂的頭發(fā)上螃宙,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音所坯,去河邊找鬼谆扎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芹助,可吹牛的內(nèi)容都是我干的堂湖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼状土,長吁一口氣:“原來是場噩夢啊……” “哼无蜂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒙谓,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤斥季,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后累驮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酣倾,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年谤专,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躁锡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡置侍,死狀恐怖稚铣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情墅垮,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布耕漱,位于F島的核電站算色,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏螟够。R本人自食惡果不足惜灾梦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妓笙。 院中可真熱鬧若河,春花似錦、人聲如沸寞宫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辈赋。三九已至鲫忍,卻和暖如春膏燕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悟民。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工坝辫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人射亏。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓近忙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親智润。 傳聞我的和親對(duì)象是個(gè)殘疾皇子及舍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容