Gitcoin is GDPR complaint. Learn more in
Gitcoin's Terms & Conditions.
Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
### Prize Bounty
First Prize: $1500
Second Prize: $500
Third Prize: $100 + a ticket to [Ethereal Tel Aviv!](https://etherealsummit.com)
### Challenge Description
GoodDollar is a non-profit digital coin created to serve the many and not just the few, by giving everyone who joins a small daily income in the form of UBI. To elevate the poor out of poverty and into financial freedom. To create new trade, new marketplaces, new entrepreneurs, new jobs, new economic growth, new business, for everyone.ˇ
Our society is on the cusp of a financial revolution, at the tipping point of a massive change. Blockchain technology and cryptocurrencies have provided us with an alternative to outdated financial institutions like banks and credit companies but the solutions are not yet complete and the future is still being determined.
We are seeking programmers to propose and create impactful solutions based on the GoodDollar ERC20 Protocol as part of Consensys for Social Impact Global hackathon. The winners will be announced just in time for the first Ethereal conference outside of the US, in the lovely coastal city of Tel Aviv.
Together we now have the means to form our own financial frameworks, decentralized ones, that can be programmed to serve common human interests rather than corporate ones.
Here’s Yoni Assia, Presenting a 15m vision of GoodDollar - [Here](https://www.youtube.com/watch?v=m5LlMwTD2bA)
The Impact of UBI - Now let's solve this globally - [Here](https://youtu.be/UvErJvuWrWc)
### Submission Requirements
- Code should be well documented
- A working example should be deployed
- Address the technical requirements and include explanations of how they have been implemented, with code references.
- Submit your repo(s) with a README file explaining how to deploy your solution
- GoodDollar extensions/modifications should be forked from the relevant repo and submitted as a PR
### Submission Deadline
11:59pm Eastern on September 11th
### Judging Criteria
The winner/winners will be chosen accordingly to the feasibility of the implementation of their solution.
### Winner Announcement Date
We will review the submissions on a rolling basis upon submission. Winners will be notified at the end of the hackathon.
- [live alpha version](https://dapp.gooddollar.org)
- [master branch live version](https://gooddev.netlify.com)
- [Quick start dev env](https://github.com/GoodDollar/GoodBootstrap)
- [Docs & Guides](https://docs.gooddollar.org)
- JSDocs and some guides about the architecture
- [UI designed screens](https://xd.adobe.com/spec/8f259bcd-550e-4f0c-40bb-bdce2ed36fe5-f914/grid)
- [UI design patterns](https://xd.adobe.com/spec/0952fd91-2063-4074-7930-b73f863096a6-7f63/grid/)
- [Dev chat](https://gitter.im/GoodDollar)
- Ask us anything
Installs and setup the repos GoodDAPP, GoodServer, GoodContracts and GoodGun
- [GunDB](https://gun.eco)/[GunDB chat](https://gitter.im/amark/gun)
Implement an SDK and extend GoodDAPP to enable "Login with GoodDollar".
Every GoodDollar member has a verified "unique and live" self-sovereign identity (profile).
Profile details are stored encrypted with the user private key over gundb using gun encryption and user management library SEA.
You should implement a system that would enable a 3rd party to request the user details in order for him to login to that 3rd party website/service.
Use case: A Work Marketplace enables its users to login with GoodDollar. The Marketplace, which is trying to reach more people, will implement a sign-in with GoodDollar account in order to speed up user onboarding, and let a registered GoodDollar community member to fill in their details in a click of a button to start receiving remittance for work, received by the site provider, into their GoodDollar wallet.
An example flow:
- user clicks on a "Login with GoodDollar" button
- A QR code and/or a link is displayed to the user
- The user scans the QR code with his GoodDAPP
- The user sees the request details, the requester details and what details does the requester require
- The user then chooses which data to share
- GoodDAPP sends the data to the requester
- QR/Link should include the 3rd party GoodDollar account wallet address/[gundb profile](https://github.com/GoodDollar/GoodDAPP/tree/e17074702ef6fdbb49430cd02002fcd1c453bc8b/src/lib/gundb)
- When an account is whitelisted his blockchain address+profile public key are saved to the [identity smart contract](https://github.com/GoodDollar/GoodContracts/blob/alphav2/contracts/Identity.sol)
- GoodDAPP verifies details from link/QR [GoodDAPP QR usage](https://github.com/GoodDollar/GoodDAPP/blob/e17074702ef6fdbb49430cd02002fcd1c453bc8b/src/components/dashboard/SendByQR.web.js)
- login request came from a whitelisted account
- login request website/details were signed by the requester profile public key. If link was used its possible to compare the referer website to the details
- GoodDAPP shows user a [modal](https://github.com/GoodDollar/GoodDAPP/blob/4af2b2d3bc5e4ce2d2ffc4d8b9e1f52367165578/src/lib/undux/utils/dialog.js) asking which details to send
- The requester details are shown
- The request specific details are shown
- wallet address, profile public key, full name, image, username are always sent
- email/mobile are optional and can be enabled/disabled by the user
- GoodDAPP needs to prove to requester he's the owner of the profile public key
- need some kind of handshake between requester server and GoodDAPP. maybe server sends a nonce that GoodDAPP signs with public key
- Communication can be done via regular https end points or via gundb (websockets based)
- requester server redirects user
- in order for requester page showing QR to refresh, there probably should be a unique identifier generated by the server that is also
send via the QR. this identifier could be the unique channel over gundb that they communicate over. in any case communication should be
encrypted with public keys.
- The QR page could be also listening on that gundb channel to know when user was logged in
- optional: requester is added with permissions to read the user profile fields that were enabled using SEA .grant method
- requester can always be updated when details change
- requester doesnt need to keep any data at all since he can always access the details
- user can revoke access
GoodDollar is a community by the people for the people. It offers a model for managing the monetary policy based on its members voting.
The ask: Implement curation markets using [DAOStack's tools](https://github.com/daostack/DAOstack-Hackers-Kit) and [holographic consensus](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c).
The GoodDollar members (DAO) would need to make different decisions and also manage common pool resources.
-Map governance needs for a community-driven to run
-Implement a proposal and voting mechanic which users could participate on.
-The GoodFeed - the feed every user sees when he opens his wallet, this a scarce and valuable resource for passing information to the members of GoodDollar. How would the members decide which news and announcements are worthy to be displayed to everyone?
- GoodDollar should be the token for staking
- A script to deploy the smart contracts from DAOStack you've used with the GoodDollar the staking token.
- Choose a topic for curation, could be one of the two examples above or anything else you think might be important
- UI for one of or all:
- submitting proposals, preferably through the GoodDAPP
- voting on proposals, preferably through the GoodDAPP
- staking on proposals, preferably through the GoodDAPP
- list of winning proposals in GoodDAPP
Build an extension to the GoodDollar usage cloud - This could be a seperate Marketplace site, to bring community members together, in order to faciliate direct / pool base donation schemes between people:
****GoodBusiness** →** A mechanic for Any entrepreneur or business to attract GD users community.
Stake yourself or ask to finance your business growth to your customers (Buy GD)
Accept GD as a mean to unlock fiat finance for GDs (Sell GD)
**GoodFund →** Donate to a pool of resources managed by DAO
**GoodPeeps →** Stake a person with monthly UBI
**GoodCommunity →** A mechanic for GD users community to
Ask crowed to finance their community by onboarding multiple businesses (Buy GD)
Accept GD as a mean to unlock fiat finance for GDs (Sell GD)
Implement the reserve smart contract. The reserve has three main functions
- Accept donations in Ether (or other ERC20 tokens)
- Sell/Buy GoodDollars for Ether using bonding curves
- Manage the foreign currency reserves for the benefit of the GoodDollar members
- Read our economic paper draft, specifically chapter 5.
- Implement a smart contract with the above 3 main functionalities and key things in mind
- How would you try to prevent GoodDollar from being a speculative currency through market making?
- GDX, a token that can give access to the reserve, not everyone can exchange their GoodDollars
- Citizen Dividend - When can you give GDX as a dividend part of the UBI
- Extend GoodDAPP with a UI for interacting with one or more of the reserve contracts functionalities