对于公证人模式的跨链,X链能够带来哪些突出的特点

2024-02-04 08:10

本文主要是介绍对于公证人模式的跨链,X链能够带来哪些突出的特点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、X链Canal

当前一些知名的区块链项目,采用了不同的模式实现了跨链,比如Cosmos和波卡链采用了中继模式,瑞波(ILP)协议采用了公证人模式。公证模式一直被人批判过于中心化,造成这个的主要原因是公证特别少,公证人模式大部分是用于非链的模式下两个系统的相互交互或交易所模式,这样设计公证人模式由于节点特别少,中心化程度肯定高。这样的化必然会引入拜占庭容错算法去保证整个流程的有效性,对于跨链模式来说,并不能像比特币一样要10000万个节点去承担公证这种角色,实际上也不现实,这样也违背了三角理论,从三角理论来看,所谓的区块链“不可能三角”,也称为“三元悖论”,通常是指区块链系统无法同时兼顾去中心(Decentralization)、可扩展性(Scalability)、安全性(Security),至多只能三者取其二。是否有一种新的机制能够让少部分公证人验证每笔交易?足够多的节点来验证每笔交易系统必然安全,但又不能并行处理更多的交易。针对以上的情况,X链在这些基础上对公证人模式进行了一些改进,让公证人并不是中心化的公证人模式也能够快速验证交易的有效性。

二、怎样有效防止公证人过于中心化问题

依据三角理论系统安全提高的同时可扩展性和性能必然受限 。一般的做法是采用DPOS的方式,DPOS的方式会导致公证人权益过于集中,有没有一种方法,既能满足性能和扩展的同时,也能保证公证人权益不过于集中呢?这些都是值得深思的问题,X链对于公证人模式做了如下改进,对公证人节点进行随机分组,按照一定周期打乱公证人所在的组,这样公证人能并不知道自己什么时候能够参加交易的验证,这样有效的保证了公证人过于中心化的问题。原理架构如下图所示:

三、随机数怎样产生?

需要在保证公平性的前提下,保证公证人分配的随机性。

  • 公平性:每一个有效的公证人都有相同的概率被选中。
  • 随机性:单次分配结果随机且无法预测。

VRF简介

X链Canal的公证人产生使用VRF(Verifiable Random Function)算法来产生随机数,VRF 原理示意如下:

图 VRF 原理图

VRF算法过程如下:

  • 产生一对非对称密钥对(PK,SK):验证密钥PK(公钥)和SK(私钥)。
  • 生成可验证证明Proof。
  • 使用密钥SK对消息Entropy进行签名生成Proof,对于不同的密钥对(PK,SK)无法生成一样的Proof,所以输出的Proof是唯一的,并且具有无法伪造和抵赖性。由于每个生成的密钥对不同,Proof具有一定随机性。
  • 验证Proof。验证函数输入为消息Entropy、证明数据Proof、公钥PK,计算输出结果true/false,结果为true表示验证通过否则表示失败。Verify证明了Proof是否由密钥对(PK,SK)对消息Entropy生成。
  • VRF随机数产生。通过VRF过程Verify结果为true后,依据Proof的随机性,随机数Rand的产生就仅需对Proof进行Hash计算即可。

附加权益的BLS机制

一般情况下,基于所有公证人签名的随机数才具有唯一性。假设公证人集{1 2 3 4},则必须要他们共同签名,若4节点发生故障,则会导致随机数无法产生。如果仅使用其中3个节点签名,则无法确保随机数的唯一性,实际签名结果会有如下四种组合:{1 2 3}、{2 3 4}、{1 3 4}、{1 2 4}。由于私钥(Ed25519签名机制)不同,所以这四组签名结果也不一样,导致其产生的随机数也不同。

Orbits 使用阈值BLS[16][17]签名算法来生成随机数,原因如下:

  • 保证签名的唯一性。,通过BLS签名算法对前组签名进行再次签名的方式实现,其中BLS签名作为阈值多签签名,有其唯一性特性。BLS签名算法中,验证组签名成员数大于阈值,即可生成当前组唯一性签名。比如验证组有10人,其中6人签名即超过阈值,可生成这个组唯一的签名。
  • 签名存储空间需求小。若一个区块中有1000笔交易,每笔交易都有独立的公钥Pi、签名Si以及交易内容mi。如需知道区块中的交易签名是否正确,传统方法是对区块中交易进行依次验证签名,区块中需要存储所有交易的签名。而使用BLS算法进行签名的合并后,则只需要存储一个33个字节的BLS签名。合并签名的结果是:

验证过程是:

证明过程如下:

从证明过程可见,主要是原理是使用e函数交换规则。

