feat(mcms): add solana support for transfer changeset#114
Conversation
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 |
9293d0b to
3a2f46c
Compare
There was a problem hiding this comment.
Pull request overview
Adds Solana support for the existing “transfer-to-timelock” MCMS changeset so Solana ownable contracts can be transferred (and/or accepted) into timelock ownership similarly to the EVM flow.
Changes:
- Introduces a Solana transfer-to-timelock implementation (sequence/operation/instruction building + contract resolution).
- Adds Solana-specific precondition validation (MCMS refs, contract resolution, ownership checks) and unit/integration tests.
- Wires Solana readers + Solana transfer-to-timelock registration into the “all” changeset bundle.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| mcms/solana/transfer-to-timelock/validate.go | Adds Solana precondition validation for MCMS refs, contract refs, and current ownership. |
| mcms/solana/transfer-to-timelock/validate_test.go | Adds unit tests for duplicate resolution and ref normalization. |
| mcms/solana/transfer-to-timelock/sequence.go | Adds the Solana sequence entrypoint and timelock signer PDA derivation. |
| mcms/solana/transfer-to-timelock/register.go | Registers the Solana family implementation with the transfer-to-timelock registry. |
| mcms/solana/transfer-to-timelock/owner.go | Implements owner lookups and ownership validation across supported Solana contract types. |
| mcms/solana/transfer-to-timelock/operation.go | Implements the Solana on-chain transfer step + MCMS accept-ownership batch op creation. |
| mcms/solana/transfer-to-timelock/instructions.go | Builds seeded/seedless transfer + accept instructions and wraps bindings to override ProgramID. |
| mcms/solana/transfer-to-timelock/contract.go | Resolves RefKeys into ownable Solana contracts (program/seed/owner PDA resolution). |
| mcms/solana/transfer-to-timelock/changeset_test.go | Adds integration-style runtime tests covering transfer, accept-only, and idempotency. |
| mcms/changesets/transfer-to-timelock/all/wire.go | Wires in Solana readers and the Solana transfer-to-timelock package. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3a2f46c to
9e62021
Compare
9e62021 to
8904cca
Compare
Looks like solana was missed for the transfer to timelock changeset as it only support evm currently JIRA: https://smartcontract-it.atlassian.net/browse/CLD-2762
8904cca to
4eb2486
Compare
|
| @@ -0,0 +1,111 @@ | |||
| package soltransfertotimelock | |||
There was a problem hiding this comment.
we could rename this to program.go as the term for solana is "programs"
There was a problem hiding this comment.
ah yes , i will do this in my next PR!
There was a problem hiding this comment.
Actually on second thought we have ContractType everywhere too, so i feel like Contract is like a cross-chain framework term we now use in CLDF , let me think about this :D


Looks like solana was missed for the transfer to timelock changeset as it only support evm currently
JIRA: https://smartcontract-it.atlassian.net/browse/CLD-2762