1. 主页 > 币圈资讯

区块链核心技术(区块链核心技术体系架构的网络层主要包括)


欧易(OKX)交易所 - 全球顶尖数字货币交易平台

注册立即 领取价值高达 6,0000 元的数字货币盲盒,邀请码:vip1234,享受 20%手续费减免。

欧易注册 APP下载

区块链核心技术(区块链核心技术体系架构的网络层主要包括)

              

从技术的角度,架构的角度,用深入的言语来跟自己讲讲,我对区块链的一些了解。

终究啥是区块链?Block chain,一句话来说,区块链是一个存储系统,存储系统更细一点,区块链是一个没有管理员,每个节点都具有局部数据的散布式存储零碎。

那稀有的存储零碎,是什么样子的呢?

如上图所示,底部是数据,下面可以写入数据。一个空间存储数据,一个软件管理数据,提供接口写入数据,这就是存储系统。比如MySQL就是最稀有的存储系统。

一般的存储系统,冗杂具有什么效果呢?至少有两个罕见的效果

第一个是非高可用的效果,数据具有一个中央很风险。用技术的话说,就是数据不高可用。

第二个效果是,它具有写入的单点,写入点只需一个。用技术的话说,就是它是一个单点掌握。

那一般的存储系统普通是如何处置这两个效果的呢?

首先看一下如何保证高可用?

普通的存储系统普通是用“冗余”的方式来处置高可用成果的。图上图所示假定可以把数据复制成几份,冗余到多个中央,就可以保证高可用。一个中央的数据挂了,另外的中央还存有数据,例如MySQL的主从集群就是这个原理,磁盘的RAID也是这个原理。

这个地方需求强调的两点是:数据冗余,经常会引发一致性的成果

1、例如MySQL的主从集群中中其实读写会有延时的,它其实就是有一个短的时间内读写不一致。这个是数据冗余,带来的一个反作用。

2、第二个点是数据冗余经常会降低写入的效率,由于数据同步也是需求消耗资源的。你看单点写入,假定加了两个从库之后,其实写入的效率会受影响。普通的存储系统,就是采用冗余的方式,保证数据的高可用的。

那么第二个成绩,普通的存储系统,能否多点写入呢?

答案是可以的,比如说以这个图为例:

其实MySQL的话能够做一个双主的主从同步,双主的主从同步,两个节点,同时可以写入。假定要做多机房多活的数据核心,其实多机房多活也是中止数据同步的。这里要强调的是多点写入,经常会引发写写抵触的一致性问题,以MySQl为例,假定有一个表的属性是自增ID,那么往常数据库中的数据是1234,那么其中一个节点写入,插入了一条数据,那它能够变成5了,然后这5条数据,向另外一个主节点中止数据同步,同步完成之前,假设另外一个写入节点,也插入了一条数据,也生成了一条这个自增id为5的数据。那么,生成之后,往另外一个节点同步,然后同步数据抵达之后会与外地的这两条5抵触,就会同步失利,会引发写写的分歧性抵触问题。这个多点写入的话都会出现这个问题。

多点写入,如何保证一致?

维新“天鹅大咖课”给你更多的技术干活

点对点网络是区块链中核心的技术之一,主要关心的方面是为区块链提供一个坚定的网络结构,用于广播未被打包的买卖(买卖池中的买卖)以及共识过的区块,局部共识算法也需求点对点的网络支持(如PBFT),另外一个辅佐功用,如以太坊的音讯网络,也需求点对点网络的支持。

P2P网络分为结构化和非结构化网络两类。结构化网络采用相似DHT算法来树立网络结构;非结构化网络是一种扁平的网络,每个节点都有一些邻居节点的地址。

点对点网络的主要职责有维护网络结构和发送音讯这两个方面。网络结构要关心的是新节点的参与和网络更新这两个方面,而发送音讯包括广播和单播两个方面

如何树立并维护点对点的整个网络?节点如何参与、参与?

网络结构的树立有两个核心的参数,一个是每个节点向外衔接的节点数,第二个是最大转发数。

新节点关于整个网络一无所知,要么经过一个核心的效力获取网络中的一些节点去衔接,要么去衔接网络中的“种子”节点。

网络更新处置应有新节点参与大约节点参与,甚至原本一些节点网络不好,无法衔接,过一段时间又活了,等等这些状况。普统统过节点已有的连接来广播这些路由表的变化。需求留意的是,由于点对点网络的特地性,每个节点的路由表是不一样的(也叫partial view)

广播普通采用泛洪协议,即收到转发方式,使的音讯在网络中聚集,普通要采用一些限制条件,比如一条消息要设置最大的转发数,防止网络的过渡负载。

单播需求结构化网络结构支持,一般是DHT,相似于DNS解析的方式,逐跳寻觅手段节点地址,之后中止传输,并且更新外地路由表。

要想快速检索消息,有两种数据结构可以运用,一种是树类型,如AVL树、红黑树、B树等;另外一类是hash表。

哈希表的效率比树更高,但是需求占用更多的内存。

消息的表示采用键值对的方式,即一个键对应一个值,我们要查找的是key,值是附着的消息。

哈希表要处置的问题是如何平均地为每一个key分配一个存储位置。

这外面有两个重点:1.是为key分配一个存储地点,这个分配算法是活动的,保证存储的时分和查找的时分运用同一个算法,不然存进去之后会找不到;2.是平均地分配,不能有点地方寄存数据多,有点放寄存数据少。

一般言语外面的hashtable、map等结构运用这个技术来完成,哈希函数可以直接使用取模函数,key%n,这种方式,n代表有几个地方,key是整数,假设key是其他类型,需要激停止一次哈希,将key转为整数。这种方式可以处置下面的两个需求,但是当n不够大的时分(小于要存储的数据),会发生抵触,一个地方肯定会有两个key要存储,这时分,需要在这个地方放一个链表,将分配到同一地点、不同key,次第摆放。当一个地点放的key太多后,链表的查找速度太慢,要转化为树类型结构(红黑树大约AVL树)。

下面说过,哈希表效率很高,但是占用方式,使用多台机器就可以处置这个限制。在散布式环境中,可以将上述的地点了解为计算机(前面成为节点),即如何将一个key映照到一个节点上,每个节点有一个节点ID,即key-node id的映照,这个映照算法也要活动。

这个算法还有一个十分主要的央求,即scalebility,当新节点参与和加入时分,需要迁移的key要尽量少。

这个映照算法有两种典型结构,一个是环形,一个是树形;环形的叫一致性哈希算法,树形的典型叫kademlia算法。

选点算法就是处理key-node id的映照算法,笼统的来说就是为一个key选择它生命中的她(节点)。

假定我们使用32哈希,那么总共能容纳的key的数据量是2**32,称之为hash空间,把节点的ID映射成整数,key也映射成整数。把key哈希和节点哈希值接的差值的叫做距离(正数的话要取模,不用相对值),比如一个key的哈希是100(整数表示),一个节点的哈希是105,则这两个的距离是105-100=5。当然使用其他距离表示也可以,比如反过去减,但是算法要流动。我们把key映射(放到)间隔他最近的节点上。间隔取模的话,看起来就是把节点和key放到一个环上,key归属到从顺时针角度离它最近的节点上。

kademlia算法的距离采用的是key哈希与节点哈希异或计算之后的数值来表示(整数),从左往右,具有越多的“相同前缀”,则距离越近,越在左边位置不一样,距离越远。

树结构的表现是,将节点和key看成树的节点,这个算法支撑的位数是160bit,即20个8字节,树的高度为160,每个边表示一位。

选点的算法和一致性哈希相同,从一切节点中,选择一个距离key距离最小的节点作为这个key的归宿。

由于是在散布式环境中,为了保证高可用,我们假定没有一个核心的路由表,没有这个可以看到全貌的路由表,带来了一些应战,比如如何发觉节点、查找节点?

在P2P网络中,常用的方法是每个节点保护一个局部路由表,即只包括部分节点的路由消息。在泛洪算法中,这些节点上随机的;在DHT算法中,这个路由表是有结构的,维护的节点也是有挑选性的。那么如何合理的挑选需要维护路由信息的节点呢?

一个质朴的做法是,每一个节点保管比他大的节点的信息,这样可以组成一个环,但是这样做的话,有一个大问题和一个小问题。大问题是,每个节点知道的信息太少(只需下一个节点的哈希和地址),当给出一个key时,它不知道网络中还有没有比它距离这个key距离还短的节点,所以它首先区分key能否属于自己和下一个节点,如果是,那么这个key就属于下一个节点,如果不是就调用下一个节点十分的方法,这个冗杂度是N(节点数)。一个优化的方法是,每个节点i维护的其他节点有:i+2 1, i+2 2,....i+2**31,经过观察这个数据,发觉由近到远,节点越来越稀疏。这样可以把繁杂度降低到lgN

