Postare
SATO
SATO
详细分析了下ETH的SATO 好消息是我们没这个问题 我看了 SATO 这个 Hook 合约,问题不是简单手续费,也不像典型夹子或项目方直接提走 ETH。 详细分析 核心问题是 Hook 内部维护了两个本应同步的曲线状态: ethCum totalMintedFair 理论上它们应该满足: totalMintedFair = Curve.totalMinted(ethCum) 或者: ethCum = Curve.ethAt(totalMintedFair) 但实际合约里,买入和卖出用了不同坐标。 买入路径: Curve.mintFor(ethCum, ethToCurve) 也就是买入按 ethCum 所在的曲线位置定价。 卖出路径: Curve.burnFor(totalMintedFair, satoFairIn) 也就是卖出按 totalMintedFair 反推出来的位置兑付 ETH。 一旦 ethCum > Curve.ethAt(totalMintedFair),就会出现: 买入按更贵的曲线买, 卖出按更便宜的曲线卖。 这不是普通 0.3% + 0.3% fee。 我复核的一个区块 25,041,403: Hook balance ≈ 1774.9398 ETH feesAccrued ≈ 91.1172 ETH curve reserve ≈ 1683.8226 ETH 但 totalMintedFair 反推出来的卖出侧总负债只有: ≈ 1626.8557 ETH 也就是说当时已经有: ≈ 56.9669 ETH 留在 Hook 里,但卖出函数不会把它当成持有人可赎回价值。 这部分可以定义为: gap = ethCum - Curve.ethAt(totalMintedFair) 这笔钱没有消失,也不是进了某个夹子地址或项目方钱包。 它还在 Hook 合约里。 但因为卖出路径只认 totalMintedFair,不认 ethCum 多出来的 gap,所以这部分 ETH 变成了当前交易路径无法触达的超额储备。 后果是: 后续买入会继续推高 ethCum, 买入价格越来越靠后, 但卖出赎回仍按 totalMintedFair 那条较低曲线算。 gap 越大,买入即卖出的损耗越大。 这会让 SATO 的实际可赎回价值持续被稀释,极端情况下即使 Hook 里还有很多 ETH,持有人也不能按这些 ETH 余额完整卖回。 我看 Token 本身没有发现 owner / pause / blacklist / tax / upgrade 这类权限;minter 已锁到 Hook。 所以这更像是 Hook 曲线会计设计/实现 bug,不是传统 owner 后门。 但问题很严重:已部署 Hook 没看到 upgrade / admin 修复入口,也没看到 withdraw/rescue 可以正常迁移这部分 gap。 如果项目方要止血,至少应该: 1. 暂停或强提示前端买入 2. 显示 buy price 和 immediate sell value 3. 不再展示单一曲线价格 4. 做迁移/补偿/新 Hook 方案 核心一句话: SATO 的问题不是 ETH 被偷走,而是 ETH 被锁在 Hook 里,变成卖出曲线不承认的超额储备。 短版可以这样发: SATO Hook 的问题不是典型夹子,也不像项目方直接提走 ETH。 核心是合约里 ethCum 和 totalMintedFair 两个曲线状态不同步。 买入按 ethCum 定价,卖出按 totalMintedFair 赎回。 当 ethCum > Curve.ethAt(totalMintedFair) 时,用户就是“按高曲线买,按低曲线卖”。 差额 ETH 仍在 Hook 合约里,但卖出路径不承认这部分价值,形成不可赎回 gap。 我复核区块 25,041,403 时 gap ≈ 56.97 ETH。 这不是普通手续费,而是曲线会计错位。

Declinarea responsabilității: conținutul OKX Orbit este furnizat doar în scopuri informative. Aflați mai multe

Răspunsuri

Încă nu există niciun comentariu. Fiți primul care răspunde!