Skip to content

Conversation

@PabloMansanet
Copy link
Contributor

Requires

Supports

agusaldasoro
agusaldasoro previously approved these changes Aug 29, 2025
return nil
}

func downloadReleaseArtifactsFromGithubWorkflowRun(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can any of this be reused from the function that does this for ccip contracts ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not easily no, the CCIP contracts one has a chain of closures and each of them has a bit of coupling to CCIP so it's hard to unravel that.


configPda, _, _ := solana.FindProgramAddress([][]byte{[]byte("config")}, signerRegistry.ProgramID)
signersPda, _, _ := solana.FindProgramAddress([][]byte{[]byte("signers")}, signerRegistry.ProgramID)
ix, err := signerRegistry.NewInitializeInstruction(c.Owner, authority, solana.SystemProgramID, configPda, signersPda)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how come we are not doing signerRegistry.SetProgramId ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the latest version of anchor-go, the program ID is hardcoded in the bindings, so it's not necessary. Here's now the new binding looks:

// Code generated by https://github.com/gagliardetto/anchor-go. DO NOT EDIT.
// This file contains the program ID.

package ccip_signer_registry

import solanago "github.com/gagliardetto/solana-go"

var ProgramID = solanago.MustPublicKeyFromBase58("ULwL2Wcf7qdUkPhJc3nZmfQuGLAAP4kpnXBi2dkRitS")

And here's the old ones (for CCIP solana programs):

var ProgramID ag_solanago.PublicKey

func SetProgramID(pubkey ag_solanago.PublicKey) {
	ProgramID = pubkey
	ag_solanago.RegisterInstructionDecoder(ProgramID, registryDecodeInstruction)
}

chain := e.BlockChains.SolanaChains()[c.ChainSelector]
c.Validate(e)

configPda, _, _ := solana.FindProgramAddress([][]byte{[]byte("config")}, signerRegistry.ProgramID)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same, how come we dont have setProgramId anywhere?

@@ -0,0 +1,210 @@
package ccipbase
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should be able to add a test pretty easily no ?
setup env -> deploy -> run the ops ?
if possible, best to do it because it really helps future dev

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are pushing this back for the time being as I ran into several issues when attempting to write a test. Had a chat with Agustina and it seems that was an issue for ccip-solana too. Would be nice to revisit later, but we can't block the release. on it.

Deploy base signer registry changeset

Error improvements

Add initialize changeset

Add changeset for NOP rotation

Add green key changeset

Add promotion changesets

Adjust visibility

WIP test

Add IDL changeset

Add timelock transfer

Cleanup

Add upgrade authority transfer changeset

Add MCMS ownership validation checks

MCMS support

Update with contract changes from audit feedback
// ExecuteOrBuildMCMSProposal handles the decision to execute instructions directly or build an MCMS proposal.
// If mcmsConfig is nil, it executes the instructions directly on the chain.
// If mcmsConfig is provided, it builds MCMS transactions and creates a proposal.
func ExecuteOrBuildMCMSProposal(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this method can be private, right?

for _, hexKey := range c.NopKeysToRemove {
key, _ := parseEVMAddress(hexKey)

ix, err := signer_registry.NewRemoveSignerInstruction(key, chain.DeployerKey.PublicKey(), configPda, signersPda, eventAuthorityPda, signer_registry.ProgramID)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

who is the authority for this ix? signer_registry.ProgramID? Is it always the same if you are running it through MCMS or with the deployer key?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, will fix!

agusaldasoro
agusaldasoro previously approved these changes Sep 19, 2025
@cl-sonarqube-production
Copy link

matYang
matYang previously approved these changes Sep 19, 2025
@PabloMansanet PabloMansanet dismissed stale reviews from matYang and agusaldasoro via d137b22 September 23, 2025 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants