ENS 在 2023 年 4 月进行了大量更新,本站 “教程” 和 “文档” 中的相关内容已经过时。 如需了解最新的使用说明或技术文档,请到 ENS 官方提供的 支持文档 进行查阅。

Multisig 多重签名合约 - ENS 的控制者

ENS 团队最初是用一套自己编写的 MultiSig 多重签名合约作为 ENS 根域合约 Root 的控制者,但后来 ENS 团队采用了 Gnosis Safe 服务提供的多重签名合约,也就是将 Root 合约的控制权通过一笔交易转让给了一个 Gnosis Safe 代理合约。在那之后,控制根域的 7 个密钥管理者的就一直使用新的代理合约来签署交易。

尽管如此,ENS 根域最初的管理活动都是通过团队自己编写的那套 MultiSig 多重签名合约来完成的,所以对于 ENS 研究者来说,是有必要了解这个合约的。

介绍

关于 MultiSig-0x91114 合约的几个说明:

  1. 它是一个多重签名账户合约,并设置了 7 个控制账户;
  2. 这 7 个账户中的任一账户均可从该合约发起交易,发起合约交易的账户会同时第 1 个为该交易签名;
  3. 合约交易在 4 个控制账户完成签名后才能生效,也就是除了发起交易的账户之外还需要有 3 个账户签名;
  4. 第 4 个账户完成签名之后,交易确认完毕,该账户就会自动执行这笔合约交易;
  5. 合约交易执行后,如果其他账户再次为该合约交易进行签名,就会签名失败。

Multisig 合约的部分关键交易

No. 合约名称 相关交易 发送方 调用函数 备注
1 MultiSig-0x91114 0xe1224 0x8472d Multisig 合约创建
2 MultiSig-0x91114 0x04ee3 0xfdb33 ENS:setSubnodeOwner 0#:设置 .eth 的所有者为 TempRegistrar-0x18c6c
3 MultiSig-0x91114 0x6294f 0xfdb33 ENS:setSubnodeOwner 1#:设置 .eth 所有者为 0x00000
4 MultiSig-0x91114 0x158de 0xfdb33 ENS:setSubnodeOwner 2#:设置 .eth 所有者为 TempRegistrar-0x6090a
5 MultiSig-0x91114 0x51589 0xfdb33 ENS:setSubnodeOwner 3#:设置 .reverse 所有者为 MultiSig-0x91114
6 MultiSig-0x91114 0xb0ec5 0xfdb33 ENS:setSubnodeOwner 4#:设置 .addr.reverse 所有者为 ReverseRegistrar-0x9062c
7 MultiSig-0x91114 0xc2c1e 0xfdb33 MultiSig:replaceOwner 5#:将多重账户中 0x5c359 替换为 0x3ac6c
8 MultiSig-0x91114 0x5a467 0xfdb33 ENS:setSubnodeOwner 6#:设置 .xyz 所有者为 DNSRegistrar-0xf7004
9 MultiSig-0x91114 0xdad5d 0xfdb33 ENS:setSubnodeOwner 7#:设置 .luxe 所有者为 0x765b1
10 MultiSig-0x91114 0x71e94 0xfdb33 ENS:setSubnodeOwner 8#:设置 .kred 所有者为 0x56ca9
11 MultiSig-0x91114 0xe4a5b 0xfdb33 ENS:setSubnodeOwner 9#:设置 .club 所有者为 0x1eb4b
12 MultiSig-0x91114 0x9f790 0xec186 ENS:setSubnodeOwner a#:设置 .eth 所有者为 BaseRegImp-0xfac7b
13 MultiSig-0x91114 0x092ba 0xec186 BaseRegImp:setResolver b#:设置 .eth 的解析器为 OwnedResolver-0x97683
14 MultiSig-0x91114 0x4ee5d 0xfdb33 ENS:setOwner c#:设置根域的所有者为 Root-0x28508
15 MultiSig-0x91114 0xe30c2 0xfdb33 Root:setController d#:设置 NameBazaarRescue-0x2a2a1 为 Root 管理员
16 MultiSig-0x91114 0xb407a 0xfdb33 BaseRegImp:addController e#:添加 ShortNameClaims-0xf7c83BaseRegImp-0xfac7b 管理员
17 MultiSig-0x91114 0xd7d13 0xfdb33 MultiSig:replaceOwner f# (!):将多重账户中 0xfdb33 替换为 0xb8c2c
18 MultiSig-0x91114 0x57d9f 0xfdb33 MultiSig:replaceOwner 10# (!):将多重账户中 0xfdb33 替换为 0xb8c2c
19 MultiSig-0x91114 0x5e372 0xfdb33 Root:setSubnodeOwner 11#:设置 .art 所有者为 0xbaf54
20 MultiSig-0x91114 0xbcb42 0xfdb33 BaseRegImp:addController 12#:添加 ShortNameAuctionControllerBaseRegImp-0xfac7b 管理员
21 MultiSig-0x91114 0x00acd 0xfdb33 BaseRegImp:addController 13#:添加 ETHRegistrarController-0xb22c1 为 BaseRegImp-0xfac7b 管理员
22 MultiSig-0x91114 0xe2957 0xfdb33 BaseRegImp:addController 14# (?):添加 ETHRegistrarController-0xd931ab 为 BaseRegImp 管理员

