主页 > 怎么在华为下imtoken > 白皮书视角下的“隐链”与“双花”

白皮书视角下的“隐链”与“双花”

怎么在华为下imtoken 2023-12-15 05:11:31

请添加图片描述

简介

Bitcoin SV 最近遭到拥有大量计算能力的攻击者的攻击,试图诈骗价值数百万美元的 BSV。像这样的事件总是迫使你以全新的方式重新思考比特币的基本原理和原则。

本文将概述攻击过程以及防御攻击的动员和努力,并讨论为最终取得积极成果而采取的对策。我们还重新审视了比特币白皮书,以了解如何在此类攻击场景中正确应对。

简而言之,我完全相信矿工会按照白皮书的指导方针行事。我比以往任何时候都更有信心,即使面对具有压倒性计算能力的攻击者,比特币也是强大而活跃的。

后台优先攻击

2021 年 6 月 24 日,BSV 主网上发生了 4 个区块的重组,这似乎与使用 Hat¬hor 协议的聚合挖矿相同。新矿工“Zlupool”是相关的。当时他们的节点算力很大,但连通性很差,所以区块重组只是一个意外。比特币 SV 基础设施团队已联系该矿工寻求技术支持,以改善他们与其他矿工的连接,但尚未收到回复。

7 月的第一周出现了多次类似长度的区块重组。我们再次联系了 Zulupool,但他们表示这些区块不是他们自己生产的。攻击者通过在 coinbase 交易中使用“Zulupool”名称和支付地址来冒充人们,从而迷惑人们。我们认为 Zulupool 的说法是可信的,即他们实际上并未开采与重组相关的区块,原因如下所述。

Bitcoin SV 基础设施团队立即设置工具检查双花交易,并联系比特币协会和 BSV 矿工建立适当的沟通和反馈渠道。比特币协会还向交易所发出警报,要求他们注意并识别可疑的双花交易。在第一次攻击之后,我们部署了工具来自动检测和通知交易双花,没有一个受害者联系我们告知他们的损失。 (后来从Bitmart数字资产交易所公开的法庭文件中得知,攻击者通过将非法双花BSV换成另一种货币而蒙受损失。)

在这些工具准备好之后,攻击者消失了几个星期。

二次攻击

8 月 3 日和 4 日,在三个不同的时间段,未知的恶意攻击者秘密挖掘了包含双花交易的隐藏链,该双花交易涉及价值数百万美元的 BSV。随后,攻击者将这些长度暂时超过诚实链的隐藏链一次性发布在 BSV 网络上。这一次,攻击者冒充了诚实的矿工 TAAL。

回应

在上一次攻击之后,比特币基础设施团队做好了充分的准备,所以这个欺诈性区块在发布后的几秒钟内就被团队检测到了。我们迅速联系了愿意利用自己的算力拒绝欺诈区块的知名诚实矿工,最终抵制了攻击者的分叉并成功防止了双花。与此同时,比特币协会联系了众多交易所,告知他们发生了什么,并建议他们采取保护措施,使他们与大多数矿工的做法保持一致。

在 8 月 3 日和 4 日从交易所窃取资金的 3 次尝试失败后,攻击者最终放弃了尝试,显然是意识到诚实的矿工会拒绝包含双花交易。隐藏方块。

注意到在此期间,比特币协会发布了诚实矿工使用的命令,以拒绝先前被攻击者隐藏的包含双花交易的区块。众所周知,诚实矿工可能需要一段时间才能超越攻击者的链,这也为其他(非矿工)比特币 SV 节点运营商(例如监听区块的应用程序)提供了选择跟随大多数诚实矿工的机制Expect 上的矿工是在最长链上不断构建的链。第二次攻击没有发生双花。攻击者花费了大约 200,000 美元,希望通过欺诈获得更大的经济利益,但未能如愿,最终损失了 200,000 美元。同时,网络仍然畅通无阻,不仅处理了创纪录的交易量,甚至产生了创纪录的 1GB 块。

