桃花村的集市每天都热闹非凡:张三用两只鸡换李四一袋米,王五用一坛酒换赵六一篮果子。但大家很快发现一个难题——账本记在谁家,谁家就可能偷偷改账。于是村民们决定:每家都抄一份账本,谁也不完全信谁,但也谁都不能赖账。可这又带出新麻烦:张三说“鸡已经换了米”,李四却说“没收到”,两家的账本对不上,到底听谁的? 这就是区块链要解决的核心难题——共识:一群彼此不信任的人,在没有“村长”的情况下,如何让所有诚实村民对同一本账达成一致? 区块链世界给了三种主流回答。PoW 像办解题大赛:谁先算出一道路题,谁就有资格记账,想改账就得把之后所有账页重算一遍;PoS 像按股说话:谁质押的粮食多,谁当轮值记账员,记假账就扣押粮;BFT 像村委会表决:哪怕有几个委员故意撒谎,只要叛徒不超过三分之一,投票照样得出正确结论。读完这篇文章,你不仅能分清三者区别,还能理解“51% 攻击为什么危险”“比特币为何要等 6 个确认”这些区块链世界的常识——它们本质上是同一道数学题的三种解法。
对 AI 从业者而言,共识机制是去中心化系统的“信任引擎”:理解它,你才能在设计联邦学习聚合、分布式训练同步、可信数据存证时,真正明白“如何在充满噪声与恶意的环境中达成一致”。
目录
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
共识问题起源:账本放谁家都不放心
桃花村曾把账本放在村长家,每到月底结算,数目总和村民的记忆对不上,大家怀疑村长做了手脚;后来换成供在祠堂,又有人半夜偷改。最后有人提议:干脆每家都抄一份!然而第二天麻烦就来了——张三说李四欠他两只鸡,李四家的账本上却明明写着“已还清”。
两家账本不一致,谁的是“真相”?在分布式系统里,这就是著名的共识问题:多个节点各自维护一份状态副本,彼此通过网络通信,在存在故障甚至恶意节点的情况下,必须就同一个值达成一致。区块链把“记账”拆解成三步:由谁打包交易?大家是否认账?分叉了听谁的?这三个问题合起来,就是“如何达成共识”。
具体来说,共识要解决三件子事:记账权——哪个节点有权把新交易打包成区块;有效性验证——交易是否合法,尤其要防“双花”(同一笔钱花两次,好比张三只有一只鸡,却同时向李四和王五承诺“鸡归你”);分叉收敛——两个节点同时出块导致账本分叉时,最终以哪条为准。在分布式理论里,CAP 定理告诉我们网络分区(P)不可避免,一旦分区发生,可用性(A)和一致性(C)必须有所取舍。区块链共识正是选择了在“有恶意节点 + 网络延迟”的最坏假设下,保证账本最终收敛到唯一一本——这是对“最终一致性”的极致工程化。
桃花村最终明白了:问题不在于账本放谁家,而在于“如何让所有人认可同一本账”。这个认可机制,就是共识。接下来村民开会讨论出的三套记账制度,就是 PoW、PoS 和 BFT。
PoW原理机制:解题大赛赢记账权
村民开大会,老村长拍板:每月举办一场“解题大赛”!难题由全村公认的规则生成——把本月所有交易、上一个记账人的签名和一堆随机数混在一起,算出一个特定格式的答案。全村人抱着算盘猛算,谁先算出就把答案贴到祠堂墙上,大家验证无误,新账页就归他写,还额外奖一筐鸡蛋。
这就是工作量证明(Proof of Work, PoW)。比特币的“解题”如下:矿工把待打包交易、前一区块哈希、时间戳等组成区块头,再拼接一个随机数 nonce,整体做 SHA-256 哈希。记账权 = 找到一个 nonce,使输出值小于某个目标值 Target。SHA-256 是典型的单向函数:给任意输入,输出是一串 256 位看似随机的比特;从输出倒推输入则毫无捷径,只能逐个试 nonce。Target 越小,合法答案越稀有,难度就越高。比特币每 2016 个区块(约两周)调整一次难度,让全网平均 10 分钟出一个块。成功挖出新块的矿工广播出去,其他节点验证哈希合法后接在自己的链尾;若有两个合法区块形成分叉,约定“最长链胜出”。
解题大赛的精髓不是题目本身算起来多复杂,而是“算盘功夫”作担保:想篡改旧账页,就得从那一页开始重算之后所有答案,全村人都会发现你在作弊,成本高得吓人。这就是 PoW 用物理世界的算力,换取数字世界的信任。
- H 哈希函数把随机数 nonce 与区块内容拼接后做 SHA-256 哈希,得到 256 位二进制串,这是“考题”的生成方式。
- Target 目标值Target 是一个 256 位的大整数,哈希输出被当作一个数,要求它严格小于 Target,即答案必须落在很小的区间内。
- 概率计算哈希输出在区间上均匀分布,落在目标区间内的概率就是 Target 除以 2 的 256 次方,这个值越小越难。
- 难度调整难度与 Target 成反比——Target 减半,难度翻倍;全网算力涨了,就调小 Target 让题更难。
PoS权益机制:按股说话选记账人
解题大赛太费蜡烛,桃花村改行“股份记账制”:各家把囤的粮食按比例质押到村公库,质押越多,越可能被抽中当“轮值记账员”。抽签由公开规则进行,没人能预测作弊;但有个硬约束——记假账,质押的粮食直接没收,赔了夫人又折兵。
这是权益证明(Proof of Stake, PoS)。验证者(validator)先把代币质押锁定,系统按质押量占比做加权随机选举,选出下一位出块人;出块人打包交易并签名,其他验证者验证后投票确认。诚实出块有奖励,作恶被举报则触发罚没(slashing)。加权随机选举的数学本质很朴素:
现代 PoS 的典型代表是以太坊 Casper FFG:它引入“检查点”和两轮投票,让已确认区块获得最终性——不可逆转;同时用 RANDAO 等随机源保证选举不可预测、难以操纵。股份记账制的妙处是利益绑定:记账员自己也是股东,账本坏了大家一起亏,所以他有强烈动机把账记好。PoS 把信任从“消耗能源”换成“押上真金白银”,省电高效,但也带来了“富者愈富”的争议。
- S_i 质押量第 i 个验证者质押的代币数量,相当于入股本钱,质押越多权重越大。
- 总质押量对全网所有验证者的质押量求和,构成整个系统的安全保证金池。
- 加权概率个体质押除以总质押即被选为出块人的概率,质押翻倍则概率翻倍。
- 罚没约束作恶收益必须小于罚没损失,理性验证者才会选择诚实,这是 PoS 安全的经济学根基。
BFT容错算法:有叛徒也能开好会
村民们又提出第三种办法:账本由村委会集体签字。每次要写新账页,7 位村委委员逐一传阅、签字确认,签满 5 份才生效。即便有 2 个委员被邻村收买、故意说“账没错”,只要 5 个诚实委员坚持,假账就签不下来;但如果叛徒多达 3 个,局面就彻底失控了。
这正是“拜占庭将军问题”:公元 10 世纪的拜占庭帝国,多路将军只能靠信使通信,其中可能有叛徒故意传达矛盾命令,忠诚将军如何保证行动统一?1982 年 Lamport 等人证明,在没有额外假设的条件下,若恶意节点数为 f,总节点数必须满足下式才能达成共识:
1999 年 Castro 和 Liskov 提出 PBFT(Practical Byzantine Fault Tolerance),把通信复杂度从指数级降到多项式级。流程分三阶段:pre-prepare(主节点提出提案)→ prepare(各节点广播认可)→ commit(确认收到 $2f+1$ 条一致消息后提交)。每个阶段,节点都必须等到足够多的确认才前进;若主节点作恶或超时,就触发 view-change(视图切换)换主,继续共识。Hyperledger Fabric、Tendermint 等联盟链共识都属于 BFT 家族。村委会表决的奥义是“冗余确认”:不信任任何一个人的话,只信任“足够多人同时确认”的声音。只要有超过三分之二的诚实委员,谎言就会被多数决淹没。
- n 节点总数参与共识的全部节点数量,是系统规模的度量。
- f 恶意节点数可能说谎、串通、发送矛盾消息的拜占庭节点数量。
- 阈值推导诚实节点要形成多数决,需要至少 $2f+1$ 个诚实者压过 f 个叛徒的谎言,故 $n - f \geq 2f + 1$,化简即得阈值。
- 消息复杂度PBFT 每轮要交换平方量级的消息,节点数一多通信就爆炸,所以它适合百级节点以内的联盟链。
性能对比分析:三条路线的取舍
三种记账制度各试办了一个月,桃花村把结果贴在祠堂门口:解题大赛(PoW)十天才出一条新账,但人人可参赛、最公平;股份记账(PoS)一炷香就能出一页,速度快多了;村委会表决(BFT)几乎立刻出结果,但要 7 个委员坐在一起开会,规模一大就召集不齐。
区块链的性能指标同样是一场三角取舍:吞吐量、最终性、去中心化程度很难同时拉满。量化吞吐量的核心公式是:
三条路线的画像各不相同:PoW 吞吐量最低但开放度最高,最终性是概率性的,靠等确认数来增强信心;PoS 吞吐量中等,通过检查点提供确定最终性,能耗极低,但质押大户话语权大;BFT 类算法吞吐量高、交易提交即最终,但节点需准入,去中心化程度最低。桃花村最终明白:没有完美的制度,只有适合村情的制度。集市大、陌生人多,就用 PoW 这种“人人可参与”的公平赛制;熟人社会、讲究效率,就用 BFT 的小圈子表决;想环保高效,就用 PoS。这就是“不可能三角”——想要两边稳,就得压住第三边。
- N_tx 每区块交易数一个区块能打包的交易笔数,受区块大小上限和单笔交易体积限制。
- T_block 出块间隔平均产生一个区块的时间,比特币约 600 秒,以太坊约 12 秒。
- 吞吐量 TPS两者相除,就是系统每秒能处理的交易数,比特币约 7 TPS,以太坊约 15 TPS。
- 出块间隔约束出块间隔不能低于区块在网络中的传播时延,否则分叉概率急剧上升,吞吐量天花板由此而来。
经典应用案例:三个村庄三个选择
邻村的人听说桃花村的改革,纷纷来取经。靠山吃山的采矿村选了“解题大赛”,因为矿工多、电力便宜;平原种粮村选了“股份记账”,因为大户多、好商量;商贾小镇选了“村委会表决”,因为往来都是老主顾,关起门来效率第一。
现实中,比特币、以太坊和联盟链正是这样各取所需。比特币首创 PoW,用全网算力铸就“数字黄金”的信任;以太坊早期同样跑 PoW,2022 年“合并”升级到 PoS(Casper FFG + LMD GHOST),能耗降低 99% 以上;Hyperledger Fabric 等联盟链采用 BFT 类算法(Raft、IBFT、PBFT 变体),服务企业级场景。以比特币为例,它的分叉解决规则是“最长链胜出”:
以太坊的 PoS 与比特币的 PoW 最大区别在于最终性:Casper 让每轮检查点投票后,已确认区块一锤定音、不可回滚。联盟链则完全信任“准入制”——节点需授权加入、身份已知,因此 BFT 的小规模、高吞吐优势得以充分发挥。共识没有标准答案,只有“匹配场景”的答案。三个邻村的选择背后,是算力成本、能源禀赋、信任半径的综合权衡——理解这一点,比背下三种算法的名字重要得多。
- C 候选链集合当前节点看到的所有合法分叉链组成的集合。
- |C| 链长度链上区块的数量,代表了这条链累计的工作量。
- argmax 选择找出使链长度最大的那条链,节点把它当作有效账本继续延伸。
- 收敛机制新区块打破分叉平衡,全网逐步向最长链收敛,分叉持续存在的概率随时间递减。
共识安全挑战:总有刁民想害账
账本制度定了,桃花村依然不宁静。有富商想囤积全村算盘,垄断“解题大赛”的答案;有粮商想多报质押、玩空手套白狼;还有隔壁村派人混进来假扮村民,一心把水搅浑。
这些分别对应区块链世界的经典攻击:51% 攻击、Nothing-at-Stake、女巫攻击。共识机制的安全,本质上是让“作恶成本”高到无人愿意支付。以 PoW 的双花攻击为例,若攻击者算力占比为 q,诚实节点占比为 p(p > q),攻击者落后 z 个区块后追上诚实链的概率为:
具体攻击面还有:51% 攻击——掌握超半数算力(或 2/3 以上质押)可重写历史,防御靠提高算力/质押门槛;Nothing-at-Stake(无利害关系)——PoS 验证者在多个分叉同时出块几乎零成本,会阻碍收敛,Casper 用罚没机制惩罚“两边下注”者;长程攻击——攻击者购买旧私钥从创世附近重写整条链,靠检查点机制防御;女巫攻击——一个实体伪装成千万个节点,PoW 用算力、PoS 用质押提高伪装成本。桃花村最终在祠堂门口立了块碑,写着:“信任不靠品德,靠成本。”每一种共识,本质上都在回答同一个问题:让账本出错,你到底要花多大代价?代价足够大,账本就是安全的。
- p 与 q 出块率p 是诚实节点出块概率,q 是攻击者出块概率,追赶能成功的前提是 $p > q$。
- z 落后区块数攻击者为了双花,先在私下分叉上重写历史,此时他通常已落后 z 个区块。
- 追上概率每多等 1 个确认,攻击成功率就乘以小于 1 的因子 q/p,因此随 z 指数衰减。
- 工程应用取 q = 0.1 时,追 6 个区块的概率已低于万分之二,所以 6 确认成为安全经验值。
AI 应用场景
联邦学习的恶意更新防御
阶段:分布式模型训练 / 聚合
解决的问题:联邦学习中,中心服务器聚合各客户端梯度,恶意客户端可投毒梯度(数据中毒、模型后门),这正是“拜占庭节点”问题。传统平均聚合毫无抵抗力。借鉴 BFT“多数决 + 冗余确认”的思想,使用 Krum、Trimmed Mean 等鲁棒聚合算法,只信任与多数邻居接近的梯度,如同 BFT 只信任 $2f+1$ 条一致消息。
具体案例:某医疗联盟 10 家医院联合训练影像模型,其中 1 家设备被入侵并与外部串通,上报异常梯度。采用 Krum 聚合后,被入侵节点的梯度因与其他 9 家相差过大而被丢弃,模型精度保持正常,训练也未中断。
AI 数据资产存证与溯源
阶段:数据治理 / 质量审计
解决的问题:AI 训练数据的来源、授权、版本难以审计。联盟链 BFT 共识提供确定性最终性与准入信任,适合在企业间做数据存证——每次数据快照的哈希打包上链,训练时随时验证数据未被替换。
具体案例:某自动驾驶公司把路采数据的哈希实时写入 Hyperledger Fabric 链上,监管方与数据提供方各运行一个节点,通过 BFT 共识保证任何一方无法事后篡改数据版本,顺利通过了采购数据的合规审计。
大模型 Checkpoint 可信快照
阶段:模型训练容错与恢复
解决的问题:大模型训练常跨数月,checkpoint 若被静默损坏则前功尽弃。PoW 哈希链思想:每个 checkpoint 记录上一 checkpoint 的哈希,形成不可逆链,训练脚本周期性校验,任何损坏都能快速定位。
具体案例:某 AI 实验室训练千亿参数模型时,把每 1000 步的 checkpoint 哈希串成哈希链并广播给 3 个存储节点。某次断电后主存储损坏,通过哈希链校验发现损坏从第 42 个 checkpoint 开始,直接回滚到第 41 个恢复训练,节省了 11 天算力。
Python 演示
import hashlibimport jsonimport random class Block: """区块链中的一个区块""" def __init__(self, index, data, prev_hash, nonce=0): self.index = index self.data = data self.prev_hash = prev_hash self.nonce = nonce self.hash = self.compute_hash() def compute_hash(self): block_str = json.dumps( {"index": self.index, "data": self.data, "prev_hash": self.prev_hash, "nonce": self.nonce}, sort_keys=True ) return hashlib.sha256(block_str.encode()).hexdigest() class MiniBlockchain: """迷你区块链,支持PoW与PoS两种出块方式""" def __init__(self, difficulty=4): self.chain = [Block(0, "创世区块", "0" * 64)] self.difficulty = difficulty def last_block(self): return self.chain[-1] def pow_mine(self, data): """PoW:穷举nonce,使区块哈希以difficulty个0开头""" nonce = 0 while True: block = Block(self.last_block().index + 1, data, self.last_block().hash, nonce) if block.hash.startswith("0" * self.difficulty): return block nonce += 1 @staticmethod def pos_select(stakes): """PoS:按质押比例加权随机选出记账人""" total = sum(stakes.values()) r = random.uniform(0, total) acc = 0 for name, stake in stakes.items(): acc += stake if r <= acc: return name return list(stakes.keys())[-1] def add_block(self, block): if block.prev_hash != self.last_block().hash: raise ValueError("区块哈希断裂,数据可能被篡改") self.chain.append(block) def verify(self): """校验整条链的哈希链接是否完整""" for i in range(1, len(self.chain)): cur = self.chain[i] prev = self.chain[i - 1] if cur.hash != cur.compute_hash(): return False if cur.prev_hash != prev.hash: return False return True def main(): bc = MiniBlockchain(difficulty=4) print("=== PoW 挖矿 ===") b1 = bc.pow_mine("张三 向 李四 转 2只鸡") bc.add_block(b1) print("出块nonce:", b1.nonce, "哈希:", b1.hash[:20]) print("=== PoS 按质押记账 ===") stakes = {"张员外": 300, "李掌柜": 200, "王猎户": 100} for i in range(3): miner = bc.pos_select(stakes) block = Block(bc.last_block().index + 1, "第%d笔交易,记账人:%s" % (i + 1, miner), bc.last_block().hash) bc.add_block(block) print("记账人:", miner, "区块:", block.hash[:12]) print("=== 篡改检测 ===") bc.chain[1].data = "张三 向 李四 转 999只鸡" print("校验通过?", bc.verify()) print("链上区块数:", len(bc.chain)) if __name__ == "__main__": main()
return hashlib.sha256(block_str.encode()).hexdigest()哈希是单向函数,任何人都能轻易对区块内容重新计算,作为验账的依据。if block.hash.startswith("0" * self.difficulty)PoW 的“题”:找 nonce 使哈希以 difficulty 个 0 开头,只能逐个穷举,difficulty=4 时平均要试 6 万多次。r = random.uniform(0, total)PoS 抽签:生成 0 到总质押之间的随机数,相当于转盘指针。if r <= acc质押量累加形成转盘扇区,指针落在谁的区间谁就获得记账权,质押越多扇区越大。if cur.hash != cur.compute_hash()篡改数据后重新计算的哈希与当初记录不一致,立刻暴露。if cur.prev_hash != prev.hash每个区块都指向前一个区块的哈希,链上任何一环被改都会导致整链校验失败。
常见误区
误区PoW 是要算一道特别复杂的数学题,哈希函数运算量非常大,所以每 10 分钟才出一个块。
正解恰恰相反,SHA-256 本身极快,现代矿机一秒能算上百亿次。难的是“猜目标值”:输出是伪随机的,只能不断换 nonce 去撞,平均要撞 $2^{\text{难度}}$ 次才能命中小概率事件。就像抽奖——验奖规则很简单,但中奖概率低得离谱,所以平均 10 分钟才有人中一次。
为何常见:把“需要海量尝试”误解成“算法复杂”,没抓住哈希输出均匀随机这一本质。
误区PoS 完全按质押量说话,质押少的散户永远当不上记账人,穷人没机会。
正解质押量只决定概率权重,不是绝对垄断。现代 PoS 用 RANDAO/VDF 等随机源引入不可预测性,小概率事件也会发生;散户还可把代币委托给质押池参与分成。更重要的是,记账人打包的区块必须经过其他验证者验证,选上也绝不等于能乱来。
为何常见:只看到加权随机选举的表面,忽略了概率机制与验证机制的制衡。
误区PBFT 出块后也要等几个区块才安全,跟比特币等 6 个确认差不多。
正解PBFT 是确定性共识:prepare/commit 两轮投票完成后,交易立即最终(instant finality),任何诚实节点都不会再接受包含矛盾交易的分叉。PoW 因为出块是“谁先解出题”的竞争,才需要概率上的多区块确认。把两者混为一谈,是用 PoW 的直觉去套 BFT。
为何常见:先学了 PoW,容易把“确认数”机制推广到所有共识,忽略了投票锁定与概率竞争的本质差异。
误区区块链的不可篡改是数学保证,任何人都改不了任何历史记录。
正解不可篡改本质是“经济保证”:篡改需要重算目标区块之后的所有区块(PoW),或被 2/3 以上质押者签字(PoS),成本高到不划算。掌握 51% 算力理论上仍可重写近期历史。正因为是概率与成本保证,比特币才引入 6 个确认的安全阈值。
为何常见:把“作恶成本极高”当成了“作恶不可能”,混淆了数学保证与经济学保证。
面试题
Q1. 区块链共识机制要解决的核心问题是什么?
- A.让所有节点对账本内容达成一致← 正确答案
- B.提高交易手续费来保证系统安全
- C.加密交易数据防止第三方窃听
- D.压缩账本体积以减少存储开销
答案:A。共识解决的是“无中心权威时,多个节点如何就同一个账本状态达成一致”,对应桃花村“让所有村民认可同一本账”。B 是收费策略,C 是传输加密,D 是存储优化,都与“达成一致”无关。
Q2. PoW 中的“难度”主要取决于什么?
- A.目标值 Target 越小哈希搜索越难← 正确答案
- B.哈希函数本身的计算量十分庞大
- C.区块中包含的交易数量十分庞大
- D.参与竞争挖矿的节点数量非常众多
答案:A。难度与 Target 成反比,Target 越小合法哈希越稀有,平均尝试次数越多。哈希计算本身很快,交易数量与节点数量都不直接决定难度,后者只影响难度调整的触发时机。
Q3. PoS 中验证者被选为出块人的概率取决于什么?
- A.质押代币占全网总质押量的比例← 正确答案
- B.节点服务器持续运行的时间长短
- C.节点接入互联网的带宽大小
- D.节点历史成功出块的次数排名
答案:A。PoS 按质押量加权随机选举,概率 = 个体质押 / 总质押。运行时长、带宽、历史出块数都不是核心权重,这正是 PoS 与“贡献度积分”类机制的本质区别。
Q4. PBFT 能容忍 f 个拜占庭节点,节点总数 n 需要满足什么条件?
- A.节点总数满足 n 大于等于 3f 加 1← 正确答案
- B.节点总数满足 n 大于等于 2f 加 1
- C.节点总数满足 n 大于等于 4f 加 1
- D.节点总数满足 n 大于等于 f 加 2
答案:A。诚实节点至少需要 $2f+1$ 条一致消息才能压过 f 个叛徒的谎言,因此 $n - f \geq 2f + 1$,即 $n \geq 3f + 1$。B 是崩溃容错(Raft)的阈值,C、D 无对应理论。
Q5. 比特币建议等 6 个确认再认为交易安全的数学依据是什么?
- A.攻击者追上的概率随确认数指数下降← 正确答案
- B.交易手续费在六个区块后自动降低
- C.六个区块后全网节点必然完成同步
- D.六个区块后监管机构完成审查
答案:A。双花攻击追上诚实链的概率是 $P(z) = (q/p)^z$,随确认数 z 指数衰减,取 q=0.1 时 6 个确认后概率低于 0.0002%。手续费、同步与监管都与这个数学结论无关。
Q6. 下列哪一项不属于区块链共识需要解决的问题?
- A.让节点决议由谁打包新交易为区块
- B.防止同一笔资金被重复花费两次
- C.分叉发生后账本最终能收敛到一条链
- D.对账本内的交易内容进行加密保护← 正确答案
答案:D。共识解决记账权、防双花、分叉收敛三件事;交易加密属于密码学层的隐私保护,与“节点间达成一致”无关,即使用 RSA 加密也得靠共识决定谁记账。
Q7. PoS 中的 Nothing-at-Stake(无利害关系)问题指的是什么?
- A.验证者可在多个分叉链同时出块而几乎零成本← 正确答案
- B.验证者质押的代币无法通过正常流程赎回
- C.验证者长期离线导致拿不到任何记账奖励
- D.验证者持有的代币价值随通胀持续缩水
答案:A。PoS 出块不消耗算力,验证者在多个分叉上同时出块几乎零成本,会导致分叉难以收敛。Casper 用罚没机制惩罚“两边下注”。B 是流动性问题,C 是离线惩罚,D 是通胀问题,均非此概念。
Q8. 关于 PoW 与 PoS 的对比,下列说法正确的有哪些?
- A.PoW 靠算力竞争而 PoS 靠质押经济← 正确答案
- B.PoS 通常比 PoW 消耗更少能源← 正确答案
- C.PoW 提供的最终性是概率意义上的← 正确答案
- D.PoS 模式下无需验证其他节点的区块
答案:ABC。PoW 用算力换记账权,PoS 用质押权重换记账权,且 PoS 不耗电、更环保;PoW 出块是概率竞争,需等确认数换取安全。D 错误:PoS 出块人打包后,其他验证者仍须验证区块内容。
Q9. 关于 PBFT,下列描述正确的有哪些?
- A.要求节点数满足 n 大于等于 3f 加 1← 正确答案
- B.交易提交完成后具有即时最终性← 正确答案
- C.适合节点数量非常多的公有链场景
- D.主节点作恶时可通过视图切换更换← 正确答案
答案:ABD。PBFT 的容错阈值是 $n \geq 3f+1$,两轮投票提交后交易不可回滚(即时最终性),主节点恶意或超时触发 view-change 换主。C 错误:PBFT 消息复杂度为 $O(n^2)$,节点一多通信开销爆炸,只适合联盟链。
Q10. 关于区块链共识的安全性,下列说法正确的有哪些?
- A.掌握 51% 算力理论上可以重写历史← 正确答案
- B.设置检查点可防御长程攻击← 正确答案
- C.双花攻击指同一笔资金被花费两次← 正确答案
- D.女巫攻击无法被任何共识机制抵抗
答案:ABC。掌握 51% 算力(PoW)或 2/3 质押(PoS)可重写近期历史;检查点锁定历史高度,使旧私钥重写失效;双花即同一笔钱花两次。D 错误:PoW 用算力成本、PoS 用质押成本都能显著提高女巫攻击门槛。