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

完全保密的以太坊交易:Aztec网络的隐私架构

1. 引言

Aztec为隐私优先的以太坊zkRollup:即其为具有完全隐私保护的L2。
为了理解私有交易的范式变化性质,以及为什么将隐私直接构建到网络架构中很重要,必须首先讨论为什么以太坊不是私有的。

2. 以太坊:公有链

以太坊为具有包含accounts和balances的公共账本。
以太坊上最primitive的交易是由一个账号发送Ether给另一账号。网络跟踪这一情况的方式是增加一个账户的余额,减少另一个账户——换句话说,ETH在任何意义上都不会真正“移动”。
以太坊通过accounting ledger来表示简单的ETH transfer。
在这里插入图片描述
破解公共交易图是一项大生意:Chainalysis和Nansen等公司运行复杂的取证分析,将各种钱包关联起来,监控活动,并对谁拥有什么进行概率假设。
想象一下,如果你每次刷信用卡买羊角面包时,都向世界上每个人展示你的银行对账单。那就太傻了,对吧?
这就是今天以太坊的现状。

3. 加密账号

借助加密账号和加密交易,账本看起来将是:
在这里插入图片描述
以太坊的默认账号模型是:

  • 某account 拥有 某balance。

而Aztec则表示为:

  • 一定数量的money(即note) 具有 某owner。

在这里插入图片描述
Aztec采用的是与比特币一样的UTXO(Unspent Transaction Output)模式。可将UTXO看成是cash(bank notes)。

为什么现金本质上更安全、更私密——或者更准确地说,比基于账户的系统更安全、更有私密性?原因在于:

  • 只有现金交易的双方,才知道所有权已更改。而整个宇宙的其它每个人都不知情。

可将现金交易看成是:

  • 某对象(即note)的所有权改变

而将账号交易看成是:

  • 对2个账号状态的更改。

在这里插入图片描述
在处理Aztec交易时,不是对账号余额进行更新(增加和减少balance),而是Aztec网络简单的对某特定note重新分配所有权。

原因在于,对note加密是更简单的方案,仅需要对其写入2件东西:

  • 该note价值多少?
  • 谁拥有该note?

将换手时,仅需要划去老的owner名,再写入新的owner名。

为避免造出空气币,为保持token守恒,Aztec交易为join-split交易,需满足:
A + B = C + D A+B=C+D A+B=C+D
可借助ZKP技术来证明 A + B = C + D A+B=C+D A+B=C+D,而不泄露交易前后各个参与方的values。

同时为确保花费的是用户所拥有的token,需prove ownership——借助Merkle tree。

Aztec系统中有2种merkle tree:

  • note tree:包含所有已创建的notes。
  • nullifier tree:包含所有已销毁的notes。
    在这里插入图片描述

在Aztec中,拥有某note,是指该note存在于note tree中,但在nullifier tree中不存在相应的note-nullifier。
而销毁note是指,将a nullifier添加到nullifier tree中,而不是从note tree中删除该note。

在这里插入图片描述
为了发送已经证明自己拥有的notes,创建了一个全新的Merkle树(和Merkle根)。一旦注释树和无效树的Merkle根都移动到了新的值——换句话说,系统的状态已经更新——这些根就会在以太坊的主链上发布(结算),交易就会被视为已记录。

构建完全保密的以太坊交易的挑战在于:

  • 需 在不侵犯或暴露用户数据的情况下,验证交易是合法的并且正确执行的。

参考资料

[1] Aztec 2021年博客 Fully Confidential Ethereum Transactions: Aztec Network’s Privacy Architecture

Aztec系列博客

  • Aztec Hybrid Rollup:混合zkRollup,而非zkEVM
  • Proof Compression
  • Aztec Connect即将主网上线
  • Aztec connect bridge代码解析
  • Aztec 征集 Rollup Sequencer去中心化提案
  • Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私

相关文章:

完全保密的以太坊交易:Aztec网络的隐私架构

1. 引言 Aztec为隐私优先的以太坊zkRollup:即其为具有完全隐私保护的L2。 为了理解私有交易的范式变化性质,以及为什么将隐私直接构建到网络架构中很重要,必须首先讨论为什么以太坊不是私有的。 2. 以太坊:公有链 以太坊为具有…...

