我們使用一個(gè)自增的序號(hào)來(lái)創(chuàng)建新的眾籌項(xiàng)目。在創(chuàng)建項(xiàng)目時(shí),我們需要使用“needer”結(jié)構(gòu)體實(shí)例來(lái)為參數(shù)賦值。你可以根據(jù)眾籌項(xiàng)目ID向該項(xiàng)目捐款(轉(zhuǎn)賬),在這個(gè)過(guò)程中我們必須使用關(guān)鍵字“payable”。在捐贈(zèng)之前,需要檢查捐贈(zèng)者的錢(qián)包余額是否足夠,并校驗(yàn)項(xiàng)目是否已經(jīng)完成,只有在這兩個(gè)條件都成立的情況下,才能將捐款金額直接轉(zhuǎn)賬到當(dāng)前合約中,并記錄捐贈(zèng)者的數(shù)量和身份。
結(jié)束眾籌項(xiàng)目的原因有很多,但在本合約中,我們以捐贈(zèng)完成為例。捐贈(zèng)完成后,合約發(fā)起人(受益者)可以請(qǐng)求將資金直接轉(zhuǎn)到自己的錢(qián)包地址。這也將觸發(fā)一筆交易,因此需要在調(diào)用該方法時(shí)使用關(guān)鍵字“payable”。在該方法中,還會(huì)使用修飾詞“onlyOwner”,表示只有合約發(fā)起者才能執(zhí)行該方法。
雖然眾籌完成后合約沒(méi)有被銷毀,但仍然可以退款。該方法將根據(jù)捐贈(zèng)者的請(qǐng)求將合約上的資金退還給捐贈(zèng)者。
你可以在此處訪問(wèn)該合約的源代碼:https://github.com/Jacky-MYD/Crowd-funding-solidity。