0基础学习区块链技术——去中心化

news2024/10/2 21:22:25

大纲

  • 去验证的中心化
    • 验证者如何验证
    • 验证者为什么要去传播
  • 去确认的中心化
  • 去存储的中心化

“去中心化”是区块链技术的核心。那么我们该如何理解这个概念呢?
我们可以假想在一次现实转账中,有哪些“中心化”的行为:

  • 判断余额是否足够。即判断转出的钱是否少于账户里剩余的钱,能够判断的是账户所在的银行。

如果余额足够,在不发生其他意外的情况下,应该还有如下行为:

  • 转账发起方的余额要做相应减少。能够做这样操作的是发起方账号所在的银行。
  • 转账接收方的余额要做相应增加。能够做这样操作的是接收方账号所在的银行。
  • 记录转账记录。转账发起和接收方都要记录这笔交易,从而方便回溯资金变动。

在这样的交易过程中,每个连接都是单点的。
在这里插入图片描述
假如银行系统出现问题,或者银行变得不可信,可能它会吞掉这笔转账,即从发起方的账户中扣掉了钱,而收款方并没有收到。
在这里插入图片描述
还可能收款方系统出现问题,或者收款方银行变得不可信。
在这里插入图片描述
这在我们日常生活中不太常见,毕竟一般我们资金流动都发生在国内银行间。这些银行会受到银监会监管,它们一般不敢胡作非为。
但是如果这样的交易发生在国与国之间,事情就会变得不太一样。因为国与国之间的利益是非常容易发生分歧的,而各国银行也不太会听其他国家的号召,所以没法保证公正性。比如这次俄乌战争,美国就冻结了俄罗斯大量海外资产。
如何避免这样的情况?那就要去中心化,即谁都没有不对等的权力可以干涉他人资产。美国冻结俄罗斯海外资产就是因为美国政府对这些银行的影响力(权力)要高于俄罗斯。而且在区块链技术中,技术信奉的是规则以及计算能力,而不是世俗上的权力。从而可以排除人类这样一个极不稳定的因素影响。

回到“去中心化”这个议题。上述转账的过程,如何在区块链中去中心化的呢?

去验证的中心化

在传统转账中,验证余额是否足够发生在发起方账号所在的银行。要去掉这个中心,则让余额验证发生在多个非中心化的节点中,我们可以称之为验证节点。
在这里插入图片描述
这样的结构很容易想到,但是要回答如下几个问题:

  • 验证者如何能验证?
  • 验证者为什么要去传播?

验证者如何验证

验证余额是否足够就需要知道该用户的余额。在中心化方案中,这样的数据保存在中心化的存储上。而为了在去中心化的结构中,让验证者有余额信息,则需要验证者能够向其他有全量数据的节点请求到相关数据,或者验证节点自身就有该数据。
而且需要说明的是,区块链存储的只是交易信息,即转账发起方、接收方以及金额等数据,而不存在所谓的“余额”。这些数据都是用明文的形式保存在区块中,验证者需要读取整个区块链的交易记录来计算出发起方的“余额”。这样的好处是,每次验证都是从头到尾,完整链路的校验,而不是基于某时算出来的所谓的“余额”。当然这个方案的缺点就是计算量很大,很不方便。

验证者为什么要去传播

因为转账发起方会对每次转账支付一定金额的手续费。验证者将转账记录广播给更多的验证者以及矿工还有全节点(保存区块链全部信息的节点),这样大家就都能确认存在这样的一笔申请。当矿工生产出来的区块包含这笔交易记录,它就可能因此而获利。而且全节点确认接受这个区块加入链前,还是会对区块内的交易记录进行检查。如果验证者不将转账记录广播给更多节点,则会导致后续的验证不通过的概率大大增加,从而包含这块交易的区块不能被加入到链中,整个过程大家都不会得到收入。
在这里插入图片描述

去确认的中心化

