一.多签钱包概述
多签钱包主要是解决安全的问题,用多个钥匙来管理一个资产,例子来说,想象一个保险箱,当想使用里面的资产的时候必须需要两个或者多个钥匙才能打开使用,如果只有一把是无法使用,为了增加钱包的灵活性,当然可以设置更多的条件例如2/3或者3/3等条件.
二.多签钱包的特性
优点:
- 增加安全性
使用多签钱包,用户就能大幅避免由于私钥丢失或被盗所引起的安全性问题。因为即使其中之一的私钥被盗,资金也将是安全
- 方便企业仲裁
创建一个2/3 的多签钱包则可以允许双方透过第三方协力厂商控管交易,来作为相互信任的仲裁者,以防出现信任危机。举例来说,A 在钱包中存入货款,如果B 按照约定提供了相应的产品或服务,则他们俩就可以使用他们各自的私钥签署并完成此次交易。
但假设出现分歧时,作为仲裁者的C 则可以介入,并根据他的裁决来将他的签名提供给正确的一方(A 或B),借此成功动用金库资金
- 多重验证避免手误
当用户在转账或者做交易提交的时候,可以其他签名者帮忙验证输入的信息是否有误,例如地址,金额等。很大程度的能避免人工误输
缺点:
- 操作便捷下降低
由于增加了多重签名验证过程,所以每一笔都会经过设定好的流程,如果对于一些急迫或频繁需要交易的就会小显的特别麻烦流程繁琐
- 操作权容易丢失
使用该技术时,当你设置2/2的签名时,如果其中一个私钥丢失,意味着呢失去了项目的所有操作权。
三.多签钱包工作原理
在以太坊中,多签钱包往往是一个智能合约,在智能合约里面编写者各种设定好业务的规则,所有操作和存储都根据制定的规则执行.
我们以 Gnosis的一个多签钱包地址的合约为例进行核心代码阐述
定义了mapping transactions ,使用uint来对应struct 记录每一个需要操作转账信息
并且定义了多个mapping和变量,用来记录,确认数,数组签名者名单等。
制定了多个函数修改器用来做数据的检验,例如 ownerExists 所有者是否存在, confirmed是否满足,当前交易是否已执行等。
上图中的构造函数,从一开始创建合约的时候就初始化,通过传入 onwers
参数传入授权的多个钱包地址,以及 required
参数表示最少签名人数。
即以M/N多签模式为例,N表示 owners.length
,N表示 require
提交钱包交易的申请,请求其他多签管理员签名,传入destination接收者的地址,以及value金额,还有data数据
参数 destination
是接受人的钱包地址,value
为转出的 ether
数量(以 wei
为单位),data
是该交易的数据。
前两个参数比较好理解,向某地址转出多少资产,data
参数可以传入任意数组来实现任意功能,比如如果转出ETH那么此参数是[]
(空),如果转出ERC20
代码(如USDT
),则此参数是ERC20
transfer
方法的哈希和参数 ([0]:xxxxx [1]:xxxxx
)
addTransaction 发起交易,传入destination接收者的地址,以及value金额,还有data数据,valuetransactionCount 自增每笔的交易赋值到id,从零开始,并且用transactions的mapping存储,最后返回交易ID.
四. 目前主流的多签钱包
- Gnosis Safe
nosis Safe是以太坊上最早提供、也是目前最受欢迎的链上多签钱包解决方案,保护超过400 亿美元的数位资产,支持以太坊、币安链以及Polygon 等12 个网路的多签钱包。多家Defi 巨头包括:Aave、1inch、SushiSwap…等也都是该项目的用户
Gnosis Safe 的功能繁多,但可以大略整理出以下几点特色:
1.DeFi 集成:可与多数协议轻松互动,用于投资、交易和管理数字资产
2.隐私:无需共享任何个人数据,例如姓名、地址或电话号码
3.NFTs:可以存储ERC-721 代币,例如数位艺术、ENS 域名或游戏资产
4.无gas 签名:部分多重签名交易可以在链下签名,为用户节省gas 费和时间
5.开源:Gnosis Safe 的所有组件(前端、后端、合约)都已开源
-
Ownbit
支持多个币种的多签
当前支持多签的币种包括:比特币(BTC)、以太坊(ETH/ERC20)、波场(TRX/TRC20)、币安智能链(BSC/BEP20)、莱特币(LTC)、比特币现金(BCH)、达世币(DASH)、Zcash(ZEC)、狗狗币(DOGE)、极特币(DGB)。
多签设计安全通用
多签是去中心化的,并不依赖于 Ownbit 服务器,多签资产的安全完全受控于各参与方;
BTC的多签采用标准的P2SH来实现,多签地址按特定的顺序生成,用户可以按照技术标准里的步骤恢复多签钱包,从而花费多签资金,整个过程可以不依赖于 Ownbit;