想象一个没有警察、没有法院、也没有银行的小村庄——「去中心村」。村里人做买卖、借粮食,却谁也不信谁。于是有位聪明的长者提议:每家每户都保存一本一模一样的账本,每发生一笔交易,所有人都记在自己的账本上。账本多了,新的麻烦来了:新的一页该写什么?由谁来写?如果张三和李四记的不一样,该信谁? 「让所有互不信任的人对同一本账达成一致」——这正是区块链世界的核心难题:共识机制。长者的想法演化出了四种主流方案:让村民比赛解数学难题(PoW)、按存粮多少抽签(PoS)、先选出账房先生再记账(DPoS)、以及在熟人圈里互相传话确认(PBFT)。它们的本质都指向同一件事:在「无人可信」的世界里,如何让大多数人心服口服地接受同一本账。

岗位关联

对 AI 从业者而言,理解共识机制是参与去中心化 AI 与 Web3 基础设施设计的必修课:无论是训练数据的可信记录、模型参数的全局同步,还是多方协作的治理协议,最终都要回到「如何在无信任节点间达成一致」这个底层命题。

目录
  1. 可视化演示
  2. 共识问题起源
  3. PoW 工作量证明
  4. PoS 权益证明
  5. DPoS 代表机制
  6. PBFT 拜占庭容错
  7. 共识机制权衡
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示PoW工作量证明挖矿与最长链规则、PoS权益证明验证者选举、PBFT拜占庭容错三阶段共识三大模式交互动画。

本节配有交互动效(进入视口后自动加载,约 3KB)。

PoW工作量证明挖矿 矿工调整nonce计算哈希寻找满足难度的解 最长链规则解决分叉选择问题 H(block_header, nonce) < target PoW以算力背书安全性但能耗高吞吐低

共识问题起源

「去中心村」的账本越来越多,可每回记新账时,村民都会吵起来:李四说他昨天已经还了三斗米给张三,张三却说不记得。没有村长拍板,也没有公证处,到底按谁的版本记?这就是共识机制要回答的第一个问题——当没有人拥有最终裁判权时,大家如何自发地认同同一件事。

在区块链网络中,这个「账本」就是分布式账本(distributed ledger):每一个节点都保存一份完整的交易记录。共识机制是一套公开规则,规定谁有权把下一个交易区块写进链上,以及所有节点如何验证新区块是否合法。没有它,网络里每个人都会拿到一本「各写各的」的账本,区块链也就不再是链。

区块链的共识问题最早可追溯到计算机科学界的经典难题——拜占庭将军问题:一队将军各领一支部队包围城市,必须同时进攻才能获胜,但其中可能混入叛徒传递虚假军令。将军们只能靠信使传话,如何在存在叛徒的情况下仍然让忠诚的将军统一行动?要对「多数派」做最简单的数学描述,可以写成:

回到村子,最简单的画面是:大家举起手来,数一数赞成的人数,超过一半就算数。可惜在无信任的世界里,没有人保证每个人都会诚实举手——有人谎报票数,有人雇一群「幽灵村民」来投票。于是,村民们开始设计更聪明的记账接力规则,这就是下一节的故事。

mvalid≥⌊n2⌋+1\displaystyle m_{\text{valid}} \ge \left\lfloor \frac{n}{2} \right\rfloor + 1
这是「简单多数原则」:赞成票数超过总人数一半,提案即可通过。它是几乎所有共识机制的最低层地基。
  1. 赞成票数 m_valid表示支持某个提案或某笔账目版本的节点数量,是共识裁决的直接输入。
    mvalidm_{\text{valid}}
  2. 总人数 n所有参与决策的节点数量,在村子场景里就是所有持账本的村民数。
    nn
  3. 向下取整与加一当 n 为偶数时,⌊n/2⌋ 正好是一半;加一保证赞成者严格过半。
    ⌊n2⌋+1\left\lfloor \frac{n}{2} \right\rfloor + 1
  4. 不等式含义只要赞成票达到这个阈值,账本的新版本就被大家接受。
    mvalid≥⌊n2⌋+1m_{\text{valid}} \ge \left\lfloor \frac{n}{2} \right\rfloor + 1

