NervosFans 志願者合約的編寫
夥伴們,今天繼續分享智能合約,主題是關於Nervos Fans 志願者合約的撰寫。
我們以pragma solidity ^0.4.18,即solidity的0.4.18版本編寫。
contract NERVOSfANSvolunteer{//這是一個關於NERVOSvolunteer nervos志願者的合約。
unit volunteerTIME;//定義一個名為volunteerTIME的變數,用於記錄志願者工作時間。
uint public totalDonation;//定義一個名為totalDonation的變數,用於記錄志願者捐贈
這個合約統計志願者的貢獻和分享收益。
address owner; //聲明管理員, address是solidity基本類型之一,用於存儲錢包或合約的地址。
event volunteerTIME( uint newVALUE);//聲明一個volunteerTIME的事件類型,帶有一個256位整數的參數newVALUE。這樣每當volunteerTIME貢獻時間增加時,都自動記錄新增的貢獻。
event Donation(address from, uint value);//聲明一個Donation的事件類型,記錄每個代碼貢獻者的錢包地址,和代碼。
functionNERVOSFANSvolunteer() public {//函數聲明以function開始。 和合約名字NERVOSFANSvolunteer相同的函數,叫合約的構造函數,只有在創建合約時運行一次。public修飾符表示對外可見,所有人都可以調用查看志願者的貢獻,公開透明。
volunteerTIME=60;//定義變數volunteerTIME 社群志願者的貢獻時間,計算單位按一個小時60分種為一個單位。
owner = msg.sender;//msg是系統傳入的一個全局參數,包含了當前調用者的地址(.sender)、傳入的數量、剩餘的燃料量等信息。合約是誰創建的,owner中會記錄創建者記錄的以太坊地址。
function longTIME (uint TIME) public viewreturns (bool) {//function來定義函數 longTIME,longTIME函數接受一個256無符號整數類型的參數 TIME。public修飾詞表明這個函數是公開的,所有人都可以調用查看志願者貢獻了多少時間服務。view修飾詞表示函數會讀取合約變數,但不會修改任何數字狀態等。returns(bool)表示函數判斷合格返回true,判斷不合格返回false。
returnTIME >=volunteerTIME;}//TIME數值大於等於volunteerTIME數值,調用函數longTIME,就會返回true,如果小於,就返回false。
function setvolunteerTIME(uint TIME)public {//function來定義函數 setvolunteerTIME,setvolunteerTIME函數接受一個256無符號整數類型的參數 TIME。public修飾詞表明這個函數是公開的,所有人都可以調用查看,不同的是這裡沒有view,就是因為這個函數會修改合約數值等。
if (msg.sender ==owner && TIME <= 1440){ //msg是系統傳入的全局參數,不用說明,包含了當前調用者的地址(.sender)、傳入的以太坊數量(.value)、剩餘的燃料數量等。合約是誰創建的,owner中會記錄創建者記錄的以太坊地址。如果貢獻時間每天小於等於24小時就是1440分種,就執行後面內容,大於就執行。
volunteerTIME=TIME;} //設置志願者最小工作時間。每天貢獻時間不超過24小時,即每天不超過1440分種。
function donate () public payable { //用function定義了函數donate,public表明這個函數是公開的,所有人都可以調用查看,payable修飾詞表明這個函數可以接受以太坊轉賬。
if (msg.value> 0 ){//msg是系統傳入的全局參數,不用說明,value的數值大於0,就執行後面括弧里的代碼,小於等於0,不執行。
totalDonation +=msg.value; //執行的內容是,如果value數值大於零,totalDonation增加value的數值。小於等於零,不考慮不改變。
donation(msg.sender, msg.value); //如果value數值大於零,還有觸發donation事件,記錄捐助者的錢包地址(.sender),和捐助的金額(.value).
群友們,今晚分享就到這裡了。希望大家都能看懂一些代碼,共同建設強大nervosfans社區。謝謝
(待續。。。)
推薦閱讀:
※Sometimes what you see is not the reality.
※弘揚「五四」精神,青年比武展風采
※優秀志願者代表發言稿
※李晨,參加過哪些公益活動?