区块链技术上要有三个关键点,区块链dag什么意思(区块链的dac)

BITGET
Bigtet

Bitget交易所

Bitget交易所是全球前4大交易所之一、打新活动多、领空投到手软,新用户注册即可领取BGB空投

点击注册 进入官网

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联

区块链技术上要有三个关键点,区块链dag什么意思(区块链的dac)

一、区块链共识方法是什么(区块链共识机制有哪些)

区块链常见的三大共识机制

区块链是建立在P2P网络,由节点参与的分布式账本系统,最大的特点是“去中心化”。也就是说在区块链系统中,用户与用户之间、用户与机构之间、机构与机构之间,无需建立彼此之间的信任,只需依靠区块链协议系统就能实现交易。

可是,要如何保证账本的准确性,权威性,以及可靠性?区块链网络上的节点为什么要参与记账?节点如果造假怎么办?如何防止账本被篡改?如何保证节点间的数据一致性?……这些都是区块链在建立“去中心化”交易时需要解决的问题,由此产生了共识机制。

所谓“共识机制”,就是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;当出现意见不一致时,在没有中心控制的情况下,若干个节点参与决策达成共识,即在互相没有信任基础的个体之间如何建立信任关系。

区块链技术正是运用一套基于共识的数学算法,在机器之间建立“信任”网络,从而通过技术背书而非中心化信用机构来进行全新的信用创造。

不同的区块链种类需要不同的共识算法来确保区块链上最后的区块能够在任何时候都反应出全网的状态。

目前为止,区块链共识机制主要有以下几种:POW工作量证明、POS股权证明、DPOS授权股权证明、Paxos、PBFT(实用拜占庭容错算法)、dBFT、DAG(有向无环图)

接下来我们主要说说常见的POW、POS、DPOS共识机制的原理及应用场景

概念:

工作量证明机制(Proofofwork),最早是一个经济学名词,指系统为达到某一目标而设置的度量方法。简单理解就是一份证明,用来确认你做过一定量的工作,通过对工作的结果进行认证来证明完成了相应的工作量。

工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出,并通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。

应用:

POW最著名的应用当属比特币。在比特币网络中,在Block的生成过程中,矿工需要解决复杂的密码数学难题,寻找到一个符合要求的BlockHash由N个前导零构成,零的个数取决于网络的难度值。这期间需要经过大量尝试计算(工作量),计算时间取决于机器的哈希运算速度。

而寻找合理hash是一个概率事件,当节点拥有占全网n%的算力时,该节点即有n/100的概率找到BlockHash。在节点成功找到满足的Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播打包区块,会立刻对其进行验证。

如果验证通过,则表明已经有节点成功解迷,自己就不再竞争当前区块,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的竞争猜谜。网络中只有最快解谜的区块,才会添加的账本中,其他的节点进行复制,以此保证了整个账本的唯一性。

假如节点有任何的作弊行为,都会导致网络的节点验证不通过,直接丢弃其打包的区块,这个区块就无法记录到总账本中,作弊的节点耗费的成本就白费了,因此在巨大的挖矿成本下,也使得矿工自觉自愿的遵守比特币系统的共识协议,也就确保了整个系统的安全。

优缺点

优点:结果能被快速验证,系统承担的节点量大,作恶成本高进而保证矿工的自觉遵守性。

缺点:需要消耗大量的算法,达成共识的周期较长

概念:

权益证明机制(ProofofStake),要求证明人提供一定数量加密货币的所有权。

权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。

应用:

2012年,化名SunnyKing的网友推出了Peercoin(点点币),是权益证明机制在加密电子货币中的首次应用。PPC最大创新是其采矿方式混合了POW及POS两种方式,采用工作量证明机制发行新币,采用权益证明机制维护网络安全。

为了实现POS,SunnyKing借鉴于中本聪的Coinbase,专门设计了一种特殊类型交易,叫Coinstake。

上图为Coinstake工作原理,其中币龄指的是货币的持有时间段,假如你拥有10个币,并且持有10天,那你就收集到了100天的币龄。如果你使用了这10个币,币龄被消耗(销毁)了。

优缺点:

优点:缩短达成共识所需的时间,比工作量证明更加节约能源。

缺点:本质上仍然需要网络中的节点进行挖矿运算,转账真实性较难保证

概念:

授权股权证明机制(DelegatedProofofStake),与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。

授权股权证明在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。

同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。

应用:

比特股(Bitshare)是一类采用DPOS机制的密码货币。通过引入了见证人这个概念,见证人可以生成区块,每一个持有比特股的人都可以投票选举见证人。得到总同意票数中的前N个(N通常定义为101)候选者可以当选为见证人,当选见证人的个数(N)需满足:至少一半的参与投票者相信N已经充分地去中心化。

见证人的候选名单每个维护周期(1天)更新一次。见证人然后随机排列,每个见证人按序有2秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。

DPOS充分利用了持股人的投票,以公平民主的方式达成共识,他们投票选出的N个见证人,可以视为N个矿池,而这N个矿池彼此的权利是完全相等的。持股人可以随时通过投票更换这些见证人(矿池),只要他们提供的算力不稳定,计算机宕机,或者试图利用手中的权力作恶。

优缺点:

优点:缩小参与验证和记账节点的数量,从而达到秒级的共识验证

缺点:中心程度较弱,安全性相比POW较弱,同时节点代理是人为选出的,公平性相比POS较低,同时整个共识机制还是依赖于代币的增发来维持代理节点的稳定性。

区块链有几种共识算法?

RippleConsensus(瑞波共识算法)

使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,而如果它开始腐化,股东们什么也做不了。

5、PBFT:PracticalByzantineFaultTolerance(实用拜占庭容错算法)

PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

PBFT算法主要特点如下:客户端向主节点发送请求调用服务操作;主节点通过广播将请求发送给其他副本;所有副本都执行请求并将结果发回客户端;客户端需要等待f+1个不同副本节点发回相同的结果,作为整个操作的最终结果。

什么是区块链共识?

所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。

区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:

1)一致性。所有诚实节点保存的区块链的前缀部分完全相同。

2)有效性。由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。

区块链的四种共识机制

区块链的共识机制可以分为以下四类:权益证明机制、工作量证明机制、Pool验证和池股份授权证明机制。

区块链,就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。

区块链---共识算法

PoW算法是一种防止分布式服务资源被滥用、拒绝服务攻击的机制。它要求节点进行适量消耗时间和资源的复杂运算,并且其运算结果能被其他节点快速验算,以耗用时间、能源做担保,以确保服务与资源被真正的需求所使用。

PoW算法中最基本的技术原理是使用哈希算法。假设求哈希值Hash(r),若原始数据为r(raw),则运算结果为R(Result)。

R=Hash(r)

哈希函数Hash()的特性是,对于任意输入值r,得出结果R,并且无法从R反推回r。当输入的原始数据r变动1比特时,其结果R值完全改变。在比特币的PoW算法中,引入算法难度d和随机值n,得到以下公式:

Rd=Hash(r+n)

该公式要求在填入随机值n的情况下,计算结果Rd的前d字节必须为0。由于哈希函数结果的未知性,每个矿工都要做大量运算之后,才能得出正确结果,而算出结果广播给全网之后,其他节点只需要进行一次哈希运算即可校验。PoW算法就是采用这种方式让计算消耗资源,而校验仅需一次。

?

PoS算法要求节点验证者必须质押一定的资金才有挖矿打包资格,并且区域链系统在选定打包节点时使用随机的方式,当节点质押的资金越多时,其被选定打包区块的概率越大。

POS模式下,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000。这个时候,如果你验证了一个POS区块,你的币龄就会被清空为0,同时从区块中获得相对应的数字货币利息。

节点通过PoS算法出块的过程如下:普通的节点要成为出块节点,首先要进行资产的质押,当轮到自己出块时,打包区块,然后向全网广播,其他验证节点将会校验区块的合法性。

?

DPoS算法和PoS算法相似,也采用股份和权益质押。

但不同的是,DPoS算法采用委托质押的方式,类似于用全民选举代表的方式选出N个超级节点记账出块。

选民把自己的选票投给某个节点,如果某个节点当选记账节点,那么该记账节点往往在获取出块奖励后,可以采用任意方式来回报自己的选民。

这N个记账节点将轮流出块,并且节点之间相互监督,如果其作恶,那么会被扣除质押金。

通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤,提高了交易的速度。

?

拜占庭问题:

拜占庭是古代东罗马帝国的首都,为了防御在每块封地都驻扎一支由单个将军带领的军队,将军之间只能靠信差传递消息。在战争时,所有将军必须达成共识,决定是否共同开战。

但是,在军队内可能有叛徒,这些人将影响将军们达成共识。拜占庭将军问题是指在已知有将军是叛徒的情况下,剩余的将军如何达成一致决策的问题。

BFT:

BFT即拜占庭容错,拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。

拜占庭容错系统:

发生故障的节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。

假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n≥3m+1),拜占庭容错系统需要满足如下两个条件:

另外,拜占庭容错系统需要达成如下两个指标:

PBFT即实用拜占庭容错算法,解决了原始拜占庭容错算法效率不高的问题,算法的时间复杂度是O(n^2),使得在实际系统应用中可以解决拜占庭容错问题

?

PBFT是一种状态机副本复制算法,所有的副本在一个视图(view)轮换的过程中操作,主节点通过视图编号以及节点数集合来确定,即:主节点p=vmod|R|。v:视图编号,|R|节点个数,p:主节点编号。

PBFT算法的共识过程如下:客户端(Client)发起消息请求(request),并广播转发至每一个副本节点(Replica),由其中一个主节点(Leader)发起提案消息pre-prepare,并广播。其他节点获取原始消息,在校验完成后发送prepare消息。每个节点收到2f+1个prepare消息,即认为已经准备完毕,并发送commit消息。当节点收到2f+1个commit消息,客户端收到f+1个相同的reply消息时,说明客户端发起的请求已经达成全网共识。

具体流程如下:

客户端c向主节点p发送REQUEST,o,t,c请求。o:请求的具体操作,t:请求时客户端追加的时间戳,c:客户端标识。REQUEST:包含消息内容m,以及消息摘要d(m)。客户端对请求进行签名。

主节点收到客户端的请求,需要进行以下交验:

a.客户端请求消息签名是否正确。

非法请求丢弃。正确请求,分配一个编号n,编号n主要用于对客户端的请求进行排序。然后广播一条PRE-PREPARE,v,n,d,m消息给其他副本节点。v:视图编号,d客户端消息摘要,m消息内容。PRE-PREPARE,v,n,d进行主节点签名。n是要在某一个范围区间内的[h,H],具体原因参见垃圾回收章节。

副本节点i收到主节点的PRE-PREPARE消息,需要进行以下交验:

a.主节点PRE-PREPARE消息签名是否正确。

b.当前副本节点是否已经收到了一条在同一v下并且编号也是n,但是签名不同的PRE-PREPARE信息。

c.d与m的摘要是否一致。

d.n是否在区间[h,H]内。

非法请求丢弃。正确请求,副本节点i向其他节点包括主节点发送一条PREPARE,v,n,d,i消息,v,n,d,m与上述PRE-PREPARE消息内容相同,i是当前副本节点编号。PREPARE,v,n,d,i进行副本节点i的签名。记录PRE-PREPARE和PREPARE消息到log中,用于ViewChange过程中恢复未完成的请求操作。

主节点和副本节点收到PREPARE消息,需要进行以下交验:

a.副本节点PREPARE消息签名是否正确。

b.当前副本节点是否已经收到了同一视图v下的n。

c.n是否在区间[h,H]内。

d.d是否和当前已收到PRE-PPREPARE中的d相同

非法请求丢弃。如果副本节点i收到了2f+1个验证通过的PREPARE消息,则向其他节点包括主节点发送一条COMMIT,v,n,d,i消息,v,n,d,i与上述PREPARE消息内容相同。COMMIT,v,n,d,i进行副本节点i的签名。记录COMMIT消息到日志中,用于ViewChange过程中恢复未完成的请求操作。记录其他副本节点发送的PREPARE消息到log中。

主节点和副本节点收到COMMIT消息,需要进行以下交验:

a.副本节点COMMIT消息签名是否正确。

b.当前副本节点是否已经收到了同一视图v下的n。

c.d与m的摘要是否一致。

d.n是否在区间[h,H]内。

非法请求丢弃。如果副本节点i收到了2f+1个验证通过的COMMIT消息,说明当前网络中的大部分节点已经达成共识,运行客户端的请求操作o,并返回REPLY,v,t,c,i,r给客户端,r:是请求操作结果,客户端如果收到f+1个相同的REPLY消息,说明客户端发起的请求已经达成全网共识,否则客户端需要判断是否重新发送请求给主节点。记录其他副本节点发送的COMMIT消息到log中。

?

如果主节点作恶,它可能会给不同的请求编上相同的序号,或者不去分配序号,或者让相邻的序号不连续。备份节点应当有职责来主动检查这些序号的合法性。

如果主节点掉线或者作恶不广播客户端的请求,客户端设置超时机制,超时的话,向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线,发起ViewChange协议。

ViewChange协议:

副本节点向其他节点广播VIEW-CHANGE,v+1,n,C,P,i消息。n是最新的stablecheckpoint的编号,C是2f+1验证过的CheckPoint消息集合,P是当前副本节点未完成的请求的PRE-PREPARE和PREPARE消息集合。

当主节点p=v+1mod|R|收到2f个有效的VIEW-CHANGE消息后,向其他节点广播NEW-VIEW,v+1,V,O消息。V是有效的VIEW-CHANGE消息集合。O是主节点重新发起的未经完成的PRE-PREPARE消息集合。PRE-PREPARE消息集合的选取规则:

副本节点收到主节点的NEW-VIEW消息,验证有效性,有效的话,进入v+1状态,并且开始O中的PRE-PREPARE消息处理流程。

?

在上述算法流程中,为了确保在ViewChange的过程中,能够恢复先前的请求,每一个副本节点都记录一些消息到本地的log中,当执行请求后副本节点需要把之前该请求的记录消息清除掉。

最简单的做法是在Reply消息后,再执行一次当前状态的共识同步,这样做的成本比较高,因此可以在执行完多条请求K(例如:100条)后执行一次状态同步。这个状态同步消息就是CheckPoint消息。

副本节点i发送CheckPoint,n,d,i给其他节点,n是当前节点所保留的最后一个视图请求编号,d是对当前状态的一个摘要,该CheckPoint消息记录到log中。如果副本节点i收到了2f+1个验证过的CheckPoint消息,则清除先前日志中的消息,并以n作为当前一个stablecheckpoint。

这是理想情况,实际上当副本节点i向其他节点发出CheckPoint消息后,其他节点还没有完成K条请求,所以不会立即对i的请求作出响应,它还会按照自己的节奏,向前行进,但此时发出的CheckPoint并未形成stable。

为了防止i的处理请求过快,设置一个上文提到的高低水位区间[h,H]来解决这个问题。低水位h等于上一个stablecheckpoint的编号,高水位H=h+L,其中L是我们指定的数值,等于checkpoint周期处理请求数K的整数倍,可以设置为L=2K。当副本节点i处理请求超过高水位H时,此时就会停止脚步,等待stablecheckpoint发生变化,再继续前进。

?

在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,PBFT是一个可选的共识协议。在Hyperledger的Fabric项目中,共识模块被设计成可插拔的模块,支持像PBFT、Raft等共识算法。

?

?

Raft基于领导者驱动的共识模型,其中将选举一位杰出的领导者(Leader),而该Leader将完全负责管理集群,Leader负责管理Raft集群的所有节点之间的复制日志。

?