每个节点保管的其他节点的信息,包括,从左到右,每一位上与本节点不同的节点,最多选择k个(算法的超参数)。比如在节点00110上(为演示起见,选择5位),在要保管的节点路由信息是:

1****: xxx,....,xxx(k个)

01: xxx,....,xxx(k个)

000 : xxx,....,xxx(k个)

0010 : xxx,....,xxx(k个)

00111: xxx,....,xxx(k个)

上述文章内容为一行称为k-bucket。笼统的来看,也是距离自己越近,节点越稀疏,越远,节点越稀疏。这个路由查找、节点查找的算法也是lgN繁杂度。

不论你能否接受,未来终将改动。

区块链技术给数字经济时期带来了剧变的曙光。

这种剧变在互联网近50年的历史上曾发生过两次。第一次剧变是全球性的联

网……第二次剧变是全球性的使用……第三次剧变正在蕴酿。

————摘自《腾讯区块链计划白皮书》?

当第一次读到这段时,完整不敢想象这是一家世界级企业对一项新技术的评价,

瞬间惹起了我的兴味。“剧变”是什么含义?就是说完整有能够树立我们现有的

经济结构和认知,完好改动我们的生活方式。

一种从2009年才出世的比特币技术中 笼统而来的block chain(区块链)技术,

居然取得了这么高的评价,这难道不是很奇特的一件事么?不论这件事会不会发

生,曾经令人非常激动了,我们正在迎接一项革新并且能够参与其中,不是任何

时期的人都有这种机遇,何其幸运!

不管你能否接受,未来终将改动。全球众多经济学家、企业家、国度政要都在推

崇区块链,宣称区块链技术将重塑商业、货币和世界,将建立互联网、银行、证

券、平安、物流、电力、制造、会计税收、法律效力、文明守业、医药卫生等众

多行业。

固然说到“区块链”,自己都会提到“去核心化”,也举了很多笼统的例子。但

是我是一个较真的人,希冀能够找到自己做出这种区分,面前的逻辑终究是什

么?就需要搞懂一切推断面前的实质,就需要了解区块链的核心技术逻辑。

阅读了一些书籍和资料之后,抛开“比特币”不说,要了解区块链,有两个核心

名词:共识机制、智能合约。

共识机制是区块链技术的核心,要搞清楚”共识机制“,就不得不提知名的“拜

占庭将军问题”,拜占庭将军问题由莱斯利·兰伯特提出的点对点通讯中的基本

问题,主要是用于剖析在分布式节点传输信息时如何坚持数据的一致,即共识这

个问题。

拜占庭将军问题

一组拜占庭将军辨别各率领一支军队独自围困一座乡村。为了简化问题,将各支

军队的举措战略限定为进攻或撤离两种。

由于部分军队进攻部分军队撤离能够会构成灾难性结果,因此各位将军必需经过

投票来达成一致战略,即一切军队一同进攻或一切军队一同撤离。由于各位将军

分处乡村不同方向,他们只能经过信使相互联系。

在投票进程中每位将军都将自己投票给防御还是撤离的信息经过信使辨别通知其

他一切将军,这样一来每位将军依据自己的投票和其他一切将军送来的信息就可

以知道独自的投票结果而决议举措战略。

系统的问题在于,将军中能够出现叛徒,他们不只能够向较为蹩脚的战略投票,

还能够选择性地发送投票信息。这样各支军队的一致协同就遭到了破坏。由于将

军之间需要经过信使通讯,叛变将军可能经过假造信件来以其他将军的身份发送

假投票。而即使在保证一切将军忠实的状况下,也不能清扫信使被冤家截杀,甚

至被冤家世谍交流等状况。因此很难通过保证人员牢靠性及通讯牢靠性来处理问

题。

假始那些忠实的将军依然能通过少数决来决议他们的战略,便称抵达了拜占庭容

错。

拜占庭将军问题被以为是容错性问题中最难的问题类型之一。在一个有n个节点的

系统中,每一个节点都有一个输入的值,其中一些节点具有缺陷,甚至是恶意

的。

在分布式计算中,不同的计算机通过通讯交流信息达成共识而依照同一套协作策

略举措。但有时分,系统中的成员计算机可能出错而发送过失的信息,用于传递

信息的通讯网络也可能招致信息维护,使得网络中不同的成员关于部分协作的策

略得出不同结论,从而破坏系一致致性。

但是中本聪在想象比特币系统时使用的“义务量证明链”(PoW)模型很好的处理

