表妹问:区块链是啥?

简介: 表妹问:区块链是啥?

区块链是个啥?

表妹在找我之前,其实找过很多人问。但是问了一圈,也查了一堆资料,都没明白区块链到底是啥意思。 很多资料里都说区块链具有两大核心特点:一是数据难以篡改、二是去中心化。还有一个解释:区块链就是账本,每个人都记录交易数据,还有一堆的加密算法保证数据不会被破解。另外还有一个机制,保证计算出来结果的人获得奖励,以保证整个机制良性循环。然后小表妹就生出了一堆的小问号:

有些时候,一些技术文档的确不太容易让人明白。就像是各种法律条款一样,为了保证严谨性,必须要写得足够“拗口”,但是这样就丧失了可读性。如果只是了解区块链的特性,就很容易理解偏了。比如数据难以篡改,以及去中心化。区块链在特殊情况下会分叉(比特币就分叉过),也曾经出现过被篡改的情况(51%攻击)。而且现在很多区块链应用并不是去中心化的(优先的节点掌握在权威机构手中),那是不是就不叫区块链了?所以,咱得从根上理解,知其然,知其所以然。这样才会明白啥叫区块,啥叫链,为啥又能防止篡改,为啥又能去中心化。


区块链的数据结构

其实表妹的这些问题,用数据视角一看,就全解决了。区块链,有两个词组成:1、区块;2、链。区块是什么?链又是什么?区块链是由区块相互连接形成的链式存储结构,区块就是链式存储结构中的数据元素,其中第一个区块被称为创始区块。区块链的数据结构由两部分组成:区块头和区块体。区块头又包含几个核心的部分:1、父区块哈希值,就是上一个区块的哈希地址。2、各种参数(挖矿难度、时间戳和随机数),用来设定游戏规则的。时间戳其实就是给区块盖个章,它记录的是本区块被创建的精确的时间3、默克尔根, 由区块主体中所有交易的哈希值逐级两两哈希计算,用来确定全局唯一的。至于区块体, 具体要记录的内容。如果上链的是证书,那么区块体里就存证书。如果上链是交易,那么区块体就是一个区块中所有的交易记录。比如比特币系统的每一个区块主体大概是2500笔交易记录,交易记录就是转账信息。这些就是全部的数据结构了。区块,就是一个数据结构的标准。这个数据结构是一个半结构化的。其中区块体里的内容是开放的,写啥都行。总结一下,就是下图所示:


防篡改和去中心化

数据结构明白了,但是怎么形成链呢?又怎么保证数据无法篡改呢?又是如何做到去中心化的呢?很简单。上面这个结构,是所有人都需要遵从的一个数据标准。利用这个标准,每一个节点在发生一个业务的时候,都同时做一个相同的动作:把这条信息在自己的区块链小本本上记录下来。

就像是老师在讲台上讲课,小朋友在记笔记一样。老师说1+1=2,所有小朋友都在笔记本上写一句“老师说了,1+1=2"。老师说的内容是实际发生的业务,小朋友记录的内容就是在各自的小本本上记录的“账本”。

如果我们想知道老师上课讲了什么内容,应该怎么做?最好的办法就是装一个监控,回去看视频就好了。但是装监控是学校行为,必须要有一个权威进行背书。当然,我们还有另外一个办法:看看小朋友们记录的是什么。因为所有人的内容都是一样的,所以想知道老师说的是什么,只需要随便拿小朋友的笔记出来看看就行了。如果有一个小朋友记错了,就再看看其他小朋友记录的是什么就行了。我们只需要保证一半以上的小朋友记录的是正确的,就能证明老师上课讲的内容真实的被记录下来了。这时候不需要一个权威机构(比如学校)背书。这就是防篡改,以及去中心化。防篡改是区块链的一大应用场景,比如证书的验真。所以现在很多证照、发票等需要验真的场景都用区块链实现了。但是,到这里还没说清楚什么是“链”


其实链很简单,数据结构里已经说清楚了。区块头里有一个“父区块哈希值”,这就是链接上一个链的信息。我们按照区块链的数据结构写一个简单的例子:

第一个区块就是创世区块。假设第一个区块里的信息是"老彭存了10000块钱到区块链银行"。然后又开了第二个区块:

这时候,区块头里的父区块哈希值就是创世区块的哈希值。这样,第二个区块和第一个区块就“链”上了。在第二个区块里,记录的是“老彭又存了10000块钱到区块链银行”。然后我们继续开第三个区块:

