Fix fee_src error.

This commit is contained in:
tecnovert
2020-12-18 23:04:06 +02:00
parent c348621c96
commit 31bf80f579
5 changed files with 89 additions and 26 deletions

View File

@@ -2239,7 +2239,7 @@ class BasicSwap(BaseApp):
prevout_s = ' in={}:{}'.format(prev_txnid, prev_n)
if fee_rate is None:
fee_rate = self.getFeeRateForCoin(coin_type)
fee_rate, fee_src = self.getFeeRateForCoin(coin_type)
tx_vsize = self.getContractSpendTxVSize(coin_type)
tx_fee = (fee_rate * tx_vsize) / 1000
@@ -2335,7 +2335,7 @@ class BasicSwap(BaseApp):
sequence = 1
prevout_s = ' in={}:{}:{}'.format(txjs['txid'], vout, sequence)
fee_rate = self.getFeeRateForCoin(coin_type)
fee_rate, fee_src = self.getFeeRateForCoin(coin_type)
tx_vsize = self.getContractSpendTxVSize(coin_type, False)
tx_fee = (fee_rate * tx_vsize) / 1000
@@ -4768,3 +4768,8 @@ class BasicSwap(BaseApp):
def add_connection(self, host, port, peer_pubkey):
self.log.info('add_connection %s %d %s', host, port, peer_pubkey.hex())
self._network.add_connection(host, port, peer_pubkey)
def get_network_info(self):
if not self._network:
return {'Error': 'Not Initialised'}
return self._network.get_info()

View File

@@ -38,6 +38,7 @@ from .js_server import (
js_sentoffers,
js_bids,
js_sentbids,
js_network,
js_index,
)
from .ui import (
@@ -246,13 +247,14 @@ class HttpHandler(BaseHTTPRequestHandler):
continue
ci = swap_client.ci(k)
fee_rate = swap_client.getFeeRateForCoin(k)
fee_rate, fee_src = swap_client.getFeeRateForCoin(k)
est_fee = swap_client.estimateWithdrawFee(k, fee_rate)
wallets_formatted.append({
'name': w['name'],
'version': w['version'],
'cid': str(int(k)),
'fee_rate': ci.format_amount(int(fee_rate * ci.COIN())),
'fee_rate_src': fee_src,
'est_fee': 'Unknown' if est_fee is None else ci.format_amount(int(est_fee * ci.COIN())),
'balance': w['balance'],
'blocks': w['blocks'],
@@ -797,6 +799,7 @@ class HttpHandler(BaseHTTPRequestHandler):
'sentoffers': js_sentoffers,
'bids': js_bids,
'sentbids': js_sentbids,
'network': js_network,
}.get(url_split[2], js_index)
return func(self, url_split, post_string)
except Exception as ex:

View File

@@ -153,5 +153,9 @@ def js_sentbids(self, url_split, post_string):
return bytes(json.dumps(self.server.swap_client.listBids(sent=True)), 'UTF-8')
def js_network(self, url_split, post_string):
return bytes(json.dumps(self.server.swap_client.get_network_info()), 'UTF-8')
def js_index(self, url_split, post_string):
return bytes(json.dumps(self.server.swap_client.getSummary()), 'UTF-8')

View File

@@ -99,7 +99,7 @@ class MsgHandshake:
class Peer:
__slots__ = (
'_mx', '_pubkey', '_address', '_socket', '_version', '_ready',
'_mx', '_pubkey', '_address', '_socket', '_version', '_ready', '_incoming',
'_connected_at', '_last_received_at', '_bytes_sent', '_bytes_received',
'_receiving_length', '_receiving_buffer', '_recv_messages', '_misbehaving_score',
'_ke', '_km', '_dir', '_sent_nonce', '_recv_nonce', '_last_handshake_at',
@@ -111,7 +111,8 @@ class Peer:
self._address = address
self._socket = socket
self._version = None
self._ready = False # True When handshake is complete
self._ready = False # True when handshake is complete
self._incoming = False
self._connected_at = time.time()
self._last_received_at = 0
self._last_handshake_at = 0
@@ -122,7 +123,7 @@ class Peer:
self._receiving_length = 0
self._receiving_buffer = None
self._recv_messages = queue.Queue() # Built in mutex
self._misbehaving_score = 0
self._misbehaving_score = 0 # TODO: Must be persistent - save to db
self._ping_nonce = 0
self._last_ping_at = 0 # ms
@@ -146,7 +147,9 @@ def listen_thread(cls):
if s == cls._socket:
peer_socket, address = cls._socket.accept()
logging.info('Connection from %s', address)
cls._peers.append(Peer(address, peer_socket, None))
new_peer = Peer(address, peer_socket, None)
new_peer._incoming = True
cls._peers.append(new_peer)
cls._error_sockets.append(peer_socket)
cls._read_sockets.append(peer_socket)
else:
@@ -183,21 +186,22 @@ def msg_thread(cls):
while cls._running:
processed = False
for peer in cls._peers:
try:
now_us = time.time_ns() // 1000
if peer._ready is True:
if now_us - peer._last_ping_at >= 5000000: # 5 seconds TODO: Make variable
cls.send_ping(peer)
msg = peer._recv_messages.get(False)
cls.process_message(peer, msg)
processed = True
except queue.Empty:
pass
except Exception as e:
logging.warning('process message error %s', str(e))
if cls._sc.debug:
traceback.print_exc()
with cls._mx:
for peer in cls._peers:
try:
now_us = time.time_ns() // 1000
if peer._ready is True:
if now_us - peer._last_ping_at >= 5000000: # 5 seconds TODO: Make variable
cls.send_ping(peer)
msg = peer._recv_messages.get(False)
cls.process_message(peer, msg)
processed = True
except queue.Empty:
pass
except Exception as e:
logging.warning('process message error %s', str(e))
if cls._sc.debug:
traceback.print_exc()
if processed is False:
time.sleep(timeout)
@@ -572,3 +576,27 @@ class Network:
if self._sc.debug:
self._sc.log.error('Invalid message received from %s %s', peer._address, str(e))
# TODO: misbehaving
def test_onion(self, path):
self._sc.log.debug('test_onion packet')
plaintext = 'test'
def get_info(self):
rv = {}
peers = []
with self._mx:
for peer in self._peers:
peer_info = {
'pubkey': 'Unknown' if not peer._pubkey else peer._pubkey.hex(),
'address': '{}:{}'.format(peer._address[0], peer._address[1]),
'bytessent': peer._bytes_sent,
'bytesrecv': peer._bytes_received,
'ready': peer._ready,
'incoming': peer._incoming,
}
peers.append(peer_info)
rv['peers'] = peers
return rv