如何认识区块链-区块链学习笔记

如何认识区块链-区块链学习笔记

最近区块链可以算是全球热点,互联网圈、金融圈、电商圈包括政治圈都在热议区块链。在加密货币市场比特币曾一度热炒到2万美元,区块链也是17年达沃斯论坛的主要话题,甚至在区块链圈里把互联网划分为古典互联网和区块链互联网。那究竟什么是区块链?它和加密货币是什么关系?他将如何改变世界?为什么有些人坚定的认为它有如此巨大的价值?可能大部分人还是很困惑。在看一些相关的介绍文章时由于不同的文章的对受众人群的知识结构有不同的要求,每篇文章有自己不同的侧重重点和知识起点,对于一个初识区块链的朋友,在看一些层次高低区块链类文章后,大多会有越看越糊涂的感觉。所以就想根据自己的学习经历写一篇关于区块链入门类的文章,简单概要的向大家介绍一下区块链的基本知识。本文适合一些初识区块链的朋友,希望本文的内容对大家认识区块链有所有帮助。

什么是区块链?

这是在人们接触到区块链时首先提出的问题,不同的文章也给出不同的解释,有说他是一种分布式账本技术,有说他是一种全新的分布式数据库,也有说他是一种全新的分布式数据存储技术,为什么会有这么多不同的定义,他们说的是对的还是错的,对于一个初识者面就很难理清。我们先看看维基百科和百度百科中对区块链的定义。

维基百科区块链定义:区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即“创世区块”。

百度百科区块链定义: 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。 广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。

以上的两种解释应该是普遍被大家所认可的,从上面的解释看,在区款连技术主要包含分布式网络、共识机制、加密算法、智能合约、权限许可、价值、资产等几大要素,使区块链技术能够实现更为透明、安全和高效的交易(包括简单交易和智能合约交易),从而实现整个社会沟通、协同和交易的效率提升。 按照功能架构划分整个区块链技术又分为:应用层、合约层、激励层、共识层、网络层、数据层(如:图1),区块链技术的各要素在各层发挥所用。虽然右图结构清晰的理出了区块链的整体架构,但区块链的主要的技术要素是如何在一起协作的?究竟如何理解区块链?本文后边会根据右图展开,通过一个个问题给大家进行梳理,最终叫大家对于区块链有个初步的认识。

《如何认识区块链-区块链学习笔记》
图1

什么是区块链网络?网络层

在向大家解释这个问题之前,先说一下大家用p2p技术下片的事,我相信大部分人都在网上下种子,然后通过种子下片等其他数据资源。基本都用电驴、迅雷这样的下载工具,下载网络上的资源,他的基础原理是通俗的理解为就是你在打开客户端的的同时,也就连接到基于这个种子的p2p网络,你的电脑即是数据的提供者也是获取者,形成点对点的网状的数据传输,没有中心节点,这是这种网络结构在打击盗版上的无力所在,区块链网络结构就是在这种网络结构的基础上发展而来,有的是基于同一种网络协议。这种非中心化的网络结构也恰恰是成为了区块链网络的一个优势所在

区块链网络的标准定义:目前最被认同的解释是:区块链网络采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平(flat)”的拓扑结构相互连通。在P2P网络中不存在任何服务端(server)、中央化的服务、以及层级结构。P2P网络的节点之间交互运作、协同处理:每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。P2P网络也因此具有可靠性、去中心化,以及开放性。

有了网络,就必然存在网络中的节点,在区块链网络中也存这不同功能的网络节点,这些节点的不同是基于叫整个区块链网络更高效的运作而设计的,以比特网为例,他的网络节点就分为full节点、独立记账节点(矿工节点)、轻量钱包节点、完整区块链数据节点,路由节点以及后续发展出矿池节点和与之相关系的分布式挖矿节点。在这里重点对前三种做一个简要的说明

Full节点:即包含所有功能的全节点,它有记账功能就是向区块链写入数据的功能、数据路由、数据校验、交易提交等功能。通俗的可以理解为既可发起交易、又可将交易数据写入区块、还能将新的区块数据广播到网络的其他节点并接收并验证其他节点所更新的数据。

独立记账节点:该节点拥有full节点的一部分功能,即接受交易信息,参与发现区块的竞争,并交易数据写入区块、将新的区块数据广播到网络的其他节点并接受其他节点所更新的数据。

轻钱包节点:它的作用就更好理解了,他只是发起交易或查询请求,向网络中广播,并重网络中获取其他节点返回的交易成功失败的信息和相关查询信息。

《如何认识区块链-区块链学习笔记》
《如何认识区块链-区块链学习笔记》 图2

这些节点如何协同的呢?下面用一笔比特币交易在网络中完成的流程给大家做个简要的介绍。

《如何认识区块链-区块链学习笔记》
《如何认识区块链-区块链学习笔记》 图3

