区块链的运行原理与演示

目录

前言

具体演示

1、在浏览器中输入区块链演示网址:

2、创建新区块

3、篡改区块信息使其无效

4、新增P2P 网络节点。

 5、节点连接。

6、区块信息同步

总结


前言

        区块链系统是由一系列分布在全球各地的分布式节点组成的。这些节点互不隶属,通过专门的网络协议进行连接,从而构成一种在对等者(Peer)之间分配任务和工作负载的分布式对等计算机网络,我们通常将其称为P2P(PeertoPeer)网络。P2P网络的相关知识,在此先不赘述。
        构成区块链的去中心化P2P网络中的第一个节点被初始化并生成创世区块以后,后续运行通常包括以下几个主要步骤。
(1)添加新节点(数据上链)。
(2)节点加入后同步最新的区块链数据。
(3)节点生成的区块向网络中其他节点进行广播,其他节点收到广播后开始判断是否已经收到过该区块,若收到就忽略,否则将验证其有效性,有效的区块会被收到广播的节点添加到自身节点的区块链中。
        下面通过一个区块链演示网站来直观地了解区块链具体是如何运行的。


具体演示

1、在浏览器中输入区块链演示网址:

Blockchain Demo - A visual demo of blockchain technologyicon-default.png?t=N7T8https://blockchaindemo.io/

介绍页面的元素

2、创建新区块

在操作页面底部的"DATA

文本框中输入“New Block 1”,并单击“ADD NEW BLOCK”按钮来添加一个新区块。同样,在下面在添加内容为“New Block 2”的新区块。该演示网站会自动为这两个新区块生成有效的哈希值,并将这两个新区块与之前的区块依次连接起来。(操作和结果如下图)

3、篡改区块信息使其无效

        由于当前区块的哈希值由区块的数据、父区块哈希值、区块索引、时间戳、随机数等一起生成,其中任何一个数据的改动皆会导致区块哈希值的变化,而该哈希值的变化又会导致区块无效,即当前区块哈希值可能不再以“000”作为开头。例如,将“BLOCK#1”区块的“DATA”内容修改为“Block Changed”,则对应的哈希值随之发生改变,区块哈希值的颜色也从绿色(代表有效)变成红色(代表无效),如图。


        由于后续区块用到了前序区块的哈希值,因此一个无效区块将导致后续所有区块无效,从而产生断链。该演示网站提供了区块修复功能。若要修复无效的区块,单击每个区块右下角的修复按钮,对每个区块再重新计算一遍哈希值即可,演示结果如图修复后的区块哈希值又会重新变成绿色,即恢复至有效状态。

4、新增P2P 网络节点。

        单击操作页面右上角的“Add Peer”按钮即可新增一个节点(节点名称自动生成), 此时该模拟区块链中将存在两个节点, 分别为“Satoshi”与“Peter”,如图所示。若要切换节点,只需单击相应节点即可。节点有3 种显示颜色,其中蓝色表示当前节点,绿色表示节点和当前节点相连,红色表示节点未和当前节点相连。红色节点下面有一个按钮用来进行连接,鼠标指针悬浮于该按钮上,则该按钮将显示为绿色,单击该按钮即可进行节点连接。(这个Peter是随机生成的名字)


 5、节点连接。

        单击节点“Peter”下的连接按钮进行连接后,可看到该节点颜色变成绿色,表示已经连接,并且节点下面多了一个按钮,即消息列表按钮,节点右上角的数字表示消息的个数,如图 所示。单击消息列表按钮,即可显示消息记录,如图 所示。消息列表中会显示每个连接、区块请求、区块发送等相关信息。

6、区块信息同步

节点之间会互相同步区块信息。点击“Peter”节点。可以看到该节点下也包含“Satoshi”节点的3个区块。


总结

        通过上述模拟生成区块链的过程,我们能够对区块链的运行原理和区块同步过程等有较为直观的认识。区块链的节点始终都将最长的链条作为正确的链,并持续延长和维护该链。当节点发现更长的链条并且自身链条不是最新链时,就会使用最长的链条来替换自身链条。当一个节点判断出自身区块链是最新的,再接收到新的区块信息时,节点将会把新的区块添加到自身链条最后。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Sonatype Nexus Repository 3 路径遍历漏洞复现(CVE-2024-4956)

