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: 12 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 (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T23:32:01.000Z (about 1 year ago)
- Last Synced: 2025-10-08T00:49:37.215Z (18 days 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: 45
- Watchers: 6
- Forks: 20
- 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.
[](https://badge.fury.io/js/democracy.js)
[](https://circleci.com/gh/invisible-college/democracy)
[](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).