|
| 1 | +# Facilitator Instructions: Signers Update MCM 0 |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +As a Facilitator, you are responsible for: |
| 6 | +1. Preparing the new signers configuration |
| 7 | +2. Creating the MCM proposal |
| 8 | +3. Committing and pushing the proposal to the repo |
| 9 | +4. Coordinating with Signers |
| 10 | +5. Collecting signatures |
| 11 | +6. Executing the proposal on-chain |
| 12 | + |
| 13 | +## Prerequisites |
| 14 | + |
| 15 | +```bash |
| 16 | +cd contract-deployments |
| 17 | +git pull |
| 18 | +cd solana/mainnet/2025-10-27-signers-update-mcm-0 |
| 19 | +make deps |
| 20 | +``` |
| 21 | + |
| 22 | +Ensure you have: |
| 23 | +- `mcmctl` installed (via `make deps`) |
| 24 | +- `eip712sign` installed (via `make deps`) |
| 25 | +- A funded Solana wallet configured |
| 26 | + |
| 27 | +## Phase 1: Prepare and Generate Proposal |
| 28 | + |
| 29 | +### 1.1. Update .env with signers configuration |
| 30 | + |
| 31 | +Set the following in `.env`: |
| 32 | + |
| 33 | +```bash |
| 34 | +MCM_PROGRAM_ID=<mcm-program-id> |
| 35 | +MCM_MULTISIG_ID=<multisig-id> |
| 36 | +MCM_VALID_UNTIL=<unix-timestamp> |
| 37 | +MCM_OVERRIDE_PREVIOUS_ROOT=false # or true if needed |
| 38 | +MCM_PROPOSAL_OUTPUT=proposal.json |
| 39 | + |
| 40 | +# New signers configuration |
| 41 | +MCM_NEW_SIGNERS=0xADDRESS1,0xADDRESS2,0xADDRESS3 |
| 42 | +MCM_SIGNER_GROUPS=0,0,1 |
| 43 | +MCM_GROUP_QUORUMS=2,1 |
| 44 | +MCM_GROUP_PARENTS=0,0 |
| 45 | +MCM_CLEAR_SIGNERS=false # or true if needed |
| 46 | +MCM_CLEAR_ROOT=false # or true if needed |
| 47 | +``` |
| 48 | + |
| 49 | +### 1.2. Generate proposal |
| 50 | + |
| 51 | +```bash |
| 52 | +make step1-create-proposal |
| 53 | +``` |
| 54 | + |
| 55 | +This creates the proposal file (default `proposal.json` or whatever is set in `MCM_PROPOSAL_OUTPUT`). |
| 56 | + |
| 57 | +### 1.3. Review proposal |
| 58 | + |
| 59 | +Open and review the generated proposal file to verify: |
| 60 | +- All new signers are included |
| 61 | +- Signer groups are correctly assigned |
| 62 | +- Group quorums are appropriate |
| 63 | +- Group parent relationships are correct |
| 64 | +- Valid until timestamp is appropriate |
| 65 | + |
| 66 | +### 1.4. Commit and push |
| 67 | + |
| 68 | +```bash |
| 69 | +git add . |
| 70 | +git commit -m "Add MCM signers update proposal" |
| 71 | +git push |
| 72 | +``` |
| 73 | + |
| 74 | +## Phase 2: Coordinate with Signers and Collect Signatures |
| 75 | + |
| 76 | +Coordinate with Signers to collect their signatures. Each Signer will run `make sign` and provide their signature. |
| 77 | + |
| 78 | +Concatenate all signatures in the format: `0xSIG1,0xSIG2,0xSIG3` |
| 79 | + |
| 80 | +Once you have all required signatures, update `.env`: |
| 81 | + |
| 82 | +```bash |
| 83 | +MCM_SIGNATURES_COUNT=<number-of-signatures> |
| 84 | +MCM_SIGNATURES=0xSIG1,0xSIG2,0xSIG3 |
| 85 | +``` |
| 86 | + |
| 87 | +## Phase 3: Execute Proposal |
| 88 | + |
| 89 | +```bash |
| 90 | +make step3-execute-proposal |
| 91 | +``` |
| 92 | + |
| 93 | +This command executes all the necessary steps: |
| 94 | +- Initialize signatures account |
| 95 | +- Append signatures |
| 96 | +- Finalize signatures |
| 97 | +- Set root |
| 98 | +- Execute proposal |
| 99 | +- Print the new configuration |
| 100 | + |
| 101 | +## Phase 4: Verification |
| 102 | + |
| 103 | +### 4.1. Verify MCM configuration |
| 104 | + |
| 105 | +Check that: |
| 106 | +- All new signers are present |
| 107 | +- Old signers (if removed) are no longer present |
| 108 | +- Signers are in the correct groups |
| 109 | +- Group quorums are set correctly |
| 110 | +- Group parent relationships are correct |
| 111 | + |
| 112 | +### 4.2. View on Solana Explorer |
| 113 | + |
| 114 | +Visit the Solana Explorer for your network: |
| 115 | +- Mainnet: https://explorer.solana.com/ |
| 116 | +- Devnet: https://explorer.solana.com/?cluster=devnet |
| 117 | + |
| 118 | +Search for the execution transaction to verify the update. |
| 119 | + |
| 120 | +### 4.3. Update README |
| 121 | + |
| 122 | +Update the Status line in README.md to: |
| 123 | + |
| 124 | +```markdown |
| 125 | +Status: [EXECUTED](https://explorer.solana.com/tx/<transaction-signature>?cluster=<network>) |
| 126 | +``` |
| 127 | + |
| 128 | +Replace `<transaction-signature>` with the execution transaction signature and `<network>` with the appropriate cluster (devnet, mainnet-beta, etc.). |
0 commit comments