-
Notifications
You must be signed in to change notification settings - Fork 42
Multisig for Protocols #239
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
DicksonWu654
wants to merge
46
commits into
security-alliance:develop
Choose a base branch
from
DicksonWu654:multisig-voc
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 45 commits
Commits
Show all changes
46 commits
Select commit
Hold shift + click to select a range
6f93d88
Add Multisig for Protocols section to vocs.config.ts
DicksonWu654 e55d47c
Enhance Multisig for Protocols section in vocs.config.ts
DicksonWu654 6790aaa
Update Multisig for Protocols documentation and navigation links
DicksonWu654 01bfc44
Update links in Multisig for Protocols documentation for consistency
DicksonWu654 e3cae9a
Fix formatting of "Eternal Safe" references in Multisig documentation
DicksonWu654 ebcdb2b
Fix formatting issues in Multisig documentation
DicksonWu654 ae3487f
Update image links in Multisig for Protocols documentation
DicksonWu654 a5a2037
Add contributors to contributors.json
DicksonWu654 e67bf34
Update prohibited practices section in seed phrase security documenta…
DicksonWu654 e5dea90
Update Multisig documentation to replace 'Training Checklist' with 'I…
DicksonWu654 cf6c5d6
Remove GitHub and Twitter links for contributors in contributors.json
DicksonWu654 f9f80dc
Remove Emergency Contacts section from Multisig for Protocols overvie…
DicksonWu654 d4b54b3
Revise Quick Start section in Multisig for Protocols overview documen…
DicksonWu654 e5718ac
Update minimum security standards link in Multisig for Protocols over…
DicksonWu654 bb035ef
Reorder use case table in planning and classification section of Mult…
DicksonWu654 60364b5
Standardize formatting for regular reviews in the planning and classi…
DicksonWu654 9a1bcf6
Update link in setup and configuration section of Multisig documentat…
DicksonWu654 07c649c
Update multisig documentation to streamline the update template secti…
DicksonWu654 2201cd8
Remove regular reviews section from the planning and classification d…
DicksonWu654 37f857c
Clarify standard threshold for Protocol Parameters in the multisig pl…
DicksonWu654 fae1ca2
Fix punctuation in timelock configuration documentation for multisig …
DicksonWu654 f028ea7
Refactor multisig documentation to consolidate seed phrase security g…
DicksonWu654 533fd9d
Update documentation to replace 'Private Key Management' references w…
DicksonWu654 c4c9b47
Enhance multisig documentation by adding steps for publishing verifie…
DicksonWu654 ae719c7
Update multisig documentation to include additional reviewer for clarity
DicksonWu654 29604ce
Refactor multisig documentation to update backup infrastructure refer…
DicksonWu654 13341e6
Refactor multisig documentation to remove 'Ongoing Management' section
DicksonWu654 ef71519
Update multisig documentation to replace 'Timelock Configuration' ref…
DicksonWu654 8dda2eb
Refactor multisig documentation to streamline overview section
DicksonWu654 a448321
Update multisig documentation for improved clarity and navigation
DicksonWu654 dd48407
Refactor multisig documentation to remove outdated sections and impro…
DicksonWu654 9b6bfc9
Update multisig documentation to include additional contributor and i…
DicksonWu654 06d518f
Update multisig documentation to standardize terminology and improve …
DicksonWu654 08df622
Enhance multisig documentation with additional resources and security…
DicksonWu654 0405dc8
Update multisig documentation to enhance verification processes and r…
DicksonWu654 bf016ba
Refactor multisig documentation to remove outdated 'General Rules' re…
DicksonWu654 470de9a
Enhance multisig documentation with updated access options and improv…
DicksonWu654 9723260
Update multisig documentation to include development flags for enhanc…
DicksonWu654 f1d7e7d
Enhance multisig documentation with comprehensive signing guidelines …
DicksonWu654 9fea83e
Refine travel security guidelines in multisig documentation
DicksonWu654 776e5d0
Enhance multisig documentation with improved image formatting and des…
DicksonWu654 ddbc4dc
Merge remote-tracking branch 'origin/develop' into multisig-voc
DicksonWu654 0163379
remove wallet-security stuff back to develop
DicksonWu654 04a249e
revert the vocs.config.ts for wallet-security content
DicksonWu654 eaf4491
Fixing stuff cause the child has been split in half
DicksonWu654 48f01fb
Update transaction verification link in multisig implementation check…
DicksonWu654 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
232 changes: 232 additions & 0 deletions
232
docs/pages/multisig-for-protocols/backup-signing-and-infrastructure.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,232 @@ | ||
| --- | ||
| tags: | ||
| - Engineer/Developer | ||
| - Security Specialist | ||
| - Multisig Security | ||
| contributors: | ||
| - role: wrote | ||
| users: [isaac, geoffrey, louis, pablo, dickson] | ||
| - role: reviewed | ||
| users: [pinalikefruit, engn33r] | ||
| --- | ||
|
|
||
| import { | ||
| TagList, | ||
| AttributionList, | ||
| TagProvider, | ||
| TagFilter, | ||
| ContributeFooter, | ||
| } from "../../../components"; | ||
|
|
||
| <TagProvider> | ||
| <TagFilter /> | ||
|
|
||
| # Backup Signing & Infrastructure | ||
|
|
||
| <TagList tags={frontmatter.tags} /> | ||
| <AttributionList contributors={frontmatter.contributors} /> | ||
|
|
||
| If the default interfaces for either Safe or Squads are down or suspected of being compromised, these alternatives enable continued critical signing operations. As a signer, you should familiarize yourself with these tools and practice signing transactions with your team. | ||
|
|
||
| ## UI Alternatives | ||
|
|
||
| ### EVM Networks | ||
|
|
||
| **Eternal Safe - Decentralized fork of Safe\{Wallet\}** | ||
|
|
||
| - GitHub: https://github.com/eternalsafe/wallet | ||
| - Hosted (IPFS): https://eternalsafe.eth.limo (requires bring your own RPC) | ||
| - Local: Can be downloaded and run locally | ||
|
|
||
| Note: Local/alternative UIs may not be actively maintained. Treat them as emergency options and perform extra verification. Please DYOR. | ||
|
|
||
| ### Solana | ||
|
|
||
| **Squads Public Client - Open source Squads V4 interface** | ||
|
|
||
| - GitHub: https://github.com/Squads-Protocol/public-v4-client | ||
| - Features: Verifiable build, self-hostable with Docker, IPFS distribution | ||
| - Local: Can be built and run locally | ||
|
|
||
| ### Mobile (Safe) | ||
|
|
||
| **Safe Android App** | ||
|
|
||
| - GitHub: https://github.com/safe-global/safe-android | ||
| - App Store: https://apps.apple.com/us/app/safe-wallet/id1515759131 | ||
| - Play Store: https://play.google.com/store/apps/details?id=io.gnosis.safe | ||
|
|
||
| ## RPC Backup Options | ||
|
|
||
| ### Basic guidance: | ||
|
|
||
| - Multiple providers: Set up accounts with 2-3 different RPC services | ||
| - eg. Alchemy, Infura, Chainstack, Quicknode, Tenderly | ||
| - Avoid correlation: Choose providers that don't share infrastructure, if that information is available | ||
| - Private RPCs preferred: Public RPC URLs are typically not sufficient for reliable operation | ||
|
|
||
| ### Administrator responsibilities | ||
|
|
||
| Ensure signer preparedness: | ||
|
|
||
| - Provide access to offline UI tools listed above | ||
| - Verify signers have practiced using backup interfaces | ||
| - Test backup RPCs during non-emergency periods | ||
| - Document procedures for switching to backup infrastructure | ||
|
|
||
| ## Block Explorer Backup Options | ||
|
|
||
| ### EVM Networks | ||
|
|
||
| Etherscan provides the default block explorer for nearly all EVM chains. In the event that Etherscan is compromised or goes down, it is important to have backup options that can be used for monitoring and investigating transactions. | ||
|
|
||
| **Blockscout - Open source Etherscan alternative** | ||
|
|
||
| - https://www.blockscout.com/ | ||
| - Available for all EVM networks | ||
| - Can also be [self-hosted](https://github.com/blockscout/blockscout), although it requires significant time to run full node and index | ||
|
|
||
| More explorers: A broader list of network explorers is maintained here: https://explorer.swiss-knife.xyz/ | ||
|
|
||
| ### Solana Networks | ||
|
|
||
| Both explorer.solana.com and Solscan are reliable options for Solana transaction exploration and decoding. | ||
|
|
||
| **explorer.solana.com** - https://explorer.solana.com/ | ||
|
|
||
| - Can be [self-hosted](https://github.com/solana-foundation/explorer) using open source code | ||
|
|
||
| **Solscan** - https://solscan.io/ | ||
|
|
||
| ## Preparation | ||
|
|
||
| **It is recommended to download dependencies ahead of time and store them in a secure location** so they are easily accessible during emergencies. | ||
|
|
||
| ## EVM Networks | ||
|
|
||
| ### Eternal Safe - Decentralized fork of Safe\{Wallet\} | ||
|
|
||
| #### Access Options | ||
|
|
||
| - **GitHub**: https://github.com/eternalsafe/wallet | ||
| - **Hosted (IPFS)**: https://eternalsafe.eth.limo (requires bring your own RPC) | ||
| - **Local**: Can be downloaded and run locally | ||
|
|
||
| #### Setup | ||
|
|
||
| 1. Select network and enter an RPC URL | ||
| <div align="center"> | ||
| <img | ||
| src="https://frameworks-static.s3.us-east-2.amazonaws.com/images/multisig-for-protocols/eternal-safe-network-selection.png" | ||
| alt="Eternal Safe network selection" | ||
| style={{ height: "400px" }} | ||
| /> | ||
| <p> | ||
| <em> | ||
| Eternal Safe network selection screen: choose your network and enter an | ||
| RPC URL | ||
| </em> | ||
| </p> | ||
| </div> | ||
| 2. Enter Safe address and load | ||
|  | ||
| 3. Eternal Safe will automatically detect Ether balances but not ERC20 tokens. They can be added manually | ||
|  | ||
|
|
||
| #### Transaction Verification | ||
|
|
||
| **Critical**: It is still essential to verify hashes and calldata from Eternal Safe. Follow the verification steps in [Safe Multisig: Step-by-Step Verification]. | ||
|
|
||
| #### Smart Link System | ||
|
|
||
| Once a transaction has been signed by one signer, a **Smart Link** is created which can be forwarded to the next signer to add their signature. The transactions do not go to any centralized backend. | ||
|
|
||
| **Example Smart Link:** | ||
|
|
||
| ``` | ||
| Please sign this Eternal Safe transaction for the Safe: base:0xA79C6968E3c75aE4eF388370d1f142720D498fEC. | ||
| Current confirmations: 1 of 2. | ||
| https://eternalsafe.eth.limo/transactions/tx/?safe=base:0xA79C6968E3c75aE4eF388370d1f142720D498fEC&tx=eyJzaWduYXR1cmVzIjp7ImRhdGFUeXBlIjoiTWFwIiwidmFsdWUiOltbIjB4NDBiYjMyZjA4NjJkMjI3ODEzYzg2ZmQ4M2E3YjNjOWRiOTA3NGUyYSIseyJzaWduZXIiOiIweDQwYkIzMkYwODYyRDIyNzgxM2M4NkZEODNBN0IzYzlkYjkwNzRFMkEiLCJkYXRhIjoiMHgwZDMxZTZjODIxZjBhMGZlM2M5NmNlZWY4ZDNhM2JhZmU3YmZmZTliODQ0ZWNkYzBkYWNmNzc0MzFkODQ0NjU4MTgwZjUwNmZlMjZiZjMzOTQwY2VhOTJiMzlhNDNjODRkMDRhNThiMGY1ODQ2NzhlNzE0YTllMWJkMzE0NTg5ZjFiIn1dXX0sImRhdGEiOnsiZGF0YSI6IjB4IiwiYmFzZUdhcyI6IjAiLCJnYXNQcmljZSI6IjAiLCJzYWZlVHhHYXMiOiIwIiwiZ2FzVG9rZW4iOiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJub25jZSI6NCwicmVmdW5kUmVjZWl2ZXIiOiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCJ2YWx1ZSI6IjEwMDAwMDAwMDAwMDAwMDAiLCJ0byI6IjB4RTBiY2ZlNWUzMEFCYTBCNDZmMTNCMEMyNENiQzQ3MERDQTNlYjg2NSIsIm9wZXJhdGlvbiI6MH19 | ||
| ``` | ||
|
|
||
| #### Execution | ||
|
|
||
| Once all signatures are collected, execute the transaction. **Note**: Prior to execution you can manually simulate using Tenderly by entering the transaction data, but an automatic simulation link will not be available. | ||
|
|
||
| ## Solana | ||
|
|
||
| ### Squads Public Client - Open source Squads V4 interface | ||
|
|
||
| #### Access Options | ||
|
|
||
| - **GitHub**: https://github.com/Squads-Protocol/public-v4-client | ||
| - **Hosted**: https://backup.app.squads.so/ | ||
| - **Features**: Verifiable build, self-hostable with Docker, IPFS distribution | ||
| - **Local**: Can be built and run locally | ||
|
|
||
| #### Setup | ||
|
|
||
| 1. If running locally, follow setup instructions in https://github.com/Squads-Protocol/public-v4-client and access via http://localhost:8080 | ||
| 2. Enter RPC URL in settings | ||
|  | ||
| 3. Enter multisig address in the **lower** text box (Search for Multisig Config) and select the detected Multisig Config | ||
|  | ||
|
|
||
| #### Transaction Operations | ||
|
|
||
| 4. Create, approve, or execute transactions. _Smart Links_ are not needed for Solana as all transactions are on chain and accessible via the RPC without an API | ||
|  | ||
|
|
||
| ## Security Considerations | ||
|
|
||
| ### Enhanced Verification | ||
|
|
||
| When using backup systems: | ||
|
|
||
| - **Extra caution required**: Be more thorough with verification procedures | ||
| - **Multiple verification methods**: Use additional tools to cross-check transaction details | ||
| - **Team confirmation**: Verify with other signers before proceeding with critical transactions | ||
| - **Documentation**: Record use of backup systems and any issues encountered | ||
|
|
||
| ### Risk Assessment | ||
|
|
||
| - **Delay non-critical operations**: Consider postponing non-urgent transactions until primary systems recover | ||
| - **Emergency operations only**: For critical emergency responses, proceed with enhanced verification | ||
| - **Communication**: Keep team informed about system status and verification procedures | ||
|
|
||
| ## Testing and Preparation | ||
|
|
||
| ### Regular Practice | ||
|
|
||
| - **Monthly testing**: Practice using backup interfaces during normal operations | ||
| - **Team coordination**: Ensure all signers can operate backup systems | ||
| - **Process documentation**: Update procedures based on practice sessions | ||
|
|
||
| ### Emergency Drills | ||
|
|
||
| - **Simulated outages**: Practice coordinating with backup systems during drills | ||
| - **Communication testing**: Verify backup communication channels work with backup UIs | ||
| - **Time measurement**: Track how long backup system activation takes | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Common Issues | ||
|
|
||
| - **RPC connectivity**: Switch to alternative RPC providers if connection fails | ||
| - **Transaction loading**: Refresh or try different network endpoints | ||
| - **Signature verification**: Use multiple verification tools when in doubt | ||
|
|
||
| ### Support Resources | ||
|
|
||
| - **GitHub documentation**: Refer to project documentation for technical issues | ||
| - **Team assistance**: Coordinate with other signers for problem-solving | ||
| - **Alternative tools**: Have multiple backup options available | ||
|
|
||
| ## Related Documents | ||
|
|
||
| - [Safe Multisig: Step-by-Step Verification] - Verification procedures | ||
| - [Emergency Procedures](/multisig-for-protocols/emergency-procedures) - General emergency response | ||
| - [Communication Setup](/multisig-for-protocols/communication-setup) - Backup communication during outages | ||
|
|
||
| </TagProvider> | ||
| <ContributeFooter /> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| --- | ||
| tags: | ||
| - Engineer/Developer | ||
| - Security Specialist | ||
| - Multisig Security | ||
| contributors: | ||
| - role: wrote | ||
| users: [isaac, geoffrey, louis, pablo, dickson] | ||
| - role: reviewed | ||
| users: [pinalikefruit, engn33r] | ||
| --- | ||
|
|
||
| import { TagList, AttributionList, TagProvider, TagFilter, ContributeFooter } from '../../../components' | ||
|
|
||
| <TagProvider> | ||
| <TagFilter /> | ||
|
|
||
| # Communication Setup | ||
|
|
||
| <TagList tags={frontmatter.tags} /> | ||
| <AttributionList contributors={frontmatter.contributors} /> | ||
|
|
||
| ## Primary channel | ||
|
|
||
| Set up dedicated communication channel for multisig operations: | ||
| - **Platform**: Signal recommended (end-to-end encryption) | ||
| - **Membership**: Multisig signers + authorized management only | ||
| - **Configuration**: Notifications enabled, disappearing messages for sensitive discussions | ||
| - **Naming**: Clear channel naming convention (e.g., "X-Treasury-Multisig") | ||
|
|
||
| ## Backup channels | ||
|
|
||
| Configure backup communication on different platform: | ||
| - **Platform**: Different from primary (if Signal primary, use Telegram/Discord/Slack) | ||
| - **Same membership restrictions** as primary | ||
| - **Document access procedures** for all signers | ||
|
|
||
| ## Paging system (Critical/Emergency Multisigs) | ||
|
|
||
| For multisigs requiring rapid response: | ||
| - Configure alerts that can reach signers 24/7 | ||
| - Include essential info in page: multisig name, urgency level, primary action needed | ||
| - Link to emergency runbooks in notification message | ||
| - Test quarterly to ensure reliability | ||
|
|
||
| </TagProvider> | ||
| <ContributeFooter /> |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.