# About Multisig & AA

By [Untitled](https://paragraph.com/@0x782fa23a5c780ec6d72de7a9615dd95eba973339) · 2023-10-02

---

多签钱包
----

多签钱包是一种电子钱包，特点是交易被多个私钥持有者（多签人）授权后才能执行：例如钱包由`3`个多签人管理，每笔交易需要至少`2`人签名授权。多签钱包可以防止单点故障（私钥丢失，单人作恶），更加去中心化，更加安全，被很多DAO采用。

多签钱包合约
------

在以太坊上的多签钱包其实是智能合约，属于合约钱包。下面我们写一个极简版多签钱包`MultisigWallet`合约，它的逻辑非常简单：

1.  设置多签人和门槛（链上）：部署多签合约时，我们需要初始化多签人列表和执行门槛（至少n个多签人签名授权后，交易才能执行）。Gnosis Safe多签钱包支持增加/删除多签人以及改变执行门槛，但在咱们的极简版中不考虑这一功能。
    
2.  创建交易（链下）：一笔待授权的交易包含以下内容
    
    *   `to`：目标合约。
        
    *   `value`：交易发送的以太坊数量。
        
    *   `data`：calldata，包含调用函数的选择器和参数。
        
    *   `nonce`：初始为`0`，随着多签合约每笔成功执行的交易递增的值，可以防止签名重放攻击。
        
    *   `chainid`：链id，防止不同链的签名重放攻击。
        
3.  收集多签签名（链下）：将上一步的交易ABI编码并计算哈希，得到交易哈希，然后让多签人签名，并拼接到一起的到打包签名。
    
        交易哈希 + 多签人A签名 + 多签人B签名 = 打包签名
        
    
4.  调用多签合约的执行函数，验证签名并执行交易（链上）。
    

账户抽象(ERC-4337)
--------------

#### 什么是ERC-4337？

以太坊账户抽象旨在将协议现有两类账户（外部拥有账户(EOA)和合约账户）的功能合二为一。

最终要实现的目标是单一合约账户与代币交易并同时创建合约。这一变化使创新型钱包设计成为可能，如社交恢复、定制和可升级性等。

换个角度看，ERC-4337为单一账户中的钱包带来了合约功能。这样一来，多重身份验证和自动支付等服务将更易于设置。

#### 为何需要ERC-4337？

与比特币网络的**未花费交易输出**(UTXO)模块不同，以太坊协议使用**基于账户的模式**。也就是说，以太坊协议会在交易确认时追踪并更新账户的可用余额。

以太坊中的两种账户各自具有不同的功能。外部拥有账户由用户拥有和控制，而合约账户是部署到网络中的智能合约。两种账户均可接收、持有和发送以太币或代币。

以太坊中现有的大多数加密货币钱包均为外部拥有钱包，如MetaMask等。这些钱包都受限于外部拥有钱包的设定规则。受限条件包括账户访问完全依靠私钥，且所有交易均需签名。因此，钱包设置程序和私钥安全措施通常十分复杂，且不便于用户使用。如果用户丢失助记词，就意味着无法再访问钱包。

ERC-4337消除了此类限制。由智能合约账户而非外部拥有账户管理的智能合约钱包，例如UniPass和Safe等，可以达到同样的目的。但是，用户必须在两个账户中管理以太币，用于支付燃料费或依靠中心化中继系统。ERC-4337将两个账户的功能合二为一，便于所需钱包功能进行部署，从而消除了此类限制。

#### ERC-4337如何运作？

ERC-4337通过引入称为“UserOperation”的更高层伪交易对象来实现账户抽象。UserOperation与汇总具有相似之处。在ERC-4337中，不同的用户将UserOperation对象发送到单独的内存池中。

捆绑者(Bundler)将这些对象打包成一笔交易，纳入到一个区块当中。捆绑者支付捆绑交易的燃料费，但收取单独执行UserOperation的费用。捆绑者与验证者的工作方式类似，即根据费用优先等级逻辑选择要纳入的对象。

钱包添加了包括validateUserOp在内的新功能，从而还可用作智能合约。名为“EntryPoint”的新合约也引入其中，充当执行这些新功能的安全门。

#### ERC-4337要达成哪些目标？

**账户抽象**：用户可以享用同时具备智能合约和外部拥有账户功能的单一账户。

**去中心化**：任意捆绑者均可参与到流程当中。

**避免共识更改**：以太坊共识层侧重于针对可扩展性的升级，因此能加快应用普及速度。

**启用创新用例**：包括聚合签名、每日交易限额设置、账户紧急冻结、白名单设置以及保护隐私的应用程序等。

**省时并节省燃料费**：捆绑者能将UserOperation对象打包到一笔交易中，因此能节省时间和燃料费。

#### ERC-4337对用户有何意义？

\*\*低门槛钱包和恢复 & 更好的安全性：\*\*无需助记词。多重身份验证和账户恢复。

\*\*可定制的钱包功能：\*\*用户可以享用丰富的定制服务，包括自动支付、预先批准交易和捆绑交易。

\*\*更灵活的燃料费支付方式：\*\*由ERC-4337提供支持的钱包现在可用任意ERC-20代币和其他币种支付燃料费。

---

*Originally published on [Untitled](https://paragraph.com/@0x782fa23a5c780ec6d72de7a9615dd95eba973339/about-multisig-aa)*
