Hi again Andrew,
And again, thanks for your response. And for welcoming me to the community.
Yes, it’s true that the original concept was not anonymous. However, I couldn’t think of any way to safely not link the address with the voter. For example, I thought about allowing voters to create their own addresses, but then I wouldn’t be able to verify that the addresses were registered valid voters. So, I resigned myself to centralized access to the identity of voters. Of course, all of my thoughts were how to do it electronically and I didn’t consider an offline solution like a physical QR code. I can imagine a scenario where we mail out the randomized QR codes or run a desk where people come to pick up their QR codes (or both).
The idea of containing voter information in the vote was to be able to extrapolate statistics about the election after the fact. So, for example, 80% of women voted for candidate X. Or, knowing how many votes were issued to group Y, only 10% of group Y participated in the election. As I originally thought that I couldn’t avoid centralized access to voter identity, I thought that as long I didn’t make the details too specific, it would be OK. Now, with your QR code idea, I’ll make this a fully anonymous voting app.
I like your idea of vote types and, as votes for a particular office are fungible, I think I’ll use ERC1155. I’ve scanned through it and it seems to be a good fit, particularly the batch mint function. I’ll still need a batch mint transaction for every voter, but that’s doable.
As for using a public POA sidechain or testnet, I might have to do that. I’m going to crack on with this project and see how fast I can move. I actually have an ulterior motive for wanting to use a permissioned blockchain. There is potential for other projects at this entity. If I have already created and am helping to maintain a permissioned blockchain for them (admittedly with only an election factory application), then hopefully I will be awarded that contract.
I’ll take a look at burner wallets. Sounds helpful.
I’ll take a look at what Austin Griffith is doing.
The current process is paper ballots and an in-person election. There is a sizable voting population that is unable to participate because it’s in-person. Also, they hire a few people to help with elections who wouldn’t be needed with a digital election app.
Although this app could be done without blockchain, the immutability and public accessibility of the blockchain will offer confidence in the results. Voters will be able to publicly view their vote on the blockchain and be satisfied that their vote has been properly recorded and counted as part of final result.
The ulterior motive here is that this is portfolio project (albeit with a real entity) and an avenue to really get better acquainted with Solidity, web3.js, and blockchain infrastructure. And, as I mentioned earlier, to set up for future projects with this entity and others.
Thanks again for the invaluable advice. If you have more advice, I’d love to hear it and keep this conversation going. Cheers.
Your biggest fan,