比特币白皮书解释了矿工的行为

负责执行比特币协议规则的矿工应按照比特币白皮书中定义的“先见规则”,及时采取行动,拒绝无效交易和包含无效交易的区块。

什么是远见原则?

“寻找者原则”是“先见”原则。

当我们要确定一系列事件的顺序时,会进行直接观察以确定谁“最先看到”。比特币区块链提供了一种机制,通过该机制,对一组对等点的直接观察可以转化为一系列事件首次发生时间的准确记录。

在讨论远见原则时,我们需要小心区分两种主观观点。

一种观点是参与者在活动发生时在网络上很活跃。通过观察,他们可以直接获得关于谁先来的第一手信息。当两个相关事件之间的时间间隔很长(超过广播延迟)时,直接观察的结果是无可争辩的。我们称之为“观点”。

另一种观点是,人们在事后根据历史得出结论。我们称之为“历史视角”。由于它们在事件发生时并未出现,因此无法直接观察事件发生的先后顺序,只能根据节点通过最长的区块链记录的信息。如果这些观察者像他们最近那样可靠地根据先见原则制作记录,那么“观察视角”和“历史视角”将得出相同的结论,即两个相关事件(双花)中的哪一个先发生,这是比特币的主要目的。通过以正确的顺序保存记录,新加入网络的参与者可以准确了解所有 UTXO 的状态,确保在他们以后确认比特币交易时,这些比特币都存在且未使用。

在加入网络时,如果网络中同时存在多条有争议的活跃链(包含双花交易的竞争区块),新的参与者可能会对“历史观”产生混淆。但这种情况很少见,可以在短时间内解决。而解决纠纷只针对在此期间加入网络的矿工。其他区块链监听器仍然只需要观察,因为他们不参与创建记录。同时,对于绝大多数无争议的交易,即使发生在这个窗口期,也依然是清晰明确的。

一个有趣的问题是比特币白皮书描述的是“观察视角”还是“历史视角”。这就引出了另一个问题:是否应该接受包含明显错误记录的更长链。如果白皮书描述的是“观察视角”,那么毫无疑问节点应该拒绝不正确的记录(块)。只有当您无法知道事件的顺序并且必须依赖节点共识时,才需要“历史视角”。

我自己的理解是,白皮书描述了一种将“历史视图”转换为可信记录的机制,从而产生非常准确的“历史视图”数据。

想象一下,如果“历史视角”是决策机制,那么白皮书中的几条陈述就无法证明自己的合理性。例如以下段落。

第 1 部分:简介

目标:

“点对点分布式时间戳服务器生成交易时间的可计算证明”

p>

需要注意的是,在生成时序证明之前,必须通过对事件发生的主观观察来确定事件的顺序。当时大多数节点接受这些观察(以块的形式)是确认这些观察是正确的,并得到当时网络中活跃的大多数观察节点的同意。

使用点对点现金系统对欺诈的定义:

“计算上不可逆的交易将保护卖家免受欺诈”

即交易在接收和接受后被逆转,被作者认为是欺诈。

第 2 部分:交易

双花交易发生时有效交易的定义:

"我们需要一种方式让收款人知道之前的所有者没有签署任何更早的交易。就我们而言,最早的交易是最重要的,所以我们不关心以后尝试双花的交易。”

注意,最长同一笔交易的两个版本不可能出现在 .仅从区块时间戳来看,无法准确确定两个竞争区块中的哪一个是实际生成或首先公开广播的。因此,这里的“最早”一词仅适用于当时网络上的活跃节点主观观察到的结果。

没有对区块中的交易给予特殊的权重或其他考虑来改变和覆盖“最早”的概念。

公开广播的必要性:

*“确认没有交易遗漏的唯一方法是了解所有交易”

“所有交易”包括已确认交易和未确认交易。

“为了在没有受信任方的情况下实现这一点,交易必须公开”*

这种公共广播至关重要,允许网络上的所有活动节点都可以进行主观观察,这让我们回到......

回到“目标”:

“收款人需要证据证明当时大多数节点同意本次他们第一次收到的交易”

从收件人的角度来看,这很重要,因为他们需要确认收到的比特币是有效的。

再次,当双花事件发生时,基于对网络中活跃节点的主观观察,可以实现这一目标。这就是为什么必须公开宣布这笔交易的原因。

第 5 部分:网络

网络定义说明:

"新交易广播到所有节点"

这是非常明确的。在广播交易的同时隐藏同一交易的冲突版本违反了这个规则,并且定义明确指出广播交易是有效的,隐藏的交易是无效的双花交易。

区块必须广播:

“当一个节点找到一个区块的工作证明时,将其广播给所有节点”

这个规则是明确的,当一个区块需要被广播时。它在找到有效的工作证明并生成有效的区块头后立即执行。

一个有效的区块必须包含尚未花费的交易(资金):

“只有当区块中的所有交易都有效且尚未花费时,节点才会接受该区块。区块。”

正如我们之前看到的,“尚未花费”是从观察者的角度进行的描述。如果他们之前观察到与新区块中的任何交易冲突的交易,则该区块无效。

块竞赛:

“如果两个节点同时广播下一个区块的不同版本,那么其他节点接收这些不同版本区块的顺序是不同的。这种情况下,它们会根据最先收到的区块继续构建,但是同时保存另外一个分支,防止以后变长,当找到下一个工作量证明,一个分支变长时,关系就会被破坏;建立在其他分支上的节点会切换到更长的链上。 "

中本聪在本节中没有解决隐藏竞争块的情况,而只讨论了几乎同时广播的竞争块。在非常不同的时间点看到竞争块的场景仅在白皮书中防御网络攻击的部分中讨论。

第 11 节:计算

比特币白皮书明确指出,挖掘隐藏的区块链是不诚实的:

“交易发送后,不诚实的发送者将在包含该交易的替代版本的平行链上秘密开始挖矿”

秘密开采区块的矿工被视为“攻击者”:

“现在了解攻击者仍然追赶的概率......”

第 12 节:摘要

我们在这里再次看到对比特币目标的描述:

“为了解决这个问题比特币检验双花,我们提出了一种使用工作量证明的点对点网络来记录交易的公共历史,当诚实节点时,从计算能力的角度来看,攻击者无法逆转控制大部分 CPU 电源。"

时间戳服务器的目的是防止“攻击者”更改事件实际发生时网络中大多数节点主观观察和同意的“公共”历史记录。这些记录包括观察事件(交易和区块)的顺序。这并不意味着成功的隐藏区块攻击应该被视为“诚实”记录,尤其是因为在事件发生时链上活跃的每个人都知道这是不诚实的。

有效区块:

“他们用自己的 CPU 能力投票,努力扩展有效区块以表示他们接受这些区块,并拒绝构建在其上的无效区块”

这又回到了有效块的定义。我们从第 5 节中了解到,一个有效区块只包含有效交易,我们还从第 2 节中了解到,有效交易必须是当时诚实参与者主观观察到的任何一组双花交易中的第一个。看到的交易。

最后让我们跳回到摘要的最后一句话:

“节点可以随意离开和重新加入网络,离开事件证明后接受最长的工作量证明链作为网络”

当你不在场时接受具有最长工作量证明的链作为网络事件的证明,和在你知道最长链无效的情况下接受它是明显不同的。第 1 节中概述的目标是生成这样的证明,生成该证明是当时处于活动状态的节点的责任。白皮书明确指出,无效历史记录应被意识到无效并在其位置写入正确历史记录的节点拒绝比特币检验双花,确保正确历史记录可以成为最长工作量证明链的一部分。

这正是攻击发生时所有诚实矿工所做的。

代码既不是法律也不是比特币的定义

