学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=13
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。
文章目录
- [1. 哈希指针](#1. 哈希指针)
- [2. 私钥"截断"与多重签名](#2. 私钥“截断”与多重签名)
-
-
- 问题一:单点失效
- 问题二:安全性急剧下降
- [正确做法:使用 多重签名](#正确做法:使用 多重签名)
-
- [3. 分布式共识:理论 vs 现实](#3. 分布式共识:理论 vs 现实)
- [4. 比特币的稀缺性](#4. 比特币的稀缺性)
- [5. 量子计算对比特币的威胁](#5. 量子计算对比特币的威胁)
-
-
- 为什么不必过度恐慌?
-
- [1. 量子计算机离实用还很远](#1. 量子计算机离实用还很远)
- [2. 比特币并未直接暴露公钥](#2. 比特币并未直接暴露公钥)
- [3. 即使公钥暴露,攻击窗口也很短](#3. 即使公钥暴露,攻击窗口也很短)
- 安全建议(面向未来)
-
1. 哈希指针
传统意义上的"指针"(如内存指针或磁盘指针)只在本地计算机中有意义。一旦把数据发送到其他机器,这些指针就失效了------因为它们指向的是本机的物理或虚拟地址。
所谓"哈希指针",其实是一种形象的说法,本质上只有哈希值,没有真正的指针 。
在比特币中,区块之间通过前一个区块的哈希值链接起来,形成链式结构。这个"指针"就是哈希值本身。
全节点通常将区块数据存储在一个键值(KV)数据库中,比如 LevelDB
(2012 年起默认使用 LevelDB):
- Key:区块的哈希值(即区块头的 double-SHA256)
- Value:完整的区块内容(包括区块头和交易列表)
所谓的"区块链"链式结构,实际上就是在 LevelDB 中通过哈希值串起来的:
- 从最新的区块哈希出发,可以查到最新区块;
- 该区块中包含前一个区块的哈希;
- 再用这个哈希去查倒数第二个区块;
- 如此递归,最终可回溯到创世区块。
有些轻量级节点(如 SPV 节点)只保存最近几千个区块。如果需要更早的历史数据,可以向全节点请求获取。
2. 私钥"截断"与多重签名
场景:一对情侣共同持有比特币,把私钥截成两半,一人保管一半;或者一个商户有 4 个合伙人,把私钥分成 4 份。
这种做法看似合理,但存在严重问题:
问题一:单点失效
- 只要其中一人丢失了自己那部分私钥,整笔资金就永远无法动用。 对应的 UTXO 将永久"冻结"在区块链上,成为死币。
问题二:安全性急剧下降
- 比特币私钥是 256 位随机数,总空间为 2 256 2^{256} 2256,暴力破解在经典计算机下完全不可行。
- 但如果私钥被简单"截断"(例如每人持 64 位),攻击者只要拿到其中 3 份(192 位),就只需暴力破解剩下的 64 位。
- 破解难度从 2 256 2^{256} 2256 降到 2 64 2^{64} 264,不是线性降低,而是指数级崩塌!
正确做法:使用 多重签名
- 每个参与者都持有完整长度的私钥(256 位),安全性不打折;
- 不仅更安全,还提供灵活的权限控制(如公司财务审批、家庭共管等场景),在创建地址时指定规则,如 "4 人中任意 2 人签名即可花费"(2-of-4);
3. 分布式共识:理论 vs 现实
许多分布式系统领域的科学家曾证明:在某些模型下,达成分布式共识是不可能的(如 FLP 不可能定理)。
那么问题来了:既然理论上不可能,比特币为什么还能工作?
理论上来说,比特币并没有达成严格意义上的共识。因为在分布式系统理论中,真正的共识一旦达成,就应当是不可逆且不可推翻的 ;而比特币攻击者若掌握足够算力,可以发起分叉攻击。从某个历史区块开始构建更长的替代链,导致原先"已确认"的交易被回滚,极端情况下甚至能将共识状态逆转至接近创世区块(尽管实际难度极高)。因此,比特币的共识并不是传统理论中要求的强一致性与最终性。
关键在于:理论结论依赖于特定假设模型,而现实可以绕开这些假设。
经典例子:如何判断远程服务器是否宕机?
- 在异步网络模型 中(消息延迟无上限),理论上你无法区分:
- 服务器真的死机了;
- 还是只是网络拥堵,下一秒就能连上。
理论已证明:在此模型下,无法可靠判断节点是否故障(死机)。
但在现实中,我们可以:
- 给数据中心打电话人工确认;
- 或者给服务器加一条独立的拨号线路作为"心跳通道"。
一旦引入额外信道或时间界限 ,系统就不再是纯异步模型,FLP 的"不可能"结论自然不再适用。
启示
- 知识改变命运,但一知半解可能适得其反。
- 中本聪很可能不是传统学术圈出身,否则可能被"共识不可能"的教条束缚,不太可能设计比特币。
- 不要被学术框架限制想象力,也不要被程序员思维困住创造力。
- 比特币的成功,恰恰在于它用经济激励 + 工作量证明 + 概率最终性 ,在现实世界中构建了一个"足够好"的共识机制------尽管它不是严格意义上的绝对共识(如分叉回滚仍可能发生)。
4. 比特币的稀缺性
矿工挖矿是为了收益。只有当收益 > 成本时,挖矿才有利可图,才能吸引人参与。
但所有新加密货币都面临冷启动问题:早期没人用、算力低、安全性弱,如何吸引第一批矿工?
比特币的解决方案:
- 早期挖矿难度极低,普通 CPU 就能挖;
- 区块奖励高达 50 BTC,这是合理的,因为激励早期参与者少,承担更大风险。
很多人认为,2100 万枚总量恒定 是比特币成功的关键。但也有观点指出:绝对稀缺的东西不适合作为货币。
为什么?
- 货币需要具备适度通胀能力,以匹配经济增长;
- 黄金就是典型:每年新增供应远低于全球财富增速 → 黄金不断升值;
- 结果:早年持有者财富自动增长,后人再努力也难以追赶;
- 长期看,这会削弱社会奋斗动力,不利于公平发展。
总结:比特币的设计更像"数字黄金",而非日常流通货币。它的价值储藏属性强于交易媒介属性。
5. 量子计算对比特币的威胁
有人担心:量子计算机强大到能破解现有密码学,比特币会不会崩溃?
答案是:短期内不会,长期看也有应对空间。
为什么不必过度恐慌?
1. 量子计算机离实用还很远
- 当前量子计算机仅有几十到几百量子比特,且错误率高;
- 要破解 ECDSA(比特币使用的椭圆曲线签名),需要数百万稳定量子比特------至少还需 10--20 年,甚至更久。
2. 比特币并未直接暴露公钥
- 接收比特币时,只公布 公钥哈希(即地址),而非公钥本身;
- 从哈希值反推公钥 在经典和量子模型下都极其困难:
- SHA-256 是抗碰撞性、抗原像的哈希函数;
- 输入任意长度(哪怕几 TB),输出固定 256 位;
- 该过程不可逆------否则就等于发明了"超级压缩算法"(256 位还原任意大数据),这显然不可能。
3. 即使公钥暴露,攻击窗口也很短
- 公钥只在花费比特币时 才会出现在交易的
sigScript中; - 攻击者必须在交易被确认前(几分钟内):
- 用量子计算机从公钥推出私钥;
- 构造一笔竞争交易(双花);
- 让自己的交易先被打包。
- 这要求实时、高速、精准攻击,即便有量子计算机也极难实现。但是一旦实现,如果这个账户下还有未花费的UTXO,量子计算机就可以一下全部转走!
安全建议(面向未来)
- 一个地址只用于收款,一旦花费过,就不要再用;
- 花费后,将剩余资金转入新地址(最好是一次性地址);
- 这样即使未来量子计算机能破解公钥,你的大部分资产仍受哈希保护。
总结:与其担心比特币,不如先担心银行网银、SSL 证书、政府数据库------它们更早暴露公钥,且升级更慢。 若真到量子危机来临那天,对传统金融系统冲击更大,且大多数钱还是存在传统金融系统中。