Skip to content

Commit f318c97

Browse files
fix: restore owner after mcm.SetConfig() in fork tests with --test-signer (#478)
1 parent f5229ba commit f318c97

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

.changeset/tender-bats-throw.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"chainlink-deployments-framework": patch
3+
---
4+
5+
fix: restore owner after mcm.SetConfig() in fork tests with --test-signer

engine/cld/legacy/cli/mcmsv2/layout/layout_mutations.go

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ func ChangeAddressSlot(lggr logger.Logger, layoutData string, url string, layout
4949
func 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

Comments
 (0)