def METHOD_NAME(ursula, random_address, cohort, agent, random_transcript):
    participants = dict()
    for checksum_address in cohort:
        participants[checksum_address] = CoordinatorAgent.Ritual.Participant(
            provider=checksum_address,
        )
    ritual = CoordinatorAgent.Ritual(
        initiator=random_address,
        dkg_size=4,
        init_timestamp=123456,
        total_transcripts=4,
        participants=list(participants.values()),
    )
    agent.get_ritual = lambda *args, **kwargs: ritual
    agent.get_participants = lambda *args, **kwargs: participants
    agent.get_participant_from_provider = lambda ritual_id, provider: participants[
        provider
    ]
    # ensure no operation performed for non-application-state
    non_application_states = [
        CoordinatorAgent.Ritual.Status.NON_INITIATED,
        CoordinatorAgent.Ritual.Status.AWAITING_AGGREGATIONS,
        CoordinatorAgent.Ritual.Status.FINALIZED,
        CoordinatorAgent.Ritual.Status.TIMEOUT,
        CoordinatorAgent.Ritual.Status.INVALID,
    ]
    for state in non_application_states:
        agent.get_ritual_status = lambda *args, **kwargs: state
        tx_hash = ursula.perform_round_1(
            ritual_id=0, initiator=random_address, participants=cohort, timestamp=0
        )
        assert tx_hash is None  # no execution performed
    # set correct state
    agent.get_ritual_status = (
        lambda *args, **kwargs: CoordinatorAgent.Ritual.Status.AWAITING_TRANSCRIPTS
    )
    tx_hash = ursula.perform_round_1(
        ritual_id=0, initiator=random_address, participants=cohort, timestamp=0
    )
    assert tx_hash is not None
    # ensure tx hash is stored
    assert ursula.dkg_storage.get_transcript_receipt(ritual_id=0) == tx_hash
    # try again
    tx_hash = ursula.perform_round_1(
        ritual_id=0, initiator=random_address, participants=cohort, timestamp=0
    )
    assert tx_hash is None  # no execution since pending tx already present
    # clear tx hash
    ursula.dkg_storage.store_transcript_receipt(ritual_id=0, txhash_or_receipt=None)
    # participant already posted transcript
    participant = agent.get_participant_from_provider(
        ritual_id=0, provider=ursula.checksum_address
    )
    participant.transcript = bytes(random_transcript)
    # try submitting again
    tx_hash = ursula.perform_round_1(
        ritual_id=0, initiator=random_address, participants=cohort, timestamp=0
    )
    assert tx_hash is None  # no execution performed
    # participant no longer already posted aggregated transcript
    participant.transcript = bytes()
    tx_hash = ursula.perform_round_1(
        ritual_id=0, initiator=random_address, participants=cohort, timestamp=0
    )
    assert tx_hash is not None  # execution occurs