zoukankan      html  css  js  c++  java
  • 接触区块链

    这里是看阮一峰大佬的一篇文章的简单记录,只是搬运工。

    一、区块链的本质

    一句话,它是一种特殊的分布式数据库。

    首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。

    二、区块链的最大特点

    区块链没有管理员,它是彻底无中心的。

    没有了管理员,人人都可以往里面写入数据,怎么才能宝成数据是可信的呢?被坏人改了怎么办?

    三、区块

    区块链由一一个个区块组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。

    区块包含两个部分:

    1、去块头:记录当前区块的元信息

    2、区块体:实际数据

    什么是hash,要着重理解。所谓hash,就是计算机可以对任意内容,计算出一个长度相同的特征值。

    两个重要推论:

    推论1、每个区块的hash都是不一样的,可以通过hash标识区块。

    推论2、如果区块的内容改变了,它的hash一定会改变。

    四、hash的不可修改性

    区块与hash是一一对应的,每个区块的hash都是针对“去块头”计算的。

    一点很重要:

    如果当前区块的内容改变了,或者上一个区块的hash变了,一定会引起当前区块的hash改变。

    这一点即联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

    五、采矿

    节点之间必须要保证同步,所以新区块的添加速度不能太快。大概十分钟产生一个区块。

    那么是采矿呢,采矿就是通过极其大量的计算,得到当前区块的有效hash,从而把新区块添加到区块链,这个过程就叫采矿。计算hash的机器就叫做矿机,操作机器的人就叫做矿工。

    六、难度系数

    这里就不赘述了,总之一句话,计算出满足条件的hash特别难,需要极其大量的计算。

    七、难度系数的动态调节

    这一点怎么理解呢,中本聪在设计区块链的时候是十分钟产生一个区块,但是这个并不是就是说完全的10分钟产生一个区块,有个刚好10分钟,有可能五分钟一个,也有可能一个小时产生一个。所以需要动态的调节产生区块链的难度系数。中本聪规定,难度系数每两周调整一次。

    八、区块链的分叉

    同步问题,即同一个时刻,有两个区块加入,都连着前面一个区块,那么这样就形成了分叉,这时该如何选择呢?

    六次确认:看哪个分叉在分叉点后面,先达到6个新区块。

  • 相关阅读:
    Oracle Sql优化之日期的处理
    python excel转xml
    3、vue项目里引入jquery和bootstrap
    1、vue.js开发环境搭建
    2、vue-router2使用
    go 初步
    一个全局变量引起的DLL崩溃
    在linux用gdb查看stl中的数据结构
    gdb看core常用命令
    redis常用命令
  • 原文地址:https://www.cnblogs.com/tolazychen/p/8334591.html
Copyright © 2011-2022 走看看