on master help sign in
initial content of eth related bounties
e7ba43d~sarlev-sarsen
eth-wallet.mdnew file+31
@@ -0,0 +1,31 @@
1+# Overview
2+
3+Build an Urbit-native Ethereum wallet.
4+
5+# Rationale
6+
7+Building an Ethereum wallet that runs on Urbit is a simple project with huge impact. It would unlock a whole new set of functionalities for users, bridge the gap between Urbit and the web3 ecosystem, and enable DeFi primitives to exist in the Urbit Universe.
8+
9+An Ethereum wallet on Urbit would have an identity system and social graph built in, which would enable a whole new range of possibilities. This wallet would serve as a building block for other companies and developers building on Urbit.
10+
11+# Scope / Implementation
12+
13+Urbit has a [Bitcoin wallet app](https://github.com/timlucmiptev/btc-agents) which leverages Urbit’s ID system and P2P network. It lets a ship point to a trusted bitcoin provider node and then act as a public gateway for other Urbit ships, so not all users need to configure their own full node It also allows Urbit users to send BTC to each other using only their Urbit ID, with Bitcoin public keys handled seamlessly under the hood.
14+
15+Your task is to build an Ethereum wallet with similar behavior.
16+
17+An important component is to build a way for a ship to associate Ethereum public keys with their ID so it can share its wallet address to peers when asked for. A different scheme than the one used by the Bitcoin wallet (a new address per transaction) is probably needed. After that, a sleek interface is needed so users can send each other ETH at a minimum. Replicating the Bitcoin app’s provider node system is outside of the scope, but a good submission will allow the user to set their own RPC URL. You could also consider using Pocket Network.
18+
19+Because Ethereum is a complete computer, it won’t be feasible to keep shipping new UIs for all the things you can do on Ethereum. A great submission will let users use other Ethereum apps on the public internet with their Urbit-native wallet. One potential approach would be to embed a mini-browser and inject web3 into it the same way many mobile wallets do (Metamask iOS, Coinbase Wallet, etc.) Another would be to support WalletConnect.
20+
21+# Milestones & Compensation
22+
23+TBD
24+
25+# Future Work
26+
27+- Crypto subscription payments that are secure and automated by having your moon run locally and sign transactions on your behalf
28+
29+- Integrate with [Holium’s Ballot app](https://urbit.org/applications/~lomder-librun/ballot) to build a treasury management system for DAOs
30+
31+- Integrate with Uribt Books app to utilize transaction history and address rolodex functionality
gnosis-safe.mdnew file+29
@@ -0,0 +1,29 @@
1+# Overview
2+
3+An Urbit app that serves the [Gnosis Safe UI](https://gnosis-safe.io), but with Urbit used for storing safe/wallet metadata and exchanging signatures.
4+
5+# Rationale
6+
7+There are two problems with Gnosis Safe:
8+
9+1. 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.
10+2. 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.
11+
12+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.
13+
14+# Scope / Implementation
15+
16+The frontend of this is fairly straightforward: you’ll deploy the [safe-react](https://github.com/safe-global/safe-react) application as an Urbit application. This guide that walks through [full-stack Urbit development](https://urbit.org/docs/userspace/full-stack/1-intro) might be helpful for learning how to do this.
17+
18+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:
19+
20+- I can associate one of my public addresses (probably via Metamask) with my Urbit ID when using Safe
21+- 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
22+- 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
23+- I can associate an Urbit ID with an Ethereum address on an existing safe
24+
25+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.
26+
27+# Milestones & Compenstation
28+
29+TBD
ipfs-provider-node.mdnew file+25
@@ -0,0 +1,25 @@
1+# Overview
2+
3+Run your IPFS node on the same machine as your Urbit, so your Urbit can easily access the IPFS node to upload and serve media.
4+
5+# Rationale
6+
7+Sharing pictures, memes, music, videoclips constitutes a large part of interactions among web2 users, both within their group chats, social media profiles, and forum posts. Sharing media is a core aspect of being online, but Urbit isn’t yet capable of handling large media file storage. Not having media storage not only limits social interactions, but also is a key aspect of a fully encompassing decentralized OS.
8+
9+Meanwhile, IPFS is a more narrowly focused project that allows users to publish data in the cloud in a decentralized manner, specifically filling this gap in current Urbit’s file storing capabilities. IPFS does not have an identity model other than public keys, and routable identities such as Urbit ID could be useful to understand where the files live. Thus, IPFS and Urbit are complementary projects born out of a similar rationale which can make each other better by talking to each other.
10+
11+# Scope / Implementation
12+
13+Users should be able to run one easy command or script to spin up an IPFS node that is automatically configured with TLS and an S3-compatible API (including the same credentials system i.e. endpoint, access key id and secret access key) that automatically pins files when they are uploaded through the S3 API. This should work whether it is running on the same machine as the Urbit ship or a different one.
14+
15+An excellent submission will include a script that sets up an Urbit ship with a user-provided key alongside the IPFS node and puts both behind the same user-provided domain name (i.e. urbit.domain.name and ipfs.domain.name) using a shared Apache or nginx web server and LetsEncrypt for TLS. Ideally this script can configure the S3 storage in the Urbit ship programmatically so that the user does not need to do it manually.
16+
17+# Milestones & Compenstation
18+
19+TBD
20+
21+# Future work
22+
23+Layer Urbit’s own file system over IPFS and use it to routinely back-up piers
24+
25+Run [Fleek](https://fleek.co/) on Urbit using a similar implementation to do website hosting on your Urbit
urbitswap.mdnew file+40
@@ -0,0 +1,40 @@
1+# Overview
2+
3+Self-host Uniswap on your Urbit
4+
5+# Rationale
6+
7+Uniswap is a decentralized exchange with no order books, that simply facilitates peer to peer trades between its users through an efficient automated market making algorithm. Uniswap Labs is the main developer of Uniswap, but has no control over how tokens are traded or which tokens are listed. Since the entire Uniswap protocol runs on Ethereum and is open source, any development team can build on top of the protocol.
8+
9+The SEC launched an investigation into Uniswap at the end of 2021, with Gary Gensler the Chairman of the SEC stating that there can be some sort of “protocol control” from DeFi developers, and that DEXs could be violating banking laws (in addition to securities laws) by hosting securities and making them available to trade for their users.
10+
11+The operative word here is hosting, because Uniswap, while it is a decentralized exchange with no order books that simply facilitates P2P trades, still uses centralized servers to host its frontend trading UI. This SEC statement has broad ranging implications for all of crypto, going beyond the specific example of Uniswap.
12+
13+Binance comes to mind as another example, for it is the largest crypto exchange worldwide in terms of volume and the fastest progressing one, shipping new features and products that push forward the limits of what is possible within a financial system. They have been able to innovate so quickly because from the start they did a macro hedge, moving their servers out of China and now use a network of servers distributed across the world in mostly unknown locations in favorable jurisdictions.
14+
15+As more regulatory crackdown occurs within crypto, Urbit emerges as a useful tool for regulatory arbitrage and progressing further decentralization within the DeFi space. With a native, self-hosted, Uniswap app, Urbit can sustain the financial freedom of its crypto users, set a precedent of collaboration and extend its self-sovereign reach for other web3 platforms.
16+
17+Also, Urbit can extend the possibilities of DeFi by adding a cohesive identity and a social layer to the trading experience. Most crypto traders have private group chats where they discuss their positions, then separately they go and trade on DEXs. Other traders use WallStreetBets or similar forums to do research from their peers into what they should invest in. UrbitSwap could provide a unified experience for chatting with fellow traders while taking new financial positions.
18+
19+# Scope / Implementation
20+
21+Develop an Urbit application that serves the [open-source Uniswap UI](https://github.com/Uniswap/interface). The app should only be served if the user is logged in to the Urbit ship running it– it should not be publicly accessible for anyone to access. Distribute the application on Urbit so that anyone on Urbit can install it. See [this guide](https://urbit.org/docs/userspace/dist/guide) for a walk-through example of developing and distributing an app or “desk” on Urbit. A great submission will maximize user choice i.e. using or not using Uniswap’s [unsupported token list](https://github.com/Uniswap/uniswap-interface/blob/main/src/constants/tokenLists/unsupported.tokenlist.json). A stellar submission will creatively integrate Urbit’s native ID and network (i.e. groups and/or the “Pals” app) into the Uniswap experience.
22+
23+# Milestones & Compensation
24+
25+TDB
26+
27+# Future Work
28+
29+- By integrating Urbit ID with Uniswap, traders (who often work with many wallets for different purposes) can operate under a unified identity system.
30+
31+- Once a clear identity is established, new features can be unlocked:
32+
33+- Set yourself to public, to be discoverable (either by anyone or just by your Pals) so they can see your trading performance
34+
35+- Follow top traders and learn from their positions, with potential to follow on
36+
37+- Add a social layer to trading: spin up a chat with the traders you follow to discuss trades as you take on positions, or even create a group for a broader discussion about investing
38+
39+- Create a leaderboard of best traders to promote discovery and foster a competitive spirit
40+