pub async fn publish_proposal_if_able<TYPES: NodeType, V: Versions>(
    view: TYPES::Time,
    sender: Sender<Arc<HotShotEvent<TYPES>>>,
    receiver: Receiver<Arc<HotShotEvent<TYPES>>>,
    quorum_membership: Arc<TYPES::Membership>,
    public_key: TYPES::SignatureKey,
    private_key: <TYPES::SignatureKey as SignatureKey>::PrivateKey,
    consensus: OuterConsensus<TYPES>,
    delay: u64,
    formed_upgrade_certificate: Option<UpgradeCertificate<TYPES>>,
    upgrade_lock: UpgradeLock<TYPES, V>,
    commitment_and_metadata: Option<CommitmentAndMetadata<TYPES>>,
    proposal_cert: Option<ViewChangeEvidence<TYPES>>,
    instance_state: Arc<TYPES::InstanceState>,
    id: u64
) -> Result<JoinHandle<()>>
Expand description

Publishes a proposal if there exists a value which we can propose from. Specifically, we must have either commitment_and_metadata, or a decided_upgrade_certificate.