区块链简介2

区块链简介,启蒙

前言

最近的招聘面试时,我一般会问对方有什么想要了解的事情;
很多对区块链不熟悉的人都会问一下区块链到底是什么,我一般都会给他们耐心讲解和解答。
说了几十遍后, 我提炼总结了一个简化版本的, 5分钟搞懂区块链核心;

简述

首先将区块链理解为一个分布式署数据库, 例如 一个拥有很多节点的mysql数据库集群;
它有 2 个关键特性。

  1. 数据只能 插入+查询, 不能更新和删除;
  2. 每个节点的数据都完全相同, 且每个节点都可以读写,每个节点新插入的数据会同步给其它所有节点;

好,这就是区块链中最关键的2条基础准则了,由此衍生出来了整个区块链技术栈。

你可能会发现和其它的数据库集群似乎没有什么不同;是的,区块链本质上就是一个数据库;

但区块链相比其它数据库,最为关注的目标是 “数据的不可篡改性”。

单节点内数据的不可篡改性

如何保障不可篡改?

以数据库为例, 如果每一行记录的头部附加一个字段,用来记录上一行内容的hash。
这样每一行数据都和前面的每一条记录有关系了,反过来前面的任一行记录都和最新行也是有关系的;
删除或修改表内任何一条数据,那么这条记录之后所有的行的 hash 值都会被影响;

这个就决定了当前节点的某条数据如果被篡改了, 会立即发现;

多节点的不可篡改性

如果操作人登录服务器修改了当前节点的所有数据,甚至直接替换了节点的二进制程序文件;
又该怎么办呢?

  1. 其它节点不接收关于历史区块的任何修改广播;
  2. 其它节点不信任广播来的任何hash值, 所有hash必须通过自身的数据进行计算出来或校验。

于是攻击者最多只能篡改控制的少量节点内的数据,集群内其它的多数节点中的数据仍然是正确的;

最新数据的可信

某节点写入一条数据后, 会将数据和hash 广播给其它节点;

其它节点会根据广播来的数据 独立计算 hash, 如果接收的 hash 和自己计算出来的 hash 不一致, 则这个同步来的数据是错误的,需要丢弃。

写限制

如果我一直发送垃圾数据怎么办呢?只是垃圾数据同步的就可能耗光集群的资源。

传统集群怎么做的呢?

  1. 网络限制, 只有可信源ip地址可以访问
  2. 身份限制, 使用账号密码或证书限制访问
  3. 速率限制, 限制某个客户端可以发送的速率

例如,目前同一银行内小额转账虽然一般是不收手续费的,但转账次数一多就会触发风控限制;

区块链一般是怎么做的呢?“gas费”

每笔交易都需要出一定的手续费, 只要支付了手续费,就不算垃圾数据;

目前的公链都需要交易手续费, 所以公链都会发币。

数据的相对可信

你打开手机银行 app, 看到余额有2万,就认为这个数是真实的,你是为信任这个数呢?

后台工作人员难道不能篡改这个余额吗?

答:还有交易流水可以算出余额。

那么后台工作人员将交易流水一起窜改呢?

答:还有第三方入账的流水记录,例如另一个银行转过来的记录;

有没有可能2个以上的银行后台人员合谋篡改这些记录呢?

答:也是有可能的,只不过作恶者不可能为了我这么少的金额费那么大功夫;
更关键的还有银行的信誉和政府监管。

嗯,那么我们就确定了银行数据的可信来源:

  1. 我的资金不大,篡改成本较高;
  2. 银行历史信誉很好,百年品牌不可能自砸招牌;
  3. 银行的管理措施:权限管理, 风控、审计等等管理措施和审计措施;
  4. 可信任政府监管。

那么你原因把钱存到非洲某小国的某某银行吗?
答:不愿意。

最终原因还是因为不可信。

那为什么区块链的数据是可信的呢?

比特币的可信:

  1. 历史数据全网非常多节点都有,篡改历史记录难度太大且无意义;
  2. 篡改最新数据: 需要全网算力的一半,成本太高;

以太坊等质押模型的可信:

  1. 历史数据全网非常多节点都有,篡改历史记录难度太大且无意义;
  2. 篡改最新数据: 需要控制全网质押总额的 2/3, 基本上不可能做到;

银行的可信是相对的, 主要是依靠人和组织的可信程度。之前没出过问题,不代表以后不会出问题;

区块链的可信是 数学+成本,只要公开的数学hash算法没有漏洞, 以及足够高的成本,就可以认定为可信;

这2者谁更可信呢?当然是智者见智吧。

就这个点来说,区块链的很重要一个用途就是:在不可信的网络中维护一个可信的数据存储。

数据和状态

有一个很重要的地方就是 区块链的 交易数据 和 交易状态;

用一个简单例子来理解: 1+2=3

这个 1+2 就是交易数据, 是需要向全网所有节点广播的内容;

=3 这个值就是交易的状态, 这个值是由当前节点通过 交易数据独立计算出来的,是不接收外部输入的;

区块链中所有的 hash 也都需要本地节点独立计算出来,外部传来的任何hash都不可信,当前节点只是做简单的比对和校验。

交易hash: 简单理解 md5(1+2) 的值
区块hash: 某一批交易的总 hash 值

应用场景

在任何需要“最严格的数据最终一致性和防篡改”的场景都可以使用区块链技术;

虽然现实中很多场景似乎都需要,但是目前 最最最需要数据安全的场景就是 金融行业, 毕竟与钱有关的值都非常需要可信;

因为离钱最近的行业从业者通常又是最能赚钱的,所有web3中区块链金融一直是最热的;

其它场景举例:

场景一: 个人档案

如果这个数据库用来存储所有人的个人档案, 例如每人每月新增一条记录;
交易频率也不需要太高,大家对档案的可信度要求也是很高的:

场景二: 通信交流

对每条发言进行一次 hash, 并上链,防止后续篡改历史交流数据。

区块链的一些局限性

为了数据的强一致和不可篡改特性,自然需要在其它地方做取舍了;

  1. 通常来说性能都不太好,一分钟几百笔交易都算很大规模了
  2. 因为防攻击的措施是gas费, 所以每笔交易都需要控制成本
  3. 因为控制权的分散,所以版本升级比较麻烦,需要提案投票等大家达成共识,周期一般很长。
Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
最后更新于 2025-10-02 00:00 UTC