news 2026/6/8 11:36:49

多签钱包:多人签名才能执行的操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多签钱包:多人签名才能执行的操作

0x01 什么是多签钱包

imtoken钱包

tp钱包

比特派钱包

与多签钱包对应的是单签钱包[2],我们要往区块链上发送一笔转账交易,需要去用钱包去做一个签名,我们自己签好名把交易发送出去,交易执行成功转账就成功,这就是典型的单签钱包,也是我们平时使用最多的钱包。

多签钱包,顾名思义,就是需要多个人去签名执行某个操作的钱包。使用多签钱包进行转账,往往需要 >= 1 个人去签名发送交易之后,转账操作才真正完成。使用多签钱包时,我们可以指定 m/n 的签名模式,就是 n 个人里面有 m 个人签名即可完成操作。比如 2/3 签名模式,就是 3 个人里面有两个人签名就可以。

在以太坊中,多签钱包往往是一个智能合约。https://gnosis-safe.io/ 应该是市场占有率比较高的一个多签钱包,我大概 2018 年就开始用了,用的是它的第一个版本,现在最新版本功能已经强大很多。

0x02 什么时候需要用多签钱包

需要用多签钱包的场景还是挺多的。比如:

资金安全

在单签钱包中,决定加密货币所有权和管理权的私钥仅掌握在单人手中,一旦私钥丢失或持有者遗忘钱包助记词,那就意味着持有者失去了对该钱包地址的控制权,与其相关联的加密资产将完全丢失。而多签钱包的存在,最大程度降低了单个私钥丢失时的资产损失风险。以 2/3 模式为例,在全部 3 个私钥中,只要有 2 个私钥完成了签名授权操作就能进行相关加密货币的交易。即使有 1 个私钥丢失,还能通过剩下的 2 个私钥完成对资产的转移,避免资产损失。

这种情况下,个人可以创建一个多签钱包,再创建多个钱包地址,分布在多个地方,比如 metamask 一个,手机上一个,冷钱包一个,把这几个地址都加入多签钱包中,动用里面资产需要用其中两个钱包共同签名,为了方便,使用 1/3 模式签名也可以,这样,如果一个设备丢了,可以立马把该设备的钱包地址从多签钱包移出,保证资产安全。

资产共管

很多 DeFi 协议/DAO 组织/区块链团队其实都有自己的金库,金库里的钱是不能由任何一个人直接动用的,每次动用都要经过多数人的同意或社区投票。这时使用多签钱包来保存金库资产是再合适不过了。

多签操作

在目前这个发展阶段,很多去中心化协议其实都是有个管理员权限的,这个管理员权限往往可以更改协议的某些关键参数。行业普遍做法是把这个管理员权限交给一个多签钱包或时间锁,当需要更改参数时,需要多个人共同签署相关操作。

0x03 脚本操作

不管是 Gnosis 多签钱包的第一个版本 https://wallet.gnosis.io/#/wallets 还是当前最新版本 https://gnosis-safe.io/ 界面操作其实都挺简单方便的,但当操作比较多时会比较繁琐。

其实脚本操作也挺方便的,Gnosis 的核心操作就两个:

代码语言:javascript

AI代码解释

function submitTransaction(address destination, uint value, bytes calldata data) external returns (uint transactionId); function confirmTransaction(uint transactionId);

使用submitTransaction来提交多签交易,使用confirmTransaction来确认交易。以下是示例代码:

代码语言:javascript

AI代码解释

let multisigWalletAddress = ""; let unitrollerAddress = ""; let multisigInstance = await MultisigWallet.at(multisigWalletAddress); let comptroller = await Comptroller.at(unitrollerAddress); let allSupportedMarkets = await comptroller.getAllMarkets(); for (market of allSupportedMarkets) { let cTokenInstance = await CToken.at(market); let cTokenName = await cTokenInstance.name(); console.log(`cTokenName: ${cTokenName}`) let acceptAdminEncode = await cTokenInstance.contract.methods._acceptAdmin().encodeABI(); multisigInstance.submitTransaction(cTokenInstance.address, 0, acceptAdminEncode); console.log(`accept admin to ${multisigWalletAddress} for token ${cTokenName} : ${cTokenInstance.address}`); }

这段代码执行后会生成很多待确认的多签任务,其它参与多签的人运行类似下面脚本进行确认就好了:

代码语言:javascript

AI代码解释

let multisigWalletAddress = ""; let multisigInstance = await MultisigWallet.at(multisigWalletAddress); for (var transactionId = 0; transactionId <= 10; transactionId++) { await walletInstance.confirmTransaction(transactionId); console.log("Done to confirm transaction: ", transactionId); }
参考资料

[1]

Ashton:https://learnblockchain.cn/people/29

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 11:51:34

GUID为什么不会重复?

GUID为什么不会重复? GUID/UUID &#xff08;全局唯一标识符&#xff09;之所以被认为“几乎不会重复”&#xff0c;是因为其庞大的组合空间和精心设计的生成算法&#xff0c;使得在现实世界中重复的概率低到可以忽略不计。 以下是 GUID 不会重复的核心原因&#xff1a; 1. 庞…

作者头像 李华
网站建设 2026/6/6 22:38:21

E-Hentai批量下载工具:高效管理数字收藏资源的最佳方案

在数字资源日益丰富的今天&#xff0c;如何高效管理和保存有价值的在线内容成为了许多用户的共同痛点。面对心仪的图库资源&#xff0c;传统的手动保存方式不仅效率低下&#xff0c;还容易导致文件混乱。针对这一需求&#xff0c;E-Hentai-Downloader提供了一个简单而强大的解决…

作者头像 李华
网站建设 2026/6/8 0:49:29

布隆过滤器

一、布隆过滤器 1. 什么是布隆过滤器&#xff1f; 布隆过滤器是一种空间效率极高的概率型数据结构&#xff0c;核心作用是快速判断「一个元素是否存在于集合中」。它的特点可以总结为&#xff1a; 说「元素不在」→ 100%准确&#xff08;绝对没在集合里&#xff09;&#xff1b…

作者头像 李华
网站建设 2026/6/7 3:02:51

【JESD22-B109C】倒装芯片拉伸测试

B109C 测试方法&#xff1a;Flip Chip Tensile Pull 倒装芯片拉伸测试1 范围本测试方法适用于芯片与基板焊点形成后、未涂覆底部填充胶或其他会提高表观结合强度的材料前的倒装芯片。其用途包括&#xff1a;评估特定倒装芯片的芯片接合工艺一致性与质量&#xff1b;评估特定倒装…

作者头像 李华
网站建设 2026/6/8 11:28:35

2025年应届生闭坑指南:如何挑选低费用、高认可度的AI技能证书?

随着人工智能技术席卷各行各业&#xff0c;手握相关技能证书已成为应届毕业生提升就业竞争力的重要筹码。然而&#xff0c;面对市场上琳琅满目、价格不一的认证项目&#xff0c;许多同学不禁感到迷茫&#xff1a;如何避开“高价低能”的坑&#xff0c;选择一款既具高含金量又不…

作者头像 李华
网站建设 2026/6/7 18:32:48

基于YOLOv12农作物检测系统1:农作物检测数据集说明(含下载链接)

一. 前言 本篇博客是《基于YOLOv12农作物检测系统》系列文章之《农作物检测数据集说明(含下载链接)》&#xff0c;网上有很多农作物检测数据集的数据&#xff0c;百度一下&#xff0c;一搜一大堆&#xff0c;但质量参差不齐&#xff0c;很多不能用&#xff0c;即使一个一个的看…

作者头像 李华