PoW 工作量证明

为了让记账权显得公平,村长宣布:谁先解开一道超级数学题,谁就有权写下一行账。题目难到什么程度?靠运气加算力猛冲,平均要穷举几万亿个答案才碰得到一次。村民们算得满头大汗,但一旦有人喊出答案,所有人验算一遍只需要一眨眼——这就是工作量证明的精髓:答题难,验证易。

在比特币网络中,这道数学题的本质是找一个随机数(nonce),使区块头做 SHA-256 哈希后得到的数值小于当前网络难度目标值 target。哈希函数像一台「内容榨汁机」:输入任意数据,输出一串固定长度、看起来完全随机的数字串,且无法逆推。矿工只能不断更换 nonce 暴力尝试,谁的算力占比更高,谁就更容易率先找到合法 nonce。这个过程俗称挖矿:

找到合法区块后,矿工向全网广播。其他节点验算后,选择「累计工作量最大」的分支作为主链,这就是最长链规则。攻击者要篡改已确认的区块,必须重新计算该区块之后的所有区块并构建一条更长的链,因此其算力占比超过 51% 时才有较大把握,但发动这种攻击需要消耗巨大的真实电力成本,代价高到在现实中几乎不可持续。

数学比赛看似公平,缺点也显而易见:全村都在烧蜡烛(电力),算得慢的村民几乎永远没有赢面。于是有人提议——别比赛了,改成抽签吧。

H(block header)≤target\displaystyle H(\text{block header}) \le \text{target}
区块头做完哈希后的数值小于目标值 target 才算合法,target 越小、前导零越多,挖矿难度就越大。
  1. 哈希函数 H这里是 SHA-256 等密码学哈希函数,输入任意内容输出固定长度散列值。
    H(block header)H(\text{block header})
  2. 区块头 block header包含版本号、时间戳、前块哈希、Merkle 根和不断调整的 nonce。
    block header\text{block header}
  3. 目标值 target全网动态调整的难度阈值,算力越高 target 越小,出块间隔越稳定。
    target\text{target}
  4. 不等号条件找到满足 ≤ target 的 nonce 即获得记账权,验算只需一次哈希。
    H(block header)≤targetH(\text{block header}) \le \text{target}

PoS 权益证明

经过讨论,村里改用「粮食抽签」:每家把一定量粮食押在仓库(这就是质押),押得越多,抽签桶里的签越多,被抽中记账的概率越大。如果记的是假账,押的粮食全部没收;为了保住押粮,大家反而会小心维护账本。这正是权益证明的直觉:用真金白银为自己说的话背书。

技术上,验证者(validator)将一定数量的币作为质押锁定在网络中。系统通过可验证随机函数(VRF)从所有验证者中抽取记账者——VRF 可以被理解成一台「可公开验票的抽签机」,谁中签大家都能核实,却无人能提前预测。抽中者打包新区块并获得出块奖励;作恶验证者则会被自动扣减质押币,这就是惩罚机制(slashing),也是 PoS 能抑制分叉、解决「无利害关系问题」的关键。

抽签的村子省电又环保,但同样有隐患:持有大量粮食的大户天然拥有绝对优势,这种「富人越富」的模式让村民们不太安心。为了兼顾公平和效率,大家把目光投向了一种更精致的方案——代表制。

P(i)=si∑j=1nsj\displaystyle P(i) = \frac{s_i}{\sum_{j=1}^{n} s_j}
节点 i 被选为记账者的概率,等于它质押的币占全网质押总量的比例。质押越多,中签概率越高。
  1. 记账概率 P(i)节点 i 在本轮被选中打包区块的概率。
    P(i)P(i)
  2. 节点质押量 s_i节点 i 锁定在网络中的代币数量,相当于投入的「粮食」。
    sis_i
  3. 全网质押总量所有 n 个验证者质押量求和,构成抽签桶的总签数。
    ∑j=1nsj\sum_{j=1}^{n} s_j
  4. 比例关系分子除以分母得到权重占比,权重越高被抽中概率越大。
    si∑j=1nsj\frac{s_i}{\sum_{j=1}^{n} s_j}

