I haven't made a voting application before, but let's try and do it together!
I think the architecture should be something like this:
- Multiple admin nodes with all permissions except issue permission
- Multiple voting nodes that have activate, connect, send and receive permissions
You'll need an API or an application of sort to do the following:
- All users should be added by admin nodes, or should be capable to ask for being added by the voting nodes.
- An admin node should issue an asset called "vote" with the maximum value of the number of possible voters (or you could issue more latter), and a number of addresses equal to the options you can vote for with receive permissions.
- An voting node would generate the addresses externally, import them, give them send and receive permissions and send 1 vote to each address
- After sending the votes to the user addresses, the receive permission should be revoked from the users
- A user then can use the voting nodes to send the 1 vote he has to one of the voting options (your app should be whitelisted and call the RPC of the voted node with that created the asset and create, sign and send a raw transaction)
- Afterwards, you can close the votes by revoking the users' send permission and the voting options' receive permission and then count the vote by getting a balance of each voting options' balance
I hope this scenario helped!