# PirlGuard — 针对 51% 攻击的创新解决方案

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2F83V6jmo7buz0YZ8vnmoS%2F1_WyQYmJ3dvS9C1uBkUkXRkw.webp?alt=media&#x26;token=90901739-3c69-47cb-bac2-8d8fa7674e32" alt=""><figcaption></figcaption></figure>

Pirl 区块 2,442,442 不仅对于 Pirl 来说是一个历史事件，对于整个区块链安全来说也是一个历史事件。

大多数 Pirl 社区都知道，Pirl 团队几个月来一直在我们的 Discord 和幕后公开研究不同的方法来保护我们的区块链免受 ASICS 和 51% 攻击。在此期间，Pirl 与许多其他区块链一起成为 51% 攻击的受害者。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FFmupLZLYhtucYHbyX5TM%2F0_PFUb4QYHGnEUCGEd.png?alt=media&#x26;token=0be2d4de-0c2a-4424-9ac7-d57ad412bdc9" alt=""><figcaption></figcaption></figure>

最近，几乎所有 PoW 共识机制区块链都容易受到 51% 攻击的威胁因素之一是挖矿利润下降，导致廉价算力过剩。

大多数可用来源都解释了这些攻击的复杂性，并展示了 PoS 和第三方解决方案作为防范此类攻击的良好措施。一种解决方案是回滚区块链，但这仍然会损害 Pirl 的矿工、投资者和持有者。虽然 PoS 共识机制也容易受到其他类型的攻击，例如“无利害关系”攻击。

在对区块链安全方法进行彻底研究和分析后，Pirl 团队并不认为任何当前可用的选项是针对此类攻击的可接受的长期可预防措施。这给团队留下了唯一可能的选择，即开发新的安全协议。

为了了解 PirlGuard 协议，包括 Pirl 开发创新解决方案的方式和原因，您必须了解 51% 攻击的工作原理。如果您对 51% 攻击的剖析知识有信心，请随意跳至“PirlGuard 的工作原理？” 本文的部分。

### 51% 攻击如何运作 <a href="#id-9b7e" id="id-9b7e"></a>

