code: def _standard_supply(self, block_height):
          
          start_coins_per_block = self.supply_data['start_coins_per_block']
          minutes_per_block = self.supply_data['minutes_per_block']
          blocks_per_era = self.supply_data['blocks_per_era']
          full_cap = self.supply_data.get('full_cap')
  
          if not full_cap:
              full_cap = 100000000000 # nearly infinite
  
          coins = 0
          for era, start_block in enumerate(range(0, full_cap, blocks_per_era), 1):
              end_block = start_block + blocks_per_era
              reward = start_coins_per_block / float(2 ** (era - 1))
              if block_height < end_block:
                  blocks_this_era = block_height - start_block
                  coins += blocks_this_era * reward
                  break
  
              coins += reward * blocks_per_era
  
          return coins
docs: Calculate the supply of coins for a given time (in either datetime, or
          block height) for coins that use the "standard" method of halfing.