Regarding our latest updates, on February 18th, ACC members held an extraordinary meeting during which all former multisig signers were removed to clean up the multisig and ensure that only the addresses of the current season’s members have signing authority.
This post also aims to serve as a record to guide future iterations of the ACC on how to address these types of situations.
The Problem
When attempting to remove former signers in a batch transaction, after obtaining all the necessary approvals and trying to execute the transaction, it kept failing.
Each Safe has a list for the owners. It’s a linked list. That means that for each owner in the list, it points to the owner before them and the owner after.
So let’s say we have a safe with 4 owners, the list would look like this:
Owner 1: Address, link to owner 2, link to owner 4
Owner 2: Address, link to owner 1, link to owner 3
Owner 3: Address, link to owner 2, link to owner 4
Owner 4: Address, link to owner 3, link to owner 1
This means that any time we remove or add an owner to the list, we have to update the owner and owners around that owner. So if we wanted to change owner 3, the contract needs to update owner 2 and owner 4.
This is why each removal and add needs to be its own transaction, that needs to be executed before a new one is added.
We had no issues adding new signers, but we did face problems removing the former ones.
The Solution
The only way to resolve this issue was to remove the former signers one by one.
But this meant: creating the transaction, reaching the approval threshold, and executing the transaction. Once completed, the same steps had to be repeated over and over until all former signers were removed.
After coordinating among the ACC members, we successfully completed this task in a single session of approximately 20 minutes.
For transparency purposes, we are sharing the details of the transactions carried out during that session:
Trxs
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
OP Mainnet Transaction Hash (Txhash) Details | OP Mainnet Etherscan
Special thanks to @vonnie610 for helping me understand the problem and find the solution. Also, to all ACC members who contributed to making this process run smoothly.