MultiSig 合约交易解析

账户 0xfdb33 在 May-29-2017 02:06:25 PM 发起了一笔交易: 0x51589 ,交易的数据输入如下:

Function: submitTransaction(address destination, uint256 value, bytes data)

MethodID: 0xc6427474
[0]: 000000000000000000000000314159265dd8dbb310642f98f50c066173c1259b
[1]: 0000000000000000000000000000000000000000000000000000000000000000
[2]: 0000000000000000000000000000000000000000000000000000000000000060
[3]: 0000000000000000000000000000000000000000000000000000000000000064
[4]: 06ab592300000000000000000000000000000000000000000000000000000000
[5]: 00000000dec08c9dbbdd0890e300eb5062089b2d4b1c40e3673bbccb5423f7b3
[6]: 7dcf9a9c000000000000000000000000911143d946ba5d467bfc476491fdb235
[7]: fef4d66700000000000000000000000000000000000000000000000000000000

[0] 提供 destination 参数,即该交易的目标地址是 0x31415 ,这是 ENS 合约的地址 ;
[1] 提供 value 参数,即该交易发送的 ETH 数量为 0 ;
[3] 十六进制 64 转换为十进制为 100,表示负载数据为 100 字节,包括函数 ID(分配 4 字节)及其 3 个参数(每个参数分配 32 字节);
[4] - [7] 提供 data 参数,包含的信息如下:

  1. 调用目标合约中 ID 为 06ab5923 的函数,即 set-subnode-owner 函数
  2. 该函数需要接收 3 个参数 node label new-owner
  3. node 参数的值为:00000...0000
  4. label 参数的值为:dec08...f7b3 ,这是 reverse 的哈希
  5. new-owner 参数的值为:91114...d667

从以上信息中,可以判断出来,该交易执行的是将顶级名称 .reverse 的所有者设置为 0x91114...d667(即 Multisig 多签合约)。

MultiSig 合约的 7 个密钥管理者账户

通过这个页面上的 getOwners 选项卡可以查看当前 7 个管理者的以太坊地址。

下表中是 ENS 根域最初的 7 个管理员地址。以下介绍的合约及相关内容已经过时,该内容只作为学习研究 ENS 及其发展过程使用。

No. 初始账户 当前账户 备注
1 0xfdb33 0xfdb33
2 0x55e27 0x55e27
3 0x24b13 0x24b13
4 0x98287 0x98287
5 0xc1eaf 0xc1eaf
6 0xec186 0xec186
7 0x5c359 0x3ac6c 变更于 MultiSig 合约的 5# 交易
转载本站内容请注明出处和链接。咨询 ENS 问题或加入 ENS 中文社区请联系 我们