惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
博客园 - Franky
D
Docker
Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Last Week in AI
Last Week in AI
U
Unit 42
F
Fortinet All Blogs
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
P
Proofpoint News Feed
月光博客
月光博客
G
Google Developers Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
「Web3 笔记」拜占庭将军问题​ - 少数派
2022-08-08 · via 少数派

如果你第一次看到这个名字,可能会觉得这是一个历史人物遇到的一个打仗的问题。但其实完全不是,而是一个计算机学家提出来为了解决分布式网络的问题。

拜占庭将军问题 (Byzantine Generals Problem),是由莱斯利·兰波特在其同名论文中提出的分布式对等网络通信容错问题。​

简单介绍一下问题提出者:

莱斯利·兰波特Leslie Lamport),美国计算机科学家。也是排版系统LaTeX的开发者。​2013年,获得图灵奖。​

开开脑洞

在探寻拜占庭将军问题这个复杂问题前,我想先给一个小问题来开开脑洞(适应下思维方式)。

有两个守门童 A 和 B,有两扇门 a 和 b,我们的目标是找到 a 和 b 中正确的门,已知:

  1. 我们可以各询问 A 和 B 一个问题
  2. A 和 B 一个人说真话,一个人说假话

请问,如何问才能找到正确的门?

可以思考一下,还挺有意思的,其实只用问一个问题就可以得到答案。

答案:询问 A:你认为 B 会说哪个门是正确的门?(正确答案就是 A 回答的另一扇门)

达成共识

这个拜占庭将军问题举的例子比较复杂,希望能用一个简单的例子来让你理解:

一群好朋友(将军)想要讨论明天早上十点是否一起去公园,但是现在无法群聊,只能一对一的私聊,可以确定的是朋友内有想捣乱或破坏大家的关系(故意乱说),如何达成大家统一行动的目标(一起去或不去)?

比如,一共 9 个人,大家采用多数服从少数的原则,当四人同意去,四人不同意去,坏蛋跟同意的四人说同意去,跟不同意的四人说不同意去,双方都以为自己胜利,会导致出现目标失败。

上述的故事映射到计算机系统里,将军便成了计算机,而私聊就是通信系统。虽然上述的问题涉及了电子化的决策支持与信息安全,却没办法单纯的用密码学与数字签名来解决。因为电路错误仍可能影响整个加密过程,这不是密码学与数字签名算法在解决的问题。因此计算机就有可能将错误的结果提交去,亦可能导致错误的决策。​

而在区块链中,若出现了无法达成共识会出现分叉、宕机等问题。当一条链共识出现问题,将会对这条链造成信任危机也是致命打击,所以在区块链中共识算法是生态发展的底层基础。

口头协议

其实共识算法在不断进步,也有非常聪明的人在不断提出新颖的解题思路。在本问题被提出的论文中,莱斯利·兰波特已经提出了两种解法,今天就分享口头协议这个解法。

以下内容并不是原版解法,是根据个人理解的表达,若有错误希望理解

定义:

  1. 分为两类,好人(希望统一),坏人(希望不统一)
  2. 提出提案的人自动作为领头(将军)

目标:

  1. 若领头是好人,保证所有好人都执行领头的提议
  2. 保证所有好人保持一致执行

失败案例

继续按上面的去公园为基础,这次是 a、b、c 3 人商讨是否明天去公园,其中一人坏人。

b 提出去公园的想法,作为领队。

(下方有图解)

可能 1

b 领队不是坏人,c 是坏人

a 收到 b 去公园的想法,但是不知道 b 是否是好人,所以问 c:b 提议是去还是不去,c 反馈不去,所以 a 收到 1 个去,1 个不去。a 知道 b 和 c 中有一个坏人,但不知道是谁。

所以无法达成共识:失败

可能 2

b 领队是坏人,a c 都是好人

a 收到 b 去提议,c 收到 b 不去的提议,此时 a 和 c 交换信息,都得到 1 个去,1 个不去。

所以无法达成共识

成功案例

这次是 a、b、c、d 4 人商讨是否明天去公园,其中一人坏人。

可能 1:

领队 c 是好人,提出明天不去公园,d 是坏人。

a 收到不去公园的意见后,询问 b、d 领队的意见是什么,得到的是不去(b)和去(d)。

a 得到的是(不去、不去、去),选择多数不去就行,b 同理结论是不去。

最后 a、b、c 都不去,达成目标 2,并且符合领队的命令,达成目标 1.

可能 2:

领队 c 是坏人,对 a、b 说去,对 d 说不去。

a 收到去的提议后,询问 b、d 领队的意见是什么,得到的是去(b)和不去(d)。

a 得到的是(去、去、不去),选择多数去就行,b 同理结论是去。

d 收到不去的提议后,询问 a、b 领队的意见是什么,得到的是去(a)和去(b)。

d 得到的是(不去、去、去),选择多数去就行。

最后 a、b、d 都统一去了,达成目标 2,由于领队是坏人,无需考虑目标 1。

其实,当时莱斯利·兰波特提出口头协议时就给出了结论,若有 n 人参与,m 人是坏人,那么只有当 n > 3m 时才能达成共识。也就是说当有 2 人坏人时,需要一共 7 人才能达成共识,具体的推演过程可以看李永乐老师的视频,很有意思。

当然区块链中比特币和以太坊都采用的 PoW(工作量证明)也非常出色的解决了共识问题,并且经过十几年的稳定运行也证明了这种方法的可行性。但是 PoW 也有非常多被人诟病的问题,有机会再详细研究一下 PoW 的底层逻辑。

个人 Blog:Finn's Web3 笔记

参考链接: