0基础学习区块链技术——链之间数据同步样例

我们可以在https://blockchaindemo.io/体验这个过程。

创建区块

默认第一个链叫Satoshi(中本聪)。链上第一个区块叫“创世区块”——Genesis Block。后面我们会看到创建的第二条链第一个区块也是如此。
在这里插入图片描述
在这里插入图片描述

新增链

在这里插入图片描述
新创建的链叫Debby。默认上面有一个创世区块。
在这里插入图片描述
然后我们让这个链和其他链(Satoshi)连接。
在这里插入图片描述
在这里插入图片描述
如上图,Satoshi链是标蓝的,即当前链。Debby上的数字7,表示Satoshi链上发生了7次行为。
在这里插入图片描述
我们看下这7条消息。
在这里插入图片描述
这是Satoshi链的视角。

  • 连接到Debby链。
  • 向Debby要它的最后一个区块。
  • Debby向我要我的最后一个区块。
  • 我向Debby发送我的最后一个区块。
  • Debby把它最后一个区块发给我了。
  • 判断出Debby的最后一个区块的索引并没有我大,所以我什么都不要做。因为之前我们在Satoshi上创建了一个区块,所以有两个区块。而Debby是新创建的链,它上面只有一个创世区块。Debby最后一个区块的索引是0,Satoshi最后一个区块的索引是1。
  • Debby把它最后一个区块发给我了。
  • 判断出Debby的最后一个区块的索引并没有我大,所以我什么都不要做。

我们再切换到Debby视角来看
在这里插入图片描述
可以看到Debby已经同步了Satoshi的链上所有区块了。
在这里插入图片描述

  • Satoshi和我连接上了。
  • 向Satoshi要它的最后一个区块。
  • Satoshi将它最后一个区块发给我了。
  • Satoshi最后一个区块的Pre hash和我最后一个区块的Hash一致,于是我们将该区块添加到我这条链上。
  • Satoshi向我要我的最后一个区块。
  • 向Satoshi发送我的最后一个区块。
  • 向Satoshi发送我的最后一个区块。

区块链直接替换

在上面的例子中,Debby收到的Satoshi最后一个区块,这个区块的Pre Hash正好是Debby最后一个区块的Hash。这样Debby就直接把这个区块加入自己的链上。
如果链上区块差距比较多,那是怎么做的呢?我们可以继续做实验。
我们在Debby链上新增一个区块
在这里插入图片描述
我们看下Debby链上的行为,主要集中在新增区块后的行为
在这里插入图片描述

  • 向Satoshi发送我的最后一个区块。
  • Satoshi给我发送了它的最后一个区块。
  • 判断出Satoshi最后一个区块索引并不比我大,所以我什么都不用做。这个是正确的,因为我们第二次新增的区块是在Debby上,所以它的最后一个区块不可能比Satoshi最后一个区块的索引小。

我们再切换到Satoshi视角,可以看到它已经同步了Debby链上数据
在这里插入图片描述
Satoshi视角看在Debby上新增一个区块后的行为
在这里插入图片描述

  • Debby向我发送了它的最后一个区块。
  • 判断出Debby的最后一个区块索引的Pre Hash和我的最后一个区块的Hash一致,我就将这个区块直接加入我的链上。
  • 向Debby发送我的最后一个区块。

上面的情况都是在链不一致时,由于只是差一个区块,于是就在当前链上直接追加这个区块。
我们再新建一个新链,它和老链Satoshi和Debby差两个区块。
新建的区块链叫Tony。我们让它和Satoshi同步数据。
在这里插入图片描述
在这里插入图片描述

  • Satoshi和我连接上了。
  • 我向Satoshi要它的最后一个区块。(已经领先2个区块了)
  • Satoshi将它的最后一个区块发送给我。
  • 我向Satoshi要它的全部区块。
  • Satoshi将它的所有区块发送给我。
  • 判断出Satoshi的区块链比我的长,我直接用它的全部区块链来替换我的区块链
  • Satoshi找我要我的最后一个区块。
  • 我向Satoshi发送我的最后一个区块。
  • 我向Satoshi发送我的最后一个区块。

我们再切换到Satoshi的视角,看它和Tony的数据同步
在这里插入图片描述
在这里插入图片描述

  • 我连接到Tony。
  • 我找Tony要它的最后一个区块。
  • Tony找我要我的最后一个区块。
  • Tony找我要我的全部区块链。
  • 我向Tony发送我的完整的区块链。
  • 我向Tony发送我的最后一个区块。
  • Tony把它的最后一个区块发送给我了。
  • 判断出Tony的最后一个区块的索引没有我的大,所以我什么都不用做。
  • Tony把它的最后一个区块发送给我了。
  • 判断出Tony的最后一个区块的索引没有我的大,所以我什么都不用做。

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

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

相关文章

Android自定义View - LayoutParams

这一期我们来讲一讲LayoutParams这个玩意儿。Android入门的第一行代码就牵扯到这个东西&#xff0c;然而&#xff0c;你真的理解够了吗&#xff1f; 第一层理解 <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http…

C# 中文字符串转GBK字节的示例

一、编写思路 在 C# 中&#xff0c;将中文字符串转换为 GBK 编码的字节数组需要使用 Encoding 类。然而&#xff0c;Encoding 类虽然默认并不直接支持 GBK 编码&#xff0c;但是可以通过以下方式来实现这一转换&#xff1a; 1.使用系统已安装的编码提供者&#xff08;如果系统…

数据库查询字段在哪个数据表中

问题的提出 当DBA运维多个数据库以及多个数据表的时候&#xff0c;联合查询是必不可少的。则数据表的字段名称是需要知道在哪些数据表中存在的。故如下指令&#xff0c;可能会帮助到你&#xff1a; 问题的处理 查找sysinfo这个字段名称都存在哪个数据库中的哪个数据表 SELEC…

大模型日报2024-06-04

大模型日报 2024-06-04 大模型资讯 1-bit LLMs或能解决AI的能耗问题 摘要: 大型语言模型&#xff08;如ChatGPT&#xff09;的性能不断提升&#xff0c;但其规模也在扩大。1-bit LLMs有望在保持高性能的同时&#xff0c;大幅降低能耗&#xff0c;解决AI系统的能源需求问题。 Hu…

Ubuntu系统设置Redis与MySQL登录密码

Ubuntu系统设置Redis与MySQL登录密码 在Ubuntu 20.04系统中配置Redis和MySQL的密码&#xff0c;您需要分别对两个服务进行配置。以下是详细步骤&#xff1a; 配置Redis密码 打开Redis配置文件: Redis的配置文件通常位于/etc/redis/redis.conf。 sudo nano /etc/redis/redis.c…

从实战案例来学习结构化提示词(一)

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

C# 获取windows的上传下载速度

直接利用CZGL.SystemInfo代码 UnitType.cs /// <summary> /// 单位 /// </summary> public enum UnitType : int {/// <summary>/// Byte/// </summary>/// B 0,/// <summary>/// KB/// </summary>KB,/// <summary>/// MB/// </…

Python语法详解module1(变量、数据类型)

目录 一、变量1. 变量的概念2. 创建变量3. 变量的修改4. 变量的命名 二、数据类型1. Python中的数据类型2. 整型&#xff08;int&#xff09;3. 浮点型&#xff08;float&#xff09;4. 布尔型&#xff08;bool&#xff09;5. 字符串&#xff08;str&#xff09;6.复数&#xf…

MySQL中所有常见知识点汇总

存储引擎 这一张是关于整个存储引擎的汇总知识了。 MySQL体系结构 这里是MySQL的体系结构图&#xff1a; 一般将MySQL分为server层和存储引擎两个部分。 其实MySQL体系结构主要分为下面这几个部分&#xff1a; 连接器&#xff1a;负责跟客户端建立连 接、获取权限、维持和管理…

