diff --git a/solana/Makefile b/solana/Makefile index 1992a500..9e5c714a 100644 --- a/solana/Makefile +++ b/solana/Makefile @@ -27,11 +27,6 @@ setup-mcm-set-pause-bridge: rm -rf $(TEMPLATE_SET_PAUSE_BRIDGE)/cache $(TEMPLATE_SET_PAUSE_BRIDGE)/lib $(TEMPLATE_SET_PAUSE_BRIDGE)/out cp -r $(TEMPLATE_SET_PAUSE_BRIDGE) $(SET_PAUSE_BRIDGE_DIR) -# Run `make setup-mcm-set-partner-threshold-bridge network=` -setup-mcm-set-partner-threshold-bridge: - rm -rf $(TEMPLATE_SET_PARTNER_THRESHOLD_BRIDGE)/cache $(TEMPLATE_SET_PARTNER_THRESHOLD_BRIDGE)/lib $(TEMPLATE_SET_PARTNER_THRESHOLD_BRIDGE)/out - cp -r $(TEMPLATE_SET_PARTNER_THRESHOLD_BRIDGE) $(SET_PARTNER_THRESHOLD_BRIDGE_DIR) - ## # Dependencies ## diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/.env b/solana/devnet/2025-10-24-mcm-program-upgrade/.env new file mode 100644 index 00000000..f0723179 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/.env @@ -0,0 +1,65 @@ +SOLANA_VERSION=1.17.25 +ANCHOR_VERSION=0.29.0 + +# Variables for cloning the MCM repo +MCM_REPO=https://github.com/base/chainlink-ccip/ +MCM_COMMIT=efe0405f3e2fa6789a57ec510e101828040a384b +ID_PATCH=patches/id.patch + +## +# Common MCM Proposal Variables +## + +# MCM program ID (base58 encoded) +MCM_PROGRAM_ID=Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX + +# MCM multisig ID (32 bytes hex with 0x prefix) +MCM_MULTISIG_ID=0x0000000000000000000000000000000000000000000000000000000000000000 + +# MCM authority address (derived PDA, base58 encoded) +MCM_AUTHORITY=2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ + +# Timestamp until which the proposal is valid and can be executed +MCM_VALID_UNTIL=1761404616 # Sat Oct 25 2025 15:03:36 GMT+0000 + +# Set to true if you want to override the previous root when registering the proposal +# If set to true, it allows to override the (proposal) root even if there are outstanding operations left to execute in the previous proposal +MCM_OVERRIDE_PREVIOUS_ROOT=false + +# Total number of signatures required to execute the proposal +MCM_SIGNATURES_COUNT=3 + +# MCM proposal signatures +MCM_SIGNATURES=0xe11f80eb03f50906f6e193d5c2189629e62864b3a2489e14937470e411fe39376617ee2aff7f68fb5aa4e7b1f0da762f77467a91bbaeb3e4cf45c2f006148d8e1b,0xb46e5ddd0a44360538bdb47f9284072c9b33c1db21b97741db95f53abf6448e717614b5590b6bd6bdf16b4bedd9e7719c10417709bc88ab0ac563b764ea3266b1b,0xc4a3dbe200d2c4af18230cf2daa6ca2ce4530d0fae4b2a9817e226a18cdefbf07a2b3bea214b88d9c9ceadaece35d21cc215b5ad0a15a3f2912b7d193c1a22931b + +# Output file for the MCM proposal +MCM_PROPOSAL_OUTPUT=proposal.json + +# Authority account that will sign and submit MCM transactions +AUTHORITY=~/.config/solana/id.json + +## +# MCM Proposal Variables Specific to Program Upgrade +## + +# Program address to upgrade +PROGRAM=$(MCM_PROGRAM_ID) + +# Buffer address containing the new program data (obtained from 'make write-buffer') +BUFFER=BqBKeo3AuEwbuXKn6z8VCuUhdXtW1Hre19kNigryayid + +# Spill account address to receive refunded lamports +SPILL= AFs1LCbodhvwpgX3u3URLsud6R1XMSaMiQ5LtXw4GKYT # Gas fee receiver + +## +# Variables for managing the temporary buffer +## + +# Path to the compiled program binary (.so file) +PROGRAM_BINARY=./chainlink-ccip/chains/solana/contracts/target/deploy/mcm.so + +# New buffer authority (MCM authority) +NEW_BUFFER_AUTHORITY=$(MCM_AUTHORITY) + +# Signature of the set-buffer-authority transaction +SET_BUFFER_AUTHORITY_SIGNATURE=3ULQf5AQaEyBzwMREibauZ3j8vnFBBsFNR8Py9qqM5qA66VfZTFmNNQMc9MyUMEZLtp2ytWHcdjS3NtbwQdZ74wr diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/.gitignore b/solana/devnet/2025-10-24-mcm-program-upgrade/.gitignore new file mode 100644 index 00000000..6164bc8d --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/.gitignore @@ -0,0 +1 @@ +chainlink-ccip/ diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/FACILITATORS.md b/solana/devnet/2025-10-24-mcm-program-upgrade/FACILITATORS.md new file mode 100644 index 00000000..bfc33c03 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/FACILITATORS.md @@ -0,0 +1,156 @@ +# Facilitator Instructions: MCM Program Upgrade + +## Overview + +As a Facilitator, you are responsible for: +1. Preparing the program buffer +2. Creating the MCM proposal +3. Committing and pushing the proposal to the repo +4. Coordinating with Signers +5. Collecting signatures +6. Executing the proposal on-chain + +## Prerequisites + +```bash +cd contract-deployments +git pull +cd solana/devnet/2025-10-22-mcm-upgrade +make deps +``` + +Ensure you have: +- Solana CLI installed and configured +- `mcmctl` installed (via `make deps`) +- `eip712sign` installed (via `make deps`) +- A funded Solana wallet configured +- The compiled program binary (`.so` file) ready + +## Phase 1: Prepare the Program Buffer + +### 1.1. Obtain the compiled program + +Get the compiled program binary (`.so` file) that contains the new version of the program. + +### 1.2. Update .env for buffer upload + +Set the following in `.env`: + +```bash +PROGRAM= +PROGRAM_BINARY= +``` + +### 1.3. Write buffer + +```bash +make write-buffer +``` + +This will output a buffer address. Copy it. + +### 1.4. Update .env and transfer buffer authority + +Set the following in `.env`: + +```bash +BUFFER= +MCM_AUTHORITY= +SPILL= +``` + +Then transfer buffer authority to MCM: + +```bash +make transfer-buffer +``` + +The buffer is now controlled by the MCM authority. + +## Phase 2: Create and Commit MCM Proposal + +### 2.1. Update .env for proposal generation + +Set the following in `.env`: + +```bash +MCM_PROGRAM_ID= +MCM_MULTISIG_ID= +MCM_VALID_UNTIL= +MCM_OVERRIDE_PREVIOUS_ROOT=false # or true if needed +MCM_PROPOSAL_OUTPUT=proposal.json +``` + +### 2.2. Generate proposal + +```bash +make mcm-proposal +``` + +This creates the proposal file (default `proposal.json` or whatever is set in `MCM_PROPOSAL_OUTPUT`). + +### 2.3. Review proposal + +Open and review the generated proposal file to verify: +- Program address matches `PROGRAM` +- Buffer address matches `BUFFER` +- Spill address is correct +- Valid until timestamp is appropriate +- All instructions are correct + +### 2.4. Commit and push + +```bash +git add . +git commit -m "Add MCM program upgrade proposal for " +git push +``` + +## Phase 3: Coordinate with Signers and Collect Signatures + +Coordinate with Signers to collect their signatures. Each Signer will run `make mcm-sign` and provide their signature. + +Concatenate all signatures in the format: `0xSIG1,0xSIG2,0xSIG3` + +Once you have all required signatures, update `.env`: + +```bash +MCM_SIGNATURES_COUNT= +MCM_SIGNATURES=0xSIG1,0xSIG2,0xSIG3 +``` + +## Phase 4: Execute Proposal + +```bash +make mcm-all +``` + +This command executes all the necessary steps: +- Initialize signatures account +- Append signatures +- Finalize signatures +- Set root +- Execute proposal + +## Phase 5: Verification + +### 5.1. Verify program on Solana Explorer + +Visit the Solana Explorer for your network: +- Mainnet: https://explorer.solana.com/ +- Devnet: https://explorer.solana.com/?cluster=devnet + +Search for the program address (`$PROGRAM`) and verify: +- The "Last Deployed Slot" is recent +- The upgrade authority is still `MCM_AUTHORITY` +- The execution transaction is visible in history + +### 5.2. Update README + +Update the Status line in README.md to: + +```markdown +Status: [EXECUTED](https://explorer.solana.com/tx/?cluster=) +``` + +Replace `` with the execution transaction signature and `` with the appropriate cluster (devnet, mainnet-beta, etc.). diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/Makefile b/solana/devnet/2025-10-24-mcm-program-upgrade/Makefile new file mode 100644 index 00000000..08d2670b --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/Makefile @@ -0,0 +1,76 @@ +include ../.env +include .env + +include ../../Makefile + +## +# Project Setup +## + +.PHONY: install-rust +install-rust: + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + +.PHONY: install-solana-cli +install-solana-cli: + curl -sSfL https://release.anza.xyz/v$(SOLANA_VERSION)/install | sh + +.PHONY: install-anchor +install-anchor: + cargo install --git https://github.com/coral-xyz/anchor --tag v$(ANCHOR_VERSION) anchor-cli --force + +.PHONY: setup-deps +setup-deps: install-rust install-solana-cli install-anchor + +## +# MCM Program Upgrade Workflow +## + +# Step 1: Clone and patch the MCM program +.PHONY: step1-clone-patch-and-build +step1-clone-patch-and-build: + @echo "==> Step 1: Cloning and patching the MCM program..." + rm -rf chainlink-ccip + git clone --filter=blob:none $(MCM_REPO) chainlink-ccip + cd chainlink-ccip && \ + git checkout $(MCM_COMMIT) && \ + git apply ../$(ID_PATCH) + cd chainlink-ccip/chains/solana/contracts && \ + anchor build -p mcm + +# Step 2: Write program buffer +.PHONY: step2-write-buffer +step2-write-buffer: + @echo "==> Step 2: Writing program buffer..." + make sol-write-buffer + +# Step 3: Transfer buffer authority to MCM +.PHONY: step3-transfer-buffer +step3-transfer-buffer: + @echo "==> Step 2: Transferring buffer authority to MCM..." + make sol-set-buffer-authority + +# Step 3.5: Generate set-buffer-authority artifacts (use solana explorer to get the signature of the set-buffer-authority tx) +.PHONY: step3.5-generate-set-buffer-authority-artifacts +step3.5-generate-set-buffer-authority-artifacts: + @echo "==> Step 3.5: Generating MCM set-buffer-authority artifacts..." + make sol-confirm SIG=$(SET_BUFFER_AUTHORITY_SIGNATURE) output=artifacts/set-buffer-authority-artifacts.json + +# Step 4: Create upgrade proposal +.PHONY: step4-create-proposal +step4-create-proposal: + @echo "==> Step 4: Creating MCM upgrade proposal..." + make mcm-proposal-loader-v3-upgrade + +# Step 5: Sign proposal +.PHONY: sign +sign: + @echo "==> Step 5: Signing proposal..." + make mcm-sign + +# Step 6: Execute proposal (signatures + set-root + execute) +.PHONY: step6-execute-proposal +step6-execute-proposal: + @echo "==> Step 6: Executing MCM proposal..." + make mcm-signatures-all + make mcm-proposal-all diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/README.md b/solana/devnet/2025-10-24-mcm-program-upgrade/README.md new file mode 100644 index 00000000..5c446843 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/README.md @@ -0,0 +1,61 @@ +# MCM Program Upgrade via Multi-Chain Multisig + +Status: [EXECUTED](https://solscan.io/tx/5tR6S66cJri7xyCBaw6UxS1hVtyyb49McHJ5aoUxvzKA3jqMUA71e8f83MCHaLo9CXDBLrwA7vD16QqNWSte51VU?cluster=devnet) + +## Description + +This task upgrades a Solana program using the Multi-Chain Multisig (MCM) governance system. The upgrade is performed by uploading a new program buffer and creating an MCM proposal that, once signed and executed, will upgrade the program to the new version. + +## Procedure for Signers + +### 1. Update repo + +```bash +cd contract-deployments +git pull +cd solana/devnet/2025-10-22-mcm-upgrade +make deps +``` + +### 2. Setup Ledger + +Your Ledger needs to be connected and unlocked. The **Ethereum application** needs to be opened on Ledger with the message "Application is ready". + +### 3. Review the proposal + +The Facilitator will provide you with the proposal details. Review: +- Program being upgraded: `PROGRAM` +- Buffer address: `BUFFER` +- MCM Program ID: `MCM_PROGRAM_ID` +- Valid until timestamp: `MCM_VALID_UNTIL` + +These values are in the `.env` file and the generated `proposal.json`. + +### 4. Sign the proposal + +```bash +make sign +``` + +This command will: +1. Display the proposal hash +2. Prompt you to sign on your Ledger +3. Output your signature + +**Verify on your Ledger**: Check that the data you're signing matches the proposal hash displayed in the terminal. + +After signing, you will see output like: + +``` +Signature: 1234567890abcdef... +``` + +### 5. Send signature to Facilitator + +Copy the **entire signature** and send it to the Facilitator via your secure communication channel. + +**That's it!** The Facilitator will collect all signatures and execute the proposal. + +## For Facilitators + +See [FACILITATORS.md](./FACILITATORS.md) for complete instructions on preparing, executing, and verifying this task. diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-execute.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-execute.json new file mode 100644 index 00000000..cca5344a --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-execute.json @@ -0,0 +1,128 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "5tR6S66cJri7xyCBaw6UxS1hVtyyb49McHJ5aoUxvzKA3jqMUA71e8f83MCHaLo9CXDBLrwA7vD16QqNWSte51VU" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 5 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "Ca93fFb5tQR14XzNpvBi6WNTuPHWZLNwoZ3hu6EErgDF", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX", + "BqBKeo3AuEwbuXKn6z8VCuUhdXtW1Hre19kNigryayid", + "AFs1LCbodhvwpgX3u3URLsud6R1XMSaMiQ5LtXw4GKYT", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "BPFLoaderUpgradeab1e11111111111111111111111", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "SysvarRent111111111111111111111111111111111", + "SysvarC1ock11111111111111111111111111111111" + ], + "recentBlockhash": "BFtzmrTRVA8v83ZuKCpLeA33gQxGxa77iipAEHyntGAc", + "instructions": [ + { + "programIdIndex": 4, + "accounts": [ + 1, + 7, + 2, + 8, + 9, + 0, + 3, + 4, + 5, + 6, + 10, + 11, + 9 + ], + "data": "65zRtZe3ydJWJeJJEUXq3RVmLzRGFdSm94DUpibi5UNcLWiV78xjAha9DLJrUHx7qbeTYXTXtAFLMuefzYMzfc5iVepi9FUE3U6FYpncB7muXoDFV9QhunR9BZ8cAg37JHT1hxv1a", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165336814160, + 4134240, + 1252800, + 6670665840, + 1141440, + 3367672560, + 3435925880, + 1343280, + 1, + 0, + 1009200, + 1169280 + ], + "postBalances": [ + 165336809160, + 4134240, + 1252800, + 6670665840, + 1141440, + 0, + 6803598440, + 1343280, + 1, + 0, + 1009200, + 1169280 + ], + "innerInstructions": [ + { + "index": 0, + "instructions": [ + { + "programIdIndex": 8, + "accounts": [ + 3, + 4, + 5, + 6, + 10, + 11, + 9 + ], + "data": "5Sxr3", + "stackHeight": 2 + } + ] + } + ], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: Execute", + "Program BPFLoaderUpgradeab1e11111111111111111111111 invoke [2]", + "Upgraded program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX", + "Program BPFLoaderUpgradeab1e11111111111111111111111 success", + "Program data: 3Q/UHSP8/04DAAAAAAAAAAKo9pFOiKGw4hAVPvdjrisAwrk9FsEk0sBTehAEgAAABAAAAAMAAAA=", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 46434 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 46434 + }, + "blockTime": 1761327574, + "slot": 416823343 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-set-root.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-set-root.json new file mode 100644 index 00000000..f032122e --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-proposal-set-root.json @@ -0,0 +1,104 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "4a1UXZkH66LZbubLeyJXpBkLcYZFYid7fu8MWRx6D4vawqewziy4XC6vhhuVtnNZt4MJYA1g1zE3THvoT9oAxAbk" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 3 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "yb8oLewR5V9gidvHEqUj81sUF8ppdS2traHQenD2z7N", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "A8yzGTMsY1yDa7T3LLszXyZcMVVTTii5nydkVrQgeqX6", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "GJ5Vdx4iBbYxcqSdAXKLLguXiC9msg4AJmxbV9CerhhF", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 2, + 3, + 4, + 5, + 0, + 6 + ], + "data": "K9UBFxzzmUF86odsdKWb6A2fuzRXx1VQLqWaNmspdxDzEh8pmM5J9ne7cdHwcQb8Gz5WRqZq2riZi1vDtL4y5GVVAYxPhEcTpQsTqecT3bsea1ozu2LzCdHM8oEz7M3btpoVUSugi331rroMu4zu7YAfcHiuVtTkPUnoZUngTX3ujHypgBqSCn2FxZ1tJDJvajnZkzPJswTEJoSHyrsLzQ4fuYykt6A1giru64U", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165335427160, + 2345520, + 1343280, + 0, + 1252800, + 4134240, + 1, + 1141440 + ], + "postBalances": [ + 165336814160, + 0, + 1343280, + 953520, + 1252800, + 4134240, + 1, + 1141440 + ], + "innerInstructions": [ + { + "index": 0, + "instructions": [ + { + "programIdIndex": 6, + "accounts": [ + 0, + 3 + ], + "data": "11117UcthqATmHRa77Wg3s82tM6xxYxd7PiZ2oZ4h1ZRQ3Q6anaT7puATNmrGRBPnEn6Uh", + "stackHeight": 2 + } + ] + } + ], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: SetRoot", + "Program 11111111111111111111111111111111 invoke [2]", + "Program 11111111111111111111111111111111 success", + "Program data: 0hm7digqPXd8jy1Kgy7cRLXCkTYNC66mUa89v0d7Y7rHXLjIQE6bzcjm/GgAAAAAAAAAAFvuOPs7hiam+/CQoroqEyiPrjtrRaqBltmHvQYLpVUzAwAAAAAAAAAEAAAAAAAAAAA=", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 103777 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 103777 + }, + "blockTime": 1761327558, + "slot": 416823302 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-append.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-append.json new file mode 100644 index 00000000..bb5ef5a9 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-append.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "4rahewGW1Jq2TJri6XQf6sybgPQxkSFD2dzNCNUsYsEmadwYqto8oUoKZQ8cEd6cUX6s86QvRTyVx5UTy4bXyQEv" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "yb8oLewR5V9gidvHEqUj81sUF8ppdS2traHQenD2z7N", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "8SZ8rG2GnAJ9y2cXwdmWYMfvT5LeweedyAbxtkt2qw8H", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8JM1NbBrt3Xh3kxoE3gUoUhdacSAaBKUdPn3SULoy5MqoavKwgx6PuK8SxfmCFAVRVgZNa2JnJydTwmHvP65bQ5P6XTytBkTcwc764DK38nSLVGphc6RrXMXLCDm24KgDZvNxAVxDfvEQwWxfj1EUBp6vJURdL6H6obYUP4LVfQo53LDP7TfmNw78xQnkkNYM1k87oHcriMYEiDF7NLLyJ6cQa3pKrc6XNMxfMjzhExMtt6hwteJWtrrsBradj6nJEqRSdMFJaozeCU7k7a6ZiE7Mu4D623pv1UHNRgwbq7D32Ys7UpkKfXU32wGQv7WwoGhFppzu8hCRXx1Xc1b2W1Vd33ZYazTUgnzk1TURZ7GuAc5pbyMQRQe", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165335437160, + 2345520, + 1141440 + ], + "postBalances": [ + 165335432160, + 2345520, + 1141440 + ], + "innerInstructions": [], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: AppendSignatures", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 5385 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 5385 + }, + "blockTime": 1761327528, + "slot": 416823225 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-finalize.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-finalize.json new file mode 100644 index 00000000..6fc521d3 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-finalize.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "2XPpnxCZf4dBbh5jy9gxuw8MhkZAEYU8aGtBLMQyhB4VzmDG5fzj1WWKCCjDfCSNZrbvNsJwf96dQ3n5p9UhoiKY" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "yb8oLewR5V9gidvHEqUj81sUF8ppdS2traHQenD2z7N", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "CR6V2rdhzMQXomT8UVN2AEj9wcSq8pabwwHwg3KuGPNL", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8VPNxavkg2Yj38NCocv5Cq5gNj6AXt2M4QRQjqgjJnXPoyHsmdy1UZDfJCn1PWQv7VTBXmGAAyA9tLwh5KfNrEGVvC32eZBuhhNbvdfu", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165335432160, + 2345520, + 1141440 + ], + "postBalances": [ + 165335427160, + 2345520, + 1141440 + ], + "innerInstructions": [], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: FinalizeSignatures", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 4570 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 4570 + }, + "blockTime": 1761327542, + "slot": 416823262 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-init.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-init.json new file mode 100644 index 00000000..80c9311f --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/mcm-signatures-init.json @@ -0,0 +1,87 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "YKhSCTnHpXgKjQNnNdmVpdH91s8t8HB46MA6mo2iVTsLwYYMcRucdv6Rmia6JgDK3i6PSGnrpSuxE89F3k4nc7b" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 2 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "yb8oLewR5V9gidvHEqUj81sUF8ppdS2traHQenD2z7N", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "BabRafUhdQf6M4zX1EqRTGacmPZ3oKLKwyqsvnHK9n67", + "instructions": [ + { + "programIdIndex": 3, + "accounts": [ + 1, + 0, + 2 + ], + "data": "2QCcPn6AhHR9Zi4mhnFE53M8tJopZFLmSWFEPUWVFoNxRRu5UeGEiNaoYZ7rSfvLH6gwQRsvBnKPa7KMq3UyzqyAXhTHiD6pL1rKank8yp", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165337787680, + 0, + 1, + 1141440 + ], + "postBalances": [ + 165335437160, + 2345520, + 1, + 1141440 + ], + "innerInstructions": [ + { + "index": 0, + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 0, + 1 + ], + "data": "11112nodbJCN8fXPKGyCu9NpWW4Z1ZkxMmEywtSX6cwUwwiUiy2t2NJ1N7s3c1VyVFW6Sm", + "stackHeight": 2 + } + ] + } + ], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: InitSignatures", + "Program 11111111111111111111111111111111 invoke [2]", + "Program 11111111111111111111111111111111 success", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 7983 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 7983 + }, + "blockTime": 1761327513, + "slot": 416823187 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/set-buffer-authority-artifacts.json b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/set-buffer-authority-artifacts.json new file mode 100644 index 00000000..8024f12f --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/artifacts/set-buffer-authority-artifacts.json @@ -0,0 +1,69 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "3ULQf5AQaEyBzwMREibauZ3j8vnFBBsFNR8Py9qqM5qA66VfZTFmNNQMc9MyUMEZLtp2ytWHcdjS3NtbwQdZ74wr" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 2 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "BqBKeo3AuEwbuXKn6z8VCuUhdXtW1Hre19kNigryayid", + "BPFLoaderUpgradeab1e11111111111111111111111", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ" + ], + "recentBlockhash": "2sDMtmZP8kZkmrCnNfnCENE21cbsyT7244ANBy5RqwF8", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0, + 3 + ], + "data": "6vx8P", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165337792680, + 3367672560, + 1, + 0 + ], + "postBalances": [ + 165337787680, + 3367672560, + 1, + 0 + ], + "innerInstructions": [], + "logMessages": [ + "Program BPFLoaderUpgradeab1e11111111111111111111111 invoke [1]", + "New authority Some(2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ)", + "Program BPFLoaderUpgradeab1e11111111111111111111111 success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 2370 + }, + "blockTime": 1761325291, + "slot": 416817432 +} diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/patches/id.patch b/solana/devnet/2025-10-24-mcm-program-upgrade/patches/id.patch new file mode 100644 index 00000000..35c4e6d3 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/patches/id.patch @@ -0,0 +1,12 @@ +diff --git a/chains/solana/contracts/programs/mcm/src/lib.rs b/chains/solana/contracts/programs/mcm/src/lib.rs +index a2e1d0b3..f2420a45 100644 +--- a/chains/solana/contracts/programs/mcm/src/lib.rs ++++ b/chains/solana/contracts/programs/mcm/src/lib.rs +@@ -1,6 +1,6 @@ + use anchor_lang::prelude::*; + +-declare_id!("5vNJx78mz7KVMjhuipyr9jKBKcMrKYGdjGkgE4LUmjKk"); ++declare_id!("Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX"); + + use program::Mcm; + diff --git a/solana/devnet/2025-10-24-mcm-program-upgrade/proposal.json b/solana/devnet/2025-10-24-mcm-program-upgrade/proposal.json new file mode 100644 index 00000000..e9887863 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-program-upgrade/proposal.json @@ -0,0 +1,54 @@ +{ + "multisigId": "0x0000000000000000000000000000000000000000000000000000000000000000", + "validUntil": 1761404616, + "instructions": [ + { + "programId": "BPFLoaderUpgradeab1e11111111111111111111111", + "data": "AwAAAA==", + "accounts": [ + { + "pubkey": "Ca93fFb5tQR14XzNpvBi6WNTuPHWZLNwoZ3hu6EErgDF", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "BqBKeo3AuEwbuXKn6z8VCuUhdXtW1Hre19kNigryayid", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "AFs1LCbodhvwpgX3u3URLsud6R1XMSaMiQ5LtXw4GKYT", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "SysvarRent111111111111111111111111111111111", + "isSigner": false, + "isWritable": false + }, + { + "pubkey": "SysvarC1ock11111111111111111111111111111111", + "isSigner": false, + "isWritable": false + }, + { + "pubkey": "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "isSigner": false, + "isWritable": false + } + ] + } + ], + "rootMetadata": { + "chainId": 0, + "multisig": "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "preOpCount": 3, + "postOpCount": 4, + "overridePreviousRoot": false + } +} \ No newline at end of file