Factom Protocol Docs
  • Welcome Developers
  • Protocol Overview
  • Getting Started
    • Installing Factom
    • Developer Sandbox
    • Hello-World Examples
      • Golang
      • JavaScript
      • Python
    • API Reference
      • Factomd
      • Factom-walletd
      • Debug
    • CLI Reference
      • Run Factom Federation
      • Common Tasks
      • Factom CLI Commands
    • Data Structures
      • Building blocks
      • User elements
      • Block types
    • SDKs
      • Open Source SDKs
      • Commercial SDKs
    • Testnet
      • Installation
      • Node monitoring
      • Maintenance
      • Interacting with Factom blockchain
      • Faucet
      • Frequently Asked Questions (FAQ)
      • Useful links
  • Infrastructure
    • Control Panel
    • Explorer
      • Overview
      • Block types
      • Usage
    • Open Node
  • Technologies
    • FAT Tokenization
    • Voting Protocols
  • Protocol development
    • Factom Improvement Proposals
    • Hacking Factom
  • Wallets
    • Ledger Nano S Wallet
    • Enterprise Wallet
      • Install
      • Create FCT Address
      • Send and Receive FCT
      • Backup Wallet
      • Restore From a Backup Seed
      • Importing/Exporting your private key(s)
      • Select Your Factomd Node
      • Upgrade to a Secure Wallet
    • FAT Wallet
    • MyFactomWallet
    • Paper Wallet
  • Authority Node Operators
    • ANO Guides & Tutorials
      • Getting started
      • Generating your server identity
      • Setting the coinbase address and node efficiency
      • Joining the docker swarm
      • Securing your node with SSH and iptables
      • Updating and brainswapping your node
    • ANO Tools and Resources
Powered by GitBook
On this page

Was this helpful?

  1. Technologies

Voting Protocols

PreviousFAT TokenizationNextFactom Improvement Proposals

Last updated 6 years ago

Was this helpful?

The Factom Voting Protocols are basic protocols for named (i.e. not anonymous) voting using Factom chains that can be used for conducting publicly verifiable polls in any organization, such as a department inside a company, an online community or, more generally, any group of decentralized entities which want to come to a decision on a given topic. The voting protocol is separated into three main phases: vote initiation, vote commitment and vote reveal.

During initiation, the vote initiator creates a list of eligible voters and stores it on-chain. They also (optionally) produce a description of the vote proposal in a document stored off-chain. Finally, they create a vote proposal entry on-chain, which contains the terms of the poll. The off-line document contains a (longer) description of the poll and together with the on-chain entry the two form a holistic view of the proposed vote.

During the commitment phase, the participants can record a coded version of their vote on-chain and during the reveal phase they record the plaintext of their vote. Such commit-reveal schemes are common for on-chain voting as they solve the problem of information asymmetry for voters: having voters record their vote in plaintext would mean people voting later already have access to the running tally.

Full Specifications
Javascript Implementation