链上捕鱼
主网内测 · 未审计 EN 内测

§ TECH · APTOS MOVE · EXEC CAP 9,200 GAS

技术原理

把一整场鱼群的碰撞搜索塞进一笔交易的执行上限里,再让结算严格按游戏时间排队。下面是它怎么做到的。

§ 01 · 一发子弹的一生

01开火交易

只带方向与注额。限速按每人长期每秒 1 发,超出的往后挪,最多 2 秒。

02链上搜索

沿弹道(反弹)找全场最早碰到的鱼与时刻;碰不到任何鱼就不扣注。

03入时间轮

按命中时刻放进环形时间轮,锁定 100 倍注额的最大派彩,收一笔可退的押金。

04顺带结算

之后的每笔开火先按到期顺序结算别人的子弹;没人开火时由清尾结算。

05随机数 · 派彩

结算时才抽链上随机数;打死了派彩记房间余额,押金退回付款人。

§ 02FISH FIELD

鱼群:谁都能复算

场地 4800 × 2700 px,每 50 ms 一个槽位。鱼种由槽位决定,路径由(房间种子, 鱼编号)经 splitmix64 选出,走多点 Catmull-Rom 路径表(每房间一份,存在链上)。同时在场 约 225 条。客户端用同一套整数公式逐位复算,和合约一致。

§ 03SEARCH

碰撞搜索:保守推进

离得远就按"鱼最快能游多远"的上界大步跳,近了才逐毫秒算;按鱼种分段枚举,先搜 600 ms、再 1,500 ms、最后全程,找到命中就以它为上界收尾。

§ 04WHY ON-CHAIN

为什么非要在链上搜

客户端找碰撞、链上验证,看似更便宜,但客户端就能跳过挡路的鱼只挑大鱼,方差放大约 95 倍。搜索放到链上,"选鱼"这个自由度就从协议里消失了。

§ 05KEEPER

清尾 keeper

没人开火时,到期的子弹由 sweep 结算。任何人都能调用,keeper 只负责"有人推一下",不提供信任:结算规则与谁来调无关。