再谈多重签名与 MPC
目录
什么是 MPC 钱包以及它们是如何出现的
多重签名和智能合约钱包已经成熟
超越 MPC 钱包
关于小队
多重签名已经成为加密货币领域的一部分,但近年来,随着 MPC(多方计算)钱包的出现,多重签名似乎被掩盖了。MPC 钱包之所以受到欢迎和采用,很大程度上是因为当它们出现时,可用的替代方案有限,而且多重签名被认为不够先进,尚未完全开发。然而,这种情况已不复存在,因为多重签名和智能钱包现在正在迅速改进,提供相同的功能和用户体验。
虽然我们之前已经广泛讨论过Multisig的主题,但本文将深入研究 MPC,并解释为什么我们认为它只是一个临时解决方案,直到 Multisigs 等更安全的选项能够得到改进和优化。
对于希望交易加密资产的机构投资者或高净值个人,MPC 和 Multisig 是最常推荐的两种解决方案。虽然乍一看这些选项似乎提供了类似的功能,但本文的目的还在于介绍 MPC 钱包的隐藏权衡,这些权衡会给用户带来额外的风险。相比之下,Multisigs 和智能钱包正成为更安全、更可靠的替代方案。
什么是 MPC 钱包以及它们是如何出现的
“MPC” 代表多方计算。一般来说,MPC 允许两方(或多方)共同生成结果(如交易签名),而不会向对方透露其私人信息。
在加密领域,MPC 的概念最初是为了增强钱包的安全性而提出的。传统的加密钱包只有一个私钥,如果被盗,未经授权的人就可以访问和转移钱包中的资金。为了降低这种风险,MPC 技术将私钥分成多个部分,称为份额/碎片,这些部分分布在多方之间。没有一方拥有完整的密钥,只有当这些参与方中预定义的最小数量的人聚集在一起重新创建密钥时,交易才能获得授权。
MPC 钱包的出现可以追溯到 2018 年左右加密行业的增长以及对安全加密钱包的日益增长的需求,尤其是对于机构和高净值投资者而言。首批采用 MPC 技术的公司这样做的目的是提供比单密钥钱包更安全的托管解决方案,同时还保留能够在比特币和以太坊等任何区块链上执行交易的便利性。
最早在钱包技术中提出并实施多方计算 (MPC) 的公司之一是 Curv,时间是 2018 年(后来被 PayPal 于 2021 年收购)。当时,以太坊才刚刚开始成为与比特币并驾齐驱的潜在“可行”区块链,但它还没有准备好容纳智能钱包或开发多重签名,账户抽象也没有像今天这样成为每个人关注的焦点。Safe(前身为 Gnosis Safe)于同年晚些时候推出,现在是以太坊上领先的多重签名。然而,它是全新的,无法满足当时需要更先进技术的机构的需求。
Curv 的出现吸引了许多机构投资者对加密货币的投资,例如富兰克林邓普顿。这导致了其他 MPC 提供商的发展,例如 ZenGo 和 Fireblocks,它们在大约同一时间推出了自己的解决方案。另一方面,由于技术限制(当时智能钱包甚至还没有概念),多重签名尚未准备好被广泛采用——如果机构和组织想要一种安全的方式来交易和与加密资产互动,他们别无选择,只能使用 MPC 钱包进行运营。
如今,市场由 Fireblocks、Copper、BitGo、Coinbase Prime 和 Ceffu (Binance) 主导,所有这些提供商都在其钱包中采用了 MPC 技术。由于这项技术没有标准化的框架,因此每个提供商都构建了具有特定功能的独特解决方案。大多数 MPC 提供商都使用阈值签名方案 (TSS),这是一种链下协议,当与 MPC 结合使用时,可确定需要使用多少密钥份额来签署交易。这允许用户/服务提供商在设置 MPC 钱包时自定义其配置。
通常,MPC钱包分为两种类型:
-
集中式 MPC:在此,单个组织在安全、隔离的云环境中保留对所有关键部分的控制。集中式交易所或托管服务提供商等机构通常使用此模型。尽管其运营效率高,但它可能会将资产暴露于内部漏洞和单点故障。
-
混合 MPC:在此设置中,密钥份额的责任由用户、服务提供商和另一个第三方分担。这种控制分散旨在限制将所有密钥完全信任给单个集中实体的必要性。尽管它可以提供更高的安全性,但它仍然需要一个集中方来安全地分发、监督和使密钥片段无效。
虽然在机构和高净值投资者采用加密货币的早期阶段,所有可行的解决方案都倾向于 MPC,但时代确实发生了变化。是的,多重签名技术最初在产品 / 功能和区块链兼容性方面有所欠缺,但那都是历史了。以太坊已经成熟,超越了其作为“可行”区块链的最初潜力,其社区和生态系统参与者(如 Safe)一直在努力改进自我托管解决方案。围绕账户抽象的多项举措也使合约 / 可编程账户更易于使用,也更易于多重签名操作。其他区块链(如 Solana)也已上线,具有与智能钱包更好的兼容性,甚至绕过了多重签名和高级钱包在 EVM 上面临的一些技术障碍。
总体而言,值得注意的是,受欢迎程度并不一定意味着优越性。虽然 MPC 在过去满足了需求,并且是一种不错的短期解决方案,但更好的替代方案已经成熟。如果您追求的是灵活性,那么 MPC 是一个不错的选择。然而,在安全性方面,有许多原因可以解释为什么 Multisig 和智能钱包比 MPC 更出色,并且提供了更好的解决方案,特别是对于安全性至关重要的机构而言。
多重签名和智能合约钱包已经成熟
与 MPC 不同,MPC 中单个密钥被分成几个部分,每个部分由不同的一方管理,而在 Multisig 设置中,每个参与者都有自己的私钥。要授权交易,需要获得预定阈值中最少数量的参与者的批准。
长期以来,多重签名由于其复杂性和技术限制而未得到广泛使用。以太坊虚拟机并未完全支持它们,并且在尝试与网络交互时面临挑战。多重签名无法自行发起交易,而多重签名解决方案必须找到解决方法才能使其工作。但自 2018 年以来发生了很大变化,ERC-4337 等新标准的实施使多重签名和创新加密钱包(智能钱包)能够与以太坊和 EVM 链完全集成。在 Solana 上,多重签名和智能钱包的格局有所不同,因为它是具有新颖虚拟机 (VM) 和编程模型的全新区块链。这种环境要求开发人员花时间深入了解如何构建此类解决方案。随着生态系统的成熟,Solana 多重签名解决方案迅速发展,其中 Squads 是主要参与者。
智能(合约)钱包正在成为下一代加密钱包,它不是建立在简单的用户账户上,而是建立在智能合约/程序之上,为用户提供比传统钱包更好的安全功能。多重签名可能是智能钱包最著名的例子。由于是可编程账户,它们可以让用户做很多事情,而 MPC 等链下解决方案如果不依赖中心化实体就无法做到。由 Squads Labs 开发的Fuse将成为 Solana 上第一个具有这些独特功能的机构级智能钱包。
与 MPC 架构相比,智能钱包的设计完全在协议层上,无需依赖任何中心化实体来管理和保护资产。虽然存在一些挑战,例如跨链兼容性或与 dApp 的完全兼容性,但我们相信从长远来看,这些挑战并非不可克服。值得耐心等待,而不是急于采用 MPC 这样的临时解决方案。此外,智能钱包的功能和用户体验已接近 MPC 钱包,同时在安全性和去中心化方面已经超越了 MPC 钱包。
此外,完全链上并基于智能合约/程序构建具有许多 MPC 无法比拟的优势。智能钱包可以轻松执行可变操作来更改其操作设置,从而实现管理灵活性。每个用户或组织都可以控制其钱包的规则和功能。相反,MPC 钱包通常带有一组预定义的功能,并且不提供相同级别的自定义。
总体而言,经过数年开发多重签名技术,我们认为基于多重签名功能构建的智能钱包比 MPC 解决方案更安全,原因如下:
透明度:一切都在链上进行,这消除了交易过程中的任何歧义。这与 MPC 形成鲜明对比,在执行交易的许多步骤中,用户无法知道发生了什么(因为一切都是在链下完成的),密钥的哪些部分签署了交易,最终导致问责问题;
不依赖中心化方:从创建到添加成员、设置阈值和执行交易,智能钱包不需要信任中心化实体来管理和保护资产。这与 MPC 设置截然不同,后者本质上需要受信任的中心化方来保护一个或多个密钥共享。这种对密钥共享的依赖需要复杂且受信任的云基础设施,并且可能带来内部威胁等风险。这些漏洞可能会导致密钥共享的暴露,最糟糕的是,攻击者完全控制您的资产;
安全密钥撤销/轮换:这是 MPC 解决方案的最大风险 - 在设置门限签名方案 (TSS) 时,此部分是不可变的,将来无法更改。这意味着,如果组织内的某个人需要从设置中移除,您要么需要信任他们会归还其份额并且将来不再使用它,要么您的组织必须切换到新的 MPC 钱包以消除任何风险。相比之下,智能钱包允许从 Multisig 程序中真正撤销任何成员;
可编程:由于 MPC 是链下技术,并且具有许多不可变的功能(如阈值或密钥撤销),因此与智能钱包相比,它所能提供的功能有限。智能钱包可以实现任何可以在智能合约/程序中编码的功能;
安全逻辑久经考验:Multisig 技术已经经过多年的实战考验,Safe 是以太坊上最显著的例子,存储了 400 亿美元以上的资产,而 Squads 则是 Solana 上最大的团队所使用的。这与 MPC 解决方案非常不同,MPC 解决方案涉及复杂的算法,没有标准化的实现。大多数当前的 MPC 实现都是专有的,公众监督有限。这种缺乏透明度的情况使得很难验证这些解决方案的安全性和有效性。
至于隐私,Solana 即将让开发人员能够在协议级别匿名化部分代码,这要归功于零知识 (ZK) 层解决方案,例如Light Protocol或用于私人传输的Elusiv。这种设计非常出色,因为用户可以设置自己的私人 Multisig/Smart Wallet 并知道哪些部分是匿名的。相比之下,使用 MPC 解决方案,这些方面默认情况下对每个人都是模糊的。
超越 MPC 钱包
虽然 Safe 和 Squads 等多重签名协议完全在链上,开源且经过形式化验证,但 MPC 解决方案则完全相反,本质上不透明。MPC 背后的算法在数学上很复杂,很难正确实施。它们通常需要密码学和软件工程方面的专业知识。即使是实施过程中的轻微错误也会导致严重的安全漏洞,例如 GG18 和 GG20 中发现的私钥信息泄露,Fireblocks等主要 MPC 提供商在 2019-2021 年间使用了这两个算法。
最近,Multichain 事件也凸显了实施 MPC 技术的运营风险。Multichain 的所有 MPC 节点实际上都是在公司首席执行官的个人云服务器帐户下运行的。当首席执行官被捕时,运营帐户的所有访问密钥都被撤销,这意味着团队中没有人可以访问平台内持有的资金。
尽管 MPC 技术在灵活性方面具有一些优势,并且一些底层解决方案(例如钱包即服务提供商)非常适合大规模引入大量用户(与用于管理大量加密资产的解决方案相比,安全性风险较小),但截至目前,MPC 解决方案还不完全适合成为保护大量资本的权威基础设施。它们权衡了各种因素,以实现便利性。此外,与已广泛标准化的 Multisig 技术不同,MPC 的实现在提供商之间差异很大。这种标准化的缺乏使得彻底审查和审计 MPC 解决方案变得更加困难,从而增加了未被发现的漏洞的风险。
展望未来,我们预计 MPC 提供商将开始将 Multisig 技术的元素纳入其解决方案中,以减轻这些风险。通过结合两种技术的优势,将有可能创建更安全、更强大的数字资产托管解决方案。然而,在这一演变完成之前,团队和机构必须意识到纯 MPC 解决方案所涉及的风险,并仔细考虑这些风险是否可以在其特定用例下接受。另一方面,智能钱包正在迅速改进并缩小与 MPC 产品的差距,同时保留持有加密资产的最高安全措施。
本文是智能钱包介绍的第一部分。第二部分将介绍我们对智能钱包的愿景,以及新一代加密钱包将如何改善整个行业的加密托管。
关于小队
Squads 是一个加密公司运营平台,可简化基于 Solana 和 SVM 构建的团队对开发人员、创建者和财务资产的管理。开源、经过形式验证、不可变的 Squads 使团队能够通过多重签名保护其链上资产并共同管理它们。
了解更多
什么是 Squads:Introducing: Squads - Squads Blog
Squads 协议:https ://squads.so/blog/solana-svm-smart-contract-wallet-infrastructure
代码:https ://github.com/Squads-Protocol/squads-mpl
为什么要使用 Multisigs:https ://squads.so/blog/what-are-multisig-wallets
相关文章:

