Git Product home page Git Product logo

shafayeatsumit / rugged-multisig Goto Github PK

View Code? Open in Web Editor NEW
17.0 3.0 8.0 2.31 MB

A fully decentralized multisig wallet built with Solidity and ReactJS.

Home Page: http://rugged-multisig.surge.sh/

License: MIT License

Shell 0.72% JavaScript 17.96% Solidity 0.58% CSS 80.33% HTML 0.12% Less 0.06% Dockerfile 0.16% TypeScript 0.07%
blockch hardhat reactjs scaffold-eth solidity cryptocurrency ethereum wallet multisig-wallet

rugged-multisig's Introduction

multisig logo

πŸš€ Rugged MultiSig

A minimal clone of gnosis-safe with one key difference Rugged Multisig uses Waku Connect as its indexer.

The purpose of multisig wallets is to increase security by requiring multiple parties to agree on transactions before execution. Transactions can be executed only when confirmed by a predefined number of owners

🎬 Demo Video

πŸ’‘what problem does it solve?

Typical multi-sig wallets are able to achieve gas-less signatures by running a centralized indexer, aka transaction history service.

This indexer is a centralized piece, critical to the wallet functionality. As of any centralized infrastructure, the indexer can be subject to censorship, DDOS attacks or hosting failure.

Replacing the indexer by the decentralized Waku network would mitigate such risks.

✨ Features

  • Create wallet.
  • Import existing wallet.
  • Propose basic transactions with the frontend that sends them to the backend.
  • β€œvote” on the transaction as other signers.
  • Add/remove new signer.
  • Execute transaction as an active signer.

πŸ›  Waku Implementation Detail

This project integrates Waku to multisig wallet for initiating multi-party multi-signature transactions. When an owner of a safe initiates a Safe transaction, the transaction data will be broadcast to the Waku network with symmetric encryption, instead of sending to the centralized server. Other owners who need to confirm the transaction would either receive the request via:

  • Waku Relay, if they were online when the request was originally made, or,
  • Waku Store, if they were offline when the request was originall made.

The content topic is versioned so that this workflow can be upgraded anytime.

πŸ„β€β™‚οΈ Quick Start

Prerequisites: Node (v16 LTS) plus Yarn and Git

clone/fork :

https://github.com/shafayeatsumit/rugged-multisig.git

install and start your πŸ‘·β€ Hardhat chain:

cd rugged-multisig
yarn install
yarn chain

in a second terminal window, start your πŸ“± frontend:

cd rugged-multisig
yarn start

in a third terminal window, πŸ›° deploy your contract:

cd waku-multi-sig-wallet
yarn deploy

πŸ“± Open http://localhost:3000 to see the app

πŸ§ͺ Test Coverage:

----------------------|----------|----------|----------|----------|----------------|
File                  |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
----------------------|----------|----------|----------|----------|----------------|
 contracts/           |    95.31 |       50 |      100 |    95.77 |                |
  MultiSigFactory.sol |      100 |       50 |      100 |      100 |                |
  MultiSigWallet.sol  |    94.23 |       50 |      100 |    94.83 |    116,117,121 |
  TestERC20Token.sol  |      100 |      100 |      100 |      100 |                |
----------------------|----------|----------|----------|----------|----------------|
All files             |    95.31 |       50 |      100 |    95.77 |                |
----------------------|----------|----------|----------|----------|----------------|

πŸ“£ Shout Out:

πŸ’Œ P.S.

🌍 You need an RPC key for testnets and production deployments, create an Alchemy account and replace the value of ALCHEMY_KEY = xxx in packages/react-app/src/constants.js with your new key.

πŸ“£ Make sure you update the InfuraID before you go to production. Huge thanks to Infura for our special account that fields 7m req/day!

rugged-multisig's People

Contributors

shafayeatsumit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.