Yieldly 遗留质押托管合约未核验付款即释放 ALGO
在 92 秒内,五笔付款从 Yieldly 遗留质押金库转出约 390,000 ALGO,而持币者早在三年前就被要求提走资金。该托管程序似乎不读取收款方、金额或资产,便批准任何付款。该账户目前余额为 0.20107 ALGO。

2026 年 10 月 15 日早晨,五笔付款在 92 秒内从一个 Yieldly 质押合约账户转出,合计约 390,377 ALGO,而项目方早在三年前就通知用户清空该金库。第一笔约 14,3741 ALGO,最后一笔约 174,763 ALGO。合约之所以付款,是因为其自身账本被记入了一笔从未到账的存款,而且是以一种它从未持有的代币记入的。
该账户是 Yieldly 遗留质押 dapp 背后的托管合约,持币者曾把代币放在这里赚取奖励。项目方于 2023 年 4 月通知用户取回质押,同年 7 月再次提醒。金库中剩下的资产是 ALGO,它们留在一个已公开的程序之后,而该程序似乎既不读取收款方,也不读取其所签署付款的金额。
一枚在花出前八秒才铸造的代币
收款账户于当天早晨开设,并注入了 12 ALGO。该账户铸造了一种名为 FUEL 的代币,没有小数位,也没有 manager、freeze、clawback 或 reserve 角色。创建者将全部供应量转给自己的地址,而这笔转账并未改变任何余额。
八秒后,托管合约向同一账户支付了 3,239,706,903.7436723 YLDY,约合 32.44 亿 枚代币,占 1005 亿 供应量的三分之一。该质押程序似乎为每个账户维护一个余额,并在转账时直接加上金额,而不比对资产 id。FUEL 以整数单位计数,YLDY 以百万分之一为单位,于是一枚代币的原始计数被当成了另一枚代币的计数。
记入该余额并不需要向托管合约发送任何东西。存款路径前的检查程序对任何平仓调用都返回成功,且不读取任何参数,因此受保护的路径可以被绕过。随后存款分支直接记入一笔付款的金额,而不确认资金是否到达持有资金的账户。
提款也呈现同样的模式。五笔提款中,每一笔之前约八秒,同一账户都向自己支付了完全相同的金额,从约 14,3746 ALGO 到约 174,763 ALGO,且在这些分组中没有任何地址的余额发生变化。这些存款只是合约自身记录中的条目。转出的 ALGO 是合约自身的余额,而非发送方存入的任何资金。
一个对付款一无所知的金库
付款账户是一个逻辑签名,即一段没有私钥可被盗取的小程序。Yieldly 的部署方于 2021 年 6 月 5 日用 2 ALGO 开设了它。其公开的程序似乎在三个条件下批准付款:交易组必须包含 2 至 6 笔交易,且第一笔必须是对某个特定 Yieldly 应用的调用;前两笔均不得设置 rekey。它似乎不读取其所签署付款的收款方、金额或资产。
在这些条件之内,它可以签署任意规模、任意资产、发往任意地址的付款。照此解读,似乎无需攻破任何东西,也无需寻找任何密钥。该程序似乎对谁发送付款毫不过问,因此外部人士和前用户面对的是同样的条款。托管账户页面7现在显示 0.201078 ALGO,仅略高于维持账户开放的 0.2 ALGO 最低余额。
标题中的 40 万是后来的一笔付款
在 r/AlgorandOfficial 上引发讨论的帖子9称该质押合约被“黑客攻击,损失 4010 万 Algo”,并指向 Halborn 2021 年的审计。回复分成两派,一派称之为黑客攻击,另一派则归咎于运营方。标题背后的数字 404,751.14087711 ALGO,是收款钱包在最后一笔提款四分钟后发出的一笔转账,且金额大于金库释放的数额。
它是金库资金加上记入代币的变现所得。该账户向一个合约账户卖出 1,898,163,508.44209812 YLDY,换得 8,435.73485413 ALGO;又向一个 Tinyman 池卖出 1,341,543,395.30157314 YLDY,换得 5,934.49038915 ALGO。两笔卖出共得 14,370.22524316 ALGO。将其与金库释放的金额相加,总和比转出的 404,751.14087717 少几个 ALGO,这一差额在记录中无法弥合。
YLDY 本身如今价值甚微:截至 10 月 19 日,市值约 2,878 美元,单日交易额仅 13.44 美元。
后续转账在数小时内再次移动。资金经过另外两个普通账户,其中最后一个于 10 月 19 日转出 220,000 ALGO。这三个账户均无法对应到具体身份。
审计测试的是另一套代码
Halborn 的审计工作从 2021 年 5 月 8 日持续到 19 日,覆盖的是 Yieldly 的彩票合约。报告18称,受时间和资源限制,仅测试了最关键的方面。据报告,其五项发现之一 HAL-02(评级为低)描述的正是同一处边界上,交易未经过代理,而托管合约却预期它们会经过代理的情况。
实际付款的程序是在此后才上线的。两个质押应用的最后更新日期均为 2021 年 7 月 2 日,即审计结束之后,此后均未改动。以那次审计作为质押金库的安全保证,等于把信任寄托在 10 月并未运行的代码上。
关闭通知发出三年之后
Yieldly 于 2023 年 4 月通知持币者提款,7 月再次提醒。4 月 20 日的帖子19写道:“在 dapp 于 30 天内下线之前,请从 Yieldly 质押中取回您的质押,20”并将 5 月底定为停用期限。7 月 25 日的公告21要求用户“在 7 月 26 日美国东部时间晚上 10 点之前从 Yieldly 质押中取回资金22”。这五笔付款发生在该截止日期之后 1,177 天。
Yieldly 对这些转账未作任何表态。其公告频道23自 2024 年 3 月起未再发帖,Medium 页面24自 2023 年 4 月起停更,X 账户25上最新的内容也不晚于 2025 年 1 月。
dapp 已不复存在,合约却留了下来。托管合约在 2025 年仍在转出 YLDY,包括 8 月 4 日一笔 112,376,408.272 枚代币的转账,说明该程序仍在响应某些人。它同时持有的还有 ALGO,而转走的正是这些 ALGO。程序所指的其他应用托管账户如今已空空如也。
资料来源
本文已核查 17 个数字。 其中 6 项直接从链上读取。查看全部核查