区块链概述

Posted 小饼干Li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链概述相关的知识,希望对你有一定的参考价值。

总述:

本系列从理论到实践讲述区块链应用开发,新手驾驶,多多指教!

第一章 区块链概述

  1. 理解:区块链像一个社区,只不过可大可小。(来源于方天叶):
    • 隐私保护:群里人才能看到群消息;
    • 共同维护:每个人同时参与维护这个群;
    • 分布式存储:每个成员手机上都有一份聊天记录;
    • 密码学:群里的一种方言,其他人看不懂;
    • 局部去中心:群主有权踢人▲;
    • 共识算法:群成员签到后自动回复问候语机制▲;
    • 点对点通信:虽然在一个群,但也可以私聊;
  2. 区块链:去中心化的分布式账本技术,其交易不需要额外第三方机构来证明记录的正确性。可将“交易”广义化,因此在健康,保险,供应链,投票等领域应用。
  3. 比特币是区块链诞生的标志,容易误把比特币的一些属性加载区块链上。
  4. 智能合约:一组计算机协议,不局限于纸质合约的对应。交易与代码,代码赋予其逻辑性,满足条件时转账加密货币,智能化。
  5. 分布式系统:服务世界是需求,单一高配置计算机不能满足,不同地域需不同网络。
  6. CPA理论(衡量分布式存储的三个指标):
    • 一致性:不同机器同一时间读取到的信息要一致;
    • 可用性:机器随时可用;
    • 分区容忍性:分布式系统中,若某些计算机消息丢失或延迟,整个系统要能正常运行。
      -注:CPA理论不是只有“满足”和“不满足”两种状态,而是看满足的程度。
      -区块链:以满足分区容忍性为前提,拥有极高的可用性,牺牲一定的一致性。
  7. 区块链数据库:存储于点对点的分布式网络之中,不属于任何一家机构,参与到网络的所有计算机共同拥有数据。
  8. 转账数据不局限于金钱,理解为价值交换网络。
  9. 代币:通用转账物,存在特殊的无币区块链(如私链),因此代币不是必要属性。
  10. 区块:数据存储单元,存一组交易信息及这些交易信息的哈希数据。
  11. 同一时间有很多区块产生,区块链提供一套算法打分,留下分数最高的链。每一个独立节点产生自己的区块,接收其它节点传来的区块,择优毁劣,再广播给其它节点。(类似贪心算法思想,每一次最优,整体结局最优)
  12. 区块生成时间:区块链系统中生成一个新的区块所需的平均时间。
  13. 硬分叉:类似软件bug升级,若对区块链打分算法升级,运行新旧打分算法的节点会硬分叉,且不能再融合。例:比特币和比特币类似币分叉产生了以太坊和经典以太坊。(DAO黑客事件,有的节点不接受回滚)。对此的看法:除硬件原因,不同人对区块链的定义与衡量不同,打分算法也不同,但最终最终好的会留下来。
  14. 去中心化:所有节点平等,避免恶意攻击。但运行需要计算资源,普通节点无法负担,因此产生了大型矿池,被大型资源节点接管。
  15. 链的分类:
    • 公链:任何人可加入,如比特币,以太坊,经济刺激机制;
    • 私链:属于一个组织,可被关闭。一般用于企业,无激励,无币,可回滚;
    • 联盟链:多个组织所有,如某个商业。折中了公链和私链的特点。(从某方面讲,折中公开与私有,那么与传统已有技术相比,没有优势)
  16. 加密货币(不仅是网络上的金钱系统):
    • 系统运行不需要任何中心化机构,分布式共识负责维护系统转台;
    • 从系统中能查询到任何一枚加密货币以及对应拥有者;
    • 新的加密货币的生成由系统决定,且生成后由系统定义初始状态及拥有权;
    • 通过密码学算法可验证加密货币的拥有权;
    • 加密货币的拥有权发生转移时才能产生交易;
    • 若同时发生两个不同的拥有权转移指令,系统最多接受一个。
  17. 区块链应用:
    • 金融:银行记账,无网仍可进行操作,有网时同步数据(体现高分区容忍性)。跨境支付(支付环境复杂);
    • 游戏:以太猫游戏,用户完全拥有,即使游戏公司倒闭,游戏中的收益也属于用户,且不能改变,提高游戏可移植性;
    • 数字资产:由游戏资产扩展而来;
    • 供应链管理:涉及多方参与的业务,大家共同拥有一个数据库,该数据库不属于谁。如产品移交,数据记录,上下游金融往来。
    • 其它:自动签署合约,如租房这种制约式合约,自动签约支付;小额个人保险;小额交易的共享经济,公司维护成本大于利润的业务都可尝试区块链智能合约代替。
  18. 思考题:推崇区块链==信任崩溃?

不止有知识@每日小句:
愿你我可以带着最微薄的行李和最丰盛的自己在世间流浪。(大冰)

区块链概述---如何简单的理解区块链技术

区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。 如果说蒸汽机释放了人们的生产力,电力解决了人们基本的生活需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式

