Aztec交易架构解析

1. 引言

前序博客有:

  • Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私
  • 完全保密的以太坊交易:Aztec网络的隐私架构
  • Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能
  • Account Abstraction账号抽象——EIP-4337提案

Aztec团队认为:

  • 隐私用户体验糟透了。
  • 零知识是复杂的。

为此Aztec的目标有两个:

  • 1)使用Aztec.nr等工具简化DevEx,Aztec.nr是一个智能合约框架,可以直观地推断私人状态管理
  • 2)通过抽象简化用户体验,帮助用户使用比EOA签名验证更好的工具访问区块链。

伟大的隐私优先应用程序将建立在一流工具的基础上,这些工具可以轻松构建功能强大的软件,让用户能够顺利直观地保护隐私。这意味着更多的代码,更少的加密。

本文重点关注如何通过账号抽象来改进交易处理,以及public-private组合设计。

当前,专注于用户隐私的协议已经暴露了底层的隐私架构。而事实上,用户不喜欢处理机器内部的螺母和螺栓。

Aztec认为,用户友好的抽象代表了区块链中直观用户体验的未来——这是将加密货币与web2相提并论的必要步骤。Aztec将定义交易路径,解释其含义,并探索其如何为开发人员和用户提供经得起未来考验的Aztec体验。

2. 以太坊账号:入门

在以太坊中,每个账号都由私钥控制,私钥通常源自助记符。需雕刻、记忆或至少记下单词列表,以确保账号安全。

注意,在此谈论的是以太坊外部拥有的账号(externally-owned accounts,EOA),而不是合约账号,因为在以太坊上,EOA是唯一可以发起交易的账号。

当在以太坊上发起交易时,网络需要 源自控制账号的私钥的签名。若创建了一个与交易相关的公钥匹配的签名,则交易将与其交易palyload一起提交,该payload指名以太坊虚拟机执行哪些功能。

3. 账号抽象

以太坊账号中的种子助记词存在如下问题:

  • 无法恢复:若忘记助记词,则永远都无法访问该账号。
  • 令人困惑的卫生:永远不应该使用复制粘贴功能将短语复制到电脑的剪贴板
  • 单点故障:任何拥有你密钥的人都可以完全访问你的帐账号

该如何绕过种子助记词和私钥作为账号验证的唯一形式呢?种子助记词只是一种非常安全但有缺陷的账号验证形式。账号验证有无数种方法,从非常安全到完全不安全,从直观到令人困惑,包括但不限于:

  • key sharding
  • 明文密码
  • TouchID和其它生物特征签名方案

请记住,账号验证可像你希望的那样安全。一个简单的帐号验证方案是:“若你点击‘是’按钮,帐号就会被验证。”这根本不安全,但你可以做到!

帐号抽象作为一个术语是令人困惑的,因为它包含“除了种子助记词之外的所有内容”,但身份验证的圣杯将包括三个因素:

  • 1)你知道某些东西(如密码)
  • 2)你拥有某些东西(如硬件钱包或Yubi Key)
  • 3)你是某人(如生物特征,或去中心化身份证明方案)

Aztec组合以上3者。不过,Aztec对以太坊的改进超出了替代身份验证方案的实施范围。
Aztec的交易结构也有点不同——用户发送计算证明,而不是从EOA签署交易。

4. Aztec隐私交易解析

Aztec交易支持2种交易类型:

  • 隐私交易
  • 公开交易

这些交易的核心为kernel circuit。kernel circuit是Aztec系统的心脏,用于验证隐私交易。

所谓区块链交易,是指:

  • 1)授权:通常是签名,但可以有很多东西
  • 2)意向:通常是一个交易负载,包括FROM、RECIPIENT、SIGNATURE和费用信息等指令

Aztec是EVM之外的一个全新的执行环境,其使用基于客户端的零知识证明来证明单笔交易。即意味着应用开发者的工作是适当地约束函数并证明用户意图。

