Fomo3D

pragma solidity ^0.6.2;

contract Fomo3D{
 
    mapping(address => uint256) public keyMap; // 每个用户持有key的数量
    mapping(address => bool) public turnOutMap;   // 记录用户是否领取奖励
    uint256 public totalKey;    // key的总数量
    uint256 public totalAbonus; // 总分红
    uint256 public endAbonus;   // 游戏结束给最后一个用户的奖励
    uint256 public intervalTime = 1 days;
    uint256 public endTime;     // 游戏结束时间
    uint256 public keyPrice = 1 ether;    // 单个key的价格
    address payable public winner;  // 胜利者
    // 购买key
    function buyKey() public payable{
        require(now < endTime,"game over"); // 游戏还未结束
        uint256 num = getNum(msg.value);    // 购买key的数量
        keyMap[msg.sender] += num;
        totalKey += num;
        totalAbonus += msg.value / 2;   // 50%资产用来给参与用户分红
        endAbonus += msg.value / 2;     // 50%资产用来奖励给最后一个参与者
        endTime = now + intervalTime;   // 只要有人参与就延长游戏结束时间
        winner = msg.sender;    // 胜利者一定是最后一个参与者
        keyPrice += 1 finney;
    }
    // 游戏获胜者领取奖励
    function turnOutBywinner() public{
        require(now >= endTime,"game is not over");
        winner.transfer(endAbonus);
        winner = address(0x0);
    }
    // 游戏结束,用户根据key领取分红
    function turnOutByUser() public{
        require(turnOutMap[msg.sender] == false,"Your have already received the reward");
        uint256 value = keyMap[msg.sender] * totalAbonus / totalKey; // 计算用户获取奖励
        msg.sender.transfer(value);     // 发放奖励
        turnOutMap[msg.sender] = true;   // 记录该用户已经领取奖励
    }
    // 根据转入ETH金额计算可以购买key的数量
    function getNum(uint256 _value) public view returns(uint256){
        if(_value == keyPrice){
            return 1;
        }else if(_value == 2 * keyPrice){
            return 2;
        }else if(_value == 5 * keyPrice){
            return 5;
        }else if(_value == 10 * keyPrice){
            return 10;
        }else{
            revert("eth amount is error");
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,188评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 13,585评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 7,713评论 1 1
  • 在妖界我有个名头叫胡百晓,无论是何事,只要找到胡百晓即可有解决的办法。因为是只狐狸大家以讹传讹叫我“倾城百晓”,...
    猫九0110阅读 8,581评论 7 3