主页 > imtoken官网下载 > hb sha1 有一个默认值

hb sha1 有一个默认值

imtoken官网下载 2023-01-17 01:36:44

Raft阶段主要分为两个阶段。首先进行leader选举过程,然后在选举出的leader的基础上进行正常的操作,如日志复制、记账等。

1.领袖选举

当follower在选举超时时间内没有收到leader的心跳消息时,就进入candidate状态。为避免选举冲突,此超时时间是 150 到 300 毫秒之间的随机数。

一般来说,在 Raft 系统中:

1)任何服务器都可以成为候选人,它向其他服务器追随者发送请求以选举自己。

2)其他服务器同意并发出OK。注意,如果一个follower在这个过程中宕机,没有收到选举请求,候选人可以自己选举。只要达到N/2+1的多数票,候选人仍然可以成为Leader。.

3)这样,候选人就成为了leader,它可以向选民,也就是追随者下达指令,比如会计。

4)以后通过心跳的记账通知。

5)一旦leader垮台,其中一个follower将成为候选人,并发出投票邀请。

6)follower同意后,成为leader,继续承担会计等指导工作。

2.日志复制

Raft 的计费流程如下:

1)假设已经选举出leader,客户端发送添加日志的请求;

2)leader要求follower按照他的指示,将新的日志内容追加到各自的日志中;

3)大部分follower服务器将交易记录写入账本后,确认追加成功,发送确认成功消息;

4)在下一次心跳中,leader会通知所有follower更新已确认的item。

对每条新的交易记录重复上述过程。

在这个过程中,如果发生网络通信故障,leader无法访问大部分follower,leader只能更新那些可以正常访问的follower服务器。由于大部分服务器follower没有leader,他们会重新选举一个候选人作为leader,然后leader作为代表与外界打交道。如果外界要求它添加新的交易记录,新的leader会按照上面的步骤进行。大多数追随者。当网络通信恢复后,原来的leader变成follower。在断开连接阶段,旧领导者所做的任何更新都无法得到确认,并且必须回滚以接收来自新领导者的新更新。

四.POW:工作量证明,工作量证明。

从去中心化账本系统的角度来看,每个加入系统的节点都必须保存一份完整的账本,但每个节点不能同时记账,因为节点所处的环境不同,接收的信息也不同。如果同时记账,难免会导致账目不一致,造成混乱。因此,需要就哪个节点有权记账达成共识。比特币区块链通过竞争记账的方式解决去中心化记账系统的一致性问题,即与每个节点的算力,即“算力”竞争记账权的机制。

在比特币系统中,每10分钟左右举行一轮计算竞赛,竞赛获胜者将获得记录一本书的权利,并将新书信息同步到其他节点。然而,在一个去中心化的系统中,谁有权力判断竞争的结果呢?比特币系统是通过一种称为“工作证明”(PoW)的机制完成的。

简单地说,PoW 是工人完成了一定工作量的证明。PoW 系统的主要特点是计算的不对称性。工作方需要做一些困难的工作才能得到结果,但验证者可以通过结果轻松检查工作方是否做了相应的工作。

例如,给定字符串“blockchain”,我们给出的工作量要求是,我们可以在这个字符串之后连接一串称为nonce的整数值,并对连接后的字符串进行SHA256哈希运算,如果得到的哈希结果(十六进制形式)以几个0开头,验证通过。为了实现这个工作量证明目标,我们需要不断增加 nonce 值并对生成的新字符串执行 SHA256 哈希运算。根据这个规则,找到前 3 位为 0 的哈希值需要 2688 次计算,找到前 6 位为 0 的哈希值需要 620969 次计算。

1 blockchain1 → 4bfb943cba9fb9926df93f33c17d64b378d56714e8a29c6ba8bdc9690cea8e27  
2 blockchain2 → 01181212a283e760929f6b1628d903127c65e6fb5a9ad7fe94b790e699269221 ……
3 blockchain515 → 0074448bea8027bebd6333d3aa12fd11641e051911c5bab661a9b849b83958a7……
4 blockchain2688 → 0009b257eb8cf9eba179ab2be74d446fa1c59f0adfa8814260f52ae0016dd50f……
5 blockchain48851: 00000b3d96b4db1a976d3a69829aabef8bafa35ab5871e084211a16d3a4f385c……
6 blockchain6200969: 000000db7fa334aef754b51792cff6c880cd286c5f490d5cf73f658d9576d424

通过上面计算特定SHA256运算结果的例子,我们对PoW机制有了一个初步的了解。对于由特定字符串后跟随机nonce值组成的字符串,要找到这样一个满足前n位全为0的SHA256值的nonce值,需要多次计算hash值。一般来说,n的值越大,需要做的hash计算量就越大。由于散列值的伪随机性,预计将执行大约 216 次尝试以找到具有 4 个前导 0 的散列值。这个数学上预期的计算数量是所需的“工作量”。

