区块链是什么?用比特币讲明白
一笔比特币转账已经发出,为什么还要等确认?沿着这笔记录,看区块怎样连起来、别人为什么不能随手改账,以及“上链可查”究竟能证明什么。

用比特币来理解:转账记录被放进一个个“区块”,后面的区块记着前一个区块的“指纹”,这样连成的记录就是区块链。比特币的链公开可查,但并非所有区块链都向公众开放。区块之间的关联让改动容易暴露;为什么别人不接受改过的账,还要看验证规则和挖矿。
图中相同颜色的两处指纹应当一致:右边的区块引用左边的区块。它说明了记录之间怎样关联,却还没有解释谁能写下一块。如果只重新计算普通哈希,改完一页再重算后面的页面并不难;比特币另外要求挖矿与逐笔验证。
区块链是什么意思:拆成「区块」和「链」
发出一笔比特币转账,首先是在网络中传播一份交易请求。收到它的节点会检查签名和花费条件,符合条件的未确认交易可以暂存,等待矿工选入区块。这份暂存清单常叫“内存池”。它不是全网共用的排号系统:不同节点收到的交易和保留的清单可能不同,也不保证先发出的先确认。开发者文档的交易传播说明区分了传播和内存池。
矿工从可用交易中组织候选区块,并尝试挖出它;不是“交易攒够了就自动翻页”。比特币允许区块只有分配区块奖励的那笔特殊交易,因此即使普通转账很少,也不必等凑满一批才出块。
每个区块有一小段“区块头”,可以把它理解成这页账的索引卡。卡上记着上一块的哈希、由本块交易计算出的摘要、时间等信息。这里的“指纹”就是哈希:对同样的数据按同样的方法计算,结果一致;改动数据,结果通常会完全不同。比特币用两次 SHA-256 计算区块头哈希,前后区块由它关联,具体字段见区块头说明。
因此图上的箭头代表前后引用关系,不是按每个人点击“发送”的时间给交易排队。区块时间也是按规则接受的时间戳,不是银行出具的精确到账凭证。只看某个时间或区块编号,不能判断你收到的是哪笔款。
想看真实记录,可以在 Blockstream 的比特币区块浏览器查询区块或交易。查自己的转账时应使用交易哈希(TXID),再核对输出中的收款地址与金额;一笔交易可能包含多个收款项和找零,整笔总额未必就是付给你的金额。没有查到时,先核对选的网络、复制的 TXID 和发送方状态,不能只凭一个浏览器的空结果断定币丢了。
比特币链上的交易金额与花费记录可以公开检查;它不是把整本账加密藏起来。地址通常不直接写真实姓名,但仍可能被其他资料关联。交易签名证明满足相应的花费条件,不会替你确认操作者就是某位实名本人。Bitcoin.org 的隐私说明提醒,公开记录与匿名不是一回事。
为什么难改,确认数又在数什么
仍用图里的假设区块。如果有人想移除区块 101 中自己已经付出的一笔款,让另一个版本的交易历史取而代之,仅仅改自己电脑上的账没有用。他需要面对几道检查:
- 改后的交易仍须有效。不能凭空写出别人的有效签名,也不能把已花掉的同一笔币在同一条有效链里再花一次。
- 重新建立前后关联。交易内容变化会影响区块头里的摘要;区块头哈希变化后,后续区块引用的旧哈希也要跟着处理。
- 为替代区块重新做工作量证明。矿工反复尝试不同的候选区块头,直到哈希不大于规则规定的目标值。检验一个结果很快,找到合格结果却需要尝试;不是写下一串前导 0 就算完成。
- 让替代历史成为节点认可的有效链。节点先按规则验证,再在有效候选链中选择累计工作量最大的那条。比的是按难度衡量的工作量,不是举手人数,也不是任意写出更多区块就会被接受。
后面继续增加的工作量,会提高改写较早记录的难度。拥有更多算力可以增强重组交易历史的能力,但不能因此跳过有效性检查;也不能把“少于一半算力”理解为任何重组都不可能。挖矿奖励是激励的一部分,不能保证攻击者永远觉得攻击不划算。上述关系见区块链、工作量证明与分叉说明。
重组不一定来自攻击。两名矿工可能差不多同时挖出不同的新块,节点暂时看到了不同的链头;之后其中一条有效链累积更多工作量,节点会转向它。被替换区块里的交易,有的也存在于替代链,有的可能重新等待确认。因此“已经进块”不等于永远不会变化。
确认数数的是区块,不是签字同意的电脑。交易进入当前采用的链,所在区块算第 1 个确认;后面每增加一块,再加 1。例如,假设一笔交易进入区块 101,当前链已延伸到 103,它就有 3 个确认。若期间发生重组,必须按新的链重新判断。开发者文档的收款验证说明强调,广播交易本身并不能保证收款。
接收方要求几个确认,是它接受付款的条件,不是统一的“绝对安全线”。往交易平台充值,还要看币种、网络、地址、最低充值量和平台状态。链上确认充足与平台账户已经可用是两回事;查到账时可接着看余额、成交与到账记录怎么核对。
比特币主网每 2016 个区块按这段时间的出块用时调整难度,目标是让长期平均出块间隔接近 10 分钟。调整不是按矿机台数即时变化,也不能保证下一块在 10 分钟内出现。单次出块具有随机性,交易还可能等候矿工选入。Bitcoin.org 的未确认交易说明明确区分平均时间和某笔交易的等待时间;不能把“几个确认”机械换算成到账倒计时。
区块链和比特币的关系,以及那些「区块链项目」
比特币要解决的一个问题是:没有统一记账的银行,怎样避免同一笔币被花两次。区块链记录交易的先后关系,验证规则检查花费是否有效,工作量证明帮助节点选择接受的历史。只画出一条链,还没有包含这套系统的全部。比特币是什么另从持有和转账的角度解释。
所以可以这样区分:BTC 是资产单位,比特币网络使用区块链保存交易记录。别的系统也可以使用区块链,但不一定采用比特币的挖矿方式;有的允许公众参与,有的限制哪些机构可以读写。NIST 的《区块链技术概览》分别介绍了开放参与和需要许可的网络,不能把一种链的公开性或改写成本套到所有项目上。
这也解释了交易平台余额与公共账本的差别:你在平台内买卖,账户数字可以先在它的内部账中变化,不要求每笔成交都在比特币链上出现。若从平台通过比特币网络提币,才需要对应的链上转账。查区块浏览器能检查转账,不能据此看到平台对你承诺的全部账户余额或提取条件。
看到项目宣传“上链可查”,还要问它查的是什么。假设商家把“仓库有 100 箱货”写入记录,链上能留下这条说法,却不会自己走进仓库验货。记录难改,不能保证原始陈述真实;项目采用区块链,也不能证明它会履约或让持有人赚钱。NIST 报告第 7.3 节同样讨论了链外信息输入的可信问题。
- 能查到的是实际交易、资产记录,还是项目方提交的一句声明?是否有与其对应的独立凭证?
- 谁可以写入、验证或修改规则?这些权限怎样分配,公众能检查到哪一部分?
- 参与者付的钱换来什么权利,收益和退出依靠谁履约?“用了区块链”本身没有回答这些问题。
如果对方只能展示链上编号,却说不清业务、责任和付款条件,这个编号无法填补缺失的证据。遇到许诺高回报、要求先交解冻费等情况,可对照常见骗局的具体信号继续判断。
链上能看见记录,却不能仅凭地址发起花费。地址怎样用于收款,签名凭什么能授权转账?接着看比特币钱包是什么?地址和私钥又是什么。