下图中,将在启动过程中选择集群的Leader(S1),并为来自客户端的所有命令/请求提供服务。Raft集群中的所有节点都维护一个分布式日志(复制日志)以存储和提交由客户端发出的命令(日志条目)。Leader接受来自客户端的日志条目,并在Raft集群中的所有关注者(S2,S3,S4,S5)之间复制它们。

在Raft集群中,需要满足最少数量的节点才能提供预期的级别共识保证,这也称为法定人数。在Raft集群中执行操作所需的最少投票数为(N/2+1),其中N是组中成员总数,即投票至少超过一半,这也就是为什么集群节点通常为奇数的原因。因此,在上面的示例中,我们至少需要3个节点才能具有共识保证。

如果法定仲裁节点由于任何原因不可用,也就是投票没有超过半数,则此次协商没有达成一致,并且无法提交新日志。

?

数据存储:Tidb/TiKV

日志:阿里巴巴的DLedger

服务发现:Consuletcd

集群调度:HashiCorpNomad

?

只能容纳故障节点(CFT),不容纳作恶节点

顺序投票,只能串行apply,因此高并发场景下性能差

?

Raft通过解决围绕Leader选举的三个主要子问题,管理分布式日志和算法的安全性功能来解决分布式共识问题。

当我们启动一个新的Raft集群或某个领导者不可用时,将通过集群中所有成员节点之间协商来选举一个新的领导者。因此,在给定的实例中,Raft集群的节点可以处于以下任何状态:追随者(Follower),候选人(Candidate)或领导者(Leader)。

系统刚开始启动的时候,所有节点都是follower,在一段时间内如果它们没有收到Leader的心跳信号,follower就会转化为Candidate;

如果某个Candidate节点收到大多数节点的票,则这个Candidate就可以转化为Leader,其余的Candidate节点都会回到Follower状态;

一旦一个Leader发现系统中存在一个Leader节点比自己拥有更高的任期(Term),它就会转换为Follower。

Raft使用基于心跳的RPC机制来检测何时开始新的选举。在正常期间,Leader会定期向所有可用的Follower发送心跳消息(实际中可能把日志和心跳一起发过去)。因此,其他节点以Follower状态启动,只要它从当前Leader那里收到周期性的心跳,就一直保持在Follower状态。

当Follower达到其超时时间时,它将通过以下方式启动选举程序:

根据Candidate从集群中其他节点收到的响应,可以得出选举

二、区块链dag什么意思(区块链的dac)

什么是DAG

参考ExplainingDirectedAcylicGraph(DAG),TheRealBlockchain3.0

Bitcoin视为blockchain1.0,Ethereum视为2.0,那么3.0是什么?DAG可能会是.

DAG,即DirectAcyclicGraph,有向无环图.它的特点是节点有先后次序,可以有分叉,但还不会有环.DAG常用语数据处理,事务规划,最优路径查找,数据压缩

bitcoin之所以效率低是因为它的POW机制.整个网络只有一个主链,其上的新块只能有一个,无法同时创建多个新块.10分钟左右以内的所有交易记录都被记录到一个块中.Ethereum也是类似,大概15-20秒产生一个新块.

NXT是第一个想到用DAG替代blockchain单链表结构的组织.

有了DAG,就可以同一时间创建多个块.

使用DAG的想法来自于侧链(side-chain).不同类型的交易在不同的链上同时进行.

IoTChain(ITC),IOTA,和Byteball是没有block概念的项目.

如果每个block只有一个transaction,那这个transaction就不用等待被打包,跳过计算hash的过程(即挖矿),直接上链了.

Bitcoin使用UTXO(UnspentTransactionoutput)模型.

DAG网络中,降低网络宽度是比较重要的一个课题.

由于只有transaction,没有打包的过程,DAG比基于PoW或PoS的区块链更快.

DAG网络里,没有矿工.交易的验证直接在交易时进行.对于用户来说这意味着交易可以瞬间完成.

DAG可以有效降低交易费.

IoTChain(ITC)所基于的DAG的TPS达到10,000.

『学概念找员外』有向无环图DAG的用途

有向无环图(DAG,DirectedAcyclicGraph):是一个无回路的有向图。如果有一个图,从A点出发到B点,然后经过C点,最后可以顺着方向回到A,形成一个闭环,那么这个图就不是非向无环图。如果将从C到A的边方向改为从A到C,则变成有向无环图。如图1和图2。

看到这两幅图,应该可以明白了,当然这个图是很简单的,只有三个点,事实上可能是由百万千万或者更多个点组成的图。有向无环图就是从一个图中的任何一点出发,不管走过多少个分叉路口,都没有回到原来这个点的可能性。

拓扑排序:就是一个有向无环图的所有定点的线性序列。且这个序列必须满足这两个条件:

这个东西,是比较难理解,再上图说话吧。比如在这个有向无环图中,它用拓扑排序,该怎么进行呢?

最后,一个完整的拓扑排序就完成了,结果为:1、2、4、3、5。

大家都知道,在比特币系统中,固定约十分钟出一个块,而且一旦打包成功一个区块,这个区块的信息还必须同步到其他的所有区块上面去,这是极其耗费资源和时间的。同时一个块里面大概能容纳3000笔交易,也就意味着10分钟才能交易成功3000笔。这个交易速度实在是满足不了用户的需求,所以为了解决比特币这个问题,出现了各种分叉币,也可谓是把比特币搞的乱七八糟了。后来以太坊问世后,基于比特币的基础上,交易速度提高了不少,每秒交易可达到20笔左右,但是任然有多次的以太坊拥堵事件,证明这个交易速度还远远不够。