矿工在验证完交易后,并不会将交易记录立即打包成区块——否则一个区块就是一条交易记录了——太浪费了。而是积累起来,并挑选出它觉得有价值的交易——比如给的手续费很多的交易,然后将这些交易记录进行打包。
打包涉及一个暴力计算过程,即原始数据加上不停变化的Nonce值,以尝试出一个符合某个特定规则的Hash值——比如前面8个数字是0的Hash。在比特币中,这个过程需要几分钟。
一旦一个矿工“碰撞”出一个匹配的Hash值,则可以认为它算出了区块,但是不能认为该区块被上链。这个时候矿工会向区块链网络广播该区块:
全节点在收到区块后会校验其合法性,比如Hash值,交易记录等。在确认都没有问题时,将该区块上链。后续达到的区块会被抛弃。
矿工节点收到该区块后会校验其合法性。如果合法,则终止自己的计算——这样可以节省自己的计算资源,何乐而不为,反正自己也抢不到这个区块了。如果不合法,就继续自己的计算,尝试争抢下合法的区块。
哪个矿工有更强大的算力,就更有可能第一个算出区块,进而也可能第一个被上链,进而获得奖励。所以在区块链中,交易被确认(上链)来源于算力,而不是某个人的权力。

去存储的中心化

当全节点将区块上链成功后,其他比它短的链会同步该长链的数据,这就是“最长链原则”。
这样交易记录就会分布在各个链上,而不会存储在某个链上,这样数据存储就去中心化了。
关于区块链直接数据同步的样例可以参考《0基础学习区块链技术——链之间数据同步样例》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud Gateway基础入门与使用实践总结

官网文档:点击查看官网文档 Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关。但在2.x版本中,zuul的升级一直跳票,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloud Gateway一句话…

游戏研发(策略+sass+回调模式)

前言 由于这边需要对接游戏研发后台,基本就是开服,封禁.角色日志等,但是每个游戏提供的接口都是不一样的,所以为了统一处理提前进行sass封装,以便后续可以更好的兼容 同时还涉及了多数据源的问题,因为有些日志太大不可能直接去http调用,会使用直接查询游戏研发的数据库方式这一…

Unity DOTS技术(五)Archetype,Chunk,NativeArray

文章目录 一.Chunk和Archetype什么是Chunk?什么是ArchType 二.Archetype创建1.创建实体2.创建并添加组件3.批量创建 三.多线程数组NativeArray 本次介绍的内容如下: 一.Chunk和Archetype 什么是Chunk? Chunk是一个空间,ECS系统会将相同类型的实体放在Chunk中.当一个Chunk…

AI论文:一键生成论文的高效工具

说到这个问题,那真的得看你对“靠谱”的定义是怎样的啦? 众所周知,写论文是一项极其耗时间的事情,从开始的选题到文献资料搜索查阅,大纲整理等等一大堆的繁杂工作是极艰辛的。用AI写论文就不一样了,自动化…

十二、【源码】配置注解执行SQL

源码地址:https://github.com/mybatis/mybatis-3/ 仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/12-annotation 配置注解执行SQL 简化一下流程,主要可以分为下面几步: 1.解析配置,写入配置项 2.执行…

芯片设计公司外协ERP技术工作内容

在芯片设计公司的日常运营中,ERP(企业资源规划)系统扮演着至关重要的角色,尤其在与外部供应商进行协作时,ERP技术的有效应用能够显著提升工作效率和管理质量。以下是芯片设计公司外协ERP技术工作内容的详细介绍: 一、添加外协供应…

vs2015Professional英文版和中文版的安装教程(附安装包)

英文版 下载安装包 1、Visual Studio 2015 With Update 3 Community 32位64位英文社区版下载地址: http://download.microsoft.com/download/b/e/d/bedddfc4-55f4-4748-90a8-ffe38a40e89f/vs2015.3.com_enu.iso 镜像名称:en_visual_studio_community_…

【数据密集型系统设计】软件系统的可靠性、可伸缩性、可维护性

文章目录 一. 数据密集型程序的特点以及遇到的问题二. 可靠性 : 即使出现问题,也能继续正确工作1 硬件故障2. 软件错误3. 人为错误 二. 可伸缩性1. 描述负载与推特的例子2. 描述性能-延迟和响应时间3. 应对负载的方法 四. 可维护性1. 可操作性:人生苦短&…