DPoS 代表机制

直接让全村人参与每笔账的确认实在太慢,于是改为「选代表」:每家按存粮数量投票,选出几位大家信得过的账房先生(也就是超级节点)。平时由账房先生们轮流记账,普通村民只负责定期监督。如果某个账房先生记假账,村民可以迅速投票把他换下来。这就是委托权益证明:记账权交给少数代表,但最终决策权仍握在多数持币人手中。

DPoS 与 PoS 最大的区别在于记账权高度集中到一组受选代表上。持币人通过投票决定代表名单(如 EOS 的 21 个超级节点),代表按固定时间表轮流出块,出块间隔缩短到 0.5 到 3 秒,因此吞吐量从比特币个位数 TPS 提升到数千 TPS。为保障约束力,普通持币人可随时改投,表现不佳的代表会被「弹劾」出局,形成实时治理闭环。

代表制让村子从「人人记账」变成了「精英记账 + 大众监督」,效率大幅提升,但也牺牲了部分去中心化。如果村里互相都认识,其实还有更高效的方案——像互助会一样关起门来,当面协商确认。这就引出了 PBFT。

Vi=∑u=1mbu×vu,i\displaystyle V_i = \sum_{u=1}^{m} b_u \times v_{u,i}
候选代表 i 获得的总票权,等于所有持币人「余额 × 投票意向」的加权和。存粮越多的人,说话越有分量。
  1. 总票权 V_i候选代表 i 最终累计获得的加权票数。
    ViV_i
  2. 持币人余额 b_u第 u 个投票者持有的代币数量,决定他投票权的大小。
    bub_u
  3. 投票意向 v_{u,i}第 u 个持币人是否投给 i,投为 1、不投为 0。
    vu,iv_{u,i}
  4. 加权求和把所有持币人的「金额 × 意向」累加,余额越大者对总票权影响越大。
    ∑u=1mbu×vu,i\sum_{u=1}^{m} b_u \times v_{u,i}

PBFT 拜占庭容错

在村里的「粮仓互助会」中,成员都是熟面孔(这就是许可链),每次记新账时,由轮到值班的成员先把账目写在小纸条上,传给所有成员。每个人看完后,再把自己是否认可的话转告其他人。经过几个来回,只要有超过三分之二的人说「同意」,这笔账就正式定下来了。即使有一两个成员被人收买说假话,也翻不了盘,这就是实用拜占庭容错(PBFT)的直觉。

PBFT 是面向许可链/联盟链的经典共识算法,网络节点数量有限且身份已知,不需要挖矿。协议让主节点(primary)将客户端请求排序后广播给所有副本节点,经过 Pre-Prepare、Prepare、Commit 三阶段消息交互,使诚实节点在同一个视图内对请求顺序达成一致。交易最终确认只需数秒,吞吐量高,消息复杂度约为 O(n²),因此节点规模通常限制在几十到几十个以内。

互助会效率虽高,但只能在熟人圈子里玩——一旦有大量陌生节点混进来,通信量和信任要求都撑不住。看完四种方案,村民们终于明白了一个道理:没有万能的记账法,只有最合适的记账法。

n≥3f+1\displaystyle n \ge 3f + 1
总节点数 n 至少是恶意节点数 f 的三倍加一。例如 7 个节点的网络,最多容忍 2 个拜占庭节点作恶。
  1. 总节点数 n参与 PBFT 共识的验证节点总数。
    nn
  2. 恶意节点上限 f网络最多能容忍的故障或作恶节点数量。
    ff
  3. 三倍加一约束为了在 f 个叛徒中仍保证诚实多数达成一致,总节点必须足够多。
    3f+13f + 1
  4. 不等式含义当 n = 7、f = 2 时,至少需要 2f+1 = 5 个节点确认,共识才能完成。
    n≥3f+1n \ge 3f + 1

