feat: deploy custom topology mcms [CLD-2766]#100
Conversation
Introduce a ChangeSetV2 flow to transfer ownable contracts to the MCMS timelock, with per-family registry, EVM sequence, datastore validation, and an end-to-end test.
Release impact (release-please)
PR title: Merging this PR as-is will contribute a minor bump to the next release-please release PR. Conventional commit → bump
Update the PR title before merge if you need a different bump (squash commit message = PR title). Preview is based on this PR title only. The release-please release PR may include other unreleased commits already on |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
… ggoh/CLD-2762/transfer-to-mcms
… ggoh/CLD-2762/transfer-to-mcms
graham-chainlink
left a comment
There was a problem hiding this comment.
I think my force push in my ggoh/CLD-2762/transfer-to-mcms branch stuffed up your PR here, so changes are a bit hard to see now.
# Conflicts: # mcms/changesets/set-config/registry.go
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Pablo Estrada <139084212+ecPablo@users.noreply.github.com>
graham-chainlink
left a comment
There was a problem hiding this comment.
Looks reasonable to me!
| // TestRunEVMDeployTopology_DuplicateTransferOwnership deduplicates contracts when | ||
| // TransferOwnership lists the same target more than once. |
There was a problem hiding this comment.
i wonder should it deduplicate or just error, sounds like an user error that the user should know?
There was a problem hiding this comment.
I feel deduplicate is a a bit better here, as we throwing an error would only mean they have to fix something that we can automatically fix for them. I added some comments documenting the decision here 6c772fd
There was a problem hiding this comment.
i see, i was thinking this can only be an user error and they might want to have a different address but copied the same one accidentally, it could be a mistake that needs to be rectified instead of silently ignored if that make sense? What do you think?
|




To be merged after: #99
Implements the deploy custom topology changeset and sequences for EVM which allows users to deploy custom mcms / timelock structures without custom coding topologies.
AI Summary
This pull request refactors the EVM operations code in the MCMS legacy changesets by consolidating and updating imports to use a newer, centralized
evm/operationspackage. The changes primarily involve replacing references to the oldoputiland legacy operation types with the newevmopstypes and functions, improving maintainability and consistency across the codebase. No functional logic is altered; this is a structural cleanup.Refactoring and Codebase Cleanup:
Replaced all imports of
oputiland legacy operation types in multiple files (such asdeploy_mcms_with_timelock.go,grant_timelock.go, and various operation and sequence files) with the newevmopspackage frommcms/evm/operationsfor EVM operation utilities and types. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]Updated all usages of EVM operation constructors and types (e.g.,
NewEVMDeployOperation,NewEVMCallOperation,EVMDeployInput,RetryDeploymentWithGasBoost,EVMCallOutput, etc.) to use the newevmopsequivalents, ensuring type compatibility and consistency. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]Adjusted function signatures and return types throughout the EVM operation and sequence logic to use the new types from
evmops, removing all direct dependencies on the deprecatedoputilpackage. [1] [2] [3] [4] [5] [6]This update is a non-functional, structural refactor that will make future maintenance and enhancements easier by consolidating EVM operation logic in a single, modern package.