一句话理解
区块链是一个多方共同维护的账本:数据被打包进一个个“区块”,新区块永远追加在旧区块后面,并用哈希值把前后串成一条链。任何对历史数据的改动,都会导致后面所有区块的哈希对不上,从而被网络里的其他节点立刻发现。
一个区块里有什么
粗略地说,一个区块分两部分。区块头记录元信息:上一个区块的哈希、本区块交易的汇总哈希、时间戳、以及共识机制要求的工作量或签名证明等;区块主体则是一批按顺序排列的交易记录。交易怎么被压缩进区块头一个字段里,靠的是默克尔树结构,详见 默克尔树是什么?轻客户端如何证明交易在链上,区块头每个字段的含义见 区块头里有什么?每个字段的含义。
哈希指针怎么把链“焊死”
每个区块头里都写入前一个区块哈希的完整数据摘要,任何一位数据变化都会让摘要面目全非。攻击者若要篡改第 N 个区块里的一笔交易,就必须重算第 N 个区块及其后所有区块的哈希;在 PoW 链上还得重新完成之后的全部工作量,在 PoS 链上则要伪造之后每个区块的合法签名。他只有一个选择:把自己的秘密分支造得比全网公开的主链更长、更权威,这正是共识机制要防的事,原理见 共识机制是什么?PoW和PoS核心区别。
为什么“很多份拷贝”本身就是防御
区块链不存储在某个中心服务器上,而是由成千上万个节点各自保存完整或部分副本,见 区块链节点是什么?全节点和轻节点区别。攻击者要篡改历史,需要同时控制过半节点并向它们持续供给伪造链,成本随节点数量上升。副本之间并不需要“实时一致”,只需要按同一套规则各自收敛到同一条最优链——这也是为什么网络某处的节点掉线几小时,账本依然完好。对外的表现是:一笔交易被越多节点接受并写进越来越深的区块,被推翻的可能性就越低——这也是“确认数”概念的由来,双花与防双花的逻辑见 什么是双花攻击?区块链怎么防。
转账时,链怎么“审核”
你把一笔转账提交进网络后,它并不会直接进块:每个节点会先独立校验——签名是否有效、要花的钱是否真实存在且未被花过、金额是否平衡、脚本能否正常执行,全部通过才进入广播和排队。这“不信任提交者、只校验规则”的姿态,是它和中心化账本的根本差别:银行靠央行和清算行对账,区块链则靠每个人都能自己跑一份全节点来做交叉对账。
它和数据库哪里不同
三点划清边界:其一,中心化数据库有唯一写入者,管理员可以删改数据,区块链按共识追加,没有任何单一主体能改写已确认的历史;其二,数据库查询效率远高于区块链,所以“什么都存上链”通常是伪需求——实践中链上只存指向链下文件的哈希,原始内容仍在链下;其三,数据库的信任落在运维方身上,区块链用数学和复制冗余代替它。“不可篡改”是成本带来的效果,不是物理属性。
区块链不能做什么
第一,它不校验数据在现实世界的真伪:链上只保证“这笔转账按规则发生”,不保证附带的信息属实。第二,“不可篡改”是相对概念:深度足够才接近事实上的不可逆,浅确认区块仍可能被重组,见 重组是什么?孤儿块与陈旧块怎么形成。第三,它不会自动带来公平:记账规则的制定权在协议与参与者手中。把区块链理解成“一本规则公开、所有人各存一份、撕掉一页会被所有人对出来”的公共账本,比理解成“绝对安全数据库”更准确。
风险提示
本文仅为信息与教育内容,不构成任何投资建议。不同链的实现细节差异很大,涉及具体项目的安全性判断请以其官方文档和链上实际数据为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。