Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arcology-builders/democracy
Tools for peer-to-peer privacy with Ethereum and AZTEC
https://github.com/arcology-builders/democracy
community democracy distributed-systems ethereum evm hacktoberfest javascript peer solidity
Last synced: 8 days ago
JSON representation
Tools for peer-to-peer privacy with Ethereum and AZTEC
- Host: GitHub
- URL: https://github.com/arcology-builders/democracy
- Owner: Arcology-Builders
- License: mit
- Created: 2016-02-22T22:47:22.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T23:32:01.000Z (6 months ago)
- Last Synced: 2024-10-30T06:00:31.876Z (3 months ago)
- Topics: community, democracy, distributed-systems, ethereum, evm, hacktoberfest, javascript, peer, solidity
- Language: CSS
- Homepage: http://zk-transfer.netlify.app
- Size: 24.4 MB
- Stars: 44
- Watchers: 8
- Forks: 22
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
democracy
=========Minimalist tools for coordinating decentralized and private computation, currently on Ethereum.
Our first major integration is with the AZTEC Protocol, to enable trading of zero-knowledge assets.
[![npm version](https://badge.fury.io/js/democracy.js.svg)](https://badge.fury.io/js/democracy.js)
[![CircleCI](https://circleci.com/gh/invisible-college/democracy.svg?style=svg)](https://circleci.com/gh/invisible-college/democracy)
[![Gitter](https://badges.gitter.im/invisible-college/democracy.svg)](https://gitter.im/invisible-college/democracy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)[API Documentation](https://democracy.js.org/jsdocs/index.html)
You can include the top-level npm package `democracy.js` or just include the sub-packages you need.
## Install with npm
```
npm i democracy.js
```Then in your modules
```
const demo = require('democracy.js')
```## Get the Source Code to Experiment and Run Tests
You can perform all the following commands at a Unix terminal or in a [VS Code]() terminal.
Clone our git repo locally
```
git clone https://github.com/invisible-college/democracy
```You'll need Node.js v11 or later and the Yarn package manager. Democracy.js is developed with `v11.14.0`.
We recommend using the [Node Version Manager](https://github.com/nvm-sh/nvm#installation), which you can install for any Unix shell (including Mac OSX). `bash` is used in the example below, you can pipe the command and use the shell profile file for your
favorite shell.```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash
. ~/.nvm/nvm.sh
nvm install v11.14.0
curl -o- -L https://yarnpkg.com/install.sh | bash
```Here the `yarn` script updated the path in your shell config file, probably `~/.bashrc`, with a line like
```
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
```You can source it, or log out and log in again, and then find `yarn` in your path.
```
. ~/.bashrc
yarn global add lerna
```Also add `postcss` if you plan to build any of the React app projects.
```
yarn global add postcss
```We manage a monorepo of multiple packages with `lerna`.
You can build and test them all at once.
```
cd democracy
lerna bootstrap
lerna run init
lerna run test
```# Where Are We Going?
Curious about what a future democracy holds? Us too!
Check out our current [RoadMap](./docs/RoadMap.md)
## REPL
To experiment with and administer Ethereum contracts, it's useful to have a central
console able to attach to any JSONRPC endpoint, whether it's on the mainnet or one
of the public testnets (Ropsten, Kovan, Rinkeby).An example session looks like
```
NODE_ENV=TEST node
> demo = require('demo.js')
> eth = demo.getNetwork() # you'll hit our public node at http://ganache.arcology.nyc
> eth.accounts().then((val) => accounts = vals)
# anything you would normally do (asyncly) with an Eth
```If you cloned the repo above, you can get started with our test contracts.
As with any JS module, when you import, you are shown a vast menu of delicious options to call.
Unlike with most JS modules, when you call a Democracy function with you arguments,
it tells you what it expects.The four steps of Ethereum development operate on an automatic contract (sometimes called a `smart contract` by the exuberant)
* compiling (from a high-level language like Solidity to EVM bytecode)
* linking (connecting multiple contracts together, like using a library, and in our case, attaching a deploy account)
* deploy (send a contract to a blockchain, where it will now live and act trustlessly according to its programming)
* operate (send and receive messages from your contract, especially from a web page or app)The first three tasks we'll show you how to do below by interacting with Democracy in a console.
However, Democracy's real power comes in automating complicated builds and deploys, and then operating on it.We'll add a blow-by-blow console below when our dust has settled from above.
## Other Links
[Democracy Subpackages](Subpackages.md)
## How to Contribute
Democracy is a framework for learning about distributed systems and community protocols,
as well as a gateway for our upcoming distributed country. Welcome,
especially if you are a beginner to Ethereum or programming.Here are ways you can participate
* Download the source code, send us suggestions, improvements, tests, documentations, via pull requests
* Use us in your next Ethereum (or eventually, Secure Scuttlebutt) project!
* The best way to decide what you want in a framework is to try building with it
* Meet and chat with us on [Gitter](https://gitter.im/invisible-college/democracy).We are a project of the [Invisible College](http://invisible.college).