Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能

news2025/1/17 21:59:26

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合约为例中的decrementdecrement_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网络的隐私架构

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

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

相关文章

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件,该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织: 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto 学习前言Aliyun DSW快速拉起(新用户有三个月免费时间)1、拉起DSW2、运行Notebook3、一些小bug AutoDL快速拉起1、拉起AutoDL2、运行Notebook 学习前言 快速拉起AIGC服务 对 用户体…

CAN Driver

CAN Driver 前言:CAN驱动针对的是微控制器内部的CAN控制器,它可以实现以下功能: 对CAN控制器进行初始化; 发送和接收报文; 对报文的数据和功能进行通知(对接收报文的指示、对发送报文的确认&#xff09…

基于SSM+Vue的人力资源管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

交叉编译工具链-Ubuntu 安装说明

交叉编译工具链-Ubuntu 安装说明 【实验目的】 了解交叉编译工具链的安装方法与使用方法 【实验环境】 1、 ubuntu 14.04 发行版 【注意事项】 1、实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 1、安装交叉编译工具链 在 ubuntu 下打开一个终端并进入到家…

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamot yamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。 比如说,广…

elasticsearch11-实战搜索和分页

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

Prometheus+Grafana可视化监控【ElasticSearch状态】

文章目录 一、安装Docker二、安装ElasticSearch(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装elasticsearch_exporter七、Grafana添加ElasticSearch监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docke…

Linux学习之平均负载的概念和查看方法

先理解一下平均负载的含义: 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的进程数,也可以看成平均活跃进程数。 可运行状态的进程: 正在使用CPU或者正在等待CPU处理的进程,ps 命令看到的,处于…

AO天鹰优化算法|含源码(元启发式算法)

-----------------------往期目录------------------ 1、灰狼优化算法 文章目录 天鹰优化器一、第一种搜索方法二、第二种搜素方法三、第三种搜素方法四、第四种搜索方法 代码实现 天鹰优化器 Aquila Optimizer(AO),灵感来自Aquila在捕捉猎物…

Mysql001:(库和表)操作SQL语句

目录: 》SQL通用规则说明 SQL分类: 》DDL(数据定义:用于操作数据库、表、字段) 》DML(数据编辑:用于对表中的数据进行增删改) 》DQL(数据查询:用于对表中的数…

开源日报 0825 | 简化开发过程,提升Swift应用性能的扩展工具库

OpenZeppelin/openzeppelin-contracts Stars: 22.8k License: MIT OpenZeppelin Contracts 是一个用于安全智能合约开发的库。它建立在社区验证过的代码基础上,具有以下主要功能: 实现了 ERC20 和 ERC721 等标准。灵活的基于角色的权限控制方案。可重…

数据结构-leetcode-环形链表

解题图解: 代码如下: bool hasCycle(struct ListNode *head) {struct ListNode * fasthead;//在这里fast是快指针//head作为low指针//因为这个题不需要做修改也只需返回true或false//就少开辟一个空间while(fast!NULL&&fast->next!NULL){hea…

Css实现右上角飘带效果

效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">*{margin: 0 auto;padding: 0;}.wrap {/* 设置宽高 */width: 350px;height: …

多分类中混淆矩阵的TP,TN,FN,FP计算

关于混淆矩阵&#xff0c;各位可以在这里了解&#xff1a;混淆矩阵细致理解_夏天是冰红茶的博客-CSDN博客 上一篇中我们了解了混淆矩阵&#xff0c;并且进行了类定义&#xff0c;那么在这一节中我们将要对其进行扩展&#xff0c;在多分类中&#xff0c;如何去计算TP&#xff0…

1_图神经网络GNN基础知识学习

文章目录 安装PyTorch Geometric安装工具包 在KarateClub数据集上使用图卷积网络 (GCN) 进行节点分类两个画图函数Graph Neural Networks数据集&#xff1a;Zacharys karate club network.PyTorch Geometric数据集介绍 edge_index使用networkx可视化展示 Graph Neural Networks…

cenos自动启动tomcat

首先创建一个脚本 关闭tomcat 等待2分钟 启动tomcat 并且把日志输出在 /usr/local/tomcat/tomcatchognqi.log #!/bin/bashexport JAVA_HOME/usr/local/jdk/jdk1.8.0_211 export JRE_HOME$JAVA_HOME/jre# 日志文件路径和文件名 LOG_FILE"/usr/local/tomcat/tomcatchognqi.…

Ubuntu20.4搭建基于iRedMail的邮件服务器

iRedMail 是一个基于 Linux/BSD 系统的零成本、功能完备、成熟的邮件服务器解决方案。基于ubuntu20.4搭建基于iRedMail的邮件服务器包括环境配置&#xff0c;iRedMail安装与配置&#xff0c;iRedMail调整邮件附件大小等3个小节进行描述。具体如下详细描述。 1 环境配置 1.设置…

企业架构LNMP学习笔记56

MongoDB数据类型操作&#xff1a;CURD 1、添加数据&#xff1a; mongodb里存储数据的格式文档形式&#xff0c;以bson格式的文档形式。 创建数据库&#xff1a; > use tp5shop switched to db tp5shop > db.getName() tp5shop使用切换库&#xff0c;不存在自动创建&am…

Jmeter 自动化性能测试常见问题汇总

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&…