码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能


    1. 引言

    前序博客有:

    • Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私

    Aztec.nr,为:

    • 面向Aztec应用的,新的,强大的智能合约框架
    • 使得开发者可直观管理私有状态
    • 基于Noir构建,Noir为Aztec Labs作为核心贡献者开发的通用zk编程语言。
    • 使得开发者使用Noir来编写隐私智能合约,并借助模块化函数来扩展其功能,并简化状态管理。
    • 未来将为开发者提供Solidity的智能合约功能和语法。

    开源代码实现见:

    • https://github.com/AztecProtocol/aztec-nr(Noir)

    2. Aztec.nr要点

    Aztec.nr框架帮助处理复杂的note管理,note管理对于在智能合约开发中实现隐私保护 至关重要。
    同时,开发者无需在每次编写Noir程序时,从头构建智能合约功能。

    若没有Aztec.nr,将:

    • 无法释放事件
    • 无法调用其它合约
    • 无法实现合约甚至地址概念
    • 没有msg.sender
    • 无法访问链上历史记录

    当前开发者可访问的完整智能合约特性有:

    • 合约(包括callable合约函数,以及合约内部函数调用)
    • 持久状态变量
    • 合约地址语义
    • 访问msg.sender,以及其它调用上下文信息
    • 访问交易上下文信息
    • 访问链上历史数据
    • 时间(logs)(支持加密和非加密)
    • 密码学原语
    • 跨链(L1->L2和L2->L1)消息传输

    相关示例有:

    • swap合约示例
    • lending合约示例
    • 卡牌游戏合约示例

    3. Aztec.nr原理

    Aztec Labs团队有两个非常坚定的信念:

    • 隐私可解锁下一阶段应用爆发。对于链上的日常用户、企业和机构来说,将每一个地址、交易和余额都以明文形式公开是不可能的。
    • 隐私用户体验必须比区块链中现有的技术状态更好。只有在使用体验比现在更好的情况下,隐私保护技术才有用。

    在这里插入图片描述
    Aztec.nr框架是改进开发者管理隐私状态的重要步骤,单纯Noir并没有相应功能。

    以简单的隐私token合约为例,Aztec.nr包括以下helper函数:

    • get_balance
    • increment
    • decrement等等

    换句话说,在标准token合约内应调用类似函数。

    隐私note的管理流程为:
    在这里插入图片描述
    如Alice想给Bob转账:

    • Alice聚合其所有待发送资产的现有的non-nullified notes,将这些note值求和,若Alice有足够的金额,则会创建一个change note来调和其余额。

    而Aztec.nr会让其更易于管理。以简单的隐私token合约为例中的decrement和decrement_by_at_most函数为例。
    decrement_by_at_most函数的流程为:

    • 1)找到待decrement的notes。该函数首先获取owner拥有的一些notes来累加max_amout:
      在这里插入图片描述
    • 2)销毁所选中的notes。遍历选中的notes并销毁这些notes,将这些notes求和值添加到decremented变量中:
      在这里插入图片描述
    • 3)处理change note。若销毁的notes总值(decremented)大于max_amount,则为超出值创建一个新的note(change_value),并将其分配给该owner。
      在这里插入图片描述
    • 4)返回Decrement。最终,该函数发送(存储于decremented中)所decremented的总值。

    decrement中则展示了如何使用Aztec.nr中内置的get, insert,replace, remove函数来管理notes和nullifiers。

    若开发者想不使用Aztec.nr来编写这些功能(即,使用纯的非智能合约Noir来编写),则开发者需编写自己的Merkle tree来插入,并为notes提供membership roof,为nullifiers提供non-membership proof。

    而借助Aztec.nr,开发者无需关心如何重构核心隐私原语,这些Aztec团队都以帮其实现了。开发者仅需专注于智能合约逻辑实现即可。

    Aztec团队很快将给开发者发布一个本地开发环境,基于本地Aztec节点实例,来编写和测试Aztec智能合约。在不久的将来,借助Aztec.nr所提供的功能,开发者也将获得丰富的开发工具来基于Aztec构建智能合约和应用。

    Noir相关入门资料可参看:

    • https://github.com/noir-lang/noir-starter
    • Noir doc
    • Aztec论坛

    参考资料

    [1] Aztec团队2023年9月博客 Introducing Aztec.nr: Aztec’s Private Smart Contract Framework

    Aztec系列博客

    • Aztec Hybrid Rollup:混合zkRollup,而非zkEVM
    • Proof Compression
    • Aztec Connect即将主网上线
    • Aztec connect bridge代码解析
    • Aztec 征集 Rollup Sequencer去中心化提案
    • Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私
    • 完全保密的以太坊交易:Aztec网络的隐私架构
  • 相关阅读:
    @MultipartConfig注解
    读书笔记:《聪明的投资者》
    原来你是这样的JAVA--[07]聊聊Integer和BigDecimal
    在 AWS Marketplace 上订阅 EMQX Cloud 按量计费版
    Codeforces Round #804 (Div. 2) - A, B, C
    回收站删除的文件怎么恢复,2个方法汇总助您快速解决
    【028】仿猫眼、淘票票的电影后台管理和售票系统系统(含后台管理)(含源码、数据库、运行教程)
    计算机网络基础 ARP协议 详详解----看完我的总结你就不用看别人的了!
    【Visual Leak Detector】核心源码剖析(VLD 1.0)
    Java GUI实现贪吃蛇游戏
  • 原文地址:https://blog.csdn.net/mutourend/article/details/132927720
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号