{"id":17674489,"url":"https://github.com/eddieoz/haal","last_synced_at":"2025-04-15T05:56:49.561Z","repository":{"id":44219909,"uuid":"164228058","full_name":"eddieoz/haal","owner":"eddieoz","description":"Hääl - Anonymous Electronic Voting System on Public Blockchains","archived":false,"fork":false,"pushed_at":"2022-12-09T13:45:31.000Z","size":1485,"stargazers_count":113,"open_issues_count":12,"forks_count":17,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-15T05:56:42.362Z","etag":null,"topics":["blockchain","blockchains","dapp","digital-signatures","e-voting","electronic-voting","ethereum","ganache","homomorphic-encryption","proof","protocol","smart-contracts","stealth-wallets","votes","voting-system","whitepaper","zero-knowledge-proofs","zk-snarks"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddieoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-05T15:40:31.000Z","updated_at":"2025-03-08T16:28:04.000Z","dependencies_parsed_at":"2023-01-25T21:31:48.766Z","dependency_job_id":null,"html_url":"https://github.com/eddieoz/haal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fhaal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fhaal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fhaal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fhaal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddieoz","download_url":"https://codeload.github.com/eddieoz/haal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249016320,"owners_count":21198832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","blockchains","dapp","digital-signatures","e-voting","electronic-voting","ethereum","ganache","homomorphic-encryption","proof","protocol","smart-contracts","stealth-wallets","votes","voting-system","whitepaper","zero-knowledge-proofs","zk-snarks"],"created_at":"2024-10-24T07:07:13.892Z","updated_at":"2025-04-15T05:56:49.540Z","avatar_url":"https://github.com/eddieoz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Node.js CI](https://github.com/eddieoz/haal/workflows/Node.js%20CI/badge.svg?branch=master)\n\n# Hääl\n# Anonymous Electronic Voting System on Public Blockchains \n\nHääl means voice in Estonian. Voice means power of people.\n\nThis code is a proof-of-concept of the protocol presented on the whitepaper located at the root folder.\nIt describes a full process for an e-voting system, using public blockchains and without a mixnet or an oracle for tallying the votes.\n\nThe full protocol makes use of:\n- Zero-knowledge proofs (with zk-snarks verified on-chain)\n- Homomorphic encryption (Paillier protocol + zk)\n- Stealth addresses (as proposed by Peter Todd, but ported to ethereum)\n- Encrypted notes (e.g Zcash, AZTEC)\n- Cryptography challenges (based on Sigma protocol)\n- Digital signatures\n- Ethereum (or another blockchain capable of running dApps)\n- other technologies described on the whitepaper\n\nWorking in progress. No access control layers implemented in this PoC to avoid overhead, implement it as your needs.\nAll contributions are welcome.\n\n# Installation\n## Pre-requisites\n- ganache-cli ^6.3.0 or Ganache ^1.2.2\n- Node 8\n- Solidity ^0.4.5\n- Yarn ^1.13.0\n\n## Setup\n```\n# yarn install \u0026\u0026 yarn truffle build \u0026\u0026 yarn ganache-cli\n```\n\n## Run\n```\n(on a new terminal)\n# yarn truffle test\n```\n\n## Manual installation (for debugging purposes)\n\nInstall and set the correct version of NodeJS.\n```\n$ apt-get install node npm\n$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash \n$ nvm install 8\n$ nvm use 8\n```\nDownload third-party dependencies.\n```\n$ curl -o /usr/bin/solc -fL https://github.com/ethereum/solidity/releases/download/v0.4.25/solc-static-linux\n$ chmod u+x /usr/bin/solc\n\nGet https://github.com/trufflesuite/ganache/releases/download/v1.2.2/ganache-1.2.2-x86_64.AppImage\n$ chmod +x ganache-1.2.2-x86_64.AppImage\n```\nRun\n```\n$ npm install -Wno-cast-function-type 2\u003e debug.log\n$ node ./node_modules/truffle/build/cli.bundled.js build\n$ ./ganache-1.2.2-x86_64.AppImage (on a new terminal)\n$ node ./node_modules/truffle/build/cli.bundled.js test\n```\n\n## Compiler warnings\n\nIs expected to receive the warning below during contracts compilation:\n```\nhaal/contracts/HAAL/haal.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n```\n\nThat message appears because we're using an experimental method to fill arrays (`bytes[]`):\n```\nfunction addVote(\n        bytes[] _president, \n        bytes[] _senator, \n        bytes[] _stateGovernor,\n        ^-----^\n[...]\n\nfunction getVotes(uint _index) view public returns(bytes[], bytes[], bytes[])\n                                                   ^-----------------------^\n```\n\nApache License [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddieoz%2Fhaal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddieoz%2Fhaal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddieoz%2Fhaal/lists"}