首页 >> 大全

PoK信誉证明:一种新的共识联盟链机制

2023-12-14 大全 29 作者:考证青年

PoK信誉证明:一种新的共识联盟链机制 摘要

在基于区块链的系统中,参与者可能是恶意的。因此,这项⼯作⾸先描述了系统中预期的⼏个属性,其中相关⽅的诚实⾏为对成功起着重要作⽤。考虑到这些特性,基于节点的信誉(动作)提出了⼀种新的共识机制,即信誉证明(PoK)。 PoK 结合了基于信誉得分的⾃稳定领导⼈选举算法,以确保系统的⼀致性。在 PoK 中,新节点和现有节点都有公平的机会通过成为领导者并向区块链添加有效区块来赚取利润。

PoK 给予激励并施加惩罚以⿎励和阻⽌节点的诚实和恶意⾏为。 PoK 是根据 CAP 定理分析的。这项⼯作提供了安全分析,以证明 PoK 对各种区块链特定攻击和信誉特定攻击的抵抗⼒。

引言 区块链确保透明度和数据完整性,减少欺诈和数据篡改,并促进业务审计,通过消除中间人和数据守门人,可以快速的追踪产品和交易。区块链 点对点分布式账本每个块包含前一个块的不可逆哈希(通过哈希指针连接)每个网络节点维护一个账本副本 区块链共识步骤 根据某些标准或规则选择一个节点作为领导者或矿工领导者或者矿工验证交易,合法交易打包在区块中并发布到网络其他节点验证该区块流行的共识机制 工作证明(PoW)堆栈证明(PoS)实用拜占庭容错(PBFT)权威证明(PoA) 概率共识机制 PoW和PoS,不保证系统的完全一致性 提供一定概率的最终一致性 选择领导者时 只考虑瞬时计算能力或参与者的股份数量没有考虑到参与者的恶意行为 恶意矿工可能会引入很多问题 不一致、延迟问题包括除了交易吞吐量低、能耗高、一致性弱、可扩展性低这些和PoW相关的其他重要问题 概率共识机制通常用于公共和无需许可的区块链 这引起了公共和无许可区块链中的治理、隐私和可扩展等几个问题使得有上述问题的区块链不适合构建联盟业务模型这样的系统 拜占庭容错的共识机制(BFT) 未经当局许可任何人不得进入系统大多数BFT的共识机制用循环方式选择领导者(矿工) 无论过去行为如何都会有平等的机会成为领导者不激励领导者 基于行为的共识机制 根据节点的行为选择节点作为领导者或矿工当节点在系统中表现出预期行为,就认为是诚实的最常用的诚实行为的方法是通过信任和声誉 大多基于信誉的共识机制建立在概率共识机制上选择缺乏公平性 先选出一批声誉最高的参与者作为共识组的一部分然后从组中选择一个作为矿工限制了新参与者成为矿工的机会,导致不公平竞争 削弱了去中心化特性 我们提出的共识机制 各方的诚实行为对于取得成功至关重要引入了基于行动的共识机制(信誉证明)信誉 好的或坏的行为决定个人未来生存模式的普遍因果法则 给予每个节点成为领导者的公平机会 降低其信誉惩罚恶意节点增加诚实节点的信誉分数 引入了部分块和完整块的概念 维护一致和正确的区块链状态,跟踪有效交易 创新 描述了此类系统中共识机制中预期的十个属性PoK结合了基于信誉得分的自稳定领导人选举算法,确保系统的一致性实现了共识的最终性、去中心化和公平性,优于现有工作 理想属性

代表参与者诚实行为的最常用方法之一是通过区块链中的信任和声誉管理模型

在我们的工作中,声誉似乎不是代表系统中参与者的行动、行为的恰当术语

他们正在参与实现共同目标而不是出于自生利益,因此我们创造了一个新词“信誉值”

这个值决定他们在联盟区块链中的存在和角色。

