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

  • 相关阅读:
    Activity的启动模式
    Assets和Raw区别
    手机自动跑脚本
    系统隐式 Intent
    判断是否为小屏幕设备
    C语言数组初始化方式
    windows10环境下gcc环境变量的配置
    UE4.22编辑器界面操控设置(4)
    windows10下JDK9的环境配置
    分布式ID生成解决方案之snowflake(雪花算法)
  • 原文地址:https://www.cnblogs.com/xiangshigang/p/16279736.html
Copyright © 2020-2023  润新知