Cointime

扫码下载App
iOS & Android

一站式社交恢复: zk-SNARKs如何实现钱包的交易逻辑与资产分离?

项目方

Vitalik 建议使用 zk-SNARKs 将交易逻辑账户与持有资产的账户分开。这样可以改善隐私,用户体验和一键式社交恢复。以太坊研究员 Toni Wahrstätter 对此钱包原型进行详细解析,涵盖工作流和优势。

非常感谢Matt就该主题进行了精彩的讨论,并开发了这个工具来解析每个合约并将其放入稀疏的 Merkle 树中,该树无需在 patricia 树上进行 zk 证明,从而简化了原型设计。另外,感谢Vitalik的大力投入。

由于多种原因,管理多个帐户可能具有挑战性,包括社交恢复、隐私、L2 和整体用户体验问题。使用隐形地址会使事情变得更加复杂,因为每次交互都需要一个新帐户。Vitalik建议使用 zk-SNARKs 将交易逻辑账户与持有资产的账户分开。这可以改善隐私、用户体验和一键社交恢复。

对于以下内容,建议首先查看 Vitalik 的“三个转变”帖子以了解一些背景知识。

简而言之,我们试图实现的目标是:

在不损害隐私的情况下一站式社交恢复。

一、传统的方法

一个简单但会损害隐私的实现如下所示

  1. 用户向资产持有账户提供签名和一些意图/命令。
  2. 资产持有账户将签名转发给逻辑持有账户。
  3. 逻辑持有账户从签名中导出公钥,并将其与它存储的公钥进行比较。
  4. 如果验证通过,逻辑账户将通知资产持有账户继续操作。
  5. 资产持有账户执行用户的命令。

缺点是,这将逻辑账户和资产持有账户公开联系起来,从而损害了隐私。

二、使用ZK-SNARK

通过使用 zk-SNARK,用户可以证明他们有权支出,而无需透露逻辑持有账户和资产持有账户之间的联系

工作流程如下所示:

1. 用户在本地构建一棵 Merkle 树并识别包含其合约的叶子。

1.1. Merkle 树基本上包含按日期或名称排序的每个现有合约的 slot0 和 slot1 值。

1.2. 每个用户都可以根据最近的状态在本地构建 Merkle 树。

2. 用户构造一个 zk 证明,证明知道逻辑持有帐户中的秘密。稍后再详细证明。

3. 用户将 zk-proof 发送到资产持有账户。

4. 资产持有账户验证证明,确认以下内容:

4.1用户知道逻辑在哪里。

4.2 用户知道一个秘密值,该秘密值在散列后映射到存储在逻辑持有账户中的值。

4.3用户可以重建在规范链中维护的帐户状态默克尔树根(例如预编译)

4.4使用正确的随机数(用于切换逻辑持有账户中的密钥)。

本质上,用户可以说:“我拥有逻辑持有帐户的可证明的权限来执行此操作,并且我知道该逻辑帐户的位置。”

优点

  • 用户体验:一个私钥或一个多重签名设置可以控制多个帐户,即使它们位于不同的 L2 上。
  • 恢复:通过一次合同更新可以更轻松地恢复帐户。
  • 隐私:各个帐户之间没有公共链接。
  • 兼容性:这有助于普及帐户抽象(AA)钱包和其他功能。

此外,通过在逻辑和资产持有合约之间添加另一个(聚合器)合约,可以在一次交易中提供不同资产持有账户的多个证明,从而几乎可以像 UTXO 一样对待账户。聚合器将能够获取多个 zk 证明并将其转发到各自的资产持有账户进行验证。当然,这样的聚合器可以在各个资产持有账户之间创建链接——包括隐私。

值得注意的是,使用 SNARK(因此依赖其安全性)和根本不使用 SNARK(因此错过了良好的隐私属性)之间不一定是二选一。一种折中方案可以是使用 SNARK 证明在逻辑持有合约中打开一个时间窗口,然后短暂延迟,之后逻辑持有合约的所有者可以更改 slot0 值,而不是要求 SNARK 证明来进行支出,从而改变消费逻辑。合约的当前所有者可以使用时间窗口打开之前的延迟来阻止凭证更新。

