def update_fee_text(self): fee_per_kb = self.config.fee_per_kb() # eta is -1 when block inclusion cannot be estimated for low fees eta = self.config.fee_to_eta(fee_per_kb) fee_per_b = format_fee_satoshis(fee_per_kb / 1000) suggest_fee = self.config.eta_target_to_fee(RECOMMEND_BLOCKS_SWAP) suggest_fee_per_b = format_fee_satoshis(suggest_fee / 1000) s = 's' if eta > 1 else '' if eta > RECOMMEND_BLOCKS_SWAP or eta == -1: msg = f'Warning: Your fee rate of {fee_per_b} sat/B may be too ' \ f'low for the swap to succeed before its timeout. ' \ f'The recommended fee rate is at least {suggest_fee_per_b} ' \ f'sat/B.' else: msg = f'Info: Your swap is estimated to be processed in {eta} ' \ f'block{s} with an onchain fee rate of {fee_per_b} sat/B.' self.fee_rate_text = f'{fee_per_b} sat/B' self.ids.fee_estimate.text = msg
def test_format_fee_precision(self): self.assertEqual("1.666", format_fee_satoshis(1666 / 1000, precision=6)) self.assertEqual("1.7", format_fee_satoshis(1666 / 1000, precision=1))
def test_format_fee_decimal(self): self.assertEqual("1.7", format_fee_satoshis(Decimal("1.7")))
def test_format_fee_float(self): self.assertEqual("1.7", format_fee_satoshis(1700 / 1000))
def format_fee_rate(self, fee_rate): # fee_rate is in sat/kB return format_fee_satoshis(fee_rate/1000) + ' sat/byte'