再谈多重签名与 MPC
目录 什么是 MPC 钱包以及它们是如何出现的 多重签名和智能合约钱包已经成熟 超越 MPC 钱包 关于小队 多重签名已经成为加密货币领域的一部分,但近年来,随着 MPC(多方计算)钱包的出现,多重签名似乎被掩盖了。MPC 钱包之…...

CTF学习24.11.19[音频隐写]
MISC07[音频隐写] 隐写术 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganograp…...

vue的watch是否可以取消? 怎么取消?
发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 Vue 可以通过 watch API 返回的一个 取消函数,可以在需要时取消该监听。 如何取消 watch? 当你使用 Vu…...

23、枚举
1、枚举 罗列一些标识符,当做整型数据使用。为了代码的易读性 1.1、枚举定义 enum 枚举名{大写标识符,大写标识符....}; 枚举类型名:enum 枚举名 枚举里面如果不给标识符赋值,默认从0开始,依次增1 如果里面的标识符有赋值…...

Java基本概念
Java特点 简单性。容易使用,比如没有C复杂的指针 面向对象。将对象属性剥离,当属性需要大量调用时节省代码,比如把大象装进冰箱,JAVA将大象分成跑、睡觉等不同功能,当需要就调用 分布式。 健壮性 安全性 体系结构…...

C++学习——如何析构派生类
C——继承关系中的虚函数 析构派生类纯虚构函数和抽象类 析构派生类 先看一段简单的代码: #include <iostream>using namespace std;class AA { public:AA() {cout << "调用了基类构造" << endl;}virtual void func() {cout <<…...

SpringCloud与Dubbo的区别
在构建分布式系统时,SpringCloud和Dubbo是两个常用的框架。虽然它们都能帮助开发者实现服务之间的通信和治理,但在设计理念、使用场景和技术实现上,两者存在明显的区别。本文将详细探讨SpringCloud与Dubbo的不同之处,以帮助开发者…...

C# 设计模式--建造者模式 (Builder Pattern)
定义 建造者模式是一种创建型设计模式,它允许你逐步构建复杂对象,而无需使用多个构造函数或重载。建造者模式将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。 正确写法 假设我们有一个复杂的 Car 对象,需要…...

leetcode 23. 合并 K 个升序链表
给你一个链表数组,每个链表都已经按升序排列。 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [1->4->5,1->3->4,2->6 ] 将它们合并到一个有序链表中得到。 1->…...

【Redis】深入解析Redis缓存机制:全面掌握缓存更新、穿透、雪崩与击穿的终极指南
文章目录 一、Redis缓存机制概述1.1 Redis缓存的基本原理1.2 常见的Redis缓存应用场景 二、缓存更新机制2.1 缓存更新的策略2.2 示例代码:主动更新缓存 三、缓存穿透3.1 缓存穿透的原因3.2 缓解缓存穿透的方法3.3 示例代码:使用布隆过滤器 四、缓存雪崩4…...

