{"id":21371334,"url":"https://github.com/daniel0130/multisig-wallet","last_synced_at":"2025-07-13T07:31:13.063Z","repository":{"id":263579999,"uuid":"890844632","full_name":"daniel0130/multisig-wallet","owner":"daniel0130","description":"Multisig wallet in Bitcoin L1 and L2( Stacks Network ). This is just Demo. ","archived":false,"fork":false,"pushed_at":"2024-11-19T09:32:30.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-19T10:36:50.573Z","etag":null,"topics":["bitcoin","bitcoinjs-lib","multisig","stacks","wallet"],"latest_commit_sha":null,"homepage":"","language":null,"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/daniel0130.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":"2024-11-19T09:29:47.000Z","updated_at":"2024-11-19T09:35:34.000Z","dependencies_parsed_at":"2024-11-19T10:40:36.875Z","dependency_job_id":"e9910e52-a227-437b-a0c1-ec1093b1ba1d","html_url":"https://github.com/daniel0130/multisig-wallet","commit_stats":null,"previous_names":["daniel0130/multisig-wallet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel0130%2Fmultisig-wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel0130%2Fmultisig-wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel0130%2Fmultisig-wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daniel0130%2Fmultisig-wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daniel0130","download_url":"https://codeload.github.com/daniel0130/multisig-wallet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225862812,"owners_count":17535998,"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":["bitcoin","bitcoinjs-lib","multisig","stacks","wallet"],"created_at":"2024-11-22T08:12:34.832Z","updated_at":"2024-11-22T08:12:35.461Z","avatar_url":"https://github.com/daniel0130.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitcoin Multisig Wallet\n\nA secure and flexible Bitcoin wallet that requires multiple signatures from different parties to authorize a transaction. This wallet is designed for situations where you want to increase the security of your Bitcoin holdings or require multiple participants to authorize a transaction.\n\n## Features\n\n- **Multi-Signature Security**: Requires multiple private keys to authorize a transaction. Reduces the risk of losing funds due to a single compromised key.\n- **Customizable Thresholds**: Define the number of signatures needed to authorize a transaction (e.g., 2-of-3, 3-of-5, etc.).\n- **Easy Integration**: Designed to integrate with Bitcoin infrastructure and supports a variety of use cases.\n- **Full Bitcoin Compatibility**: Built on Bitcoin's native script system for multisig addresses (P2SH or P2WSH).\n\n## How It Works\n\nA **multisig wallet** requires multiple parties to sign a transaction before it can be broadcasted to the Bitcoin network. The number of signatures required is customizable, such as:\n\n- **2-of-3**: Two out of three keys must sign a transaction.\n- **3-of-5**: Three out of five keys must sign a transaction.\n\nThe wallet leverages Bitcoin's **P2SH** (Pay-to-Script-Hash) or **P2WSH** (Pay-to-Witness-Script-Hash) addresses, which allow for the creation of Bitcoin addresses with complex conditions (like multisig) that must be fulfilled to spend the funds.\n\n### 1. **Setting Up a Multisig Wallet**\n\nTo create a multisig wallet, you will need to:\n\n- **Generate the public keys** of all participants (the keys that will control the wallet).\n- **Define the threshold** (e.g., 2-of-3, 3-of-5) to specify how many signatures are needed to authorize a transaction.\n- **Create the multisig address** using a script that specifies the required signatures.\n\nFor example, a **2-of-3 multisig wallet** would generate a script requiring 2 out of 3 keys to sign a transaction before funds can be spent.\n\n### 2. **Creating a Transaction**\n\nWhen creating a transaction from the multisig wallet:\n\n- **Input**: The wallet will specify which UTXOs (unspent transaction outputs) are being spent.\n- **Output**: The transaction will specify the destination address and amount.\n- **Signature Request**: The wallet will generate a partially signed Bitcoin transaction (PSBT), which is shared with the other participants.\n- **Signing**: Each participant signs the PSBT with their private key. Once the required number of signatures is reached, the transaction can be broadcast to the Bitcoin network.\n\n### 3. **Transaction Finalization**\n\n- Once all the required signatures are collected, the transaction is finalized and broadcasted to the Bitcoin network.\n- The Bitcoin network validates the multisig transaction and, if valid, includes it in a block, confirming the transfer of funds.\n\n### Example Setup\n\nFor a **2-of-3 multisig wallet**, you would:\n\n1. **Generate 3 keys**: Key1, Key2, Key3.\n2. **Create a 2-of-3 multisig address** using these keys.\n3. **Fund the wallet** by sending Bitcoin to the 2-of-3 multisig address.\n4. **Initiate a transaction**: Create a transaction from the multisig address and sign it with the required number of keys (e.g., Key1 and Key2).\n5. **Finalise and broadcast** the transaction once the second signature is added.\n\n### Benefits of a Multisig Wallet\n\n- **Increased Security**: If one key is compromised or lost, funds are still secure as additional signatures are required.\n- **Redundancy**: Multiple participants can be involved in the wallet's operation, which is useful for organizations, partnerships, or joint accounts.\n- **Backup**: Losing one key doesn’t mean losing access to the wallet — as long as the threshold of signatures is met, the funds can still be spent.\n\n### Use Cases\n\n- **Corporate or Team Accounts**: Use for joint business accounts where multiple members need to approve transactions.\n- **Cold Storage**: Multisig wallets are often used in conjunction with cold storage solutions to enhance security.\n- **Estate Planning**: Secure access to Bitcoin with multiple trusted parties for inheritance purposes.\n- **Shared Custody**: Shared access to funds for friends or family members.\n\n## Technologies Used\n\n- **Bitcoin Script**: Utilizes Bitcoin's native scripting system to create multisig addresses (P2SH or P2WSH).\n- **PSBT (Partially Signed Bitcoin Transactions)**: Used to facilitate secure, incremental signing of multisig transactions.\n- **Bitcoin Core/Full Node**: Interaction with Bitcoin's blockchain for creating and verifying transactions.\n- **HD Wallets (Hierarchical Deterministic)**: Supports key generation from seed phrases for multisig setups.\n\n## Getting Started\n\n### Prerequisites\n\n- **Node.js** (for backend implementation)\n- A **Bitcoin full node** or access to a Bitcoin node for creating and broadcasting transactions.\n- **Bitcoin libraries** such as [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) to handle multisig address generation and PSBT signing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel0130%2Fmultisig-wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaniel0130%2Fmultisig-wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel0130%2Fmultisig-wallet/lists"}