Add min_relay_fee option.

2024-05-20_merge
tecnovert 1 year ago
parent a4c79fb7aa
commit 0be5a4fca7
No known key found for this signature in database
GPG Key ID: 8ED6D8750C4E3F93
  1. 8
      basicswap/basicswap.py
  2. 31
      basicswap/interface/btc.py
  3. 14
      basicswap/interface/nav.py
  4. 1
      bin/basicswap_prepare.py

@ -472,6 +472,8 @@ class BasicSwap(BaseApp):
if coin == Coins.FIRO: if coin == Coins.FIRO:
self.coin_clients[coin]['use_csv'] = False self.coin_clients[coin]['use_csv'] = False
if 'min_relay_fee' not in self.coin_clients[coin]:
self.coin_clients[coin]['min_relay_fee'] = 0.00001
if coin == Coins.PART: if coin == Coins.PART:
self.coin_clients[coin]['anon_tx_ring_size'] = chain_client_settings.get('anon_tx_ring_size', 12) self.coin_clients[coin]['anon_tx_ring_size'] = chain_client_settings.get('anon_tx_ring_size', 12)
@ -1792,12 +1794,6 @@ class BasicSwap(BaseApp):
return self.callcoinrpc(coin_type, 'getnetworkinfo')['relayfee'] return self.callcoinrpc(coin_type, 'getnetworkinfo')['relayfee']
def getFeeRateForCoin(self, coin_type, conf_target: int = 2): def getFeeRateForCoin(self, coin_type, conf_target: int = 2):
chain_client_settings = self.getChainClientSettings(coin_type)
override_feerate = chain_client_settings.get('override_feerate', None)
if override_feerate:
self.log.debug('Fee rate override used for %s: %f', Coins(coin_type).name, override_feerate)
return override_feerate, 'override_feerate'
return self.ci(coin_type).get_fee_rate(conf_target) return self.ci(coin_type).get_fee_rate(conf_target)
def estimateWithdrawFee(self, coin_type, fee_rate): def estimateWithdrawFee(self, coin_type, fee_rate):

@ -358,18 +358,31 @@ class BTCInterface(CoinInterface):
if self.sc._restrict_unknown_seed_wallets: if self.sc._restrict_unknown_seed_wallets:
ensure(addr_info['hdseedid'] == self._expect_seedid_hex, 'unexpected seedid') ensure(addr_info['hdseedid'] == self._expect_seedid_hex, 'unexpected seedid')
def get_fee_rate(self, conf_target: int = 2): def get_fee_rate(self, conf_target: int = 2) -> (float, str):
try: chain_client_settings = self._sc.getChainClientSettings(self.coin_type())
fee_rate = self.rpc_callback('estimatesmartfee', [conf_target])['feerate'] override_feerate = chain_client_settings.get('override_feerate', None)
assert (fee_rate > 0.0), 'Non positive feerate' if override_feerate:
return fee_rate, 'estimatesmartfee' self._log.debug('Fee rate override used for %s: %f', self.coin_name(), override_feerate)
except Exception: return override_feerate, 'override_feerate'
min_relay_fee = chain_client_settings.get('min_relay_fee', None)
def try_get_fee_rate(self, conf_target):
try: try:
fee_rate = self.rpc_callback('getwalletinfo')['paytxfee'] fee_rate = self.rpc_callback('estimatesmartfee', [conf_target])['feerate']
assert (fee_rate > 0.0), 'Non positive feerate' assert (fee_rate > 0.0), 'Non positive feerate'
return fee_rate, 'paytxfee' return fee_rate, 'estimatesmartfee'
except Exception: except Exception:
return self.rpc_callback('getnetworkinfo')['relayfee'], 'relayfee' try:
fee_rate = self.rpc_callback('getwalletinfo')['paytxfee']
assert (fee_rate > 0.0), 'Non positive feerate'
return fee_rate, 'paytxfee'
except Exception:
return self.rpc_callback('getnetworkinfo')['relayfee'], 'relayfee'
fee_rate, rate_src = try_get_fee_rate(self, conf_target)
if min_relay_fee and min_relay_fee > fee_rate:
return min_relay_fee, 'min_relay_fee'
return fee_rate, rate_src
def isSegwitAddress(self, address: str) -> bool: def isSegwitAddress(self, address: str) -> bool:
return address.startswith(self.chainparams_network()['hrp'] + '1') return address.startswith(self.chainparams_network()['hrp'] + '1')

@ -727,17 +727,3 @@ class NAVInterface(BTCInterface):
i2h(tx.sha256), tx_fee_rate, vsize, pay_fee) i2h(tx.sha256), tx_fee_rate, vsize, pay_fee)
return tx.serialize() return tx.serialize()
def get_fee_rate(self, conf_target: int = 2):
try:
fee_rate = self.rpc_callback('estimatesmartfee', [conf_target])['feerate']
assert (fee_rate > 0.0), 'Non positive feerate'
return fee_rate, 'estimatesmartfee'
except Exception:
try:
fee_rate = self.rpc_callback('getwalletinfo')['paytxfee']
assert (fee_rate > 0.0), 'Non positive feerate'
return fee_rate, 'paytxfee'
except Exception:
return self.rpc_callback('getnetworkinfo')['relayfee'], 'relayfee'

@ -1590,6 +1590,7 @@ def main():
'blocks_confirmed': 1, 'blocks_confirmed': 1,
'conf_target': 2, 'conf_target': 2,
'core_version_group': 14, 'core_version_group': 14,
'min_relay_fee': 0.00001,
'chain_lookups': 'local', 'chain_lookups': 'local',
}, },
'navcoin': { 'navcoin': {

Loading…
Cancel
Save