1.1 区块链基本概念

  1. 区块
    1. 概念:区块就是一种数据结构
    2. 一个区块包含一组经过验证的交易, 验证是一个检查资产提供方的交易签名的过程
    3. 区块内容如下
      1. 区块号码,也就是区块高度
      2. 当前区块的哈希值
      3. 默克尔树根
      4. 时间戳
      5. 区块大小
      6. 随机数
      7. 交易列表
    4. 创世区块:区块链中的第一个区块

    1. 每个区块头里包含上一个区块的区块头哈希 值,形成一条单向链
    2. 区块里任何一个改动,都会使得链上它后面 的区块头产生相应的修改
  2. 节点
    1. 运行区块链软件的计算机
    2. 分类
      1. 全节点 :同步整个区块链并对交易做验证的节点,同时 中继区块的在网络上的传播
      2. 轻节点 :不保存所有区块,依赖全节点做交易验证
      3. 挖矿节点: 带挖矿功能的全节点
  3. 挖矿
    1. 区块是在挖矿的过程中产生的
    2. 什么叫挖矿:穷举随机数算法,把上个区块的哈希值加上10分钟内的全部交易打包,再加上一个随机数,算出一个256位的字符串哈希值,随机数Nonce需要使哈希值满足一定条件,就可以获得这个区块的交易记账权。新产生的区块需要快速进行广播,以便其它节点进行验证,防止造假
  4. 分叉
    1. 分类
      1. 不同地区的两个矿工,同时挖出两个新的区块加以链接,就会出现分叉(这个应该叫挖矿分叉)
        1. 解决方案:约定后续矿工选择累计工作量证明最大的区块链、具体如下:
          1. 由于不同的矿工跟从了不同的区块,在分叉出来的两条不同链上,算力是有差别的。形象地说,就是跟从两个链矿工的数量是不同的。
          2. 由于解题能力和矿工的数量成正比,因此两条链的增长速度也是不一样的,在一段时间之后,总有一条链的长度要超过另一条。当矿工发现全网有一条更长的链时,他就会抛弃他当前的链,把新的更长的链全部复制回来,在这条链的基础上继续挖矿。所有矿工都这样操作,这条链就成为了主链,分叉出来被抛弃掉的链就消失了
      2. 矿工遵从不同的机制(比如区块链的升级),也会出现分叉(这里可以称为区块链分叉)
        1. 分类
          1. 硬分叉:如果区块链软件的共识规则被改变,并且这种规则改变无法向前兼容,旧节点无法认可新节点产生的区块,即为硬分叉。 硬分叉要求所有节点升级到新的软件,否则就会分开成两条链,一条是符合新规则的新链, 一条是不符合新规则的老链。
          2. 软分叉:如果区块链的共识规则改变后,这种改变是向前兼容的,旧节点可以兼容新节点产生的区块,即为软分叉。软分叉需要大部分的节点更新软件以执行新的规则
  5. 时间戳与不可篡改
    1. 在区块链系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块的数据写入时间。
    2. 时间戳可以作为存在性证明的重要参数,它能够证明特定的数据在某个时刻是存在的,这是确保区块链数据库不可篡改,不可伪造的关键性因素
  6. 分布式数据库
    1. 区块链数据区块中的数据会存放在每一个节点中,所有节点组成了一个分布式数据库系统。任何一个节点被破坏都不会影响其它的健康节点,因为其他健康节点都保存了完整的数据库
  7. 交易
    1. 概念:记录一笔资产在交易参与者之间的转移 ,例如数字货币、存货等
    2. 交易内容
      1. 数量(Amount): 总共转移的资产量
      2. 输入(Input): 需转移的资产列表
      3. 输出(Output):资产的接收方,包括接收数量,接收者的ID,以及一系列需要满足的接收条件
        交易ID(Hash): 交易的唯一标识,一般采用交易的哈希值做标识
  8. UTXO交易模式
    1. 比特由特有的交易模式
    2. UTXO(Unspent Transaction Outputs)是未花费的交易输出,在比特币中,它是交易过程中的基本单位。
    3. 输入与输出
      1. 输入(Tx_in):资金来源
      2. 输出(Tx_out):资金去向
      3. 创世区块和矿工所获得资历没有输入,其它每笔交易的输入必须是另一笔交易没有被使用的输出,同时这一笔输入还需要上一笔输出地址所对应的私钥进行签名
  9. 哈希
    1. 区块链中的数据并不只是原始数据或者交易记录,还包括它们的哈希函数值,即将原始数据编码为特定长度的、由数字和字母组成的字符串后,记入区块链。
    2. 哈希函数的特点
      1. 哈希函数的处理过程是单向的,通过处理过的输出值几乎不可能计算出原来的输入值
      2. 输入的数据越长,哈希函数的处理时间就越长。
      3. 哈希函数的输入值即使只差一个字节,其输出结果也会天差地别。
  10. Merkle树
    1. Merkle树可以是二叉树,也可以是多叉树,它具有树结构的所有特点
    2. Merkle树在区块链中的主要作用是快速归纳和校验数据的完整性
    3. 在区块链中使用Merkle树可以极大的提高区块链的运行效率和可扩展性,使得区块头只需要包含根哈希值而不需要包含所有的底层数据。另外,Merkle树支持SPV,也就是说它可以在不运行完整区块链网络节点的情况下对交易数据进行检验
  11. 双重支付
    1. 双花:利用货币的数字特性完成再次或者多次支付
    2. 在传统支付上面 ,由于金钱是物理实体,具有可观唯一存在的属性,所以可以避免双重支付。
    3. 而在电子货币中,需要可信赖的第三方管理机构提供保证(银行、支付宝等)(中心化机构)
    4. 区块链技术在去中心化的系统中不借助任何第三方机构而只通过分布式节点之间的相互验证与共识机制,有效的解决双花问题,在信息传输的同时完成了价值转移。
    5. 比特币中采用UTXO和数字签名校验来避免双花
  12. P2P
    1. P2P(Peer-to-Peer network,对等网络)是一种在对等者之间分配任务和工作负载的分布式应用架构,是对等计算机模型在应用层形成的一种组网或者网络形式。
    2. 迅雷采用的就是P2P技术
    3. 区块链系统是建立在IP通信协议和分布式网络基础上的, 不依靠传统的电路交换,而建立于网络通信之上,完全通过互联网进行信息交换。
    4. 网络中的所有节点都有同等地位,不存在任何中心节点或者层级结构,每个节点都会承担网络路由、验证数据区块等功能。
    5. 网络节点根据存储的数据大小分为全节点和轻量级节点
      1. 全节点:存储了从创世区块以来的所有区块链数据,它的优点是进行数据校验的时候不需要依靠别的节点,仅依靠自身就能完成校验更新等操作,缺点是硬件成本很高
      2. 轻量级节点只需要存储部分数据信息,当需要别的数据时可以通过简易支付验证的方式向邻近节点请求所需要的数据来完成验证更新
  13. 密码学
    1. 哈希算法
      1. 哈希算法主要是将任意长度的消息压缩为固定长度的二进制串,输出值称为哈希值,在现代密码学中经常用于实现数据完整性和实体认证
      2. 区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串
    2. 加密算法
      1. 概念:加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程
      2. 分类
        1. 对称加密
        2. 非对称加密
      3. 应用实例这里写图片描述
    3. 数字签名
      1. 数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。
      2. 步骤
        1. 发送将信息用哈希算法处理得出一个哈希值
        2. 用私钥对该哈希值进行加密,得出一个签名。
        3. 发送者把信息和签名一起发给接收者。
        4. 接收者使用发送的的公钥对签名进行解密,还原出哈希值
        5. 通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致
        6. 通过该方法鉴定信息是否来自发送者或者验证信息是否被篡改

猜你喜欢

转载自blog.csdn.net/u014396366/article/details/82319204