信誉分数必须反应参与者的行为 共识机制应该计算联盟中每个节点的信誉值,它必须反映节点的行为由于多方对业务的成功负责,因此应考虑参与者的意见来计算分数高分数应当表明诚实的行为和获得奖励的更好机会 信誉分数必须反映过去和现在的动作/行为 应该随着节点的行为对分数做出相应的修改 信誉分数变化的速度必须是敏感的 参与节点的信誉应该对其行为敏感敏感度代表分数的变化如果参与节点不诚实行事,分数会呈指数下降 必须惩罚恶意行为 必须通过强制执行一些惩罚来强烈组织节点的恶意行为 降低分数金钱惩罚 诚实行为必须得到奖励 鼓励参与者提高他们的信誉分数奖励包括 信誉分数增加货币奖励 默认信誉分数不得优先/惩罚新参与者 给新参与者一个默认的分数 系统应该区分参与者的寿命 参与节点可能会呈系统中移除自己在执行不良行为之后以新身份重新进入系统不允许隐瞒过去的不良行为 系统应确保去中心化 是区块链技术的重要预期特性之一 这就是为什么共识机制应该设计为以去中心化的方式控制系统这意味着共识机制有助于维护系统的去中心化属性 领导者选举算法应该是公平的 系统公平性 系统的权利和责任应该分布在所有实体之间,使得没有一个实体可以控制整个系统并且民主运行 算法公平性 节点都诚实的完成自己的工作,并且每个节点有相同的概率被选为领导者否则成为领导者的可能性取决于信誉 领导者选举算法应该是自稳定的 保证在有限的时间内只选举一个节点作为领导者有利于提高系统一致性,提高系统效率 系统模型 由n个节点组成

P i P_i Pi​

代表的是第i个节点

i d i id_i idi​

代表第i个节点的id 交易 我们给出以下交易模型

T X i A p p = < a i , t a i , d s i ( a i , t a i ) > TX_i^{App} = ​= 都是与第i个a相关的信息是应用程序的时间戳

t a i ta_i tai​是数字签名

d s i ds_i dsi​交易费用将与每个应用程序交易相关联。领导者赚取与应用程序交易相关的交易费用,作为将其纳入有效区块的奖励 量化交易的行动 领导人 验证应用程序事务通过包括合法事务创建部分块网络中发布部分块 其他节点 创建验证事务,验证部分块创建评级事务,对节点评级 交易格式 格式如下

T X i V a l = < v i , i d i , d s i ( v i , p i ) > TX^{Val}_i = ​=验证位

v i {v_i} vi​节点执行的评级事务如下

T X i R a t e = < r i 0 , r i 1 , . . . , r i ( n − 1 ) , i d i , d s i ( r i 0 , r i 1 , . . . , r i ( n − 1 ) , p i ) > TX^{Rate}_i = ​=r代表n-1个节点的评级,有一个节点无法评级,因为不能对自己评级 事务处理池 在系统中,每个节点维护两种类型的事务池 应用程序事务池(ATP)验证和评级事务池(VRTP) ATP用于存储应用程序事务VRTP用于存储验证和评级事务节点需要将区块提交到区块链时,会删除最近提交的区块的所有验证和评级事务来使VRTP为空 区块 创建和提交区块会选举新领导者 在此过程中提出了部分块(PB)和完整块(CB)的概念 领导节点通过从ATP中包含合法的应用程序事务来创建部分块部分块包含四个东西 领导者的id一定数量的合法应用程序事务

T X A p p TX^{App} TXApp创建时间戳领导者的数字签名领导者通过数字签名验证上面四个东西 完整块 节点从领导者处接收到部分块从其他节点处接收到该部分块的所有验证和评级事务用以上东西创建一个完整的块完整块包含 块ID部分块部分块的类型 按照节点id递增对节点进行验证事务

T X V a l TX^{Val} TXVal按照节点id递增顺序对节点评级交易

T X R a t e TX^{Rate} 更新所有节点的信誉分数 Ks 上一块的哈希上一个有效块的哈希

区块创建和承诺 创建一个完整的块流程 首先创建一个部分块,在网络中传播它然后等待2个最远节点发送消息所需时间

2 T m a x 2T_{max} 2Tmax​节点收到部分块,验证存储在部分块中的事务的合法性 节点创建验证事务通过设置验证位 如果部分块有效,给第i个v设置1,否则设置为0

v i {v_i} vi​节点创建评级交易,对其他节点进行评级节点在网络中广播这两个事务 节点无权对自己评级 广播之后等待两个Tmax来获取其他节点创建的验证和评级事务 每个节点都应该得到网络中所有节点创建的验证事务和评级事务没有得到全部的事务,会要求节点发送未获得的事务 当节点获得全部事务时合成完整块需要 部分块所有的评级事务和所有的验证事务更新过的信誉分数前一个块的哈希()和前一个合法块的哈希() 有效的部分块 当满足以下共识,节点认为是有效部分块

( ∑ i = 1 n v i ) ≥ ( ⌊ n / 2 ⌋ + 1 ) (\sum^{n}_{i = 1}v_i)\geq(\ n/2 \ + 1) (∑i=1n​vi​)≥(⌊n/2⌋+1) 这意味着大部分的验证事务第i个v等于1把设置为1 否则节点认为是无效的块,将设置为0由于部分块有可能有效有可能无效,所有我们存储两个哈希值,和有效块具有有效部分块,无效块具有无效部分块 无效区块用来维护与信誉分数相关的历史,这在商业模式中是必要的

