Gnosis Safe PoC that uses Waku for decentralized, censorship-resistant signature exchange
Go to file
Jakub Sokołowski 191bcf1db6 ci: add Jenkinsfile to build in CI
Adds `Jenkinsfile` to build and deploy the app at:
https://dev-gnosis-safe.wakuconnect.dev/

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-05-09 15:54:47 +02:00
packages ci: add Jenkinsfile to build in CI 2022-05-09 15:54:47 +02:00
.editorconfig added config for .sol files 2021-06-23 20:15:15 -03:00
.gitignore Updates to remove caniuselite warning 2021-06-28 20:21:31 -03:00
.gitmodules Refactor: hardhat-deploy, contractLoader, signers, ethers, rollup-readiness (#192) 2021-06-21 15:45:00 +01:00
.gitpod.yml Add a Gitpod configuration file 2021-03-28 19:30:00 -03:00
Jenkinsfile ci: add Jenkinsfile to build in CI 2022-05-09 15:54:47 +02:00
LICENSE LICENSE 2021-03-27 12:43:34 -06:00
README.md Readme update 2022-03-31 15:43:26 +11:00
package.json fix Cannot convert a BigInt value to a number 2022-05-09 15:54:47 +02:00
yarn.lock fix Cannot convert a BigInt value to a number 2022-05-09 15:54:47 +02:00

README.md

Waku Powered Gnosis Safe

This project replaces Gnosis Transaction History Service with Waku to achieve full decentralization.

Waku is a decentralized network and family of protocols that enable censorship-resistant, private, peer-to-peer communication. It is the infrastructure backbone of the Status app, a Web3 decentralized messenger app. The JavaScript implementation of Waku, js-waku, enables dApps and webapps to utilize the Waku network for off-chain message transmission.

Implementation Detail

This project integrates Waku to Gnosis Safe 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 Gnosis Transaction History Service. 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.

See https://youtu.be/NoglkQAL7Mc for a simple demonstration.

Installation

git clone -b gnosis-starter-kit https://github.com/Soptq/gnosis-safe-waku.git gnosis-safe-waku

cd gnosis-safe-waku

yarn install

yarn start

👉 Visit your frontend at http://localhost:3000

Deployment

📡 deploy a safe using the frontend or enter an existing safe address:

( Grab Rinkeby from the faucet )

image

(Setup two browsers with different addresses and add them both as OWNERS with a THRESHOLD of 2.)


Deploy the safe in one browser and paste it into the second browser:

image


Send some Rinkeby to your Safe by copying the address and using the 'wallet icon' in the top right:

image

image


Propose a transaction that sends funds vitalik.eth:

image


The second browser can then sign the second signature:

image


After the threshold of signatures is met, anyone can execute the transacation:

image


Check the multisig balance to make sure the funds were sent:

image


Support

Please don't hesitate to open issues.