本文档是执行由链上治理批准的Security Council Phase 0的剧本,指导Optimism安全委员会成员如何使用Ledger硬件钱包对交易进行签名,并验证交易的正确性,最后将签名发送给执行者完成链上操作,涉及更新仓库、设置Ledger、模拟和验证交易、批准签名以及发送输出等步骤。
状态:草案,未准备好签署
[!IMPORTANT] !!! 尚不要使用此剧本进行签名,因为 安全委员会成员批准提案尚未通过,并且 最终的多重签名尚未设置。
这是用于执行经治理批准的安全委员会阶段 0 的剧本。 有两个与此相关的治理提案:
两者都应被视为真理来源,并由多重签名者用于验证链上操作的正确性。
cd superchain-ops
git pull
just install
cd eth/1-security-council-phase-0
你的 Ledger 需要连接并解锁。 需要在 Ledger 上打开 Ethereum 应用程序,并显示消息“Application is ready”。
确保你的 ledger 仍然解锁并运行以下命令。
请记住,默认情况下,just 使用从 /0
(第一个 nonce)派生的地址运行。
如果你希望使用其他帐户,请运行 just simulate [X]
,其中 X 是你要使用的地址的派生路径。
just simulate
你将从输出中看到一个“Simulation link”。
将此 URL 粘贴到你的浏览器中。 可能会提示你选择一个项目,任何项目都可以。 如有必要,你可以创建一个。
点击“Simulate Transaction”。
我们将执行 3 项验证,并提取域哈希和消息哈希以在你的 Ledger 上批准:
确保你位于 Tenderly 模拟的“Overview”选项卡上,要验证模拟的完整性,我们需要检查以下内容:
just simulate 1
调用脚本,它将使用 m/44'/60'/1'/0/0 代替来派生地址。现在点击“State”选项卡。 验证:
0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A
处只有一个状态覆盖,它将存储槽 0x4
覆盖为新值 0x1
。
此覆盖仅旨在将 Foundation 多重签名的 quorum 阈值更改为 1,以便我们可以对执行进行 Tenderly 模拟,ProxyAdmin
合约在 0x543ba4aadbab8f9025686bd03993043599c6fb04
的 _owner
被更改为新的多重签名,并且此新多重签名的配置正确地实现了两个批准的提案:
如果这是一个正常操作,那么所有这些地址都应该成为批准此升级的 Optimism 治理投票的一部分。
现在我们已经验证了交易执行了正确的操作,我们需要提取域哈希和消息哈希以进行批准。
返回“Overview”选项卡,并找到 GnosisSafe.checkSignatures
调用。
此调用的 data
参数包含将在你的 Ledger 中显示的域哈希和消息哈希。
这是一个示例屏幕截图。 请注意,哈希值可能不同:
它将是 0x1901
、域哈希和消息哈希的串联:0x1901[domain hash][message hash]
。
记下此值。 你需要将其与签名时 Ledger 屏幕上显示的值进行比较。
验证完成后,就可以实际签署交易了。 确保你的 ledger 仍然解锁并运行以下命令:
just sign # or just sign <hdPath>
[!IMPORTANT] 这是剧本中安全最关键的部分:确保以下两个位置中的域哈希和消息哈希匹配:
无需验证控制台中打印的任何内容。 也不需要打开新的 Tenderly 模拟链接。
验证后,签署交易。 你将在控制台中看到 Data
、Signer
和 Signature
。 格式应如下所示:
Data: <DATA>
Signer: <ADDRESS>
Signature: <SIGNATURE>
仔细检查签名者地址是否正确。
链上未发生任何事情 - 这些是链下签名,将由协调员收集以供执行。 一旦收集到足够数量的签名,任何人都可以执行,因此协调员将为方便起见进行最终执行。
与协调员分享 Data
、Signer
和 Signature
,恭喜,你已完成!
SIGNATURES
环境变量,即 export SIGNATURES="0x[SIGNATURE1][SIGNATURE2]..."
。just execute 0 # or 1 or ...
以在链上执行交易。例如,如果 quorum 为 2 并且你获得以下输出:
Data: 0xDEADBEEF
Signer: 0xC0FFEE01
Signature: AAAA
Data: 0xDEADBEEF
Signer: 0xC0FFEE02
Signature: BBBB
然后你应该运行
export SIGNATURES="0xAAAABBBB"
just execute 0 # or 1 or ...
- 原文链接: github.com/ethereum-opti...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!