• Aztec交易架构解析


    1. 引言

    前序博客有:

    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系列博客

  • 相关阅读:
    OpenCV每日函数 计算摄影模块(1) 图像修复算法 inpaint函数
    【JAVA】:万字长篇带你了解JAVA并发编程-并发设计模式【五】
    ViewModel 源码设计思路分析
    用于多步乘客需求预测的深度时空序列建模
    计算机网络拓扑结构
    【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)
    STL String类详解(上)
    前端工程化精讲第五课 编码效率:如何提高编写代码的效率?
    fatal error: H5Cpp.h: No such file or directory #include “H5Cpp.h“
    普通人的2022春招总结(阿里、腾讯offer)
  • 原文地址:https://blog.csdn.net/mutourend/article/details/133128569