Go语言-切片底层探索 —— 补充篇:切片和底层数组到底是什么关系?

之前的切片探索中,上篇通过一道算法题目,了解到切片的两大特性:一是:切片是引用类型,指向底层数组,修改其底层数组的时候,会影响切片中的值。二是:向切片中添加元素的时候&#xff0…

ES6真题合集(一)

ES6真题合集(一) 1. var、let、const之间的区别2. ES6中数组新增了哪些扩展2.1 扩展运算符2.2 Array.from() 方法2.3 Array.of() 方法2.4 find() 和 findIndex() 方法2.5 箭头函数2.6 模板字符串 3. ES6中对象新增了哪些扩展3.1 属性的简写3.2 属性名表达…

[SQL-SERVER:数据库安全及维护]:MSSM工具对用户进行用户授权和角色授权操作

文章目录 直接为用户授权(20分)1. 创建登录TLogin,自行指定登录密码服务器层面选择 安全性 > 点击 登录名 > 点击右键 > 点击 新建登录名 > 选择sqlserver验证 > 关闭强制登录更改密码异常解决:sqlserver 配置管理…

Docker+JMeter+InfluxDB+Grafana 搭建性 能监控平台

JMeter原生报告的缺点: 无法实时共享 报告信息的展示不美观 需求方案 为了解决上述问题,可以通过 InfluxDB Grafana解决 : InfluxDB :是一个开源分布式指标数据库,使用 Go 语言编写,无需外部依赖 应用&am…

【C++】类和对象——构造和析构函数

目录 前言类的六个默认构造函数构造函数1.构造函数的概念2.构造函数的特性 初始化列表1.构造函数整体赋值2.初始化列表 析构函数1.析构函数的概念2.析构函数的特性 前言 类和对象相关博客:【C】类和对象   我们前面一个内容已经讲了关于类好对象的初步的一些知识&…

Linux——nginx部署

部署Nginx 构建Nginx服务器 (实验需要DNS支持,或添加hosts条目,例如: ) 安装Nginx(yum安装即可) 安装依赖软件包: 重启、启用服务并查看服务状态: 默认页面&#xff0…

AIGC会带来失业潮吗?紧紧跟时代第一步,如何学习AIGC

会,但AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训,不仅GPT,还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少,但也会对新招的应届生统一进行AI培训。 用任正非先生的话来说就是&#x…

ubuntu top命令的参数和快捷键

命令选项 -1 单个、所有cpu信息切换 top -1-b 批处理 top -b > top.txt这将保存top命令的输出到文件,直到手动终止或关机。所以使用这个命令要注意和其他命令配合,否则文件速度增长会很快。 在文件中,将会重复输入top命令。 -c 切换命…

干货!以医疗行业为例,讲解数据安全级别划分以及归纳敏感数据的处理策略

数据分类分级是一项基础工作,也是提供数据分级保护的基础措施之一,是企业长期的一项技术、管理措施。企业通过制定数据分类分级策略、模板、管理规范能够有助于帮助企业梳理清楚企业数据资产,在面向合规监管、内部数据安全控制时能够提供更完…

pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决

报错信息: py4j.protocol.Py4JJavaError: An error occurred while calling o33.load. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我的解决方法: 这个报错就是提示你找不到jar包,所以你需要去下载一个和你mysql版本匹配的j…

摸鱼大数据——Hive调优16-19

16、JVM 重用 此操作, 在hive2.x已经不需要配置了, 默认支持 jvm重用: 默认情况下, container资源容器 只能使用一次,不能重复使用, 开启JVM重用, 运行container容器可以被重复使用,在hive2.x已经默认支持了 17、推测执行 调优举例: 大数据小组,假设…

Android14 WMS-窗口绘制之relayoutWindow流程(二)-Server端

本文接着如下文章往下讲 Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端-CSDN博客 然后就到了Server端WMS的核心实现方法relayoutWindow里 WindowManagerService.java - OpenGrok cross reference for /frameworks/base/services/core/java/com/android/server…