BTCP:BTCP 虚增 200 多万,突破 2100 万上限_Cosmo Coin

加密资产数据提供商Coinmetrics近期发布了一份长达10页的报告,题为《不要轻信,要去验证:BTCP案例研究》(Don'strust,verify:aBitcoinPrivatecasestudy),分析了BitcoinPrivate的发行量。该报告称,BTCP虚增204万个,将BTCP的实际发行量推升至2304万,而非官方宣称的2100万。解读Coinmetrics报告

BitcoinPrivate是比特币与ZClassic的分叉合并。所谓的分叉合并,就是将两条现有的链的UTXO集合组合成一个新的链。值得注意的是,ZClassic最初就是从Zcash分叉出来的,因此具有较强的隐私功能,其分叉目的是为了取消区块创始人的奖励;之后为了振兴ZClassic社区,ZClassic又分叉出了BitcoinPrivate。与比特币类似,BitcoinPrivate总发行量也被设定为2100万个。但Coinmetrics发现:“在比特币UTXO导入和发送到屏蔽池的过程中,有204万枚BTCP被秘密发行,从而将实际的BTCP发行上限推高至2304万枚。”根据Coinmetrics的数据,这些虚增的BTCP与BTCP的白皮书和官方公告相矛盾,因为白皮书和官方公告宣称BTCP总量被设定为2100万枚且没有预挖矿。在发现从BTCP节点提取的发行数据与BTCP预期剩余发行量之间存在差异后,Coinmetrics开始思索BTCP被预挖矿的可能性。根据计算,在Coinmetric撰写报告时,预计BTCP剩余发行量为2060.7万。然而,Coinmetrics观察到的节点数据显示,BTCP剩余发行量为2084.1万个(Coinmetrics指出,这个数字不包括屏蔽池里的Token)。根据Coinmetrics的说法,有几个假设可以解释这种差异:Coinmetrics观测的节点不在正确的链上,并且正在接收错误的数据。Coinmetrics证实,他们观测的节点与btcprivate.org运行的浏览器发布的区块哈希是相同的,btcprivate.org是BTCP官方网站。在pull代码中有一个错误,导致Coinmetrics无法准确接受数据。Coinmetrics证实,同样的pull代码能够将比特币数据准确地发送到比特币节点。自白皮书发表以来,挖矿奖励发生了变化。Coinmetrics证实,BTCP的挖矿奖励没有发生变化。BTCP使用的隐私保护技术Zk-SNARKS遭到破坏,有人将已经生成BTCP发送回屏蔽池里了。Coinmetrics认为这不可能的,因为如果Zk-SNARKS被利用,黑客就会攻击更具有价值的Zcash,它和BTCP使用相同的技术。有一个隐藏的预挖矿区块,Coinmetrics证实了这一点。Coinmetrics解释说,在UXTO导入BTCP过程中,BTCP网络生成了一个“特殊块”。该网络包含400个额外输出,每个输出包含50个比特币。Coinmetrics发现有102个这样的“特殊块”。通过计算这些数字(102个特殊块*400个额外输出*50个比特币),Coinmetrics得出结论,额外产生了204万个BTCP。在下图中,Coinmetrics列出了预期的比特币UXTO导入与实际导入的对比:下面这张图清晰地显示了这些异常的数据块:那么这些虚增的BTCP去了哪儿?Coinmetrics发现,这些Token在2018年4月29日被转入到屏蔽地址;7月11日至8月18日,大约有30万枚BTCP从屏蔽池中转出,剩下的174万枚“地雷”没有异动。Coinmetrics估计,如果这30万枚Token在公开市场上出售,卖家“可能已经净赚100万至300万美元。”Coinmetrics注意到的一件有趣的事情是,“BTCP上只有大约15%的Token是活跃的。”这意味着,预先挖矿产生的BTCP将在市场上活跃的BTCP中占相当大的比例。Coinmetrics估计,在分叉期间有312万BTCP产生并活跃,而从矿屏蔽池转移的30万个BTCP将占活跃BTCP的9.5%。换句话说,“每10个后分叉后的BTCP中,就有0.95个来自预挖矿。”报告的最后,Coinmetrics也探讨了为什么这些“地雷”没有被探测到。Coinmetrics给出了两种解释:不好的发行量检查机制;弱UTXO导入验证。1.不好的发行量检查机制:BTCP产生来源十分复杂,这种“秘密而陌生”的过程造成发行量审计工具和功能十分薄弱。“BTCP用户不得不相信,UTXO导入和挖掘过程都是按照开发人员的要求进行的。”2.弱UTXO导入验证:在UTXO导入之后,BTCP团队向社区成员发布了文件和审计工具。这些文件“包含单个导入块的内容”,以及由单个比特币UTXO导入的10000个交易。根据Coinmetrics的说法,使用共识代码来审核这些文件的人不会发现任何问题,即每个块确实有10000个事务,并且每个事务的第一个输出与预期的BTC值和脚本确实是匹配的。但是,共识代码并没有检查块中是否“没有额外输出”。因此,块中的任何额外输出(硬币)都会被忽视。BTCP官方回应:等待社区投票达成销币共识

12月23日,BTCP开发团队发表声明称,核心开发团队在看到Coinmetrics文章后,立即进行了调查,目前可以确定这些数字是准确的,但BTCP开发团队并不清楚这个漏洞的来源、目的和受益者。BTCP团队称,由于该项目是开源的,所以导致了这次的问题。此前,BTCP将开发代码进行公开,公开的目的是社群贡献者能够查看并帮助修复代码;然而,代码开源也带来负面影响,发现漏洞的人会选择故意不报告,并在分叉期间利用漏洞牟利。核心开发团队还表示,隐藏预先挖矿的原因是缺少一行代码合并来自BTCP代码贡献者的拉取请求,缺少的这行代码允许“由于节点没有正确验证伪造的分叉块,所以可以利用分叉挖矿”。“BTCP源代码中的所有错误在分叉之前都没有被发现,我们对此表示遗憾。”BTCP开发团队说,“但是这种情况在技术领域很常见。”不过,BTCP开发团队也表示,这个漏洞今后不可能再次发生,也不可能再被利用。“这种特殊的漏洞,只能在今年早些时候分叉期间被利用。”下一步怎么办?BTCP团队也给出解决方案:1.CoinMetrics认为屏蔽地址中只有不到2万个合法的BTCP代币,以及170—180万个非法的BTCP代币。因此,我们团队倾向于删除所有屏蔽地址中的代币,虽然这会导致20万个合法的BTCP代币消失,但总比将170—180万个非法代币留在市场更可取。同时,这也可以解决供大于求的问题。2.我们可以执行一个硬分叉来删除所有“死币”,当然这个数量可能会超过1200万,我们认为这会解决供应总量超标的问题,但不会删除非法代币。目前,BTCP开发团队正着手进行第一个选择,当然最后的决定需要社群投票达成共识。不过,BTCP团队也强调,无论哪种选择一定要尽快落实,因为黑客可能会提前从屏蔽池中将代币转移。“最坏的情况就是,我们对这170万枚BCTP进行快照,及时回滚交易,但我们不希望这样的情况发生。”BTCP团队也向交易所及个人发布通知,要求所有的交易所关闭BTCP的存款以及取款,从而降低未来可能发生的回滚对网络造成的伤害;对于个人,用户在转账时最好谨慎操作。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-6:914ms