共识机制权衡

去中心村最后做了一张「交通工具对照表」:去村口买菜骑单车最快,搬家要叫货车,长途得坐火车。共识机制也一样——PoW 像皮实耐造的货车:安全优先,慢但可靠;PoS 像省油轿车:经济环保;DPoS 像疾驰的小摩托:快但载客量有限;PBFT 像内部通勤面包车:成员固定、路线灵活,但外人挤不进来。

在区块链设计中有著名的不可能三角:去中心化、性能与安全三者难以同时最优。公链通常优先去中心化和安全,牺牲性能(比特币约 7 TPS);DPoS 类公链优先性能,牺牲部分去中心化;联盟链(PBFT)在节点可信的前提下追求高吞吐与低延迟。性能通常用 TPS(每秒交易数)来衡量:

选型建议可以总结为:公开无准入的网络选 PoW/PoS/DPoS,机构间有许可的网络选 PBFT/PoA,混合场景甚至可用「PoS + PBFT」的组合。共识机制没有最好,只有最合适——正如去中心村的交通工具从来不是一辆万能车。

TPS=Ttxtblock\displaystyle \mathrm{TPS} = \frac{T_{\text{tx}}}{t_{\text{block}}}
每秒处理的交易数等于每个区块打包的交易数除以出块间隔。想提升吞吐,要么加大区块,要么加快出块。
  1. 吞吐量 TPS网络每秒能处理的交易笔数,是衡量共识性能的核心指标。
    TPS\mathrm{TPS}
  2. 每块交易数 T_tx单个区块内打包的交易数量,受区块大小上限约束。
    TtxT_{\text{tx}}
  3. 出块时间 t_block连续两个区块之间的平均间隔,比特币约 600 秒,DPoS 可到 0.5 秒。
    tblockt_{\text{block}}
  4. 除法关系两者相除即每秒交易量,两个参数任何一个被压缩都会推高 TPS。
    Ttxtblock\frac{T_{\text{tx}}}{t_{\text{block}}}

AI 应用场景

公链账本状态同步

阶段:网络层共识

解决的问题:公链早期节点间靠人工互传账本,篡改与分叉频发;PoW 让全网节点基于算力竞赛快速确定唯一账本,将双花攻击的成本抬到近乎不可能。

具体案例:以太坊转向 PoS(The Merge)后,能耗降低 99% 以上,验证者质押 32 ETH 参与出块与随机选主——这是 PoS 维护全局账本一致性的现实写照,也直接催生了「质押即服务」产业。

联盟链多方数据协作

阶段:许可链交易共识

解决的问题:银行间跨境支付、供应链金融等领域,多家机构互不信任但需要共享账本;PoW 在十几到几十个节点的网络下性能浪费严重,PBFT 类共识可在许可身份下实现秒级最终一致性。

具体案例:Hyperledger Fabric 使用 Raft/SBFT 等 PBFT 类共识,在 10 到 30 个机构节点间协同。某跨境贸易平台用 PBFT 将订单对账时间从天级缩短到秒级,并确保任何单家机构都无法篡改交易记录。

去中心化 AI 训练的模型一致性

阶段:模型聚合与参数同步

解决的问题:联邦学习与去中心化训练中,恶意参与方可能投毒或伪造梯度;共识机制保证全局模型参数的来源可信,只有完成质押并通过验证的更新才能被聚合进模型。

具体案例:Bittensor 等去中心化 AI 网络引入 PoS 式质押——矿工提交模型更新前先质押代币,表现差会被罚没,从而激励诚实训练;同类思路也用于 AI 数据市场的版权存证与贡献溯源。

Python 演示

