Nervos Fans

NervosFans 志愿者合约的编写

2018-05-21  本文已影响13人  526ba0512193

伙伴们,今天继续分享智能合约,主题是关于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的事件类型,记录每个代码贡献者的钱包地址,和代码。

function NERVOSFANSvolunteer() 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社区。谢谢

(待续。。。)

上一篇 下一篇

猜你喜欢

热点阅读