比特币小白科普

账户余额模型的另一种记账法

去区块链工具站 →

重要声明:本站为科普教育用途,介绍第三方公开工具与概念。不是投资建议,不构成荐币或收益承诺。涉及的工具均为第三方服务,请自行判断风险;切勿在测试以外的环境导入真实助记词或私钥。

先忘掉“银行余额”那一张数字

银行 App 显示“你有 128.5 元”,背后是账户模型:一个账户一个余额,转账就加减。比特币常用的是 UTXO(Unspent Transaction Output,未花费交易输出):更像你口袋里好几张面额不同的收据。

举例:你有三张票据——0.01、0.04、0.10 BTC。要付 0.05,可能花掉 0.04 和 0.01,或花掉 0.10 再找回 0.05。被花掉的票据作废,新票据(找零与收款)被创造出来。

为什么要这样设计?

UTXO 让“哪些币被花过”变得清晰可验证,便于并行校验与防止双花。没有这套结构,节点更难快速判断一笔输入是否还从未花费。

对用户的体感:钱包显示的“余额”其实是把你能控制的 UTXO 加总后的友好界面。真正签名时,钱包在挑选要花哪些票据。

找零地址:为什么有时会冒出“陌生地址”

你转给同学 0.01,自己钱包却出现另一个地址多了一笔——那常常是找零。现代钱包多用分层派生,找零地址仍属于你的同一套钥匙。

新手惊吓点:以为币被转走了。对策:用自己的钱包查看、在浏览器核对输出是否回到你的找零地址。

和手续费的关系

交易体积大致与输入/输出个数有关。用很多小 UTXO 拼一笔大额支付,可能更“胖”,手续费更高。这就是有人会做“零钱整理”(consolidate)的原因——但整理本身也要付费,且有隐私权衡。

把一笔交易拆成“输入/输出”阅读

打开任意浏览器里的一笔交易:上方常见输入列表(花费哪些旧票据),下方是输出列表(新票据给谁)。若输出比“付款金额”多出一个回到自己的部分,那就是找零。

练习:在测试网给自己转一笔,记下txid,到浏览器指出哪一个输出是找零。做三次,UTXO 就不再抽象。

超市找零:把 UTXO 演一遍

假设你口袋里有三张“比特币收据”:

你要付给同学 0.05 BTC。钱包可能选择花掉 C(0.10),然后创造两张新票据:一张 0.05 给同学,一张 0.05 找零回你(再减去手续费后数字会略少)。A、B 仍未花费,继续躺在口袋。

另一种策略:花 A+B(0.05)刚好付给同学,可能几乎没有找零(仍要留一点手续费差额)。钱包算法会在“手续费、隐私、未来零钱数量”之间权衡——你平时看到的只是最终余额。

为什么银行显示一个数字就够,比特币却要票据?

银行数据库在内部也可以拆成很多行,但对你只展示一个余额,因为银行是可信中心,它说“扣了”就算。比特币没有中心裁判,每个节点必须能独立验证:你拿出来花的每一张票据,是否从未被花过。

UTXO 集合就像全市所有未兑现支票的清单。节点更新清单:旧支票作废,新支票生效。双花攻击等于试图把同一张支票交给两家店——全网竞赛记账让其中一笔最终失败。

找零地址吓人案例(课堂模拟)

小明第一次用钱包转 0.001 BTC 给测试地址,浏览器里看到:输入花掉了他原来的 0.01,输出有两笔——一笔到同学,一笔到一个他“不认识”的地址。他以为被盗,截图发群。

老师带他打开钱包的“找零/派生地址”说明:那个陌生地址仍由他的助记词派生,余额还在。恐怖来自“地址会变”,不是币飞了。

现代钱包常用分层确定性(HD)派生:同一套种子生出收付款与找零多条地址。备份助记词 = 备份整棵地址树。

粉尘与零钱整理

很多极小 UTXO 像一堆钢镚。付一笔大额时可能要塞进很多输入,交易变“胖”,按字节计费就更贵。consolidate(合并零钱)是主动花掉许多小票、换成一张大票——但合并本身要付费,且可能让观察者更容易把地址簇到一起(隐私变差)。

教育结论:余额数字相同,UTXO 结构可以很不一样;结构会影响费用与隐私。

和以太坊账户模型对照一句

以太坊更像“账户里有一个余额字段”。比特币 UTXO 更像“一叠支票”。两边都能防双花,但区块浏览器页面长得不同:BTC 看 inputs/outputs,ETH 看 from/to 与内部调用。跨站学习时别混着背。

示意图:花掉旧票据,生成新票据(含找零)

0.10 花费 → 给同学 0.04 找零 0.055 手续费 ~0.005 输入合计必须 ≥ 输出+费;旧票作废,新票诞生。