如果比特币网络中的任何一个节点想要生成一个新的区块并写入区块链,就必须解决比特币网络的 PoW 问题。这个问题的三个关键要素是工作量证明函数、区块和难度值。工作量证明函数是这个问题的计算方式,区块决定了这个问题的输入数据,难度值决定了这个问题需要的计算量。

1.工作量证明功能和区块数据计算过程

比特币系统中使用的工作量证明函数是 SHA256(大满贯!查看这个问题)。

比特币区块结构如下图所示:

比特币区块由区块头和区块中包含的交易列表组成。块头的大小为 80 字节,由 4 字节的版本号、32 字节的前一个块的哈希、32 字节的默克尔根哈希和 4 字节的时间戳(当前时间)组成。, 4 字节当前难度值和 4 字节随机数。块中包含的交易列表附加到块头中。第一个交易是coinbase交易,是矿工获得奖励和费用的特殊交易。

固定长度为 80 字节的块头是用于比特币工作量证明的输入字符串。因此,为了让区块头反映区块中包含的所有交易,在区块的构建过程中,需要通过交易列表通过 Merkle 树算法(slamming)生成 Merkle 根哈希值,以被包含在块中。并将其作为交易列表的哈希值存储在区块头中。Merkle树的算法图如下图所示。

上图是一棵有 4 条交易记录的 Merkle 树的根哈希的计算过程。首先,以这4个交易为叶子节点构造一棵完整的二叉树,然后通过计算哈希值将二叉树转化为Merkle树。

首先,对于四个交易记录:Txa~Txc,计算它们各自的哈希值HA~HC,然后计算两个中间节点HAB=Hash(HA+HB)和HCD=Hash(HC +HD),最后计算出根节点的哈希值HABCD=Hash(HAB+HCD)。

构建的简化区块链结构如上图所示。我们发现:所有需要在给定时间范围内记录的交易信息都被构造成一棵 Merkle 树,区块中包含一个指向 Merkle 树的哈希指针,与区块相关的交易数据是相关联的。该块还包含指向前一个块的哈希指针,以便记录不同交易的各个块链接在一起形成区块链。

2.挖矿难度

难度值是比特币系统中节点在生成区块时的重要参考指标。它决定了一个节点需要经过多少散列操作来生成一个合法的块。比特币区块大约每 10 分钟生成一次。如果要在全网不同的算力条件下以这个速率产生新的区块,就必须根据全网算力的变化来调整难度值。简单地说,难度值设置为每 10 分钟一个新块的速率,与节点计算能力无关。

难度调整在每个完整节点中独立且自动发生。每 2016 个区块,所有节点都会根据统一的公式自动调整难度。根据实际时长与预期时长的比例,进行相应的调整(或变得更难或更容易)。也就是说,如果出块速度快于 10 分钟,则难度增加,如果慢于 10 分钟,则难度降低。

这个公式可以概括为:新难度值=旧难度值×(过去2016个区块花费的时间/20160分钟)

工作量证明需要有一个目标值。比特币工作量证明的目标值(Target)计算公式:目标值=最大目标值/难度值

其中最大目标值是一个常数值:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

目标值的大小与难度值成反比。比特币工作量证明的实现是矿工计算的区块哈希值必须小于目标值。

3.PoW 进程

比特币 PoW 的过程可以简单理解为使用不同的 nonce 值作为输入,尝试进行 SHA256 哈希运算,找到满足给定数量的前导 0 的哈希值的过程。需要的前导零越多,难度就越大。比特币节点解决工作量证明问题的步骤大致可以概括如下:

1) 生成一个铸币交易,并与所有其他需要打包进区块的交易形成交易列表,通过默克尔树算法生成默克尔根哈希;

2)将Merkle根哈希等相关字段组装成块头,将块头的80字节数据作为工作量证明的输入;

3)不断改变块头中的随机数,即nonce的值,每次改变后对块头进行双SHA256运算(即SHA256(SHA256(Block_Header))),比较结果值与当前网络的目标值进行比较。如果小于目标值,则问题成功解决,工作量证明完成。

比特币的工作量证明是通常被称为“挖矿”的主要工作。

4.PoW 能解决拜占庭将军问题吗?

比特币 PoW 共识机制能否解决拜占庭将军问题,在业内一直存在争议。2015 年,Juan Garay 对比特币的 PoW 共识算法进行了形式化分析,得出的结论是比特币的 PoW 共识算法是一种概率拜占庭协议(Probabilistic BA)。Garay 对比特币共识协议的两个重要属性的分析如下。

1)协议

当不诚实节点的总算力小于 50%,且每轮生成同步块的概率很小时,诚实节点拥有相同块的概率很高。用严格的数学语言来说,应该是:当任意两个诚实节点的本地链截取 K 个节点时,剩余两条链的头块不同的概率随着 K 的增加呈指数下降。