以前是靠信誉、靠百年老店、权威机构等,区块链利用技术建立了新的信任方式,这是可以被量化的,从技术的角度实现的,所以说区块链成为了下一个信任的基石区块链最核心的革命特性是改变千百年来落后的信用机制。

       最近经常看到或听到区块链和比特币的关键词,但是对于像我这中菜鸟级别的如何简单通俗的理解区块链呢?

1.区块链的举例

       区块链的本质是一个分布式的公共账本任何人都可对这个账本进行核查,但不存在单一的用户可以对它控制。在区块链系统中的参与者共同维持账本的更新:它只能按照严格的规则和共识进行修改

举例:如果A借了B 100块钱,这个时候,A在人群中大喊“我是A,我借给了B 100块钱!”,B也在人群中大喊“我是B,A借给了我100块!”此时路人甲乙丙丁都听到了这些消息,因此所有人都在心中默默记下了“A借给了B100块钱”。这个系统中不需要银行,也不需要借贷协议和收据,严格来说,甚至不需要人与人长久的信任关系(比如B突然又改口说“我不欠A钱!”,这个时候人民群众就会站出来说“不对,我的小本本上记录了你某天借了A100块钱!”)。

       这是一个去中心化的系统,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。

技术分享图片

       可能你已经发现了,在上述的模型中,所谓的“100块钱”已经不重要了。换句话说,任何东西都可以在这个模型中交换,甚至你可以凭空杜撰一个东西,只要大家承认,你就可以让你杜撰的东西流通。比如:我在人群中高喊一声“我创造了10个查克拉!”,我甚至不需要知道查克拉是什么,也不需要关心世界上是不是真的有查克拉,只要大家都听到,然后在自己的小本本上记下“LaiW3n有10个查克拉”,于是我就真的有100个查克拉了。从此以后,我便可以声称我给了某人1个查克拉,只要路人甲乙丙丁都收到并且承认了这一信息,那我就算完成了这次交易,哪怕世界上没有查克拉。又比如:“比特币”,区块链是比特币的底层技术,真正的区块链和比特币比上述的模型复杂太多,细节也丰富太多。

技术分享图片

       但是存在以下问题:

       假设过了很长一段时间,凭空创造的查克拉已经在这个系统中流通了起来,大家都开始认可了查克拉。但是这个系统中一共就只有10个查克拉,于是有人动了坏心思,他在人群中高呼“我有10个查克拉!”怎么办?大家是直接在本本上记下他有10个查克拉么,这样不是人人都可以伪造查克拉了么?

       为了防止这种现象发生,决定在我创造查克拉的时候给我的查克拉打上标记(更准确地说,我是给我喊的那句“我创造了10个查克拉”打上标记,比如标记为001),这样以后在每一笔交易的时候,我在高喊“我给了某某1个查克拉!”的时候,会附加上额外的一句话:“这1个查克拉的来源是记为001的那条记录,我的这句话标记为002!”。我们再抽象一点,某人喊话的内容的格式就变成了:“这句话编号xxx,上一句话的编号是yyy,我给了某某1个查克拉!”,这样就解决了伪造的问题。其实上述模型就变成一个简化的中本聪第一版比特币区块链协议

      看到这里基本已经能够生动形象又不涉及任何细节地解释区块链了。但是任然存在以下疑问:

技术分享图片

   “凭啥?”

     “凭啥你喊一句话我就帮你记?我的小本本不要钱么?”。为了激励大家帮我传话和记账,我决定给第一个听到我喊话并且记录在小本本上的人一些奖励:第一个听到我喊话并记录下来的人,你就凭空得到了1个查克拉,这个查克拉是整个系统对你幸苦记账的报酬,而你记录了这句话之后,要马上告诉其它人你已经记录好了,让别人放弃继续记录这句话,并给你自己的记录编号让别人有据可查,然后你再把我的话加上你的记录编号一起喊出来,供下一个人记账。

       当这个规则定下以后,这个系统中一定会出现一批人,他们开始竖着耳朵监听周围发出

的声音,以抢占第一个记账的权利。比如概念 “比特币挖矿”。毕竟1比特币=2400美元。

       比特币挖矿机,就是用于赚取比特币的电脑,这类电脑一般有专业的挖矿芯片,

多采用烧显卡的方式工作,耗电量较大。用户用个人计算机下载软件然后运行特定算法,

与远方服务器通讯后可得到相应比特币,是获取比特币的方式之一。

技术分享图片技术分享图片

 

“听谁的?”

       在这个系统中,如果我和另一个人C几乎同时地喊出一句:“为了艾泽拉斯!”。由于听众所处的位置不同,一定会有人先听到我说的那句话,而另外一些人则先听到C的那句话,如果我们规定只能有一个人说出这句话,那到底这句话是谁说的?

       如果不加任何条件,那么上述的情况一定会这样发展:一部分人认为这句话是我说的,在听到这句话之后开始记账,之后他们所做的所有事情都是基于这个事实,并且随着这个信息一次次的传下去,这条信息链会越来越深;而另外一群认为是C先说这句话的人,也会按照这样的趋势发展。这样,原本是一条唯一的信息链在我们喊出“为了艾泽拉斯”这句话之后,分叉了

