栏目 比特币原理
罗马
BTC/USD——BTC/EUR—EUR/USD—手续费— sat/vB区块—公共 API
2026年11月3日星期二
比特币学习与研究

比特币原理

先从一个常见问题开始:用比特币付款时,究竟发生了什么?这八节课会跟随一笔付款,从钱包一路讲到交易被区块确认。技术术语在首次出现时解释,你可以按顺序学习,也可以从目录选择感兴趣的主题。

课程01

Bitcoin、BTC和钱包:三个不同的概念

Bitcoin是由许多计算机组成的网络,参与者按照共同规则记录转账,不需要一个中央账户管理员。参与者彼此直接传递交易。公开的交易记录分成一个个区块,再依次连接起来,这就是区块链。BTC是网络的原生货币单位:1个比特币等于1亿聪(satoshi),因此付款不必使用一整个比特币。

钱包是一种软件或设备,管理接收付款和授权花费所需的信息。比特币本身以未花费输出的形式记在网络的交易历史中,不是存放在手机里的文件。私钥是用于授权花费的秘密信息;地址则提供可以分享给付款人的收款信息,地址不是私钥。

自己保管密钥称为自托管,意味着你也要负责保护和恢复这些密钥。使用托管账户时,服务商代你管理密钥。两种方式各有不同风险。比特币的发行量受规则限制,并不代表价格稳定,也不保证购买力或投资回报。

课程02

一笔付款怎样从钱包进入区块

比特币付款并不是修改一份统一的账户余额。交易会花费此前尚未使用的交易输出,简称UTXO,再创建新的输出。钱包把能够花费的输出相加,显示为余额。一旦选中某个输出用来付款,就要把它整体花费;剩余金额通常会作为找零,转入发送者控制的新输出。

例如,一个价值10,000聪的输入,可以支付6,000聪,并创建3,800聪的找零输出。剩下的200聪就是交易手续费。这个例子用于解释金额如何分配,不是今天的手续费报价。手续费通常取决于交易大小和区块空间的需求,而不是转账金额的固定百分比。

钱包创建交易,并提供花费这些输入所需的授权,然后把交易广播到网络。节点检查后,可以将它保留在本地的内存池(mempool)中,也就是该节点收集的待确认交易。矿工可以把交易选入区块。当一个节点按自己执行的规则接受该区块,并把它接入当前采用的链时,交易获得第一次确认。后续每增加一个区块,确认数再加一。

课程03

SHA-256与数字签名:各自解决不同问题

SHA-256是一种密码学哈希函数。它把输入的字节,例如一段文字对应的字节,转换成一个256位结果,称为哈希值或摘要,通常写成64个十六进制字符。同样的输入一定得到同样的结果;即使只改一个比特,结果通常也会大幅变化,无法通过实用的捷径提前预测。

哈希不是加密。不存在一把解密密钥,能把SHA-256摘要还原成原文。哈希可以用来关联数据、检查数据是否发生变化,但不会隐藏比特币公开的交易记录,也不会自动让使用者匿名。你可以在下方实验中修改示例文字,亲自比较结果。

数字签名解决的是另一个问题:按照交易的花费条件提供授权,同时不公开私钥。其他参与者可以用相应公钥和被签名的数据检查签名。比特币使用ECDSA签名,并在Taproot中使用BIP340规定的Schnorr签名;两者都使用secp256k1椭圆曲线。哈希和签名会配合使用,但不能互相替代。

课程04

挖矿:寻找不超过目标值的哈希

矿工先准备一个候选区块,其中包含交易。第一笔交易称为coinbase,可以分配规则允许的新发行区块补贴和交易手续费。接着构造80字节的区块头,其中包括对前一区块的引用、关联交易标识符列表的默克尔根(Merkle root),以及时间戳、目标值编码和nonce等字段。

挖矿就是反复对区块头连续执行两次SHA-256。有效的工作量证明要求:把结果当作整数时,它必须小于或等于共识规则规定的目标值。目标值越小,每次尝试成功的机会就越低。这是一轮轮试错,不是在解一个有特殊用途的隐藏方程;上一次失败,也不会让下一次更容易成功。

nonce是区块头中的32位字段,矿工改变它,就能尝试不同的区块头,也可以修改其他允许变更的数据。例如,改变coinbase中的extra nonce,会改变这笔交易的标识符,进而改变默克尔根和区块头。找到符合目标的哈希后,整个区块仍须通过其他全部验证规则。矿池协调参与者的工作,按各自规则分配收益,但不保证一定获得奖励或盈利。

课程05

全节点如何核查区块和交易确认

全节点是一种独立检查比特币共识规则的软件。收到区块后,它不仅检查工作量证明,还要检查交易是否满足花费条件、输入是否引用可花费的输出,以及coinbase是否领取了超过允许补贴和手续费总额的金额。区块不符合规则,即使耗费了大量算力,也会被拒绝。

有时会同时出现两个有效区块,竞争链上的同一位置。对于符合自身规则的有效历史,节点采用累计工作量证明最多的那条链。这常被称作“最长链”,但真正比较的是累计工作量,不只是区块数量,更不是支持某一版本历史的计算机台数。

