@@ -49,9 +49,7 @@ func ChangeAddressSlot(lggr logger.Logger, layoutData string, url string, layout
4949func SetMCMSigner (ctx context.Context , lggr logger.Logger , layoutData string , privateKeyHex , newOwnerAddr , signerAddr , rpcURL string , cID string , mcmsAddr string ) error {
5050 lggr .Infow ("Setting MCMS signer" , "RPCURL" , rpcURL , "MCMSContractAddress" , mcmsAddr , "NewOwnerAddress" , newOwnerAddr , "SignerAddress" , signerAddr , "ChainID" , cID )
5151 mcmAddress := common .HexToAddress (mcmsAddr )
52- if err := ChangeAddressSlot (lggr , layoutData , rpcURL , "_owner" , mcmsAddr , newOwnerAddr ); err != nil {
53- return fmt .Errorf ("could not change address slot: %w" , err )
54- }
52+
5553 client , err := ethclient .Dial (rpcURL )
5654 if err != nil {
5755 return fmt .Errorf ("failed to connect to %s: %w" , rpcURL , err )
@@ -68,10 +66,33 @@ func SetMCMSigner(ctx context.Context, lggr logger.Logger, layoutData string, pr
6866 if err != nil {
6967 return fmt .Errorf ("failed to create transactor: %w" , err )
7068 }
69+
7170 contract , err := gethwrappers .NewManyChainMultiSig (mcmAddress , client )
7271 if err != nil {
7372 return fmt .Errorf ("failed to create contract wrapper from address %s: %w" , mcmAddress , err )
7473 }
74+
75+ origOwnerAddr , err := contract .Owner (& bind.CallOpts {Context : ctx })
76+ if err != nil {
77+ return fmt .Errorf ("failed to get mcm owner: %w" , err )
78+ }
79+ lggr .Infow ("mcm original owner" , "mcm address" , mcmAddress , "owner" , origOwnerAddr )
80+
81+ err = ChangeAddressSlot (lggr , layoutData , rpcURL , "_owner" , mcmsAddr , newOwnerAddr )
82+ if err != nil {
83+ return fmt .Errorf ("could not change address slot: %w" , err )
84+ }
85+ lggr .Infow ("changed mcm owner" , "mcm address" , mcmAddress , "new owner" , newOwnerAddr )
86+
87+ defer func () {
88+ cerr := ChangeAddressSlot (lggr , layoutData , rpcURL , "_owner" , mcmsAddr , origOwnerAddr .Hex ())
89+ if cerr != nil {
90+ lggr .Errorw ("failed to restore the mcm owner" , "mcm address" , mcmAddress , "orig owner" , origOwnerAddr .Hex ())
91+ } else {
92+ lggr .Infow ("restored mcm owner" , "mcm address" , mcmAddress , "orig owner" , origOwnerAddr .Hex ())
93+ }
94+ }()
95+
7596 singleSigners := []common.Address {
7697 common .HexToAddress (signerAddr ),
7798 }
0 commit comments