为了防止恶意节点提交 创建一个完整块后,节点使用算法找到块的哈希值广播哈希值,并等待从其他节点获得完整块的哈希值,获取所有哈希之后,比较它们如果至少[n/2]+1节点创建相同的哈希,所有节点提交块如果提交的CB包含有效PB 则每个节点从其本地ATP中删除PB中添加的应用程序事务每个节点还删除VRTP中关于所提交块的夙愿评级和验证事务 信誉评分计算 更新的信誉分数是通过使用其他节点的评级及其当前信誉分数计算的 只考虑决定了节点的评级在集合M中有x个节点(x > n - x)对做出了相同想决定评级的权重基于节点信誉分数来计量的临时信誉分数和当前信誉分数

K s i c u r r e n t Ks^{}_{i} ​

K s i t e m p Ks^{temp}_{i} ​计算临时信誉分数公式

K s i temp = ∑ ∀ j ∈ M & j ≠ i ( K s j Σ ∀ j ∈ N & j ≠ i K s j × r i j 10 ) K s_i^{\text {temp }}=\sum_{\ j \in M ~ \& j \neq i}\left(\frac{K s_j}{\{\ j \in N \& j \neq i} K s_j} \times \frac{r_{i j}}{10}\right) ​=∑∀j∈M&j=i​(Σ∀j∈N&j=i​Ksj​Ksj​​×10rij​​)更新的信誉分数公式

K s i = { min ⁡ ( K s i + Δ r , 1 ) if K s i temp ≥ T h min ⁡ ( K s i , K s i temp ) 2 if K s i temp < T h K s_i^{\text { }}=\left\{\begin{array}{l}\min \left(K s_i^{\text { }}+\Delta r, 1\right) \text { if } K s_i^{\text {temp }} \geq T h \\ \frac{\min \left(K s_i^{\text { }}, K s_i^{\text {temp }}\right)}{2} \text { if } K s_i^{\text {temp }}​={min(​+Δr,1)​≥(​,​)​​非前导节点 领导人选举 选举算法中运用到的一些术语和变量

Table(FT):一个二维数组,第一行按递增顺序保存节点id,第二行保存节点对应频率值

频率值

f r i fr_i fri​频率值计算公式

f r i = [ K s i ∑ k = 0 n − 1 K s k × n × 100 ] f r_i=\left[\frac{K s_i}{\sum_{k=0}^{n-1} K s_k} \times n \times 100\right] fri​=[∑k=0n−1​Ksk​Ksi​​×n×100]

-based Array of IDs(FA):长度为S的一维数组

S计算方式

S = ∑ i = 0 n − 1 f r i S = \sum ^{n - 1}_{i = 0} fr_i S=∑i=0n−1​fri​数组中每个节点ID被放置的次数与频率一样多表示节点的ID的基于频率的阵列

创建源区块时,需要手动设置选择一个节点设置为领导者

por信誉共识算法_信誉共享机制_

节点的三种状态

Null 选举期间,每个节点都将状态设置为Null 领导者状态为 Non- 其余没被选上的节点状态为Non-

流程

刚开始有一个节点设置状态为Null它根据每个节点的信誉分数计算每个节点ID的频率,放入节点i的FT基于FT创建节点i的FA,之后查找最近提交块的哈希()using 将哈希转换为十进制并存储在变量中

v a r i var_i vari​然后节点获取索引值

i d x i idx_i idxi​ 索引值为变量mod S 最后id位于节点i的FA中的索引中的变量被选为领导者选举过程是在提交区块链的CB之后开始的,因此每个节点都在相同的数据上本地执行选举,并将相同的节点标识为最后本地计算的的ID相同的节点创建一个当选节点声明消息(El)其中El是领导者的id,并发送给所有节点,确认是否统一 统一就存储在各自的Lid中如果不统一就创建投诉消息,发送给所有节点调查不一致性不一致性以两种方式发生 一个节点谎称自己是领导者一个节点创建针对另一个节点的虚假投诉消息 投诉消息 包括被投诉人的ID、投诉位、投诉消息发送者的数字签名 需要投诉投诉位就设为1 所有接收到投诉消息的节点,创建一条保留ID的投诉消息 如果接受el作为将投诉位设置为0如果不接受,每个节点发送一个针对El的投诉消息每个节点可以通过消息中的投诉位观察其他节点意见来识别恶意节点,并在下一轮中减少信誉分领导者选举算法

复杂性分析

ID与本地匹配的节点创建一个选定的节点声明消息,发送给所有节点 需要O(n)交换消息需要O(d)的时间,d是网络时间 之后,领导者创建一个部分块,并发送到所有节点 需要O(n)交换消息需要O(d)的时间 节点获得部分块,创建验证事务和评级事务,发给所有其他节点 O(n²)的消息交换O(d)的时间 最后每个节点在本地创建完整块,与其他节点共享完整的哈希 通过交换实现哈希共享,时间O(n²)O(d)时间

论点:选举算法每次只选举一个

证明 Sel表示一组选定的节点,只需要证明选举结束|Sel| = 1每当一个块被提交,每个节点都会开始选举并设置状态为NULL 所以|Sel|刚开始为0 由于每个节点对相同的数据进行操作,因此他们的FA都相同因为的确定性特性,哈希值相同,因此索引值也相同idx所以FA[idx]相同,被选为的节点将状态从Null改为成为Sel的一个元素并广播El,其他节点都改为Non-,因此选举结束后只有一个元素

论点:每次选举,所有节点都会了解所选节点,并与所选节点达成一致

证明 每当节点收到El消息,比较本地计算的 ID如果相同,节点会通过将El存储到Lid来接受如果不同,创建一条投诉消息,发送给其他节点调查不一致性

论点:领导人选举算法在有限的时间内终止

选举开始时,每个节点使用存储在最近提交的块的信誉分数构造FT和FA 需要O(n)+O(100n)的时间 之后每个节点使用找到最新提交块的哈希值,在FA中保留所选节点ID 都在有限时间内 假设网络直径d,单位时间c(常量),需要从一个节点向相邻节点发送选举消息 最大时间为O(cd)最差情况下d = n - 1,所以d < n,n是有限的,所以时间有限

定理1:领导人选举算法是自稳定的选举算法

论点1证明了定理1的唯一性论点2证明了定理1的一致性论点3证明了定理1的终止性

定理2:所提出的算法是一个公平的领导人选举算法

如果成为系统领导者的概率和它的信誉分数成正比这个算法就是公平的prob代表选为领导者节点的概率

prob ⁡ i = f r i ∑ x = 0 n − 1 f r x ; p r o b i = K s i ∑ k = 0 n − 1 K s k × n × 100 ∑ x = 0 n − 1 ( K s χ ∑ k = 0 n − 1 K s k × n × 100 ) ; \{prob}_i=\frac{f r_i}{\sum_{x=0}^{n-1} f r_x} ; p r o b_i=\frac{\frac{K s_i}{\sum_{k=0}^{n-1} K s_k} \times n \times 100}{\sum_{x=0}^{n-1}\left(\frac{K s_\chi}{\sum_{k=0}^{n-1} K s_k} \times n \times 100\right)}; probi​=∑x=0n−1​frx​fri​​;probi​=∑x=0n−1​(∑k=0n−1​Ksk​Ksχ​​×n×100)∑k=0n−1​Ksk​Ksi​​×n×100​;

定理3:如果一个系统由n个节点组成,所提出的共识机制可以忍受[(n-1)/2]拜占庭节点故障

在提出的共识机制中,基于最近提交节点的信息领导者创建一个PB,基于验证事务决定PB的类型 系统有n个节点,需要(n/2 + 1)个节点相同的选择来决定意味着系统至少需要这么多个非恶意节点 最后每个节点本地创建CB,共享完整hash 基于CAP定理的POK分析的证明 CAP定理代表三个属性 一致性C可用性A分区容限P CAP定理指出一个分布式数据存储系统最多确保两个属性区块链是基于对等网络(分布式数据存储)论点4:如果所考虑的网络没有被分割,POK的证明满足一致性 证明 当避免分叉时,可以保证一致性 分叉:多个节点同时获得创建块的权限 系统中只有领导者可以创建块,直到提交之前其他节点都不能创建块 论点5:如果考虑的网络没有被划分,那么POK证明满足可用性属性 证明 根据系统模型节点总数是有限的,所以网络的直径也是有限的因此系统中的事务以块的形式永久添加到链中 定理3:如果网络没有分区,信誉证明满足CAP定理的一致性和可用性性质 如果没有划分,论点4证明POK满足一致性,论点5证明POK满足可用性 定理4:如果网络分区,POK满足一致性,不满足可用性性质 如果从t1时间开始划分,则从论点4得知在t1之前都是满足一致性,每个节点包含相同的链块t1之后,POK中一个节点获得来自其他所有节点的事务和哈希会添加一个新块,如果网络被分区,则节点拥有不会从所有节点得到完整块的哈希,这就是为什么一个节点无法在网络分区后的链中添加新块一致性得到满足,可用性得不到满足在本次工作我们考虑有n节点组成的分布式联盟系统,网络不是很大,在这种系统中一致性和可用性比分区容差属性更关键

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了