owned this note
owned this note
Published
Linked with GitHub
# Commiteth v2: Share donations to developers and bounty GitHub issues *trustlessly*
Commiteth v2 will implement smart contracts to replace the bots and provide new tools to open source projects.
## What is the problem being solved?
### Incentivize development
Incentivize open-source development by providing tools to fairly distribute donations and bounty contributions.
### Proof project ownership
Who owns an open-source project that have contribution of hundred of developers?
Who should control the licensing or accept changes?
Through *tokenizing* contributions users can proof ownership of project and use it in a voting contract.
To help, we can have a special software licenses stating that the source code owners are expressed in an ethereum smart contract.
## How we solve it?
### Issue bounty distribution
When an issue is closed and have cross-referenced merged commits, points are generated according to project configuration, that might be words added in merged commits, positive reactions in issue, reviews in pull requests, etc.
The issue reward uses this points to split the rewards, that might be tokens or SNT.
### Commit points
The system also distribute fairly donations to project by issuing contribution points according to project configuration. Usually this points are generated by words added in commits.
The points are ERC20 tokens, so the network might use the token for other purposes, such as code wage, where a someone else pays you to develop and buy all points from that project.
### Oraclize & GitHub API
Issues rewards and commit points are discovered reading GitHub API through [Oraclize computation data source](https://docs.oraclize.it/#datasources-computation), that reads all issues or branch commits at once and return to contract points and authors.
Updates can happen once in a month, or daily, anytime, by anyone.
Oraclize charges a small fee for each computation request (~U$0,50).
## Commiteth v2 features
This are features built in in the commiteth project, are effectly it how and what it works.
### Configurable reward modes by project
For a project being accepted by GitHubOracle it must have a file in root of tree called `.gitpoints` with specifying `user-agent:` to `*` or `githuboracle`.
Example:
```.gitpoints
user-agent: *
commits-reward: words
issues-reward: pulls, comments, commits, reactions
pulls-reward: comments, commits
comments-reward: reactions
reactions-reward: heart, +1
```
### GitHub User Ethereum Address
To control GitHubOracle users need to link their GitHub user login to an Ethereum address.
User calls GitHubOracle and passes his username and the *gistid*, GitHubOracle registers users by loading *gistid* file called `register.txt` under user `login`. This file must contain only the Ethereum address who made the register call, starting with `0x`.
### Mint tokens for contributions
Any repository that enabled commits-rewards will have *tokenization* enabled of the contributions and a donation bank.
The available modes are `lines` or `words` that respectively mint tokens by added lines or added words. Custom reward modes are planned.
GitHub Oracle load commits in batches, and accept continue in case of huge commit trees (+4k commits).
### Distribute project donations to contributors
Repositories that enabled *tokenizations* of contributions also have a `DonationBank` that can be withdrawn by the Project Token Holders in the start of every epoch, called locked period, where transfers and minting are blocked.
### Reward bounties by contribution in GitHub Issues.
Issues may be tracked by GitHubOracle, accept payments, depending on the `.gitpoints` configuration, positively reacted posts and merged pull requests/commits generate points that allow issue contributors to withdraw a fair share of balances related to the issue.
## Network Features
The elements of the system can be used in other descentralized applications and deployed in other networks, extending the features of Commiteth.
### Code wage contracts
Different types of contracts can be programmed to automatically buy project tokens, under arbitrary rules, such as a list of users with a maximum amount per day. This can be part of other descentralized application or as a custom contract.
### Code ICO
In replacement of selling coins of a promised project, developers can create the tokens their project need by code contribution and get paid for their development selling their development tokens.
The ICO contract might have milestones that realease a share of a prealoccated token source to project token holders.
### Testnet Faucets
The project may be deployed in PoA chains, such Rinkeby and Kovan, and automatically faucet as code wage contract in registered projects to all developers.
### Other
Ethereum network potential still much unexplored and we still don't know all incredible things we can do. The tokens are ERC20 and ERC23 compatible so your project token might even become exchangeable in a decentralized trade market.
## Status Network Token
As a part of Status Network, we are implementing the usage of SNT on Commiteth. As the system is designed to be free (only network gas & oracle fees), SNT would only be used for value transfer and value commitment.
For example:
- Accept only payments of bounties and donations using SNT and/or a project defined token (by default project points token).
- Bounties might end up in a dispute, where the claimer didn't actually deserve it because is a bad actor, to open and become a judgee in a dispute resolution there is need SNT that would be distributed equally between majority decision takers.
## Commiteth v3
Commiteth v3 will remove third party services, relaying on descentralized storage and descentralized autonomous organizations (DAO).
Each project will have it's own DAO to decide the head of project.
### Goverance & Democracy
By default commiteth v3 will create a new DAO based on Hive-Democracy project, but any DAO could be used. Read more about governance in [Hive-Democracy Wiki](https://github.com/HiveCommons/Hive-Democracy/wiki).
The DAO will control repository by defining it's head and paying the authors of commits.
The payment of authors will usually happen by bounties using the project itself vote token (or SNT) and/or generating them as an ICO period based on commit contribution.
#### Organizations
Organizations might share a common vote token that might be collected or created by project tokens in different weights.
### Mango
Mango is a proof of concept of git repository storage on IPFS. [Mango](https://github.com/axic/mango) would be used or something simmilar.
## Credits
Developed by Ricardo Guilherme Schmidt <3esmit>.
This project was formerly known as GitHubTokens, created to *tokenize* contributions of [TheEtherian news platform](https://etherian.world/).
This project is part by [Status Network](https://status.im/) & [Commiteth](https://github.com/status-im/commiteth).
Special thanks to all that made this possible: [Status.im](https://status.im/), [Giveth](https://giveth.io), [Oraclize](https://www.oraclize.it/), [Ethereum Foundation](https://ethereum.org/), [Parity](https://parity.io/), [TheEtherian](https://etherian.world/), [Ether.camp](https://ether.camp/), [Etherscan](https://etherscan.io/).