python78 行
import hashlibimport randomimport time  class Block:    """极简区块:记录索引、交易数据和随机数 nonce"""    def __init__(self, index, data, nonce=0):        self.index = index        self.data = data        self.nonce = nonce        self.hash = self.compute_hash()     def compute_hash(self):        payload = f"{self.index}|{self.data}|{self.nonce}".encode()        return hashlib.sha256(payload).hexdigest()  def pow_mine(block, difficulty=3):    """PoW:不断变换 nonce,直到哈希以 difficulty 个 0 开头"""    target = "0" * difficulty    while not block.hash.startswith(target):        block.nonce += 1        block.hash = block.compute_hash()    return block  def pos_select(stakes, seed=None):    """PoS:按质押比例加权随机选一个记账节点"""    if seed is not None:        random.seed(seed)    total = sum(stakes.values())    r = random.uniform(0, total)    for node, stake in stakes.items():        r -= stake        if r <= 0:            return node    return list(stakes.keys())[-1]  def dpos_select(delegates, seed=None):    """DPoS:从已选出的代表中随机指定本轮记账人"""    if seed is not None:        random.seed(seed)    return random.choice(delegates)  def pbft_confirm(validators, f=1):    """PBFT:n 个验证者中需要至少 2f+1 个确认才能达成共识"""    need = 2 * f + 1    votes = random.sample(validators, min(need, len(validators)))    return len(votes) >= need, need  if __name__ == "__main__":    stakes = {"alice": 30, "bob": 50, "carol": 20}     print("=== PoW 工作量证明 ===")    block = Block(0, "alice -> bob 10eth")    pow_mine(block, difficulty=3)    print(f"区块哈希: {block.hash}")    print(f"nonce: {block.nonce}")     print("\n=== PoS 权益证明 ===")    for i in range(3):        picked = pos_select(stakes, seed=time.time())        print(f"第 {i + 1} 轮记账人: {picked}")     print("\n=== DPoS 委托权益 ===")    delegates = ["alice", "carol"]    for i in range(3):        print(f"代表 {dpos_select(delegates, seed=i)} 出块")     print("\n=== PBFT 拜占庭容错 ===")    validators = ["alice", "bob", "carol", "dave"]    ok, need = pbft_confirm(validators, f=1)    print(f"节点数: {len(validators)}, 至少需要 {need} 个确认")    print(f"共识达成: {ok}")
目的:用不到 80 行代码模拟四种共识机制的核心逻辑,帮助理解「如何从无信任节点中选出记账者并达成一致」。
  1. payload = f"{self.index}|{self.data}|{self.nonce}".encode()将区块内容序列化为字节串,作为哈希函数的输入。
  2. return hashlib.sha256(payload).hexdigest()调用 SHA-256 生成固定长度的哈希值,这是 PoW 数学题的「题面」。
  3. while not block.hash.startswith(target):PoW 核心循环:哈希不以足够多的 0 开头就继续改 nonce。
  4. block.nonce += 1每轮尝试一个全新的随机数,体现「暴力穷举」的思想。
  5. total = sum(stakes.values())计算全网总质押量,作为 PoS 抽签桶的总签数。
  6. r = random.uniform(0, total)从 0 到总质押量之间取一个随机数,决定此次中签者。
  7. if r <= 0: return node随机数落入某个节点的质押区间,该节点即被选为记账人。
  8. need = 2 * f + 1PBFT 的法定确认数:4 个节点容忍 1 个恶意节点时,至少需要 3 个确认。

常见误区

误区PoW 消耗大量电力太浪费了,PoS 不挖矿不耗电,所以是零成本的完美方案。

正解PoW 的电力消耗本质上是购买「安全服务」的支出,如同村里举办数学比赛烧掉的蜡烛。PoS 虽然省电,但需要验证者锁定大量资金,这些资金有时间成本(机会成本)。换句话说,PoS 用「资本占用」替代了「能源消耗」,两者都要为安全付出真实代价,只是支付的形态不同。

为何常见:人门只看到 PoW 的「费电」表象,而忽略了 PoS 中质押资产的流动性折损,把「物理消耗为零」误当成「成本为零」。