JavaScript第九讲BOM编程的练习题

前言 上一节有BOM的讲解&#xff0c;有需要的码客们可以去看一下 以下是一个结合了上述BOM&#xff08;Browser Object Model&#xff09;相关内容的练习题及其源代码示例&#xff1a; 练习题&#xff1a; 编写一个JavaScript脚本&#xff0c;该脚本应该执行以下操作&#…

1141. 查询近30天活跃用户数

1141. 查询近30天活跃用户数 题目链接&#xff1a;1141. 查询近30天活跃用户数 代码如下&#xff1a; # Write your MySQL query statement below select activity_date as day,count(distinct user_id) as active_users from Activity where activity_date between 2019-06-…

[数据集][图像分类]蘑菇分类数据集14689张50类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;14689 分类类别数&#xff1a;50 类别名称:[“agaricus_augustus”,“agari…

流程引擎,灵活设计业务流程的编辑器设计

流程引擎&#xff0c;灵活设计业务流程的编辑器设计

PySpark特征工程(I)--数据预处理

有这么一句话在业界广泛流传&#xff1a;数据和特征决定了机器学习的上限&#xff0c;而模型和算法只是逼近这个上限而已。由此可见&#xff0c;特征工程在机器学习中占有相当重要的地位。在实际应用当中&#xff0c;可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

若依项目部署(Linux2.0)

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量&#xff1a; vim /etc/profile 设置环境变量生效&#xff1a; source /etc/profile 查看一下jdk版本&#xff1a; java -version 解压tomcat tar -zxvf apache-tomcat-8.5.20.tar.gz 防火墙设置&#xff1a; …

一款WPF的小巧MVVM框架——stylet框架初体验

今天偶然知道有一款叫做stylet的MVVM框架&#xff0c;挺小巧的&#xff0c;特别是它的命令触发方式&#xff0c;简单粗暴&#xff0c;让人感觉很神器。所以接下来我要做一个简单的demo&#xff0c;顺便来分享给大家。 本地创建一个WPF项目&#xff0c;此处我使用.NET 8来创建。…

前端 JS 经典:阿里云文件上传思路

前言&#xff1a;功能点概括&#xff1a;1、多选文件 2、选择文件夹 3、拖拽 4、选择后形成一个列表&#xff0c;列表里有一些信息 5、有进度条 6、控制并发数 7、可取消 8、展示统计信息 1. 交互实现 交互的目标是要拿到 file 对象。只要拿到 file 对象&#xff0c;就能通过…

大前端nestjs入门教程系列(五):nestjs整合jwt该怎么做

写在前面 相信大家对于jwt应该不陌生了,做过前后端分离的童鞋应该对jwt不陌生,但是jwt是用来干什么的呢?jwt是json web token的缩写,它是一个开放标准(RFC 7519),定义了一种紧凑且独立的方式,可以在各方通过JSON 对象安全地传输信息。此信息可以通过数字签名进行验证和…

ABB喷涂机器人IRB52维修指导分析

ABB喷涂机器人是一种非常重要的涂装设备&#xff0c;但是它的维护保养工作也必不可少。如果不定期维修保养&#xff0c;可能会导致ABB喷涂机械手故障&#xff0c;影响生产效率和产品质量。 首先&#xff0c;定期检查ABB涂装机器人IRB52喷嘴和喷枪是否正常&#xff0c;这是维修…

计算机视觉(CV)的教程、相关项目

计算机视觉(CV)是一个广泛而深入的领域,其教程和项目众多。以下是针对计算机视觉(CV)的教程和相关项目的一个清晰概述: 教程 入门教程: OpenCV入门:OpenCV是一个开源的计算机视觉库,提供了大量用于图像和视频处理的函数。可以通过OpenCV的官方文档或在线教程来学习其…