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

news2025/1/20 14:54:10

大纲

  • 创建区块
  • 新增链
  • 区块链直接替换

我们可以在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.coloradmin.cn/o/1801628.html

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

相关文章

android中调用onnxruntime框架

创建空白项目 安装Android Studio及创建空白项目参考:【安卓Java原生开发学习记录】一、安卓开发环境的搭建与HelloWorld(详细图文解释)_安卓原生开发-CSDN博客 切记:build configuration language 一定选择Groovy!官…

向量化:机器学习中的效率加速器与数据桥梁

在机器学习领域的广袤天地中,向量化技术以其独特的魅力,为数据处理和模型训练注入了强大的动力。本文将深入探讨向量化在机器学习领域中的体现,剖析其如何助力模型实现高效的数据处理和精确的结果预测,并通过丰富的案例和详尽的数…

【人工智能Ⅱ】实验8:生成对抗网络

实验8:生成对抗网络 一:实验目的 1:理解生成对抗网络的基本原理。 2:学会构建改进的生成对抗网络,如DCGAN、WGAN、WGAN-GP等。 3:学习在更为真实的数据集上应用生成对抗网络的方法。 二:实验…

Vue2学习(04)

目录 一、组件的三大组成部分 二、组件的样式冲突scoped 三、scoped原理 ​编辑 四、data是一个函数 五、组件通信 六、props详解 七、非父子通信 1.eventbus事件总线(可以一传多)--->作用是在非父子组件之间,进行简易的消息传递(复杂场景---&…

深拷贝、浅拷贝、引用拷贝

深拷贝和浅拷贝的区别 1. 引用拷贝2. 对象拷贝 1. 引用拷贝 两个对象指向同一个地址值。 创建一个指向对象的引用变量的拷贝Teacher teacher new Teacher("Taylor",26); Teacher otherteacher teacher; System.out.println(teacher); System.out.println(otherte…

【面试干货】如何选择MySQL数据库存储引擎(MyISAM 或 InnoDB)

【面试干货】如何选择MySQL数据库存储引擎(MyISAM 或 InnoDB) 💖The Begin💖点点关注,收藏不迷路💖 MySQL数据库存储引擎是一个 关键 的考虑因素。MySQL提供了多种存储引擎,其中最常用的是 MyISAM 和 InnoD…

[word] word表格如何设置外框线和内框线 #媒体#笔记

word表格如何设置外框线和内框线 点击表格的左上角按钮从而选中表格 点击边框按钮边上的下拉箭头,选择边框和底纹 点击颜色边上的下拉箭头,选择红色 点击取消掉中间的边框,只保留外围边框 点击颜色边上的下拉箭头,选择另外一个颜…

2013.8.5-2024.5.10碳排放权交易明细数据

2013.8.5-2024.5.10碳排放权交易明细数据 1、时间:2013.8.5-2024.5.10 2、来源:各碳排放交易所 3、范围:各交易所城市 4、指标:行政区划代码、地区、所属省份、交易日期、交易品种、开盘价_元、最高价_元、最低价_元、成交均价…

【全部更新完毕】2024全国大学生数据统计与分析竞赛A题思路代码文章教学数学建模-抖音用户评论的文本情感分析

文章摘要部分: A 题: 抖音用户评论的文本情感分析 摘要 随着短视频平台的迅猛发展,抖音已成为全球最受欢迎的短视频分享平台之一。然而,随着用户数量和使用时长的增加,抖音团队需要不断优化平台功能、提升用户体验&…

生成纳秒级别的时间戳,高性能

问题 同步influxdb有些数据没有,不知道啥原因,后来百度发现时间需要唯一,毫秒还会重复,只能采用纳秒处理了 java实现 TimeStampUtils.java package com.wujialiang;/*** 获取纳秒值的工具类*/ public class TimeStampUtils {/…

面试题-Vue2和Vue3的区别

文章目录 1. 响应式系统2. 组合式 API (Composition API)3. Fragment (碎片)4. Teleport (传送门) 5. 性能改进6. 移除或改变的功能7. 构建工具8. TypeScript 支持 Vue 2 和 Vue 3 之间存在许多重要的区别,这些区别涵盖了性能、API 设计、组合式 API(Com…

产品NPDP+项目PMP助你成长

前言 从管理的角度来讲,产品经理和项目经理的区别,我们应该吧项目经理和产品的区别分为一纵一横,那一纵就是我们的项目经理,项目经理在整个新产品研发过程中他扮演的是管理监督项目参与者的角色,其中包括研发部门、技术部门、市场部门或是销售部门等等。他所要做的事情就…

【Unity】Kafka、Mqtt、Wesocket通信

1 前言 最近研究了下kafka、mqtt、webocket插件在Unity网络通信中的应用,做下小总结吧。(不想写笔记,但不写又会忘,痛苦) 2 Kafka 先说结果:Kafka实现失败。 我会使用的方法是在VS里安装了Confluent.Kafka…

压缩大文件消耗电脑CPU资源达到33%以上

今天用7-Zip压缩一个大文件,文件大小是9G多,这时能听到电脑风扇声音,查看了一下电脑资源使用情况,确实增加了不少。 下面是两张图片,图片上有电脑资源使用数据。

05--Git分布式版本控制系统

前言:给后端工程师使用的版本控制器,本质上类似带时间标记的ftp,使用比较简单,就在这里归纳出来,供参考学习。 git1、概念简介 分布式版本控制系统(Distributed Version Control System,DVCS&…

数据挖掘--分类

数据挖掘--引论 数据挖掘--认识数据 数据挖掘--数据预处理 数据挖掘--数据仓库与联机分析处理 数据挖掘--挖掘频繁模式、关联和相关性:基本概念和方法 数据挖掘--分类 数据挖掘--聚类分析:基本概念和方法 基本概念 决策树归纳 决策树:决策树是一…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(四)

上一章节我们了解了 shuffle 相关的概念和原理后其实可以发现一个问题,那就是 shuffle 比较容易造成数据倾斜的情况。 例如上一节我们看到的图,在这批数据中,hello 这个单词的行占据了绝大部分,当我们执行 groupByKey 的时候触发了…

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…

Docker的资源限制

文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…