code: def _do_local(transactions, expected_signer, arguments):
      
      indices = arguments.split(",")
      txns_len = len(transactions)
      for index in indices:
          try:
              index = int(index.strip())
          except ValueError:
              LOGGER.warning("Ignore, local requries one or more comma "
                             "seperated integers that represent indices, not"
                             " %s", arguments)
              return True
  
          if abs(index) >= txns_len:
              LOGGER.debug("Ignore, Block does not have enough "
                           "transactions to validate this rule local:%s",
                           index)
              continue
          txn = transactions[index]
          header = TransactionHeader()
          header.ParseFromString(txn.header)
  
          if header.signer_public_key != expected_signer:
              LOGGER.debug("Transaction at postion %s was not signed by the"
                           " same key as the block.", index)
              return False
      return True
docs: A transaction must be signed by the same key as the block. This
      rule takes a list of transaction indices in the block and enforces the
      rule on each. This rule is useful in combination with the other rules
      to ensure a client is not submitting transactions that should only be
      injected by the winning validator.