2) 有效性

大多数区块必须由诚实节点提供。严格来说,当不诚实的算力非常小时,大部分区块可以由诚实节点提供。

由此可见,当不诚实的算力低于全网算力的50%,且挖矿难度较高时,10分钟左右出块时,比特币网络的概念达到一致性将跟随确认区。块的数量呈指数增长。但是当不诚实的算力有一定规模,甚至不接近50%时,比特币的共识算法就不能保证正确性,即不能保证大部分区块都是由诚实节点提供的。

因此,我们可以看到比特币的共识算法并不适用于私有链和联盟链。原因是它是最终共识共识算法,而不是强共识共识算法。第二个原因是它的共识效率低。提供共识效率将牺牲共识协议的安全性。此外,比特币通过巧妙的矿工奖励机制增强了网络的安全性。矿工通过记账获得比特币挖矿奖励和交易手续费,让矿工更愿意维护网络的正常运行,任何破坏网络的不诚实行为都会损害矿工自身的利益。因此,即使一些比特币矿池拥有强大的计算能力,他们也没有作恶的动机,

PoW 机制存在明显的缺陷。一方面,PoW 的前提是节点和算力均匀分布,因为投票是基于 CPU 的算力,所以钱包(节点)的数量和算力值要大致匹配。但是随着人们挖矿CPU挖矿逐渐升级到GPU、FPGA,直到ASIC矿机挖矿,节点数量和算力逐渐不匹配。另一方面,PoW 太浪费了。比特币网络每秒可以执行数百万亿次 SHA256 计算,但这些计算除了使恶意攻击者无法轻易伪装成数百万个节点并破坏比特币网络之外,几乎没有实际或科学价值。当然,与允许世界上任何人通过去中心化和半匿名的全球货币网络即时向他人转账而带来的巨大好处相比,它的浪费可能很小。价格。

鉴于此,提出了权益证明(PoS)。

五.POS:权益证明,权益证明。

PoS 类似于存储在银行中的财产。该模型会根据您持有数字货币的数量和时间为您分配相应的利息。

简而言之,它是一个根据您持有的货币数量和时间向您支付利息的系统。在 PoS 的 PoS 模型中,有一个术语叫做币龄,每个币每天产生 1 个币龄。有100个硬币,总共持有30天。那么,你的币龄为3000。此时,如果你发现一个PoS区块,你的币龄将被清为0。每清空365个币,你将获得0.05个感兴趣的币。块(假设利息可以理解为年利率5%),那么在这种情况下,利息= 3000 * 5% / 365 = 0.41个币,这个很有意思,持币有利息.

Peercoin 是第一个使用权益证明的货币。Peercoin从SHA256哈希运算的难度方面引入币龄的概念,使得难度与交易输入的币龄成反比。在 Peercoin 中,币龄定义为币龄与币龄的乘积,使币龄能够反映用户在交易时刻所拥有的币量。事实上,Peercoin 的权益证明机制结合了随机化和币龄的概念。至少 30 天未使用的币可以参加下一个区块的竞争。硬币组越长越大,就越有可能签署下一个区块。堵塞。

然而,一旦一个币的权益被用来签署一个区块,币龄将被重置为零,因此需要至少等待 30 天才能签署另一个区块。同时,为了防止非常古老或非常大的利益控制区块链,找到下一个区块的最大概率在 90 天后达到最大值,这个过程保护了网络并随着时间的推移逐渐产生新的硬币而不消耗大量的计算能力。Peercoin 的开发人员声称这将使恶意攻击变得困难,因为没有集中式矿池要求,并且购买超过一半硬币的开销似乎超过了获得 51% 工作量证明所需的哈希能力。

权益证明必须以某种方式定义任何区块链中的下一个合法区块,并且基于账户余额进行选择将导致中心化,例如,单个最富有的成员可能具有长期优势。为此,已经设计了其他不同的方法来选择下一个合法块。

PoS 机制虽然考虑到 PoW 的不足,但基于权益余额的选择会导致首富账户的权力更大,并可能主导记账权。委托权益证明(DPoS)机制的出现是基于解决PoW机制和PoS机制的不足。

六.DPOS:委托权益证明

Bitshare 是一类采用 DPoS 机制的加密货币,该机制期望通过引入技术民主层来减少中心化的负面影响。

比特股的DPoS机制,中文名称为股份授权证明机制(也称受托人机制),其原理是让每个持有比特股的人都可以投票,产生101个代表,我们可以理解为101个超级节点或矿池hC币哪个矿池能挖,这101个超级节点的权利是完全平等的。从某种角度看,DPOS有点像议会制或人大制。如果代表未能履行职责(轮到他们时,未能生成块),他们将从列表中删除,网络会选举新的超级节点来替换它们。DPOS的出现主要得益于矿机的产生。不了解或不关心比特币的人使用了大量的计算能力。类似于演唱会的黄牛,

