diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/.env b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/.env new file mode 100644 index 00000000..970b640b --- /dev/null +++ b/solana/devnet/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=0xf89c0799a370d4396d1754293f7e39c500f289bbdd7aff29e51689d3046afabc0d6035da35374b438cc4d0a22a4f154ad6ebeed2cb9b1586961cd4b2f53e97ce1b,0x508d824efc3c2cddc051f167d5f6c9d86319bd05307f5ec68c8d238028888abd3176d272c8d0864ba9493178df4103f1b9cb2b46fd0abeafc5e01d0205ddb58c1c,0x0b7704bf580321fb3a59df6c1dfcdf5e77e73c0fc3ce3879a55f6e572542adfe7de6840bee90af34736c0692b6a62f38d5dd32a719eb1a555ec0b817660c53e91c + +# 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=7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md new file mode 100644 index 00000000..87c550f9 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/FACILITATORS.md @@ -0,0 +1,130 @@ +# 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/devnet/2025-10-24-mcm-pause-unpause-bridge +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: Register Proposal + +```bash +make step3-register-proposal +``` + +This command registers the proposal: +- Initialize signatures account +- Append signatures +- Finalize signatures +- Set root + +## Phase 4: Execute Pause Proposal + +```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/ +- 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) + +### 6.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-pause-unpause-bridge/Makefile b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/Makefile new file mode 100644 index 00000000..fad7b41e --- /dev/null +++ b/solana/devnet/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-register-proposal +step3-register-proposal: + @echo "==> Step 3: Registering 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/2025-10-24-mcm-pause-unpause-bridge/README.md b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/README.md new file mode 100644 index 00000000..482d3d99 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/README.md @@ -0,0 +1,53 @@ +# MCM Bridge Pause/Unpause + +Status: EXECUTED (https://solscan.io/tx/mvDops5iMa5GbeMKsCDGBEhKC1qAZB5ykdCQyTtVM7eED9JQxoC5dxf61dtgKMXLMLB74sT5FBaLbCw5YC3oAuF?cluster=devnet) + +Unpause: https://solscan.io/tx/2dV1McFJFkceBdqUqe6Nd2tgVNE5ts8ZBTS2p38fp4mu3DngcpRZCeeNbU2KzNwWUnZ8pY9uUnMEVktqo9CZCLfd?cluster=devnet + +## 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/devnet/2025-10-24-mcm-pause-unpause-bridge +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/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json new file mode 100644 index 00000000..a99316b7 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-pause-proposal-execute.json @@ -0,0 +1,107 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "mvDops5iMa5GbeMKsCDGBEhKC1qAZB5ykdCQyTtVM7eED9JQxoC5dxf61dtgKMXLMLB74sT5FBaLbCw5YC3oAuF" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 4 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "4nLSFFbRMa1dYz5kE5nNrujqjiGeMh1yMfXuP4qDGZ2g", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "2NfRiW4jCQFtmwwvNYu1Qc69goRNKKz9eqhSGWF1q73m", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 4, + 2, + 5, + 6, + 0, + 3, + 6 + ], + "data": "kdy7aa47nZccXGYmJrCpZESavPSdBHauQKcgU4SCjVZLTicZFgHts7pDttPzTqRyedruQnKdZ5zsq58tU9mNmcSp7gwCLU9uvbgDHQXtEZC14akQGiQjbSc2x7PmjiWkdzxxY83AedgYMPDA3EbR9ZEA9i5nBYVKJpRRMbrA8kiq1T8G9dKgemL8r4a", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165231160440, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "postBalances": [ + 165231155440, + 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 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC invoke [2]", + "Program log: Instruction: SetPauseStatus", + "Program 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC consumed 5974 of 178839 compute units", + "Program 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC success", + "Program data: 3Q/UHSP8/04GAAAAAAAAAGIj+oCz+AVJqaxPHe6lTjmnSqj6j3SmITFGBxZRnU+PCQAAAHYZkdly0eyRAQ==", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 32764 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 32764 + }, + "blockTime": 1761336900, + "slot": 416847616 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json new file mode 100644 index 00000000..0f36af95 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-proposal-set-root.json @@ -0,0 +1,104 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "cGgrcRteKiBSpuyBUjq6GVYiJPCJGu6uVAzCru8dyRQpoqmB2wPhTRcY8Y6zoLXZB9UCj3EB6tfqUZJ7MimoNGQ" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 3 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "jW6CxzynV2uwkiSqnRhexE3HvTJUfvnzd3XesW4ETR6", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "EoJwHRF7CVKfSdiV1QJKb9KFu5ZZyn2J7Zg2K8bjjPfK", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "5gF2kHKRJyrwZLaKRWPftiqr14s8K76c62Vjfao1rnRu", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 2, + 3, + 4, + 5, + 0, + 6 + ], + "data": "5eKRp7yWnavbVMvLc7WTeNLXgQZHNTvquMyjaspSK7Pdjz7ZrrUaadEtrMo9zLhJA3hJwXBE3PgkqVKHoUS5FuNnRLk9sVv6ZtDCS7N2G6ANePs8EycMYXr25nNknC1yTa12vcSE1q5cNoNeFQbxmcPArgB2h2f7twTnJ9JmBRLLqaUanjXtLe1Wq8eF7YyMGZUQoxj2TcfvLNMqBUoDBk3gBpskXFhpyfh4B3cmZj7rA3hQxyQq6ZhbQQ4NHX7CizupvSx8Ro4Kn3msaj4", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165229773440, + 2345520, + 1343280, + 0, + 1252800, + 4134240, + 1, + 1141440 + ], + "postBalances": [ + 165231160440, + 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: 0hm7digqPXeIfQP//GsSjZE3UEkZHuAjHpvY5Dh1jspiXb/QnK79hQH+/GgAAAAAAAAAAFvuOPs7hiam+/CQoroqEyiPrjtrRaqBltmHvQYLpVUzBgAAAAAAAAAIAAAAAAAAAAA=", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 107367 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 107367 + }, + "blockTime": 1761336880, + "slot": 416847564 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json new file mode 100644 index 00000000..76e22b4c --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-append.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "56zGzwrHv41w6tN3cJ9jeTtEES6TxnPCAXWoCf9gPCQAUjkEoSjqjWHwVv6wpTkRfsBcAvP4msr4WrdHYU79uxRv" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "jW6CxzynV2uwkiSqnRhexE3HvTJUfvnzd3XesW4ETR6", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "9usxoHhmhddnPZwiy8ZJVh8b9yjDs1WY5bQzUKkgP6g9", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8JM1NbBrt3Xh3kxoE3gUoUhdacSAaBKUdPn3SULoy5MqoavKwgx6PuKAUnNVyHHSYyFvJ6BugKvySvMXZB21cd9nNn6qTE6HwLHMQfKr8eVNLuAKcsjy8wvdR4PgR9cdvRPamSd4RAmeMuXg6jZqok233WA8cpr5Nu3hGzzAzwQ93KjwQvFDfYDbAH7aH6QdL5SanES91nYzCmGNPxEdt4GK8XSGjQ3EP5HhDaGdwiR9wHkw13iaGTZ1q6GmSJbcyCbzUe61MRKM33AhW3GxrxBMtqNuYjDvd6t9wCNoXbnVQFgQkco7VdUJ5TGTbjDcRSqNchW3tmnMpeXqRUh6Uy3eX44HVdfm4JvLTbNqfdgPD1jNvhQCPpnU", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165229783440, + 2345520, + 1141440 + ], + "postBalances": [ + 165229778440, + 2345520, + 1141440 + ], + "innerInstructions": [], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: AppendSignatures", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 8385 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 8385 + }, + "blockTime": 1761336849, + "slot": 416847482 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json new file mode 100644 index 00000000..23e0c754 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-finalize.json @@ -0,0 +1,66 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "55Kufm9g9YDhjxNcuFzPvkVNVHFLJ85K3GLuYHfb32zKiWm7iHQD7ZLbe8jWWKedUu338DeALK859PWAh4ADgPWd" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 1 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "jW6CxzynV2uwkiSqnRhexE3HvTJUfvnzd3XesW4ETR6", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "4pwedjTc4qJh9LM2njp7BDrJmkuhqt1JtUnKSGFnhezA", + "instructions": [ + { + "programIdIndex": 2, + "accounts": [ + 1, + 0 + ], + "data": "8VPNxavkg2Yj38NCocv5Cq5gNj6AXt2M4QRQjqgjJnXPoyHsmdy1UZDkYv4NhRzufW8fuNSsUQVPX5jgHb7f3TCydMQkfhmGNhYAtXpb", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165229778440, + 2345520, + 1141440 + ], + "postBalances": [ + 165229773440, + 2345520, + 1141440 + ], + "innerInstructions": [], + "logMessages": [ + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX invoke [1]", + "Program log: Instruction: FinalizeSignatures", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 7571 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 7571 + }, + "blockTime": 1761336865, + "slot": 416847523 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json new file mode 100644 index 00000000..4dc90a53 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-signatures-init.json @@ -0,0 +1,87 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "2kR6TL7XNeqLmxYCPykgmNZwY5AUWprc5ykj8J2g1MRaLUeaVT1i2AEUpZwqBKt3QXRAL1Ey7Dkj6J3yJzHbRafZ" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 2 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "jW6CxzynV2uwkiSqnRhexE3HvTJUfvnzd3XesW4ETR6", + "11111111111111111111111111111111", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "EBju6VuMqULGPotdgJoAg8N5at8Rb2TXGKwdh7vPdK2D", + "instructions": [ + { + "programIdIndex": 3, + "accounts": [ + 1, + 0, + 2 + ], + "data": "2QCcPn6AhHR9Zi4mhnFE53M8tJopZFLmSWFEPUWVFoNxRRu5UeGEiNaowk44gj2rK7ywhfFDU5HCUHUEoZdBzKWGz18fbgAfZG13pHUKLN", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165232133960, + 0, + 1, + 1141440 + ], + "postBalances": [ + 165229783440, + 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 10985 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 10985 + }, + "blockTime": 1761336834, + "slot": 416847443 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json new file mode 100644 index 00000000..58ff7eee --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/artifacts/mcm-unpause-proposal-execute.json @@ -0,0 +1,107 @@ +{ + "confirmationStatus": "finalized", + "transaction": { + "signatures": [ + "2dV1McFJFkceBdqUqe6Nd2tgVNE5ts8ZBTS2p38fp4mu3DngcpRZCeeNbU2KzNwWUnZ8pY9uUnMEVktqo9CZCLfd" + ], + "message": { + "header": { + "numRequiredSignatures": 1, + "numReadonlySignedAccounts": 0, + "numReadonlyUnsignedAccounts": 4 + }, + "accountKeys": [ + "2aWsUTRfJu2hPNUYHaYJjm6C3SVPqXjtoxu2VgBXsd72", + "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "9mYamYp9qGXSC5whTmfH92RG2BdBpwSP3DwaczyFieDN", + "4nLSFFbRMa1dYz5kE5nNrujqjiGeMh1yMfXuP4qDGZ2g", + "DBKy3Bb6kFS2HH2JXZ1DhaR1KvZ6z6nTVyu4HJuvnd1S", + "7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC", + "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX" + ], + "recentBlockhash": "ELkd4BRz6THKeiUBrrzQPZRkCcZVx8UXcUeEbXnK7dSj", + "instructions": [ + { + "programIdIndex": 7, + "accounts": [ + 1, + 4, + 2, + 5, + 6, + 0, + 3, + 6 + ], + "data": "3XtzmXSf21G7ZgSaukdCPnKeKSpmU4LsofeemapAhJezh47KjzKQdAh5tmeJ3rjtfzTC92rH6hGxoWNTJqUsvcpKZrae9YQLG9VYGDTPbHZKyrqzXJz5ybUEqcETfAm4NoLWqqxvcukLXiUM", + "stackHeight": null + } + ] + } + }, + "meta": { + "err": null, + "status": { + "Ok": null + }, + "fee": 5000, + "preBalances": [ + 165231155440, + 4134240, + 1252800, + 4565760, + 1343280, + 1141440, + 0, + 1141440 + ], + "postBalances": [ + 165231150440, + 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 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC invoke [2]", + "Program log: Instruction: SetPauseStatus", + "Program 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC consumed 5974 of 179120 compute units", + "Program 7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC success", + "Program data: 3Q/UHSP8/04HAAAAAAAAAGIj+oCz+AVJqaxPHe6lTjmnSqj6j3SmITFGBxZRnU+PCQAAAHYZkdly0eyRAA==", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX consumed 32483 of 200000 compute units", + "Program Ea5qsVs2kwQXi7LMAh3Qg5YKpuPQbW7oqvYaPXUwBwoX success" + ], + "preTokenBalances": [], + "postTokenBalances": [], + "rewards": [], + "loadedAddresses": { + "writable": [], + "readonly": [] + }, + "computeUnitsConsumed": 32483 + }, + "blockTime": 1761336999, + "slot": 416847874 +} diff --git a/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/proposal.json b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/proposal.json new file mode 100644 index 00000000..5e262eb6 --- /dev/null +++ b/solana/devnet/2025-10-24-mcm-pause-unpause-bridge/proposal.json @@ -0,0 +1,45 @@ +{ + "multisigId": "0x0000000000000000000000000000000000000000000000000000000000000000", + "validUntil": 1761410561, + "instructions": [ + { + "programId": "7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC", + "data": "dhmR2XLR7JEB", + "accounts": [ + { + "pubkey": "4nLSFFbRMa1dYz5kE5nNrujqjiGeMh1yMfXuP4qDGZ2g", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "isSigner": false, + "isWritable": false + } + ] + }, + { + "programId": "7c6mteAcTXaQ1MFBCrnuzoZVTTAEfZwa6wgy4bqX3KXC", + "data": "dhmR2XLR7JEA", + "accounts": [ + { + "pubkey": "4nLSFFbRMa1dYz5kE5nNrujqjiGeMh1yMfXuP4qDGZ2g", + "isSigner": false, + "isWritable": true + }, + { + "pubkey": "2N9nKVFPHsBVazniiYNxECB2nPLcwjk3dHAJH9tkr2xQ", + "isSigner": false, + "isWritable": false + } + ] + } + ], + "rootMetadata": { + "chainId": 0, + "multisig": "7BrnaHaHtFDshmyrZFi28r9vzxTqcmTjSZcf7KdLHRhL", + "preOpCount": 6, + "postOpCount": 8, + "overridePreviousRoot": false + } +}