通过上边的流程大家对区块链网络和网络中的节点和大体的交易流程又一定的了解,钱包节点在向区块链发起交易信息时会通过斯钥签名公钥加密等一系列加密验证机制这里先不展开,感兴趣的朋友可以单独的深入的看。在交易信息验证通过提交后引出了另一个问题。

交易信息是如何在区块链中存储的?

上文向大家简单介绍了区块链网络,和一笔交易怎样在网络中完成并存储到了区块链中,那这些数据是以什么样的形势存储的呢?上文所说的区块是什么?又是怎么链起来的? 这就说到了区块链的数据层,在此以比特网为例给大家解释一下,数据在区块中存储的形势,区块和区块是什么链起来的,是如何加密又怎么进行验证?是怎么做到不可篡改的?

比特网的区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。我们可以简单的理解为他是一个固定大小的一组交易数据的集合,他的整体大小和结构一定。比特网他的一个区块的大小为2m左右,它的结构:由区块标识、一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易组成。

《如何认识区块链-区块链学习笔记》
《如何认识区块链-区块链学习笔记》 图4

区块的主标识是区块头通过二次SHA256算法加密的的到数字指纹(就是双哈希函数算出的数值)和区块的深度。这个双哈希函数计算的值基于加密学原理可以说是全局唯一的。在对应区块链的深度更保证了主体标识的唯一性。

区块头一般包含三组数据1、引用父区块的哈希值这组数据将区块与前一区块联系起来形成区块链。2、该区块的难度、时间戳、工作量证明的计数器(Nonce)。3、merkle树根(用来有效总结区块中所有交易的数据结构,一般用作验证交易使用),在区块头明确后就可以确定区块的主标识了。

区块主体:就是存储的一长串的交易信息,eg:A转账给B,100个比特币,付0.1个比特币的手续费;B收到A转过的100比特币,当然实际存储形势要比这个严禁完备

图5为比特网的区块链实例

《如何认识区块链-区块链学习笔记》
图5

在区块链规则里一个区块只能有一个父区块,一个父区块可能有多个子区块,由于哈希算法的不可逆属性(或者暂时不可逆)比特网对区块头进行了双哈希加密,一个区块的哈希值受他的父区块的影响,这样一环扣一环深度越深的区块就稳定,如果对父区块或者爷爷太爷爷这样的区块进行伪造,就必修改这个区块之后的所有区块,由于比特网采用工作量证明机制(后面介绍)进而所需要的算量就是巨大的(可以说近乎不可能)。 就象成地质构造中的地质层或者是冰川岩芯样品。表层可能会随着季节而变化,甚至在沉积之前就被风吹走了。但是越往深处,地质层就变得越稳定。到了几百英尺深的地方,你看到的将是保存了数百万年但依然保持历史原状的岩层。在区块链里,最近的几个区块可能会由于区块链分叉所引发的重新计算而被修改。最新的六个区块就像几英寸深的表土层。但是,超过这六块后,区块在区块链中的位置越深,被改变的可能性就很小了。在100个区块以后,区块链已经足够稳定。几千个区块(一个月)后的区块链将变成确定的历史,理论上永远不会改变。(引用自精通比特币第7章)在一般情况下在新区块后续追加4个区块后就很难再被改变。所以在人们利用比特币换取实物时,如果金额特别巨大,通常在区块链记录收到对方一定量的比特币后等一段时间,等在记录该笔交易信息的区块后续又新生成罗干区块后,确定交易信息稳定没有被攒改的可能。这样才将比特币所交换的实物付给对方,来避免区块分叉带来的双花风险。当然如果有人完全控制了区块的生成就会一些用区块链分叉的双花行为就能延伸后续区块越长影响也越大,但是成本是巨大的,现实中往往得不偿失。

谁有权向区块链写入数据?

在上文向大家介绍了区块链的存储形势,和如何实现不可篡改的机制,那么下一个问题来了,在一个区块链网络中各个分布的节点最终谁有权限来创建一个新区块及它写的内容又如何被其他的节点接受的?这里就引出了区块链技术中另一个重要的要素共识机制,关于共识机制我个人的理解即为谁有权限写,写的内容如何校验,如何保证写的内容是准确的。这就需要通过共识机制和数据校验逻辑来解决改问题。

目前主要的共识机制有三种:POW:Proof of Work-工作证明、POS:Proof of
Stake-股权证明、POW+POS;随着技术的不断发展还一些新的共识机制的出现如:DPOS、 DBFT等等。 不同的共识机制分别对应的不同形态的区块链形态。在这里我们重点说一下POW(鼎鼎大名的比特网就是采用这种机制)和POS

POW:Proof of Work-工作证明:比特网采用POW,目前被大家所热说的挖矿就是在这个机制的产生的现象,记在上文提过的,比特网中的记账节点(挖矿节点),根据自己交易池中的交易记录在加上父区块的哈希值等信息经过不断的调整难度值参数进行双哈希计算,最终形成一个符合要求的哈希结果,一般这个结果要小于某个值即达到要求。最终结果(BlockHash)由N个前导零构成,零的个数取决于网络的难度值(难度值根据全网的算力每隔一段时间进行一次调整,调整基于保持全网每隔一段时间就一个区块诞生的原则,比特网为10分钟)。要得到合理的Block
Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。当记账节点(挖矿)碰撞出符合要求哈希值既拥有了新区块的写入权限,对区块链进行追加,并向全网进行广播,其他节点收到信息并进行验证如验证通过立即停止基于原区块的算力竞赛,转而利用新区块的区块头进行下一个区块的竞争。