第三个区块的父区块哈希值则是第二个区块的哈希值。这时候第三个区块和第二个区块又“链”上了。这就形成了一个环环相扣的“区块链”。在这个块上,记录的是“老彭从区块链银行取走了10000块钱”。这样,我们就能从第三个区块一直向上追溯,看看老彭我到底在区块链银行里干了些啥。因为链一直可以向上追溯,所以我干的事情都能全部挖出来。这就是区块链的另一个应用场景:溯源。比如疫情期间,北京所有冷链食品都上链了,能找到该产品的供应链链条。

北京冷链用的是长安链。咱不用管啥是长安链,反正就是一种区块链就完事了。嗯,反正说到这里,表妹也就明白了。老彭我也就可以去睡觉了~~~晚安,明天见~~

相关文章
|
存储 机器学习/深度学习 人工智能
AI推理场景使用文件存储NAS的优势
AI推理场景使用文件存储NAS的优势
568 0
面向服务架构(SOA)吐血整理
面向服务架构(SOA)吐血整理
面向服务架构(SOA)吐血整理
|
8月前
|
关系型数据库 决策智能
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
366 3
RT-DETR改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
|
7月前
|
SQL 数据可视化 Java
JimuReport 积木报表 v1.9.5 发布,免费的可视化报表
JimuReport是一款免费的数据可视化报表工具,支持复杂报表、打印设计、图表报表、门户设计和大屏展示等功能。其Web版设计器操作简单,类似Excel风格,通过拖拽即可完成设计,支持SQL与API数据源绑定,具备表达式计算和合计功能。此外,还支持ECharts 28种图表、分组交叉报表、打印设计以及炫酷大屏制作,满足各类企业需求。重要的是,它永久免费,傻瓜式操作,是DataV和帆软的优秀开源替代方案。
237 0
|
5月前
|
存储 Kubernetes Serverless
容器技术 20 年:颠覆、重构与重塑软件世界的力量
从 20 世纪硬件虚拟化的笨重,到操作系统虚拟化的轻量探索,容器技术历经蜕变。2013 年 Docker 横空出世,以 “一次构建,到处运行” 的创举打破环境壁垒,开启容器黄金时代。随后,Docker Compose、Kubernetes、Istio 等技术相继涌现,从多容器管理到集群编排,再到微服务治理,不断突破应用部署与运维的边界。如今,容器与 DevOps 深度融合,Serverless 架构异军突起,共同重塑软件开发生态。本文将带你穿越容器技术发展的关键节点,揭秘其如何以颠覆性力量推动云计算与数字化。
372 64
|
11月前
|
XML 编解码 前端开发
svg和canvas的区别
【10月更文挑战第24天】SVG和Canvas各有优缺点,在实际应用中需要根据具体的需求和场景来选择合适的技术来实现图形绘制和交互效果。
344 62
|
安全 Java Linux
springboot实现黑名单和白名单功能
这篇文章介绍了如何在Spring Boot中实现黑名单和白名单功能,通过创建一个自定义的过滤器类并注册到Spring Boot应用中,以控制基于IP地址的访问权限。
542 1
springboot实现黑名单和白名单功能
|
12月前
|
消息中间件 存储 弹性计算
云消息队列 RabbitMQ 版实践解决方案评测
随着企业业务的增长,对消息队列的需求日益提升。阿里云的云消息队列 RabbitMQ 版通过架构优化,解决了消息积压、内存泄漏等问题,并支持弹性伸缩和按量计费,大幅降低资源和运维成本。本文从使用者角度详细评测这一解决方案,涵盖实践原理、部署体验、实际优势及应用场景。
|
机器学习/深度学习 存储 人工智能
AI歌姬,C位出道,基于PaddleHub/Diffsinger实现音频歌声合成操作(Python3.10)
懂乐理的音乐专业人士可以通过写乐谱并通过乐器演奏来展示他们的音乐创意和构思,但不识谱的素人如果也想跨界玩儿音乐,那么门槛儿就有点高了。但随着人工智能技术的快速迭代,现在任何一个人都可以成为“创作型歌手”,即自主创作并且让AI进行演唱,极大地降低了音乐制作的门槛。 本次我们基于PaddleHub和Diffsinger实现音频歌声合成操作,魔改歌曲《学猫叫》。
AI歌姬,C位出道,基于PaddleHub/Diffsinger实现音频歌声合成操作(Python3.10)
|
算法 C++ 容器
C++初阶之一篇文章教会你queue和priority_queue(理解使用和模拟实现)(下)
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器