来源：[CoinMonks](https://medium.com/coinmonks/what-is-a-51-attack-or-double-spend-attack-aa108db63474)&#x20;

作者：Jimi.S

当比特币所有者签署交易时，该交易将被放入本地未确认交易池中。矿工从这些池中选择交易来形成交易块。为了将这个交易块添加到区块链中，他们需要找到一个非常困难的数学问题的解决方案。他们试图利用计算能力找到这个解决方案。这称为**散列**。矿工拥有的计算能力越强，他们就越有可能在其他矿工找到解决方案之前找到解决方案。当矿工找到解决方案时，它将（连同他们的区块）广播给其他矿工，并且*只有*根据区块链上现有的交易记录，如果该区块内的所有交易都*有效，他们才会验证该解决方案。***请注意，即使是损坏的矿工也永远无法为其他人创建交易，因为他们需要该人的*****数字签名*****才能做到这一点（他们的私钥）**。因此，如果没有相应的私钥，就不可能从其他人的帐户发送比特币。

### 隐形挖矿——创造区块链的后代 <a href="#id-3b53" id="id-3b53"></a>

现在注意了。然而，恶意矿工*可以*尝试*逆转*现有交易。当矿工找到解决方案时，应该将其广播给所有其他矿工，以便他们可以在将该块添加到区块链后对其进行验证（矿工达成*共识*）。然而，腐败的矿工可以通过**不将**其区块的解决方案广播到网络的其他部分来创建区块链的*后代。*&#x73B0;在区块链有**两个版本。**

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FzkQrsKbHUdDt9dPoOBdN%2F0_b1GMvbDU-v7K0nS8.png?alt=media&#x26;token=d83bde0d-ca46-40e7-9ab9-b5e9263b5d0c" alt=""><figcaption></figcaption></figure>

现在区块链有两个版本。红色区块链可以被视为“隐形”模式。

一种是未被腐败的矿工所遵循的版本，一种是被腐败的矿工所遵循的版本。被破坏的矿工现在正在开发他自己的区块链版本，并且不会将其广播到网络的其他部分。网络的其余部分不会接收到这条链，因为它毕竟还没有被广播。它与网络的其余部分隔离。腐败的矿工现在可以将他所有的比特币花在区块链的真实版本上，这是所有其他矿工正在研究的版本。例如，假设他把钱花在兰博基尼上。在真实的区块链上，他的比特币现在已经被花掉了。同时，他没有**将**这些交易包含在他的区块链的孤立版本中。在他的隔离版本的区块链上，他仍然拥有这些比特币。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FCUVdTPNS44BlaNxclzDE%2F0_rXM3Tq8_IqbEiWWu.png?alt=media&#x26;token=d02d0fa1-5ea0-4c4c-b4a7-f43242fa9151" alt=""><figcaption></figcaption></figure>

与此同时，他仍在收集区块，并在他的区块链的孤立版本上亲自验证它们。这就是所有麻烦开始的地方……区块链被编程为遵循民主治理模式，即*多数*。区块链通过*始终遵循最长的链来实现这一点*，毕竟，大多数矿工*比网络的其他部分更快地将块添加到他们的区块链版本中*（ [因此；最长链=多数](https://medium.com/coinmonks/blockchain-for-beginners-what-is-blockchain-519db8c6677a#2b1e)）。这就是区块链如何确定其链的哪个版本是真实的，进而确定所有钱包余额的基础。一场比赛现在开始了。谁拥有最强的哈希能力，谁就会更快地将块添加到他们的链版本中。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FCb7ZazYkDYFaBB7AhUja%2F0_W24tJHqtx1x6tIvO.png?alt=media&#x26;token=86e542eb-a1e3-40c1-99e7-2308c98c1003" alt=""><figcaption></figcaption></figure>

### 一场竞赛——通过广播新链来逆转现有交易 <a href="#id-341b" id="id-341b"></a>

损坏的矿工现在将尝试比其他矿工（真实的矿工）更快地向其孤立的区块链添加区块。一旦损坏的矿工创建了更长的区块链，他就会突然将该版本的区块链广播到网络的其他部分。网络的其余部分现在将检测到这个（损坏的）版本的区块链实际上比他们正在处理的版本*更长*，并且协议迫使他们切换到这个链。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FuGe6p4ENrtmc5FoZj5AM%2F0_IV31v0o1LiLr_12L.png?alt=media&#x26;token=72019c0f-e109-4463-8360-b2fba226b2cb" alt=""><figcaption></figcaption></figure>

损坏的区块链现在被认为是真实的区块链，所有未包含在该链上的交易将立即被撤销。攻击者之前曾将他的比特币花在一辆兰博基尼上，但这笔交易并未包含在他现在控制的隐形链中，因此他现在再次控制了这些比特币。他可以*再次使用它们*。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2FBYU4kPfHCYItbP5j13Ne%2F0_cGDJsb_3v5_NJBTL.png?alt=media&#x26;token=3ae3aa38-4a59-4c95-b88f-d8f8a9d033bf" alt=""><figcaption></figcaption></figure>

**这是双花攻击**。它通常被称为 51% 攻击，因为恶意矿工将需要比网络其余部分组合更多的哈希能力（即 51% 的哈希能力），以便更快地将块添加到他的区块链版本中，最终允许他建立了一条更长的链条。

**现在我们知道了攻击是如何进行的，我们可以在几个关键时刻对其进行总结。**

A）攻击者需要私下挖掘自己版本的区块链，其哈希率大于主网络上的哈希率，以便更快并创建更长的链。这通常是一场争夺长 10-20-50 个区块的链的竞赛。

B）一旦他拥有更长的区块链，他需要将其广播到网络。然后网络需要将其识别为最长的链并接受它。

C) 成功的双重支出将孤立初始交易，从而在应用更长的链后，攻击者钱包中的硬币再次可用。

**PirlGuard 如何工作？**&#x4E3A;了破坏允许攻击者成功的 51% 攻击背后的机制，我们部署了一个带有修改后共识算法的核心解决方案，该解决方案将在不久的将来保护我们的区块链和许多其他区块链免受几乎所有 51% 攻击。

**PirlGuard 系统**&#x20;

部署 PirlGuard 协议后，攻击成功的机会大大降低，该协议受到 Horizen 惩罚系统的启发，并为 Ethash 构建。我们知道，一旦攻击者通过私下挖掘单独的链创建了更长的链，他们就必须将其广播到网络。一旦攻击者打开其节点进行对等，它将尝试与网络上的其他节点进行对等，告诉他们他们错了。然而，一旦发生这种情况，PirlGuard 将放弃对等点，并通过判处他们因非对等挖矿而开采 X 数量的惩罚块来惩罚他们。分配的惩罚区块数量取决于恶意矿工私下开采的区块数量。

<figure><img src="https://1378833849-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8ce4sktIP4MjKK1cI7cP%2Fuploads%2Fx4LNZpUjByhlmtTt8Dub%2F0_FOJ9B2jScunBOrAU.png?alt=media&#x26;token=0e1f1aac-7b09-4272-a804-e1a5f476735c" alt=""><figcaption></figcaption></figure>

PirlGuard 安全协议极大地阻止了攻击者尝试恶意对等互连，从而为主网络提供了急需的安全性提升。这种新的安全机制将这种可能性降低到大约 0.03%。

但是，这并不是我们准备的唯一安全措施。

**主节点在多个区块链和监控系统上运行公证合约。**&#x20;

主节点将与其他实用功能一起承担新的角色。他们将对区块链进行公证，并被允许在惩罚不良行为者的过程中采取行动，并在 Pirl 区块链上保持诚实的共识。

如果攻击者仍然决定使用大量资金和资源来碰运气（0.03％的机会），并以某种方式成功地在网络上强制实施更长的链，则新初始化的孤儿监控系统将检测孤儿块的重组这将提醒团队采取必要的行动和对策。

作为额外的安全措施，公证合约将部署在 Pirl 和以太坊区块链上。

**增加交易所所需的确认数量。**&#x20;

将实施的另一项措施是对交易所进行区块确认以验证存款的更高要求。又迈出一步，使攻击几乎不可能，甚至不值得攻击者花时间。

迄今为止，开源 Pirl 通过开发第一个基于 Ethash 代码的主节点网络、第一个在主节点网络上运行的私有 IPFS 实现，为区块链做出了贡献，目前正在开发自己的私有加密区块链存储解决方&#x6848;**。**

PirlGuard 安全协议将与项目核心一起添加到我们的开源库中。

在 Pirl，我们正在致力于革新和简化整个区块链行业的区块链技术。这意味着任何人都可以使用我们的代码来学习、教育、测试、修改或应用于自己的区块链网络安全，以抵御未来的 51% 攻击。

**Room-House.com SkyPirl Pirl Rumhaus**

源代码： https: [//git.pirl.io/community/pirl](https://git.pirl.io/community/pirl)&#x20;

网站： https: //pirl.io/en


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skypirl.tech/blog/china/pirlguard-zhen-dui-51-gong-ji-de-chuang-xin-jie-jue-fang-an.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
