MPC vs Multi-sig——误解及重点关注

news2024/11/24 18:42:20

1. 引言

资金托管的2大主流方案为:

  • MPC:MPC钱包——对应EOA账号。用于高信任企业场景。
  • Multi-sig:多签钱包——对应智能合约钱包。用于个人场景,可强化安全性并易于恢复。

在这里插入图片描述
不过V神认为,基于MPC的EOA账号存在根本性缺陷——无法废除密钥(即使重分享,已泄露的老密钥share仍可恢复出目标密钥并窃取资金)。V神认为唯一的选型是智能合约钱包——账号抽象。

本文重点关注:

  • 何为MPC?及其优劣势。
  • 何为Multi-sig?及其优劣势。
  • 误解
  • 重点关注

2. 何为MPC?及其优劣势

在这里插入图片描述
MPC全称为 “Multi-Party Computation”,为一种密码学协议,支持多方联合执行某计算,同时保持各自的输入私有。MPC技术非常强大,可 用于:

  • 隐私保护数据分析:MPC支持多方联合分析其数据,而不泄露各自的数据集。
  • 安全多方机器学习:MPC支持多方合作训练某机器学习模型,而无需分享各自的私有数据。
  • 隐私保护金融计算:在金融领域,MPC可用于包含敏感金融数据的计算——如投资组合优化、风险评估或信用评分,而不暴露个人财务信息。
  • MPC签名:在密码学领域,可用MPC来计算某交易的签名。
    • 将秘密私钥采用多种密码学技术分发给一群参与者,每个参与者拥有的称为shard
    • 每个参与者使用其私有shard对消息进行partial签名。
    • 将一定阈值数量参与者的partial签名收集合并,即可构成单个完整签名。

MPC的优势为:

  • 1)无需存储私钥:借助MPC,将私钥分发给多方,意味着无单一实体拥有完整私钥。用户可选择不自己保存私钥。
  • 2)容错:MPC提供了容错。若某方下线或丢失了其shard,其他方仍可对交易签名或恢复出私钥。此处假设活跃参与方数量超过最小阈值要求。
  • 3)易于恢复:当持有shards的外部参与方同意协作,可在链下进行恢复,从而消除恢复相关的gas费。

MPC的劣势为:

  • 1)永久shards:MPC的缺陷在于shards是永久的。即意味着不仅现任监护人(guardians),而且前任监护人都可能串通窃取您的资产,构成无法接受的高风险。
  • 2)信任假设:MPC协议通常需假设一定数量的参与者是诚实的。若违背该假设,超过一定数量的参与者创痛,即无法保证MPC写一点 安全性和隐私性。
  • 3)MPC钱包为EOA账号:大多数当前的MPC钱包实现都依赖externally owned accounts(EOAs)。若拥有shards的一定数量的参与方串通或者私钥被攻击,则该MPC钱包将被永久破坏,不能被认为是安全的。
  • 4)密钥管理:管理密钥shares并确保其安全存储,且需要时可用。对于MPC来说是一大挑战。
  • 5)复杂性:正确设计和实现MPC协议是复杂的。若不当会引起错误或漏洞。
  • 6)通信开销:MPC通常要求各方相互间一定的通信开销,将影响性能并增加基于网络攻击的风险。

3. 何为Multi-sig?及其优劣势

在这里插入图片描述
多签钱包为智能合约钱包,要求两方或多方使用各自私钥来授权某交易或恢复某钱包。每方都有自己的私钥,有某授权方将相应的公钥添加到智能合约中。用户可配置任意指定操作所需的最小签名数量阈值。如,恢复钱包时,需要3个中的2个授权方对交易签名。未来若觉得某参与方行为不当,用户可从授权方列表中移除该有问题的参与方。

多签智能合约自2017年Gnosis SAFE上线以来开始流行。是当前DAOs和高净值个人(如Vitalik)的最受欢迎的选择之一。Gnosis SAFE自身有超过400亿资产存储在链上。.Sequence、Argent 和 Instadapp 都使用多签智能合约钱包,与第三方一起来恢复其多签智能合约钱包(SCW,smart contract wallet)。

