on master help sign in
add books bounty (#1338)

* refactor grant preview reward text * add books bounty * link -> work_request_link * clarify * change CTAs

commita579f56ee927e7398af5e4c20cb12dba407f37f2 authorJosh Lehman <josh@urbit.org> dateFri 18 Feb 2022, 07:35 (5 years ago) parentbe060ca
2 files changed+114−5
content/grants/books.md+109 pages/index.js+5−5
content/grants/books.mdnew file+109
@@ -0,0 +1,109 @@
1++++
2+title = "Books: address and transaction manager"
3+date = "2022-02-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "Books is an application for managing your crypto wallets, transactions, and counterparties. It allows you to add your wallet and others' wallets, track balances and transactions, and add private annotations to all of the above."
12+reward = "$45,000-$65,000 in WSTR"
13+assignee = ""
14+id = ""
15+completed = false
16+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0134&prefill_Grant+Name=Books%3A%20address%20and%20transaction%20manager"
17++++
18+
19+Books is an application for managing your crypto wallets, transactions, and counterparties. It allows you to add your wallet and other people’s, track balances and transactions, and add private annotations to all of the above.
20+
21+## Rationale
22+
23+If you spend much time interacting with crypto, you probably have a few wallets: a few hot wallets in metamask, a ledger or two, perhaps an Urbit ID on a master ticket, and that’s just Ethereum.
24+
25+To get a good picture of your aggregate activity you can use a variety of chain analytics tools, but there’s always a sizable catch: there’s nowhere to record the identities of the counter parties you transact with, or the purpose of the transactions. To do this now, your options are to either keep your own records (offline), use a local-storage based address book like Metamask’s, or put your data on someone else’s servers.
26+
27+Urbit provides an ideal solution: annotate on-chain, public information with private data stored on your own, personal server. This lets you account for your spending, keep records of the people you transact with, and organize your wallets without compromising on privacy or mobility.
28+
29+## Overview
30+
31+Books is for managing your personal crypto holdings and transaction history, not for actually executing any transactions. It’s chain analytics, but on a personal level, and with private annotations - like an address book.
32+
33+There are three pieces of data that it should store and allow to be annotated:
34+
35+- **Wallets**: your addresses that hold or have held assets.
36+- **Transactions**: all transactions that you’ve made from your wallets
37+- **Counterparties**: other entities that you’ve transacted with
38+
39+Since a counterparty can own multiple wallets, it should be possible to associate multiple addresses to one record. Since this is Urbit, the counterparty should have an optional @p associated.
40+
41+To get started with the application your first step would be to input a wallet that you own. You should be able to give it a name that means something to you, and add notes to it. After inputting an address, Books should then download the address’ transaction history for reconciliation. It’ll need to repeat this step every so often, probably daily or upon user request (think “refresh” button).
42+
43+Reconciliation, as in accounting, involves associating each transaction with a counterparty and including some kind of note about the purpose of each transaction. Since this isn’t strict accounting software though, it’s fine if transaction notes are updated/added after reconciliation.
44+
45+Users should be able to view their data in a number of different ways:
46+
47+- All unreconciled transactions across all wallets, or for a specific one
48+- The entire transaction history across all wallets, or for a specific one
49+- The transaction history of my interactions with a counterparty
50+- All wallets you own, or the details of a specific one
51+- The current holdings across all wallets, or of a specific one
52+- All counterparties that have been transacted with, or the details of a specific one
53+
54+That wraps up the feature set for an initial release, but there’s of course much that could be added to make this application even more interesting. See the future work section for more ideas.
55+
56+### User Stories
57+
58+As an user, I can:
59+
60+- Input a new wallet (public address)
61+- See the transaction history for each wallet that I’ve input
62+- Associate a name with my wallets, and update that name at any point in time
63+- Add and remove notes from my wallets
64+- Remove a wallet and all transactions and associated data
65+- Create a counterparty by entering a name and wallet address, and optional @p
66+- Add and remove notes from counterparties
67+- Add a wallet to an existing counterparty
68+- Reconcile an unreconciled transaction by noting its purpose associating it with a counterparty
69+- Create a new counterparty during reconciliation
70+- View my wallets, counterparties, and transactions as described above
71+
72+### Implementation Notes
73+
74+A first version of this could probably just use the etherscan API, but it would be cleaner to pull from the chain directly. You could probably do much of this using `eth-watcher`.
75+
76+This application should be built as a Landscape application with its own frontend and Gall agents. Use of graph-store is not recommended.
77+
78+## Future Work
79+
80+Thus far we’ve described an application that’s already useful, but it’s important to think through the ways in which it can become even more useful, and profitable. The UF is committed to fund subsequent development of Books, either through additional grants or through a [Combine](https://the-combine.org) investment.
81+
82+There are several ways to make this application even more interesting. Below we outline some features we think are worth integrating, but there are probably many more possibilities.
83+
84+- **Wallet integration**: pull your list of counterparties from Books into a wallet and initiate transactions against them
85+- **Notifications**: your Urbit could notify you the moment an incoming transaction is received at one of your addresses stored in Books
86+- **Address request**: autofill address information easily from Urbit counterparties. By adding a counterparty that has an associated @p, an address request can automatically be sent to them via Urbit. Once they respond to the address request, their address is recorded in your Books.
87+- **Multisig support**: create a multisig easily with your counterparties. Using the address request feature from above, you can select a group of counterparties and collect the address from each member. Upon all addresses being collected, Books can create a multisig with your selected group of counterparties.
88+- **Analytics**: with Books you can perform improved analysis on your transactions. Batch transaction by counterparty, visualize total spent on fees, track “coin flow” across configurable time frames
89+- **Tags**: turn your notes into Tags to batch transactions by type, easily search and perform analytics
90+- **Multi-chain support**: Extension to support additional chains: the features described are largely chain-agnostic. Books should extend support to additional chains, such as Bitcoin, Solana, etc.
91+- **CSV Export**: securely export transactions, notes, counterparties and all other data into a CRV for external processing
92+
93+## Requirements
94+
95+- At least three years of professional programming experience
96+- Experience with full-stack development, including JS and some server-side language
97+- Demonstrable experience with writing Gall agents
98+- Not engaged in active work on any other Urbit grant or project
99+
100+Candidates that demonstrate the desire and ability to continue working on this
101+project (see [Future Work](#future-work)) will be given priority.
102+
103+## Schedule
104+
105+The schedule is simple. If you can satisfactorily complete the above [user stories](#user-stories) within two months of acceptance, the reward is $65,000 in WSTR.
106+
107+If completed within three months, the reward is $55,000.
108+
109+If completed within five months, the reward is $45,000.
pages/index.js+5−5
@@ -240,15 +240,15 @@ export default function Home({ posts, events, openGrantsCount, search }) {
240240 </p>
241241 <div className="flex flex-wrap">
242242 <Link href="/grants">
243+ <a className="button-lg bg-blue-400 text-white mr-2 mb-8">
244+ Learn More
245+ </a>
246+ </Link>
247+ <Link href="/grants#view-grants">
243248 <a className="button-lg bg-green-400 text-white mr-2 mb-8">
244249 View Grants
245250 </a>
246251 </Link>
247− <Link href="/grants/proposals">
248− <button className="button-lg bg-blue-400 text-white">
249− Submit a Proposal
250− </button>
251− </Link>
252252 </div>
253253 </div>
254254 </Section>