一次确认表示交易已经被纳入这条链的某个区块,之后每增加一个区块,确认数就再增加一次。累计工作量越多,替换这段历史通常越难,但链重组仍有可能发生。一笔付款应等待多少次确认,要结合金额和收款人的风险承受程度。协议以平均约十分钟产生一个区块为目标,并不保证下一个区块会在十分钟内到来。

课程06

谁开发比特币,谁决定规则?

比特币不是一家由首席执行官下令修改系统的公司。不同参与者负责不同工作:开发者提出想法、编写和测试软件,并审查代码;矿工选择候选区块进行挖矿;节点运营者决定运行什么软件、执行什么规则;用户选择钱包和服务,并决定接受哪些付款。

比特币改进提案(BIP)记录一种建议或标准。发布提案不代表激活:一份建议、一个软件版本,以及实际执行的规则,是不同阶段。变更可能需要技术审查、具体实现和参与者之间的协调。人们也可能不同意某项变更,选择不采用。

还要区分共识规则和节点本地策略。共识规则决定节点会不会把一个区块判为有效;本地策略影响它愿意转发或保留哪些未确认交易。本地策略的变化,不会自动改变比特币区块允许包含什么。知名教育者、贡献者和公司可以影响讨论,但没有谁能代表所有比特币用户。

课程07

实际用途:付款、捐赠和社区项目

愿意使用比特币的人,可以通过它转移价值。符合网络规则的交易,不需要由一个中央运营者逐笔批准。付款可以直接记在区块链上,也可以使用Lightning等其他系统;不同系统各有运行条件。能够接入比特币网络,与能够方便地兑换或使用本地货币,并不是同一件事。

已有一些具体例子:商家可以使用开源工具BTCPay Server接受比特币,配置后也可以支持Lightning;OpenSats接受比特币捐赠,用来支持开源工作;Bitcoin Beach介绍了萨尔瓦多的一个社区支付与教育项目。这些例子说明可能的用途,不代表比特币已经普遍被接受,也不表示某项服务适合所有读者。

使用支付服务前,应检查谁控制密钥、有哪些费用、收款人怎样取得资金,以及服务商不可用时怎么办。价格波动、本地货币兑换、隐私和适用规则也很重要。把比特币转到另一个国家,不代表收款人就能自动提取当地现金。应先理解系统,再决定是否使用。

课程08

为什么比特币需要支付通道和其他网络

比特币基础层把交易写入容量有限的区块。争用区块空间的需求增加,可能推高手续费和等待时间。因此,要支持更多日常付款,不只是往每个区块里塞入更多交易。其他设计可以把部分活动放到主链以外处理,只在特定结算或执行步骤中使用主链。

Lightning通过支付通道更新余额,不必把每次更新都记入比特币区块。Liquid和Rootstock等侧链有自己的区块,以及代表比特币的资产机制。Fedimint把托管职责分配给多名共同管理者。Ark类系统和基于BitVM的设计,则探索处于不同开发阶段的其他机制。都叫“第二层”,不代表这些系统提供相同的保障。

比较时可以问五个问题:谁掌握密钥?用户实际持有什么资产?交易按该系统的规则在哪里完成结算?需要多少可用流动性?服务方出问题时,用户如何取回资金?界面更快显示成功,不一定意味着比特币主链已经确认。下一节介绍若干有代表性的方案及其限制,并非所有比特币相关项目的完整清单。

这几节课中会遇到的五个术语

Nonce
区块头中的一个32位数字,矿工改变它来尝试新的哈希值。所有可能取值用完后,也可以修改规则允许的其他数据。
Coinbase
区块中的第一笔交易,可以分配规则允许的新发行区块补贴和交易手续费。这是协议术语,与名叫Coinbase的公司不是同一个概念。
默克尔根
一个32字节的值,用来把区块头与按顺序排列的交易标识符关联起来;相关标识符变化时,它也会改变。比特币另外记录对见证数据的承诺,见证数据包括签名等花费所需的附加信息。因此,仅修改见证数据,未必会改变交易的txid。
目标值(Target)
工作量证明哈希所对应的整数允许达到的最大值。目标值越小,就越难找到符合要求的哈希。
Peg
把一条网络上表示的资产,与另一条网络中持有的资金连接起来的机制。参与运行的人员、软件或硬件,都是评估其安全性时需要考虑的因素。

动手体验:哈希与简化工作量证明

修改示例消息,比较它的 SHA-256 摘要,然后尝试演示区块头中的 nonce 值。操作仅在你的浏览器内进行,不会挖出比特币,也不会发送交易。

请使用示例文字,切勿输入钱包机密。输入不会发送到服务器,也不会保存。离开本页后,工具中的输入会被清除。

SHA-256 摘要

—

人为设定的目标值

00ffff0000000000000000000000000000000000000000000000000000000000

区块头的双重 SHA-256 哈希,按比特币显示顺序排列

—
尝试次数
0
最后测试的 nonce
—

示例使用 80 字节区块头、人为设置的低难度目标,以及代替真实交易 Merkle 根的消息摘要。它没有有效区块体,也不符合主网难度。真实节点不会将其接受为比特币区块。显示的是最后测试的 nonce 值;尝试次数不代表必然成功。

这里简化的是讲解方式,不是协议规则。例子中的金额用于说明原理,不是当前手续费报价。每节课都附有协议文档或一手资料,方便继续查阅细节。

资料核查日期: