公平机制
合约如何保证每个参与者被公平对待 — 不靠承诺,靠代码。
📐
价格曲线写死在合约
每支球队的价格由 5 段递增曲线决定(basePrice + stepPrice × 段位倍率)。部署后无人能修改,所有人同一条曲线、同一个价格。
// 段位: 0-100 ×1, 100-300 ×3, 300-600 ×8, 600-850 ×18, 850+ ×35
🔒
资金分配比例硬编码
每笔买入的代币去向在合约常量中写死,任何人(包括开发者)都无法更改。
TEAM_REWARD = 40% // 同队持有者分红 CHAMPION = 35% // 冠军奖池 LEGACY = 15% // 该队遗产池 BURN = 10% // 永久销毁
⚖️
淘汰由预言机裁决
球队是否出局不由任何人主观决定,而是由链上预言机合约(IWorldCupResolver)根据真实赛果写入。合约只读取预言机数据,不做人为判断。
oracle.resolveWinner() → 链上裁决 syncEliminatedTeam(teamId) → 任何人可触发
🌐
淘汰触发完全开放
syncEliminatedTeam 是 public 函数,没有权限限制。任何钱包都可以调用,不存在「谁有权淘汰谁」的问题。先到先得,链上可查。
function syncEliminatedTeam(uint8 teamId) external // 无 onlyOwner / onlyAdmin 修饰符
🎲
为什么有 Other 池
世界杯只有 32 强能进决赛圈,但合约一次性上架 48 个名额:前 42 个对应明确的国家队,剩下 6 个槽位(teamId 42–47)共享一个 oracle 索引,叫做「Other 池」。它的作用是兜底 — 比赛是动态的,谁能进决赛圈在合约部署时还不一定,剩下的 6 个槽就是给真黑马、给冷门、给那些「我赌一个没人看好的」的人留的位子。Other 池起始价是标准队的 30%、单 slot 权重也只有 1(标准队是 10),所以它便宜、爆冷收益空间大,但全军覆没的概率也更高。要么早早出局,要么爆冷封神。
KNOWN_TEAMS = 42 // 明牌队 TOTAL_TEAMS = 48 // 含 Other OTHER_ORACLE_INDEX = 42 // 6 个槽共享 OTHER_WEIGHT = 1 // 标准队 = 10
🏆
冠军奖池自动结算
比赛结束后,冠军奖池按持有冠军队份额的权重自动分配。合约计算,无人工干预。
finalChampionTokenPerWeight = championTokenPool × 1e18 / winnerWeight // 按你持有的冠军队份额比例领取
🔥
销毁不可逆
每笔买入的 10% 代币直接转入黑洞地址 0x...dEaD,永久退出流通。链上可验证。
token.safeTransfer(0x000...dEaD, toBurn)
📊
所有数据链上可查
每支球队的已售份额、遗产池余额、冠军池总额、BNB 奖池 — 全部是 public view 函数,任何人随时可以读取验证。
teamInfo(teamId) → sold, shares, legacyPool gameStats() → aliveWeight, championPool, bnbPool
Vault 合约地址:0x08e55BdfBe7b3a0b85EB81f60b5B216c8dc1B5C0