{"id":24179989,"url":"https://github.com/ronfflex/multisig-wallet","last_synced_at":"2026-05-19T10:06:47.513Z","repository":{"id":271710375,"uuid":"914332151","full_name":"Ronfflex/Multisig-Wallet","owner":"Ronfflex","description":"A secure and gas-optimized Solidity multisignature wallet supporting multiple signers with configurable approval thresholds. Built with Foundry, featuring comprehensive test coverage and efficient transaction management.","archived":false,"fork":false,"pushed_at":"2025-01-09T11:51:15.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T19:16:33.349Z","etag":null,"topics":["blockchain","defi","ethereum","foundry","multisig","smart-contracts","solidity","wallet","web3"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ronfflex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-09T11:45:41.000Z","updated_at":"2025-01-09T11:57:10.000Z","dependencies_parsed_at":"2025-01-09T12:43:12.565Z","dependency_job_id":"20056bb3-1a1d-414e-8053-1c58ee7593eb","html_url":"https://github.com/Ronfflex/Multisig-Wallet","commit_stats":null,"previous_names":["ronfflex/multisig-wallet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ronfflex%2FMultisig-Wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ronfflex%2FMultisig-Wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ronfflex%2FMultisig-Wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ronfflex%2FMultisig-Wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ronfflex","download_url":"https://codeload.github.com/Ronfflex/Multisig-Wallet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241557183,"owners_count":19981881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","defi","ethereum","foundry","multisig","smart-contracts","solidity","wallet","web3"],"created_at":"2025-01-13T06:11:28.537Z","updated_at":"2026-05-19T10:06:47.472Z","avatar_url":"https://github.com/Ronfflex.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multisig Wallet\n\nA secure and gas-optimized implementation of a multisignature wallet smart contract built with Solidity and Foundry.\n\n## Features\n\n- Multiple signers (minimum 3)\n- Configurable confirmation threshold (minimum 2)\n- Transaction submission and execution\n- Signer management (add/remove)\n- No external dependencies\n- 100% test coverage\n- Gas optimized\n\n## Requirements\n\n- [Foundry](https://book.getfoundry.sh/getting-started/installation.html)\n- Solidity 0.8.28\n- Git\n\n## Installation\n\n1. Clone the repository:\n\n```bash\ngit clone \u003crepository-url\u003e\ncd multisig-wallet\n```\n\n2. Install dependencies:\n\n```bash\nforge install\n```\n\n3. Build the project:\n\n```bash\nforge build\n```\n\n## Testing\n\nRun the test suite:\n\n```bash\nforge test\n```\n\nRun tests with coverage report:\n\n```bash\nforge coverage\n```\n\nRun tests with gas report:\n\n```bash\nforge test --gas-report\n```\n\n## Deployment\n\n1. Set up your environment variables:\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n2. Deploy using Foundry script:\n\n```bash\n# Local deployment\nforge script script/Deploy.s.sol:DeployLocal --broadcast --verify\n\n# Mainnet deployment\nforge script script/Deploy.s.sol:DeployMainnet --rpc-url $MAINNET_RPC_URL --broadcast --verify\n\n# Testnet deployment\nforge script script/Deploy.s.sol:DeployGoerli --rpc-url $GOERLI_RPC_URL --broadcast --verify\n```\n\n## Contract Usage\n\n### Initialization\n\n```solidity\nconstructor(address[] memory _initialSigners, uint256 _requiredConfirmations)\n```\n\n- `_initialSigners`: Array of initial signer addresses (minimum 3)\n- `_requiredConfirmations`: Number of required confirmations (minimum 2)\n\n### Key Functions\n\n1. Transaction Management:\n\n```solidity\nfunction submitTransaction(address to, uint256 value, bytes calldata data) external returns (uint256 txId)\nfunction confirmTransaction(uint256 txId) external\nfunction revokeConfirmation(uint256 txId) external\nfunction executeTransaction(uint256 txId) external\n```\n\n2. Signer Management:\n\n```solidity\nfunction addSigner(address newSigner) external\nfunction removeSigner(address signer) external\n```\n\n3. View Functions:\n\n```solidity\nfunction getSignerCount() external view returns (uint256)\nfunction isSigner(address account) external view returns (bool)\nfunction getConfirmationCount(uint256 txId) external view returns (uint256)\nfunction isConfirmed(uint256 txId, address signer) external view returns (bool)\n```\n\n## Security Considerations\n\n1. Input Validation:\n\n   - Zero address checks\n   - Signer count validations\n   - Confirmation threshold checks\n\n2. Access Control:\n\n   - Only signers can submit/confirm transactions\n   - Only signers can manage other signers\n   - Minimum signer requirement enforced\n\n3. Security Features:\n   - Reentrancy protection\n   - Check-Effects-Interactions pattern\n   - Events for transparency\n   - Custom errors for gas efficiency\n\n## Gas Optimization\n\nThe contract implements several gas optimization techniques:\n\n- Custom errors instead of revert strings\n- Minimal storage operations\n- Efficient data structures\n- Unchecked math where safe\n- Proper validation order\n\n## Project Structure\n\n```\n├── src/\n│   ├── MultisigWallet.sol       # Main contract\n│   └── interfaces/\n│       └── IMultisigWallet.sol  # Interface\n├── test/\n│   ├── MultisigWallet.t.sol     # Tests\n│   └── helpers/\n│       └── RevertingContract.sol # Test helper\n├── script/\n│   └── Deploy.s.sol             # Deployment scripts\n└── foundry.toml                 # Foundry configuration\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a new Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronfflex%2Fmultisig-wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronfflex%2Fmultisig-wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronfflex%2Fmultisig-wallet/lists"}