An EVM snark friendly census builder based on strategies.
API endpoints
GET /tokens (SDK OK, API OK*)
List of already added tokens.📥 response:
{
tokens: [
{
"id": "0x1234",
"name": "wANT",
Target web2 market size
Vocdoni is positioning itself as the "Stripe for voting," aiming to address the needs of corporations, civil organizations, governments and city councils for secure and convenient online e-voting solutions.
Accurately estimating the target market size for voting in corporations and organizations worldwide is difficult due to a lack of available data and the wide range of factors that can influence the number of potential users. However, we can perform an estimation of size of this market based on the number of corporations and organizations globally, as well as their estimated spending on voting and governance-related processes.
One such estimate puts the total number of corporations and organizations worldwide at approximately 20 million. Assuming an average spending of $1000 per year on voting and governance-related processes, this would equate to a potential market size of $20 billion.
The e-voting market for these sectors is expected to continue to grow over the next decade, driven by a growing demand for secure and efficient voting processes.
On the Government sector, recent studies [1] state that the voting market was valued at approximately USD 267 Million in 2021 and is expected to reach USD 323 Million in 2022 and is expected to reach a value of around USD 770 Million by 2030, at a compound annual growth rate (CAGR) of about 7.5% during the forecast period 2022 to 2030.
When it comes to uploading election results from a blockchain-based voting platform to Ethereum, there are two main approaches: the zkBridge and the zkRollup. Both methods aim to provide verifiable and binding results in a decentralized manner, but they differ in their approach, benefits and constraints.
The zkBridge approach is based on the transfer of a State Hash Root from the voting platform's blockchain to Ethereum. This State Hash Root represents the current state of the voting platform and can be used to verify the data stored within the platform by generating a MerkleProof. The zkBridge allows for greater flexibility in terms of data storage, as the voting platform's blockchain does not need to be Snarks friendly, and it allows for the storage of arbitrary data. Additionally, this approach makes it easier to implement anonymous voting, which is already supported by the voting platform's blockchain. The circuit for the zkBridge is relatively simple and only needs to aggregate the signatures of validators on the voting platform's block headers.
On the other hand, the zkRollup approach is based on the aggregation of votes within a single zkSnark. The zkSnark acts as a proof that the results are correct and can be verified on Ethereum. This approach provides a more efficient way to upload results to Ethereum, as it reduces the amount of data that needs to be transferred. However, this approach requires a zkSnark circuit to be defined for each type of data being uploaded, and the circuit must be able to validate the data in a manner that is compatible with Ethereum. Additionally, implementing anonymous voting using this approach is more complicated and requires a recursive zkSnark circuit.
In conclusion, both the zkBridge and zkRollup approaches have their advantages and disadvantages, and the best approach will depend on the specific requirements of the voting platform. If the platform requires a flexible and simple solution for uploading arbitrary data, including anonymous voting results in the short-mid term, then the zkBridge approach may be a better choice. However, if the platform requires a more efficient and compact solution for uploading results, then the zkRollup approach may be a better choice.
1. Extend Vochain Accounts
a. Add zk friendly key to vochain accounts
Adding a babyjubjub key to Vochain accounts would enable two key features on the Vochain blockchain:
It would allow for the use of the Vochain as a public registry for relating a zk-friendly key to an Ethereum-compatible address. This would enable third-party projects to use zk-SNARKS technology with Ethereum addresses.
It would allow for the creation of internal censuses from Vochain accounts using zk-SNARKS voting.
b. Attach Ethereum addresses to an existing account
Linking Ethereum addresses to existing Vochain accounts allows users to connect multiple Ethereum addresses to a single Vochain account. This feature is useful for creating censuses based on Ethereum data. An Ethereum organization can scan the Vochain accounts for Ethereum addresses that need to be included in the census (i.e they own some NFT or are ERC20 holders) and only those Ethereum holders with a Vocdoni account will be able to participate in the governance. This allows for the usage and management of smaller and filtered censuses, providing greater flexibility and positioning the Vochain as a governance platform (only those users registered are elegible for voting). The resulting census might be constructed out of the zk-friendly keys, thus enabling anonymous voting for the Ethereum ecosystem.
Voĉdoni in Esperanto translates to "to give voice". We aim to achieve change by empowering society from the bottom up, building the necessary primitives and tools to enable every voice to be heard, from a few individuals to millions of citizens. We aspire to be the most accessible and functional toolset on earth, open to every group of people, regardless of their position or resources.
We perceive voting as a collective signaling mechanism "to give voice", that can be fully digitalized, iff provided with cryptographic guarantees about its integrity and its outcome. To this end, we have designed and implemented the Vocdoni Protocol, a universally verifiable set of rules and primitives that allow anyone to create and participate in collective decision making.
1.1 The blockchain
The Vocdoni blockchain is named Vochain. It is a Byzantine fault-tolerant network based on Tendermint that executes the Vocdoni Protocol logic represented as a state machine. Its main purpose is to register votes in a decentralized and verifiable format. Currently, the network can process more than 30K votes per minute while using no more than the resources found on commodity computers.
The Vocdoni blockchain requires a native token (VOC) to execute management transactions (i.e creating elections), but not for casting votes. Therefore, the voters can participate in governance processes in a free and gasless manner.
Vochain is currently based on Proof-of-Authority consensus. However, we are already working towards transitioning to Proof-of-Stake in 2023. Until then, the tokens are free and can be obtained by anyone by using our faucet service.
This is an example document on how to use the Vocdoni APIv2 with the CSP as census validator.
1. Create an organization account
POST /account
{
"address" : "0xabcde",
"nonce" : "71621123"
}
Vision: Create, promote and maintain a set of tools and infrastructure that empowers communities and individuals in the practice of governance and decision making in a self-sovereign, neutral, transparent, open source, censorship-resistant and decentralized manner
In the light of recent events, we raise our voice to provide an opportunity to a project we believe has an inspiring vision and mission and that due to the events of the last year and a half, our team has been unable to fully commit to.
We believe that Vocdoni technology has a huge potential. There is no other technology on the market that allows organizations to perform voting in a transparent, censorship-resistant, and verifiable way, providing comprehensive guarantees and low price. Our team has a significant know-how on the digital voting and continues to work on improving this technology with proposals such as zkVote or zkMultisig. In addition, the current release of Vocdoni.app (codename Azeno) has reached beyond the status of MVP; it has become the keystone of a potentially very powerful product that includes zkSnarks voting.
We believe that the Vocdoni brand has value. This is certainly true in the cryptospace, but particularly so in the real world. We have executed many successful voting processes, appeared recurrently in the media, and received very positive feedback from users. Such successes included the 14F Catalan elections poll and the first official and completely digital referendum in the Spanish state, held for Bellpuig municipality. Since the conception of Vocdoni, we have given voice to dozens of thousands of citizens.
Vocdoni was born in 2018 with an ambitious goal. The first years of development embodied an early-phase excitement and the project celebrated remarkable success in technological innovation and applicability. Nonetheless, the economical situation was not facing such good times. The finalization of our agreement with Aragon on December 2020 was received with enthusiasm by many team members and saved the project from a very critical financial situation. Joining the Aragon ecosystem was an opportunity to keep developing what we saw (and see indeed) as a crucial tool to reimagine and advance the governance system as we know it.
On this proposal we leverage on zkSnarks. Unfortunatelly secp256k1 and keccack256 are not snark friendly cryptographic primitives. To this end we need to create a mechanism to which every user that wants to participate on the governance will create a new pair of snark friendly private and public keys. The private key might be deterministic and derivated from the main Ethereum key.
We need a public registry (smart contract) that stores the relation:
ethereum_address => zkSnark_friendly_pubKey
Anybody can create a new zkSnark_friendly privateKey and register itself to that registry.
Once a new voting process is created for a specific ERC20 token (identified by a unique electionId), somebody must construct an offchain a merkleTree (census) with the list of zkSnark_friendly_pubKey list. If a token holder is not registered, they won't be included in the census. The merkleTree needs to be also snark friendly and store PubKeys as indexes and balances as values (leafs).
The process for constructing the census would be: