区块链技术初识

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,  账户安全维系在一个私钥上 丢就真的丢了

 

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

 

posted @ 2018-08-27 11:27  北冥大帝  阅读(373)  评论(0编辑  收藏  举报