误区区块链节点数量越多,网络一定越安全、性能一定越好,所以共识机制应该尽量吸引更多人参与。

正解节点数量是双刃剑。对 PBFT 这类通信复杂度为 O(n²) 的算法,节点从 10 个增加到 100 个,网络负载会上升约 100 倍,性能急剧下降;对 PoW,节点多确实提升去中心化,但出块速度仍受网络传播延迟限制。安全的本质是「恶意节点占比不超过容错上限」,而不是节点绝对数量多。

为何常见:人们把「去中心化」简单等同于「节点多」,忽略了不同共识机制对节点规模的适应范围完全不同。

误区DPoS 只有几个代表节点记账,和中心化服务器没什么区别,完全不可信。

正解DPoS 的核心保护在于「代表可被替换」。普通持币人虽然没有直接记账权,但拥有实时投票权和弹劾权,就像村里的账房先生一旦记假账就会被村民当场撤换。代表节点只是「共识执行者」,权力最终来源于持币人的委托,这是一种「可流动的中心化」,与不可问责的中心化服务器有本质区别。

为何常见:观察者只看到「少数节点出块」的表面,却忽略了 DPoS 在治理层设计的问责与轮换机制。

误区PBFT 叫「拜占庭容错」,所以它能防住任何数量的恶意节点,是最安全的共识。

正解PBFT 的容错上限是 f 个恶意节点,网络总数 n 必须满足 n ≥ 3f+1。如果恶意节点数超过 f(比如 7 个节点里有 3 个叛徒),共识就可能被破坏。它只保证在「大多数诚实」的前提下安全,并不提供绝对免疫——互助会里如果一半人都是骗子,任何投票规则都救不了。

为何常见:「拜占庭容错」这个词听起来很强,容易让人误以为是无条件安全,实际上它是一道有严格上限的数学题。

面试题

Q1. 在 PoW 中,矿工获得记账权的概率主要由什么决定?

单选题 · easy

  • A.电脑的内存容量大小
  • B.算力占全网总算力比例← 正确答案
  • C.钱包账户余额大小多少
  • D.节点连网在线时长

答案:B。PoW 的记账权分配是「算力竞赛」:矿工占总算力的比例越高,率先找到合法 nonce 的概率越大。就像村里比赛解数学题,蜡烛烧得多的人中奖概率更高。内存、余额和在线时长都不直接参与竞赛。

Q2. PoS 与 PoW 相比最显著的优势是什么?

单选题 · easy

  • A.无需消耗大量电力资源← 正确答案
  • B.完全无需任何网络连接
  • C.永远不需要进行记账打包
  • D.验证者无需持续在线参与

答案:A。PoS 用「质押资金」替代「算力消耗」,把物理能源换成了资本占用,因此大幅降低了电力开销。但验证者仍需要联网参与出块,网络连接和记账打包依然存在。就像一个村子从「烧蜡烛比赛」改为「粮食抽签」,不费烛火了,但你要把粮食押在仓库里。

Q3. PBFT 共识中总节点数 n 与可容忍恶意节点 f 的关系是?

单选题 · mid

  • A.节点总数需大于等于 3f 加 1← 正确答案
  • B.节点总数需大于等于 2f 加 1
  • C.节点总数需大于等于 4f 减 1
  • D.节点总数需等于 3f 减 1

答案:A。PBFT 的容错结论是 n ≥ 3f+1:7 个节点的网络最多容忍 2 个叛徒,因为需要 2f+1 = 5 个诚实节点形成可靠多数。B 选项的 2f+1 是「最少正常响应数」,不是总节点数的约束条件,容易混淆。

Q4. DPoS 中普通持币者参与共识的主要方式是?

单选题 · mid

  • A.直接在本地参与运行挖矿
  • B.投票选举代表节点代为记账← 正确答案
  • C.手动逐笔验证每一笔交易
  • D.向所有节点广播自己的余额