初识Java 9-1 内部类

目录 创建内部类 到外部类的链接 使用.this和.new 内部类和向上转型 在方法和作用域中的内部类 匿名内部类 嵌套类 接口中的类 从多嵌套的内部类中访问外部人员 本笔记参考自: 《On Java 中文版》 定义在另一个类中的类称为内部类。利用内部类,…...

合宙Air724UG LuatOS-Air LVGL API控件-屏幕横屏竖屏切换(Rotation)

屏幕横屏竖屏切换(Rotation) lvgl.disp_set_rotation(nil, lvgl.DISP_ROT_angle) 屏幕横屏竖屏切换显示,core版本号要>3202参数 参数类型释义取值nil无意义nilangle显示角度0,90,270,360 返回值nil 例子 lvgl.init()- -初始化 lvgl.disp_set_rotation(nil,…...

在Unity中,Instantiate函数用于在场景中创建一个新的游戏对象实例

在Unity中,Instantiate函数用于在场景中创建一个新的游戏对象实例。它的语法如下所示: public static Object Instantiate(Object original, Vector3 position, Quaternion rotation); original:要实例化的原始游戏对象。position&#xff1…...

解决 tesserocr报错 Failed to init API, possibly an invalid tessdata path : ./

问题描述 我们在初次使用tesserocr库的时候,可能会报以下错误: RuntimeError: Failed to init API, possibly an invalid tessdata path: ./ 这是因为我们在使用 conda 创建的环境中找不到"tessdata"这个文件夹。 解决办法 这时候把Tessera…...

使用Python CV2融合人脸到新图片--优化版

优化说明 上一版本人脸跟奥特曼图片合并后边界感很严重,于是查找资料发现CV2还有一个泊松函数很适合融合图像。具体代码如下: import numpy as np import cv2usrFilePath "newpic22.jpg" atmFilePath "atm2.jpg" src cv2.imrea…...

Python分享之对象的属性

Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。 属性的__dict__系统 对象的属性可能来自于其类定义,叫做类属性(class attribute)。类属性可能来自类定义自身,也可能根据类定义继承来的…...

编程参考 - std::exchange和std::swap的区别

这两个功能是C standard library中的Standard template library中的一部分。容易混淆,我们来看下它们的区别。 exchange: 这个函数是一个返回原先值的set函数。 std::exchange is a setter returning the old value. int z std::exchange(x, y); Af…...

Sentinel整合RestTemplate

resttemplate开启sentinel保护配置resttemplate.sentinel.enabledtrue配置sentinel-dashboard地址spring.cloud.sentinel.transport.dashboardlocalhost:8858\ spring.cloud.sentinel.transport.dashboard.port8739 实例化RestTemplate并加入SentinelRestTemplate注解Configura…...

微前端学习(下)

一、课程目标 qiankun 整体运行流程微前端实现方案二、课程大纲 qiankun 整体流程微前端方案实现DIY微前端核心能力1、微前端方案实现 基于 iframe 完全隔离的方案、使用纯的Web Components构建应用EMP基于webpack module federationqiankun、icestark 自己实现JS以及样式隔离2…...

Android Splash实现

1、创建Activity package com.wsy.knowledge.ui.splashimport android.animation.Animator import android.animation.AnimatorListenerAdapter import android.annotation.SuppressLint import android.os.Build import android.os.Looper import android.util.Log import an…...

FPGA projet : VGA

在vga屏幕上显示 &#xff1a; 野火科技 相比于上个工程&#xff0c;只需要修改 vga_pix 模块即可。 注意存储器类型变量的定义&#xff1a;reg 【宽度】<名称>【深度】 赋值 always &#xff08;poseedge vga_clk&#xff09;begin 为每一行赋值&#xff0c;不可位赋…...

JDK8 升级至JDK19

优质博文IT-BLOG-CN 目前部分项目使用JDK8&#xff0c;部分项目使用JDK19因此&#xff0c;环境变量中还是保持JDK8&#xff0c;只需要下载JDK19免安装版本&#xff0c;通过配置IDEA就可以完成本地开发。 一、IDEA 环境设置 【1】通过快捷键CTRL SHIFT ALT S或者File->P…...

Python3.10 IDLE更换主题

前言 自定义主题网上有很多&#xff0c;3.10IDLE的UI有一些新的东西&#xff0c;直接扣过来会有些地方覆盖不到&#xff0c;需要自己测试着添几行配置&#xff0c;以下做个记录。 配置文件路径 Python安装目录下的Lib\idlelib\config-highlight.def。如果是默认安装&#xf…...

C# OpenVino Yolov8 Pose 姿态识别

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenVino_Yolov8_Demo {public…...

北邮22级信通院数电:Verilog-FPGA(1)实验一“跑通第一个例程” 过程中遇到的常见问题与解决方案汇总(持续更新中)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 问题一&#xff1a;Verilog代码没有跑通 报…...

CSS - 鼠标移入整行高亮显示,适用于会员套餐各参数对比页面(display: table,div 转表格形式)

效果图 可根据基础示例和进阶示例&#xff0c;复制进行改造样式。 如下图所示&#xff0c;本文提供 2 个示例。 基础示例 找个 HTML 页面&#xff0c;一键复制运行。 <body><h1 style"text-align: center;">基础示例</h1><section class"…...

无涯教程-JavaScript - ATAN2函数

描述 The ATAN2 function returns the arctangent, or inverse tangent, of the specified x- and ycoordinates, in radians, between -π/2 and π/2. 语法 ATAN2 (x_num, y_num)争论 Argument描述Required/OptionalX_numThe x-coordinate of the point.RequiredY_numThe…...

Tomcat 下部署 jFinal

1、检查web.xml 配置&#xff0c;在 tomcat 下部署需要检查 web.xml 是否存在&#xff0c;并且要确保配置正确&#xff0c;配置格式如下。 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-i…...

【Spatial-Temporal Action Localization(二)】论文阅读2017年

文章目录 1. ActionVLAD: Learning spatio-temporal aggregation for action classification [code](https://github.com/rohitgirdhar/ActionVLAD/)[](https://github.com/rohitgirdhar/ActionVLAD/)摘要和结论引言&#xff1a;针对痛点和贡献相关工作模型框架思考不足之处 2.…...

二维码智慧门牌管理系统:数据现势性,满足应用需求的根本保证

文章目录 前言一、项目背景二、数据的现势性三、系统的优势四、应用前景 前言 在当今信息化社会&#xff0c;数据的重要性日益凸显&#xff0c;尤其是数据的现势性&#xff0c;它决定着服务的质量和满足应用需求的能力。近日&#xff0c;一个创新的二维码智慧门牌管理系统项目…...

BF算法(C++)简单讲解

BF算法匹配过程易理解&#xff0c;若匹配&#xff0c;子串和主串都往下移一位。不匹配时&#xff0c;主串回溯至本次匹配开始下标的下一位。例&#xff1a;图中第三趟匹配时&#xff0c;主串到第七位时与子串不匹配&#xff0c;这次匹配主串是从第三位开始的&#xff0c;所以下…...

JVM 虚拟机 ----> Java 类加载机制

文章目录 JVM 虚拟机 ----> Java 类加载机制一、概述二、类的生命周期1、类加载过程&#xff08;Loading&#xff09;&#xff08;1&#xff09;加载&#xff08;2&#xff09;验证&#xff08;3&#xff09;准备&#xff08;4&#xff09;解析&#xff08;5&#xff09;初始…...

《protobuf》基础语法2

文章目录 枚举类型ANY 类型oneof 类型map 类型改进通讯录实例 枚举类型 protobuf里有枚举类型&#xff0c;定义如下 enum PhoneType {string home_addr 0;string work_addr 1; }同message一样&#xff0c;可分为 嵌套定义&#xff0c;文件内定义&#xff0c;文件外定义。不…...

利用 SOAR 加快事件响应并加强网络安全

随着攻击面的扩大和攻击变得越来越复杂&#xff0c;与网络攻击者的斗争重担落在了安全运营中心 &#xff08;SOC&#xff09; 身上。SOC 可以通过利用安全编排、自动化和响应 &#xff08;SOAR&#xff09; 平台来加强组织的安全态势。这一系列兼容的以安全为中心的软件可加快事…...

uni-app:通过ECharts实现数据可视化-如何引入项目

效果 引入文件位置 代码 <template><view id"myChart"></view> </template> <script> import echarts from /static/js/echarts.js // 引入文件 export default {mounted() {// 初始化EChartsconst myChart echarts.init(document…...

string 模拟与用法

string 用法 string string 模拟 #pragma once #include <assert.h> #include <string.h> #include <iostream>namespace sjy {class string{public://迭代器相关typedef char* iterator;typedef const char* const_iterator;iterator begin(){return _st…...

[NLP] LLM---<训练中文LLama2(一)>训练一个中文LLama2的步骤

一 数据集 【Awesome-Chinese-LLM中文数据集】 【awesome-instruction-dataset】【awesome-instruction-datasets】【LLaMA-Efficient-Tuning-数据集】Wiki中文百科&#xff08;25w词条&#xff09;wikipedia-cn-20230720-filteredBaiduBaiKe&#xff08;563w词条&#xff09; …...

华为云云耀云服务器L实例使用教学 | 利用华为云服务器搭建--> 基于Spring Boot+WebSocket+WebRtc实现的多人自习室

文章目录 1. 购买华为云服务器L2. 在华为云服务器上搭建项目前期准备工作1. 更换登录密码2. 安全组配置 3. 在服务器上运行自己的项目 1. 购买华为云服务器L 在有优惠券的情况下&#xff0c;来到华为云这个网址下面&#xff0c;链接为&#xff1a;https://www.huaweicloud.com…...

Postman应用——接口请求(Get和Post请求)

文章目录 新增请求接口请求Get接口请求Post 这里只讲用的比较多的Get和Post请求方式&#xff0c;也可以遵循restful api接口规范&#xff0c;使用其他请求方式。 GET&#xff08;SELECT&#xff09;&#xff1a;从服务器取出资源&#xff08;一项或多项&#xff09;POST&#…...

专门做物业催收的网站/网络营销专业学什么课程

选择结构程序设计(一)说明内容1&#xff0e;关系运算符和关系表达式2&#xff0e;逻辑运算符和逻辑表达式3&#xff0e;条件运算符及条件表达式4&#xff0e;IF语句5&#xff0e;IF语句的嵌套生活中的“十字路口”也属于选择结构类型。举例说明实例讲解说明举例说明通过讲解&am…...

期货贵金属网站源码建设/如何介绍自己设计的网页

1、用预编译指令符可以避免在多文件工程中调用文件的时候可能出现的重复定义的现象。比如&#xff1a;Main.cpp#include “Animal.h”#include “Fish.h”……Animal.hclass Animal(){}Fish.h#include “Animal.h”class Fish():public Animal{}因此在调用Main.cpp的时候先运行…...

wordpress 新安装 慢/金戈西地那非片

复制文件。 语法 FileCopy源&#xff0c;目标 FileCopy 语句语法包含以下命名参数&#xff1a; 部分说明source必需。 指定要复制的文件的名称的字符串表达式。 _源_可能包含目录或文件夹&#xff0c;和驱动器。目标必需。 指定的目标文件名称的字符串表达式。 _目标_可能包含目…...

什么网站能找到做展览的工人/天津百度推广开户

代码格式对齐&#xff1a; CtrlA,全选 CtrlK ,CtrlF ,对齐 CTRL M, CTRL O 折叠所有方法 CTRL M, CTRL L展开所有方法...

php网站开发工程师教程/seo排名推广

2019独角兽企业重金招聘Python工程师标准>>> 很多人在PHP的开发中会出现SESSION跨页面丢失的问题&#xff0c;我曾经也遇到过&#xff0c;但是他自己好了 ^_^. 今天特别看了下&#xff0c;这种情况一般是用header跳转后才发生的&#xff0c;结合了PHP手册和网上的一…...

淘宝美工与网站开发/谷歌独立站seo

上一篇文章介绍了如何对循环语句进行操作&#xff0c;末尾还演示了发现空串时直接继续下一循环&#xff0c;只是在初始化字符串数组时使用了“val poem2Array:Array<String?> ***”&#xff0c;该表达式不免令人疑惑&#xff0c;为何这里要在String后面加个问号&#x…...