Kredits

From Kosmos Wiki
Revision as of 22:07, 26 November 2019 by Raucao (talk | contribs) (→‎Data storage)
Jump to navigation Jump to search

Kredits are a system for tracking contributions to Kosmos projects, enabling the fair and transparent use of project funds, as well as improving project management and governance.

For now, kredits are mostly a fun experiment and gaming element, but the long-term idea is that they can be rewarded with dividends, if or when the Kosmos project/org is in a financial position that allows it to reward everybody contributing to its success.

Current status

After a few years of experimentation, we finally started issuing kredits in production earlier this year (2019). We also have a functioning, usable Web UI up and running, which interacts directly with Ethereum and IPFS nodes, and which you can also use to create your contributor account: https://kredits.kosmos.org

Concept & Architecture

Smart contracts

Kredits are cryptographic tokens, (currently) stored on the Ethereum blockchain, issued and managed via programs called smart contracts.

We use two types of tokens:

  1. A non-fungible ERC721 token, which represents the actual contributions. These are unique, and they cannot be sent or traded with other people. They are earned by contributing to Kosmos projects, and either one of our bots or one of our contributors propose to create them for a contribution.
  2. A fungible ERC20 token, which represents the value of contributions. These are not unique, meaning every token represents the same value. They can be sent to other addresses using any ERC20-compatible wallet.

Every contribution token/record contains the amount of ERC20 kredits that can be claimed by the contributor. "Claiming" those tokens basically means paying them out from the Kredits smart contract to your own wallet. This is optional, and the contributor can choose to do this whenever they want.

Data storage

All non-essential data (basically everything except for pure IDs and numbers/amounts) is stored on IPFS. In order to ensure that no data is lost, and all data is available to Kredits users at all times, we run a few Kosmos IPFS nodes, as well as a public IPFS gateway. See Kredits:IPFS for more information.

Software

Kredits Contracts

kredits-contracts contains the smart contracts, written in Solidity, as well as the generated contract ABI for use with the Web3 JavaScript library (e.g. in kredits-web). It can be linked from other programs via npm.

Kosmos Schemas

kosmos-schemas contains the JSON Schema definitions and examples for all data stored in IPFS. They can be used in the kredits-contracts JS wrapper as well as in client apps.

Kredits Web

kredits-web is the Web UI for the public Kredits dashboard and management UI. The app is hosted on 5apps Deploy at kredits.kosmos.org.

Hubot Kredits

hubot-kredits is a Hubot chatbot extension, which can automatically create (unconfirmed) contribution tokens, e.g. based on GitHub contributions, Mediawiki edits, etc.. We also use it to protoype back-end behavior that is potentially needed in `kredits-web`.

Kredits GitHub

kredits-github is a very simple GitHub app, which adds a check to pull requests in org repos, ensuring that they are assigned a kredits label, which is used by hubot-kredits to determine the size of the contribution.

Kredits IPFS Pinner

kredits-ipfs-pinner pins IPFS data of a Kredits organization on an IPFS node. Running this program turns any IPFS node into a live mirror for all Kredits-related documents.

Democratic governance via Kredits

Kredits have the potential to be used for distributed governance of the Kosmos project and organization. The basic idea is that people can vote on decisions with a vote that carries a weight according to their contributions. In short: the people who do should be the ones who decide. With a limited set of basic rules, this makes for an interesting new and decentralized approach to open-source governance.

Roadmap

See https://wiki.kosmos.org/Meeting_Notes:_Feb_25,_2019#Kredits_Roadmap_2019

Ideas

  • Leaderboard for contributions/kredits, where people can choose to publish their name or not (based on actual blockchain data) WIP, almost done: https://kredits.kosmos.org/
  • Some way for new contributors to claim kredits sent to them via email link or similar (Update: current idea is to issue them without the need for an address, then be able to confirm address change via GitHub OAuth and admin action/proposal)
  • IRC bot for small transactions, so people can send each other kredits on Kosmos project channels Turned out to not make sense.
  • Custom wallet, removing all unncesseary features and integrating custom features we'd like to have (like e.g. easy multisig transactions, linked/initiated from a Kosmos chatroom) WIP, almost done: https://github.com/67P/kredits-web/ (tokens can be sent via normal ETH wallets)
  • Contribution Dashboard for regular Kredit distribution as well as general project stats
  • Expense management, similar to https://opencollective.com/learn-more
  • Interoperability with other coops/projects/software

Similar projects/ideas

  • cDPOs (commons-oriented decentralised programmed organisations) as frameworks to bootstrap, develop & sustain commons projects
  • Colony -- "The Colony Beta is for teams who want to create their own “Collaboration Network”—a place to work with, incentivize, and track the contributions of a network of collaborators. It combines task management with “payments” and tracking."
  • Aragon
  • ether-camp/virtual asselerator -- "The Virtual Accelerator is a platform that allows for the promotion, testing and funding of ideas. " HackerGold is their token.
  • boardroom.to -- A blockchain based governance platform.
  • Lunyr -- "Lunyr is an Ethereum-based decentralized crowdsourced encyclopedia which rewards users with app tokens for peer-reviewing and contributing information."
  • Singulardtv -- "A Blockchain Entertainment Studio, Smart Contract Rights Management Platform and Video On-Demand Portal"

see also:

Similar code/inspirations/links

Notes

  • Sideshift is similar to Shapeshift, but without KYC and such. Could be used to donate to the Kredits contract using Bitcoin via LN, as well as via normal chain txs with a variety of currencies.