答案:B。DPoS 让持币人通过投票方式选出代表节点,由代表轮流出块。普通持币者不直接挖矿,也不需要逐笔手动验证,而是用「选票」间接参与共识,就像村民投票选账房先生,由账房先生负责日常记账。

Q5. 关于最长链规则,下列说法正确的是?

多选题 · mid

  • A.节点选择累计工作量最大的链作为主链← 正确答案
  • B.恶意节点可以任意伪造一条更长的合法链
  • C.算力占优者更可能延续最长链而获胜← 正确答案
  • D.最长链规则会永久保留所有分叉区块

答案:AC。最长链规则要求节点选择累计工作量最大的分支作为主链,算力越高的矿工越有可能在主链上继续延长它。恶意节点要伪造更长的合法链必须投入超过全网一半的算力,不是「任意伪造」;分叉区块最终会被丢弃,不会永久保留。

Q6. PoS 中解决「无利害关系」问题的常见方案是?

单选题 · hard

  • A.将出块奖励直接进行减半
  • B.对作恶者实施质押惩罚← 正确答案
  • C.把区块体积扩大一倍
  • D.让所有节点固定顺序出块

答案:B。「无利害关系」指验证者在分叉时可以在所有分叉上同时投票,因为每条链都投票几乎没有额外成本。惩罚机制(slashing)通过没收作恶者的质押币,让「骑墙」变得极其昂贵——就像在抽签村,你押了粮食还在所有账本上乱画,仓库就把你的粮食全部充公。

Q7. 关于共识的权衡,下列理解正确的是?

多选题 · mid

  • A.不存在所有维度同时最优的共识← 正确答案
  • B.公链通常会牺牲性能换取去中心化← 正确答案
  • C.联盟链以许可身份换取高吞吐← 正确答案
  • D.任何场景使用 PoW 都是合理的

答案:ABC。共识机制存在不可能三角:去中心化、性能、安全难以同时拉满。公链为了让任意节点都能加入,往往让出块更慢;联盟链用「许可准入」换来了 PBFT 的高吞吐。D 选项过于绝对——若场景是十几个机构内部协作,用 PoW 反而是不合理的浪费。

Q8. 一笔交易被区块链网络「确认」通常意味着?

单选题 · easy

  • A.交易已被发送至内存池中等待确认
  • B.后续区块足够多且已被多数节点认可← 正确答案
  • C.只有出块节点认为这笔交易是有效的
  • D.交易被永久撤回给付款方账户

答案:B。确认的本质是「足够多的后续区块构建在其之上,并被网络中大多数节点认可」。就像账本被后来很多页压住,越压越难翻案。仅进入内存池或只有单个节点认可,都不算真正确认;交易被撤回更是与确认无关的错误说法。

Q9. 在 PBFT 协议中,主节点(primary)的主要职责是?

单选题 · hard

  • A.长期掌管所有节点的私钥
  • B.对请求排序并广播给副本节点← 正确答案
  • C.单独决定并写入最终区块内容
  • D.阻止所有新节点加入网络

答案:B。PBFT 的主节点是「编排出纳员」:把客户端请求排好顺序广播给所有副本节点,随后各节点通过三阶段交互共同确认。它没有独裁权力,更不能持有大家的私钥;是否允许新节点加入由许可链的准入机制负责,而非主节点单独决定。

Q10. 攻击者对 PoW 公链发起 51% 攻击,下列说法正确的是?

多选题 · extreme

  • A.攻击者需掌握超过全网的半数算力← 正确答案
  • B.先转出资产再在分叉上重写交易← 正确答案
  • C.攻击成功会销毁所有矿机硬件
  • D.历史已确认区块几乎无法被篡改← 正确答案

答案:ABD。51% 攻击要求算力过半,攻击者可先花掉资产(双花),再在分叉链上重新打包交易让原交易失效;但历史区块已被大量后续区块覆盖,重算工作量极大,难以篡改。攻击不会销毁任何矿机硬件——它只是账本重写,不是物理灾难。