技术细节

zk-SNARK 设置包括私有元素:

  • 用于验证的密钥。
  • 逻辑持有账户地址为资产持有账户所指向的地址。
  • Merkle 分支来识别特定的状态值。
  • 允许密钥轮换同时使旧密钥无效的随机数。明文逻辑持有合约地址和秘密等私有元素不公开,而是用于私下链接逻辑持有账户和资产持有账户。通过生成整个状态的证明,不需要中央机构来构建默克尔树来提交证明。

1、逻辑持有账户

逻辑持有账户的原型可能如下所示:

pragma solidity >=0.7.0 <0.9.0;

contract LogicHoldingAccount is Ownable { uint256 public slot0 = 0x1234; // hashed secret uint256 public nonce = 0; // keep track of key changes address public owner;

function updateOwner(uint256 newValue) public onlyOwner { nonce += 1; slot0 = newValue; }}

  • slot0:最初保存哈希值的公共变量。只有所有者知道哈希的原像。
  • nonce:跟踪所有者信息更新次数的计数器。这确保旧密钥变得无效。
  • updateOwner(uint256 newValue):更新值并增加随机数的函数。

该合约跟踪所有者当前的支出逻辑 (slot0) 并允许通过该updateOwner函数进行更新。

2、账户持有账户

pragma solidity >=0.7.0 <0.9.0;

contract AssetHoldingAccount { uint256 public logicHoldingAccountHash = 1234...;

// Scalar field size, Base field size, Verification Key data, etc. // ...

function verifyProof( uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[2] calldata _pubSignals) public view returns (bool val) { // Snarkjs assembly code for proof verification... // ... }

// _pubSignals[0] - the root of the contract-slot0||nonce Merkle tree // _pubSignals[1] - the hased logic-holder address function execute( address payable to, uint256 amount, uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[2] calldata _pubSignals) public { contractRootPrecompile.getRoot(block.number) uint256 specifiedLogicHolder = _pubSignals[1]; require(specifiedLogicHolder == logicHoldingAccountHash, "Not allowed");

bool validProof = verifyProof(_pA, _pB, _pC, _pubSignals) == true; if (validProof) { (bool success,) = to.call{value:amount}(""); require(success); } }

receive() external payable {}}

资产持有账户存储ETH等资产,并允许用户提交提款证明。通过验证是否specifiedLogicHolder匹配logicHoldingAccountHash,所有者可以确保资产持有合约仅接受来自授权逻辑持有合约的证明,而不是任何任意合约。

在构造证明时作为私人信号提供的秘密确保只有包含支出逻辑的帐户的所有者才能从资产持有帐户访问资金。

3、电路

以下电路是使用circom开发的,完整的代码可以在这里找到。

pragma circom 2.0.2;

include "./modules/merkleTree.circom";include "./modules/commitmentHasher.circom";

template Main(levels) { signal input root; signal input logicHoldingAddressHash; signal input logicHoldingAddress; signal input secret; signal input nonce; signal input pathElements[levels]; signal input pathIndices[levels]; component secretHasher = SecretHasher(); secretHasher.secret <== secret; component hasher = CommitmentHasher(); hasher.logicHoldingAddress <== logicHoldingAddress; hasher.secret <== secretHasher.hashedSecret; hasher.nonce <== nonce; hasher.logicHoldingAddressHash === logicHoldingAddressHash; component tree = MerkleTreeChecker(levels); tree.leaf <== hasher.commitment; tree.root <== root; for (var i = 0; i < levels; i++) { tree.pathElements[i] <== pathElements[i]; tree.pathIndices[i] <== pathIndices[i]; }}

component main {public [root,logicHoldingAddressHash]} = Main(N);

该电路共有 7 个信号,其中 2 个是公开的,即 Merkle 树根和逻辑持有账户的哈希地址(在编码到资产持有合约之前必须进行哈希处理,以防止观察者对账户进行聚类)基于相同的逻辑持有者帐户)。

