目录

区块链区块链基础知识

目录

【区块链】区块链基础知识

  1. 区块链三大主流开发语言:

    a) Golang

    b) C++

    c) Node.js

  2. 区块链概述

    a) 产生背景

    i. 密码朋克:通过匿名性保护隐私安全

    ii.不可篡改的文件记录:通过给记录加盖时间戳,记录不可篡改文件

    iii.通过加密货币代替现金

    iv.分布式传输

    b)区块链发展历史

    i.09年中本聪发布区块链白皮书。 区块链1.0

    ii.2014年,以太坊诞生。 区块链2.0

    iii.18年中期,EOS主网上线。区块链3.0

    iv.超级账本:Fabric,不支持发币。

    c)区块链场景概念

    i.数字货币 :可以与现金等价交换,理论上有现金流所拥有的一切功能和属性。

    ii.融资:产生一个项目亮点,使他人认可它的价值和发展潜力,通过筹集资金来实现这个项目。

    1.IPO

    2.ICO

    iii.电子钱包:在电子商务活动中管理资金,用于支付的工具。

    d)什么是区块链

    i. 区块链是一种集成了点对点传输协议、现代密码学、共识算法、分布式数据储存等成型数据的应用模型。

    e)区块链特点

    i.去中心化,无中心化机构

    ii.不可篡改

    iii.可追溯

    1.公益宝、善款追溯

    2.物流追溯

    iv.完整备份:区块链具有完整的分布式存储特性

    v.历史记录:被存储的数据拥有完整的历史记录,可以快速查看或者复原

    vi.交易广播:一次交易,分发给网络的其他节点,同步接收。

    f)加密货币的特点

    i.独立性 所有货币都是独立存在的。

    ii.地址、交易ID等都有不重复的唯一性。

    iii.匿名性:账户和个人信息没有关联,所有交易全程加密。

    iv.不可篡改:基于加密和时间戳,全程不可篡改。

    g)区块链核心技术

    i.点对点传输协议(PPP):在网络中,节点可以直接进行数据流通。

    ii.现代密码学:公私钥签名、安全,不会在传输过程中被恶意篡改

    iii.共识篡改:数据一致性

    iv.分布式数据储存:实现去中心化的重要技术依据。

    h)区块链的核心概念

    i.区块链本质是一个分布式账本,通过共识算法来决定谁能获得记账权。以区块为单位以区块产生时间为顺序进行连接。每一个区块中保存上一个区块的Hash值、交易数据。

    ii.区块

    1. 区块负责保存交易数据、记录等
    2. 结构
    • 区块头

      a)时间戳

      b)随机数

      c)区块高度

      d)前一个区块Hash值

      e)当前区块Hash值

      f)Merkle

    • 区块体

      保存交易数据

    1. 分布式数据库

      所有的区块都会存储在每个节点中,所有的节点组成一个分布式数据库。

    2. 节点:简单来说,节点可以理解为一个运行区块链软件的计算机。

      1.全节点:保存了完整的区块链副本,也就是说包含了所有数据。

      2.轻节点:不保存所有区块数据,需要依赖全节点进行验证。

      3.挖矿节点:带有挖矿功能的节点,专门处理交易验证,保存了完整的区块副本。

    3. 挖矿

      a)区块是在挖矿中产生的

      b)穷举随机数算法,把上一个区块的哈希值加上10分钟内产生的所有交易加上随机数通过sha256产生一个哈希值。随机数nonce需要使得哈希值满足一定条件,就可以获得这些区块的交易记账权,产生一个新的区块,再进行广播,让其他节点进行验证,防止造假。

    4. 分叉

      a)挖矿分叉

      解决方案:不同的矿工跟随不同的区块,由于在不同的链上面,算力不一样,矿工数量不一样。矿工数量与算力成正比,最终链的增长速度不一样,然后出现其中一条链更长的情况。最终,矿工在发现更长的链之后,会去同步这条链上的数据。丢弃原来的链。

      b)升级分叉:矿工遵从不同机制的情况下导致的分叉。例如DAO攻击导致的ETC&ETH

    • 分类

      1.硬分叉:如果区块链共识规则改变,并且这种规则不支持前向兼容。也就是说旧节点无法认可新节点产生的区块,叫做硬分叉。要求所有节点必须升级。

      2.软分叉:如果区块链共识规则改变,并且这种规则支持前向兼容。也就是说旧节点仍然认可新节点产生的区块,叫做软分叉。需要大部分节点更新软件。