目录
前言
具体演示
1、在浏览器中输入区块链演示网址:
2、创建新区块
3、篡改区块信息使其无效
4、新增P2P 网络节点。
5、节点连接。
6、区块信息同步
总结
前言
区块链系统是由一系列分布在全球各地的分布式节点组成的。这些节点互不隶属,通过专门的网络协议进行连接,从而构成一种在对等者(Peer)之间分配任务和工作负载的分布式对等计算机网络,我们通常将其称为P2P(PeertoPeer)网络。P2P网络的相关知识,在此先不赘述。
构成区块链的去中心化P2P网络中的第一个节点被初始化并生成创世区块以后,后续运行通常包括以下几个主要步骤。
(1)添加新节点(数据上链)。
(2)节点加入后同步最新的区块链数据。
(3)节点生成的区块向网络中其他节点进行广播,其他节点收到广播后开始判断是否已经收到过该区块,若收到就忽略,否则将验证其有效性,有效的区块会被收到广播的节点添加到自身节点的区块链中。
下面通过一个区块链演示网站来直观地了解区块链具体是如何运行的。
具体演示
1、在浏览器中输入区块链演示网址:
Blockchain Demo - A visual demo of blockchain technologyhttps://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个区块。
总结
通过上述模拟生成区块链的过程,我们能够对区块链的运行原理和区块同步过程等有较为直观的认识。区块链的节点始终都将最长的链条作为正确的链,并持续延长和维护该链。当节点发现更长的链条并且自身链条不是最新链时,就会使用最长的链条来替换自身链条。当一个节点判断出自身区块链是最新的,再接收到新的区块信息时,节点将会把新的区块添加到自身链条最后。