徐令予博客

考槃在涧,硕人之宽。独寐寤言,永矢弗谖。考槃在阿,硕人之薖。独寐寤歌,永矢弗过。考槃在陸,硕人之轴。独寐寤宿,永矢弗告。
个人资料
正文

比特币安全性初探(上篇)基础架构与密码学原理

(2025-11-29 01:27:17) 下一个

比特币安全性初探(上篇)基础架构与密码学原理

徐令予 |撰文

一周前,我撰写了《150 亿美元比特币被盗案的真相》,对比特币系统的安全性进行了简单介绍。文中指出,比特币所依赖的密码学算法与区块链结构在整体上是安全稳固的,所谓“150 亿美元比特币被盗”事件,并非源自密码学算法被攻破,而更可能是由低级技术错误或机构内部管理不善所引发。

该文发表后,一些读者反映,由于缺乏对比特币基本原理的了解,阅读时难免产生内容跳跃之感,对文中观点的理解与接受也造成困难。同时,亦有多位朋友建议,针对比特币的基础概念与安全设计,补充一篇更为系统且通俗易懂的科普文章,应该会受到更多读者的欢迎。

这正是撰写这篇文章的缘起。

事实上,尽管比特币已广为人知,却对它到底是什么、如何保存、如何交易、为何安全,仍然模糊不清。本篇将以尽量通俗的方式介绍比特币的基本概念,只要读完本文的上篇,你就具备了理解比特币的必备知识。

一、比特币不是“账户和余额”,它更像是“有序列号的纸币”

比特币资金不是存放在银行系统的账户余额,而是由一个个的数字化钱币“UTXO”组成,这是理解比特币的关键。

UTXO,即未花费交易输出(Unspent Transaction Output),指的是已收到但尚未花费的数字化纸币,它是区块链上记录的一条仍未被引用的交易输出。UTXO 很像数字钱包中的单张纸币,而您的比特币总余额则是您拥有的所有纸币(UTXO)面值的总和。

你可以把每个 UTXO 理解成一张纸币:

每个 UTXO 都有一个固定面额(例如 0.015 BTC);

每个 UTXO 都有一个地址,这个地址确定了 UTXO 的“归属权”。地址可以理解为纸币上印的序列号,你知道多少个地址,如同手中握有了多少张有确定序列号的纸币。

UTXO不可拆开使用,就像纸币不能撕掉一半花出去。当您发送加密货币时,必须交付一个或多个 UTXO ,系统会为收款人创建一个新的 UTXO,并为您收到的任何“找零”创建另一个新的 UTXO。

请注意,这是UTXO和纸币的最大区别:一张纸币本身可以用于多次交易(你花给别人、别人再花给别人),某个序列号的纸币在交易中可以反复使用,它可以归属于不同的主人。但一个 UTXO 在比特币里是“一次性用品”,花费后即彻底失效。每个UTXO 在交易结束后就被废弃,它从一而终,一仆不事两主。

二、比特币和区块链

区块链是一个巨大的、不可篡改的历史账本,记录所有过去发生过的所有交易,包括:

  • 哪张纸币被花掉
  • 新纸币(新 UTXO)发给了哪个地址
  • 金额是多少
  • 何时发生

区块链通过密码学哈希函数和分布式共识机制,将交易按区块链接起来,从而保证历史不可篡改。

基于历史账本数据,在系统的每个节点维护的是“当前未花费纸币清单”,也就是 UTXO 集合。

区块链就像是档案室,保存着全部流水记录。

UTXO 集合是最新余额表,存放着当前每一个有效的UTXO的面值和相对应的地址。

这两者一起构成比特币系统的核心结构。

区块链记录历史 → 节点扫描历史生成 UTXO集合 → 交易时节点只用 UTXO

三、钱包里存的是什么?不是比特币,而是“钥匙”

许多人以为自己的比特币保存在电脑或手机里。事实上,比特币的UTXO永远存在于区块链上,钱包并不保存比特币,而是保存能动用这些UTXO的钥匙。

钱包存放的核心内容包括:

  • 私钥:通过数字签名作为“钱的所有权”的唯一凭证,它必须得到严格保护;
  • 公钥:由私钥计算而来,用于验证签名;
  • 地址:由公钥的哈希计算而来(相当于纸币的序列号),收款时你只需要公布地址,而不是公钥本身。

钱包的本质是:比特币UTXO的地址记录,以及对这些钱币的所有权提供凭证。

四、A 给 B 支付比特币的完整过程

步骤 1:B 给 A 一个地址

B 打开钱包,生成一个新的地址,通过电邮或其它网络社交软件发给 A。

步骤 2:A 在钱包中填写金额并发起支付

A 输入金额,例如 0.01 BTC。钱包自动选择属于A 的某个 UTXO,例如一个0.02 BTC 的 UTXO(就像在真实钱包中拿出一张纸币)。

步骤 3:构造交易

钱包自动构造交易:

  • 将 0.02 BTC 的地址输入并写进交易
  • 将 0.01 BTC 输出给 B 提供的地址
  • 将剩余金额找零到 A 的新地址
  • 公布与0.02 BTC 的地址相对应的公钥
  • 使用0.02 BTC 的地址相对应的私钥对交易进行数字签名

步骤 4:广播交易

交易被发送到比特币网络。各节点检查签名是否有效、UTXO 是否存在。

步骤 5:矿工更新区块链

矿工将这笔有效交易写入新的区块。当区块被确认后:

  • A 拥有的旧 0.02 BTC UTXO 作废
  • B 获得新的 0.01 BTC 的 UTXO
  • A 的找零地址获得新的 UTXO

钱包更新余额,交易完成。

五、本篇总结

  • 比特币是由 UTXO 组成的系统,而不是“账户余额”系统
  • 每个 UTXO 像一张纸币,地址像序列号
  • 钱包不存比特币,钱包存的是私钥
  • 私钥通过椭圆曲线算法生成公钥,公钥哈希生成地址
  • A 到 B 的支付流程

以上这些内容是理解比特币系统运作的基础。

下篇将对比特币的安全问题作更深入的探讨,内容包括:

  • 为什么地址是公钥的哈希?公钥为何推迟公布
  • 签名时随机数 K 的意义
  • HD 钱包的分层结构和私钥保护

 

徐令予 作于南加州 (2025年11月23日)

 

 

[ 打印 ]
评论
目前还没有任何评论
登录后才可评论.