随着账号抽象(即EIP-4337)以及EIP-6900: Modular Smart Contract Accounts and Plugins 的出现,将进一步推进多签和其它智能合约钱包的发展。Soulwallet已发布了模块化智能合约钱包基础设施的新方案。

多签钱包的优势为:

  • 1)强化安全:多签钱包提供了额外的安全层——要求多个签名来执行交易。从而降低了单点故障的风险。即使某密钥持有人的私钥被盗,资金仍是安全的,因为攻击者人需要访问其它授权密钥来发起交易。

  • 2)恢复:到密钥丢失,多签钱包提供了恢复选项。根据配置,剩余的授权方可投票来改变授权密钥集合,支持在不丢失资金的情况下,恢复钱包访问。用户不再需要存储私钥。

  • 3)模块化:大多数多签智能合约钱包都支持模块化,借助模块化结构,可设置交易限制。如,若在某SCW中有4个授权方,可做如下限制:

    • 3.1)低于100美金只需单个签名,100美金到1万美金需要至少2个签名,超过1万美金需要硬件密钥。
    • 3.2)可为特定授权方指定角色,如限定其仅能参与恢复,不能发起交易。这样就有定制第三方来帮助恢复资金。如Screen Protocol正致力于开发类似的模块来强化智能合约钱包的安全性。
    • 3.3)Banana Wallet为SCW引入了zk-based 2-factor OTP,通过引入2fa认证来避免欺诈。

    模块的功能没有上限,可为任何东西,具有巨大想象空间和成长空间。由于这些模块都在链上,是去中心化的、无需信任的且可验证的。

  • 4)无安全假设:可修改或移除授权方,对这些参与方的信任假设很低。但MPC中,某方拥有的私钥shard是永久的,永远无法撤销该方的shard。但在多签钱包中,用户可在任意时刻发起交易从授权实体列表中移除恶意方。

  • 5)以任意token来支付gas:随着ERC4337的出现,用户可 以去中心化的方式以任意token支付gas,而无需依赖中心化的relayer。对于MPC来说,在没有中心化relayer的情况下是不可能的。

多签钱包的劣势:

  • 1)gas开销:由于所有的检查和恢复都在链上发生,这些操作需要关联gas开销。
  • 2)复杂性:在生产中选择多签钱包之前,必须对其进行严格的测试和审计,任何小错误都可能导致所有资金的流失。也就是说,Gnosis SAFE已经经过了适当的审计,并且已经生产应用了大约4年多,没有任何漏洞。

4. 误解

当前对MPC钱包和多签钱包存在以下误解:

  • 1)误解一:SCW是新的,MPC经过了尝试和测试:
    事实上,SCW出现于2017年,Gnosis SAFE为多签SCW的领先者。此外还有Argent、Sequence 和 Instadapp等。
    MPC主要用于高信任场景。如企业与负责处理私钥shards的各方定理法律合约。然而,它并没有得到散户投资者或像你我这样的日常用户的广泛接受。这在很大程度上是由于碎片的永久性,因为它们无限期地留在持有它们的一方。
  • 2)误解二:多签仅用于DAOs场景。
    Gnosis SAFE中有约50%的钱包为个人的。
    在这里插入图片描述

5. 重点关注

使用SCW需重点关注:

  • 1)关注一:智能合约钱包的高gas开销。不过有如下措施来降低交易开销:

    • 1.1)batch交易,将多个操作在一笔交易中发起。
    • 1.2)ERC-4337支持签名聚合:
      在这里插入图片描述
    • 1.3)ERC-4337直到用户的第一笔交易才部署智能合约帐户。在此之前,该帐户以“反事实”状态存在——它有一个地址,但没有真正部署。这意味着用户可以在不产生任何部署成本的情况下接收资产。
  • 2)关注二:SCW中的跨链操作挑战。
    多链生态为用户和开发者提供了大量遍历。但,跨链部署相同的智能合约钱包代码具有独特的挑战和考虑。挑战之一在于反事实部署概念。反事实部署支持在多个链上以相同的初始条件部署相同的智能合约钱包代码,但需要关注:

    • 2.1)无意识状态漂移:每个链都有自己独特的状态和数据存储,这可能导致不同链上智能合约的状态不一致。
    • 2.2)不完全性:反事实部署在许多纯EVM链上运行良好,但在与EVM略有偏差的链上可能会遇到困难,例如某些zk-Rollups,这可能会破坏创建相同地址的能力。