结论

在用户必须管理多个帐户的世界中,对一站式社交恢复功能的需求变得越来越重要。Zk-SNARK 可用于实现逻辑/资产分离的钱包,使用户能够使用账户 A 的“逻辑”从账户 B 进行支出,而无需在两者之间创建链接。作为第一步,SNARK 证明可以用于风险低于资产支出的行动。例如,一个好的起点可能是允许用户发起“提款请求”。如果逻辑持有合约的所有者没有提出异议,用户可以在一段时间后最终确定该请求。

这样,逻辑持有合约的所有者仍然可以进行干预,尽管是以破坏隐私的方式,以防出现意外情况。

评论

所有评论

推荐阅读

  • Framework Ventures完成4亿美元第四期基金募资

    6月26日,据《Fortune》报道,Framework Ventures已完成4亿美元第四期基金募资,用于支持新一代技术项目投资,标志着该机构进一步扩大投资范围,不再局限于加密资产领域。

  • OpenAI内部ChatGPT基本被废弃,99.8%的AI输出已由Codex接管

    6月26日消息,OpenAI 发布的经济学论文《The Shift to Agentic AI: Evidence from Codex》通过追踪智能体平台 Codex 的数据,揭示了知识工作模式的转变。工作的基本单位正在从单次对话,转变为向 AI 异步委托更长、更复杂的任务。 在 OpenAI 内部,智能体已彻底接管日常工作,传统聊天接口 ChatGPT 接近被废弃。截至 2026 年 6 月,内部员工每周生成的 Token 中有 99.8% 来自 Codex。其中工程师人均 Codex Token 占比达 99%,法务和招聘等非技术员工占比也超 85%。深度使用使员工开始像协调团队一样运行 AI,近 28.6% 的员工曾同时管理 5 个以上智能体,最重度员工的日均累计运行时间超 71 小时。 与 OpenAI 的极限状态相比,外部用户也在加速转向智能体。针对外部个人用户的抽样显示,估算耗时超 8 小时的人类工作任务提交比例在半年内从 2.1% 升至 25.6%。自 2025 年 8 月以来,外部个人和组织的非开发周活跃用户数分别暴增 137 倍和 189 倍。此外,以复用工作流为核心的 Skills 技能在全部 Codex 活跃用户中的使用率,在三个月内从 5.4% 跃升至 26.6%。

  • 2025年至今我国已经研制发布40余项人工智能国家标准

    6月26日,据央视,从国家标准委了解到,2025年至今我国已经研制发布40余项人工智能国家标准。在基础支撑领域,发布《人工智能 服务器系统性能测试方法》,孵化人工智能计算产品的性能测试基准,引导我国AI服务器生态向规模化、协同化方向升级。在关键技术领域,发布《人工智能 大模型》系列标准,统一大模型研发、评估、部署全流程规范,筑牢人工智能核心技术创新底座。在产品应用领域,出台《人工智能 终端智能化分级》标准,明确智能终端分级判定依据,有效甄别“伪智能”产品、规范市场秩序,同时为相关产业扶持政策落地提供支撑,带动终端产业链整体智能化升级。一系列重点标准推动人工智能技术从单点突破走向体系化迭代,有效降低行业研发成本与规模化落地门槛,全方位支撑产业规范有序发展。

  • 全球半导体市场规模今年或超10万亿元 半导体市场规模狂飙

    6月26日,据央视财经,世界半导体贸易统计组织近期发布预测称,受AI热潮拉动,2026年全球半导体市场规模将超1.5万亿美元,创历史新高。半导体行业正围绕AI需求加速重构。在存储芯片市场,行业研究机构的报告显示,今年第一季度主要品类“动态随机存取存储器”,也就是DRAM的市场营收规模达970亿美元,同比增长260%,创历史新高。其中三星电子占据约38%市场份额,位居第一;SK海力士和美光科技位列其后。据了解,三星电子已连续两个季度位居DRAM市场首位。逻辑芯片是半导体市场的另一大品类,涵盖CPU、GPU、AI加速器等各类用于执行逻辑运算的芯片。在AI加速器与数据中心赛道,英伟达凭借GPU主导训练市场。博通与美满科技在专业集成电路ASIC定制推理芯片领域占据主导地位。而在通用计算领域,英特尔在服务器CPU市场仍具有传统优势,但面临AI算力需求向GPU和ASIC转移的挑战。 世界半导体贸易统计组织本月初发布的报告预测,今年全球半导体市场规模将较2025年增长近90%,达到1.51万亿美元,约合人民币10.2万亿元,2027年将进一步增长26.6%,市场规模升至1.914万亿美元,约合人民币13万亿元。

  • 中央结算公司:将做市商对手方通过真实做市成交的现券交易结算服务费降低至7.5折

    6月26日,中央结算公司:为进一步降低做市商交易结算成本,中央国债登记结算有限责任公司(以下简称中央结算公司)决定将做市商对手方通过真实做市成交的现券交易结算服务费由8折进一步降低至7.5折。对真实做市交易的识别和认定,以中国外汇交易中心(全国银行间同业拆借中心)传送并经中央结算公司核对确认的数据为准。以上优惠措施自2026年7月1日起至2028年12月31日止有效。

  • 世界油阀通航量回升 油轮租金大幅跳涨

    6月26日,据央视财经,标普全球能源公司25日发布报告说,24日共有78艘船舶通过霍尔木兹海峡,创下美以伊战事爆发以来单日最高通航纪录。本月霍尔木兹海峡的船舶日均通航量已恢复至冲突前水平的约57%。据了解,霍尔木兹海峡通航量回升,叠加多国秋冬能源补库,国际油轮租金大幅跳涨,传导到国内上下游呈现冷暖分化。一方面航道局势缓和后,航运企业避险保费回落,叠加运价上涨,盈利空间上升。而炼化企业承压明显,海运成本抬升直接推高原油到岸价,压缩炼油加工利润。由于我国原油高度依赖进口,不少炼化企业仍抢抓当前窗口期加快原油补库。

  • STRC盘前交易价格触及73美元 创历史新低

    行情显示,STRC 盘前触及 73 美元,创历史新低;SATA 报 83.5 美元,为 2 月以来最低水平。Strive 在该熊市中继续支付每日股息。

  • 马光远:美联储的制度性变革,是未来数年全球资产最大的黑天鹅

    6月26日,经济学家马光远表示,黄金今年从高点回撤接近30%,白银更是腰斩。金银疲软的核心根源,不是地缘局势,而是美联储主席沃什强硬的信用重塑政策、高利率常态化、强美元虹吸效应的持续压制。 长期来看,若沃什顺利推进资产负债表收缩、通胀目标刚性落地、美联储体系改革,将彻底修复多年宽松透支的美元信用,从底层巩固美元全球霸权地位,利好美国长期货币体系、金融格局。但对全球资本市场而言,这意味着全品类资产定价逻辑彻底重构。当前美股看似仍在震荡走高,实则是市场严重低估了沃什结构性改革的深远影响。 沃什开启的美联储新时代,没有常态化宽松、没有市场兜底、没有模糊博弈,底层定价逻辑彻底改写。这场超越加息降息的制度性变革,才是未来数年全球资产最大的黑天鹅,也是最核心的定价主线。

  • 德邦科技:国家大基金6月3日至6月26日减持149.35万股 持股比例降至10.85%

    6月26日,德邦科技(688035.SH)公告称,公司持股5%以上股东国家集成电路产业投资基金股份有限公司于2026年6月3日至6月26日通过大宗交易减持公司股份149.35万股,持股比例由11.90%降至10.85%。本次减持属于此前披露的减持计划,不触及强制要约收购义务,不会导致公司控股股东及实际控制人变化

  • BTC跌破60000美元

    行情显示,BTC跌破60000美元,现报59992.34美元,24小时跌幅达到2.88%,行情波动较大,请做好风险控制。