function revealVote(uint taskID, uint8 v, bytes32 r, bytes32 s, uint32 vote, bytes32 salt) {
        
        require(tasks[taskID].stage == 4 && now > tasks[taskID].disputeStartedTime + VOTING_PERIOD+100 && now < tasks[taskID].disputeStartedTime + 2*VOTING_PERIOD && tasks[taskID].voteCommits[msg.sender] != bytes32(0));
        
        if(ecrecover(keccak256(taskID, tasks[taskID].blockHash), v, r, s) == msg.sender && (10*MAX_UINT32)/(uint(s) % (MAX_UINT32+1)) > totalStake/stakes[msg.sender] && lastStakings[msg.sender] < tasks[taskID].disputeStartedTime && keccak256(salt, vote) == tasks[taskID].voteCommits[msg.sender]) {
            if(vote==1) {
                tasks[taskID].votesClient++;
            } else if(vote==2) {
                tasks[taskID].votesFl++;
            } else {
                throw;
            }
            tasks[taskID].votes[tasks[taskID].votesTotal] = vote;
            tasks[taskID].voters[tasks[taskID].votesTotal] = msg.sender;
            tasks[taskID].votesTotal++;
            
            tasks[taskID].voteCommits[msg.sender] = bytes32(0);
        }
    }