竞猜活动区块链方案探索

简介:

竞猜活动区块链方案探索

合约实现了报名,退出,参加人数控制,竞猜次数控制,公布答案,获奖名单等等功能

pragma solidity ^0.4.20;// Author netkiller<netkiller@msn.com>// Home http://www.netkiller.cncontract Guess {

    address public owner;
    
    string name;        //活动名称
    bool start = false;	//合约锁
    uint number;			//参赛人数统计
    uint public quota;	//名额限定
    mapping (address => string) public registrantsPaid; //参加活动 
    uint maxCounter = 3;	//最大竞猜次数
    mapping (address  => uint) counter; //竞猜次数统计

    string public question; //竞猜问题 
    mapping (uint  => string) public options; //选项 
    
    // 答案结构
    struct Answer {
        address player;
        uint answer;
    }
    
    mapping (uint  => Answer) public answer; //答案 
    uint answerIndex = 0;
    
    //公布最终答案
    uint public expose;
    
    //获奖名单
    mapping (address  => uint) winner;

    function Guess(string _name, uint _quota) public {
        name = _name;
        quota = _quota;
        number = 0;
	}
	
	modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
	
    // 获取活动名称
    function getName() public view returns(string){
        return name;
    }
    function setStatus(bool _start) onlyOwner public {
        start = _start;
    }
    function setQuestion(string _question) public {
        question = _question;
    }
    // 增加人物属性,例如肤色,眼睛,头发等等
    function putOptions(uint _key, string _value) onlyOwner public{
        if(start == false){
        	options[_key] = _value;
        }
    }
    function join(string _password) onlyOwner public returns (bool success) {
    		require(start == ture);
        if (number >= quota) { return false; }
        registrantsPaid[msg.sender] = _password;
        number++;
    
        return true;
      }
      function changeQuota(uint _quota) onlyOwner public {
        quota = _quota;
      }
    function quit() onlyOwner public {
    		require(start == false);
        //require (registrantsPaid[msg.sender] == _password);
        delete registrantsPaid[msg.sender];
        number--;
    }
    function setGuess(uint _answer) public{
        require(start == ture);
        if(maxCounter > counter[msg.sender]){
            counter[msg.sender]++;
            answer[answerIndex] = Answer(msg.sender, _answer);
            answerIndex++;
        }
        
    }
    //揭秘答案 
    function setExpose(uint _expose) onlyOwner public {
	    require(start == ture);
        expose = _expose;  
        
        for(uint i=0;i<answerIndex;i++)
        {
            Answer memory ans = answer[i];
            if(ans.answer == expose){
                winner[ans.player] = ans.answer;
            }
        }
    }
	
	// 数量
	function getCount() public view returns(uint){
	    return number;
	}}



原文发布时间为:2018-03-09
本文作者:netkiller
本文来源:腾讯云 云+社区,如需转载请联系原作者。

目录
相关文章
|
6月前
|
安全 区块链
区块链农场游戏系统开发运营版/玩法详情/规则方案/案例设计/项目源码
Developing a blockchain farm game system is an interesting and challenging task. Here is a design solution that can help you get started developing such a system
|
4月前
|
存储 安全 区块链
SWAP交易所系统开发|区块链交易所系统开发方案
尽管Web3.0的前景仍然不确定,但像尤派数字传媒这样的先行者正在积极尝试元宇宙,并加速转型的步伐。在面对即将到来的新一代互联网时,尤派数字传媒既不会过于骄傲自大,也不会过于谨小慎微。唯有在当前基础上稳步推进,夯实基础,才能在不确定的环境中获得最大的确定性。
|
6月前
|
安全 算法 区块链
区块链系统开发|(成熟技术)/区块链系统开发介绍方案
区块链架构自下而上包括数据层、网络层、共识层、激励层、契约层和应用层。数据层涉及底层区块和基础数据;网络层实现节点间的分布式通信;共识层确保去中心化网络中节点对区块有效性的共识;激励层提供参与区块链安全验证的节点奖励;契约层支持智能合约,实现交易模式的编程;应用层则将区块链技术应用于现实生活场景。激励层、契约层和应用层并非所有区块链应用的必要组成部分。
|
6月前
|
供应链 区块链
区块链DAPP质押合约代币系统开发|模式方案
智能合约是一种数字化的合约,它将合约内容写入区块链中,保证了合约的公开透明
|
6月前
|
安全 中间件 测试技术
|
6月前
|
安全 数据挖掘 区块链
区块链商城源码搭建开发技术方案丨成熟讲解
区块链积分商城系统开发技术丨成熟方案
227 0
|
6月前
|
算法 区块链 Python
区块链代币DAPP逻辑系统开发技术方案丨单边上扬模式开发逻辑
区块链代币DAPP逻辑系统开发技术方案丨单边上扬模式开发逻辑
|
存储 算法 安全
数字货币区块链合约系统开发指南与方案
区块链的工作原理是通过共识算法来解决网络中的节点之间的信任问题
|
安全 区块链 数据安全/隐私保护
区块链Swap博饼交易所兑换系统开发项目方案详情
Web3则是一种更高级的互联网技术,它基于区块链技术,并通过去中心化
|
开发框架 区块链 数据安全/隐私保护
哈希竞猜游戏系统开发规则详细(区块链游戏dapp开发)丨哈希竞猜游戏源码方案
哈希竞猜游戏dapp系统开发,是一种基于区块链技术的去中心化应用。它具有公开、透明、不可篡改的特点。该系统的开发采用了基于以太坊智能合约的DAPP开发框架,使用了Solidity语言进行合约编写。