From 17308f9a66e8795b3900c5ed0fd2f6700ce009d3 Mon Sep 17 00:00:00 2001 From: tecnovert Date: Wed, 30 Oct 2024 23:25:22 +0200 Subject: [PATCH] Allow BCH as coin_to in ADS swaps. --- basicswap/basicswap.py | 10 ++++++---- basicswap/interface/bch.py | 10 +++++----- tests/basicswap/test_bch_xmr.py | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/basicswap/basicswap.py b/basicswap/basicswap.py index 85812b6..cf56a74 100644 --- a/basicswap/basicswap.py +++ b/basicswap/basicswap.py @@ -678,8 +678,12 @@ class BasicSwap(BaseApp): return self.coin_clients[use_coinid][interface_ind] - def isBchXmrSwap(self, offer: Offer): - return (offer.coin_from == Coins.BCH or offer.coin_to == Coins.BCH) and offer.swap_type == SwapTypes.XMR_SWAP + def isBchXmrSwap(self, offer: Offer) -> bool: + if offer.swap_type != SwapTypes.XMR_SWAP: + return False + if self.is_reverse_ads_bid(offer.coin_from, offer.coin_to): + return offer.coin_to == Coins.BCH + return offer.coin_from == Coins.BCH def pi(self, protocol_ind): if protocol_ind not in self.protocolInterfaces: @@ -1368,8 +1372,6 @@ class BasicSwap(BaseApp): raise e def is_reverse_ads_bid(self, coin_from, coin_to) -> bool: - if coin_to == Coins.BCH: - return True return coin_from in self.scriptless_coins + self.coins_without_segwit def validateSwapType(self, coin_from, coin_to, swap_type): diff --git a/basicswap/interface/bch.py b/basicswap/interface/bch.py index 8d6134f..418d02a 100644 --- a/basicswap/interface/bch.py +++ b/basicswap/interface/bch.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (c) 2022-2023 tecnovert +# Copyright (c) 2024 The Basicswap developers # Distributed under the MIT software license, see the accompanying # file LICENSE or http://www.opensource.org/licenses/mit-license.php. @@ -320,12 +320,12 @@ class BCHInterface(BTCInterface): def pkh_to_address(self, pkh: bytes) -> str: # pkh is ripemd160(sha256(pk)) assert (len(pkh) == 20) - prefix = self.chainparams_network()['hrp'] - address = Address("P2PKH", b'\x76\xa9\x14' + pkh + b'\x88\xac') - address.prefix = prefix + network = self._network.upper() + address = Address("P2PKH" if network == "MAINNET" else "P2PKH-" + network, pkh) + return address.cash_address() - def encodeSharedAddress(self, Kbv, Kbs): + def encodeSharedAddress(self, Kbv: bytes, Kbs: bytes) -> str: return self.pkh_to_address(hash160(Kbs)) def addressToLockingBytecode(self, address: str) -> bytes: diff --git a/tests/basicswap/test_bch_xmr.py b/tests/basicswap/test_bch_xmr.py index 8f2756d..3892a1d 100644 --- a/tests/basicswap/test_bch_xmr.py +++ b/tests/basicswap/test_bch_xmr.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright (c) 2021-2024 tecnovert +# Copyright (c) 2024 The Basicswap developers # Distributed under the MIT software license, see the accompanying # file LICENSE or http://www.opensource.org/licenses/mit-license.php.