【hyperledger fabric 1.4 学习教程】一、 区块链入门

1、区块链的入门

背景:

 区块链2.0-智能合约代表: 以太坊

什么是区块链

 

 下图体现了链式的存储结构:

 

 下图体现了区块链去中心,无中心节点的结构:整个区块链的数据是存在多个服务器节点上的,每个节点里都有全量的数据,每个节点都是对等的

 

什么是智能合约

 

 实现自己业务逻辑的一串代码: 它可以通过编译过后部署在我们区块链上,可以通过sdk或者其他方式调用;是区块链账本的一个入口,如果需要把我们的数据上传到区块链上的话,我们需要编写一段业务逻辑代码,通过智能合约的方式上传到区块链上;

 

什么是共识

或者共识需要解决那些问题

什么时候产生区块:区块中包含那些数据,一个区块中往往是不会包含单条数据,包含多条数据,应该包含那些数据,什么时候打包区块;

区块如何保证数据同步到其他节点: 区块链是一个分布式架构,所有数据都分发到所有节点,怎么保证其他节点和产生区块的节点是一致的;

 

什么是共识算法

解决以上问题的就是共识算法,共识算法往往会聚焦以上中的几个问题;有些区块链中往往会结合多种共识算法的优点,使得共识达到优解

 

 

区块链平台

 

 

 比特币和以太坊做数字货币。

fabri主要做区块链在各行业的应用。

 

2、区块链防篡改机制

区块链的数据结构

 

区块的数据结构:

index: 整个区块的一个索引或者叫高度,如以上的1,2,3

Timestamp: 区块产生的时间

Hash: 当前区块的哈希值

Prev-hash: 前一个区块的哈希值,如当前区块是2,则Prev-hash指的是前一个区块1的哈希

Data: 当前区块所存储的数据

nonce: 随机值

Hash 计算值 f(index+pre-hash+timestamp +data+nonce) = hash

从上面的公式可知,如此时修改了区块2的数据,则区块2的哈希值发生了改变,则区块3的Prev-hash发生改变,则区块3的哈希值发生改变,以此类推

区块4,5,....,也就是说区块2后面的所有区块都会发生改变

 

区块链防篡改

 

 如果发现了上面提到的篡改问题,为了获取其他节点信任,需要对后面的所有区块修改,此时需要达到51%的算力或者说需要修改51%以上的网络节点,才可以修改整条区块链。

 

从现实情况下,是不可能达到51%的算力的,从而保证了数据的防篡改

 

区块链防篡改-演示

该演示环境下有三个节点: Peer A , Peer B,  Peer C

 

 

 

 

 

 

每个节点内有5个区块

 

 可以看到第二个区块的prev-hash是第一个区块的hash值,第三个区块的prev-hash是第二个区块的hash; Tx就是我i们的data

 

 

如此时我们把区块2的数据篡改,可以发现区块2的显示变红

 

 区块3到5的显示也变红,说明修改区块2后,区块2之后的所有区块都受到了影响,所有区块链篡改的难度很大

 

 

 

如果此时要造假,需要将区块2的hash值修改成符合比特币中要求的hash值

在比特币中,hash的前几位必须是0;

挖矿:计算hash值,让hash的前4位为0,这个过程就是挖矿;不断更改nonce,从而得到一个合法的hash

在演示中点击Mine按钮,模拟挖矿的操作;如下:此时区块2被造假

 

 如上图,此时区块2被造假,但是后面的区块的hash还是错误的,需要继续修改后面区块的hash值;

要使hash前4为0难度很大,这也一定保证了区块链防篡改的能力

 

posted @ 2022-05-17 10:06  MintMin  阅读(311)  评论(0编辑  收藏  举报