了共识问题,至于什么是“PoW”,感兴味的可以研讨下。

智能合约是一套以数字方式定义的许愿(promises) ,包括合约参与方可以在

上面实施这些许愿的协议。一个合约就是具有区块链里的次第。合约的参与双方

将达成的协议延迟装置到区块链系统中。在双方的商定完成后,末尾实施合约,

不能矫正。至于合约施行所需要的“燃料”,也就是手续费,也需要延迟支付。

智能合约可以解决日常生活中罕见的违约问题,如果使用到各行业中,可以防止

违约的信誉问题。

在区块链呈现之前,商业范围的怀疑联系一般要依赖于正直、诚信的团体、中介

机构或其他组织才干建立起来。在区块链这个新兴的范围中,怀疑联络的建立是

基于网络,甚至是网络上的某个对象。由区块链驱动的智能合约将会央求单方遵

守他们的许愿。

在区块链体系中,共识机制和智能合约,保证了数据的真实性和合约施行力,实

现“去核心化”。当然还有很多技术层面的东西没有说到,感兴味的可以深化了

解下。

固然大部分人关于区块链的认知还停止在比特币、各种代币上,也就是对金融行

业的革新。但是理解区块链核心逻辑后,辨别自己所在的行业“区块链 +”,区

块链的各行业的使用刚进前半场,置信都会想到很多好的创新方向。

首先,我们可以看一下区块链技术的官网注释。狭义来讲,区块链是一种依照工夫次第将数据区块以次第相连的方式组合成的一 种链式 数据结构, 并以密码学方式保证的不可窜改和不可假造的分布式账本。

狭义来讲,区块链技术是使用块链式数据结构来考证与存储数据、使用分布式节点共识算法来生成和更新数据、应用密码学的方式保证数据传输和访问的平安、应用由自动化脚本代码组成的智能合约来编程和操作数 据的一种全新的分布式基础架构与计算范式。

可能自己都知道的是,区块链技术是从比特币系统当中独立进去的底层构架,从架构模型下去说,它就是一套分布式的账本,所谓账本,自然就是用来记账的。

在区块链技术当中,要想生成记账记载,就要有资金的买卖和活动,所以最末尾的区块链技术上,都有其主网所对应的加密货币作为凝滞物品,加密货币在区块链主网的各个账户之间的凝滞买卖记载都会被记载在主网上。

与其他的交易记载数据库不同的是,区块链技术主网上的交易记载会被记载在主网中所有的区块区块节点(即所有的数据区块)上,这也就是所谓的去核心化原理,也就是说在区块链技术上,是没有一个中心数据库来保管所有记载的,链上每一个区块都具有全链的交易数据,也就是说,每一个数据块,都是中心。

而区块链技术的另一个特性,就是不可窜改,由于在区块链上的每一笔交易都会被记载在链上所有的区块中,所以任何一个单独数据块都无法更改记录,即使你更改了,其他所有的数据块中也会记录真实数据,并且每一组数据都可以追溯到最先呈现的时候。

正由于区块链技术的这些特性,比特币问世后,区块链也遭到了很多关怀的目光,很多人也开端想要利用区块链的技术来做一个无中心、可溯源、不更改的数据,以此保证数据的可信度。

但是区块链技术也面临很多问题,比如应用场景繁多、原生过失数据不可矫正,黑客盗走货币不可追回等。

繁杂来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于工夫序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。

大约上述文章内容概念过于笼统,我来举个例子,你就好理解了。

你可以设想有 100 台计算机分布逝世界各地,这 100 台机器之间的网络是广域网,并且,这 100 台机器的具有者相互不怀疑。

那么,我们采用什么样的算法(共识机制)才干够为它提供一个可疑心的环境,并且使得:

节点之间的数据交流进程不可窜改,并且已生成的历史记录不可被窜改;

每个节点的数据会同步到最新数据,并且会考证最新数据的有效性;

基于少数遵从多数的准绳,部分节点维护的数据可以客观反映交流历史。

区块链就是为理解决上述问题而发生的技术计划。

二、区块链的核心技术组成

不论是公链还是联盟链,至少需要四个模块组成:P2P 网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。

1、P2P 网络协议

P2P 网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点觉察和维护。

一般我们所用的都是比特币 P2P 网络协议模块,它遵照肯定的交互准绳。比如:初次连接到其他节点会被央求依照握手协议来确认外形,在握手之后末尾恳求 Peer 节点的地址数据以及区块数据。

