Filecoin最近利好频出,主要包括三件事:灰度公司3月17日正式宣布推出FIL信托产品、Filecoin“双花”闹剧以及SAFT六月公募到期。对此,我们一一展开分析。
一、Filecoin“双花”闹剧
那么这次Filecoin“双花”事件到底是如何?前因后果又是如何?我们先回顾一下事情发生经过。
要完整了解本次“双花”事件,我们要先知道什么是双花攻击。
何为双花攻击?
双花,即双重支付,指的是在数字资产体系里,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况。简而言之,一笔数字资产重复支付,一笔钱被花掉两次或多次,如支付宝钱包(绑定的银行卡)里有100块钱,消费了100元,结果支付宝出了bug,这一笔钱并没有被银行同步,还留在银行卡里,于是我们又能拿着100块钱去继续消费,这就属于双花问题。
双花会导致“通货膨胀”,使加密资产被贬值,一般该情况出现在中心化交易所较多。
以区块链的加密资产为例:2018年5月,某黑客针对 Bitcoin Gold 密币交易所的基础设施发动了多次“双花”攻击,并设法攫取了价值1800万美元的 BTG,直接导致整个属于BTG的市场需要再消化这1800万美元的 BTG,间接会使BTG单价贬值。
为了更好的回顾这次Filecoin,我们需要了解主流的双花攻击类型:51%攻击和竞赛攻击。
51%攻击:攻击者通过控制超过50%的哈希算力,这使他们可以删除或修改交易的顺序。从而实现多次发送交易,该情形在比特币网络上目前难以实现,难以符合经济收益。
例如:我们支付宝的银行卡只有100元,我们对外已经消费了100元,然后通过控制银行主脑来删除该记录(可理解为51%的控制算力修改),然后银行没有我的交易记录,但实际上支付宝已经使用了该100元,所以我的银行卡仍然还有100元,故可以继续消费。
BTG双花攻击就是51%攻击的类型,主要是因为算力规模较小,当时黑客只需支付3400美元皆可顺利完成攻击。
竞赛攻击:使用相同的资金连续广播(相同Nonce值)两个冲突的交易,但只有一项高Gas费的交易得到确认。攻击者的目标是通过验证对他有利的交易来使另一个支付无效,如此以来相同的资金发送到他控制的地址。
例如:A向B转账100元(一般Gas费),同时也使用一样的Nonce值发送另外一笔向B转账100元(高Gas费)。在区块链世界,同一Nonce值只能确认一笔交易,因为第二笔Gas费更高会很顺利转账给B 100元,而第一笔因为第二笔的成果而认定为失败,所以会返还给A 100元,这样以来,A和B各有两个100元。
本次闹剧不存在“双花”攻击
而这次Filecoin“双花”事件就是在混淆概念,这次不可归咎为竞赛攻击,而是一场人为的操作失误。
从结果上看,以Filscan.io浏览器为例,该笔交易只有一笔转账成功。
61200枚FIL转账记录,来源:Filscan.io,2021-3
以官方解释说到,“lotus团队所知问题源自于有两条消息有相同的发送者/收到者详细信息、相同的Nonce但拥有不同的Gas参数——被包含在同一Tipset中。像这样两个类似的消息是非常常见的,比如以改变与消息的Gas费来替代消息就会形成这样两条类似的消息。这样的情况会由Filecoin网络安全、正确地处理,不会导致两次转账:两条消息中的一条会被执行,另一条被忽略”。
官方解释意思是,Filecoin主链之前就已经针对竞赛攻击(相同Nonce)针对做好正确的处理交易,并不会因为高Gas费的替代行为而出现双花现象,所以这块印证了Filscan.io的数据准确。
那么该场闹剧是如何引起?
官方很好归纳:“错误使用API。然而,根据人们对链的检查方式,这会呈现出消息被处理了两次的样子。具体来说,有关交易所使用了一种错误的处理链状态的方式——在tipset的每个块上调用ChainGetBlockMessages,然后在这些消息上调用StateGetReceipt”。
因为交易所调用错了API接口,导致呈现出双花现象(实际并不是),该现象不是Filecoin网络本身的bug,而是方法上错误,同时官方指出应该以ChainGetParentMessages和ChainGetParentReceipts来记账。
同时交易所应以链上的真实数据源记账,假若以某浏览器作为数据源,一旦其恶意修改数据,也会导致“中心化的恶意”双花攻击行为。
总的来说,该场闹剧总的来说是交易所的操作不当,从而使有心之人有意而为之。那么回过头来,掀起了一场无需有的波浪,那么这次谁“双花”了谁?
下篇,我们会继续分析灰度加仓FIL信托事件以及Filecoin SAFT六月公募到期。