Polygon Miden zkRollup中的UTXO+账户混合状态模型

news2024/11/25 12:44:35

1. 引言

本文重点讨论Polygon Miden所设计的UTXO+账户混合状态模型,以实现某些有趣的属性。

Miden的目标是:【即越具有隐私性,其可扩展性越好】

  • 构建可扩展去中心化的rollup
  • 采用支持隐私的架构
    在这里插入图片描述

Miden支持灵活的交易模式:

  • 公开交易
  • 无状态交易
  • 私人交易
  • 本地交易
    在这里插入图片描述

2. 何为去中心化zkRollup?

常规zkRollup方案是:

  • L2用户将L2交易提交给operators
  • 由 operators将L2交易打包为区块
  • 由operators生成对应区块状态转换的ZK proof,并将该ZK proof提交给L1

在这里插入图片描述

去中心化zkRollup方案的:

  • 安全性继承自L1
  • 独立于L1的L2链,可有其自己的共识机制
  • 可有permissionless的operators集合

构建去中心化rollup的挑战有:

  • 1)共识机制
  • 2)execution bloat执行膨胀
  • 3)state bloat状态膨胀

本文重点关注执行膨胀和状态膨胀。

  • 所谓执行膨胀,是指网络需执行所有交易:

    • 产块者需执行某区块内的所有交易
    • 网络中的其它节点也需要重新执行该区块内的所有交易
      在这里插入图片描述
  • 所谓状态膨胀,是指状态大小随时间增长:

    • 节点需要全量状态来验证区块。
    • 节点需要全量状态来生成新的区块。
      在这里插入图片描述

3. Miden解决方案:UTXO+账户混合状态模型

执行膨胀和状态膨胀会带来如下问题:

  • 1)中心化问题:需要强大(如大磁盘大内存等)的机器来运行节点。
  • 2)缺少隐私性问题:网络中的每个人可看到链上发生的每笔交易细节。(Everyone sees everything)每个人都需要重新执行所有交易,并维护全量状态。
  • 3)不可持续性问题(not sustainable):永远增长的状态。其增长速度超过了单个硬件机器配置的增长速度。

为此,希望所构建的解决方案能:

  • 1)使执行膨胀最小化:即:
    • 所有交易(包括网络交易)仅执行一次:【ZKP可实现】
    • 可由不同的网络参与者并行执行交易:【要求并发状态模型】
    • 本地执行:对不影响 具有共享状态账户 的交易,其可在本地执行,并在本地证明:
      在这里插入图片描述
  • 2)使状态膨胀最小化:即:
    • 轻量验证节点:验证节点可丢弃绝大多数状态(即nullifier DB),无需维护全量状态即可验证区块:【ZKP可实现】
    • 动态裁剪:产块者可独立决定维护哪些状态,即,无需维护全量状态即可生成新的区块:【要求并发状态模型】
    • 由吞吐量驱动状态大小:状态大小主要依赖于当前TPS,而不是账户总数,也不是notes总数。
      在这里插入图片描述

在这里插入图片描述
当前的区块链状态模型主要有2大类:

  • 1)基于账户的状态模型:其具有如下特征:
    • 适于表达智能合约
    • 不太适于并行交易执行
    • 不利于匿名
  • 2)基于UTXO的状态模型:其具有如下特征:
    • 不太适于表达智能合约
    • 适于并行交易执行,各个UTXO是相互独立的。
    • 适于实现匿名

Miden借助 账户模型 + UTXO模型 + ZK proofs,来实现:

  • Actor-based model with concurrent off-chain state,即具备链下并行状态的、基于actor的模型。
    在这里插入图片描述

3. Miden的交易模型:actor-based model with concurrent off-chain state

常规的actor模型是指:

  • actors为具有“inboxes”的状态机
  • actors之间通过消息传递来通信
  • 消息的生成和消费是异步的

对应到Miden中的actor模型为:

  • 账户维护了 状态 + 对外暴露的(Miden VM程序)接口
  • 消息以notes来表示,notes中携带了 资产 + 花费该资产的“spend script”(为Miden VM程序)
  • 不同于以太坊中仅需要1笔交易来实现资产转移。由于消息的生成和消费是异步的,即意味着,当在2个账户之间转移资产时,需要2笔交易。
    • 1笔交易用于创建note。
    • 另1笔交易用于消费该note。
      在这里插入图片描述

3.1 Miden中的交易解析

与以太坊中的交易不同,Miden中的交易:

  • 总是仅包含一个账户,其无法关联更多账户
  • 消费0个或多个notes:通过执行某note的“spend script”来消费该note
  • 生成0个或多个notes
    在这里插入图片描述
    Miden交易执行的流程为:
    在这里插入图片描述
  • 通过执行note1的script来消费note1
  • note1的script会调用账户的接口函数(如receive()函数来接收资产,从而使得note1可将其资产传给)
  • 账户的函数可修改该账户的状态,并创建新的notes。
  • 重复以上流程来消费note2。note scripts会依次顺序执行。

3.2 Miden中交易的证明

由于Miden中的交易仅关联单个账户,因此看立即为交易生成ZK proof(Miden中采用STARK证明系统Winterfell):

  • 交易的正确执行可在单个STARK proof中证明
  • 所有交易的STARK proofs可并行生成
    在这里插入图片描述

3.3 Miden中区块的证明

在这里插入图片描述
在这里插入图片描述
基本流程为:

  • 对区块内的一堆tx proofs进行递归聚合,来获得batch proof
  • 然后再对batch proof进行递归聚合,来获得block proof
  • 最后对block进行递归聚合,来生成最终提交给L1的validity proof(如称为Epoch proof)

需注意的是:

  • 以上递归聚合流程可并行进行
  • 以上tx proofs可并行生成
  • 以上batch proofs可并行生成
  • 以上block proofs不可并行生成

在这里插入图片描述
还有一个很有趣的点在于:

  • tx proofs可在用户本地生成
  • batch proofs、block proofs、Epoch proofs需在网络中生成,如由产块者生成。

3.4 Miden中的本地交易和网络交易

传统的交易执行流程为:

  • prepare:为交易准备输入
  • execute:执行该交易
  • prove:为该交易生成证明
    在这里插入图片描述
    其中:
  • 网络交易中,由网络(如产块者)来执行交易并为该交易生成证明。
  • 本地交易中:由用户在本地:准备交易输入、执行该交易、为该交易生成证明。而:
    • 产块者不需要执行该交易,也不需要为该交易生成证明。
    • 产块者仅需要聚合该交易proof。
      在这里插入图片描述

本地交易和网络交易,这2种交易模式的对比情况为:
在这里插入图片描述

3.5 Miden中共享状态处理逻辑

以Uniswap(为具有共享状态的账户)为例,有多个账户与其交互,需对共享状态进行处理:

  • 2个用户独立执行交易tx1和交易tx2,分别创建了note1和note2。这2笔交易的目标都是uniswap account。
  • 产块者创建交易tx3,并执行交易tx3。交易tx3会消费note1和note2,然后输出note3和note4。note3和note4分别 以 其note1和note2的原始account为目标。
    在这里插入图片描述
  • 然后这2个用户独立执行交易tx4和交易tx5,来分别消费note3和note4。
    在这里插入图片描述

即:

  • 与具有共享状态账户 进行交互的交易,其必须为网络交易,而不能是本地交易。

4. Miden中的状态模型

Miden rollup中的状态主要分为3大类:

  • 1)account DB:存储所有账户的当前状态。以Spare Merkle tree作为数据存储结构,来将account IDs 映射到 account Hashes。不过Miden提供了2种不同的存储账户到数据库的方式:
    • 1.1)on-chain state链上状态:对于具有链上状态的账户,节点会存储该账户的整个状态。与以太坊的账户存储模式相同。
    • 1.2)off-chain state链下状态:对于具有链下状态的账户,节点仅存储该账户的哈希值。
      • 由用户自己来负责存储其账户的实际状态。

在这里插入图片描述

  • 2)notes DB:存储了目前为止所创建的所有notes。采用Merkle Mountain Range(MMR)数据结构来存储,为append-only accumulator。其叶子节点为某区块内所创建的一组notes。
    选择Merkle Mountain Range(MMR)数据结构的原因在于:
    • 即使丢弃了大多数节点,notes也可添加到MMR。
    • inclusion witness永远不会不新鲜,但其可能需要扩展。
      在这里插入图片描述
  • 3)nullifier DB:用于跟踪所有已消费的notes。采用Sparse Merkle tree作为数据结构来存储,用于映射note hash 到 0/1。其中1表示已消费,0表示未消费。nullifiers被组织成epochs,如4到6个月。实际有稍微更成熟的数据结构,即每个epoch共用一棵树,然后又创建新的树给下一epoch使用。节点仅需要维护最近2个epochs的nullifiers。
    在这里插入图片描述

由区块 n n n引起的状态变更示意为:
在这里插入图片描述
Miden状态增长驱动因素为:

  • 1)account DB:
    • 增长主要来源为:具有链上状态的账户数 的增加
    • 增长次要来源为:账户总数 的增加
    • 裁剪策略为:忽略链上账户数据,但保留这些账户的哈希值
  • 2)notes DB:
    • 增长主要来源为:未消费的public notes的数量 的增加
    • 增长次要来源为:未消费的notes数量 的增加
    • 裁剪策略为:忽略链上note数据
  • 3)nullifier DB:
    • 增长主要来源为:吞吐量(TPS) 的增加
    • 增长次要来源为:nullifier epoch长度 的增加
    • 裁剪策略为:无
      在这里插入图片描述

参考资料

[1] 2022年10月在哥伦比亚波哥大举行的DevCon 6中,Polygon Miden联合创始人Bobbin Threadbare分享的视频Using a Hybrid UTXO and Account-based State Model in a ZK Rollup by Bobbin Threadbare

Miden系列博客

  • zk、zkVM、zkEVM及其未来
  • Polygon L2扩容方案揭秘
  • 混合Rollup:探秘 Metis、Fraxchain、Aztec、Miden和Ola
  • Polygon Miden:扩展以太坊功能集的ZK-optimized rollup

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

No134.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

零基础Python经验体验代码检查工具

作者:yd_257945187 原文链接:零基础Python经验体验代码检查工具-云社区-华为云 1 开发小白自述 年初,我开始从java语言转战Python语言的开发,对于零基础python经验的人来说,要开发出高质量且安全性能高的Python 代码…

ElasticSearch - 基于 docker 部署 es、kibana,配置中文分词器、扩展词词典、停用词词典

目录 一、ElasticSearch 部署 1.1、创建网络 1.2、加载镜像 1.3、运行 1.4、检查是否部署成功 二、部署 Kibana 2.1、加载镜像 2.2、运行 三、部署 IK 分词器 3.1、查看数据卷目录 3.2、上传分词器 3.3、重启容器 3.4、测试 3.4、扩展词词典 3.5、停用词词典 一…

贝锐蒲公英异地组网:无需专线,也能解决无公网固定IP问题

为了简化部署、运维实现更高的易用性,或是满足用户的特定需求,基于SD-WAN全自研的贝锐蒲公英异地组网拥有众多实用功能。这些功能涵盖网络、用户交互等诸多方面,包括:旁路组网模式、自定义网络出口/虚拟IP/DNS域名解析、WebVPN、企…

使用光纤激光切割机等激光切割设备时的一些小诀窍

光纤激光切割机极大地提高了钣金加工行业切割效果和生产效率。然而在我们对客户的回访调查中,发现客户普遍存在着对光纤激光切割机设备的保养维护意识不足的问题,这严重影响了设备的正常使用和使用寿命。 虽然激光切割机有日常的保养,但是也需…

leetcode215题快排

关于快排的两种写法为什么一个超时 一个很快的问题记录 快的写法: 超时的写法: 查看了一下超时的数据,是有很多相同的数字组成,个人觉得是因为超时的写法,再遇到相同的数字的时候,直接或者–&#xff0…

premiere 图片突出滑块效果

1 导入图片 2 复制图片 3 创建序列 4 序列 导入 图片和复制的图片 两个 v轨道 5 旧版标题 窗口 -> 基础图像 (查看是否勾选) 6 v 轨道 选择 复制的图片 -> 效果 -> 基础图形 -> 新建 -> 矩形 -> 变形 旋转 7 效果 -> 搜-> 轨道遮罩键 -> 拖入…

盛元广通畜牧实验室信息管理系统(LIMS)