技术分享图片

       这会导致怎样的情况呢?按照我们的设想,应该每个人的小本本上记录的东西都是一样的,都是一条可以把所有信息串联起来的链条。但是在这一刻,他们小本本上记录的东西不一样了?以后还怎么确定交易和信息的真实性?

       为了解决这个问题,又追加了新的规则,增加记录编码的难度,即比特币挖矿难度,保证记录的唯一性(保证节点之间的同步)。”不知道用唯一性是否准确?


2.区块链的应用

     区块链几乎可以应用到任何领域,在金融、物流、公共服务等领域都有大量案例。中国央行早在2016年就表态支持区块链。2016年11月,中国政府正式把区块链列入十三五规划纲要中。

      比如贵州超过3000亿的脱贫脱贫攻坚基金,要通过300多个单位的运作,惠及493万贫困人口,如何确保扶贫资金募款,投资,使用管理等环节正确运作呢?区块链具有多方共识,交易溯源,不可篡改等技术特点,使它在确保信息可信、安全、可追溯等方面具有传统技术不可比拟的优势。以城市为单位,第一个发布区块链白皮书的就是贵阳市。

技术分享图片

技术分享图片

      如果仔细观察,我们会发现马云最近两年在公共场所提及最多的概念便是信用体系。互联网在未来不会是创业主体,而是像空气一样成为我们生活的一部分。

蚂蚁金融便是马云最为看重的业务体系,在马云的构想下,未来人们的生活将无现金,并可以用信用兑换商品。这一实现,十分需要一种革命性的信用机制。这一机制在2016年的支付宝App里已经悄然 上线---蚂蚁区块链

技术分享图片



3.从技术角度简单理解区块链

(1)区块链的本质

      区块链是一种特殊的分布式数据库

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

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

技术分享图片

(2)区块链的最大特点

区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。

没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢,这就是区块链奇妙的地方。

(3)区块

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

每个区块包含两个部分:

  • 区块头(Head):记录当前区块的元信息

  • 区块体(Body):实际数据

技术分享图片

   区块头包含了当前区块的多项元信息

  • 生成时间

  • 实际数据(即区块体)的 Hash

  • 上一个区块的 Hash

  • ......

      Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 Hash 长度是256位,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

技术分享图片

(4)Hash 的不可修改性

区块与 Hash 是一一对应的,每个区块的 Hash 都是针对”区块头”(Head)计算的。

Hash = SHA256(区块头)

区块头包含很多内容(包括上一个区块的Hash、当前区块体的Hash等,见上图)。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。

如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

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

技术分享图片

(5)采矿

由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。

所以,区块链的发明者故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。

这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效 Hash,从而把新区块添加到区块链。由于计算量太大,所以快不起来。

这个过程就叫做采矿(mining),因为计算有效 Hash 的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算 Hash 的机器就叫做矿机,操作矿机的人就叫做矿工。


(6)难度系数

你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个 Hash 吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?(比特币挖矿机,就是用于赚取比特币的电脑,一般有专业的挖矿芯片,多采用烧显卡的方式工作)

原来不是任意一个 Hash 都可以,只有满足条件的 Hash 才会被区块链接受。这个条件特别苛刻,使得绝大部分 Hash 都不满足要求,必须重算。

区块头包含一个难度系数(difficulty)这个值决定了计算 Hash 的难度。举例来说,第100000个区块的难度系数是 14484.16236122。

区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。

Hash 的有效性跟目标值密切相关,只有小于目标值的 Hash 才是有效的,否则 Hash 无效,必须重算。由于目标值非常小,Hash 小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因

区块头里面还有一个 Nonce 值,记录了 Hash 重算的次数。第     100000 个区块的 Nonce 值是   274148111,即计算了 2.74 亿次,才得到了一个有效的 Hash,该区块才能加入区块链。

技术分享图片技术分享图片

(7)难度系数的动态调节

就算采矿很难,但也没法保证,正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

为了将产出速率恒定在十分钟,区块链发明者还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此难度系数就要调低10%。

难度系数越调越高(目标值越来越小),导致了采矿越来越难。


(8)区块链的分叉

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

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

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

技术分享图片

技术分享图片

为了保证数据的可靠性,区块链也有自己的代价。一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。

 

内容来自公众号Linux爱好者和下面链接

区块链是什么,如何简单易懂地介绍区块链?

区块链,将如何重新定义世界

 

 

 

以上是关于区块链概述的主要内容,如果未能解决你的问题,请参考以下文章

区块链概述

区块链概述

区块链书籍推荐:A032[图灵程序设计丛书]《去中心化应用:区块链技术概述》

区块链投票系统概述

substrate 区块链框架 概述

区块链技术在物联网中的应用概述