Require attributes to be specified for a coin
This commit is contained in:
parent
23ebdecc5d
commit
6db9cb967c
@ -43,16 +43,22 @@ class Coin(object):
|
|||||||
# Peer discovery
|
# Peer discovery
|
||||||
PEER_DEFAULT_PORTS = {'t': '50001', 's': '50002'}
|
PEER_DEFAULT_PORTS = {'t': '50001', 's': '50002'}
|
||||||
PEERS = []
|
PEERS = []
|
||||||
TX_COUNT_HEIGHT = 0
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def lookup_coin_class(cls, name, net):
|
def lookup_coin_class(cls, name, net):
|
||||||
'''Return a coin class given name and network.
|
'''Return a coin class given name and network.
|
||||||
|
|
||||||
Raise an exception if unrecognised.'''
|
Raise an exception if unrecognised.'''
|
||||||
|
req_attrs = ('TX_COUNT', 'TX_COUNT_HEIGHT', 'TX_PER_BLOCK',
|
||||||
|
'IRC_CHANNEL', 'IRC_PREFIX')
|
||||||
for coin in util.subclasses(Coin):
|
for coin in util.subclasses(Coin):
|
||||||
if (coin.NAME.lower() == name.lower()
|
if (coin.NAME.lower() == name.lower()
|
||||||
and coin.NET.lower() == net.lower()):
|
and coin.NET.lower() == net.lower()):
|
||||||
|
missing = [attr for attr in req_attrs
|
||||||
|
if not hasattr(coin, attr)]
|
||||||
|
if missing:
|
||||||
|
raise CoinError('coin {} missing {} attributes'
|
||||||
|
.format(name, missing))
|
||||||
return coin
|
return coin
|
||||||
raise CoinError('unknown coin {} and network {} combination'
|
raise CoinError('unknown coin {} and network {} combination'
|
||||||
.format(name, net))
|
.format(name, net))
|
||||||
|
|||||||
@ -388,27 +388,22 @@ class BlockProcessor(server.db.DB):
|
|||||||
self.logger.info('tx/sec since genesis: {:,d}, '
|
self.logger.info('tx/sec since genesis: {:,d}, '
|
||||||
'since last flush: {:,d}'
|
'since last flush: {:,d}'
|
||||||
.format(tx_per_sec, this_tx_per_sec))
|
.format(tx_per_sec, this_tx_per_sec))
|
||||||
if self.coin.TX_COUNT_HEIGHT > 0:
|
|
||||||
daemon_height = self.daemon.cached_height()
|
|
||||||
if self.height > self.coin.TX_COUNT_HEIGHT:
|
|
||||||
tx_est = (daemon_height - self.height) * self.coin.TX_PER_BLOCK
|
|
||||||
else:
|
|
||||||
tx_est = ((daemon_height - self.coin.TX_COUNT_HEIGHT)
|
|
||||||
* self.coin.TX_PER_BLOCK
|
|
||||||
+ (self.coin.TX_COUNT - self.tx_count))
|
|
||||||
|
|
||||||
# Damp the enthusiasm
|
daemon_height = self.daemon.cached_height()
|
||||||
realism = 2.0 - 0.9 * self.height / self.coin.TX_COUNT_HEIGHT
|
if self.height > self.coin.TX_COUNT_HEIGHT:
|
||||||
tx_est *= max(realism, 1.0)
|
tx_est = (daemon_height - self.height) * self.coin.TX_PER_BLOCK
|
||||||
|
|
||||||
|
|
||||||
self.logger.info('sync time: {} ETA: {}'
|
|
||||||
.format(formatted_time(self.wall_time),
|
|
||||||
formatted_time(tx_est / this_tx_per_sec)))
|
|
||||||
else:
|
else:
|
||||||
self.logger.info('sync time: {}'
|
tx_est = ((daemon_height - self.coin.TX_COUNT_HEIGHT)
|
||||||
.format(formatted_time(self.wall_time)))
|
* self.coin.TX_PER_BLOCK
|
||||||
|
+ (self.coin.TX_COUNT - self.tx_count))
|
||||||
|
|
||||||
|
# Damp the enthusiasm
|
||||||
|
realism = 2.0 - 0.9 * self.height / self.coin.TX_COUNT_HEIGHT
|
||||||
|
tx_est *= max(realism, 1.0)
|
||||||
|
|
||||||
|
self.logger.info('sync time: {} ETA: {}'
|
||||||
|
.format(formatted_time(self.wall_time),
|
||||||
|
formatted_time(tx_est / this_tx_per_sec)))
|
||||||
|
|
||||||
def fs_flush(self):
|
def fs_flush(self):
|
||||||
'''Flush the things stored on the filesystem.'''
|
'''Flush the things stored on the filesystem.'''
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user