盛元广通通过构建物联网畜牧实验室信息管理系统LIMS,将畜牧养殖生命周期生产业务一体化、降本增效、管理透明、柔性把握检测业务管理流程、从源头质量把关、多维度动物管理看板、成本核算自动化、移动化场景同步高效协同。帮助实验室及早识别和应对潜在的疾病威胁&a…

静态路由+BFD实例

项目拓扑与项目需求 项目需求 ① 主链路为电信,电信链路出故障时,业务数据流量切换到联通链路 实验步骤 步骤1:设备重命名以及IP地址的配置 设备 接口编号 IP地址 AR1 G0/0/0 10.0.13.1/24 G0/0/1 10.0.14.1/24 AR2 G0/0/0 10.0…

基于SpringBoot的古典舞在线交流平台的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 系统主界面 用户注册界面 论坛交流界面 课程详情界面 购物车界面 我的订单界面 管理员登录界面 会员用户管理界面 服饰管理界面 课程管理界面 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着互联网技术…

分布式操作系统

分布式操作系统属于多机操作系统,能够统一一套计算机集群,相比单机系统,分布式操作系统在管理计算机集群方面要简单很多。各种分布式的基础功能,都集中到分布式操作系统来实现,而不是单机系统的应用软件来实现&#xf…

Emmabuntüs Debian Edition 5 正式发布

导读来自 Emmabunts Collective 的 Patrick d’Emmabunts 近日向 9to5Linux.com 通报了 Emmabunts Debian Edition 5 1.00 的发布和全面可用性,该版本是用于翻新旧电脑的 GNU/Linux 发行版的最新稳定版本。 Emmabunts Debian Edition 5是在Emmabunts Debian Edition…

【模拟实现C语言库函数】string.h中的内存操作函数

本篇文章目录 相关文章1. 模拟 memcpy 内存拷贝2. 模拟 memmove 内存移动 相关文章 【C语言】数据在内存中是以什么顺序存储的?【C语言】整数在内存中如何存储?又是如何进行计算使用的?【C语言】利用void*进行泛型编程【C语言】4.指针类型部…

postgresql pgsql 连接池 pgBouncer(详细)

适用连接池可以有效的降低反复连接造成的损耗 2023.9.28更新,演示:1.20.1版本 没有安装pgsql的可以参考:pgsql编译安装 一、编译安装 包安装更简单,就是不能选版本 1.pgBouncer下载地址 链接:github项目地址 链接&a…

2023软件测试面试八股文大全(含答案)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢 C/S响应速度快,安全性强,一般应用于局域网中&#xff0c…

java一体化智慧工地信息管理平台源码 智慧工地APP源码

智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、物联网和移动互联网等高科技技术手段,将施工区域各系统数据汇总,建立可视化数字工地。同时,围绕人、机、料、法、环等各方面关键因素&#xff0…

探索ClickHouse——连接Kafka和Clickhouse

安装Kafka 新增用户 sudo adduser kafka sudo adduser kafka sudo su -l kafka安装JDK sudo apt-get install openjdk-8-jre下载解压kafka 可以从https://downloads.apache.org/kafka/下找到希望安装的版本。需要注意的是,不要下载路径包含src的包,否…

QQ聊天记录文件怎么恢复?这3个方法亲测有效

QQ为用户提供了聊天、语音、视频、在线游戏、社交分享等丰富的功能,满足了用户的各种通讯以及娱乐需求。无论是现在还是过去,QQ仍然在我们的生活中扮演着重要的角色。 如果在使用QQ的过程中,发现文件过期或者被删除了该怎么办?qq…

480439-15-4,一种具有荧光单体的pH敏感性染料Fluorescein O-methacrylate

产品简介:荧光素O-甲基丙烯酸酯是一种具有荧光单体的pH敏感性染料。它可以通过490 nm的激发光谱和520 nm的发射光谱进行表征。它具有荧光素,其是一种负电荷最少的指示剂。它的特性包括生物相容性、无毒性,以及在水溶液中的良好分散性。 CAS号…

Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 1(Pinia)

Pinia状态管理 在 Vue3 中项目中组件之间传递数据时,可以使用 Props 和 Emit,还可以使用 Provide/Inject 来代替 Props 和 Emit。Props 和 Emit 只能在具有父子关系的组件之间传递数据,所以层级越深,过程就越复杂。为了解决此类问…