SQL语法——DQL查询
1.查询: 基础查询: select 列名1,列名2 from 表名; # 输入列名为*时为全查 条件查询: select 列名 from 表名 where 条件; #条件中含字符串时为字符串...

云计算.运维.面试题
1、计算机能直接识别的语言( C )。 A、汇编语言 B、自然语言 C、机器语言 D、高级语言 2、应用软件是指( D )。 A、所有能够使用的软件 B、能被各应用单位共同使用的某种软件 C、所有计算机上都应使用的基本软件D、专门为某一应用目的而编制的软件 3、计算机的显示器是一…...

基于vue和vite的计算器
实现思路:1.撰写方案三次迭代(得到方案、项目结构、提问的prompt) 2. 功能实现 3. 优化迭代 计算器项目方案设计(阶段一) 一、项目基本信息 项目名称:基于 Vue 和 Vite 的计算器项目 技术栈: 前…...

《OpenCV:视觉世界的魔法钥匙》
《OpenCV:视觉世界的魔法钥匙》 一、OpenCV 是什么1. 起源与发展支持2. 特点与优势3. 编程语言支持 二、OpenCV 的发展历程1. 重要版本发布时间线2. 版本更新内容 三、OpenCV 的主要功能1. 图像处理2. 特征提取3. 目标检测4. 运动分析5. 人脸识别6. 其他功能 四、Op…...

部署kafka并通过python操作
目录 一、安装JDK1.81、检查服务器是否已安装JDK2、若已安装JDK,进行卸载3、更新yum源4、搜索JDK1.8安装包5、安装JDK1.86、查看是否安装成功7、配置环境变量 二、安装Kafka1、下载并解压kafka部署包至/usr/local/目录2、修改server.properties3、修改/etc/profile4…...

【JAVA】Java高级:数据库监控与调优:SQL调优与执行计划的分析
作为Java开发工程师,理解SQL调优和执行计划的分析是至关重要的。这不仅可以帮助我们提高数据库查询的效率,还能减少系统资源的消耗,提升整体应用的性能。 1. SQL调优的重要性 随着数据量的增加和用户请求的增多,数据库的性能问题…...

【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]
目录 参考资料: 利用 Boot 选择不同的启动方式: 单片机的存储结构(主 FLASH/系统存储器/嵌入式 SRAM): 1. Cortex-M 内核芯片——启动原理: 1.1. 启动流程: 1.2. 根据单片机的存储器映射和架构图:启动…...

