on master help sign in
Merge pull request #1796 from urbit/thelifeandtimes-gnonsis-safe-bounty

Create gnosis-safe.md

commite131c8e0d401ae5273f5d19a6b006f5ceed1225a author~sarlev-sarsen <tlatfcp@protonmail.com> dateTue 13 Sep 2022, 12:59 (4 years ago) parent6c444c23727212
1 file changed+56
content/grants/gnosis-safe.md+56
content/grants/gnosis-safe.mdnew file+56
@@ -0,0 +1,56 @@
1++++
2+
3+title = "Gnosis Safe on Urbit"
4+date = "2022-09-13"
5+
6+[taxonomies]
7+grant_type = ["Bounty"]
8+grant_category = ["App Dev"]
9+
10+[extra]
11+image = ""
12+description = "A self-hosted Gnosis Safe UI to protect against centralized prohibition"
13+reward = "2-3 stars"
14+assignee = [""]
15+champion = ["~dinleb-rambep"]
16+grant_id = "P0154"
17+completed = false
18+canceled = false
19+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0154&prefill_Grant+Name=Gnosis%20Safe"
20+
21++++
22+
23+# Gnosis Safe on Urbit
24+
25+## Overview
26+
27+An Urbit app that serves the Gnosis Safe UI, but with Urbit used for storing safe/wallet metadata and exchanging signatures.
28+
29+## Rationale
30+
31+There are two problems with Gnosis Safe:
32+
33+Gnosis Safe stores safe metadata (e.g. the name of a safe and address book) in local storage, since this information is sensitive. This presents a problem when firing up Safe on different browsers.
34+Gnosis Safe isn’t completely decentralized. It relies on a server maintained by the Safe team to relay signatures to other addresses on the multisig.
35+
36+Urbit can fix both of these. Since Urbit is a personal, private server, it can store Safe metadata without compromising it to a third party. Because Urbit is a P2P network, it’s trivial to exchange signatures directly with other members of the multisig, thereby transforming into a true decentralized application.
37+
38+## Scope / Implementation
39+
40+The frontend of this is fairly straightforward: you’ll deploy the safe-react application as an Urbit application. This guide that walks through full-stack Urbit development might be helpful for learning how to do this.
41+
42+To use Urbit as the networking layer for signatures it isn’t sufficient to know only the public addresses of the other members of a safe — you’ll need to know their Urbit ID as well. This means that the Urbit version of Safe needs to maintain a mapping of which Ethereum addresses belong to which Urbit IDs, and if no such mapping is known, fall back to using the centralized service maintained by Gnosis. In light of this, the Urbit version of Safe will need to satisfy the following user stories:
43+
44+I can associate one of my public addresses (probably via Metamask) with my Urbit ID when using Safe
45+I can enter an Urbit ID instead of an Ethereum address when creating a safe, and my Urbit will ask that Urbit ID for an ETH address to use in the multisig
46+When someone adds me to a safe multisig via the Urbit Safe app, I can choose an ETH address to be used on the Safe
47+I can associate an Urbit ID with an Ethereum address on an existing safe
48+
49+The networking component of this is fairly challenging and requires modifications to the Gnosis Safe UI to support Urbit ID. A second, independent portion of this challenge is to simply use Urbit for storing safe metadata: your wallets, the safes that your wallets are part of, and the address book(s) for each safe. For this you’d need to wire up a custom Gall agent to the safe frontend, using the agent for storage rather than the browser’s local storage.
50+
51+
52+## Timeline & Compensation
53+
54+Completed within 2 months of bounty assignment: 3 stars
55+
56+Completed withing 3 month of bounty assignment: 2 stars