【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难度很大,这也一定保证了区块链防篡改的能力