From 030423c96c439811a5f8fd278ededad884577c4f Mon Sep 17 00:00:00 2001 From: Baptiste Oueriagli Date: Fri, 24 Oct 2025 21:05:17 +0200 Subject: [PATCH 1/3] chore(solana): setup Bridge pause&unpause task devnet-alpha --- solana/Makefile | 2 +- .../2025-10-24-mcm-pause-unpause-bridge/.env | 35 ++++++ .../FACILITATORS.md | 115 ++++++++++++++++++ .../Makefile | 61 ++++++++++ .../README.md | 51 ++++++++ .../proposal.json | 45 +++++++ 6 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/proposal.json diff --git a/solana/Makefile b/solana/Makefile index 1992a500..d486ac0d 100644 --- a/solana/Makefile +++ b/solana/Makefile @@ -42,7 +42,7 @@ install-eip712sign: .PHONY: install-mcmctl install-mcmctl: - go install github.com/base/mcm-go/cmd/mcmctl@8fdb1611ffc7081ce592f8957a9806c393c6f447 + go install github.com/base/mcm-go/cmd/mcmctl@89e88905998a0dd10fe75dad99b8121bfe5dca93 .PHONY: deps deps: install-mcmctl install-eip712sign diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env new file mode 100644 index 00000000..b22b4b3a --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env @@ -0,0 +1,35 @@ +## +# 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 + +# Timestamp until which the proposal is valid and can be executed +MCM_VALID_UNTIL=1761410561 # Sat Oct 25 2025 16:42:41 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= + +# 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 Bridge Pause +## + +# Bridge program ID (base58 encoded) +BRIDGE_PROGRAM_ID=6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md new file mode 100644 index 00000000..343522e5 --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md @@ -0,0 +1,115 @@ +# Facilitator Instructions: MCM Bridge Pause/Unpause + +## Overview + +As a Facilitator, you are responsible for: +1. Preparing the bridge pause configuration +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// +make deps +``` + +Ensure you have: +- `mcmctl` installed (via `make deps`) +- `eip712sign` installed (via `make deps`) +- A funded Solana wallet configured + +## Phase 1: Prepare and Generate Proposal + +### 1.1. Update .env with bridge pause configuration + +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 + +# Bridge configuration +BRIDGE_PROGRAM_ID= +PAUSED=true # or false to unpause +``` + +### 1.2. Generate proposal + +```bash +make step1-create-proposal +``` + +This creates the proposal file (default `proposal.json` or whatever is set in `MCM_PROPOSAL_OUTPUT`). + +### 1.3. Review proposal + +Open and review the generated proposal file to verify: +- Bridge program ID is correct +- Pause status is correct (pausing or unpausing) +- Valid until timestamp is appropriate + +### 1.4. Commit and push + +```bash +git add . +git commit -m "Add MCM bridge pause/unpause proposal" +git push +``` + +## Phase 2: Coordinate with Signers and Collect Signatures + +Coordinate with Signers to collect their signatures. Each Signer will run `make 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 3: Execute Proposal + +```bash +make step3-execute-proposal +``` + +This command executes all the necessary steps: +- Initialize signatures account +- Append signatures +- Finalize signatures +- Set root +- Execute proposal + +## Phase 4: Verification + +### 4.1. View transaction 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 execution transaction and verify: +- The transaction was successful +- The program logs show `Instruction: SetPauseStatus` (Anchor log) +- The pause status matches the intended action (paused or unpaused) + +### 4.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-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile new file mode 100644 index 00000000..ead46edb --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile @@ -0,0 +1,61 @@ +include ../.env +include .env + +include ../../Makefile + +## +# MCM Bridge Pause/Unpause Workflow +## + +# Step 1: Create merged pause/unpause proposal +.PHONY: step1-create-proposal +step1-create-proposal: + @echo "==> Step 1: Creating merged pause/unpause MCM proposal..." + @echo " → Creating pause proposal..." + @make mcm-proposal-bridge-pause \ + PAUSED=true \ + MCM_PROPOSAL_OUTPUT=pause-proposal.json + @echo " → Creating unpause proposal..." + @make mcm-proposal-bridge-pause \ + PAUSED=false \ + MCM_PROPOSAL_OUTPUT=unpause-proposal.json + @echo " → Merging proposals..." + @jq -s '.[0] as $$pause | .[1] as $$unpause | $$pause | .instructions = ($$pause.instructions + $$unpause.instructions) | .rootMetadata.postOpCount = (.rootMetadata.preOpCount + 2)' \ + pause-proposal.json unpause-proposal.json > proposal.json + @echo " → Cleaning up temporary files..." + @rm -f pause-proposal.json unpause-proposal.json + @echo "✓ Merged proposal created: proposal.json" + @echo " - Instructions count: $$(jq '.instructions | length' proposal.json)" + @echo " - preOpCount: $$(jq '.rootMetadata.preOpCount' proposal.json)" + @echo " - postOpCount: $$(jq '.rootMetadata.postOpCount' proposal.json)" + +# Step 2: Sign proposal +.PHONY: sign +sign: + @echo "==> Step 2: Signing proposal..." + @make mcm-sign + +# Step 3: Register proposal (signatures + set-root) +.PHONY: step3-execute +step3-execute: + @echo "==> Step 3: Executing MCM proposal..." + @make mcm-signatures-all + @make mcm-proposal-set-root + +# Step 4: Execute pause proposal +.PHONY: step4-execute-pause +step4-execute-pause: + @echo "==> Step 4: Executing MCM pause proposal..." + @make mcm-proposal-execute \ + MCM_START_INDEX=0 \ + MCM_OPERATION_COUNT=1 + @mv artifacts/mcm-proposal-execute.json artifacts/mcm-pause-proposal-execute.json + +# Step 5: Execute unpause proposal +.PHONY: step5-execute-unpause +step5-execute-unpause: + @echo "==> Step 5: Executing MCM unpause proposal..." + @make mcm-proposal-execute \ + MCM_START_INDEX=1 \ + MCM_OPERATION_COUNT=1 + @mv artifacts/mcm-proposal-execute.json artifacts/mcm-unpause-proposal-execute.json \ No newline at end of file diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md new file mode 100644 index 00000000..7dc982c7 --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md @@ -0,0 +1,51 @@ +# MCM Bridge Pause/Unpause + +Status: PENDING + +## Description + +This task pauses or unpauses the Bridge program using the MCM program. This is a critical security operation that can be used to halt bridge operations in emergency situations or resume them after issues are resolved. + +## Procedure for Signers + +### 1. Update repo + +```bash +cd contract-deployments +git pull +cd solana// +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. 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... +``` + +### 4. 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-alpha/2025-10-24-mcm-pause-unpause-bridge/proposal.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/proposal.json new file mode 100644 index 00000000..151c135e --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/proposal.json @@ -0,0 +1,45 @@ +{ + "multisigId": "0x0000000000000000000000000000000000000000000000000000000000000000", + "validUntil": 1761410561, + "instructions": [ + { + "programId": "6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm", + "data": "dhmR2XLR7JEB", + "accounts": [ + { + "pubkey": "F1HSdZSs7CWSNBV4jqa977hLcuxn6fcdg8R5JuoFvM2q", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "isSigner": false, + "isWritable": false + } + ] + }, + { + "programId": "6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm", + "data": "dhmR2XLR7JEA", + "accounts": [ + { + "pubkey": "F1HSdZSs7CWSNBV4jqa977hLcuxn6fcdg8R5JuoFvM2q", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "isSigner": false, + "isWritable": false + } + ] + } + ], + "rootMetadata": { + "chainId": 0, + "multisig": "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "preOpCount": 4, + "postOpCount": 6, + "overridePreviousRoot": false + } +} From fa1e8b9f2820a82c88a0233ba043218a6efac44a Mon Sep 17 00:00:00 2001 From: Baptiste Oueriagli Date: Fri, 24 Oct 2025 21:46:25 +0200 Subject: [PATCH 2/3] chore(solana): execute Bridge pause&unpause task devnet-alpha --- .../2025-10-24-mcm-pause-unpause-bridge/.env | 2 +- .../Makefile | 6 +- .../artifacts/mcm-pause-proposal-execute.json | 107 ++++++++++++++++++ .../artifacts/mcm-proposal-set-root.json | 104 +++++++++++++++++ .../artifacts/mcm-signatures-append.json | 66 +++++++++++ .../artifacts/mcm-signatures-finalize.json | 66 +++++++++++ .../artifacts/mcm-signatures-init.json | 87 ++++++++++++++ .../mcm-unpause-proposal-execute.json | 107 ++++++++++++++++++ 8 files changed, 541 insertions(+), 4 deletions(-) create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json create mode 100644 solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env index b22b4b3a..1773e69a 100644 --- a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/.env @@ -19,7 +19,7 @@ MCM_OVERRIDE_PREVIOUS_ROOT=false MCM_SIGNATURES_COUNT=3 # MCM proposal signatures -MCM_SIGNATURES= +MCM_SIGNATURES=0xec490c92e32f926ecac546ebd5b593bc912dcb0a9a4e87119f7bf3936bb934e5562e801eb164cba349af70e9293024ae33ab7565440f41bfa17578debea75b891c,0x522a4721fd63e7e1973bfdacabe0f725d13e5a04a0dba74d9c85dc304b0650a568badcb2d60ae69d062d4254a571d17af42d6ff4a5abe2ddf9133a2cff39dc301b,0xeb45ee4a7be894c90338834af514f8d051a9e3ead946375c122ada5d72502dc87c82e107a039a1467f99a686aede360009d7d192478712cf319da16a41df48ea1c # Output file for the MCM proposal MCM_PROPOSAL_OUTPUT=proposal.json diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile index ead46edb..fad7b41e 100644 --- a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/Makefile @@ -36,9 +36,9 @@ sign: @make mcm-sign # Step 3: Register proposal (signatures + set-root) -.PHONY: step3-execute -step3-execute: - @echo "==> Step 3: Executing MCM proposal..." +.PHONY: step3-register-proposal +step3-register-proposal: + @echo "==> Step 3: Registering MCM proposal..." @make mcm-signatures-all @make mcm-proposal-set-root diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json new file mode 100644 index 00000000..548aac2d --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json @@ -0,0 +1,107 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "PXqdRH8rpBLfCy88BBKf6gDJhC5Z7gzDFnx4M2jVEBU27dEMbYzswczcp7LWtVQQhoNMjFG1326w4NcHFhEanhs" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 4 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "F1HSdZSs7CWSNBV4jqa977hLcuxn6fcdg8R5JuoFvM2q", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "2AAxYE3yMp7MNN23zf5g4zvtfGqUGBLpV83fytUropGJ", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 4, + 2, + 5, + 6, + 0, + 3, + 6 + ], + "data": "kdy7aa47nZccXGYmJrCpZESavPSdBHauQKcgU4SCjVZLTicZFgHts7pDttPzTqRyednnWbY87s8ZNNEFQzRcTkNWe36NDjwTh5wfxHGqSabGS8Ho1gr2a7g7aE1jAkGQHFt2a9aecWaUafPRg5HemtFviEizrkJuURiY62jkRmqPfFiefSFxYKWFDtX", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165335835640, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "postBalances": [ + 165335830640, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "innerInstructions": [ + { + "index": 0, + "instructions": [ + { + "programIdIndex": 5, + "accounts": [ + 3, + 6 + ], + "data": "2WBxVujLscd9i", + "stackHeight": 2 + } + ] + } + ], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: Execute", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm invoke [2]", + "Program log: Instruction: SetPauseStatus", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm consumed 5974 of 178836 compute units", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm success", + "Program data: 3Q/UHSP8/04EAAAAAAAAAFJw9BMpTsJAnaNQ2SDcXQ5pG2X7hoV33jo1m3m+5rSsCQAAAHYZkdly0eyRAQ==", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 32767 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 32767 + }, + "blockTime": 1761335003, + "slot": 416842656 +} diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json new file mode 100644 index 00000000..bfb0ee2f --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json @@ -0,0 +1,104 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "43moQVWwUyh8zkHF29xTBem77agqKA5xqD2Mdo5WAQ1kSX8pAw6y7KFpUakL22yqGgLo6AeuNB3HHYMxrQ4xh3No" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 3 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "EFHezdyZSJbmhTNRtwMg8gUKxt3dWKbQZfqcaEH88wZc", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "4ZwGCF1AX6PHwTrJhjSHxExCkQgejNdigpxfWstg49Pe", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "3JHpHbRYM6PP4sWvmUZV2T4Aai6b1Rr9TBz7cqnuyVzf", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 2, + 3, + 4, + 5, + 0, + 6 + ], + "data": "5eKRp7yWnavbVMvLc7WTeNLXgQZHNTvquMyjaspSK7Pdjz7ZrrUaadEdC8gQcJhJnKvmRPJVTksRrWMCTMDNzkLRQp4zSS6xdmHKmdVEkqMymPaXnXd55r8YMiwttGQnL2kxRKXuXLaJwVLKHQXS67eyUNz44vNAAWVJtbBBrbjkzX9SZAj8wyrZ3UvE7sJ7gQwVQqktrGxgYVe81uLuigyUH4nYiczEAsHHRHYDmxvVWTqyPBX47y1qTUQD6efgnPuu25Ak6uCKVr56u9M", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165334448640, + 2345520, + 1343280, + 0, + 1252800, + 4134240, + 1, + 1141440 + ], + "postBalances": [ + 165335835640, + 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: SetRootEip712", + "Program 11111111111111111111111111111111 invoke [2]", + "Program 11111111111111111111111111111111 success", + "Program data: 0hm7digqPXcTx6nBPZ7WfYR/uDSiGEFJ+C8J2A3FQOBunqAcHzFRQgH+/GgAAAAAAAAAAFvuOPs7hiam+/CQoroqEyiPrjtrRaqBltmHvQYLpVUzBAAAAAAAAAAGAAAAAAAAAAA=", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 104364 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 104364 + }, + "blockTime": 1761334980, + "slot": 416842596 +} diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json new file mode 100644 index 00000000..a0d3f5a5 --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "3twu8SU2RFU8rQmrXAX3GJNVr9ZvTpivfvwfsoCPT7oQ12mrTRJvZ7gKLHrjdrXdshC3ypwkifXAQA9hvuVVi2fT" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "EFHezdyZSJbmhTNRtwMg8gUKxt3dWKbQZfqcaEH88wZc", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "7kfjNUENaJPDe6wae4VPTQNpqbKZfPaRLGNpBebwrDdz", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8JM1NbBrt3Xh3kxoE3gUoUhdacSAaBKUdPn3SULoy5MqoavKwgx6PuJpc4a9mJ9cmaha6AoiyQsCHGxWdTMinYKPSK1LpWRTUcNjogx4vsshNDLzEBxdR9kjNBN55kbdptKV1VXQmTet8hZ4CMZ3y4B2uz9qbj1CjUxNMHn8hnYm9i7n5bPYLRmP2DjMG3BA9Nyi9pffMC21AvTSWvR5vyuiV63EkmesbeRkQ8QbZvgPnbtRAkDv5pCs2h8qre4kLTqnuXxUR3xf12fjEzwUu5h5jwrjgspGGDRfPAV4u9tDR7GGY6EtR9sJskDiPQWx8K4ysTPyhYNMxbSeUGL6fmxLCUAha3WpMjtYQwXkQfjbymLjPfU1oDUk", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165334458640, + 2345520, + 1141440 + ], + "postBalances": [ + 165334453640, + 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": 1761334949, + "slot": 416842516 +} diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json new file mode 100644 index 00000000..5b4e9ecd --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "25rhAwLzHpnvS9Qcn5WiQjbdSBfbQE3Jd4AtppztdFV4estHEfHR7yNKFh6MPywt7Zv1gQ55QtrgRioSbve1eeMV" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "EFHezdyZSJbmhTNRtwMg8gUKxt3dWKbQZfqcaEH88wZc", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "Crbf2n1ugjfwMw1okBunvbChg94NP1hcXV9UihA363Ti", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8VPNxavkg2Yj38NCocv5Cq5gNj6AXt2M4QRQjqgjJnXPoyHsmdy1UZCs9koK1cZr7FShY3YeK7Sc81bFinGKKVJrJK7oopnNDdc4K2ns", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165334453640, + 2345520, + 1141440 + ], + "postBalances": [ + 165334448640, + 2345520, + 1141440 + ], + "innerInstructions": [], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: FinalizeSignatures", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 4571 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 4571 + }, + "blockTime": 1761334965, + "slot": 416842558 +} diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json new file mode 100644 index 00000000..ba63cee4 --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json @@ -0,0 +1,87 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "2pYjLxx4QGrsP4UWqS1TejQ2QtZPqLPgyS9Wk4Rpx56kkzXWfrfSh8L2KqPS4kfJFXCvcVrRQK64V3TLj7JJmiQ3" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 2 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "EFHezdyZSJbmhTNRtwMg8gUKxt3dWKbQZfqcaEH88wZc", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "AshJKhew9C5uMKg46GXzXu8zqkU2ejy1bqr9QUmQnDnq", + "instructions": [ + { + "programIdIndex": 3, + "accounts": [ + 1, + 0, + 2 + ], + "data": "2QCcPn6AhHR9Zi4mhnFE53M8tJopZFLmSWFEPUWVFoNxRRu5UeGEiNak2sqCCTHVhRd7Gs7nwzFxBudwd8pQDGHYuf6YoY1eR3ygyFcBiz", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165336809160, + 0, + 1, + 1141440 + ], + "postBalances": [ + 165334458640, + 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 7985 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 7985 + }, + "blockTime": 1761334933, + "slot": 416842473 +} diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json new file mode 100644 index 00000000..5c7c1ace --- /dev/null +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json @@ -0,0 +1,107 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "2cmXXwF3A3fWwFyUpNhktpYdwo8fftsxtGzP1BmaptHYuURiSWMgNmtgRpZmYLMq4VVSDUTQMdRJdtE4UBe6zE9A" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 4 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "F1HSdZSs7CWSNBV4jqa977hLcuxn6fcdg8R5JuoFvM2q", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "BYHzHhs3zJGaPgpRLyXUcVUR4aKX8DiL87fK2LBYducj", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 4, + 2, + 5, + 6, + 0, + 3, + 6 + ], + "data": "3XtzmXSf21G7ZgSaukdCPnKeKSpmU4LsofeemapAhJezh47KjzKQdAh5tmeJ3rjtfzSxGpmejDBYhwheHws1HheJA7dTRdNdzBat7s7kb6hkBcjA5iXQnHBejJkdGByNWebPDsqgo8417wXS", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165335830640, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "postBalances": [ + 165335825640, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "innerInstructions": [ + { + "index": 0, + "instructions": [ + { + "programIdIndex": 5, + "accounts": [ + 3, + 6 + ], + "data": "2WBxVujLscd9h", + "stackHeight": 2 + } + ] + } + ], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: Execute", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm invoke [2]", + "Program log: Instruction: SetPauseStatus", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm consumed 5974 of 179120 compute units", + "Program 6YpL1h2a9u6LuNVi55vAes36xNszt2UDm3Zk1kj4WSBm success", + "Program data: 3Q/UHSP8/04FAAAAAAAAAFJw9BMpTsJAnaNQ2SDcXQ5pG2X7hoV33jo1m3m+5rSsCQAAAHYZkdly0eyRAA==", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 32483 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 32483 + }, + "blockTime": 1761335083, + "slot": 416842868 +} From 701a758d890b605f194d5e2d47d2f55640d19c77 Mon Sep 17 00:00:00 2001 From: Baptiste Oueriagli Date: Fri, 24 Oct 2025 22:02:17 +0200 Subject: [PATCH 3/3] chore(solana): impl review feedback --- .../FACILITATORS.md | 31 ++++++++++++++----- .../README.md | 6 ++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md index 343522e5..6bfff0a7 100644 --- a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md @@ -15,7 +15,7 @@ As a Facilitator, you are responsible for: ```bash cd contract-deployments git pull -cd solana// +cd solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge make deps ``` @@ -78,22 +78,37 @@ MCM_SIGNATURES_COUNT= MCM_SIGNATURES=0xSIG1,0xSIG2,0xSIG3 ``` -## Phase 3: Execute Proposal +## Phase 3: Register Proposal ```bash -make step3-execute-proposal +make step3-register-proposal ``` -This command executes all the necessary steps: +This command registers the proposal: - Initialize signatures account - Append signatures - Finalize signatures - Set root -- Execute proposal -## Phase 4: Verification +## Phase 4: Execute Pause Proposal -### 4.1. View transaction on Solana Explorer +```bash +make step4-execute-pause +``` + +This command executes the pause proposal + +## Phase 5: Execute Unpause Proposal + +```bash +make step5-execute-unpause +``` + +This command executes the unpause proposal + +## Phase 6: Verification + +### 6.1. View transaction on Solana Explorer Visit the Solana Explorer for your network: - Mainnet: https://explorer.solana.com/ @@ -104,7 +119,7 @@ Search for the execution transaction and verify: - The program logs show `Instruction: SetPauseStatus` (Anchor log) - The pause status matches the intended action (paused or unpaused) -### 4.2. Update README +### 6.2. Update README Update the Status line in README.md to: diff --git a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md index 7dc982c7..d827e913 100644 --- a/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md +++ b/solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge/README.md @@ -1,6 +1,8 @@ # MCM Bridge Pause/Unpause -Status: PENDING +Status: EXECUTED (https://solscan.io/tx/PXqdRH8rpBLfCy88BBKf6gDJhC5Z7gzDFnx4M2jVEBU27dEMbYzswczcp7LWtVQQhoNMjFG1326w4NcHFhEanhs?cluster=devnet) + +Unpause: https://solscan.io/tx/2cmXXwF3A3fWwFyUpNhktpYdwo8fftsxtGzP1BmaptHYuURiSWMgNmtgRpZmYLMq4VVSDUTQMdRJdtE4UBe6zE9A?cluster=devnet ## Description @@ -13,7 +15,7 @@ This task pauses or unpauses the Bridge program using the MCM program. This is a ```bash cd contract-deployments git pull -cd solana// +cd solana/devnet-alpha/2025-10-24-mcm-pause-unpause-bridge make deps ```