ElectoVote is a decentralized voting platform utilizing Foundry for smart contracts and integrating Morph and Sign Protocol for secure, attestation-based voting, ensuring transparency and a gamified user experience.
Welcome to the future of secure, transparent voting with ElectoVote - a revolutionary platform that harnesses the power of blockchain technology to reinvent the democratic process.
At the heart of ElectoVote lies a custom-built smart contract, deployed on the Ethereum blockchain using the Solidity programming language. This smart contract, known as "VotingWithAttestations," forms the backbone of the entire system, automating the voting lifecycle and ensuring the integrity of each ballot.
The deployment of this smart contract is handled by the "DeployerScript" - a Solidity script that instantiates the VotingWithAttestations contract and logs its address to the console. This script is designed to be executed by the platform's administrators, ensuring that the core voting infrastructure is securely deployed and ready for use.
But the real magic happens on the user-facing side of ElectoVote, where the platform's intuitive web interface takes center stage. The HTML documents provided - Main.html, vote.html, display.html, and after.html - outline the key user journeys that make ElectoVote so powerful and accessible.
Main.html serves as the landing page, where users can connect their digital wallets to create an account and begin their voting experience. The vote.html page then presents the ballot, allowing users to review candidate information and cast their votes with the click of a button.
Once a vote is submitted, the display.html page provides a detailed transaction record, including the voter's address, the selected candidate, and a timestamp - all of which are recorded on the immutable Ethereum blockchain through the VotingWithAttestations smart contract.
Finally, the after.html page offers a community-driven experience, where users can join discussion rooms to engage with fellow voters and stay informed about the latest election updates. By seamlessly integrating the blockchain-powered smart contract with a modern, user-friendly web interface, ElectoVote is poised to revolutionize the way we participate in elections. Experience the future of voting today, and join the ElectoVote revolution.
At the core of this project is the Ethereum blockchain, which provides the secure, decentralized foundation for our voting system. We chose Ethereum because of its robust smart contract capabilities, wide adoption, and the wealth of developer tools and resources available in the Ethereum ecosystem.
To interact with the Ethereum blockchain, we're using the Solidity programming language to develop our custom "VotingWithAttestations" smart contract. This contract encapsulates the entire voting lifecycle, from voter registration and ballot casting to vote tallying and result verification.
One of the unique aspects of our smart contract is the use of attestations - cryptographic proofs that vouch for the authenticity of each vote. By requiring voters to submit an attestation hash along with their ballot, we're able to add an extra layer of security and trust to the voting process.
To deploy the VotingWithAttestations smart contract, we've written a Solidity "DeployerScript" that handles the deployment logic. This script is designed to be executed by the platform's administrators, ensuring that the core voting infrastructure is set up securely and consistently.
On the front-end side, we've developed a series of HTML pages (Main.html, vote.html, display.html, and after.html) that provide the user interface for ElectoVote. These pages are built using a combination of HTML, CSS, and JavaScript, and they leverage the power of the Ethereum blockchain through the use of MetaMask - a popular digital wallet extension for web browsers.
One particularly notable aspect of our front-end implementation is the use of the Morph.js framework, which allows for seamless integration between the web interface and the Ethereum blockchain. Morph.js provides a set of high-level abstractions that simplify the process of connecting user wallets, submitting transactions, and interacting with our custom smart contract.
Another interesting technology we've incorporated is using IPFS (InterPlanetary File System) for decentralized file storage. By storing certain application assets and data on the IPFS network, we're able further to enhance the resilience and distribution of our platform, reducing reliance on centralized servers.
It's worth mentioning that we've also had to deal with some tricky technical hurdles along the way. For example, handling our smart contract's edge cases and potential vulnerabilities required a deep understanding of Solidity and extensive testing. We also had to find creative ways to display complex blockchain data (like transaction hashes and voter addresses) in a user-friendly manner within our HTML pages.
Overall, the ElectoVote project has been a fantastic learning experience, combining the power of blockchain technology, smart contract development, and modern web design. By leveraging partner technologies like Morph.js and IPFS, we've been able to build a robust, secure, and scalable voting platform that we believe will pave the way for the future of democratic participation.