当前版本
开发网 go--filecoin--0.5.7(alphanet)

开发网运行状况
0.5 版本的 user-devnet 自上线以来跌宕起伏,十分“精彩”

0.5.6版本上线以来,连续遭受与重量计算方式有关的攻击多达10余次,采用的重量攻击方式主要有两种:

#3502: long-range fork attack - 长程分叉攻击:此攻击手法利用0.5.6及以前版本中重量计算方式的缺陷,通过分叉增加个人分叉链的重量进行攻击,此攻击手法在重量算法改进后将不再有效;

#3523: 同一高度重复出块攻击:此攻击手法利用共识惩罚机制的不完善进行攻击。在惩罚机制中,如果一个矿工在同一高度出多余一个区块,将被判处死刑,即没收全部抵押,取消算力,终止此矿工的永久挖矿资格。在0.5的当前版本中,此惩罚机制还未实现;

#3502的攻击具有重量上限:总重量不能突破高度的 110 倍,但利用 #3523 的缺陷进行攻击完全没有上限,几乎可以无限增加重量;

在0.5.6版本运行不正常的情况,Filecoin团队推出0.5.7版本,但仅仅改变了重量算法(针对#3502),未对#3523采取任何应对措施

0.5.7版本于10月10日正式推出,版本推出的主要目的是(1)修复#3502,(2)测试升级

0.5.7版本推出之后,攻击再现,目前网络基本上停滞,主要原因是因为长程攻击和多区块攻击出击,导致整个网络需要大量的时间进行同步,而且采用多区块攻击者区块高度远低于长程攻击攻击者。

网络目前显示最高区块高度为 43260;

但,最重区块高度为 23276(同一高度重复出块多达500个);

尽管如此,从43000以上高度的区块来看,新的重量算法已经生效;并且,升级也取得成功。同时可以肯定的是,网络停滞与新代码没有关系。

当前需要解决的主要问题:

对#3523的攻击进行惩罚,代码要尽快出台;

必须要有手段抑制长程攻击(新的重量算法下也许不再需要,但是0.5.7的版本中包含新老算法);

ProvingPeriod 更新的问题;

Filecoin开发日志
网络升级以及alphanet 权重函数 (#3536)

(本周重点Issue)过去一周,多个矿工利用 issue#3523 和issue#3502 对网络进行长程攻击。
所谓长程攻击,就是采用私自挖矿的方式,在私有网络内把网络的高度回退到较早的一个高度,重新挖矿。与此同时,在每一个高度利用前述漏洞增加网络的重量,当私网内网络的重量超越主网后,将私网中节点加入主网,从而用私网的链数据替换主网的链数据,实现长程攻击。这种攻击方式在比特币的PoW时代已经存在,只是比特币采用最长链规则,而filecoin采用最重链规则。

为了应对这种攻击,官方迅速更新网络计算重量的算法。由于当前网络实现了升级功能,官方希望通过升级来实施权重函数的替换,因此这个issue不仅实现了新的权重函数(重构权重函数从根状态中读取数据,升级父块的权重校验方法),还包含了对网络升级的支持。另外,这个issue还引入了alphanet中临时的仲裁高度43000,并由 IsHeavier 函数来判断升级前后的处理。

由于 issue#3523 尚未修复,攻击者很容易对网络实施长程攻击。尽管当前的开发网络包含了这个更新,但在网络升级的过程中,又遭到了一次更严重的攻击。所以,目前网络处于崩溃状态:部分节点处于升级后的43000+高度,部分节点处于升级前的23000+的高度。

微信进群

http://www.feirke.com/blog/65affd61671