Skip to content
This repository was archived by the owner on Jul 22, 2026. It is now read-only.

Latest commit

Β 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Project Status: Inactive

This repository is no longer actively maintained and is being preserved for educational or historical reference.

πŸ” Multi-Signature Wallet

output

MIT License Build Stacks


CHECK NOTES!

A secure, decentralized Multi-Signature Wallet built on the Stacks blockchain using Clarity smart contracts and a Next.js frontend. This wallet requires multiple predefined signers to approve transactions before they are executed, ensuring greater security and trust for collaborative fund management.


πŸ“ Project Description

This project implements a fully functional multi-signature wallet dApp, allowing multiple parties to propose, confirm, and execute transactions only when a minimum threshold of confirmations is reached. It is useful for DAOs, joint treasury management, and any shared fund system requiring trust minimization.


πŸ”§ Technologies Used

  • 🌐 Stacks Blockchain
  • πŸ“œ Clarity Smart Contracts
  • βš›οΈ Next.js / React
  • 🎨 Tailwind CSS
  • πŸ”— Hiro Wallet integration
  • πŸ§ͺ Clarinet for contract testing
  • ⛓️ Stacks.js

✨ Key Features

  • πŸ” Multi-sig Authorization – Transactions require approval from multiple owners.
  • 🧍 Fixed Owner Set Initialization – A single-use initialize function defines all owners. (Critical!)
  • πŸ“€ Proposal Submission – Owners can propose transactions with recipient and amount.
  • βœ… Confirmations – Each owner can confirm the proposal.
  • πŸš€ Execute Transaction – Transactions execute after enough confirmations.
  • ⏳ Proposal Expiry – Each proposal includes an expiration block height.
  • πŸ“œ On-chain Records – All proposals, confirmations, and executions are stored on-chain.

πŸ“¦ Repository

πŸ”— GitHub Repository


πŸ› οΈ Getting Started

Prerequisites

  • Node.js >= 18
  • Clarinet (npm install -g @hirosystems/clarinet)
  • Hiro Wallet (browser extension)

Installation

git clone https://github.com/Metrohan/MultiSigWallet.git
cd MultiSigWallet
npm install

Start frontend:

npm run dev

Start smart contract dev env:

clarinet console

βš™οΈ Usage

Proposing a Transaction

  1. Connect your wallet.
  2. Enter recipient and amount.
  3. Submit the proposal.
  4. Other owners can confirm via the UI.
  5. Once threshold is met, the proposal becomes executable.

πŸ“„ Smart Contract Documentation

multi-sig-wallet.clar

Function Description
propose-transaction Creates a new transaction proposal.
confirm-transaction Allows a wallet owner to confirm an existing proposal.
execute-transaction Executes the transaction if confirmation threshold is met.
add-owner (Optional) Add a new wallet owner (if allowed).
remove-owner (Optional) Remove an owner (if allowed).

Proposal Data Structure:

{
  to: principal,
  amount: uint,
  confirmations: (list 10 principal),
  confirmation-count: uint,
  executed: bool,
  expires-at: uint
}

πŸ“¦ Deployment

Testnet Deployment

clarinet check
clarinet deployment apply --testnet

Follow instructions to broadcast via Hiro Testnet Explorer.

Mainnet Deployment

Replace .toml config with mainnet keys and run:

clarinet deploy mainnet

πŸ§ͺ Testing

clarinet deployment apply --testnet
  • Write tests in tests/ directory using Clarinet’s test suite.

⚠️ Known Issues

  • initialize can only be called once. If your address is not one of the initial owners, you will not be able to interact with the wallet.
  • There is no current add-owner or remove-owner functionality in this implementation.

βœ… ToDo

  • Implement optional add-owner / remove-owner logic (post-initialization governance).
  • Show real-time proposal list via stacks.js on frontend.
  • Add filtering (pending / executed / expired).
  • Improve error handling in frontend UI.
  • Add email/notification integration for confirmations.
  • Finalize README with complete deployment instructions.

🀝 Contributing

We welcome contributions!

  1. Fork the repo
  2. Create a branch (git checkout -b feature/your-feature)
  3. Commit changes (git commit -am 'Add new feature')
  4. Push and create a PR

πŸ“œ License

This project is licensed under the MIT License.


πŸ“¬ Contact / Support

For questions, open an issue or contact the maintainer at:
πŸ“§ metehangnn@outlook.com
🐦 @metehangnn


πŸ™Œ Acknowledgments


Notes

I was unable to complete my project due to limited internet access. I will add a ToDo list to the README to better explain my purpose.


πŸ› οΈ Built with ❀️ on Stacks by [Metehan GΓΌnen]

About

This project implements a fully functional multi-signature wallet dApp, allowing multiple parties to propose, confirm, and execute transactions only when a minimum threshold of confirmations is reached. It is useful for DAOs, joint treasury management, and any shared fund system requiring trust minimization.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages