区块链让我们的什么发生了重大变化,区块链hash值如何上链(区块链中的hash算法)

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

区块链让我们的什么发生了重大变化,区块链hash值如何上链(区块链中的hash算法)

一、如何找到区块链的密码,区块链的密钥是什么

【深度知识】区块链之加密原理图示(加密,签名)

先放一张以太坊的架构图:

在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:

秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。

如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。

2、无法解决消息篡改。

如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。

1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。

2、同样存在无法确定消息来源的问题,和消息篡改的问题。

如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。

1、当网络上拦截到数据密文2时,由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。

2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。

如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。

1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。

2、当B节点解密得到密文1后,只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。

经两次非对称加密,性能问题比较严重。

基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:

当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要,之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1,比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。

在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。

无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。

在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢?有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。

为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。

在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。

为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:

在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。

以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?

那么如何生成随机的共享秘钥进行加密呢?

对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥和临时的非对称私钥可以计算出一个对称秘钥(KA算法-KeyAgreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:

对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥与B节点自身的私钥计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。

对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入Nonce),再比如彩虹表(参考KDF机制解决)之类的问题。由于时间及能力有限,故暂时忽略。

那么究竟应该采用何种加密呢?

主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。

密码套件是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。

在整个网络的传输过程中,根据密码套件主要分如下几大类算法:

秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。

消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。

批量加密算法:比如AES,主要用于加密信息流。

伪随机数算法:例如TLS1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。

在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。

握手/网络协商阶段:

在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等

身份认证阶段:

身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。

消息加密阶段:

消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。

消息身份认证阶段/防篡改阶段:

主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

ECC:EllipticCurvesCryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成公钥、私钥的算法。用于生成公私秘钥。

ECDSA:用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。主要用于身份认证阶段。

ECDH:也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。主要用于握手磋商阶段。

ECIES:是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH),H-MAC函数(MAC)。

ECC是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。ECDSA则主要是采用ECC算法怎么来做签名,ECDH则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。ECIES就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。

metacharset="utf-8"

这个先订条件是为了保证曲线不包含奇点。

所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:

所有的非对称加密的基本原理基本都是基于一个公式K=kG。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法就是要保证该公式不可进行逆运算(也就是说G/K是无法计算的)。*

ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。

我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据kG计算出我们的公钥K。并且保证公钥K也要在曲线上。*

那么kG怎么计算呢?如何计算kG才能保证最后的结果不可逆呢?这就是ECC算法要解决的。

首先,我们先随便选择一条ECC曲线,a=-3,b=7得到如下曲线:

在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如22=2+2,35=5+5+5。那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。

曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。

现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。

ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。

那么P+Q+R=0。其中0不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。

同样,我们就能得出P+Q=-R。由于R与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。

P+R+Q=0,故P+R=-Q,如上图。

以上就描述了ECC曲线的世界里是如何进行加法运算的。

从上图可看出,直线与曲线只有两个交点,也就是说直线是曲线的切线。此时P,R重合了。

也就是P=R,根据上述ECC的加法体系,P+R+Q=0,就可以得出P+R+Q=2P+Q=2R+Q=0

于是乎得到2P=-Q(是不是与我们非对称算法的公式K=kG越来越近了)。

于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。

假若2可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。

那么我们是不是可以随机任何一个数的乘法都可以算呢?答案是肯定的。也就是点倍积计算方式。

选一个随机数k,那么k*P等于多少呢?

我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描述成二进制然后计算。假若k=151=10010111

由于2P=-Q所以这样就计算出了kP。这就是点倍积算法。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。

至于为什么这样计算是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:

我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?

ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:

在曲线上选取一个无穷远点为基点G=(x,y)。随机在曲线上取一点k作为私钥,K=k*G计算出公钥。

签名过程:

生成随机数R,计算出RG.

根据随机数R,消息M的HASH值H,以及私钥k,计算出签名S=(H+kx)/R.

将消息M,RG,S发送给接收方。

签名验证过程:

接收到消息M,RG,S

根据消息计算出HASH值H

根据发送方的公钥K,计算HG/S+xK/S,将计算的结果与RG比较。如果相等则验证成功。

公式推论:

HG/S+xK/S=HG/S+x(kG)/S=(H+xk)/GS=RG

在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C=A+C+B=(A+C)+B。

这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考AliceAndBob的例子。

Alice与Bob要进行通信,双方前提都是基于同一参数体系的ECC生成的公钥和私钥。所以有ECC有共同的基点G。

生成秘钥阶段:

Alice采用公钥算法KA=ka*G,生成了公钥KA和私钥ka,并公开公钥KA。

Bob采用公钥算法KB=kb*G,生成了公钥KB和私钥kb,并公开公钥KB。

计算ECDH阶段:

Alice利用计算公式Q=ka*KB计算出一个秘钥Q。

Bob利用计算公式Q'=kb*KA计算出一个秘钥Q'。

共享秘钥验证:

Q=kaKB=ka*kb*G=ka*G*kb=KA*kb=kb*KA=Q'

故双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。

在以太坊中,采用的ECIEC的加密套件中的其他内容:

1、其中HASH算法采用的是最安全的SHA3算法Keccak。

2、签名算法采用的是ECDSA

3、认证方式采用的是H-MAC

4、ECC的参数体系采用了secp256k1,其他参数体系参考这里

H-MAC全程叫做Hash-basedMessageAuthenticationCode.其模型如下:

在以太坊的UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。

首先,以太坊的UDP通信的结构如下:

其中,sig是经过私钥加密的签名信息。mac是可以理解为整个消息的摘要,ptype是消息的事件类型,data则是经过RLP编码后的传输数据。

其UDP的整个的加密,认证,签名模型如下:

区块链密码算法是怎样的?

区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的Hash算法、零知识证明、环签名等密码算法:

Hash算法

哈希算法作为区块链基础技术,Hash函数的本质是将任意长度(有限)的一组数据映射到一组已定义长度的数据流中。若此函数同时满足:

(1)对任意输入的一组数据Hash值的计算都特别简单;

(2)想要找到2个不同的拥有相同Hash值的数据是计算困难的。

满足上述两条性质的Hash函数也被称为加密Hash函数,不引起矛盾的情况下,Hash函数通常指的是加密Hash函数。对于Hash函数,找到使得被称为一次碰撞。当前流行的Hash函数有MD5,SHA1,SHA2,SHA3。

比特币使用的是SHA256,大多区块链系统使用的都是SHA256算法。所以这里先介绍一下SHA256。

1、SHA256算法步骤

STEP1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。

STEP2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。

STEP3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。

STEP4:处理512-bit(16个字)报文分组序列。该算法使用了六种基本逻辑函数,由64步迭代运算组成。每步都以256-bit缓存值为输入,然后更新缓存内容。每步使用一个32-bit常数值Kt和一个32-bitWt。其中Wt是分组之后的报文,t=1,2,...,16。

STEP5:所有的512-bit分组处理完毕后,对于SHA256算法最后一个分组产生的输出便是256-bit的报文。

作为加密及签名体系的核心算法,哈希函数的安全性事关整个区块链体系的底层安全性。所以关注哈希函数的研究现状是很有必要的。

2、Hash函的研究现状

2004年我国密码学家王小云在国际密码讨论年会(CRYPTO)上展示了MD5算法的碰撞并给出了第一个实例(CollisionsforhashfunctionsMD4,MD5,HAVAL-128andRIPEMD,rumpsessionofCRYPTO2004,HowtoBreakMD5andOtherHashFunctions,EuroCrypt2005)。该攻击复杂度很低,在普通计算机上只需要几秒钟的时间。2005年王小云教授与其同事又提出了对SHA-1算法的碰撞算法,不过计算复杂度为2的63次方,在实际情况下难以实现。

2017年2月23日谷歌安全博客上发布了世界上第一例公开的SHA-1哈希碰撞实例,在经过两年的联合研究和花费了巨大的计算机时间之后,研究人员在他们的研究网站SHAttered上给出了两个内容不同,但是具有相同SHA-1消息摘要的PDF文件,这就意味着在理论研究长期以来警示SHA-1算法存在风险之后,SHA-1算法的实际攻击案例也浮出水面,同时也标志着SHA-1算法终于走向了生命的末期。

NIST于2007年正式宣布在全球范围内征集新的下一代密码Hash算法,举行SHA-3竞赛。新的Hash算法将被称为SHA-3,并且作为新的安全Hash标准,增强现有的FIPS180-2标准。算法提交已于2008年10月结束,NIST分别于2009年和2010年举行2轮会议,通过2轮的筛选选出进入最终轮的算法,最后将在2012年公布获胜算法。公开竞赛的整个进程仿照高级加密标准AES的征集过程。2012年10月2日,Keccak被选为NIST竞赛的胜利者,成为SHA-3。

Keccak算法是SHA-3的候选人在2008年10月提交。Keccak采用了创新的的“海绵引擎”散列消息文本。它设计简单,方便硬件实现。Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。

KangarooTwelve算法是最近提出的Keccak变种,其计算轮次已经减少到了12,但与原算法比起来,其功能没有调整。

零知识证明

在密码学中零知识证明(zero-knowledgeproof,ZKP)是一种一方用于向另一方证明自己知晓某个消息x,而不透露其他任何和x有关的内容的策略,其中前者称为证明者(Prover),后者称为验证者(Verifier)。设想一种场景,在一个系统中,所有用户都拥有各自全部文件的备份,并利用各自的私钥进行加密后在系统内公开。假设在某个时刻,用户Alice希望提供给用户Bob她的一部分文件,这时候出现的问题是Alice如何让Bob相信她确实发送了正确的文件。一个简单地处理办法是Alice将自己的私钥发给Bob,而这正是Alice不希望选择的策略,因为这样Bob可以轻易地获取到Alice的全部文件内容。零知识证明便是可以用于解决上述问题的一种方案。零知识证明主要基于复杂度理论,并且在密码学中有广泛的理论延伸。在复杂度理论中,我们主要讨论哪些语言可以进行零知识证明应用,而在密码学中,我们主要讨论如何构造各种类型的零知识证明方案,并使得其足够优秀和高效。

环签名群签名

1、群签名

在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,且可以只用单个群公钥来验证。群签名一般流程:

(1)初始化,群管理者建立群资源,生成对应的群公钥(GroupPublicKey)和群私钥(GroupPrivateKey)群公钥对整个系统中的所有用户公开,比如群成员、验证者等。

(2)成员加入,在用户加入群的时候,群管理者颁发群证书(GroupCertificate)给群成员。

(3)签名,群成员利用获得的群证书签署文件,生成群签名。

(4)验证,同时验证者利用群公钥仅可以验证所得群签名的正确性,但不能确定群中的正式签署者。

(5)公开,群管理者利用群私钥可以对群用户生成的群签名进行追踪,并暴露签署者身份。

2、环签名

2001年,Rivest,shamir和Tauman三位密码学家首次提出了环签名。是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。

环签名方案由以下几部分构成:

(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。

(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。

(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。

环签名满足的性质:

(1)无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。

(2)正确性:签名必需能被所有其他人验证。

(3)不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。

3、环签名和群签名的比较

(1)匿名性。都是一种个体代表群体签名的体制,验证者能验证签名为群体中某个成员所签,但并不能知道为哪个成员,以达到签名者匿名的作用。

(2)可追踪性。群签名中,群管理员的存在保证了签名的可追

二、区块链hash值如何上链(区块链中的hash算法)

区块链中的哈希算法

哈希算法是区块链中最重要的一个底层技术。是用来识别交易数据的一种方法,具有唯一性。加密哈希算法是数据的“指纹”。

加密哈希算法具有5大特征:

1、能够为任意类型的数据快速创建哈希值。

2、确定性。哈希算法为相同的输入数据总能产生相同的哈希值。

3、伪随性。当输入数据被改变时,哈希算法返回的哈希值的变化是不可预测的。不可能根据输入数据预测哈希值。

4、单向函数。不可能基于哈希值恢复原始输入数据。单独根据哈希值是不可能了解任何输入数据的信息。

5、防碰撞。不同数据块产生相同哈希值的机会很小。

区块链中的哈希值是什么意思?

如果你对区块链领域有所了解,那么你一定听说过哈希值,或许我们在浏览区块链信息时会经常看到哈希值,但是如果让我们说说哈希值到底是什么,可能我们也并不能说明白。我知到,虽然很多人都已经进入币圈很久,但是对于区块链领域的一些概念还处于一个一知半解,知道又不完全清楚的状态。其实哈希就是一种压缩信息的方法,我们可以通过哈希将很长的一段文字压缩成一小段乱码,那么区块链中的哈希值是什么意思呢?现在就让我来为大家详细的讲解一下。

哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,我们不能通过解密哈希来检索原始数据,它是一个单向的加密函数。

区块链哈希是什么?如果是刚开始了解区块链,就需要结合“区块”的概念来一起理解了。每一个区块,包含的内容有数据信息,本区块的哈希值以及上一个区块的哈希值。区块中的数据信息,主要是交易双方的地址与此次交易数量还有交易时间信息等。而哈希值就是寻找到区块,继而了解到这些区块信息的钥匙。以上就是区块链中哈希的含义了。

区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。金窝窝集团分析其哈希算法的作用如下:区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都接获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。

在区块链中,每个块都有前一个块的哈希值,前一个块被称为当前块的父块,如果考虑父块有一个当前区块。它将会有上一个块的哈希值即父块。

在区块链中,每个块都有前一个块的哈希值。当我们更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如,如果我们只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址。如果需要更改当前块中的数据,还需要更改父块。当只有两个数据块时,很容易更改数据,但是现在,当我们在区块链中实现时,2020-01-2412:32已经挖掘了614272个块,而614272(th)块的哈希值为00000000000000000007a6be31011560f1e3abe8f125e356a31db6051753334e。如果我们要更改当前块614272(th)中的数据,614271块的哈希地址必须更改,但是614271块的哈希是不可能更改的,所以这就是区块链被称为不可变的,数据可信的。区块链的第一个块,称为起源块。你可以从这个起源块中看到有多少块被开采到现在。

如果我们对输入的任何部分做一个小的改变,输出就会有一个大的改变,请看下面的例子以获得更多的理解。哈希值是区块链技术不可变的和确定的潜力核心基础和最重要的方面。它保留了记录和查看的数据的真实性,以及区块链作为一个整体的完整性。

#比特币[超话]##数字货币##欧易OKEx#

区块链技术

背景:比特币诞生之后,发现该技术很先进,才发现了区块链技术。比特币和区块链技术同时被发现。

1.1比特币诞生的目的:

①货币交易就有记录,即账本;

②中心化机构记账弊端——可篡改;易超发

比特币解决第一个问题:防篡改——hash函数

1.2hash函数(加密方式)

①作用:将任意长度的字符串,转换成固定长度(sha256)的输出。输出也被称为hash值。

②特点:很难找到两个不同的x和y,使得h(x)=h(y)。

③应用:md5文件加密

1.3区块链

①定义

区块:将总账本拆分成区块存储

区块链:在每个区块上,增加区块头。其中记录父区块的hash值。通过每个区块存储父区块的hash值,将所有的区块按照顺序连接起来,形成区块链。

②区块链如何防止交易记录被篡改

形成区块链后,篡改任一交易,会导致该交易区块hash值和其子区块中不同,发现篡改。

即使继续篡改子区块头中hash值,会导致子区块hash值和孙区块中不同,发现篡改。

1.4区块链本质

①比特币和区块链本质:一个人人可见的大账本,只记录交易。

②核心技术:通过密码学hash函数+数据结构,保证账本记录不可篡改。

③核心功能:创造信任。法币依靠政府公信力,比特币依靠技术。

1.5如何交易

①进行交易,需要有账号和密码,对应公钥和私钥

私钥:一串256位的二进制数字,获取不需要申请,甚至不需要电脑,自己抛硬币256次就生成了私钥

地址由私钥转化而成。地址不能反推私钥。

地址即身份,代表了在比特币世界的ID。

一个地址产生之后,只有进入区块链账本,才能被大家知道。

②数字签名技术

签名函数sign(张三的私钥,转账信息:张三转10元给李四)=本次转账签名

验证韩式verify(张三的地址,转账信息:张三转10元给李四,本次转账签名)=True

张三通过签名函数sign(),使用自己的私钥对本次交易进行签名。

任何人可以通过验证韩式vertify(),来验证此次签名是否有由持有张三私钥的张三本人发出。是返回true,反之为false。

sign()和verify()由密码学保证不被破解。·

③完成交易

张三将转账信息和签名在全网供内部。在账户有余额的前提下,验证签名是true后,即会记录到区块链账本中。一旦记录,张三的账户减少10元,李四增加10元。

支持一对一,一对多,多对已,多对多的交易方式。

比特币世界中,私钥就是一切!!!

1.6中心化记账

①中心化记账优点:

a.不管哪个中心记账,都不用太担心

b.中心化记账,效率高

②中心化记账缺点:

a拒绝服务攻击

b厌倦后停止服务

c中心机构易被攻击。比如破坏服务器、网络,监守自盗、法律终止、政府干预等

历史上所有有中心化机构的机密货币尝试都失败了。

比特币解决第二个问题:如何去中心化

1.7去中心化记账

①去中心化:人人都可以记账。每个人都可以保留完整的账本。

任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账。

②去中心化记账流程

某人发起一笔交易后,向全网广播。

每个记账节点,持续监听、持续全网交易。收到一笔新交易,验证准确性后,将其放入交易池并继续向其它节点传播。

因为网络传播,同一时间不同记账节点的交一次不一定相同。

每隔10分钟,从所有记账节点当中,按照某种方式抽取1名,将其交易池作为下一个区块,并向全网广播。

其它节点根据最新的区块中的交易,删除自己交易池中已经被记录的交易,继续记账,等待下一次被选中。

③去中心化记账特点

每隔10分钟产生一个区块,但不是所有在这10分钟之内的交易都能记录。

获得记账权的记账节点,将得到50个比特币的奖励。每21万个区块(约4年)后,奖励减半。总量约2100万枚,预计2040年开采完。

记录一个区块的奖励,也是比特币唯一的发行方式。

④如何分配记账权:POW(proofofwork)方式

记账几点通过计算一下数学题,来争夺记账权。

找到某随即数,使得一下不等式成立:

除了从0开始遍历随机数碰运气之外,没有其它解法,解题的过程,又叫做挖矿。

谁先解对,谁就得到记账权。

某记账节点率先找到解,即向全网公布。其他节点验证无误之后,在新区块之后重新开始新一轮的计算。这个方式被称为POW。

⑤难度调整

每个区块产生的时间并不是正好10分钟

随着比特币发展,全网算力不算提升。

为了应对算力的变化,每隔2016个区块(大约2周),会加大或者减少难度,使得每个区块产生的平均时间是10分钟。

#欧易OKEx##比特币[超话]##数字货币#

区块链自动交易流程

区块链自动交易流程:

第一步:交易的生成。当前所有者利用私钥对前一次交易和下一位所有者签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。

第二步:交易的传播。当前所有者将交易单广播至全网,每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易。

第三步:工作量证明。

第四步:全节点验证。

第五步:区块链记录。

区块链中的哈希值是什么?

区块链中的哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,不能通过解密哈希来检索原始数据,它是一个单向的加密函数。

在区块链中,每个块都有前一个块的哈希值。当更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如如果只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址,如果需要更改当前块中的数据,还需要更改父块。

一个加密哈希函数需要具备以下几个关键的特性才能被认为是有用的

1、每个哈希值都是不同的。

2、对于相同的消息,总是生成相同的哈希值。

3、不可能根据哈希值来决定输入。

4、即使对输入的整个哈希值做一个小的更改也会被更改。

三、区块链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这个模式

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/22045.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年03月15日
下一篇 2025年03月15日

相关推荐

  • 炒币在中国合法吗,区块链怎么赚钱是骗局吗

    一、在火币交易能赚钱吗在火币交易所炒币可以赚钱,但是亏钱也容易,投资有风险,而且数字货币本身波动就大,影响因素很多,亏50%也很正常,所以入市需谨慎。一般来说,风险很大,赚钱很难火币网。火币网是国内的比特币交易平台,获得真格基金、戴志康、红杉资本等A轮千万人民

    2025-05-01 07:00:01
    5 0
  • 区块链技术有哪些,到底啥是区块链分叉

    一、什么是比特币区块链的分叉分叉有区别为普通的升级,普通的升级在升级前后是没有影响协议共识的,也一般不需要社区共识或算力共识的参与。而分叉根据对协议的修改情况分为软分叉和硬分叉。现有的定义:【闪电定义】硬分叉是指比特币区块格式或交易格式(这就是广泛流传的“

    2025-05-01 05:55:01
    4 0
  • 区块链和加密货币,数字货币与区块链的关系

    一、什么是数字货币区块链一、区块链是记录数字货币交易的账本以比特币为例,它并没有实体形式,而是存在于一个专用账本当中。账本里记录了所有比特币交易,通过交易记录我们可以计算出每个用户拥有的比特币数量,如果一个人拥有比特币,就意味着在账本里可以找到与他相关的交

    2025-05-01 05:00:01
    3 0
  • 区块链应收款业务,区块链物流有哪些(区块链在物流系统中的应用)

    一、区块链系统应用场景有哪些,浅谈区块链的七大应用场景如何定义区块链?区块链的应用场景有哪些?现在很多人认为区块链是一种万能的技术,无所不能,多少有点把区块链技术神话了!在区块链技术的定义上,美国学者梅兰妮斯万在其著作《区块链:新经济蓝图及导读》定义区块链

    2025-05-01 05:00:01
    5 0
  • 区块链的应用,什么是区块链超级节点(区块链节点越多越好)

    一、区块链的共识机制一、区块链共识机制的目标区块链是什么?简单而言,区块链是一种去中心化的数据库,或可以叫作分布式账本(distributed ledger)。传统上所有的数据库都是中心化的,例如一间银行的账本就储存在银行的中心服务器里。中心化数据库的弊端是数据的安全及正确性

    2025-05-01 04:55:01
    2 0
  • 怎么做区块链,区块链学院有哪些(区块链专业学校)

    一、区块链有哪些大学学,区块链工程有哪些学校开设大连民族大学区块链专业怎么样很好。1、大连民族大学区块链工程是培养适应国家核心信息技术自主研发战略、发展数字经济战略及包括民族地区在内的社会治理精准化战略需要,掌握区块链技术基本理论和区块链项目开发方法,具有区

    2025-05-01 04:55:01
    3 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载