比特股引入了见证人的概念,见证人可以产生区块,每个持有比特股的人都可以投票给见证人。The top N (N is usually defined as 101) candidates from the total number of votes in favor can be elected as witnesses, and the number of elected witnesses (N) must satisfy: at least half of the participants believe that N 就足够了。去中心化的。

每个维护周期(1 天)都会更新候选见证人列表。然后随机安排证人。每个见证人有 2 秒的权限依次生成区块。如果见证人在给定的时间片内无法出块,则出块权限将移交给下一个时间片对应的见证人。. 这种 DPoS 设计使区块生成更快、更节能。

DPoS充分利用股东的投票,以公平、民主的方式达成共识。他们投票选出的N个见证人可以看成是N个矿池,这N个矿池的权利是完全平等的。股东可以随时投票更换这些见证人(矿池),只要他们提供的算力不稳定,电脑宕机,或者他们试图利用自己的权力作恶。

BitShares 还设计了另一种类型的活动,即代表活动。Elected delegates have the privilege to propose changes to network parameters, including transaction fees, block size, witness fees, and block intervals. 如果大多数代表同意提议的变更,股东有两周的审查期,在此期间他们可以取消代表并取消提议的变更。这种设计保证了代表在技术上无权直接修改参数,并且所有网络参数的改变最终都需要股东的同意。

七.波纹共识算法。

瑞波币(Ripple)是一种基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付和清算功能。在 Ripple 的网络中,交易由客户端(应用程序)发起,并通过跟踪节点或验证节点广播到整个网络。跟踪节点的主要功能是分发交易信息和响应客户的账本请求。除了跟踪节点的所有功能外,验证节点还可以通过共识协议将新的账本实例数据添加到账本中。

Ripple的共识发生在验证节点之间,每个验证节点都预先配置了一个可信节点列表,称为UNL(Unique Node List)。列表上的节点可以对交易完成进行投票。每隔几秒钟,Ripple 网络就会经历以下共识过程:

1)每个验证节点都会不断收到网络发送过来的交易。与本地账本数据验证后,直接丢弃非法交易,将合法交易聚合成候选集。交易候选集还包括先前共识过程中遗留的无法确认的交易。

2)每个验证者将自己的交易候选集作为提案发送给其他验证者。

3)验证节点收到其他节点的提议后,如果不是来自UNL上的节点,则忽略该提议;如果是来自UNL上的一个节点,它将提案中的交易与本地交易候选集进行比较,如果有相同的交易,则该交易获得一票。在一定时间内,当交易获得超过 50% 的选票时,交易进入下一轮。不超过 50% 的交易将留给下一个共识过程来确认。

4)验证节点将得票超过50%的交易作为提案发送给其他节点,同时将所需票数的阈值提高到60%,重复步骤3)和4)@ > 直到阈值达到 80%。

5)验证节点正式将80%的UNL节点确认的交易写入本地账本数据,称为Last Closed Ledger,即账本的最后(最新)状态。

上图是Ripple共识过程中节点交互示意图

4)0@>

上图为瑞波共识算法流程

在 Ripple 的共识算法中,参与投票节点的身份是预先知道的。因此,该算法的效率比 PoW 等匿名共识算法的效率更高,交易确认时间仅需几秒。当然,这也决定了共识算法只适用于许可链场景。Ripple共识算法的拜占庭容错(BFT)能力为(n-1)/5hC币哪个矿池能挖,即在不影响正确共识的情况下,可以容忍全网20%的节点出现拜占庭故障。

以上主要是目前主流的共识算法。但是哪种共识机制更好或更替代?我认为 DPOS 不太可能单独取代 POW、POS 或 POW+POS。毕竟,存在是合理的。每种算法在特定的时间段和场景下都有自己的意义,无论是技术还是业务。如果超越技术人员的视角,融入更多结合政治和经济的思维方式,可能会出现更多的共识机制。

对于算法的选择,一句话总结如下:

“在区块链网络中,由于应用场景不同,设计目标不同,不同的区块链系统使用不同的共识算法。一般来说,在私有链和联盟链的情况下,一致性、正确性有很强的要求“一般来说,应该使用强一致性的共识算法。在公链的情况下,通常不可能做到100%的一致性和正确性,通常使用最终一致性的共识算法。”

通俗点是:共识算法的选择与应用场景高度相关,可信环境使用paxos或者raft,有权限的联盟可以使用pbft,非授权链可以是pow、pos、ripple等共识。 ,根据交易对手的信任等级,自由选择共识机制。

评论:

本文转载自博客园主主的博文《区块链共识算法之争(PBFT、Raft、PoW、PoS、DPoS、Ripple),感谢主的分享。