【发布时间】:2020-08-24 23:52:34
【问题描述】:
我试图弄清楚 PBFT 共识算法如何处理双重支出问题。我读过很多文献,但似乎找不到答案
【问题讨论】:
标签: blockchain distributed-system fault-tolerance consensus
我试图弄清楚 PBFT 共识算法如何处理双重支出问题。我读过很多文献,但似乎找不到答案
【问题讨论】:
标签: blockchain distributed-system fault-tolerance consensus
pbft 是 Barbara Liskov 和 Miguel Castro 在 1999 年提出的一种共识算法,目的是为了防止恶意攻击作为恶意攻击和 软件错误可能导致故障节点表现出拜占庭(即任意)行为。与以前只在同步系统上工作的 bft 算法相比,pBFT 旨在在异步系统中高效工作。
here 是研究论文指出
容忍状态机复制的实用算法 拜占庭式错误。该算法提供活性和安全性 在所有副本中最多提供
⌊n-1 / 3⌋同时出现故障。这意味着客户最终会收到 回复他们的请求,并且这些回复是正确的 线性化。该算法适用于异步系统,如 Internet,它包含重要的优化,使其能够 高效执行
双重支出是数字或电子现金计划中的一个潜在缺陷,其中同一个数字代币可以多次支出。与实物现金不同,数字代币由可以复制或伪造的数字文件组成。
双花攻击是针对多种加密货币的潜在攻击,例如由于 51% 攻击。
但是这个问题可以通过共识算法和区块链来避免
如果两个交易尝试花费相同的代币,每个节点将认为它认为第一个交易有效,而另一个无效。一旦 节点不同意,没有办法确定真正的余额,因为每个节点的观察都被认为是同样有效的,使节点恢复同步的一种方法是使用共识算法,并且使用区块链,该系统中的交易在技术上永远不是“最终”作为冲突的区块链总是会超出当前的规范链,但是由于区块是建立在交易之上的,因此另一条链超越它的可能性越来越小/成本越来越高,从而防止了双重支出问题。
【讨论】:
PBFT 的第一步是让 2f + 1 个节点同意以相同的顺序执行可用的交易。这是通过分配序列号的主节点路由所有交易来完成的。以相同顺序执行交易的所有节点将拒绝第二次支出。由于最多 f 个节点可能有故障,这意味着至少有 2f + 1 - f = f + 1 个节点将接受第一次支出并拒绝第二次支出。当客户端得知 f + 1 个节点已接受第一次支出时,可以确定这是共识,因为这些节点中至少有 1 个节点没有故障。
【讨论】: