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的最后一个区块的索引没有我的大,所以我什么都不用做。

相关推荐

  1. 区块技术基本概念学习

    2024-06-10 01:36:04       13 阅读
  2. 区块技术

    2024-06-10 01:36:04       34 阅读
  3. 4-区块基础

    2024-06-10 01:36:04       41 阅读
  4. 桨PaddleDTX-基于区块的联邦学习

    2024-06-10 01:36:04       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 01:36:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 01:36:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 01:36:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 01:36:04       18 阅读

热门阅读

  1. Hadoop集群安装

    2024-06-10 01:36:04       9 阅读
  2. 1731. 每位经理的下属员工数量

    2024-06-10 01:36:04       9 阅读
  3. btstack协议栈实战篇--GAP LE Advertisements Scanner

    2024-06-10 01:36:04       11 阅读
  4. WooYun-2016-199433 -phpmyadmin-反序列化RCE-getshell

    2024-06-10 01:36:04       10 阅读
  5. Vue2事件处理

    2024-06-10 01:36:04       11 阅读
  6. JVM内存分析之JVM分区与介绍

    2024-06-10 01:36:04       8 阅读
  7. 重写mybatisPlus自定义ID生成策略

    2024-06-10 01:36:04       11 阅读