为增强公证人安全性,BLS机制采用了附加权益方式。BLS 服务组属于公证人集,通过PoS方式缴纳质押金,押金在BLS 服务组存续期间不得转出。如果在BLS 服务组到期之前,申请提前退出,则扣除部分押金。如在BLS服务过程中作恶则扣除作恶者全部押金。BLS服务没有到期前,不能转走押金。

四、怎样让公证人愿意作为验证参与交易的验证?

无论是联盟链或是公链的模式下,每个跨链跨链交易在整个过程中都会产生成本费用,即每笔跨链交易公证人会分到这笔交易的手续费,而且涉及到跨链的手续费用比单独在一条链上获得的收益要高,这样公证人更愿意参与,考虑到部署成本和硬件的需求,X链的公证人节点采用的是单链的验证节点,这样验证节点不仅能够分到本身链的奖励还能够获得跨链交易的奖励。

通过以上的论述,X链在公证人模式下设计跨链,并不是单存的增加几个节点做公证人,而是通过随机混洗的算法,让公证人无法知道自己属于那一笔跨链交易的验证人,这样破除了公证人联合作恶的问题,也解决了公证人过于中心化的问题,X链的公证人模式相对于其它的公证人模式来说应该更安全,欢迎大家评论和转载。

这篇关于对于公证人模式的跨链,X链能够带来哪些突出的特点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676848

相关文章

如何开启和关闭3GB模式

https://jingyan.baidu.com/article/4d58d5414dfc2f9dd4e9c082.html

十四、观察者模式与访问者模式详解

21.观察者模式 21.1.课程目标 1、 掌握观察者模式和访问者模式的应用场景。 2、 掌握观察者模式在具体业务场景中的应用。 3、 了解访问者模式的双分派。 4、 观察者模式和访问者模式的优、缺点。 21.2.内容定位 1、 有 Swing开发经验的人群更容易理解观察者模式。 2、 访问者模式被称为最复杂的设计模式。 21.3.观察者模式 观 察 者 模 式 ( Obser

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

有效利用MRP能为中小企业带来什么?

在离散制造企业,主流的生产模式主要为面向订单生产和面向库存生产(又称为预测生产),在中小企业中,一般为面向订单生产,也有部分面向库存和面向订单混合的生产方式(以面向订单为主,面向库存为辅),主要是应对市场需求的波动,对生产稳定性造成影响。 制定资源计划至关重要,但很多中小企业目前依赖人工、Excel表格等传统方式做各种记录、统计分析。时常会遇到: 生产任务无法统筹安排, 采购不及时, 订单

“人工智能+”带来新变化

以生成式人工智能(AIGC)为代表的新一代人工智能技术创新加速演进,相关商业化应用成果也不断涌现,行业应用范围不断拓展,深度赋能实体经济,为行业提质增效与实现减排提供助力。 自主航运初创公司OrcaAI于6月18日发布研究报告显示,通过在海上航行中部署人工智能(AI),全球商业航运业每年可减少碳排放4700万吨。报告指出,借助AI技术,船员将能够得到实时提醒,因近距离遭遇

Builder模式的实现

概念 在创建复杂对象时,将创建该对象的工作交给一个建造者,这个建造者就是一个Builder。在日常的开发中,常常看到,如下这些代码: AlertDialog的实现 AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setMessage("你好建造者");builder.setTitle

[分布式网络通讯框架]----ZooKeeper下载以及Linux环境下安装与单机模式部署(附带每一步截图)

首先进入apache官网 点击中间的see all Projects->Project List菜单项进入页面 找到zookeeper,进入 在Zookeeper主页的顶部点击菜单Project->Releases,进入Zookeeper发布版本信息页面,如下图: 找到需要下载的版本 进行下载既可,这里我已经下载过3.4.10,所以以下使用3.4.10进行演示其他的步骤。

《分析模式》“鸦脚”表示法起源,Everest、Barker和Hay

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》这本书里面用的并不是UML表示法。作者Martin Fowler在书中也说了,该书写于1994-1995年,当时还没有UML。作者在书中用的是一种常被人称为“鸦脚”的表示法。  有的同学会有误解,例如有同学发表以下感想: “鸦脚”表示法当然不是Fowler先使用的。F

设计模式学习之中介者模式

我们平时写代码的过程,一个类必然会与其他类产生依赖关系,如果这种依赖关系如网状般错综复杂,那么必然会影响我们的代码逻辑以及执行效率,适当地使用中介者模式可以对这种依赖关系进行解耦使逻辑结构清晰,本篇博客,我们就一起学习中介者模式。 定义及使用场景 定义:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其