在比特币系统中,如果可以改变51%的节点的记录数据,那么就实现了恶意攻击。然而现在比特币的大部分算力掌握在少数几个较大的矿厂手里,虽然大家都有共识,不会发起恶意攻击,但是不代表不会有意外事件发生。

随着计算机硬件的不断迭代升级,量子计算机的问世,那么比特币的加密算法还会有用吗?会不会被破解掉?虽然比特币的哈希算法可以实时调整难度,但是到底能承受多大的考验,员外是说不清的。

比特币用于大额的跨境转账或者交易等用途,还是挺实用的,但是谁会去用比特币购买小件商品?显然是不可能的,交易手续费就会让你心疼半天,然后还得再等半天的确认时间。

在区块链的应用上使用了DAG图之后,可以使得出块速度变快,因为DAG图中的每个顶点都是一个在某一时间点打包完成的区块。与传统的公链一次性只能产出一个区块来比,DAG的不同节点都可以自己来生成区块,然后这个区块只要选择好自己的下一个或者多个区块作为自己的子区块就好了。仅仅是在这一点上,出块速度就会高出比特币多个量级,交易速度简直可以快的飞起。

基于DAG的数据结构来说的话,对于里面的每个节点来说,因为与之相连的节点很少,而且是有方向性的,只能往前不能后退,所以都不需要再等大量的其他节点达成共识后,再同时确认下一笔交易了,避免了因网络延迟和数据同步造成的大量时间浪费。所以,使用DAG记账的节点的延展性可得到大幅度提升。

从上面这张图中,可以看到DAG的每一个节点都可以向下连接任意多个新的节点,这个有什么用呢?如果在这一个区块内部交易数据或者与之相连的下一步的交易数据也是过多的话,那么就可以分成足够多个区块来共同分担区块压力,从而可以提高交易的吞吐量。相比于比特币这样的系统每次只能打包一个区块来说,简直是完胜。

没有一个东西是完美的,有优势就有缺点,所以DAG的缺点目前在安全问题上面,主要是双花和影子链攻击。这个问题员外目前还没有找到足够好的答案,只能后续再说了。

本文参加优享优质经验征集计划,经验即价值,优享为成长买单

全球首个去中心化经验价值共享平台“优享”开启今夏最强空投!注册即送UX,最高5000UX,更多价值,等你发现!注册链接

GHOST,DAG,SPECTRE,PHANTOM和CONFLUX技术原理

??DAG概念,当做继比特币,以太坊后新的一代区块链技术(区块链3.0),那么DAG区块链是什么?DAG的由来是什么?它的技术理念是怎么样的?运行在DAG区块链上的协议有哪些?

??要想解释DAG,离不开YonatanSompolinsky和AvivZohar两位以色列人,他们是DAG区块链这一概念的提出者。在DAG之前,AvivZohar提出了一个GHOST协议(以太坊初期就采用了GHOST协议),该协议解决的是链分叉带来的安全性问题,而分叉的区块链在GHOST协议下数据结构就从一条链变成了一个树(Tree),而之后AvivZohar进一步提出了一个inclusive协议,在inclusive协议规则下,区块的结构就变成了有向无环图(DAG)。

接下来本文将:

??1.介绍GHOST协议,DAG由来背后的设计原理

??2.介绍三种针对DAG型区块链设计的协议,SPECTRE、PHANTOM和CONFLUX。

??GHOST协议是为了解决分叉导致链安全性降低的一个协议。

??下边将通过解释什么是分叉,为什么分叉会降低链的安全性,链上扩容为什么会导致更多分叉来详细介绍GHOST协议。

一笔比特币交易为什么要等6个区块的交易时长呢?

??等待不是为了防范51%攻击的。落后6个区块,如果拥有超过51%的算力,只要足够长的时间,一定能够产生更长的链完成攻击。它是为了防止分叉带来的风险。

??比特币在理想情况下,不同节点之间有相同的一条区块链,全部节点都是基于同一个区块进行挖矿,但当两个挖矿节点几乎同时挖到一个新的区块,当它们接收到对方产生的区块时,不同的节点将选择基于其中一个区块挖矿,分叉产生了。之后节点会根据哪条分叉更长,选择哪条是主链进行挖矿,而不是主链的分叉区块全部被抛弃。

??比特币每天都会发生二分叉,但出现连续的六次分叉几乎不可能,于是要等待6个区块的确认时间。(这种分叉不是来自恶意攻击,是偶然性以及网络延迟导致的。

分叉将‘攻击不超过51%算力,比特币就是安全的’这一理论推翻。

??在比特币中,当链有分叉时,将选择分叉最长的链作为主链,恶意攻击就是产生一条比主链更长的链代替主链。

??下图中蓝色区块代表诚实区块,红色代表攻击区块。2号、3号蓝色区块产生分叉,此时攻击节点产生5个攻击区块(红色)就能产生一条更长的链完成攻击。虽然蓝色区块总数更多(有6个),但分叉的区块没有增加链的长度,这种情况下,红色攻击方在算力(假设每个区块代表算力相同)没有超过51%的情况下攻击成功。

??比特币当前安全的原因在于10分钟的区块时间降低了分叉可能性,但其实际安全算力仍低于51%,也就是说,不需要51%的算力也能攻击成功。

??采用大区块以及小的产出时间将导致链有很多分叉。??

??比特币当前处理交易量很低,改进这个缺陷一个可行方法就是增大区块的大小和减小区块的产出时间。大区块需要更多的网络传输时间、单位时间更多的区块数都会导致更多的分叉。??

??链上扩容的方案对比特币处理交易能力提升是巨大的,假如每个区块大小变为原来的八倍(8M),出块时间缩短为原来的五分之一(2分钟),理想情况下,比特币的处理交易量将变为原来的40倍,实际情况会产生分叉,交易量不会有这么高。

??主链选择中,采用计算最大子树来代替比特币中的最长链规则。??

??比特币的最长链规则在有分叉情况下,将降低链的安全性,分叉越多,安全性越低。链上扩容将导致更多分叉,导致链不安全。

??YonatanSompolinsky提出GHOST规则,当有分叉时,通过计算最大子树,也就是每条分叉拥有的所有区块数来决定哪条链是主链。图0中,链在区块0后分叉了,上边分叉总计有6个蓝色区块,下边分叉有5个红色区块,蓝色区块1是主链,所以红色攻击失败。??

??在有大量分叉的情况下,GHOST规则将链安全性直接提到了51%,分叉对采用GHOST协议的链安全性没有影响。

??根据GHOST规则,上图中虽然诚实节点产生了12个区块,但加入主链的只有4个区块,大量区块被丢弃,假定比特币每个区块大小变为原来的八倍(8M),出块时间缩短为原来的十分之一(1分钟),分叉率为0.33(产生的区块加入主链的概率),比特币的处理交易能力将变为原来的26.6倍。

GHOST协议解决了链上扩容导致分叉带来的安全性问题。

区块的结构类型就从一条链变为树

??在GHOST的提出后,YonatanSompolinsky提出一种新的设想,新产生的区块指向所有已知的分叉末端区块,即一个区块有多个父亲,此时区块链就从一条链变为多条分叉链共同组成的的结构,这样的链结构就被叫做DAG(有向无环图)。

YonatanSompolinsky进而提出了在DAG上运行的inclusive协议,原理如下:

遗憾的是,YonatanSompolinsky之后并没有详细介绍补充该协议,而是提出了一种新思路的DAG协议——SPECTRE。

??看完上边内容之后,你会发现,最长链规则下,分叉的区块对比特币安全性和交易量没有任何贡献,白白的浪费了算力,而GHOST通过计算分叉区块个数来提升链的安全性,但分叉区块除了纳入区块计数外,区块内包含的交易信息却全部被丢弃。

??这种新的区块结构带来了新的特性,当然,比特币的最长链规则也可以在DAG上实施,只不过安全性和处理交易能力不佳,而GHOST协议可以提高安全性和处理交易能力,为了最大化利用DAG区块链特性,社区提出了不同的协议,接下来介绍YonatanSompolinsky提出的SPECTRE协议,以及PHANTOM协议,以及国内某社区提出的CONFLUX协议。

丢弃主链概念,所有产生的区块共同构成账本,不丢弃任何一个区块

??只要是产生的区块就不会被丢弃,所有的区块都是有效的,所有区块共同组成账本,这样进一步提高了区块链的处理交易能力,该设计的关键在于设计算法来保证区块链不会被恶意攻击成功。??

??SPECTRE协议较为复杂,下边将从其如何产生区块、如何处理冲突交易以及产生可信交易集三个方面进行描述。

SPECTRE协议中,当产生区块时,要指向之前所有分叉的末端区块。

??下图中,左边为比特币产生区块时,当有分叉出现,新区块将选择基于其中一个产生新的区块,而SPECTRE中,将基于所有分叉末端区块产生新的区块。同时,当有新区块产生时,节点要立刻将新区块(包含基于哪些区块产生这一信息)发送给与自己相连接的节点。

??仔细观察,GHOST协议中虽然有分叉,但每个区块都只基于前边某一个区块产生,而SPECTRE协议中要基于当前节点知道的所有末端区块产生下一个区块。

SPECTRE协议将矿工维持交易不冲突的要求剥除??

??比特币就像一本权威的账本,只要是里边记录的,就一定是真的(不考虑分叉和恶意攻击),而SPECTRE产生的DAG就像一本不权威账本,里边的交易信息可能冲突(上边图1中两个1区块中可能包含冲突交易信息)。??

??该协议下,挖矿节点只负责迅速挖区块(能够达到1秒一个区块),而对分叉中可能包含的冲突交易在挖矿阶段并不做任何处理,将记录交易速度最大化,让DAG这种区块链有着恐怖的处理交易能力。

??是时候解决挖矿不解决的冲突交易问题了,SPECTRE的思路是设计一个计算投票的算法,让诚实区块会投票给诚实的区块,后边的诚实区块会给前边的堆叠算力,从而让恶意攻击失败,其安全算力也是51%。??

??拿双花举例,下图中,X和Y区块中包含着两条冲突交易会导致双花,此时DAG中的区块会对X和Y进行投票,决定哪一个交易有效。

投票规则如下,投X的标蓝,投Y的标红,XY代表X先于Y:

??根据投票结果,X中的那条交易信息有效,Y中对应的那条交易信息无效。??YonatanSompolinsky也对不指向前边区块以及产生区块不发给邻居节点的恶意攻击有进行分析,在投票规则中,低于50%算力的攻击者会失败。??

??投票听起来像是一个主动地中心化行为,实际上不是,程序根据当前DAG区块所处的状态自发完成这一区块投票计算过程,就相当于,给定一个DAG数据,输入为两条冲突信息,运行该规则算法,将得出一对冲突交易的哪一个为有效。

SPECTRE可信交易集就相当于超过当前6个区块的比特币链里组成的交易集合。??区块链从数字加密货币的角度来说,就是一个账本,从账本上的交易信息中得出每个账户所拥有的货币,所以,得出确定的、不可能更改的交易信息就至关重要,SPECTRE可信交易集产生过程如下:

SPECTRE并不会对所有区块进行排序,所有区块没有一个完整的线形顺序,有的只是决定冲突信息先后的区块顺序对。??

??比特币中的高度代表的就是线形顺序,高度低的区块中交易信息先于高度高的区块里的信息,高度高的区块就不能包含和高度低的区块冲突的交易,而SPECTRE有大量的分叉,区块高度不能代表线形顺序,前边的区块交易信息不一定先于后边的分叉区块交易信息,交易信息的有效性要由投票算法来决定,区块投票算法很快,再加上它将所有分叉区块都包含进来,也就没有了比特币所面临的分叉风险(等待6个区块),交易确认时间可以达到10秒。

至此,和比特币相比,SPECTRE对应的DAG区块链有三个特点:

??SPECTRE协议非常适合DAG型数字加密货币,但当它用于智能合约时,它的缺陷就出来了,智能合约需要一个严格的线性顺序,对此YonatanSompolinsky新设计了PHANTOM协议来对DAG区块形成一个线性顺序,下边将详细介绍PHANTOM协议。

SPECTRE和PHANTOM是两个完整的独立的协议,不是一个对另一个的补充。

??PHANTOM的挖矿机制和SPECTRE一样,会产生同样类型的DAG,不同的是PHANTOM通过对区块连通度分析,判定区块诚实还是恶意,按照分类对区块排序,对DAG区块产生一个严格的线性顺序,通过线性顺序来判断冲突交易有效性。

DAG中,攻击者有两种攻击手段,一产生的区块不基于已知的末端区块,二不立即发布自己产生的区块,前者会让自己区块指向的区块变少,后者让其他节点产生的区块不会指向自己的区块,这两种情况都会导致这些恶意区块的与其它区块的连接度低。

??诚实区块在考虑网络最大延迟下,经过一定时间一定会传遍整个网络,一定会被后边的区块所指向,诚实节点在产生新区块时也一定会指向自己所知道的末端区块。

??通过对区块指出去的边和指向该区块的边进行分析,也就是区块的连通度,当考虑最大的网络延迟,连通度会有一个极限值K,低于该值的区块可以被认定为恶意区块,在排序中要处于劣势。

接下来,进行区块诚实和恶意判定,判定分两步,第一步最重要,实现复杂也耗费时间,主要为通过对区块连通度的判定,将强连通度的区块标为蓝色视为诚实区块,弱的标为红色视为恶意区块。

??第二步先对蓝色区块集排序,拓扑排序,然后对红色区块集排序。红色区块的顺序要处于弱势,例如上图中C,它处于A和I之间,那么它的顺序会排在I的前一个区块,而D、H都会排在C前。注意通过考虑最大延迟时间设定连通度的值,几乎所有正常诚实节点产生的区块都会被标记为蓝色

??至此,PHANTOM协议实现了对DAG的线性排序,通过线性顺序就可以提取无冲突交易集,进而提取可信交易集,虽然耗时较长,满足智能合约的要求。

??YonatanSompolinsky在PHANTOM协议论文结尾,提出一种将PHANTOM+SPECTRE结合起来的可能协议,没有详细展开介绍。下图是几种协议的对比:

??至此,介绍了YonatanSompolinsky一开始从分叉导致不安全提出的GHOST,到后来将DAG引入区块链,设计了SPECTRE协议,以及为智能合约考虑的PHANTOM协议。接下来,介绍国内某社区提出的CONFLUX协议。

??GHOST有主链但丢弃分叉区块;SPECTRE没有主链,包含所有分叉,但没有线性顺序;PHANTOM没有主链,包含分叉且有线性顺序,而CONFLUX即有主链,又是DAG,利用主链让DAG产生线性排序,下面将从挖矿机制和区块排序两方面来说明CONFLUX协议。

??CONFLUX协议定义了根源边和参考边。新区块是基于前一个主链区块产生的,新区块用根源边(实线)指向前一区块,用参考边(虚线)指向分叉的其他区块末端,如下图最后一个新区块实线指向H,虚线指向分叉末端区块K。根源边用于代表区块基于哪个区块产生,给哪个区块堆叠算力,参考边用于表示分叉的其它区块产生在该区块之前。

挖矿过程如下:

根源边只能有一条,参考边可多条(视情况而定)

以主链区块为分割点,将DAG分段,段间段内设计简单排序算法

??CONFLUX协议下产生的区块链如上(图2),接下来对其进行线性排序,排序算法如下:

??通过上述排序,DAG有了一个线性顺序,上图DAG区块顺序为Genesis,A,B,C,D,F,E,G,J,I,H,andK。接下来对该线性顺序的区块里的交易信息进行交易排序,单一区块里可能包含的冲突交易将直接按照该区块内交易信息排列先后顺序决定。

??至此,CONFLUX对DAG所有区块产生一个线性顺序,进而可以对区块内交易信息排序,产生无冲突交易集,超过一定时间的无冲突交易组成可信交易集。主链只是排序的标尺,作为分割时段的标准,CONFLUX包含所有分叉区块。

GHOST论文

Inclusive论文

SPECTRE论文

PHANTOM论文

CONFLUX论文

DAGlabs相关讲解视频合集

有谁知道能解释一下有向无环图(DAG)么?怎么用程序做出来,及怎么应用到经济学实证上?

我们说区块链目前还不成熟,有各种各样的问题,比如说处理速度慢、手续费高昂、存在安全隐患等等,这些都是用户最直观的体验,体验不是太好。区块链还有一个问题,那就是高并发问题。

高并发问题是怎么回事呢,我们简单说一下。高并发是计算机领域的问题,简单来讲,高并发问题就是系统无法顺利同时运行多个任务。

很多任务同时运行,一大堆用户涌进来,系统承受不住这么多的任务,会出现高并发问题,你的系统就卡住了,就好比春运时候,12306系统总是卡住,有可能就是高并发问题造成的。

传统互联网尚且存在高并发问题,区块链网络自然也存在这个问题,毕竟区块链的成熟程度比起传统互联网,还有很大的差距。但是,如果没有安全、可靠和高效的公链,整个区块链产业的发展都将受到严重制约,应用落地也是空谈。

在这种背景下,DAG技术就被提出来了,DAG的全称是“DirectedAcyclicGraph”,中文翻译为“有向无环图”。

DAG有向无环图是怎么回事呢,它到底能起到什么作用呢?我们下面解释一下。

一、DAG:一个新型的数据结构

DAG,中文名字叫“有向无环图”,从字面意思看,“有向"就是说它是有方向的,

“无环”就是说它是没有环路的、不能形成闭环的。所以,DAG其实是一种新型的数据结构,这个数据结构是有方向的,同时又是不能形成闭环的。

传统区块来讲,我们总是以“区块”为单位,一个区块里往往包含了多笔交易信息。而在DAG中,没有区块的概念,而是以“单元”为单位,每个单元记录的是单个用户的交易,组成的单元不是区块,而是一笔笔的交易,这样一来,可以省去打包出块的时间。

简单来说,区块链和DAG有向无环图最大的区别就是:区块链是一个接一个的区块来存储和验证交易的分布式账本,而DAG则是把每笔交易都看成一个区块,每一笔交易都可以链接到多个先前的交易来进行验证。

二、DAG的工作原理

传统区块链上,就拿比特币来讲,它是单链式的结构,区块与区块之间按照时间戳的先后顺序排列开来(如图一),数据记录在一条主链上。用不太恰当的比喻来讲,这个

“单链式”结构是一条一字排列的链。

区块链只有一条单链,打包出块就无法并发执行。新的区块会加入到原先的最长链之上,所有节点都以最长链为准,继续按照时间戳的顺序无限蔓延下去。而对于DAG来讲,每个新加入的单元,不仅只加入到最长链的一个单元,还要加入到之前所有的单元(如图二)。

举个例子:假设我发布了一个新的交易,此时DAG结构已经有2个有效的交易单元,那么我的交易单元会主动同时链接到前面的2个之中,去验证并确认,直到链接到创世单元,而且,上一个单元的哈希会包含到自己的单元里面。

换句话说,你要想进行一笔交易,就必须要验证前面的交易,具体验证几个交易,根据不同的规则来进行。这种验证手段,使得DAG可以异步并发的写入很多交易,并最终构成一种拓扑的树状结构,极大地提高扩展性。

依据DAG有向无环图,每一笔交易都直接参与了维护全网。当交易发起后,直接广播全网,跳过矿工打包区块阶段,这样就省去了打包交易出块的时间,提升了区块链处理交易的效率。

随着时间递增,所有交易的区块链相互连接,形成图状结构,如果要更改数据,那就不仅仅是几个区块的问题了,而是整个区块图的数据更改。DAG这个模式

三、什么叫区块链

区块链是一个可以共同记账的数字账本,会记录所有曾经发生并经过系统一致认可的交易。相当于全家总动员的方式记账,你在记账,你爸爸和妈妈也在记账,他们都能看到总账,但是已经被保存的信息就无法再被篡改。

区块链具有去中心化、开放性、安全性特征。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制;区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放;只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,保证了区块链的安全。

2008年由中本聪第一次提出了区块链的概念。随后区块链成为了电子货币比特币的核心组成部分,是作为所有交易的公共账簿。通过利用点对点网络和分布式时间戳服务器,区块链数据库能够进行自主管理。

扩展资料:

区块链的类型

1、公有区块链

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

2、联合(行业)区块链

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

3、私有区块链

仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。

参考资料来源:百度百科-区块链

Bigtet

Bitget交易所

Bitget交易所是全球前4大交易所之一、打新活动多、领空投到手软,新用户注册即可领取BGB空投

点击注册 进入官网

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联
文章版权声明:除非注明,否则均为BitGet官网原创文章,转载或复制请以超链接形式并注明出处。

目录[+]