|
|
|
@ -258,7 +258,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
# TODO: Set dynamically |
|
|
|
|
self.scriptless_coins = (Coins.XMR, Coins.PART_ANON) |
|
|
|
|
self.adaptor_swap_only_coins = self.scriptless_coins + (Coins.PART_BLIND, ) |
|
|
|
|
self.secret_hash_swap_only_coins = (Coins.PIVX, Coins.DASH, Coins.FIRO, Coins.NMC) # Coins without segwit |
|
|
|
|
self.coins_without_segwit = (Coins.PIVX, Coins.DASH, Coins.FIRO, Coins.NMC) |
|
|
|
|
|
|
|
|
|
# TODO: Adjust ranges |
|
|
|
|
self.min_delay_event = self.settings.get('min_delay_event', 10) |
|
|
|
@ -1095,7 +1095,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
else: |
|
|
|
|
use_session.execute('DELETE FROM actions WHERE linked_id = x\'{}\' '.format(bid.bid_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
# Unlock locked inputs (TODO) |
|
|
|
|
if offer.swap_type == SwapTypes.XMR_SWAP: |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
@ -1161,11 +1161,14 @@ class BasicSwap(BaseApp): |
|
|
|
|
ro = self.callrpc('smsgsend', [addr_from, addr_to, payload_hex, False, msg_valid, False, options]) |
|
|
|
|
return bytes.fromhex(ro['msgid']) |
|
|
|
|
|
|
|
|
|
def is_reverse_ads_bid(self, coin_from) -> bool: |
|
|
|
|
return coin_from in self.scriptless_coins + self.coins_without_segwit |
|
|
|
|
|
|
|
|
|
def validateSwapType(self, coin_from, coin_to, swap_type): |
|
|
|
|
if swap_type == SwapTypes.XMR_SWAP: |
|
|
|
|
reverse_bid: bool = coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
itx_coin = coin_to if reverse_bid else coin_from |
|
|
|
|
if (itx_coin in self.secret_hash_swap_only_coins): |
|
|
|
|
if (itx_coin in self.coins_without_segwit): |
|
|
|
|
raise ValueError('Invalid swap type for: {} -> {}'.format(coin_from.name, coin_to.name)) |
|
|
|
|
if (coin_from in self.scriptless_coins and coin_to in self.scriptless_coins): |
|
|
|
|
raise ValueError('Invalid swap type for: {} -> {}'.format(coin_from.name, coin_to.name)) |
|
|
|
@ -1361,13 +1364,17 @@ class BasicSwap(BaseApp): |
|
|
|
|
if lock_type == OfferMessage.SEQUENCE_LOCK_TIME: |
|
|
|
|
ensure(lock_value >= self.min_sequence_lock_seconds and lock_value <= self.max_sequence_lock_seconds, 'Invalid lock_value time') |
|
|
|
|
if swap_type == SwapTypes.XMR_SWAP: |
|
|
|
|
ensure(coin_from_has_csv, 'Coin from needs CSV activated.') |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
itx_coin_has_csv = coin_to_has_csv if reverse_bid else coin_from_has_csv |
|
|
|
|
ensure(itx_coin_has_csv, 'ITX coin needs CSV activated.') |
|
|
|
|
else: |
|
|
|
|
ensure(coin_from_has_csv and coin_to_has_csv, 'Both coins need CSV activated.') |
|
|
|
|
elif lock_type == OfferMessage.SEQUENCE_LOCK_BLOCKS: |
|
|
|
|
ensure(lock_value >= 5 and lock_value <= 1000, 'Invalid lock_value blocks') |
|
|
|
|
if swap_type == SwapTypes.XMR_SWAP: |
|
|
|
|
ensure(coin_from_has_csv, 'Coin from needs CSV activated.') |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
itx_coin_has_csv = coin_to_has_csv if reverse_bid else coin_from_has_csv |
|
|
|
|
ensure(itx_coin_has_csv, 'ITX coin needs CSV activated.') |
|
|
|
|
else: |
|
|
|
|
ensure(coin_from_has_csv and coin_to_has_csv, 'Both coins need CSV activated.') |
|
|
|
|
elif lock_type == TxLockTypes.ABS_LOCK_TIME: |
|
|
|
@ -1433,7 +1440,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
|
|
|
|
|
offer_addr_to = self.getOfferAddressTo(extra_options) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
|
|
|
|
|
self.mxDB.acquire() |
|
|
|
|
session = None |
|
|
|
@ -1541,7 +1548,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
created_at=offer_created_at, |
|
|
|
|
expire_at=offer_created_at + msg_buf.time_valid, |
|
|
|
|
was_sent=True, |
|
|
|
|
bid_reversed=msg_buf.coin_from in self.scriptless_coins, |
|
|
|
|
bid_reversed=self.is_reverse_ads_bid(msg_buf.coin_from), |
|
|
|
|
security_token=security_token) |
|
|
|
|
offer.setState(OfferStates.OFFER_SENT) |
|
|
|
|
|
|
|
|
@ -2354,7 +2361,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(bid.state in (BidStates.BID_RECEIVED, ), 'Wrong bid state: {}'.format(BidStates(bid.state).name)) |
|
|
|
|
|
|
|
|
|
if offer.swap_type == SwapTypes.XMR_SWAP: |
|
|
|
|
reverse_bid: bool = Coins(offer.coin_from) in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
if reverse_bid: |
|
|
|
|
return self.acceptADSReverseBid(bid_id) |
|
|
|
|
|
|
|
|
@ -2496,7 +2503,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
balance_to = ci_to.getSpendableBalance() |
|
|
|
|
ensure(balance_to > amount_to, '{} spendable balance is too low: {}'.format(ci_to.coin_name(), ci_to.format_amount(balance_to))) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
if reverse_bid: |
|
|
|
|
reversed_rate: int = ci_to.make_int(amount / amount_to, r=1) |
|
|
|
|
amount_from: int = int((int(amount_to) * reversed_rate) // ci_to.COIN()) |
|
|
|
@ -2671,7 +2678,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(offer.expire_at > now, 'Offer has expired') |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -3463,7 +3470,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
def checkXmrBidState(self, bid_id: bytes, bid, offer): |
|
|
|
|
rv = False |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
ci_to = self.ci(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
|
|
|
|
@ -3982,7 +3989,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
was_received: bool = bid.was_sent if reverse_bid else bid.was_received |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
@ -4033,7 +4040,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
was_sent: bool = bid.was_received if reverse_bid else bid.was_sent |
|
|
|
@ -4364,7 +4371,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
|
|
|
|
|
ensure(msg['sent'] + offer_data.time_valid >= now, 'Offer expired') |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(coin_from) |
|
|
|
|
|
|
|
|
|
if offer_data.swap_type == SwapTypes.SELLER_FIRST: |
|
|
|
|
ensure(offer_data.protocol_version >= MINPROTO_VERSION_SECRET_HASH, 'Invalid protocol version') |
|
|
|
@ -4427,7 +4434,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
created_at=msg['sent'], |
|
|
|
|
expire_at=msg['sent'] + offer_data.time_valid, |
|
|
|
|
was_sent=False, |
|
|
|
|
bid_reversed=offer_data.coin_from in self.scriptless_coins) |
|
|
|
|
bid_reversed=self.is_reverse_ads_bid(offer_data.coin_from)) |
|
|
|
|
offer.setState(OfferStates.OFFER_RECEIVED) |
|
|
|
|
session.add(offer) |
|
|
|
|
|
|
|
|
@ -4786,7 +4793,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
xmr_swap = session.query(XmrSwap).filter_by(bid_id=bid.bid_id).first() |
|
|
|
|
ensure(xmr_swap, 'Adaptor-sig swap not found: {}.'.format(bid.bid_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
addr_expect_from: str = '' |
|
|
|
|
if reverse_bid: |
|
|
|
|
ci_from = self.ci(Coins(offer.coin_to)) |
|
|
|
@ -4853,7 +4860,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
xmr_swap = session.query(XmrSwap).filter_by(bid_id=bid.bid_id).first() |
|
|
|
|
ensure(xmr_swap, 'Adaptor-sig swap not found: {}.'.format(bid.bid_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
ci_to = self.ci(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
addr_from: str = bid.bid_addr if reverse_bid else offer.addr_from |
|
|
|
@ -5014,7 +5021,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
ci_to = self.ci(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
addr_from: str = bid.bid_addr if reverse_bid else offer.addr_from |
|
|
|
@ -5093,7 +5100,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
self.log.debug('Adaptor-sig swap in progress, bid %s', bid.bid_id.hex()) |
|
|
|
|
self.swaps_in_progress[bid.bid_id] = (bid, offer) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
self.setLastHeightChecked(coin_from, bid.chain_a_height_start) |
|
|
|
|
self.addWatchedOutput(coin_from, bid.bid_id, bid.xmr_a_lock_tx.txid.hex(), bid.xmr_a_lock_tx.vout, TxTypes.XMR_SWAP_A_LOCK, SwapTypes.XMR_SWAP) |
|
|
|
@ -5114,7 +5121,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -5178,7 +5185,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -5249,7 +5256,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
ci_to = self.ci(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
b_fee_rate: int = xmr_offer.a_fee_rate if reverse_bid else xmr_offer.b_fee_rate |
|
|
|
@ -5330,7 +5337,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
|
|
|
|
@ -5362,7 +5369,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -5414,7 +5421,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -5485,7 +5492,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
ci_from = self.ci(coin_from) |
|
|
|
@ -5551,7 +5558,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
addr_send_from: str = bid.bid_addr if reverse_bid else offer.addr_from |
|
|
|
|
addr_send_to: str = offer.addr_from if reverse_bid else bid.bid_addr |
|
|
|
@ -5589,7 +5596,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
addr_sent_from: str = offer.addr_from if reverse_bid else bid.bid_addr |
|
|
|
@ -5662,7 +5669,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
ci_to = self.ci(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|
addr_sent_from: str = bid.bid_addr if reverse_bid else offer.addr_from |
|
|
|
@ -5751,7 +5758,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
ensure(offer, 'Offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
ensure(xmr_offer, 'Adaptor-sig offer not found: {}.'.format(bid.offer_id.hex())) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
ci_from = self.ci(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
addr_sent_from: str = bid.bid_addr if reverse_bid else offer.addr_from |
|
|
|
|
addr_sent_to: str = offer.addr_from if reverse_bid else bid.bid_addr |
|
|
|
@ -6914,7 +6921,7 @@ class BasicSwap(BaseApp): |
|
|
|
|
def createCoinALockRefundSwipeTx(self, ci, bid, offer, xmr_swap, xmr_offer): |
|
|
|
|
self.log.debug('Creating %s lock refund swipe tx', ci.coin_name()) |
|
|
|
|
|
|
|
|
|
reverse_bid: bool = offer.coin_from in self.scriptless_coins |
|
|
|
|
reverse_bid: bool = self.is_reverse_ads_bid(offer.coin_from) |
|
|
|
|
a_fee_rate: int = xmr_offer.b_fee_rate if reverse_bid else xmr_offer.a_fee_rate |
|
|
|
|
coin_from = Coins(offer.coin_to if reverse_bid else offer.coin_from) |
|
|
|
|
coin_to = Coins(offer.coin_from if reverse_bid else offer.coin_to) |
|
|
|
|