All Projects → vocdoni → vocdoni-node

vocdoni / vocdoni-node

Licence: AGPL-3.0 license
A set of libraries and tools for the Vocdoni decentralized backend infrastructure, the main ground of our universally verifiable, privacy-centric and scalable digital voting protocol

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to vocdoni-node

Launch Kit
An awesome tool-kit for launching Cosmos-SDK and Tendermint-based projects
Stars: ✭ 82 (+41.38%)
Mutual labels:  ipfs, tendermint
pollmommy
⭐️ Hack your 🙈 vote out of 📈 Polldaddy surveys - used by 💰 BBC, Microsoft, Forbes, Pfizer, IBM
Stars: ✭ 31 (-46.55%)
Mutual labels:  voting, vote-application
research
Shared learning of decentralized development.
Stars: ✭ 26 (-55.17%)
Mutual labels:  ipfs, zk-snarks
Go Cyber
Your 🔵 Superintelligence
Stars: ✭ 270 (+365.52%)
Mutual labels:  ipfs, tendermint
haal
Hääl - Anonymous Electronic Voting System on Public Blockchains
Stars: ✭ 96 (+65.52%)
Mutual labels:  voting-system, zk-snarks
likecoin-wordpress
The WordPress plugin to integrate LikeCoin - Decentralized Publishing Infrastructure.
Stars: ✭ 19 (-67.24%)
Mutual labels:  ipfs
ipfs-md-wiki
a decentered wiki system by ipfs and markdown
Stars: ✭ 99 (+70.69%)
Mutual labels:  ipfs
votacidade-app
Calculadora de afinidade para o Vota Cidade 2020
Stars: ✭ 12 (-79.31%)
Mutual labels:  voting
eth-mimblewimble
Ethereum 9 3/4's zk-SNARKs circuits and the python library for Mimblewimble on Ethereum
Stars: ✭ 77 (+32.76%)
Mutual labels:  zk-snarks
filecoin-box
Filecoin flavored Ganache Truffle box
Stars: ✭ 23 (-60.34%)
Mutual labels:  ipfs
minibrass
Modeling preferences and soft constraints -- qualitatively and quantitatively on top of MiniZinc
Stars: ✭ 13 (-77.59%)
Mutual labels:  voting
Starlog
Starlog: Metadata Blockchain based on Substrate
Stars: ✭ 32 (-44.83%)
Mutual labels:  ipfs
ipfs-companion
Browser extension that simplifies access to IPFS resources on the web
Stars: ✭ 1,745 (+2908.62%)
Mutual labels:  ipfs
dtinyurl
Dcentralized url shortening service base on ipfs
Stars: ✭ 19 (-67.24%)
Mutual labels:  ipfs
drive
Fission Drive 🗄
Stars: ✭ 21 (-63.79%)
Mutual labels:  ipfs
go-multiverse
Decentralized Version Control System
Stars: ✭ 76 (+31.03%)
Mutual labels:  ipfs
ultimate-poll-bot
💡 The ultimate vote and poll bot for creating, sharing and evaluating polls inside of Telegram
Stars: ✭ 109 (+87.93%)
Mutual labels:  voting
bellman-substrate
A library for supporting zk-SNARKs to Substrate
Stars: ✭ 26 (-55.17%)
Mutual labels:  zk-snarks
js-ipfs-mfs
[ARCHIVED] now part of the https://github.com/ipfs/js-ipfs repo
Stars: ✭ 27 (-53.45%)
Mutual labels:  ipfs
sonic
Zero-Knowledge SNARKs from Linear-Size Universal and Updatable Structured Reference Strings
Stars: ✭ 41 (-29.31%)
Mutual labels:  zksnarks

go-dvote

GoDoc Go Report Card

Join Discord Twitter Follow

This repository contains a set of libraries and tools for the Vocdoni decentralized backend infrastructure, as described in the documentation.

A good summary of the whole Vocdoni architecture can be found in the blog post technical overview v1.

Vocdoni

Vocdoni is a universally verifiable, censorship-resistant, and anonymous self sovereign governance system, designed with the scalability and ease-of-use to support either small/private and big/national elections.

Our main aim is a trustless voting system, where anyone can speak their voice and where everything can be audited. We are engineering building blocks for a permissionless, private and censorship resistant democracy.

We intend the algorithms, systems, and software that we build to be a useful contribution toward making violence in these cryptonetworks impossible by protecting users privacy with cryptography. In particular, our aim is to provide the necessary tooling for the political will of network participants to translate outwardly into real political capital, without sacrificing privacy.

vocdoni go-dvote team

dvotenode

The dvotenode is the main tool of go-dvote, it contains all the required features for making the decentralized Vocdoni backend possible.

Currently dvotenode can operate in three modes:

  • gateway mode provides an entry point to the P2P networks for the clients (APP or Web), it uses most of the components from go-dvote. Detailed information can be found here

  • miner mode provides a block validation node (full node) of the Vochain (Tendermint based blockchain for voting). Detailed information can be found here

  • oracle mode provides a bridge between Ethereum and the Vochain

One of the design primitives of go-dvote is to run everything as a single daemon in order to have complete control over the components and avoid local RPC or IPC connections. So unlike other projects, go-dvote uses go-ethereum, go-ipfs and tendermint as GoLang libraries.

In addition, go-dvote is currently pure GoLang code, so generating a static and reproducible binary that works on most of the Linux hosts (and probably MacOS) without any dependence is possible.

For running dvotenode in gateway mode, 8GB of ram is recommended (4GB works but it is risky).

Status

  • Unified WebSockets JSON API for client connection
  • Letsencrypt automatic TLS support
  • Ethereum blockchain(s) support
  • Ethereum event subscription to the Vocdoni Process smart contract
  • ENS (ethereum name service) support
  • Libp2p pubsub like protocol for short encrypted messages
  • Nice logs
  • Docker support
  • Prometheus support (for metrics)
  • secp256k1 and ed25519 signature and encryption
  • Census Merkle Tree implementation
  • Native IPFS support
  • IPFS cluster support (custom implementation named ipfsSync)
  • Tendermint voting blockchain implementation
  • Vote Scrutinizer
  • BabyJubJub signature and hashing (ZK-snark friendly)
  • ZK-snark integration
  • BootNode automatic discovery

Compile and run

Compile from source in a golang environment (Go>1.17 required):

git clone https://go.vocdoni.io/dvote.git
cd go-dvote
go build ./cmd/dvotenode
./dvotenode --help

Docker

You can run go-dvote as a standalone container with a docker script (configuration options can be changed in file dockerfiles/dvotenode/env):

dockerfiles/gateway/dockerlaunch.sh

All data will be stored in the shared volume run.

Docker compose

Standalone components can be built and run as the examples:

  • Gateway (default)
cd dockerfiles/dvotenode
docker-compose build
docker-compose up -d
  • Miner
cd dockerfiles/dvotenode
docker-compose build
docker-compose -f docker-compose.miner.yml up -d

The test suite is an all-in-one compose file to bootstrap a minimal testing testing environment. To do a voting process test, follow the examples mentioned in the included README:

cd dockerfiles/testsuite
cat README.md

Contributor Covenant License: AGPL v3

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].