code: def get_onchain_locksroots(
          chain: 'BlockChainService',
          canonical_identifier: CanonicalIdentifier,
          participant1: Address,
          participant2: Address,
          block_identifier: BlockSpecification,
  ) -> Tuple[Locksroot, Locksroot]:
      
      payment_channel = chain.payment_channel(canonical_identifier=canonical_identifier)
      token_network = payment_channel.token_network
  
      # This will not raise RaidenRecoverableError because we are providing the channel_identifier
      participants_details = token_network.detail_participants(
          participant1=participant1,
          participant2=participant2,
          channel_identifier=canonical_identifier.channel_identifier,
          block_identifier=block_identifier,
      )
  
      our_details = participants_details.our_details
      our_locksroot = our_details.locksroot
  
      partner_details = participants_details.partner_details
      partner_locksroot = partner_details.locksroot
  
      return our_locksroot, partner_locksroot
docs: Return the locksroot for `participant1` and `participant2` at `block_identifier`.