@@ -10,12 +10,14 @@ import (
1010
1111 owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers"
1212 chain_selectors "github.com/smartcontractkit/chain-selectors"
13+ mcmschainwrappers "github.com/smartcontractkit/mcms/chainwrappers"
1314 mcmssdk "github.com/smartcontractkit/mcms/sdk"
1415 mcmsaptossdk "github.com/smartcontractkit/mcms/sdk/aptos"
1516 mcmsevmsdk "github.com/smartcontractkit/mcms/sdk/evm"
1617 mcmssolanasdk "github.com/smartcontractkit/mcms/sdk/solana"
1718 mcmstypes "github.com/smartcontractkit/mcms/types"
1819
20+ cldfmcmsadapters "github.com/smartcontractkit/chainlink-deployments-framework/chain/mcms/adapters"
1921 cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment"
2022)
2123
@@ -86,59 +88,37 @@ func McmsInspectorForChain(env cldf.Environment, chain uint64, opts ...MCMSInspe
8688 opt (& options )
8789 }
8890
89- chainFamily , err := mcmstypes .GetChainSelectorFamily (mcmstypes .ChainSelector (chain ))
90- if err != nil {
91- return nil , fmt .Errorf ("failed to get chain family for chain %d: %w" , chain , err )
91+ action := mcmstypes .TimelockActionSchedule
92+ if options .AptosRole .String () != "unknown" {
93+ var err error
94+ action , err = mcmsaptossdk .ActionFromAptosRole (options .AptosRole )
95+ if err != nil {
96+ return nil , fmt .Errorf ("failed to get action from aptos role %s: %w" , options .AptosRole , err )
97+ }
9298 }
9399
94- switch chainFamily {
95- case chain_selectors .FamilyEVM :
96- return mcmsevmsdk .NewInspector (env .BlockChains .EVMChains ()[chain ].Client ), nil
97- case chain_selectors .FamilySolana :
98- return mcmssolanasdk .NewInspector (env .BlockChains .SolanaChains ()[chain ].Client ), nil
99- case chain_selectors .FamilyAptos :
100- // NOTE: Aptos changesets do not use this function. They construct inspectors
101- // directly in utils/mcms.go (GenerateProposal / GenerateCurseMCMSProposal)
102- // because they need finer control over isCurseMCMS.
103- if options .AptosRole .String () == "unknown" {
104- return nil , fmt .Errorf ("aptos role not properly set for chain: %d" , chain )
105- }
106- inspector := mcmsaptossdk .NewInspector (env .BlockChains .AptosChains ()[chain ].Client , options .AptosRole )
100+ chainAccessor := cldfmcmsadapters .Wrap (env .BlockChains )
107101
108- return inspector , nil
109- default :
110- return nil , fmt .Errorf ("unsupported chain family %s" , chainFamily )
111- }
102+ return mcmschainwrappers .BuildInspector (& chainAccessor , mcmstypes .ChainSelector (chain ), action ,
103+ mcmstypes.ChainMetadata {})
112104}
113105
114106func McmsInspectors (env cldf.Environment ) (map [uint64 ]mcmssdk.Inspector , error ) {
115- evmChains := env .BlockChains .EVMChains ()
116- solanaChains := env .BlockChains .SolanaChains ()
117- aptosChains := env .BlockChains .AptosChains ()
118- inspectors := make (map [uint64 ]mcmssdk.Inspector , len (evmChains )+ len (solanaChains )+ len (aptosChains ))
119-
120- for _ , chain := range evmChains {
121- var err error
122- inspectors [chain .Selector ], err = McmsInspectorForChain (env , chain .Selector )
123- if err != nil {
124- return nil , fmt .Errorf ("failed to get mcms inspector for chain %s: %w" , chain .String (), err )
125- }
107+ chainsMetadata := map [mcmstypes.ChainSelector ]mcmstypes.ChainMetadata {}
108+ for chainSelector := range env .BlockChains .All () {
109+ chainsMetadata [mcmstypes .ChainSelector (chainSelector )] = mcmstypes.ChainMetadata {}
126110 }
127111
128- for _ , chain := range solanaChains {
129- var err error
130- inspectors [chain .Selector ], err = McmsInspectorForChain (env , chain .Selector )
131- if err != nil {
132- return nil , fmt .Errorf ("failed to get mcms inspector for chain %s: %w" , chain .String (), err )
133- }
112+ chainAccessor := cldfmcmsadapters .Wrap (env .BlockChains )
113+
114+ mcmsInspectors , err := mcmschainwrappers .BuildInspectors (& chainAccessor , chainsMetadata , mcmstypes .TimelockActionSchedule )
115+ if err != nil {
116+ return nil , fmt .Errorf ("failed to build inspectors: %w" , err )
134117 }
135118
136- for _ , chain := range aptosChains {
137- var err error
138- inspectors [chain .Selector ], err = McmsInspectorForChain (env , chain .Selector )
139- if err != nil {
140- return nil , fmt .Errorf ("failed to get mcms inspector for chain %s: %w" , chain .String (), err )
141- }
119+ inspectors := make (map [uint64 ]mcmssdk.Inspector , len (mcmsInspectors ))
120+ for chainSelector , inspector := range mcmsInspectors {
121+ inspectors [uint64 (chainSelector )] = inspector
142122 }
143123
144124 return inspectors , nil
@@ -188,17 +168,8 @@ func BatchOperationForChain(
188168}
189169
190170func GetAptosRoleFromAction (action mcmstypes.TimelockAction ) (mcmsaptossdk.TimelockRole , error ) {
191- switch action {
192- case mcmstypes .TimelockActionSchedule :
193- return mcmsaptossdk .TimelockRoleProposer , nil
194- case mcmstypes .TimelockActionBypass :
195- return mcmsaptossdk .TimelockRoleBypasser , nil
196- case mcmstypes .TimelockActionCancel :
197- return mcmsaptossdk .TimelockRoleCanceller , nil
198- case "" :
199- // Default case for empty action to avoid breaking changes
171+ if action == "" {
200172 return mcmsaptossdk .TimelockRoleProposer , nil
201- default :
202- return mcmsaptossdk .TimelockRoleProposer , fmt .Errorf ("invalid action: %s" , action )
203173 }
174+ return mcmsaptossdk .AptosRoleFromAction (action )
204175}
0 commit comments