pub async fn update_state_and_vote_if_able<TYPES: NodeType, I: NodeImplementation<TYPES>, V: Versions>(
    cur_view: TYPES::Time,
    proposal: QuorumProposal<TYPES>,
    public_key: TYPES::SignatureKey,
    private_key: <TYPES::SignatureKey as SignatureKey>::PrivateKey,
    consensus: OuterConsensus<TYPES>,
    storage: Arc<RwLock<I::Storage>>,
    quorum_membership: Arc<TYPES::Membership>,
    instance_state: Arc<TYPES::InstanceState>,
    vote_info: VoteInfo<TYPES, V>,
    id: u64,
    upgrade_lock: &UpgradeLock<TYPES, V>
) -> bool
Expand description

Check if we are able to vote, like whether the proposal is valid, whether we have DAC and VID share, and if so, vote.