<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_staking_leaderboard(self, round_num=0, tournament=1):
 """Retrieves the leaderboard of the staking competition for the given round. Args: round_num (int, optional):
 The round you are interested in, defaults to current round. tournament (int, optional):
 ID of the tournament, defaults to 1 Returns: list: list of stakers (`dict`) Each stake in the list as the following structure: * username (`str`) * consistency (`float`) * liveLogloss (`float` or `None`) * liveAuroc (`float` or `None`) * validationLogloss (`float`) * validationAuroc (`float` or `None`) * stake (`dict`) * confidence (`decimal.Decimal`) * insertedAt (`datetime`) * soc (`decimal.Decimal`) * txHash (`str`) * value (`decimal.Decimal`) Example: [{'consistency': 83.33333333333334, 'liveLogloss': 0.6941153941722517, 'liveAuroc': 0.5241153941722517, 'stake': {'confidence': Decimal('0.055'), 'insertedAt': datetime.datetime(2018, 3, 18, 0, 20, 31, 724728, tzinfo=tzutc()), 'soc': Decimal('18.18'), 'txHash': '0xf1460c7fe08e7920d3e61492501337db5c89bff22af9fd88b9ff1ad604939f61', 'value': Decimal('1.00')}, 'username': 'ci_wp', 'validationLogloss': 0.692269984475575}, 'validationAuroc': 0.512269984475575}, .. ] """

        msg = "getting stakes for tournament {} round {}"
        self.logger.info(msg.format(tournament, round_num))
        query = '''
            query($number: Int!
                  $tournament: Int!) {
              rounds(number: $number
                     tournament: $tournament) {
                leaderboard {
                  consistency
                  liveLogloss
                  liveAuroc
                  username
                  validationLogloss
                  validationAuroc
                  stake {
                    insertedAt
                    soc
                    confidence
                    value
                    txHash
                  }
                }
              }
            }
        '''
        arguments = {'number': round_num, 'tournament': tournament}
        result = self.raw_query(query, arguments)['data']['rounds'][0]
        if result is None:
            return None
        stakes = result['leaderboard']
        # filter those with actual stakes
        stakes = [item for item in stakes if item["stake"] is not None]
        # convert strings to python objects
        for s in stakes:
            utils.replace(s["stake"], "insertedAt",
                          utils.parse_datetime_string)
            utils.replace(s["stake"], "confidence", utils.parse_float_string)
            utils.replace(s["stake"], "soc", utils.parse_float_string)
            utils.replace(s["stake"], "value", utils.parse_float_string)
        return stakes