区块链到底在忙什么?从一本账本,到一个互不完全信任的协作网络
一篇写给好奇者的区块链入门博客。我们从一家咖啡店的账本出发,经过蓝眼睛岛,看看账户、交易、区块、共识与智能合约,究竟怎样拼成一个系统。
海风岛的四位店主,各自维护并核验共同账本。
写在前面:先把“币”放在一边
第一次听到“区块链”,你可能会想到比特币、挖矿,或者一串看不懂的地址。
我最开始困惑的却是另一件事:数据库已经能记账了,为什么还要把数据装进区块,再把区块连起来?
如果回答只是“因为它去中心化、不可篡改”,我仍然不太满意。这些词像产品介绍,却没有告诉我:谁在记账?谁能修改?有人撒谎怎么办?
所以,这篇文章想换一种走法。先不背术语,我们去一座小岛,看看几个不愿把账本交给同一个人管理的店主,会遇到什么麻烦。
等故事讲完,再回头看那些词,你会发现它们都有自己的工作,也都有自己的边界。
一、海风岛的难题:这本账,到底听谁的?
海风岛上有四家店:小岚的咖啡店、阿墨的书店、桃子的面包店,还有老周的杂货铺。
为了方便结算,他们约定使用一种虚构的“海风积分”。顾客可以在几家店之间使用积分,店主也可以互相转账。
这里的积分只是教学道具,不对应任何真实币种。
最省事的办法,是让老周维护一套数据库。谁转给谁多少积分,都向老周提交请求,由他的系统检查余额并记账。
这完全可以工作,而且常常更简单、更高效。问题出在四家店的关系上:他们愿意合作,却不愿让其中一家单独掌握所有记账权。
小岚担心老周误操作,阿墨担心数据库停机,桃子担心以后出了争议,自己只能接受对方给出的记录。
于是,他们提出一个想法:
每家店都保存相关账本,新增记录按共同规则确认,任何一家都能独立核验。
听起来只是多复制几份数据,真正的问题却刚刚开始。
假设小岚只有 10 个积分,却几乎同时发出两笔请求:转给阿墨 10 个,转给桃子 10 个。
阿墨先看见第一笔,桃子先看见第二笔。两笔请求都可能有小岚的有效签名,但它们不能同时成功。
签名能说明“这是小岚授权的”,却不能单独说明“这笔积分没有被重复花掉”。
大家需要接受同一套有效性规则,并就冲突请求的处理顺序形成一致结果。这才是区块链真正要面对的系统问题。[1]
两笔请求都可能具有有效签名,但同一笔余额不能重复支出。
区块链的基本定义
可以先这样理解:
区块链是一种按协议维护的分布式账本:记录被组织成区块,区块通过密码学摘要关联,参与节点按照共同规则验证并确认账本历史。
这里有三个不同的工作:区块负责组织记录,密码学负责关联与核验,共识协议负责让正确节点接受相容的历史。
只有哈希链,没有多方协作协议,未必构成我们通常讨论的完整区块链系统;只有多台服务器,也不自动意味着它们能在不完全互信的条件下共同记账。
二、先认清角色:用户、账户、钱包和节点
故事讲到这里,很容易把“岛民”“店铺”“账本管理员”统称为区块链用户。但落到技术系统,这几种角色需要分开。
账户像署名身份,节点像运行系统的工作站
小岚想转账,需要某种可被系统识别的身份与授权方式。运行账本服务的电脑,则需要接收交易、验证规则、保存数据,或者参与共识。
前者对应账户或身份体系,后者对应节点。
| 概念 | 它是什么 | 在海风岛故事中的类比 |
|---|---|---|
| 用户 | 使用系统的人或组织 | 小岚、阿墨,以及四家店 |
| 账户/链上身份 | 协议用于识别主体、关联状态或权限的表示 | 在账本上可被识别的署名 |
| 钱包 | 管理密钥、构造或授权交易、连接网络的工具 | 保管签字工具并填写转账单的助手 |
| 节点 | 运行区块链软件的计算实例 | 接收记录并维护账本的工作站 |
| 共识参与者 | 按协议参与出块、排序或确认的节点/角色 | 有资格参与记账决策的工作站 |
使用一个账户,不代表你运行了一个节点;运行一个节点,也不代表你只有一个账户。
还有一个细节:不同链的账户模型并不一样。以太坊具有显式账户与账户状态;比特币采用 UTXO,即“未花费交易输出”模型,不宜把所有链都想成“每个账户有一个余额字段”。[3]
UTXO 可以粗略类比为一张张尚未花掉的票据。付款时消费旧票据,生成给收款人和找零的新票据,而不是直接在统一账户表里扣减一个数字。
私钥不是余额,钱包也不把资产装在本地
在常见的公私钥授权方式中,私钥用于签名,其他人用对应公钥验证。地址则按具体链的规则生成,通常与公钥或其他协议数据有关。
钱包主要保管和使用授权材料,并展示链上的记录与状态。你在钱包里看到的余额,通常来自它查询或核验的链上信息。[3]
我喜欢把钱包想成“钥匙包加账本阅读器”:钥匙控制你能授权什么,账本记录系统承认什么。
这个比喻也有边界:托管钱包可能由服务方保管密钥,合约钱包又有自己的授权逻辑,不能都用一把个人私钥概括。
用户、钱包、账户和节点分别承担不同角色。
三、一笔交易怎样成为大家承认的记录?
先用一个抽象流程看海风积分转账,不把它当成任何具体区块链的逐步实现。
小岚填写“给阿墨转 3 个积分”,通过钱包完成授权,向网络提交请求。收到它的节点依据规则检查:格式对不对?授权有效吗?是否具备使用这笔资产的条件?
之后,请求按具体协议参与排序、打包或共识,并在满足确认条件后影响账本状态。
提交请求、被某个节点接收、进入区块,以及获得最终确认,是不同的事情。
比如,咖啡店电脑显示“已收到”,只是说明它收到了请求,并不等于另外三家店已经接受,更不等于交易永远不会被重组。
“交易”不一定是转钱
区块链里的交易,也可能是登记一份文件的摘要、调用一个合约、修改某项资产的持有人,或者提交一次业务授权。
因此,更通用的理解是:交易是按协议提交的一项操作请求,它可能引起状态变化。
如果几家店的账本都从相同状态出发,按相同顺序执行相同的确定性规则,才有机会得到相同的新状态。反过来,即使请求集合相同,顺序不同,也可能出现不同结果。
例如,同一份余额只能支持一笔全额支出时,哪笔先被有效执行,会影响后一笔能否成立。
交易处理的概念流程:收到请求并不等于最终确认。
四、为什么是“区块”和“链”?
如果交易像一张张小票,区块就像把一批小票整理在一起的资料袋。
以比特币为例,区块包含区块头和交易等内容。区块头含有前一区块的哈希、交易的 Merkle 根以及时间、难度相关字段等。其他链的结构可能不同。[2]
| 部分 | 主要作用 | 阅读时抓住什么 |
|---|---|---|
| 区块头 | 描述区块,并承载与前块、内容摘要及协议验证有关的信息 | 它如何关联前块、约束当前内容 |
| 区块内容 | 保存该区块收录的交易等数据 | 到底记录了哪些操作 |
| 协议相关证据 | 依链而异,可能涉及工作量或共识认证信息 | 为什么网络可以接受这个区块 |
“协议相关证据”是概念层面的分类,并非所有链都有一个同名独立字段。
哈希:给数据做一份可核验的摘要
哈希函数把输入映射成固定长度的摘要。适当的密码学哈希函数应当让寻找碰撞、逆推出原始输入等操作在计算上足够困难。
你可以把摘要类比为数据的“指纹”,但别把比喻理解成数学上的绝对唯一:固定长度输出不可能与所有任意长度输入一一对应。
概念上,可以写成:
h i = H ( Encode ( H e a d e r i ) ) h_i = H(\operatorname{Encode}(\mathrm{Header}_i))hi=H(Encode(Headeri))
这里的编码规则和哈希算法由具体协议规定。例如,比特币对序列化区块头使用双 SHA-256。[2]
下一块引用上一块的哈希。如果有人改变旧块中被摘要覆盖的交易,内容摘要会改变,区块头与其哈希随之改变,后续引用也就对不上了。
能发现修改,和不能改写公认历史,是两层问题
有人可能立刻想到:那我改完以后,把后面的哈希重新算一遍不就行了?
这个反问非常好。
单纯重新计算哈希,并不是不可完成的事情。哈希关联主要使修改变得可检测;让其他节点接受这段改写后的历史,则还要越过验证规则与共识机制。
这就是为什么“用了哈希,所以绝对不能篡改”说得太满。区块链对历史的保护,来自密码学、协议、故障假设及运行治理的共同作用。
Merkle 树:一批交易怎样汇成一个摘要?
可以想象四张交易小票,先分别算摘要,再把相邻摘要按规则组合计算,逐层汇成一个根。[2]
它的好处是:验证某项内容是否属于这批记录时,可以使用一条较短的证明路径,而不必总是取得全部内容。
不过,“它被收录了”与“它的业务内容真实可靠”仍然是两回事。
区块的内容摘要与前块哈希,使历史修改能够被检测。
五、共识:不是大家都觉得对,而是大家按规则决定
回到海风岛。四家店都拥有账本,但只要看到消息的顺序不同,它们仍可能维护出不同结果。
共识,是多个参与节点在明确的网络与故障假设下,通过协议对某个值、操作顺序或账本历史形成一致决定的过程。
理解时,可以抓住三个问题:
| 性质 | 通俗问题 |
|---|---|
| 一致性 | 正确节点会不会决定相互冲突的结果? |
| 有效性 | 决定是否满足协议定义的有效条件? |
| 终止性 | 在规定条件下,正确节点最终能不能作出决定? |
这里的“正确节点”是遵守协议、未发生所考虑故障的节点。
共识不能只剩一句“少数服从多数”。你还得解释:谁有投票资格?消息晚到怎么办?同一个人向不同节点说不同的话怎么办?大家什么时候可以认为决定已经成立?
蓝眼睛岛:一句没有新鲜感的话,为什么改变所有人?
我们暂时离开四家店,去另一座经典逻辑故事中的小岛。
岛民能看见别人的眼睛,却看不见自己的,也不能交流眼睛颜色。一旦推理确定自己是蓝眼睛,就必须在当天午夜离岛。
所有人都是完美的逻辑推理者,这些规则与推理能力是公共知识;外来者的宣布被所有人共同听见,每晚是否有人离开也能被可靠地共同观察。
岛上恰好有三个蓝眼睛的人,但他们不知道总数。某天,外来者公开说:
“岛上至少有一个蓝眼睛的人。”
每个蓝眼睛的人都看得见另外两个,这句话似乎没有告诉他们新事实。可到了第三天午夜,三个人一起离岛。
我们把人数从一开始推:
| 蓝眼睛人数 | 每人看到什么 | 推理与行动 |
|---|---|---|
| 1 人 | 看不到其他蓝眼睛 | 公告说至少有一个,那一定是自己;第一夜离开 |
| 2 人 | 看见一个蓝眼睛 | 若自己不是蓝眼睛,对方第一夜会离开;第一夜无人离开,于是第二夜离开 |
| 3 人 | 看见两个蓝眼睛 | 若自己不是蓝眼睛,另外两人第二夜会离开;第二夜无人离开,于是第三夜离开 |
关键不只是“我知道”,而是“我知道你知道,并且知道你也知道我知道”,如此递归下去。这叫公共知识。
公开宣布建立共同起点,每晚无人离开又提供可共同观察的推理证据。
公开宣布建立共同起点,三位蓝眼睛岛民在第三夜离开。
为什么我想把它放在共识的故事里?
因为它让“信息”和“协调”之间的距离变得可见:参与者各自知道一些事实,并不意味着他们已经拥有作出一致行动所需的共同认知。
这也让我觉得区块链有意思。它试图让不同主体通过可核验的记录与明确规则协作,而不必把所有判断都交给一个中心。
但蓝眼睛岛讲的是公共知识与协调行为,并不是可以直接部署的共识算法。现实网络会延迟、丢包,节点会宕机,也可能作恶;“今晚没人离开”在网络中可能只是“消息还没收到”。
真实协议必须处理这些情况,而且通常不要求建立故事中那种无限层次的公共知识。
更重要的是,一致接受一条记录,不等于证明外部世界的事实是真的。四家店可以一致记录“某箱牛奶温度合格”,却不能仅凭共识保证测温人员没有撒谎。
六、PoW:开放网络里,怎样让一堆陌生节点收敛?
如果四家店扩展成一个任何人都能加入的网络,直接按身份投票就遇到麻烦:一个人可以制造很多身份。
比特币式机制采用工作量证明,PoW(Proof of Work)。矿工尝试调整区块头等相关数据,寻找满足目标的哈希结果。简化写成:
HashValue ( H e a d e r ) ≤ T \operatorname{HashValue}(\mathrm{Header}) \leq THashValue(Header)≤T
其中T TT是目标值。目标越小,通常越难碰到合格结果。验证者检查给出的结果,远比产生它所需的反复尝试便宜。[1][2]
可以把挖矿想成一次“难找、好验”的抽签
岛上准备了一个特殊抽签机:每次换参数,得到一个难以预测的号码。合格号码很少,因此大家必须反复尝试。
某个矿工找到合格结果,只是获得提出候选区块的机会;其他节点还要核验区块是否有效。无效交易不会因为矿工算得辛苦,就变成有效交易。
如果两个有效区块几乎同时出现,节点可能暂时跟随不同分支。协议依据累计工作量最多的有效链选择历史,后续工作量帮助网络逐步收敛。[1]
所以,PoW 本身是一种证明机制;把它与交易验证、网络传播和链选择结合起来,才构成这里讨论的共识路线。
为什么不能只说“最长链”?
“最长链”方便口头讲解,但精确理解应关注累计工作量;单纯数区块个数,在不同难度下可能产生误解。
这套机制也不保证所有人立即看到同一条链。确认越深,历史被重组的风险通常越低,这叫概率性最终性,其成立依赖算力与网络传播等条件。[1]
它的魅力在于开放参与,其代价包括持续计算开销、等待确认,以及对资源分布和网络条件的依赖。
比特币式共识结合工作量证明、有效性验证与累计工作量链选择。
七、PBFT:已知成员之间,怎样防住一个会说谎的人?
再回到海风岛的四家店。成员数量可控,身份也已知,未必需要让店主一直消耗算力。
PBFT,即实用拜占庭容错(Practical Byzantine Fault Tolerance),走的是另一条路:通过有规则的多轮消息,让正确副本就请求顺序达成一致。[4]
“拜占庭故障”可以包括故意撒谎、向不同对象发送矛盾消息,或者任意偏离协议。
经典配置用n = 3 f + 1 n=3f+1n=3f+1个副本容忍最多f ff个拜占庭副本。我们选f = 1 f=1f=1,因此需要四个副本;下面的阈值也按这个经典配置说明。
正常情况下的三个阶段
| 阶段 | 做什么 | 直观含义 |
|---|---|---|
| Pre-prepare,预准备 | 主节点提出请求及其序列位置 | “把这项请求安排在这里” |
| Prepare,准备 | 副本核验提案并传播匹配消息 | “我看到并接受了这个安排” |
| Commit,提交 | 满足 prepared 条件的副本传播提交消息 | “已具备按协议确认它的条件” |
经典 PBFT 的 prepared 条件包含请求、匹配的预准备消息及来自不同备份副本的2 f 2f2f条匹配 Prepare。提交还要求本地 prepared,并收集来自不同副本的2 f + 1 2f+12f+1条匹配 Commit(可含自身)。执行要遵守序列顺序。[4]
这些数字看上去绕,但它们不是随意选的。
四个人中,要三个人支持,为什么有用?
假设最多一个节点作恶。任何两个大小为三的节点集合,在四个节点中至少重叠两个;其中至少一个是正确节点。
正确节点遵守协议,不会在同一视图、同一序列位置对冲突请求提供相应的矛盾支持。这个交集,是安全性的关键。
不过,交集只是解释入口,不是完整安全性证明。主节点可能出问题,协议还需要视图切换,并在切换时保留此前的准备信息,防止换了主节点就抹掉已经形成的约束。[4]
可以把它想成四家店的联合记账会议,但“开会”只是比喻:真实系统靠消息认证、状态条件和证据,而不是靠大家坐在一张桌边互相信任。
一致性和持续推进,是不同的保证
在故障数量不超过阈值、认证等前提成立时,PBFT 保持安全性,不让正确节点提交冲突结果;活性则需要网络最终足够及时、协议能够推进等条件。
如果网络长期分割,它可能暂时停下来。没有进展与作出矛盾决定,是两种不同故障。
PBFT 提供的是条件成立时的确定性提交安全保证,其代价包括多轮通信;经典正常路径的副本间消息量随节点数呈二次增长。[4]
PBFT 正常流程的角色化示意;冲突指同一视图、同一序号下的不同请求。阴影是作恶行为的符号,并非额外副本,图中省略证书与视图切换细节。
两种机制,解决的是不同环境中的协作问题
| 维度 | 比特币式 PoW 共识 | 经典 PBFT |
|---|---|---|
| 典型参与环境 | 开放网络 | 成员已知的许可环境 |
| 关键约束 | 攻击者算力与网络条件 | 拜占庭副本数量与认证等条件 |
| 如何形成共同历史 | 工作量证明与有效链选择 | 多轮消息、证据与视图切换 |
| 最终性 | 概率性 | 条件成立时的确定性安全保证 |
| 主要代价 | 计算与确认等待 | 通信与成员管理 |
它们都不是“保证所有人永远正确”的魔法,而是明确说明:在什么条件下,正确参与者可以接受怎样的一致性保证。
八、智能合约:把约定写成共同执行的规则
账本已经能记录发生过什么,但店主还有一个想法:某些事情能不能按事先约定的规则处理?
比如,小岚向桃子订购一批面包,希望在约定的签收授权通过后,才释放预先锁定的积分。
这类规则可以表达成智能合约。在以太坊等平台中,智能合约是部署在链上的程序与相关状态;符合条件的交易调用它,节点按协议执行或验证执行结果。[5]
教学伪代码: 如果调用者具有签收权限,且订单状态允许签收: 将订单标记为已签收 按约定释放托管积分 否则: 拒绝本次操作它不因为叫“智能”就懂得现实,也不因为叫“合约”就自动具有完整法律效力。
谁来维护合约?
这里的“维护”至少有三种含义:
| 工作 | 通常由谁承担 |
|---|---|
| 编写、部署与设置业务权限 | 开发者、部署主体或治理主体 |
| 保存相关代码和状态,执行或核验结果 | 按具体链角色运行的节点 |
| 决定能否升级、由谁升级 | 合约设计与治理规则指定的主体 |
合约不是通常意义上“放在某台业务服务器里的一段后台程序”。但不同链的执行架构并不一致,也不是每种节点都执行所有合约。[5][6]
最大的反问:面包真的送到了吗?
这是我觉得智能合约最值得追问的地方。
合约可以核验“谁提交了签收”,却无法自己走出电脑,检查纸箱里的面包。
外部事实需要由签收方、设备或预言机等机制提供。如何信任这些来源,是额外的问题。若签收人撒谎,合约可能只是忠实执行了错误输入对应的规则。
链上执行的一致性,不会自动转换成链下事实的真实性。
签收信息连接现实输入与链上规则,但合约无法自行检查货物。
九、从故事到工程:联盟链、Peer、Orderer 与 BaaS
到这里,你可能会问:企业真正建设区块链时,是不是就把四台服务器接起来,运行 PBFT?
没有这么固定。不同平台会拆分身份、执行、排序、验证、存储和运维角色,也可能采用不同共识协议。
公有链、联盟链、私有链,重点是权限与治理
| 类型 | 常见组织方式 | 需要关注什么 |
|---|---|---|
| 公有链 | 参与通常较开放,权限由协议规定 | 谁能验证、出块,如何防止身份滥用 |
| 联盟链 | 多个获准组织共同参与和治理 | 谁能入网,谁能读写,谁能参与共识 |
| 私有链 | 参与和治理主要受单一主体控制 | 相比其他系统,链式审计或治理规则带来什么收益 |
这是一种通俗分类,各平台的实际权限应单独查看。“去中心化”也不是开关:治理、共识资源、访问入口和基础设施,可能有不同程度的集中。
用 Hyperledger Fabric 举一个具体例子
Fabric 的 Peer 与 Orderer 是平台里的特定角色,不能照搬到所有区块链。[6][7]
| 组件 | 在 Fabric 中的主要职责 |
|---|---|
| Peer | 维护所属通道账本,承担交易验证、提交;符合相应角色与配置的 Peer 还参与背书执行 |
| Orderer | 为交易建立顺序并形成区块,向 Peer 交付;不替代 Peer 完成完整的业务有效性验证 |
| 客户端/业务应用 | 构造交易请求,收集所需响应,提交交易并查询结果 |
因此,可以把 Peer 理解为承担账本和业务相关工作的节点,把 Orderer 理解为排序服务节点,但不宜简单说“Peer 没有共识工作,Orderer 承担全部共识”。
尤其要注意:Fabric 不应直接等同于经典 PBFT。排序服务所采用的协议及其容错能力,需要结合具体版本和配置判断。[7]
BaaS 是平台服务,Nginx 是入口组件
BaaS(Blockchain as a Service)通常是一组帮助部署、管理和使用区块链的服务能力,可能提供节点管理、证书管理、监控以及接入接口。具体功能由产品决定,它通常是软件与服务体系,不是一种固定硬件。
Nginx 则可能承担反向代理、流量转发或负载均衡。它可以出现在 BaaS 或业务系统的入口,但这不使它自动成为区块链共识节点。
业务用户可以通过应用访问链,也可以通过平台接口接入;“使用区块链”并不必然意味着每位用户都先登录 BaaS 控制台。
联盟链组件的场景化示意:业务、Peer、排序与运维承担不同职责。
十、账本放在哪里?共识消息也会上链吗?
问到这里,就已经从“区块链是什么”走到了“系统如何运行”。
谁保存哪些数据,取决于平台、节点角色、通道和裁剪等策略。
不能笼统认为所有节点都保存所有数据。全节点、轻客户端、归档节点可能保存不同范围;在 Fabric 中,Peer 保存它所加入通道的相关账本,私有数据又有额外分发限制。[6][8]
历史记录和当前状态,可以分开理解
在一些账本架构中,可以同时看到“按顺序保存的历史”和“便于查询的当前状态”。Fabric 就把区块链与世界状态作为账本的两个相关部分。[8]
海风岛的历史可能记录小岚从 10 积分转出 3 积分;当前状态则方便查询“现在剩多少”。两者有关系,却不必是同一份物理存储。
共识消息不等于业务交易
| 数据类别 | 例子 | 是否一定写入区块 |
|---|---|---|
| 业务交易 | 转账、登记、合约调用 | 按协议与处理结果决定 |
| 共识过程消息 | 提案、准备、提交、视图切换消息 | 不一定;常用于节点间通信 |
| 共识证据或元数据 | 某些协议中的证书、签名集合 | 依协议,可能进入区块或相关记录 |
| 本地恢复和运维数据 | 持久化协议状态、日志、缓存 | 通常与账本内容区分,但可能需要持久保存 |
所以,“这是一条共识消息”不能直接推出“它必然永远上链”,也不能推出“它只在内存里,无需保存”。协议恢复、安全审计和工程实现都会影响保存方式。
账本、通信消息与恢复审计记录用途不同。当前业务状态也应与节点运行指标区分。
十一、我希望读完以后,你能反问这五句话
“区块链上的数据一定真实。”
记录经过协议确认,不代表现实输入没有造假。看供应链案例时,我会先问:谁采集?谁授权?出了错怎样纠正?
“上链以后绝对不能修改。”
更准确地说,系统按协议保护已确认历史,修改可被检测,改写公认历史需要突破相应条件。重组、治理变更、升级及纠错机制都要结合具体系统讨论。
“有数字签名就足够安全。”
签名保护授权与消息完整性,却不能单独防止重复花费,也不能自动避免私钥失窃。账户授权、共识、密钥管理和业务权限是不同工作。
“去中心化就是不需要信任。”
我更愿意说:信任被重新分配了。你可能减少了对单一记账机构的依赖,却仍依赖协议、实现、参与者假设、密钥保管和治理机制。
“多个部门共享数据,就应该用区块链。”
还得往下问:这些部门为什么不能接受一个共同管理方?是否需要各自核验历史?写入权与争议处理由谁决定?增加的通信、存储与治理成本是否值得?
如果中心管理方能够被各方接受,数据库配合签名、审计与备份可能已经合适。区块链是否有价值,要从具体协作关系出发判断。
理解区块链时,先追问保证成立的条件与技术边界。
写在最后:链起来的是区块,协作起来的是人
现在,我们可以再看一眼海风岛。
小岚用账户和授权工具发起请求;节点依据规则检查;交易被组织和排序;共识让正确参与者接受相容的历史;智能合约把部分约定变成可执行规则。
这些东西合在一起,才形成一个能运行的系统。
蓝眼睛岛让我看到,知道一件事与能够协调行动之间,隔着共同认知。现实区块链则必须在更困难的环境里,用明确协议建立足够的一致决策依据。
所以,如果让我用一句话介绍区块链,我会说:
它尝试让不完全互信的参与者,按照共同规则,维护一份可以各自核验的历史。
至于这份历史记录什么,输入是否可靠,谁能参与,代价是否值得——这些问题,比“是不是上了链”更值得我们继续聊。
延伸阅读与技术出处
正文中的海风岛人物、积分及情节均为教学设定;类比用于解释直觉,不构成某个平台的完整实现描述。技术阅读可从以下原始论文和官方文档继续:
- Satoshi Nakamoto:Bitcoin: A Peer-to-Peer Electronic Cash System——双重支付、工作量证明、链选择与确认风险。
- Bitcoin Developer Reference:Block Chain——区块头、目标值和 Merkle 树。该页面部分版本与数值叙述较旧,本文只引用基础结构。
- Ethereum:Accounts——账户、密钥与钱包的关系;本文另用 UTXO 作模型对照。
- Miguel Castro、Barbara Liskov:Practical Byzantine Fault Tolerance——经典 PBFT 的阶段、故障阈值与视图切换。
- Ethereum:Introduction to Smart Contracts——合约代码、状态与执行机制。
- Hyperledger Fabric:Peers——Peer、账本、通道与链码角色。
- Hyperledger Fabric:The Ordering Service——排序服务与交易验证职责的区别。
- Hyperledger Fabric:Ledger——区块历史与世界状态。