pub fn protocol<Net: NetInterface + 'static, BI: BlockchainInterface + 'static>(
    t: u32,
    session_id: SessionId,
    batch_key: BatchKey,
    net: Net,
    bc_iface: BI,
    public_key: Vec<PolyCommitment>,
    state: PartyState,
    unsigned_proposal_batch: StoredUnsignedProposalBatch<BI::BatchId, BI::MaxProposalLength, BI::MaxProposalsInBatch, BI::Clock>
) -> Pin<Box<dyn SendFuture<'static, ()>>>