0
点赞
收藏
分享

微信扫一扫

基于Gnosis Safe实现以太坊多签交易

q松_松q 2022-03-11 阅读 98
区块链

1. 引言

账号为以太坊的主要元素,用于持有资金和运行交易,读或写。若将以太坊看成是状态机,则写交易会修改其状态。执行以太坊交易需要向矿工支付gas费。

以太坊有2种账号类型:

  • 1)Externally Owned Accounts (EOA) 或称为钱包:以公私钥对标记。可持有资金和执行交易。如给另一钱包转ETH 或 调用某智能合约来创建NFT。MetaMask为当前最流行的以太坊钱包。
  • 2)合约账号 或称为智能合约:没有私钥,但有code,可通过调用方法来执行相应的code。

若丢失了私钥,则永远丢失了该钱包的访问控制权。如何来避免呢?答案就是多签钱包。

2. 多签钱包

采用智能合约来创建一种新的账号类型——多签钱包。该钱包具有多个秘钥。典型的多签配置可为由3个owners,仅需要其中的2个秘钥就可转账。

在这里插入图片描述
多签钱包非常灵活,可由公司或个人用于不同场景:

  • 1)可安全的持有资金:需要由大多数的owners同意才能转账,单一owner无法控制资金。
  • 2)执行敏感交易:在大多数owners同意的情况下执行敏感交易。
  • 3)个人可以使用multisig来设置密钥冗余。多签的一个属性是,若你丢失了一个秘钥,你仍然可以用户剩余的2个秘钥来恢复钱包。但是若丢失了2个,则没办法了。

3. Gnosis Safe

Gnosis Safe为以太坊的多签钱包,被多个公司信任。截止2021年5月,它保护了220亿美金资产的安全。

Gnosis 是第一个去中心化预测时长。Gnosis技术团队开源了Gnosis Safe工具:

  • https://github.com/gnosis/safe-contracts

可将Gnosis Safe可成是创建和管理多签钱包的工具集:

  • 1)Safe Contracts:为多签合约,支持持有、转移资金(如ETH,ERC20,NFT)和执行交易。可在链上和链下执行交易。
  • 2)Safe UI:为简单的React UI,仅需要60秒来创建一个多签,当前已部署在主网 和 Rinkeby测试网。
  • 3)Safe交易服务:为由Gnosis团队维护的API,可用于Safe UI来存储链下签名。也在主网和测试网上部署。
  • 4)Safe Apps:Gnosis支持将其功能进行扩展,添加自定义功能,如治理管理、公平拍卖等等。

Gnosis Safe具有2条签名流程:【均使用EIP712——标准的签名方法,创建a struct with the transaction arguments, hashes them with keccak256 and then signs them with secp256k1。】

  • 链上签名:每笔签名交易都花费gas,更昂贵。
  • 链下签名

2.1 链上签名

owner对交易签名,并调用Safe.approveHash函数。当阈值达到时,最后的签名者可调用Safe.executeTransaction。每笔交易都花费gas。因此整个链上签名流程更昂贵。

2.2 链下签名

owners在链下对交易进行签名并存储在某处,最后的签名者可调用Safe。executeTransaction函数,将所有的签名作为参数传入来执行交易。

链下签名需要更少的gas,但要求协调收集签名,Safe交易服务 可实现相应的协调功能。

不过,Safe交易服务 为 public API,意味着其在链上执行之前,任何人都可看到Safe中的所有交易。某人可对交易进行front-run。

参考资料

[1] 2021年5月博客 Multisig transactions with Gnosis Safe

举报

相关推荐

0 条评论