POS:称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。

为什么有人热衷于记账(挖矿)?

有了共识机制大家解决了在整个区块链网络中由谁来记账对区块进行追加的问题,那么怎么能够怎么众多的计算资源拉到区块链网络中参与记账呢?这就需要对参与记账和存储区块链数据的节点进行激励。本节的内容和上文是息息相关的,不同的共识机制对应不同的激励机制,以比特网为例子记账节点(挖矿节点)每产生一个新的区块就会给这个区块的产生者一份奖励25个比特币(现在为12.5个比特币,每4年衰减一半),因为比特网规定每笔交易都需要手续费由交易的付款方自行填写,这些交易的手续也归新区块的产生者。因此矿工在记录交易时会对交易池中的交易进行手续费的高低排列,先记录手续费高的交易对于手续费的低的交易还有一个时间优先,就是交易提交的越久它的排序会越靠前,因此保证低手续费的交易也有被记录区块链的可能。在矿工的这两种收益中,前者为新发的币因此叫做发行机制,后者为交易费用因此叫分配机制。其根本的作用是给予区块链上贡献者予以奖励,从而保证区块链生态能够保持生命力。

不同的区块链可以根据需要设施不同的激励机制。在以太坊中引入了燃料机制其中燃料就是以太币奖励给区块的记录者,还有上文pos机制所说的利息,感兴趣的读者可以专门查阅一下以太坊的相关资料。提出这种机制的主要原因是大家认为pow机制太浪费资源,有助于全球变暖(新技术的创新者就是这么大气)。所以诞生了其他的共识机制或者奖励机制。

区块链仅仅是能记录交易信息吗?

这里简单提一下区块链1.0和区块链2.0,区块链1.0是以比特网为代表的,记账类区块链,不能运行复杂的脚本代码,应用场景相对简单(比特网记录的比特的相关交易信息)。而区块链2.0是以以太坊为代表的,在区块中不仅能够记录简单转账交易,而且引入了虚拟机的概念可以执行相关程序脚本(chiancode)具备图灵完备性。进而能够实现智能合约,这也给区块链的应用带来了无线的想象力,区块链改变世界,实现信用社会、合约社会带来了可能。

智能合约是运行在计算机里面的,用于保证让参与方执行承诺的代码。基于区块链的智能合约,是因为区块链的几大特性:去中心化、不可篡改、高可用性。例如我们可以在区块链上建立一个简单的合同,合同约定在未来的某个时段从A的账户转账给B 100个以太币,在复杂一些合约规定在未来的某个时间段A的账户内的代币到达1万转账给B 100个代币,达到2万转账给B 200个代币,小于5000不转给B代币。当然实际应用中智能合约可以根据实际需要设计的简单或复杂,相关方也可能不仅仅是两方也可以是多方。

基于区块链技术能干什么?

通过上文的理解对于区块链应用大家就可以开始自己的想象了,目前的以比特币为代表的加密货币是区块链的一种应用,但随着区块链2.0的不断的普及目前很多区块链产品都在不断的出来,从国内看BATJ都在大力发展的自己的区块链应用eg:阿里、京东都也在创建基于供应链商品流转的区块链应用,目前以接入了近百个生产厂家,达到商品溯源验真的社会价值,设想一下你要买茅台重一出厂的所有记录都记录在一个公共的无法造假的区块链上,货物的真实性就得到里很好的认证;腾讯把区块链技术应用在了供应链金融、物流信息、法务存证、公益寻人、腾讯微黄金等多个领域;造成以太坊分叉的Slock.it也是在创建基于区块链的共享短租业务,类似于区块链上的airbnb;澳洲交易所进行区块链技术的股票交易系统,人行发行数字货币等等等等大家都能在新闻中不断的看到相关应用场景出来了。

但是这些案例的还没有产生很大的社会影响力,但随着人们对区块链的认识的加深,区块链运营者对区块链应用的大力推广相信很快就会融入到我们每个人的生活工作中,发挥区块链技术更为广泛的社会价值。

后记

本文主要是对区块链基础知识做一个简要的介绍,方便一些初识区块链的朋友对区块链有个初步的认识。现在区块链也在不断的发展,在共识机制,加密算法,适用场景(联盟链、公共链、侧链)等上都有很飞速的进步,开源架构体系也在不断的完善,感兴趣的朋友可以找一些相关进行深入的学习。最后希望本文能够对读者理解区块链有所帮助!

Brook Wang

2018年3月8日于北京

    原文作者:wang brooks
    原文地址: https://zhuanlan.zhihu.com/p/34351885
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