HOW IT WORKS · 机制原理

★ 完全链上 · 无需信任 · 全程透明 ★

一张票,一块钱
满员就开,赢家通吃。

没有庄家、没有黑箱。每一次买入、冻结、开奖与领奖都写在链上,任何人都能用公开数据复算中奖编号。

01

挑桌入座 · PICK A TABLE

在大厅选一张桌台。每张桌有固定面额、固定份额上限与倒计时;房间页会写明买入服务费与领奖奖项税。

02

下注买票 · BUY SHARES

按整数份买入,每份对应链上独立编号。买得越多,中奖机会越大;支付毛额中扣除平台服务费后的部分进入本局奖池。

03

池满或到时 · FULL OR TIMEOUT

份额售罄后回合冻结并结算;若倒计时结束仍未售罄,下一笔链上交易会按「超时」模式结算,末位买入者获得未售份额的中奖机会。

04

链上摇号 · ON-CHAIN DRAW

合约从已售份额中抽取 5 个锚点,将买家地址与买入区块混入 ledgerSeed,再与游戏 ID、回合号得出 finalSeed,对售出份数或份额上限取模得到中奖编号。

05

领奖入账 · CLAIM PRIZE

中奖者在房间页发起 claim,税后净额转入钱包。每局结算事件公开,可在区块浏览器核对编号与金额。

RNG 公式 · 链上可复算

开奖时合约执行下列流程(示意代码;以部署版本为准):

// 简化示意 — 以链上 DollarLotteryGame 为准
bytes32 ledgerSeed = keccak256(abi.encodePacked(c0..c4));
// 每段 ci 由 5 个锚点份额的 buyer + buyBlock 混合得到

bytes32 finalSeed = keccak256(abi.encodePacked(
  ledgerSeed,
  uint256(uint160(game)),  // entropy id
  roundId
));

// 售罄开奖:winIdx = uint256(finalSeed) % sold + 1
// 超时开奖:winIdx = uint256(finalSeed) % shareCap + 1
// 若超时且 winIdx > sold,奖池归末位买入者

howItWorks.rngNote

奖池如何分配 · FEE BREAKDOWN

买入支付

进池为主

扣除房间配置的买入服务费后,其余计入本局奖池。

平台服务费

按房间

各桌 buyFeeBps 不同,大厅卡片与房间页均有说明。

领奖奖项税

按房间

claim 时从应得奖金扣 prizeTaxBps;为 0 则全额到账。

FAQ

如果一直没人买满怎么办?

倒计时结束后任意用户可推进超时结算;未售份额的中奖机会归末位买入者,不会静默吞没本金。

我必须等人工开奖吗?

不需要。满员或超时条件满足后,链上自动冻结并结算;中奖者自行 claim 到账。

能不能核对谁中奖?

可以。每局有 RoundSettled 等事件,含中奖编号、得主地址与奖池金额,也可用房间页算法说明复算。

随机数会被前置交易操纵吗?

开奖种子在份额账本锁定后生成,并混入共识层随机源;无法在买入前预测最终编号。

费用为什么每个房间不一样?

工厂部署时可按桌台配置买入服务费与奖项税;以该房间合约读数为准。

支持哪些资产?

取决于链与房间配置,常见为 USDT / USDC 或链原生报价币;连接钱包后在桌台卡片上查看符号。