Beispiel #1
0
    def make_supply_table(self, supply_divide=1, table_format='simple'):
        eras = self.supply_data.get('eras')
        if not eras and self.supply_data['method'] == 'standard':
            eras = make_standard_halfing_eras(
                start=0,
                interval=self.supply_data['blocks_per_era'],
                start_reward=self.supply_data['start_coins_per_block'])

        tag = ""
        if supply_divide == 1e6:
            tag = " (in millions)"
        if supply_divide == 1e9:
            tag = " (in billions)"

        total_supply = (self.supply_data.get('full_cap') or 0) / supply_divide
        rows = []
        running_total = 0
        for era, data in enumerate(eras, 1):
            start = data['start']
            end = data['end']
            reward = data['reward']
            total = ((end - start) * reward) / supply_divide if end else ""
            running_total += total or 0
            percent = "%.2f" % (float(running_total * 100) /
                                total_supply) if total_supply else None
            date = self.estimate_date_from_height(end) if end else None
            row = [
                era, start, "{0:%m-%d-%Y}".format(date) if date else "", end,
                reward, total, running_total
            ]

            if total_supply:
                row.append(percent)

            rows.append(row)

        headers = [
            'Era', 'Start Block', 'End Date', 'End Block', 'Reward per block',
            'Total Created This Era' + tag, "Total Existing" + tag
        ]
        if total_supply:
            headers.append("Percentage Issued")

        return tabulate(rows, headers=headers, tablefmt=table_format)
Beispiel #2
0
    def make_supply_table(self, supply_divide=1, table_format='simple'):
        eras = self.supply_data.get('eras')
        if not eras and self.supply_data['method'] == 'standard':
            eras = make_standard_halfing_eras(
                start=0, interval=self.supply_data['blocks_per_era'],
                start_reward=self.supply_data['start_coins_per_block']
            )

        tag = ""
        if supply_divide == 1e6:
            tag = " (in millions)"
        if supply_divide == 1e9:
            tag = " (in billions)"

        total_supply = (self.supply_data.get('full_cap') or 0) / supply_divide
        rows = []
        running_total = 0
        for era, data in enumerate(eras, 1):
            start = data['start']
            end = data['end']
            reward = data['reward']
            total = ((end - start) * reward) / supply_divide if end else ""
            running_total += total or 0
            percent = "%.2f" % (float(running_total * 100) / total_supply) if total_supply else None
            date = self.estimate_date_from_height(end) if end else None
            row = [era, start, "{0:%m-%d-%Y}".format(date) if date else "", end, reward, total, running_total]

            if total_supply:
                row.append(percent)

            rows.append(row)

        headers = [
            'Era', 'Start Block', 'End Date', 'End Block', 'Reward per block',
            'Total Created This Era' + tag, "Total Existing" + tag
        ]
        if total_supply:
            headers.append("Percentage Issued")

        return tabulate(rows, headers=headers, tablefmt=table_format)
Beispiel #3
0
             'start': 1,
             'end': 100000,
             'reward': 500000
         },  # reward was random, average used
         {
             'start': 100001,
             'end': 144999,
             'reward': 250011
         },  # reward was random, average used
         {
             'start': 145000,
             'end': 200000,
             'reward': 250000
         },
     ] + make_standard_halfing_eras(start=200000,
                                    interval=100000,
                                    start_reward=125000,
                                    total_eras=4) + [{
                                        'start': 600001,
                                        'end': None,
                                        'reward': 10000
                                    }],
     'minutes_per_block':
     1.0,
     'full_cap':
     None,
 },
 'services': {
     'current_price': [Bittrex, Poloniex, Cryptonator, ChainSo, BTER],
     'address_balance': [
         BlockCypher, ChainSo, DogeChainInfo, ProHashing,
         HolyTransaction, Bcoin