跨库移植 SQL
背景 应用程序可能要基于不同数据库工作,各种数据库的 SQL 语法大体一致,但仍有些差别,结果就要改造这些 SQL,而这事通常只能手工调整,工作量大还容易出错。 完全自动改造 SQL 几乎是无法做到的,毕竟各种…...

(软件测试文档大全)测试计划,测试报告,测试方案,压力测试报告,性能测试,等保测评,安全扫描测试,日常运维检查测试,功能测试等全下载
1. 引言 1.1. 编写目的 1.2. 项目背景 1.3. 读者对象 1.4. 参考资料 1.5. 术语与缩略语 2. 测试策略 2.1. 测试完成标准 2.2. 测试类型 2.2.1. 功能测试 2.2.2. 性能测试 2.2.3. 安全性与访问控制测试 2.3. 测试工具 3. 测试技术 4. 测试资源 4.1. 人员安排 4.2. 测试环境 4.2.…...

Vue前端开发-路由跳转及带参数跳转
在Vue 3中,由于没有实例化对象this,因此,无法通过this去访问 $route对象,而是通过导入一个名为 useRouter 的方法,执行这个方法后,返回一个路由对象,通过这个路由对象就可以获取到当前路由中的信…...

服务器上安装 Node.js
在服务器上安装 Node.js 的过程根据你使用的操作系统和环境可能会有所不同。以下是一些常见的 Linux 发行版(如 Ubuntu 或 CentOS)上的安装步骤。 在基于 Red Hat/CentOS 的系统上安装 Node.js 设置 EPEL 仓库 如果没有启用 EPEL (Extra Packages for E…...

在阿里云/Linux环境搭建Gitblit服务
在阿里云/Linux环境搭建Gitblit服务 1. 整体描述2. 前期准备3. 安装步骤3.1 下载gitblit3.2 上传gitblit3.3 解压文件3.4 修改文件配置3.5 启动gitblit3.6 安全组配置 4. 总结 1. 整体描述 前段时间买了一个阿里云服务器,2核2G,3M固定带宽的配置&#x…...

MicroBlaze软核开发(二):GPIO
实现功能:使用 MicroBlaze软核,配置GPIO用拨码开关控制LED灯 Vivado版本:2018.3 目录 引言 vivado部分: 一、配置GPIO 二、生成HDL文件编译 SDK部分: 一、导出硬件启动SDK 二、新建应用程序工程 三、编写程序代…...

threejs相机辅助对象cameraHelper
为指定相机创建一个辅助对象,显示这个相机的视锥。 想要在场景里面显示相机的视锥,需要创建两个相机。 举个例子,场景中有个相机A,想要显示相机A的视锥,那么需要一个相机B,把B放在A的后面,两个…...

Luma 视频生成 API 对接说明
Luma 视频生成 API 对接说明 随着 AI 的应用变广,各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多,从最初的写作,到医疗教育,再到现在的视频。 Luma 是一个专业高质量的视频生成平…...

服务器数据恢复—EVA存储硬盘磁头和盘片损坏离线的数据恢复案例
服务器存储数据恢复环境&故障: 一台HP EVA存储中有23块硬盘,挂接到一台windows server操作系统的服务器。 EVA存储上有三个硬盘指示灯亮黄灯,此刻存储还能正常使用。管理员在更换硬盘的过程中,又出现一块硬盘对应的指示灯亮黄…...

【Python】深入探索Python类型检查:掌握 `typing` 模块的高级用法
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着代码复杂度的增加,类型安全性在现代开发中变得尤为重要。Python自3.5引入类型提示(type hints),为开发者提供了静态类型检查的能力,而typing模块则是这一系统的核心。本篇文章深入研究Python的类型提示及…...

Android学习15--charger
1 概述 最近正好在做关机充电这个,就详细看看吧。还是本着保密的原则,项目里的代码也不能直接用,这里就用的Github的。https://github.com/aosp-mirror 具体位置是:https://github.com/aosp-mirror/platform_system_core/tree/mai…...

顶会新宠!KAN-LSTM完美融合新方案
2024深度学习发论文&模型涨点之——KANLSTM KAN-LSTM混合预测模型是一种结合了自注意力机制(KAN, Key-attention network)和长短时记忆网络(LSTM)的深度学习模型,主要用于序列数据的预测任务,如时间序…...

JS中对象的浅拷贝,深拷贝和引用
JS中对象的浅拷贝,深拷贝和引用 浅拷贝和深拷贝的区别主要在于它们如何处理引用类型的数据(如数组和对象),而引用简而言之就是换了个变量名。 浅拷贝 引用:浅拷贝只复制对象的第一层属性,对于嵌套的对象或…...