0x01 产品简介 Sonatype Nexus Repository 是美国Sonatype公司的一款存储库管理器,用于存储和分发软件组件、构建工件和 Docker 容器。它支持多种包格式,与 CI/CD 工具集成,并提供安全性和合规性功能。 0x02 漏洞概述 Sonatype Nexus Repository 3 存在路径遍历漏洞(CVE-…

数据结构(二)单链表

一、链表 (一)概念 逻辑结构:线性 存储结构:链式存储,在内存中不连续 分为有头链表和无头链表 同时又细分为单向、循环、双向链表 (二)有头单向链表示意图 以下数据及地址只是为了方便理解…

【Linux】文件系统和软硬链接

目录 一、认识文件系统 二、认识磁盘 三、磁盘文件系统 3.1 磁盘存储的抽象逻辑结构 3.2 磁盘文件系统图 3.3 创建和删除文件 3.4 如何理解目录? 3.5 如何查找一个文件 3.6 查找文件的一般流程 3.7 如何确定文件所在的分区 3.8 总结 四、软硬链接 4.1 …

30、QUiLoader 在程序运行时读取UI 文件中的信息

QUiLoader 类可让独立应用程序在运行时使用UI 文件中存储的信息,进而可以分离UI设计工作。 一、使用Qt 设计师-Qt Designer创建ui文件 打开Qt Designer,选择“创建” 往中央区域拖住几个控件,进行布局,更改三个控件的objectName…

参考文献交叉引用两个文献,逗号隔开

1.引用两个参考文献,定位到word正文中需要引用的位置,然后插入-交叉引用,引好文献 2.选中两个参考文献,切换域代码,然后进行修改: 改为 上面的两张图片中的点是空格的含义,word中按ctrlshift8就…

Qt | QGridLayout 类(网格布局)

01、上节回顾 Qt | QBoxLayout 及其子类(盒式布局)02、QGridLayout 简介 1、网格布局原理(见下图): 基本原理是把窗口划分为若干个单元格,每个子部件被放置于一个或多个单元格之中,各 单元格的大小可由拉伸因子和一行或列中单元格的数量来确定,若子部件的大小(由 sizeH…

css - sass or scss ?

总的来说,Sass 和 SCSS 提供的功能是一样的,选择哪种语法主要取决于你的个人或团队的偏好。

OFDM 802.11a的FPGA实现(二十一)发射主控模块MCU(含代码)

目录 1.前言 2.主控逻辑 3.Matlab 4.verilog 5.ModelSim 6.ModelSim仿真结构与Matlab自动化对比 完整工程链接(含verilog和Matlab代码): https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzkxNjM0NDk2Nw&actiongetalbum&album…

PHP报错 Notice: Undefined index: action in

upload靶场PHP报错 Notice: Undefined index: action in 修改 php.ini 中的 error配置下错误显示方式:将error_reporting E_ALL 修改为 error_reporting E_ALL & ~E_NOTICE 修改后重启下APCHE服务即可。

Mysql超详细安装配置教程(保姆级图文)

MySQL是一种流行的开源关系型数据库管理系统,它广泛用于网站和服务的数据存储和管理。MySQL以其高性能、可靠性和易用性而闻名,是许多Web应用程序的首选数据库解决方案之一。 一、下载安装包 (1)从网盘下载安装文件 点击此处直…

UE5中搭建一个简单的海岛

本文将用UE的WaterSystem与地形搭建一个简单的海岛,通过WaterSystem的参数设置,可以更好的自定义海岸线等效果。 1.基础风貌 1.1.首先新建一个Basic基础场景,切换到地形编辑模式刷出一块高地,用于沙滩。 1.2.引入UE官方插件Wat…

【EXCEL_VBA_实战】两组数据比对是否一致(字符串数组)

工作背景:比对两组数据是否一致(位置非一一对应) 思路构建:两组数据转换为两组字符串数组,比对所包含元素是否相同 问题点:A数组的第一个元素不一定与B数组的第一个元素对应,此时无法通过公式…

C++开源库glog使用封装--自定义日志输出格式,设置日志保留时间

glog下载和编译 glog开源地址 https://github.com/google/glog glog静态库编译 cd /home/wangz/3rdParty/hldglog/glogmkdir out mkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX../out -DCMAKE_BUILD_TYPERelease -DBUILD_SHARED_LIBSOFF本文选择的glo…

HashMap中添加元素

一、HashMap底层使用了3种结构 hash数组(定位)、链表(存储元素)、红黑树(存储元素,提高查询效率) 二、添加流程描述: 添加元素时,先为元素计算出一个hash值,再用hash值%数组长度得到元素位置,将元素(k:v)封装到Node对象中&…

sql server【 特定分隔符隔开的字符串转表】和【 列转逗号隔开的字符串】

文章目录 引言I 特定分隔符隔开的字符串转表II Sql Server 列转逗号隔开的字符串2.1 多列转行,逗号分隔(字段拼接/字段分割)2.1 案例引言 Sql Server 列转逗号隔开的字符串 和 逆转,常用于数据导出和数据查询。 I 特定分隔符隔开的字符串转表 CREATE FUNCTION [dbo].[GetIDLi…

python科研数据可视化之折线图

例如 : 下面的配色表画出的图很好看。选择喜欢的颜色,找到代码中颜色部分进行修改即可。 代码部分已经有详细的注释,就不一一解释了。另外,如果想要坐标轴从设定的值开始就把下面代码中的范围xlim,ylim进行注释。 imp…

MySQL的备份及恢复

目录 5、MySQL的备份及恢复 5.1 MySQL日志管理 5.1.1 MySQL日志类型 5.1.2 错误日志 5.1.3 通用查询日志 5.1.4 慢查询日志 5.1.5 二进制日志 开启日志 二进制日志管理>又叫日志滚动 二进制日志还原数据 删除二进制日志文件: 5.1.6实例: 使用mysqlbi…

windows远程桌面无法连接,轻松解决 Windows远程桌面无法连接问题的故障排查

Windows远程桌面是一个强大且实用的工具,它允许用户远程访问和操作另一台计算机。然而,有时您可能会遇到无法连接的问题,这无疑会严重影响工作效率和体验。但别担心,本文将为您揭示解决这一问题的关键策略,让您轻松恢复…

2024042701-disjoint-set

并查集 Disjoint-Set 一、前言 并查集的历史 1964年, Bernard A. Galler 和 Michael J. Fischer 首次描述了不相交的并查集,1975 年,Robert Tarjan 是第一个证明O(ma(n))(逆阿克曼函数)算法时间复杂度的上限&#x…

简易CAD程序:Qt多文档程序的一种实现

注&#xff1a;文中所列代码质量不高&#xff0c;但不影响演示我的思路 实现思路说明 实现DemoApplication 相当于MFC中CWinAppEx的派生类&#xff0c;暂时没加什么功能。 DemoApplication.h #pragma once#include <QtWidgets/QApplication>//相当于MFC中CWinAppEx的派生…