虽然用户想要一个单一的低级别地址是可以理解的,但仅仅依靠反事实部署可能会有局限性和潜在的缺点。从长远来看,它可能会成为一种反模式。

为了解决这个问题,ENS(以太坊名称服务)引入了多链地址解析。这种方法允许基于特定链将单个ENS名称映射到不同的地址。它提供了一个统一的人类可读标识符,同时为每个链上的唯一帐户使用不同的低级地址。这种方法被认为优于仅仅依靠反事实部署。

虽然跨链问题仍在进行中,但各种研究人员一直在积极寻找最佳解决方案。可在SAFE论坛上探讨SAFE创始人提出的方法,网址为https://forum.safe.global/t/how-can-a-safe-hold-asset-on-multiple-chains/2242。

参考资料

[1] Screen protocol 2023年6月博客 MPC vs Multi-sig — Misconceptions and Valid Arguments

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

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

相关文章

不变的誓言 字符串常量

## 不变的誓言 字符串常量字符串常量,这节课的主题、 水帘洞一直都没有变1.什么是字符串呢? 就是一个一个字符连起来就是字符串,qq聊天 都是字符串。 字符串常量,“”1.什么是字符串呢? 就是一个一个字符连起来就是字…

sqlserver收缩数据库

1.收缩数据库 首先收缩的前提是需要有可用空间如下图,没有可用空间无法收缩数据库 2.减小数据库大小 通过链接: 查询数据库中各表的大小 如果查询的比较大而且无用的数据可以直接把表结构给拿出来,然后删除该表空间就直接释放出来了 3.收缩文件 我…

SpringBoot项目打包部署后页面无法访问问题定位处理记录

问题描述 项目在idea中可以正常访问,但是达成jar包后访问时候访问异常,并报错,部分异常栈如下: org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/views/login], template might not exist or might not be a…

插入排序(直接插入排序 折半插入排序)

