Paper 2020/033

Scalable Open-Vote Network on Ethereum

Mohamed Seifelnasr, Hisham S. Galal, and Amr M. Youssef


McCorry et al. (Financial Cryptography 2017) presented the first implementation of a decentralized self-tallying voting protocol on Ethereum. However, their implementation did not scale beyond 40 voters since all the computations were performed on the smart contract. In this paper, we tackle this problem by delegating the bulk computations to an off-chain untrusted administrator in a verifiable manner. Specifically, the administrator tallies the votes off-chain and publishes a Merkle tree that encodes the tallying computation trace. Then, the administrator submits the Merkle tree root and the tally result to the smart contract. Subsequently, the smart contract transits to an intermediate phase where at least a single honest voter can contend the administrator's claimed result if it was not computed correctly. Then, in the worst case, the smart contract verifies the dispute at the cost of an elliptic curve point addition and scalar multiplication, and two Merkle proofs of membership which are logarithmic in the number of voters. This allows our protocol to achieve higher scalability without sacrificing the public verifiability or voters' privacy. To assess our protocol, we implemented an open-source prototype on Ethereum and carried out multiple experiments for different numbers of voters. The results of our implementation confirm the scalability and efficiency of our proposed solution which does not exceed the current block gas limit for any practical number of voters.

Available format(s)
Publication info
Published elsewhere. 4th Workshop on Trusted Smart Contracts in Association with Financial Cryptography 2020
EthereumVotingSmart Contract
Contact author(s)
h_galal @ encs concordia ca
2020-02-08: revised
2020-01-13: received
See all versions
Short URL
Creative Commons Attribution


      author = {Mohamed Seifelnasr and Hisham S.  Galal and Amr M.  Youssef},
      title = {Scalable Open-Vote Network on Ethereum},
      howpublished = {Cryptology ePrint Archive, Paper 2020/033},
      year = {2020},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.