比特币是一种描述预期行为的经济系统。所以软件和算法不会改变和覆盖这个特性。该软件本身是一种算法的实现,几乎在所有情况下都会自动执行预设目标,但算法永远不会完美。在对抗性系统中,尝试使用算法编写规则可能会导致算法被违背其意图并被别有用心的人用来攻击系统。现实情况是,有些规则也很难以防止攻击的方式编码。

根据规则编码自动检测包含双花交易的区块,孤立区块就是一个例子。为了这个目标,我多次尝试定义一个可行的规则集,这对于一般场景来说很容易做到,并且会很好地保护用户,但这可能会被攻击者利用,通过精心策划的攻击使区块链分裂。交叉。

即使是预见性原则本身也难以在网络延迟下进行可靠编码,虽然在大多数情况下可以通过代码强制块竞争来解决,但它涉及到多组双花的复杂性,这种情况可能会导致各组之间的持续不一致两组节点,最终导致永久分叉。我很确定这就是为什么最初的比特币是以当时的方式编码的原因,而不是在几毫秒内鲁莽地执行这条规则。

关键是代码并不完美,有时需要人工干预。这在比特币的整个历史中都发生过。比特币的目标是对网络上发生的事情产生永久和可靠的记录。为了实现这一点,节点需要观察、记录并在必要时进行人工干预,以确保记录准确无误。矿工可以独立执行这些操作,几乎不需要协调,因为每个人在面对真相时都可以相对容易地达成共识。

这些记录超出了区块链本身的记录。这些记录很好地证明了过去事件的进一步发展。匹配来自数百台单独机器的日志文件是一个更加手动的过程,但证明同样有用。

MinerID 的作用

最近有很多问题和讨论都集中在 MinerID 在应对近期攻击中的作用上。我们看到的不寻常之处在于攻击者冒充其他矿工(Zulupool 和 TAAL),甚至使用他们的付款地址。很明显TAAL被冒充了,因为TAAL会按照约定用自己的MinerID对自己挖的区块进行签名,所以出现大量未签名的区块就是一个红旗,说明TAAL被冒充了。这种方法只是更容易识别攻击者的块。

MinerID 可以为矿工积累来之不易的工作量证明声誉,并在帮助用户与矿工建立信任方面发挥更多作用。未来,它将确保矿工之间在发生攻击或其他关键网络事件时拥有快速可靠的通信通道。

有关MinerID的更多详细信息,请参考:

未来如何应对

此响应有效且可复制,但可以进一步优化。可以更改比特币 SV 节点软件的一些默认行为,以及许多其他缓解措施、工具和操作程序。

众所周知,出于安全原因,在部署完成之前不会披露这些措施,以避免暗示潜在的攻击媒介。比特币基础设施团队中的许多优秀人士一直致力于解决这些问题,并将继续这样做,直到我们从这些事件中获得的经验和积累转化为行动和代码响应。

本次事件反映的主要问题之一是我们需要主动监控网络上的事件,需要有经验的人参与,需要在企业用户之间保持健全的沟通渠道。任何有价值的金融系统都配备了一个运营中心和监控系统,可以 24/7 全天候运行。这些设施已经存在于 BSV 网络上,并且系统的监控能力现在更加强大和相关。

总结

比特币白皮书从根本上描述了比特币协议正常运行所需的一组行为。其中大部分可以通过算法实现自动化,并且随着时间的推移会变得更加自动化。当算法被恶意利用但没有发现潜在的攻击向量时,在算法中表达规则并不总是可行的,这就是为什么偶尔需要人工判断和人工干预的原因。比特币不是代码,它是一个由多个独立方按照一套规则行事的系统,在这个系统中,各方共同拒绝违反规则的其他方。

目前,全球有超过 400 个项目建立在 BSV 区块链上。凭借坚如磐石的协议和超高的网络性能,BSV 生态发展迅速,我们期待未来有更多前所未有的商业应用。