pub async fn validate_proposal_safety_and_liveness<TYPES: NodeType, I: NodeImplementation<TYPES>, V: Versions>(
proposal: Proposal<TYPES, QuorumProposal<TYPES>>,
parent_leaf: Leaf<TYPES>,
consensus: OuterConsensus<TYPES>,
decided_upgrade_certificate: Arc<RwLock<Option<UpgradeCertificate<TYPES>>>>,
quorum_membership: Arc<TYPES::Membership>,
event_stream: Sender<Arc<HotShotEvent<TYPES>>>,
sender: TYPES::SignatureKey,
event_sender: Sender<Event<TYPES>>,
id: u64,
upgrade_lock: UpgradeLock<TYPES, V>,
storage: Arc<RwLock<I::Storage>>
) -> Result<()>
Expand description
Validate the state and safety and liveness of a proposal then emit
a QuorumProposalValidated
event.
§Errors
If any validation or state update fails. TODO - This should just take the QuorumProposalRecv task state after we merge the dependency tasks.