这套 P2P 交互协议也具有自己的指令集合,指令体往常在消息头(Message Header) 的 命令(command)域中,这些命令为下层提供了节点觉察、节点获取、区块头获取、区块获取等功用,这些功用都是非常底层、非常基础的功用。如果你想要深化理解,可以参考比特币开拓者指南中的 Peer Discovery 的章节。

2、分布式一致性算法

在模范分布式计算范畴,我们有 Raft 和 Paxos 算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的 PBFT 共识算法。

如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原本的分布式算法停止了经济学上的拓展。

在图中我们可以看到,计算机应用在最开端多为单点应用,高可用便利采用的是冷灾备,事前展开到异地多活,这些异地多活可能采用的是负载平衡和路由技术,随着分布式系统技术的展开,我们过渡到了 Paxos 和 Raft 为主的分布式系统。

而在区块链范畴,多采用 PoW 义务量证明算法、PoS 权益证明算法,以及 DPoS 代理权益证明算法,上述文章内容三种是业界主流的共识算法,这些算法与模范分布式一致性算法不同的是,它们融入了经济学博弈的概念,上面我辨别复杂引见这三种共识算法。

PoW: 一般是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能取得记账权(出块)权益。这个求解进程常常会转换成计算问题,所以在比拼速度的状况下,也就变成了谁的计算方法更优,以及谁的装备功用更好。

PoS: 这是一种股权证明机制,它的基本概念是你发生区块的难度应当与你在网络里所占的股权(所有权占比)成比例,它完成的核心思绪是:使用你所锁定代币的币龄(CoinAge)以及一个小的义务量证明,去计算一个手段值,当满意目的值时,你将可能获取记账权。

DPoS: 复杂来理解就是将 PoS 共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是 21 个节点,也有可能是 101 个节点,这一点取决于设想,只需这个圈子中的节点才干取得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。

3、加密签名算法

在区块链范畴,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。

其中,难题友好性正是众多 PoW 币种赖以具有的根底,在比特币中,SHA256 算法被用作任务量证明的计算办法,也就是我们所说的挖矿算法。

而在莱特币身上,我们也会看到 Scrypt 算法,该算法与 SHA256 不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于 SHA3 算法的挖矿算法。以太坊使用了 Dagger-Hashimoto 算法的改良版本,并命名为 Ethash,这是一个 IO 难解性的算法。

当然,除了挖矿算法,我们还会使用到 RIPEMD160 算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设想。

除了地址,我们还会使用到最核心的,也是区块链 Token 系统的基石:公私钥密码算法。

在比特币大类的代码中,根本上使用的都是 ECDSA。ECDSA 是 ECC 与 DSA 的辨别,整个签名进程与 DSA 类似,所不一样的是签名中采取的算法为 ECC(椭圆曲线函数)。

从技术上看,我们先从生成私钥开端,其次从私钥生成公钥,最后从公钥生成地址,上述文章内容每一步都是不可逆进程,也就是说无法从地址推导出公钥,从公钥推导到私钥。

4、账户与交易模型

从一开端的定义我们知道,仅从技术角度可以以为区块链是一种分布式数据库,那么,多数区块链究竟使用了什么类型的数据库呢?

我在设想元界区块链时,参考了多种数据库,有 NoSQL 的 BerkelyDB、LevelDB,也有一些币种采用基于 SQL 的 SQLite。这些作为底层的存储装备,多以轻量级嵌入式数据库为主,由于并不触及区块链的账本特性,这些存储技术与其他场所下的使用并没有什么不同。

区块链的账本特性,一般分为 UTXO 结构以及基于 Accout-Balance 结构的账本结构,我们也称为账本模型。UTXO 是“unspent transaction input/output”的缩写,翻译过去就是指“未破费的交易输入输入”。

这个区块链中 Token 转移的一种记账方式,每次转移均以输入输出的方式呈现;而在 Balance 结构中,是没有这个方式的。

区块链技术

的核心是共识算法,共识算法的实质是在

分布式网络

中,各节点互不疑心的条件下,通过举证

稀缺资源

的方式,构成了

纳什平衡

的博弈场,赢得各方的疑心,快速在各个节点之间达成一致,并同步的完成权益。

              

本文来自网络,不代表币圈之家立场,如有侵权请联系我们删除,转载请注明出处:https://www.110btc.com/zixun/49792.html

联系我们

在线咨询:点击这里给我发消息

微信号:AB100082

工作日:9:30-18:30,节假日休息