在这里插入图片描述
Aztec隐私交易流程为:

  • 1)用户连接钱包到app
  • 2)用户表达交易意图
  • 3)App提供交易信息给钱包
  • 4)钱包执行函数
  • 5)钱包证明账号交互
  • 6)钱包证明函数执行
  • 7)钱包生成kernel proof
  • 8)App接收kerneal proof
  • 9)钱包广播交易到网络
  • 10)Aztec节点将交易打包到rollup区块
  • 11)以太坊固化L1区块

应用开发者可使用Aztec.nr编写智能合约来约束用户意图。以隐私转账为例,智能合约背后的电路需检查如下条件:

  • 该用户是否拥有大于10 DAI?
  • 若有,则销毁其10 DAI notes,并为其创建nullifiers
  • 为转账接收方创建新的10 DAI note
  • 广播并加密包含了10 DAI note的消息

其中nullifier、新note、加密log都是公开的,但也都是加密的,使得这些公开信息不暴露任何内容。即观察者只能说:“发生了一笔交易,但我不确定交易内容”。

这正是Aztec价值主张的核心——我们从数学上肯定地知道,交易是按照区块链规则进行的,但我们无法获得有关这些交易的任何信息。

5. Aztec公开交易解析

Aztec公开交易有所不同,其依赖于熟悉的基于账号模型的以太坊公共交易。
在这里插入图片描述
Aztec公开交易的关键是:

  • 无约束函数——Aztec的公开VM字节码。

无约束函数只是做“正常代码的事情”。“正常代码”指的是简单的执行代码,而不是像Aztec隐私交易那样证明执行。无约束函数不会设置约束,其只执行代码。

若Aztec是一台世界计算机,那么无约束函数就是计算机所理解的指令。就像EVM执行Solidity一样,Aztec VM执行Aztec字节码。

隐私交易和公共交易间的关键区别是代码执行的时间:

  • 在隐私交易示例中,代码必须在本地执行和证明,也就是说,在将交易证明发送到Aztec节点网络之前。
  • 在公共交易中,钱包必须接收授权,但不处理交易,而是将交易详细信息发送到Aztec节点,然后该节点创建执行证明并将证明插入块中。

由于公共交易不考虑隐私问题,所以未加密地发送到节点,以进行高效的批处理,而不是依赖于用户的本地设备。

参考资料

[1] Aztec团队2023年博客 Aztec Transaction Anatomy

Aztec系列博客

  • Aztec Hybrid Rollup:混合zkRollup,而非zkEVM
  • Proof Compression
  • Aztec Connect即将主网上线
  • Aztec connect bridge代码解析
  • Aztec 征集 Rollup Sequencer去中心化提案
  • Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私
  • 完全保密的以太坊交易:Aztec网络的隐私架构
  • Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据增强】

【数据增强】 1 数据增强的情形2 数据增强的方法 1 数据增强的情形 当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样…

flex布局与float布局

float布局 俩栏 三栏 flex布局

css自学框架之二级下拉菜单

下拉菜单是我们开发中最常见,最常用的,今天我们就自学二级下来菜单。首先看一下最终效果: 一、css代码 .arrow-down::before {content: ""; width: 10px;height: 10px;border: solid ;border-width: 2px 2px 0 0;border-color: …

大型集团借力泛微搭建语言汇率时区统一、业务协同的国际化OA系统

国际化、全球化集团,业务遍布全世界,下属公司众多,集团对管理方式和企业文化塑造有着很高的要求。不少大型集团以数字化方式助力全球统一办公,深化企业统一管理。 面对大型集团全球化的管理诉求,数字化办公系统作为集…

Quartz 建表语句SQL文件

SQL文件在jar里面,github下载 https://github.com/quartz-scheduler/quartz/releases/tag/v2.3.2 解压,sql文件路径:quartz-core\src\main\resources\org\quartz\impl\jdbcjobstore tables_mysql_innodb.sql # # In your Quartz propertie…

JavaScript——概念(JavaScript是什么?组成、输入语法等)

目录 JavaScript的概念 JavaScript是什么 JavaScript组成 JavaScript如何写 JavaScript书写位置 注释 结束符 输出和输入语法 输出语法 输入语法 代码执行顺序 字面量 总结 JavaScript的概念 JavaScript是什么 是一种运行在客户端(浏览器)的…

排序算法-----归并排序

目录 前言: 归并排序 1. 定义 2.算法过程讲解 2.1大致思路 2.2图解示例 拆分合成步骤 ​编辑 相关动态图 3.代码实现(C语言) 4.算法分析 4.1时间复杂度 4.2空间复杂度 4.3稳定性 前言: 今天我们就开始学习新的排序算法…

iPhone15线下购买,苹果零售店前门店排长队

今年的苹果新品发布会于北京时间 9 月 13 日凌晨举行,并于 9 月 15 日(周五)开启订购,9 月 22 日(周五)起正式发售。 据多位网友反馈,首批苹果 iPhone15 系列手机、Apple Watch Ultra 2 / Seri…

web:[ACTF2020 新生赛]Exec

背景知识 命令执行漏洞 linux命令 题目 打开题目,页面显示的是一个ping 尝试一下 查看源代码发现 尝试ping一下百度 由题目名可知这道题关于exec(命令执行),这里需要联想到可以多条命令执行 输入baidu.com;ls 尝试;号是否能够…

Qt核心:元对象系统、属性系统、对象树、信号槽

一、元对象系统 1、Qt 的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。 2、元对象系统是 Qt 对原有的 C进行的一些扩展,主要是为实现信号和槽机制而引入的, 信号和槽机制是 Qt 的核心特征。 3、要使…

电脑桌面透明便签软件是哪个?

在现代快节奏的工作环境中,许多上班族都希望能够在电脑桌面上方便地记录工作资料、重要事项、工作流程等内容。为了解决这个问题,一款优秀的电脑桌面便签软件是必不可少的。在选择桌面便签软件时,许多用户也希望便签软件能够与电脑桌面壁纸相…

go学习-GMP模型

GMP 好理解还是 GPM 好理解? 按照上述图,从上往下,GPM更适合理解 GMP 模型: Go 语言运行时系统中的 Goroutine、用于管理 Goroutine 调度的 Go Scheduler(P)、机器可用的逻辑处理器数量(M&#…

竞赛选题 基于深度学习的目标检测算法

文章目录 1 简介2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 1 简介 &#x1f5…

计算机网络常见面试题

目录 一、谈一谈对OSI七层模型和TCP/IP四层模型的理解? 答:OSI七层模型主要分为: TCP/IP四层协议: 二、谈谈TCP协议的3次握手过程? 三、TCP协议为什么要3次握手?2次,4次不行吗? …

关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?

问题描述: 原因是;CATALINA_BASE里面没有相关的文件配置。而之前学习IDEA的时候,把这个文件的位置改变了。导致,最后输出IDEA的时候,不会把日志也打印出来。 检查IDEA配置; D:\work_soft\tomcat_user\Tomcat10.0\bin 在此目录下&…

华为OD机试 - 构成正方形的数量 - 数据结构map(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 …

浅谈建筑能耗智能监测平台发展现状及未来趋势

安科瑞 华楠 摘要:文章以每年发布的上海市国家机关办公建筑和大型公共建筑能耗监测及分析报告变化为切入点,分析了历年能耗分析报告的内容和功能变化;介绍了上海市国家机关办公建筑和大型公共建筑能耗监测平台发展和应用历程;揭示…

基于SpringBoot的网上超市系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户功能实现 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计…

OpenHarmony Meetup常州站招募令

OpenHarmony Meetup 常州站正火热招募中! 诚邀充满激情的开发者参与线下盛会~ 探索OpenHarmony前沿科技,畅谈未来前景, 感受OpenHarmony生态构建之路的魅力! 线下参与,名额有限,仅限20位幸运者&#xff01…

npm常用命令系统介绍

npm常用命令系统介绍 npm helpnpm initpackage.json 文件package.json 文件属性说明默认 package.json 文件--参数[-yes|-y]设置 package.json 中字段的默认值package-lock.json 文件 npm [config|c]设置源 npm [install|i]可选参数:全局安装的特性 包的删除npm uni…