如何为乐清网站推广公司定制阿里云WordPress安装教程?
摘要:乐清网站推广公司,阿里云wordpress安装教程,wordpress 迅搜,营销网站服务器1. 引言 Aztec的架构,不同于当前“通过EVM兼容执行环境”所实现的区块链水平扩容趋势。Aztec内部笑称其构建
乐清网站推广公司,阿里云wordpress安装教程,wordpress 迅搜,营销网站服务器1. 引言
Aztec的架构#xff0c;不同于当前“通过EVM兼容执行环境”所实现的区块链水平扩容趋势。Aztec内部笑称其构建的为首个非zkEVM协议。
Aztec专注于实现#xff1a;
成为理解和需要智能合约隐私的开发者的终极解决方案。
Aztec为开发者提供构建隐私优先app所需的网…1. 引言
Aztec的架构不同于当前“通过EVM兼容执行环境”所实现的区块链水平扩容趋势。Aztec内部笑称其构建的为首个非zkEVM协议。
Aztec专注于实现
成为理解和需要智能合约隐私的开发者的终极解决方案。
Aztec为开发者提供构建隐私优先app所需的网络和一系列工具
默认是匿名的私有状态读写功能私有隐私合约函数执行
为此Aztec发现现有的类似EVM这样基于account的系统无法满足要求这也是为何Aztec是非EVM兼容的主要原因。同时Aztec需设法让习惯于EVM类环境的智能合约开发人员尽可能直观地处理私有状态环境的独特架构。
自Aztec创立之初就追求智能合约隐私
私有计算不需依赖可信第三方或可信硬件的安全模块。
而在完全链上智能合约隐私世界私有状态是一等公民这就意味着
无EVM无Solidity无基于account的区块链架构
因为这些都会造成隐私泄露。
2. 隐私不兼容EVM
“为何EVM无法兼容隐私”尽管目前已有EVM合约提供了类似mixing的primitive, non-programmable隐私功能。 不过Aztec关注的是智能合约隐私
在状态变量和函数层面将可编程隐私纳入合约本身的整个系统。
在以太坊模型中状态变量存储于公共公开的account-based tree中为改变其中某个变量需向整个以太坊世界广播你想要修改该tree中的那个叶子该叶子节点中包含了什么以及你想如何修改。这样就存在以下缺陷
每个状态变量的当前值和历史所有值都是公开的。执行状态变化所调用的函数是公开的。这些函数修改的状态变量是公开的。等等。
3. UTXO和Nullifier最佳拍档
Aztec依赖于encrypted UTXO (Unspent Transaction Object)数据架构——与Bitcoin存储网络状态的技术一致。
借鉴了ZCash协议的UTXO-nullifier设计思想Aztec隐私设计的基石为
包含了encrypted UTXO的append-only data tree包含了相应nullifiers的append-only data tree
在本文UTXO也称为“notes”。对非专业人员关于UTXO架构的介绍可参看Fully Confidential Ethereum Transactions: Aztec Network’s Privacy Architecture。 为了操作所拥有的note为encrypted UTXO对象用户采取以下步骤
调用某函数该函数请求对某私有状态进行编辑该函数查询该用户的note数据库获取属于该私有状态的所有notes该用户实际为用户的Aztec节点证明在其本地机器上每个retrieved notes都存在于tree machine中的某个叶子节点而不泄露具体是哪个叶子节点。该用户可该note内做读、改、删操作。该用户提供a nullifier以阻止重复操作并避免该用户再次读取相同的叶子节点。该用户插入一个新的叶子节点包含新的值以更新该私有状态的值。
4. Aztec的智能合约框架
智能合约隐私的要求之一就是隐藏函数输入借助zkSNARKs可实现函数输入隐藏。 然后Aztec构建了Noir——用于编写输入可隐藏函数的ZK编程语言不过Noir中并未内置状态存储和状态变量的概念。
Aztec的智能合约框架可在Noir之上创建状态变量。
为实现隐私需要有私有状态而为实现私有状态则需要有私有状态变量。所谓私有状态变量其不能是notes。notes存储数据或信息当与nullifiers结合使用可保护隐私但notes是常量的且不可修改的。
变量应该是可变的。通过合约函数来修改变量。为此需在以notes为基石的基础之上创建一个私有状态变量的概念。 目前notes可被销毁和创建为创建私有状态变量的抽象也许可在幕后巧妙地销毁和创建notes。 为此Aztec的解决方案为
声明一个私有状态变量写函数手写读取当前状态编辑该状态最后再写入更新状态。
在该方案中定义了如下私有状态变量结构体
需收集private state tree中的哪些notes需证明在该tree中存在的哪些notes需对哪些notes进行nullify需创建哪些新的notes并插入到该tree中
而对于开发者来说这些变量看起来就是变量。
以private token为例。 开发者首先声明一个private_balance状态变量Aztec支持通过transfer函数来修改该balance。 这样暴露的private_state结构会指出
如何创建和销毁notes来表示某用户balance的增加或减少与此同时通过该函数释放nullifiers不泄露用户的balance。
私有状态变量可表示任何东西
Values某具有value和owner域的对象如一张$100的钞票。NFTs具有唯一标识的对象或包含了所有唯一属性的NFT。Accounts由一个或多个owner所有的对象。Votes、DeFi positions、身份对象等等所能想到的任何东西。
私有状态变量存储数据或信息借助如下2个属性实现可编程性
可为mutableupdatable私有状态变量或immutablenon-updatable私有状态变量。可包含单个note即singleton或包含一组notes该类型也称为set来描述某状态变量。 需注意的是notes仅用于存储信息而并不存储函数或合约。
事实上管理UTXO通常会有点复杂并涉及一些“问题”包括如何
高效查找tree中某人所拥有的notes组合notes对组合notes进行修改借助nullifiers销毁和更新notes
与以太坊账户不同以太坊账户可以简单地贷记和借记notes必须被创建、组合和作废这代表了一种截然不同的思考模式。以太坊的values就仅仅是values而notes 包含了 values。
幸运的是Aztec在设计时考虑了抽象从而消除了编写Aztec合约的开发难度使其与编写以太坊智能合约尽可能相似。
Aztec智能合约框架的好处之一就是帮助合约开发者管理note的复杂性该设计的主要目的之一就是将notes从dApps中整个抽象走。 应用程序开发人员欢欣鼓舞其根本不必考虑UTXO或notes而是可以调用所期望的函数如token.transfer(amount)或token.getBalance()。
因为在应用层传输特定notes将会非常痛苦为此Aztec智能合约框架帮助将其从dApp层中完整抽离了。
参考资料
[1] Aztec团队2023年9月博客 Privacy Abstraction with Aztec: Smart contract privacy without the brain damage
Aztec系列博客
Aztec Hybrid Rollup混合zkRollup而非zkEVMProof CompressionAztec Connect即将主网上线Aztec connect bridge代码解析Aztec 征集 Rollup Sequencer去中心化提案
