Focused on developers and integrators

Voting
as a Service

Leveraging our robust API and SDK,
you can seamlessly integrate our versatile voting protocol into your project, optimizing performance and tailoring its features to meet on-chain and off-chain needs.

Go to Developer Portal

for all parts of the voting process

We have created a voting protocol that adapts to any governance need

Control of participation
01
Easily create censuses using public keys
02
Make use of a Credential Service Provider to connect with Third-party authentication solutions (soon)
Fast and flexible voting
01
Process up to 40k votes per minute
02
Configure the voting process to adapt it to your needs
03
Get results in seconds
Guarantee the processes
01
The protocol is universally verifiable, bringing the highest integrity standards to your election
02
Use Explorer.vote for a quick view of the protocol activity
Flexible privacy
01
Enforce voter anonymity through zkSNARKs and blind-signatures
02
Set encrypted results on demand until the end of the process
Transparent
01
Our protocol is 100% transparent, auditable and verifiable
02
It's based on decentralized technologies
Open Source
01
Rely on an open source platform
02
Capable of receiving updates and upgrades and sustainable
03
Open to community participation

We consider this service to be focused on...

Services suppliers

Organizations that integrate different software products to offer concrete solutions to third parties

Large organizations

Organizations that require digital governance and are large enough to have in-house or outsourced technical services

Web3 projects

Web3 platforms that offer governance solutions for entities like DAOs

Public institutions

Public administrations and governments that want to offer secure digital voting to increase citizen's participation.

Technical integration tools

From our engineering department, we have created fast and complete APIs to integrate Vocdoni Protocol in your projects:

API REST

  • Main entry point to the underlying Vocdoni protocol.
  • Allows performing all the features that enable the voting protocol such as creating an account, entity, voting process, census & vote.
  • Abstracts the complexity of the Blockchain.
  • You need to interact with only 5 entities: Chain, Accounts, Elections, Censuses & Votes.
Read the Docs

API + SDK

  • Developer & integrator centric.
  • Special focus on simplicity and easy-to-use: Improved developer experience.
  • Allows to create, manage and participate in any voting processes with a few lines of code.
  • Easily to integrate in any modern UI.
  • Made with Typescript.
Read the Docs

Getting started on a simple way

(async () => {
 const account = await client.createAccount()
 // account contains the account info
})();

Create an account

First, you have to create an on-chain account. Accounts have the right to create and manage voting processes if they have enough tokens to interact with Vocdoni Protocol.

Read the Docs

(async () => {
const info = await client.createAccount({
   faucetPackage: "<b64string>"
 })
})();

Vocdoni tokens

Accounts require Vocdoni tokens to be able to register against our blockchain and create and manage votes.

Tokens are distributed for free during the beta phase. To get some, just message us on Discord or in the chatbox placed in the bottom-right part of the website!

Read the Docs

const census = new PlainCensus();
census.add('0xd8da6bf26964af9d7eed9e03e53415d37aa96045');
census.add('0xabc127c4521271f456Ae495467e952b4d49C934f');
census.add('0x1d57F45967a6578C697f9A9f71CfF1d552A6fD9F');

Census

To create a voting process, an Account first needs to have a census of eligible voters.

The Account then can use a code to create a census based on merkle trees.

The source of the census can be on-chain:
- Using Ethereum addresses

And off-chain
- Using a Credential Census Provider

Read the Docs

const election = new Election({
 title: 'Election title',
 description: 'Election description',
 header:'https://example.io/image.png',
 endDate: new Date('2023-01-23 23:23:23'),
 census,
})

Elections

Elections are voting processes created by an Account.

The SDK allows configuring processes to be adapted to any specific need with a wide set of variables.

The following election options can be configured:
- Census origin: description of the eligible voters.
- Lifecycle: initial state, start, and end blocks.
- Election mode: how should the process behave.
- Vote mode: the kind of ballots expected from voters.
- Tally mode: how should the results be computed, as defined by the Vocdoni Ballot protocol.

Read the Docs

(async () => {
 client.setElectionId(id)
const vote = new Vote([0, 2]);
 const voteId = await client.submitVote(vote)
})();

Vote

To vote in an Election you need two things: the process id to vote to, and the option (or options) being voted.

Read the Docs