/ README.md
README.md
1 <p align="center"><img src="https://raw.githubusercontent.com/status-im/crvc/master/docs/crvc.png"></p> 2 <h1 align="center">CRVC</h1> 3 <h2 align="center"> Cryptoeconomic Release & Version Control</h1> 4 5 CRVC is an extension to [Git](https://git-scm.com) that allows for the coordination of source code and binary releases among unknown and untrusted participants. 6 7 * [Introduction](#introduction) 8 * [Purpose](#purpose) 9 * [Features](#features) 10 * [Who is it for?](#who-is-it-for) 11 * [What CRVC isn't](#what-crvc-isnt) 12 * [Where does this tool come from?](#where-does-this-tool-come-from) 13 * [Get started](#get-started) 14 * [Requirements](#requirements) 15 * [Contribute](#contribute) 16 * [As a community](#as-a-community) 17 * [Contribute as a developer](#contribute-as-a-developer) 18 * [Principles, vision, goals](#principles-vision-goals) 19 * [Principles](#principles) 20 * [Vision](#vision) 21 * [Goals](#goals) 22 * [Todo](#todo) 23 * [Public Domain](#public-domain) 24 25 ## Introduction 26 27 CRVC aims to be secure source-control oriented software distribution method. This means you can download binaries and source code that are cryptoeconomically verified by multiple builders. 28 29 CRVC encourages the use of a deterministic build process to allow multiple builders to create identical binaries. This allows multiple parties to sign the resulting binaries, creating high assurances that the binaries and tool chain were not tampered with and that the same source was used. It attempts to remove the build and distribution process as a single point of failure. 30 31 CRVC is a custom `git-remote`, a helper binary and a collection of cryptoeconomic games to allow anonymous actors to trustlessly coordinate git repositories and software releases. 32 33 The current idea is to treat git commit history and release binary hashes as [Schelling Points](https://en.wikipedia.org/wiki/Focal_point_(game_theory)). 34 Git Objects are deployed on decentralized file storage (Swarm/IPFS) and are extended to provide hash of the content that is more robust than SHA1. 35 36 The work is a generalization of the discussion for providing a voluntary update mechanism to Status and encourage deterministic builds , which [can be found here](https://discuss.status.im/t/self-updating-status/964). 37 Inspired by [mango](https://github.com/axic/mango), [pando](https://github.com/pandonetwork/pando) and [Gitian](https://gitian.org). 38 39 ### Purpose 40 41 To allow coordination of source code and binary releases among a group of actors you don't know. 42 43 ### Features 44 45 - Smart Contract Managed Git Repository 46 - Source and Binaries are Stored on Swarm/IPFS 47 - A set of Cryptoeconomic Games 48 49 ### Who is it for? 50 51 CRVC is for developers that cannot rely on access control lists (and therefore trust and unique identities) to manage their software repositories and binary releases. 52 53 ### What CRVC isn't 54 55 * CRVC is not a decentralized Github 56 * CRVC is not a unique Version Control System 57 58 ### Where does this tool come from? 59 60 While it's my belief that the introduction of Australia's Telecommunications and Other Legislation Amendment (Assistance and Access) Act 2018 and the recent FATF Recommendations are well-intentioned, it is clear that these rules are alarming, harmful and prematurely stifle innovation, preventing us from discovering newer, more efficient ways of protecting users and upholding [human rights](http://www.un.org/en/universal-declaration-human-rights/). 61 62 As a result, these actions point to a future where I or Status Research & Development GmbH may be prevented from producing & distributing binaries that do not comply with distribution channel terms of service and jurisdictional policies. CRVC is a foot in the door, it may allow for a future where future generations can create software that better upholds [human rights](http://www.un.org/en/universal-declaration-human-rights/). 63 64 ## Get started 65 66 `nimble build` 67 68 ### Requirements 69 70 - Nim 0.19 or above 71 - Git 72 - An Ethereum Node 73 - IPFS/Swarm Node 74 75 ## Contribute 76 77 Do you want to help? That's awesome. Here are simple things you can do. 78 79 ### As a community 80 81 * Unlike Fight Club, the best way to help is **to actually talk about the project** as much as you can (blog post, articles, Twitter, Facebook). 82 * You can answer questions in [the issue tracker](https://github.com/status-im/crvc/issues) to help other community members. 83 84 ## Contribute as a developer 85 86 * Read our [Contribution Guide](/CONTRIBUTING.md). 87 * Install the developer version locally so you can start contributing [instructions](/docs/contribute/index.md). 88 * Look for [issues labelled bugs](https://github.com/status-im/crvc/issues?q=is%3Aopen+is%3Aissue+label%3Abug) if you are looking to have an immediate impact on the project. 89 * Look for [issues labelled Help wanted](https://github.com/status-im/crvc/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) These are issues that you can solve relatively easily. 90 * Look for [issues labelled Good first issue](https://github.com/status-im/crvc/labels/good%20first%20issue) These issues are for people who want to contribute, but try to work on a small feature first. 91 * If you are an advanced developer, you can try to tackle [issues labelled feature requests](https://github.com/status-im/crvc/issues?q=is%3Aopen+is%3Aissue+label%3A%22feature+request%22). Beware though - they are harder to do and will require a lot of back and forth with the repository administrator in order to make sure we are going to the right direction with the product. 92 93 We welcome contributions of all kinds from anyone. 94 95 ## Principles, vision, goals 96 97 Software are cultural artefacts, and as such I want to embed in them the ability to uphold [human rights](http://www.un.org/en/universal-declaration-human-rights/). 98 99 ### Principles 100 101 You can read [Status' Principles here](https://our.status.im/our-principles/). 102 103 * Liberty 104 * Censorship resistance 105 * Security 106 * Privacy 107 * Transparency 108 * Openness 109 * Decentralization 110 * Inclusivity 111 * Continuance 112 * Resourcefulness 113 114 ### Vision 115 116 CRVC's vision is to **help people write the software of the future, even when the walls have closed in**. 117 118 ### Goals 119 120 - Friends don't let friends run untrusted binaries. 121 - Providing some assurance that: 122 + the binaries and build environment were not tampered with 123 + the same source code was used. 124 - Checking for updates should be passive. 125 - A user should be able to independently build and check artifacts against the respective hash of a binary. 126 - Updating should be voluntary, trust is in the eye of the beholder. 127 128 ### Todo 129 - Contract Games 130 - Create a Git-Remote 131 - Pretty much everything 132 133 ## Public Domain 134 135 This software is released into the public domain to the full extent the law allows. [View CC0](/LICENSE.md). 136 (oh the irony).