主页 > imtoken官网下载广告 > btc源码分析 BTCP膨胀超200万,突破2100万上限

btc源码分析 BTCP膨胀超200万,突破2100万上限

imtoken官网下载广告 2023-06-18 06:49:26

加密资产数据提供商Coinmetrics近日发布了一份长达10页的报告,题为《Don's trust, verify: a Bitcoin Private case study》(Don's trust, verify: a Bitcoin Private case study),分析了比特币私人流通情况。

报道称,BTCP虚增204万,推动BTCP实际流通量达到2304万,而非官方宣称的2100万。

解读 Coinmetrics 报告

Bitcoin Private 是比特币和 ZClassic 的分叉合并。 所谓分叉合并,就是将两条已有链的UTXO(Unspent Transaction Output)集合合并成一条新链。

值得注意的是,ZClassic 最初是从 Zcash 分叉出来的,因此具有很强的隐私功能。 分叉的目的是取消区块创始人的奖励; 后来为了振兴ZClassic社区,ZClassic分叉出了Bitcoin Private。

与比特币类似,Bitcoin Private 的总发行量也定为 2100 万枚。 但 Coinmetrics 发现:“在将比特币 UTXO 导入和发送到屏蔽池的过程中btc源码分析,秘密发行了 204 万个 BTCP,将 BTCP 实际发行上限推高至 2304 万个。”

(Odaily星球日报注:屏蔽池中包含存储在屏蔽地址中的Tokenbtc源码分析,采用Zk-SNARKS匿名交易隐私技术)

methodinvoker 源码分析_btc源码分析_menuetos源码分析

根据 Coinmetrics 的说法,这些膨胀的 BTCP 与 BTCP 的白皮书和官方公告相矛盾,BTCP 的总数量设定为 2100 万,并且没有预挖。

btc源码分析_methodinvoker 源码分析_menuetos源码分析

methodinvoker 源码分析_menuetos源码分析_btc源码分析

Coinmetrics 在发现 BTCP 节点提取的发行量数据与预期的 BTCP 剩余发行量存在差异后,开始考虑 BTCP 被预挖的可能性。 据计算,截至Coinmetric报告撰写时,BTCP的预估剩余流通量为2060.7万枚。 然而,Coinmetrics 观察到的节点数据显示,BTCP 的剩余流通量为 2084.1 万(Coinmetrics 指出,这个数字不包括屏蔽池中的代币)。

根据 Coinmetrics 的说法,有几个假设可以解释这种差异:

Coinmetrics 证实,他们观察到的节点与 BTCP 官方网站 btcprivate.org 上运行的浏览器发布的区块哈希值相同。

Coinmetrics 确认相同的拉取代码能够准确地将比特币数据发送到比特币节点。

btc源码分析_methodinvoker 源码分析_menuetos源码分析

Coinmetrics 确认 BTCP 的挖矿奖励没有变化。

Coinmetrics 认为这是不可能的,因为如果 Zk-SNARKS 被利用,黑客将能够攻击更有价值的 Zcash,它使用与 BTCP 相同的技术。

Coinmetrics 解释说,在 UXTO 导入 BTCP 期间,BTCP 网络生成了一个“特殊区块”。 该网络包含 400 个额外输出(extra outputs),每个包含 50 个比特币。 Coinmetrics 发现了 102 个这样的“特殊区块”。 通过计算这些数字(102 个特殊区块 * 400 个额外输出 * 50 个比特币),Coinmetrics 得出结论,额外生成了 204 万个 BTCP。

在下图中,Coinmetrics 列出了预期的比特币 UXTO 进口与实际进口:

methodinvoker 源码分析_menuetos源码分析_btc源码分析

下图清楚地显示了这些异常数据块:

menuetos源码分析_methodinvoker 源码分析_btc源码分析

methodinvoker 源码分析_menuetos源码分析_btc源码分析

那么这些膨胀的BTCP去了哪里呢? Coinmetrics 发现这些 Token 于 2018 年 4 月 29 日被转移到屏蔽地址(即屏蔽池); 从7月11日到8月18日,大约有30万个BTCP从屏蔽池中转出,其余174万个“矿”没有变化。

Coinmetrics 估计,如果这 300,000 个代币在公开市场上出售,卖家“可能净赚 100 万至 300 万美元。”

Coinmetrics 注意到的一件有趣的事情是“BTCP 上只有大约 15% 的代币是活跃的。” 这意味着预先开采的 BTCP 将占市场上活跃 BTCP 的很大一部分。

Coinmetrics 估计分叉期间创建并活跃的 BTCP 有 312 万个,从挖矿盾池中转出的 30 万个 BTCP 将占活跃 BTCP 的 9.5%。 换句话说,“在每 10 个分叉后 BTCP 中,有 0.95 个来自预挖”。

在报告的最后,Coinmetrics 还讨论了为什么没有检测到这些“地雷”(预挖)。 Coinmetrics 给出了两种解释:流通检查机制不好; 弱 UTXO 导入验证。

1.不良循环检查机制:

BTCP的来源非常复杂,这种“隐秘陌生”的流程使得流通审计工具和功能非常薄弱。 “BTCP 用户必须相信 UTXO 导入和挖掘过程是按照开发人员的意愿完成的。”

methodinvoker 源码分析_menuetos源码分析_btc源码分析

2、弱UTXO导入验证:

在导入 UTXO 之后,BTCP 团队向社区成员发布了文档和审计工具。 这些文件“包含单个导入块的内容”,以及单个比特币 UTXO 导入的 10,000 笔交易。

根据 Coinmetrics 的说法,使用共识代码审计这些文件的人会发现没有错,每个区块确实有 10,000 笔交易,而且每笔交易的第一个输出确实符合预期的 BTC 值和脚本。 但是,共识代码不会检查块中是否“没有额外输出”。 因此,块中的任何额外输出(硬币)都将被忽略。

BTCP官方回应:等待社区投票达成售币共识

12月23日,BTCP开发团队发表声明称,核心开发团队在看到Coinmetrics文章后立即进行了调查,可以确认这些数字(虚增204万)是准确的,但BTCP开发团队并不清楚对这个。 漏洞的来源、目的和受益者。

根据 BTCP 团队的说法,问题是由于该项目是开源的。 此前,BTCP公开了开发代码。 公示的目的是社区贡献者可以查看并帮助修复代码; 然而,代码的开源也有负面影响。 发现漏洞的人会选择刻意不报告,在分叉过程中利用漏洞牟利。

核心开发团队还表示,隐藏预挖的原因是缺少一行代码合并来自 BTCP 代码贡献者的拉取请求,这允许“由于节点未正确验证假分叉块而导致分叉被利用”。 矿业”。

btc源码分析_methodinvoker 源码分析_menuetos源码分析

BTCP开发团队表示:“我们很遗憾在分叉之前没有发现BTCP源代码中的所有错误,但这种情况在技术领域很常见。”

不过BTCP开发团队也表示,该漏洞今后不会再发生,也不会再被利用。 “这个特殊的漏洞只能在今年早些时候的分叉期间被利用。”

下一步是什么? BTCP团队也给出了解决方案:

1. CoinMetrics认为屏蔽地址中合法BTCP代币不到2万个,非法BTCP代币1.7-180万个。 因此,我们的团队倾向于删除所有屏蔽地址中的代币,虽然这会导致 200,000 个合法的 BTCP 代币消失,但总比在市场上留下 1.7-180 万个非法代币要好。 同时,这也可以解决供过于求的问题。

2.我们可以进行硬分叉删除所有“死币”(inactive coins),当然这个数字可能超过1200万,我们认为这会解决供应过剩的问题,但不会删除非法代币币。

目前BTCP开发团队正在进行初选,当然最终的决定还需要社区投票达成共识。 不过BTCP团队也强调,无论哪种方案都必须尽快实施,因为黑客可能会提前从屏蔽池中转移代币。

“最坏的情况是我们对 170 万个 BCTP 进行快照并及时回滚交易,但我们不希望这种情况发生。”

BTCP团队同时向交易所和个人发出通知,要求各交易所关闭BTCP充提业务,以减少未来可能出现的回滚对网络造成的损害; 对于个人而言,用户转账时最好谨慎。