基础原理
所有游戏结果均通过密码学可验证随机数生成(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)结果生成
生成流程

验证公式
技术特性
要素
说明
输入源
三方种子(服务器种子+客户端种子+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)结果生成
生成流程

验证公式
分布保障
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
可验证性保障体系
三重验证机制
预提交验证
// 游戏开始前提交种子承诺 function commitSeed(bytes32 hashedServerSeed) external { require(!seedRevealed[msg.sender], "Already committed"); commitments[msg.sender] = hashedServerSeed; }
结果上链
// 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" }
公开验证工具
$ pofg-verify --game-id 0x5a38d4b \ --type float \ --server-seed "2b8f1c7e0a9d6543" \ --client-seed "player_choice_2023" \ --nonce 142 > 验证通过: 输出值7.2匹配链上记录
抗操纵特性
种子控制权分离
服务器种子:由 POFG 智能合约保管(承诺-揭示模式)
客户端种子:玩家在游戏开始前提交
Nonce:每局游戏自动递增
时间锁机制
// 服务器种子揭示时间锁 function revealSeed(string memory seed) external { require(block.timestamp > gameEndTime + 1 hours, "Reveal locked"); require(keccak256(abi.encodePacked(seed)) == commitments[msg.sender], "Invalid seed"); // 触发自动验证... }
事后审计接口
// 批量验证API POST /audit-verify { "game_ids": ["0x8a3b...f21c", "0x5b38...c7"], "auditor_signature": "0x1234..." }
此机制通过密码学绑定+去中心化验证+强制公开三重保障,确保任何单方(包括POFG系统)都无法操纵结果,玩家可使用开源工具独立验证每局游戏的公平性。
Last updated