zoukankan      html  css  js  c++  java
  • 区块链技术初识

    1,  比特币的诞生

    比特币的诞生,是依赖于很多前人的理论基础,例如加密算法,数字货币的理论等等。但是真正提出比特币原型理论是 2008年中本聪提出的《比特币:一个点对点的电子现金系统》,而比特币技术就是底层的区块链技术。

    比特币应该发行量固定 所以不会通货膨胀

    没有中心点 没有假钞

    流通性好

    比特币记录片:https://www.8btc.com/article/144880

    2,  什么是区块链

    区块链是什么?实际上就是一个分布式的账本。

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

    其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。

    或者你可以简单的理解每一个节点就是一本账户,账本的每一页就是每一个区块;而且节点跟节点存着的数据是一样,如果要篡改数据,必须50%以上的节点被篡改,才伪造假数据,但这是不可能的,因为需要的计算量太庞大,而且要在短时间内修改成功。

    3,  区块链的特点

    区块链没有管理员,它是去中心化的。它的运作完全依赖预先设置的规则去运行,无法利用权限去干预。所以,区块链技术在上线之前,一定要充分的考量和测试,因为一旦上线了,它的运行是超出人为管理的,对于之后的迭代也只能扩展,修改难度过大。

    4, 区块链的原理

       区块链是有一个个区块组成,区块很像数据库记录,每次记账,就是创建一个新的区块。

      

    每一个区块包含两个部分:

     区块头:记录当前区块特征值

      区块体:实体数据

    区块头包含数据:

    1,  生成的时间戳 timestamp

    2,  上一个区块的hash (previous_hash)

    3,  本区块的hash (本区块的hash值是有上一个区块的hash值(previous_hash)+本区块的内容进行hash后得到的)

    4,  难度系数(difficulty)

    5,  随机数(NonceStr)

    6,  …. ….

    通过区块头,我们就可以得知区块是依赖于上一个区块创建的,如果你修改一个区块的数据,那么hash值就会变了,后面的区块就会全部对上不hash值,变得验证失效。

    每一个区块的写入都有难度系数要求,就是要求区块的hash必须有几个0开头才能写入区块。写入区块的过程也叫做挖矿。

    至于hash值是否达到难度系数要求,那就不断修改noncestr随机数,生成hash并验证是否达到难度系数要求。

    测试地址:https://anders.com/blockchain/coinbase.html

              https://blockchaindemo.io/

    5,区块链的运行

       区块链刚上线的时候会有默认几个创世区块,区块之间发生了交易,会生成交易的确认的广播,区块链注册者可以根据确认广播进行验证,验证是正确的交易就进行写区块,就是添加记账,一个记账就是一个区块。但是记账有难度系数要求,如果你写入区块成功了,就可以获得相应的比特币作为报酬。第一批挖比特币的奖励是50比特币,发行总量2100w,以后挖矿的难度越来越大,得到的报酬也越来越少。

    交易成功之后,涉及两个过程 签名广播 还有 验证过程

    签名广播:

    ···

           Hash({

            ‘付款地址’,

             ‘收款地址’,

            ‘交易金额’

            })=》交易摘要

    ···

    接着进行签名:

    Sign(’交易摘要’,’付款者的私钥’)=>签名信息

    然后把 内容+签名信息一起广播出去

    ====================================================

    验证的过程:

        Verity(‘签名信息’,’付款地址’)=>交易摘要

          根据交易内容进行hash (

          ‘付款地址’,

          ‘收款地址’,

          ‘交易金额’

        )=》交易摘要2

      如果 交易摘要==交易摘要2 则验证成功!接下来,挖矿者就可以进行挖矿操作了。

    ==========================================================================

    区块链的分叉

    即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?

     

    现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认。

     

    由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。

    区块链解决了什么问题?

    1,  去中心化 解决专权管理的问题 解决信任的问题

    2,  一切规则都是透明 按照规则允做的

    3,  数据是完全 无法篡改

    带来的问题:

    1,  资源的浪费 虚耗

    2,  没有实体的落地 变成投机者的手段

    3,  账户安全维系在一个私钥上 丢就真的丢了

    区块链带来的革命 可能在互联网的思想上的作用在实际上更深远的影响到我们 让一些权力集中的东西 逐渐变得开明 一起按规则运作 没有黑手操作;但可能最担心的 就是科技带来的是否会更人性化,而不是贫富两极分化。

  • 相关阅读:
    .NETCore_初探
    .NETCore_生成实体
    架构碎屑
    Helper
    26.【转载】挖洞技巧:绕过短信&邮箱轰炸限制以及后续
    25.【转载】挖洞技巧:支付漏洞之总结
    24.【转载】挖洞技巧:信息泄露之总结
    5.Windows应急响应:挖矿病毒
    4.Windows应急响应:勒索病毒
    3.Windows应急响应:蠕虫病毒
  • 原文地址:https://www.cnblogs.com/minsons/p/9541186.html
Copyright © 2011-2022 走看看