Thanks for this wonderful post.
I had one doubt though. Similar to gas payment for deploying the contract, don’t we have to pay gas for executing the transactions?
I mean when we call: contractInstance.voteForCandidate(), don’t we’ve to specify gas?
I know call() doesn’t need gas as it returns current state.
Please shed some light regarding transaction or, state variable changes.