一段对话告诉你Filecoin的始末。
3月19日凌晨,有社区用户反馈Filecoin存在双花风险,币安,OKex等交易所均已关闭充值功能,Cobo Custody也在第一时间暂停了FIL的充值和提币。对于此事,你怎么看?
双花事件,起因是因为有一笔61000FIL(约合460万美元)的交易所入账花费了太长时间。于是Filfox和Filecstar矿工为了加速而发起了一笔RBF交易,该笔RBF交易导致币安账户两次如今,最终入账120000FIL,事后,Filfox和Filestar开发者第一时间联系了币安,并在第一时间通知了Filecoin官方。币安,OKex等交易所均已关闭Filecoin主网代币FIL的充值功能,Cobo Custody也第一时间暂停了充值和提币。
那这件事到底是怎么一回事儿呢?
要想知道怎么一回事儿,首先要知道交易的逻辑。
交易逻辑是什么呢?
交易, 是交易所和中心化钱包等中心化托管机构依据链上的转账行为给用户入账,因此如何高效,准确,及时的解析链上的转账行为非常关键,常见的做法是先获取某个区块内的所有交易ID,然后基于交易ID获取对应的交易内容和交易执行的结果。
那Filecoin的充值和提现是什么样的逻辑?
Filecoin Lotus节点提供了多个API用于链上交易的获取,例如ChainGetBlockMessages可以获取指定区块内的所有交易内容,StateGetReceipt可以获取指定交易ID对应的自信结果,此次攻击的交易所采用的就是这两个API来进行链上转账行为的解析,并基于此为用户入账。
不是很明白,能讲清楚一点吗?
我们假设攻击者首先发送了 TX1,对应的交易ID 为 TXID1,随后攻击者对 TX1 进行了 RBF,生成 TX2,对应的交易ID 为 TXID2,最终 TX2 上链成功。此时通过 StateGetReceipt 对 TXID1 和 TXID2 分别查询,都能得到执行正确的结果。
在发现攻击行为后,Filecoin官方怎么做的?
发生攻击行为后,Filecoin官方开发人员对API进行了补充说明,明确了StateFetReceipt的返回逻辑,并将在V1版本后废弃此API。早在Cobo Custod技术团队对接Filecoin的过程中就已经发现了上述问题,因此没有采用ChainGetBlockMessages和StateGetReceipt来获取脸上的转账行为,而是采用?ChainGetParentMessages 和 ChainGetParentReceipts 来获取已经成功上链的交易,从而从根本上避免了被双花充值的风险,因此未受此次双花充值攻击的影响。
明白了!
在使用 ChainGetParentMessages 和 ChainGetParentReceipts 的过程中,Cobo Custody 技术团队发现 lotus 节点的一些返回值也并不是很符合常规逻辑思维,例如对于空块的处理是有一些问题的。Cobo Custody 技术团队对此做了妥善的安全处理,在此也提示其他中心化托管机构需要仔细检查相关的对接代码,避免其他的双花充值攻击行为。
所以双花(Double-spending)就是使用上一次交易的代币,再次进行交易,进而导致产生了虚假交易是吧。
没错,2018年比特币黄金BTG就曾受到一名矿工的恶意宫,该矿工临时控制了BTG区块链,在想交易所充值后迅速提币,再逆转区块,成功实施双花攻击。此次攻击损失超过388200个BTG,价值高达1860万美元,也是区块链史上著名的双花攻击之一。
这会不会影响到币价?
这次影响,对于币价来讲,影响肯定会有一点的。但Filecoin从上线至今,遇到过的问题都被迎刃而解,技术团队也在不断改进。从某种程度上来讲,IPFS作为互联网从web2.0进阶至web3.0是一个历史进程,其热度不可言喻,作为前沿,无论是IPFS还是它的激励层Filecoin遇到的问题多多少少都会有一点,但最终都会被攻克,这便是一个成长到成熟的一个过程。