code: def _per_era_supply(self, block_height):
          
          coins = 0
          for era in self.supply_data['eras']:
              end_block = era['end']
              start_block = era['start']
              reward = era['reward']
  
              if not end_block or block_height <= end_block:
                  blocks_this_era = block_height - start_block
                  coins += blocks_this_era * reward
                  break
  
              blocks_per_era = end_block - start_block
              coins += reward * blocks_per_era
  
          return coins
docs: Calculate the coin supply based on 'eras' defined in crypto_data. Some
          currencies don't have a simple algorithmically defined halfing schedule
          so coins supply has to be defined explicitly per era.