据Filfox和FileStar的Filecoin矿工称,币安周三处理了一笔价值数百万美元的Filecoin存款。这并不是一个真实的链上双花交易,但由于filecoin的远程调用(RPC)代码的一个严重错误,币安在一次存款后两次将钱存入矿工的filecoin账户。
当相同的资金在区块链上交易两次时,就会发生“双花交易”。比特币的工作量证明算法的设计就是为了让这种情况几乎不可能发生。但似乎Filecoin的RPC代码,一个由协议实验室构建的分布式存储区块链项目,有一个缺陷,用户可以骗过交易所接受存款两次。
(搜搜币注:「双花」(double spending),即双重支付,指的是在数字货币系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况。)
RPC通道是交易所验证存款合法性的信息通道。他们不直接核实。相反,他们通过该频道发送消息说道,“这笔交易是否有进行存款”,然后从从FileCoin的软件得到回应说,“是或不是”,比特币开发者达斯汀·德特默(Dustin Dettmer)通过信息和CoinDesk解释。
然后,他补充说,Filecoin开发人员提供给交易所的验证存款的过程中有一个严重缺陷——允许用户重复存入相同的代币。
Dettmer说:“这让黑客可以写一张支票,但可以把它重新存入任意次数,就像孩子们在游乐场里用一枚硬币把绳子绑在25美分硬币上永远玩一样” “但这里后果更加严重,无限量的真实资金可能会被盗走。”
这一次的不是真正的「链上双花」,因为该错误并未导致真正的双重交易。
Filecoin 的RBF漏洞
周三,Filfox和FileStar矿工偶然发现了该漏洞。由于给交易所的6.1万笔FIL交易(价值约460万美元)耗时太长,该团队用费用替代法(RBF)交易提高了费用,以加快交易速度。
当用户广播新交易以替换较旧的未确认交易并向其附加更高的采矿费时,便发生了逐费替换交易,目的是加快其确认速度。
但是,该RBF交易导致存款两次出现在其Binance帐户中,有效地将61,000 FIL变成了120,000 FIL。问题是第二个61k FIL从未真正进入Binance的钱包,Binance被诱骗两次记入存款,原因是Filecoin的RPC代码存在漏洞。该团队立即向Binance和协议实验室发出了警报。
从本质上讲,该错误意味着Binance看到了这两笔交易,忽略了它们之间的冲突并接受了这两笔交易(对于收费用替代法的交易,通常第二种收费更高的交易被认为是有效的,而第一个交易被拒绝)。
该团队说,每个与Filecoin交易对进行交易的交易所都使用相同的“ StateGetReceipt” RPC代码来处理存款,所以理论上这个漏洞在任何交易所都是能被利用的。
“协议实验室建议交换从RPC StateGetReceipt获取消息收据,这有一个严重的错误。当有两个消息具有相同的发件人和相同的链上随机数时(这意味着双花),StateGetReceipt会为两个消息返回相同的结果,一个Filecoin开发人员在他们的通信中告诉挖矿公司。
矿工表示,Filecoin在币安(Binance)、火币(Huobi)和其他银行的充值已被暂停。CoinDesk已经联系了交易所Binance、Huobi和OKEx来验证这些说法,但尚未收到回复。
Filecoin开发人员已经打开了一个GitHub问题来修复这个bug。在与CoinDesk的通信中,他们否认该缺陷是由RPC错误造成的,而是声称它源于Binance 的一个错误。
Filecoin 官方推特回应道:Lotus 团队从交易所收到了一份报告,该报告涉及不正确地使用 Lotus API 来判断 Filecoin 网络中的传输 / 存款。团队进行了调查,发现没有网络问题或 API 错误。他们正在与相关交易所进行合作,以确保正确使用这些 API。
今日凌晨,协议实验室官方表示,经 Filecoin 开发团队确认,Filecoin 没有双花问题。根据链上状态确认,用户反馈存在双花问题的第二条交易显示「N/A」,并未成功。可能是由于飞狐浏览器 Filfox 前端造成了误会,使得某些用户认为在交易所充值 Filecoin 过程中有双花可能。
当日,FIL因“双花事件”影响下跌超5%。