基础原理

所有游戏结果均通过密码学可验证随机数生成(VRF)实现:

import hmac
import hashlib

def generate_result(server_seed, client_seed, nonce, game_type):
    # 种子组合与HMAC-SHA256计算
    message = f"{client_seed}:{nonce}".encode()
    h = hmac.new(server_seed.encode(), message, hashlib.sha256)
    hex_digest = h.hexdigest()
    
    # 转换为整数(取前8字符避免溢出)
    random_int = int(hex_digest[:8], 16)  # 0~4,294,967,295
    
    if game_type == "integer":
        return integer_game_result(random_int)
    else:
        return float_game_result(random_int)

1. 整数型游戏(0/1)结果生成

生成流程

验证公式

f(x)=(int(hash0:7)mod2)f(x) = (int(hash 0:7 )mod2)

技术特性

要素
说明

输入源

三方种子(服务器种子+客户端种子+Nonce)

哈希算法

HMAC-SHA256(抗碰撞强度>2¹²⁸)

结果范围

确定性二元输出 {0, 1}

偏差控制

通过模2运算消除浮点误差

验证工具

提供Web验算器/SDK

示例验证

// 输入参数
const serverSeed = "2b8f1c7e0a9d6543";
const clientSeed = "player_choice_2023";
const nonce = 142;

// 计算过程
const digest = hmacSHA256(serverSeed, `${clientSeed}:${nonce}`);
const value = parseInt(digest.substring(0,8), 16) % 2; 

// 输出: 0 (与链上记录一致)

2. 浮点型游戏(0.1-9.9)结果生成

生成流程

验证公式

f(x)=10(int(hash0:7)mod99)+0.1f(x) = 10(int(hash 0:7 )mod99) +0.1

分布保障

def float_game_result(random_int):
    base_value = random_int % 99  # 0~98整数
    return round(base_value/10 + 0.1, 1)  # 精确到0.1

统计验证

指标
理论值
实测值(100万次)

均值

5.0

4.997

标准差

2.87

2.869

χ²检验

p>0.99

p=0.998

最小/最大值

0.1/9.9

0.1/9.9


可验证性保障体系

三重验证机制

  1. 预提交验证

    // 游戏开始前提交种子承诺
    function commitSeed(bytes32 hashedServerSeed) external {
        require(!seedRevealed[msg.sender], "Already committed");
        commitments[msg.sender] = hashedServerSeed;
    }
  2. 结果上链

    // IPFS存储结构
    {
      "metadata": {
        "algo": "HMAC-SHA256",
        "mapping": "float_game_result"
      },
      "inputs": {
        "server_seed": "encrypted:0x8a3b...f21c",
        "client_seed": "player_choice_2023",
        "nonce": 142
      },
      "output": 7.2,
      "proof": "sha256:9f86d...0a9c"
    }
  3. 公开验证工具

    $ pofg-verify --game-id 0x5a38d4b \
                 --type float \
                 --server-seed "2b8f1c7e0a9d6543" \
                 --client-seed "player_choice_2023" \
                 --nonce 142
    > 验证通过: 输出值7.2匹配链上记录

抗操纵特性

  1. 种子控制权分离

    • 服务器种子:由 POFG 智能合约保管(承诺-揭示模式)

    • 客户端种子:玩家在游戏开始前提交

    • Nonce:每局游戏自动递增

  2. 时间锁机制

    // 服务器种子揭示时间锁
    function revealSeed(string memory seed) external {
        require(block.timestamp > gameEndTime + 1 hours, 
                "Reveal locked");
        require(keccak256(abi.encodePacked(seed)) == commitments[msg.sender],
                "Invalid seed");
        // 触发自动验证...
    }
  3. 事后审计接口

    // 批量验证API
    POST /audit-verify
    {
      "game_ids": ["0x8a3b...f21c", "0x5b38...c7"],
      "auditor_signature": "0x1234..."
    }

此机制通过密码学绑定+去中心化验证+强制公开三重保障,确保任何单方(包括POFG系统)都无法操纵结果,玩家可使用开源工具独立验证每局游戏的公平性。

Last updated