E-Vote Decentralized Voting App aims to revolutionize the traditional method of voting which possess insignificant challenges and threats to the integrity, accessibility and efficiency of conducting a
The MultiElectionVoting smart contract is designed to manage multiple elections, allowing for the registration of candidates and voters, as well as the recording of votes in a decentralized and secure manner. The contract leverages the ERC2771Context for meta-transactions, ensuring that operations are executed within the context of trusted forwarders.
Election Management: Create and manage multiple elections, each with a specific title, start date, and end date.
Candidate Registration: Add candidates to specific elections before the election start date.
Voter Accreditation: Register voters for specific elections, ensuring only accredited voters can participate.
Voting: Accredited voters can vote for registered candidates within the active election period.
Election Information: Retrieve details about elections, including the list of candidates and their vote counts.
Voting History: allows voters to track their voting activities onchain.
Constructor
constructor(address trustedForwarder) ERC2771Context(trustedForwarder)
: Initializes the contract with the address of a trusted forwarder for meta-transactions.
createElection
function createElection(string memory title, uint256 startDate, uint256 endDate) public
: Creates a new election with the specified title, start date, and end date.
addCandidate
function addCandidate(uint256 electionId, string memory name) public
: Adds a new candidate to an election before it starts.
accreditVoter
function accreditVoter(uint256 electionId, address voterAddress) public
: Accredits a voter for a specific election.
vote
function vote(uint256 electionId, bytes32 candidateId) public
: Allows an accredited voter to cast their vote for a specific candidate during the active election period.
getElectionDetails
function getElectionDetails(uint256 electionId) public view returns (string memory title, uint256 startDate, uint256 endDate, uint256 candidateCount)
: Retrieves details about an election, including the title, start date, end date, and number of candidates.
getCandidates
function getCandidates(uint256 electionId) public view returns (bytes32[] memory, string[] memory, uint256[] memory)
: Retrieves the list of candidates for an election along with their names and vote counts.
hasUserVoted
function hasUserVoted(uint256 electionId, address voterAddress) public view returns (bool)
: Checks if a specific voter has voted in a particular election.
N/A