当前位置: 首页 > news >正文

Polkadot - ELVES Protocol详解

ELVES (Endorsing Light Validity Evaluator System) 即 轻量级背书有效性评估系统, 是JAM的区块批准和审计系统.

该协议的总体思路是(VRF)随机选择一小部分初始审计员来重建和审计区块。如果存在相互矛盾的声明,或审计员缺席,则会为该区块分配更多审计员。

1. 角色

  • 全体审计员(即验证者): 约400个
  • 区块⽀持者: 一个区块一个
    • 审计员轮流担任新区块的⽀持者
  • 初始审计委员会: 约数十个
    • 使⽤ VRF 从全体审计员中选举出
  • 候补审计员
    • 有初始审计员未及时响应时,自动选一个新的替换
    • 如果发现区块无效, 则全员进行投票


图1: ELVES中的各类验证者角色

2. 运作

ELVES 如何运作?区块批准流程分为如下几个阶段:

  1. 支持阶段 – 支持者P验证并提议区块
    1. 支持者P使用重建阈值为审计员数量 1/3 ⽐例的Reed-Solomon 码对(区块)数据 m 进行编码,获得分片 (s1,...,sn)(s_1, . . . , s_n)(s1,...,sn), 并使用 Merkle 树对这些分片进行编码, 并计算从每个分片 sis_isi 到根的路径作为证明 πiπ_iπi . 并在主链中发布承诺(Merkle root) comcomcom
  2. 分发阶段 – 支持者将编码后的区块数据分发给所有审计员
    1. P 向各方 PiP_iPi 发送 (si,πi)(s_i , π_i)(si,πi)
    2. 各方 PiP_iPi 验证(P的签名和Merkle证明)通过后, 在主链上发布签名投票消息 viv_ivi
    3. 主链中出现超过 2/3 签名投票消息时, 即表示分发成功
  3. 批准阶段 – 使⽤ VRF 从全体审计员中选出一个初始审计委员会, 然后重建与审核区块
    1. 令 S 为输出签名投票的各方集合, 属于S的PiP_iPi 向 属于初始审计委员会的PjP_jPj 发送片段 (si,πi)(s_i , π_i)(si,πi)
    2. PjP_jPj 收集到 S 的各方片段后, 可按拉格朗日插值法重建出消息m, 并检查它的Merkle root是否为 comcomcom
    3. 向其它初始审计员广播签名后的赞同票/不赞同票 ViV_iVi
      1. 如果有审计员未及时响应时,会扩大初始审计员的规模
    4. 进入 4 或者 5
  4. 争议阶段 – 如果发现ViV_iVi为false, 会进入此阶段
    1. 所有验证者将进行拜占庭投票决定解决方案
    2. 最终结果为区块有效的话, 将惩罚投反对票的审计者, 之后进入 5
    3. 最终结果为区块无效的话, 说明支持者P作恶, 惩罚它, 然后结束
  5. 最终确定 – 只有在成功批准后,区块才会最终确定

image-20250503184952469

图2: ELVES的工作机制

附录

  • 论文 2024-961 : Jeff Burdges、Cevallos 等人在2024年提出的 ELVES 方案。该方案采用非冗余验证者分配策略,并将其与验证者参与的提议与审计博弈相结合。这一机制旨在清除和惩罚无效计算,同时确保一个网络的最终性状态依赖于所有因果相关的网络。

  • ELVES的支持, 分发与批准阶段


图3: ELVES的支持, 分发与批准阶段网络图


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列
http://www.dtcms.com/a/394051.html

相关文章:

  • springBoot图片本地存储
  • 蝉镜-AI数字人视频创作平台
  • Linux入门(五)
  • MySqL-day4_03(索引)
  • Vue 深度选择器(:deep)完全指北:从“能用”到“用好”
  • [Nodejs+LangChain+Ollama] 1.第一个案例
  • 设计模式2.【备忘录模式】
  • Spring Boot 入门:快速构建现代 Java 应用的利器
  • Redis 实例 CPU 飙高到 90%,如何排查和解决?
  • 中国女篮备战全运会,宫鲁鸣重点培养年轻核心
  • 【Qt】常用控件1——QWidget
  • 9.21关于大模型推理未来的思考
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘uvicorn’ 问题
  • 变分自编码器(VAE):生成模型的另一条技术路线
  • 【LVS入门宝典】LVS NAT模式实战指南:ip_forward、iptables与SNAT、DNAT规则配置详解
  • 【Android】BottomSheet的三种使用
  • Spring MVC 九大组件源码深度剖析(八):RequestToViewNameTranslator - 视图名转换的奥秘
  • 在Linux环境下安装和卸载DMETL5数据迁移工具
  • 《计算》第五六章读书笔记
  • daily notes[47]
  • 模电基础:放大电路的分析方法---图解法
  • Windows10系统Web UI自动化测试学习系列1--介绍(序章-万事开头难)
  • 安装vllm的艰苦过程
  • 探索 Event 框架实战指南:微服务系统中的事件驱动通信:
  • FPGA超高速接口GTP_GTY_GTX使用说明
  • Blender常用第三方插件总结
  • Kurt-Blender零基础教程:第2章:建模篇——第3节:陈列/父子级/蒙皮/置换修改器与小狐狸角色建模
  • npm启动项目报错“无法加载文件……”
  • 从 0 到 1 精通 Nacos:服务发现与配置中心的实战指南
  • 基于DrissionPage的趣易百影院数据采集实战指南