<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _per_era_supply(self, block_height):
 """ 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. """

        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