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

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.lryc.cn/news/175768.html

相关文章:

  • 商品秒杀系统整理
  • C语言实现八种功能的通讯录(添加、删除、查找、修改、显示、排序、退出、清空)
  • 视频监控/视频汇聚/安防视频监控平台EasyCVR配置集群后有一台显示离线是什么原因?
  • 【RabbitMQ实战】02 生产者和消费者示例
  • Linux下ThinkPHP5实现定时器任务 - 结合crontab
  • 3dsmax模型烘焙光照贴图并导入unity流程详解
  • 安卓生成公钥和md5签名
  • pwndbg安装(gdb插件)
  • SpringBoot 学习(二)配置
  • 西门子828d授权密钥破解经验分享 I7I54833762
  • 06贪心:跳跃游戏
  • 鄙视测试,理解测试,成为测试
  • MySQL数据库基础知识要点总结
  • 基础运维(一)YUM仓库
  • 递归算法讲解,深度理解递归
  • 网络通信(套接字通信)(C/C++)
  • anaconda navigator启动时一直卡在 loading applications 页面
  • 力扣刷题-链表-删除链表的倒数第N个节点
  • Blender DreamUV插件使用简明教程
  • AI在线工具分享
  • Matlab批量处理测试数据的方法:以VCO的调谐测试曲线处理为例
  • VScode断点调试vue
  • 20吨屠宰鸡鸭鹅一体化污水处理设备加工厂家
  • android被杀以后fragments缓存重建问题和测试方法
  • Visual Studio 2017 安装
  • day5|242.有效的字母异位词、349. 两个数组的交集
  • 【Python基础】常用模块学习:sys|os|pytest
  • 【煤矿虚拟仿真体验】VR采煤机技能培训有效提高训练效果
  • 渲染路径RenderingPath
  • 【Java】泛型 之 extends通配符