直接插入排序 void InsertSort(ElemType A[],int n) {int i,j;for(i2;i<n;i)if(A[i]<A[i-1]){A[0]A[i];for(ji-1;A[0]<A[j];--j)A[j1]A[j];A[j1]A[0];} }折半插入排序 void BinInsertSort(int A[],int n) {int i,j,low,high,mid;for(i2;i<n;i){A[0]A[i];low1;high…

【MySQL】基本查询之表的增删改查

【MySQL】表的增删改查 一、插入操作----insert1.1 简单插入1.2 插入时是否更新----ON DUPLICATE KEY UPDATE1.3 插入时替换----REPLACE 二、查询----select2.1 简单查询与去重2.2 基本查询----where条件2.2.3 案列演示 2.4 排序----order by 三、修改操作----update四、删除--…

产品经理有效管理项目进度的5个关键方法

作为产品经理&#xff0c;管理项目进度是确保产品开发成功的关键组成部分。产品经理负责推动产品开发过程&#xff0c;并确保团队在最后期限前完成并保持在正轨上。以下是产品经理有效管理项目进度的一些关键方法。 1、创建详细的项目进度表 这个时间表应该包括开发过程的所有任…

java业务开发经典常见错误例子

java业务开发经典常见错误例子 文章目录 java业务开发经典常见错误例子1.ThreadLocal线程重用导致用户信息错乱的 Bug2.使用了线程安全的并发工具&#xff0c;并不代表解决了所有线程安全问题3.没有认清并发工具的使用场景&#xff0c;导致性能问题4.加锁前要清楚锁和被保护的对…

DM8:达梦数据库数据文件与日志文件介绍

DM8:达梦数据库数据文件与日志文件介绍 环境介绍1 表空间中的数据文件1.1 表空间1.2 数据文件1.3 系统自带的表空间1.3.1 SYSTEM 表空间1.3.2 ROLL 表空间1.3.3 TEMP 表空间1.3.4 MAIN 表空间1.3.5 用户自定义表空间1.3.6 DM数据库的表空间和数据文件分布 2 日志文件2.1 重做日…

Redis 数据库的概念、常用命令

Redis数据库 一、关系数据库与非关系型数据库概述1、关系型数据库2、非关系型数据库3、关系数据库与非关系型数据库区别&#xff08;1&#xff09;数据存储方式不同&#xff08;2&#xff09;扩展方式不同&#xff08;3&#xff09;对事务性的支持不同 4、非关系型数据库产生背…

【数据结构课程设计系列】完全二叉树操作演示

完全二叉数操作演示 1.完全二叉树操作演示要求&#xff1a; &#xff08;1&#xff09;创建完全二叉树(用顺序方式存储) &#xff08;2&#xff09;求二叉树的深度和叶子结点数 &#xff08;3&#xff09;实现二叉树的前序、中序、后序和层次遍历。 &#xff08;4&#xff09;…

基于ubuntu的驱动开发

一般的linux驱动开发都是基于交叉编译来进行的&#xff0c;本文尝试着从另一个角度&#xff1a;基于ubuntu的本地驱动开发来学习一下驱动的开发 一、驱动的开发与编译 1.1、编写驱动文件 #include <linux/init.h> #include <linux/module.h> static int hello_i…

FL Studio中文版21最新免费音乐编曲软件制作工具

FL Studio较为适合专业的音乐制作者&#xff0c;操作难度较大&#xff0c;学习门槛也较高&#xff1b;Studio One则主打一站式的音乐制作&#xff0c;从编曲到录音到后期的专辑制作都可以在其中实现&#xff0c;同时操作难度不大&#xff0c;对初学者和业余爱好者都较为友好。 …

【NX】NX二次开发中自动选择当前实体和方向

在NX的二次开发中&#xff0c;我们经常需要选择实体和方向&#xff0c;如果每次手动选择&#xff0c;势必会影响调试的效率&#xff0c;那么有没有办法&#xff0c;让程序一启动就自动选择当前实体和方向呢&#xff0c;自然是有的。 经过我一番研究&#xff0c;因为可能有多个实…

Apikit 自学日记:团队管理

团队管理 一、工作空间管理 工作空间类似于部门或公司的概念&#xff0c;能帮助您更好地管理团队。 1.1 创建空间 点击页面左上角功能菜单&#xff0c;在下拉菜单中选择要切换的工作空间。 点击创建/加入&#xff0c;在引导页面中选择创建工作空间&#xff0c;填写工作空间…

JavaWeb HttpServletRequest

1.HttpServletRequest HttpServletRequest是Java Servlet API中的一个接口&#xff0c;用于表示HTTP请求的对象。 它提供了访问HTTP请求的各种信息和功能&#xff0c;包括请求方法、请求URL、请求头、请求参数、请求体等。 HttpServletRequest是由Servlet容器&#xff08;如…

利用PPT制作简单的矢量图

1.用PPT画一个图形&#xff08;可以多个图&#xff09; 2.鼠标圈住图形 3.利用 Ctrl G 组合图形&#xff0c;再用 Ctrl C 复制 4.打开word—粘贴—选择性粘贴—图片&#xff08;增强性图元文件&#xff09; 确认即可。

【制品】通用制品参库

制品仓库 制品库顾名思义是制品的仓库&#xff0c;制品是软件交付的成果性产物&#xff0c;通常是可运行的二进制形式&#xff0c;因此制品库通常也被称之为二进制制品仓库。制品库在开发阶段为使用各种开发语言的微服务开发者提供依赖解析的唯一入口。在构建阶段为各种语言的…

MongoDB远程复制集集群((两台服务器,8个实例))

第三阶段基础 时 间&#xff1a;2023年7月4日 参加人&#xff1a;全班人员 内 容&#xff1a; MongoDB远程复制集集群 目录 MongoDB远程复制集集群 实验环境&#xff1a;&#xff08;两台服务器&#xff0c;8个实例&#xff09; 环境部署&#xff1a; 安装部署 实 …

零基础自学网络安全,就是这样简单!

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

Diffusers学习总结

Diffusers代码&#xff1a;https://github.com/huggingface/diffusers Diffusers使用指南&#xff1a;https://huggingface.co/docs/diffusers/index Diffusers前向加速技巧&#xff1a; float16前向推理