区块链基础测验
本测验检查你对共识、Merkle 树、最终性和运维特征的理解。
选择题
- 应如何比较故障模型?
- A) 区块链是分布式的,而 etcd 是单节点的
- B) 比较所选的共识机制:etcd/Raft 属于 CFT;某些区块链使用 BFT,而许可型 Fabric 也可以使用 CFT Raft
- C) 区块链提供强一致性,而 etcd 提供最终一致性
- D) etcd 不使用密码学
显示答案
答案:B) 比较所选的共识机制:etcd/Raft 属于 CFT;某些区块链使用 BFT,而许可型 Fabric 也可以使用 CFT Raft
说明:Fabric 3.x 还提供 SmartBFT。仅有许可型成员机制或称其为区块链,本身并不意味着具备拜占庭容错能力。
- 为什么增加完整节点副本不会自动提高基础链的写入能力?
- A) 密码运算速度较慢
- B) 完整节点的副本验证不会自动提高基础链写入能力,但 RPC 读请求可以横向扩展
- C) P2P 网络带宽受限
- D) 区块大小受限
显示答案
答案:B) 完整节点的副本验证不会自动提高基础链写入能力,但 RPC 读请求可以横向扩展
说明:完整节点、轻客户端和许可型数据分发模式各不相同。不要声称每个节点总会验证每笔交易,也不要说增加副本数量绝不会影响任何吞吐量。
- Merkle 树提供的主要好处是什么?
- A) 压缩区块大小
- B) 交易数量为 N 时,Merkle 包含性证明的大小按 log N 增长,因此无需完整链即可验证;这也是轻客户端的基础
- C) 保证交易排序
- D) 加快共识速度
显示答案
答案:B) 交易数量为 N 时,Merkle 包含性证明的大小按 log N 增长,因此无需完整链即可验证;这也是轻客户端的基础
说明:二叉树会逐层对交易进行成对哈希,因此证明某笔交易已包含在区块中,只需提供同级哈希。即使一个区块包含一百万笔交易,证明也约需 20 个哈希。这使轻客户端成为可能,也是在将区块链集成到现有系统时,决定“运行完整节点还是轻量验证就够了”的依据。
- 为什么共识必须付出成本(PoW 消耗电力,PoS 需要质押)?
- A) 奖励验证者
- B) 防御女巫攻击:如果不付出成本,一方就可以创建无限身份和区块候选,从而阻塞并瘫痪网络
- C) 控制区块生成速率
- D) 节省网络带宽
显示答案
答案:B) 防御女巫攻击:如果不付出成本,一方就可以创建无限身份和区块候选,从而阻塞并瘫痪网络
说明:在允许匿名参与的环境中,仅凭身份无法阻止一方创建大量身份(女巫攻击)。PoW 将成本转化为计算工作量;PoS 则要求投入资本并承担罚没风险。BFT 系列共识一开始就限制参与者,从而避开这个问题,可通过投票达成共识,无需 PoW 的电力或 PoS 的质押。这正是金融服务机构选择联盟链的技术依据。
- 为什么最终性对基础设施运维最重要?
- A) 它决定共识速度
- B) 节点返回的最新数据可能尚未最终确认,因此发生链重组后答案会改变
- C) 它决定区块大小
- D) 它决定节点存储容量
显示答案
答案:B) 节点返回的最新数据可能尚未最终确认,因此发生链重组后答案会改变
说明:节点会根据自己已知的最新链作答;如果该区块随后被重组,答案就会改变。这可能引发现实事故:根据最新区块确认存款并据此操作,之后却因链重组而消失;或者负载均衡器在链高度不同的节点之间分发请求,同一个问题便会得到不同答案。因此,应用程序必须强制要求一定的确认深度,基础设施还必须将同步状态纳入就绪检查并监控链高度差异。
- 为什么区块链节点必须使用持久卷?
- A) 链数据无法从网络恢复
- B) 可以从历史记录重放状态,但重放需要很长时间,在此期间节点无法提供服务
- C) Kubernetes 要求 StatefulSet 使用持久卷
- D) 密钥存储在数据目录中
显示答案
答案:B) 可以从历史记录重放状态,但重放需要很长时间,在此期间节点无法提供服务
说明:节点状态(余额、合约存储)可以通过重放区块历史推导出来,因此理论上可以重建。但是,从创世区块开始验证并重放的完整同步耗时会随链的历史长度增加;面对数百 GB 到数 TB 的数据,可能需要数天。Pod 替换时若丢失状态,节点在此期间就无法提供服务,所以持久卷并非可选项,而是必需项。
- 应如何管理硬分叉所需的客户端升级?
- A) 容器镜像会变大
- B) 在激活前通过 Canary 逐步部署兼容分叉的客户端;激活后另行评估不兼容的回滚方案
- C) Pod 重启时间会变长
- D) 必须重写网络策略
显示答案
答案:B) 在激活前通过 Canary 逐步部署兼容分叉的客户端;激活后另行评估不兼容的回滚方案
说明:协议会在指定时间点激活,但提前安装兼容客户端并不意味着要离开当前链。应在外部截止时间到来前确认整个节点组都已准备就绪。
- 区块链密钥管理与现有系统的密码管理有何关键区别?
- A) 密钥更长
- B) 使用前就要规划托管和恢复;私有签名密钥丢失可能无法挽回,而且 KMS 私钥不可导出
- C) 必须定期轮换密钥
- D) 密钥以明文传输
显示答案
答案:B) 使用前就要规划托管和恢复;私有签名密钥丢失可能无法挽回,而且 KMS 私钥不可导出
说明:恢复方式取决于密钥来源、合约/账户控制和备份设计。应保护验证者罚没历史,也不要假设托管式 HSM 会公开其私钥以供迁移。