def mk_proposal(self, round_lockset=None):
        signing_lockset = self.cm.last_committing_lockset.copy()  # quorum which signs prev block
        if self.round > 0:
            round_lockset = self.cm.last_valid_lockset.copy()
            assert round_lockset.has_noquorum
        else:
            round_lockset = None
        assert signing_lockset.has_quorum
        # for R0 (std case) we only need one lockset!
        assert round_lockset is None or self.round > 0
        block = self.cm.chain.head_candidate
        # fix pow
        block.header.__class__ = HDCBlockHeader
        block.should_be_locked = True
        bp = BlockProposal(self.height, self.round, block, signing_lockset, round_lockset)
        self.cm.sign(bp)
        self.cm.set_proposal_lock(block)
        assert self.cm.chainservice.proposal_lock.locked()
        return bp
dataset/ETHPy150Open HydraChain/hydrachain/hydrachain/consensus/manager.py/RoundManager.mk_proposal/original