区块链核心概念注解

简介:

一、综述

从2017年下半年开始,由于比特币几次涨跌大起大落,外加国家国家相关部门对比特币的几次发声,导致区块链这个词非常频繁地出现在各大媒体上。2017年已经过去,转眼之间我们来到2018年,2018年是区块链落地的一年,很多公司相继推出了自己的区块链产品。如今,区块链正处于如日中天的阶段,紧跟时代步伐,我将按照以下思维导图对区块链进行介绍。 
MnJ1c9f3iNJzdXBGl2otMOHpflrIs9NbiZJxeQUi

A5kWUkcaqheTAAAAAElFTkSuQmCC

二、区块链的定义

  • 狭义:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
  • 广义:区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
  • 通俗理解:区块链技术是一种整个系统内所有个体都参与记账的方式。系统内所有个体(成员)都有一个在系统内部公开的数据库,我们可以把这个数据库看成是整个区块链的账本。在日常生活中,大部分系统都是中心化的,例如:我们去银行取钱,记账的是银行。我们使用的微信,负责记账的是腾讯。我们使用的支付宝,是阿里在记账。在区块链系统中,系统中的每个个体(成员)都可以有机会参与记账。在一定时间段内如果有数据变化,系统中每个个体(成员)都可以来进行记账,系统会评判这段时间内记账最快最好的个体(成员),让他把记录的内容写到账本,并将这段时间内账本内容对整个系统进行公开,任何个体(成员)都可以随时查看。这样系统中的每个个体(成员)都了一本完整的账本。就这样,区块链技术解决了中介信用问题,这也是区块链的一个重大突破。在区块链之前,比特币可能已经被大家所熟知,比特币是区块链技术的一种实践,区块链不是比特币。

三、区块链的特点

  • 去中心化:由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

  • 开放性:系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

  • 自治性:区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

  • 不可篡改和加密安全性:一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点(少数服从多数),否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

  • 匿名性:由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。

四、区块链的发展历程

  • 区块链1.0——数字货币
  • 区块链2.0——智能合约与金融领域(数字资产)

智能合约是以区块链技术为基础,能够自我执行的条约;一旦满足条件,就可以自动触发行为或付款。不久的将来,智能合约将能利用资产GPS数据等实时信息触发事件,比如转移所有权和资金。

  • 区块链3.0——泛行业去中心化应用(区块链+)

五、区块链的类型

公有区块链(PublicBlockChains)

公有区块链是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是目前应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。

联盟(行业)区块链(ConsortiumBlockChains)

行业区块链:由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。

私有区块链(privateBlockChains)

私有区块链:仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。目前(Dec2015)保守的巨头(传统金融)都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中。

侧链(sidechains)

侧链(sidechains)实质上不是特指某个区块链,而是指遵守侧链协议的所有区块链,该名词是相对与比特币主链来说的。侧链协议是指:可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。显然,只需符合侧链协议,所有现存的区块链,如以太坊、莱特币、暗网币等竞争区块链都可以成为侧链。

六、区块链涉及到的技术

  • 密码学

    加密:加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程。按照加密方和解密方秘钥相同与否可以将加密算法大致分为三种子类型:对称加密、非对称加密、对称加密与非对称加密混合。

    哈希(hash):哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y = hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。

  • 分布式账本:分布式账本是一个记录交易信息的数据库,在多台电脑之间共享和同步,无需集中管控。各方都拥有一份相同的记录,如有任何新增内容,所有记录都会即时自动更新。

  • P2P动态组网:P2P技术是区块链技术的基石。提起P2P,很多人会想起网络借贷、信息中介等概念,会想起陆金所、宜人贷、人人贷等平台。实际上,作为区块链基石的此P2P并非彼P2P,而是指对等网络。

  • 共识机制

    PoW( Proof of Work)工作量证明:依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。

    PoS(Proof of Stake)权益证明:主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和PoW相同。它是Pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。

    DPoS(Delegated Proof of Stake)股权授权证明:有别于比特币特定的共识机制,DPoS有一个内置的股权人实时投票系统,就像随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。与比特币相比,比特股系统的投票权牢牢掌握在股东手里,而不是雇员。

    PBFT(Practical Byzantine Fault Tolerance)实际拜占庭容错:在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。

    传统分布式一致性算法应用:传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题。传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。

  • 智能合约:智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行。如果区块链是一个数据库,智能合约就是能够使区块链技术应用到现实当中的应用层。传统意义上的合同一般与执行合同内容的计算机代码没有直接联系。纸质合同在大多数情况下是被存档的,而软件会执行用计算机代码形式编写的合同条款。智能合约的潜在好处包括降低签订合约、执行和监管方面的成本;因此,对很多低价值交易相关的合约来说,这是极大降低人力成本。通俗地讲,就是合约制定者将合约制定以后,将合约内容转化为编程语言存在区块链平台上(需要用区块链返给制定者的私钥进行签名),合约通过P2P的方式在区块链全网中扩散,每个节点都会收到一份(相当于无数个人保存并监督这份合约的内容),当时间合适且满足合约内容时,就会自动执行这一份合约。

  • 激励机制:以比特币为例,比特币中的挖矿就是在记录交易信息,而每次挖成功的块中的第一条交易被称为coinbase交易,这个交易中是比特币网络给矿工的奖励,这个奖励每四年减半,我们已经到了第三个四年了,所以,每个区块的奖励是12.5个比特币。我们知道,比特币的发行上限是2100万枚。某一天达到上限时,系统则不能再利用产生的比特币来奖励给矿工了,这时候系统则会使用交易费用来奖励给矿工。

  • 跨链技术:跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁。

七、区块链涉及到产业

  • 应用服务层

    可编程货币:在可编程货币中,数字货币是我们比较熟知的概念了。可编程货币既数字货币,其不同于电子货币,是一种价值的数据表现形式,通过数据交易并发挥交易媒介、记账单位及价值存储的功能,但它并不是任何国家和地区的法定货币,也没有政府当局为它提供担保,只能通过使用者间的协议来发挥上述功能。而电子货币是将法定货币数字化后以支撑法定货币的电子化交易,因此二者并不等同。目前数字货币的主流是以比特币为代表的去中心化的数字货币。

    可编程金融:可编程金融应用是指区块链在泛金融领域的众多应用。基于区块链可编程特点,人们尝试将智能合约添加到区块链系统中,形成可编程金融。智能合约的核心是利用程序算法替代人执行合同。这些合约需要自动化的资产、过程、系统的组合与相互协调。合约包含三个基本要素:要约、承诺、价值交换,并有效定义了新的应用形式,使得区块链从最初的货币体系拓展到金融的其他应用领域,包括在股权众筹、证券交易等领域开始逐渐有应用落地。

    可编程社会:可编程社会应用是指随着区块链技术的发展,其应用能够扩展到任何有需求的领域,包括审计公证、医疗、投票、物流等领域,进而到整个社会。区块链是价值互联网的内核,能够对于每一个互联网中代表价值的信息和字节进行产权确认、计量和存储。价值互联网的核心是由区块链构造一个全球性的分布式记账系统,它不仅仅能够记录金融业的交易,而是几乎可以记录任何有价值的能以代码形式进行表达的事物。

  • 中间协议层:共识机制、激励层、合约层。

  • 基础网络服务:数据层、网络层。

八、总结

区块链是一个比较复杂的体系,本文仅对比较核心的一些概念进行了简单介绍,文中所提到的每一个概念如果进行深究都可以形成一篇比较有深度的文章。文中大量引用了互联网上比较通俗的解释外加自己的理解,配图全部是自己手工绘制而成,如果需要原稿可以与我取得联系。



原文发布时间为:2018年03月08日
本文作者:滇池孤鸿
本文来源:CSDN,如需转载请联系原作者。

目录
相关文章
|
6月前
|
存储 Java Spring
深入解析Spring框架的核心:BeanFactory体系结构探究
深入解析Spring框架的核心:BeanFactory体系结构探究
81 0
|
3天前
|
XML 设计模式 Java
依赖注入艺术:探索Spring如何实现松耦合的神奇
依赖注入艺术:探索Spring如何实现松耦合的神奇
19 0
依赖注入艺术:探索Spring如何实现松耦合的神奇
|
8月前
|
缓存 Java Spring
30个类手写Spring核心原理之Ioc顶层架构设计(2)
Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。
42 0
|
10月前
|
开发框架 Java Spring
spring和依赖倒置思想的落地实现
在《手撕JAVA(四)低依赖架构思想》一文中阐述了如何通过依赖倒置来解耦,并且得到了结论这种架构思想的落地实现就是Spring。很多有一定J2EE开发经验的读者读到此处会反驳,依赖倒置其实就是遵循了面向接口编程的思想,Spring的核心组件IOC并不是面向接口编程啊,它管理的还是一个一个的类。 在解答这个疑惑之前,顺带提个题外话——关于面向接口编程。
122 0
|
10月前
|
XML Java 数据格式
【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以
【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以
|
前端开发 Java 容器
【Spring专场】「MVC容器」不看源码就带你认识核心流程以及运作原理
【Spring专场】「MVC容器」不看源码就带你认识核心流程以及运作原理
97 0
【Spring专场】「MVC容器」不看源码就带你认识核心流程以及运作原理
|
XML 缓存 前端开发
【Spring 专场】「IOC 容器」不看源码就带你认识核心流程以及运作原理
【Spring 专场】「IOC 容器」不看源码就带你认识核心流程以及运作原理
121 0
【Spring 专场】「IOC 容器」不看源码就带你认识核心流程以及运作原理
Spring框架核心及设计思想
Spring框架核心及设计思想
100 0
Spring框架核心及设计思想
|
机器学习/深度学习 XML JSON
1. 揭秘Spring类型转换 - 框架设计的基石(上)
1. 揭秘Spring类型转换 - 框架设计的基石(上)
1. 揭秘Spring类型转换 - 框架设计的基石(上)
|
Java API 开发者
1. 揭秘Spring类型转换 - 框架设计的基石(下)
1. 揭秘Spring类型转换 - 框架设计的基石(下)