mirror of
https://github.com/basicswap/basicswap.git
synced 2024-11-17 00:07:56 +00:00
api: Add wallet/createutxo
This commit is contained in:
parent
59adf3368b
commit
b43d58afbf
13 changed files with 186 additions and 159 deletions
|
@ -1,3 +1,3 @@
|
|||
name = "basicswap"
|
||||
|
||||
__version__ = "0.11.48"
|
||||
__version__ = "0.11.49"
|
||||
|
|
|
@ -6035,6 +6035,8 @@ class BasicSwap(BaseApp):
|
|||
ci_to = self.ci(int(coin_to))
|
||||
name_from = ci_from.chainparams()['name']
|
||||
name_to = ci_to.chainparams()['name']
|
||||
exchange_name_from = ci_from.getExchangeName('coingecko.com')
|
||||
exchange_name_to = ci_to.getExchangeName('coingecko.com')
|
||||
ticker_from = ci_from.chainparams()['ticker']
|
||||
ticker_to = ci_to.chainparams()['ticker']
|
||||
headers = {'Connection': 'close'}
|
||||
|
@ -6044,23 +6046,42 @@ class BasicSwap(BaseApp):
|
|||
|
||||
if rate_sources.get('coingecko.com', True):
|
||||
try:
|
||||
url = 'https://api.coingecko.com/api/v3/simple/price?ids={},{}&vs_currencies=usd,btc'.format(name_from, name_to)
|
||||
url = 'https://api.coingecko.com/api/v3/simple/price?ids={},{}&vs_currencies=usd,btc'.format(exchange_name_from, exchange_name_to)
|
||||
self.log.debug(f'lookupRates: {url}')
|
||||
start = time.time()
|
||||
req = urllib.request.Request(url, headers=headers)
|
||||
js = json.loads(urllib.request.urlopen(req, timeout=10).read())
|
||||
js['time_taken'] = time.time() - start
|
||||
rate = float(js[name_from]['usd']) / float(js[name_to]['usd'])
|
||||
rate = float(js[exchange_name_from]['usd']) / float(js[exchange_name_to]['usd'])
|
||||
js['rate_inferred'] = ci_to.format_amount(rate, conv_int=True, r=1)
|
||||
rv['coingecko'] = js
|
||||
except Exception as e:
|
||||
rv['coingecko_error'] = str(e)
|
||||
if self.debug:
|
||||
self.log.error(traceback.format_exc())
|
||||
|
||||
if exchange_name_from != name_from:
|
||||
js[name_from] = js[exchange_name_from]
|
||||
js.pop(exchange_name_from)
|
||||
if exchange_name_to != name_to:
|
||||
js[name_to] = js[exchange_name_to]
|
||||
js.pop(exchange_name_to)
|
||||
|
||||
if rate_sources.get('bittrex.com', True):
|
||||
bittrex_api_v3 = 'https://api.bittrex.com/v3'
|
||||
try:
|
||||
exchange_ticker_to = ci_to.getExchangeTicker('bittrex.com')
|
||||
exchange_ticker_from = ci_from.getExchangeTicker('bittrex.com')
|
||||
|
||||
USDT_coins = (Coins.FIRO,)
|
||||
# TODO: How to compare USDT pairs with BTC pairs
|
||||
if ci_from.coin_type() in USDT_coins:
|
||||
raise ValueError('No BTC pair')
|
||||
if ci_to.coin_type() in USDT_coins:
|
||||
raise ValueError('No BTC pair')
|
||||
|
||||
if ci_from.coin_type() == Coins.BTC:
|
||||
pair = f'{ticker_to}-{ticker_from}'
|
||||
pair = f'{exchange_ticker_to}-{exchange_ticker_from}'
|
||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||
self.log.debug(f'lookupRates: {url}')
|
||||
start = time.time()
|
||||
|
@ -6078,7 +6099,7 @@ class BasicSwap(BaseApp):
|
|||
js['to_btc'] = js['lastTradeRate']
|
||||
rv['bittrex'] = js
|
||||
elif ci_to.coin_type() == Coins.BTC:
|
||||
pair = f'{ticker_from}-{ticker_to}'
|
||||
pair = f'{exchange_ticker_from}-{exchange_ticker_to}'
|
||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||
self.log.debug(f'lookupRates: {url}')
|
||||
start = time.time()
|
||||
|
@ -6091,7 +6112,7 @@ class BasicSwap(BaseApp):
|
|||
js['to_btc'] = 1.0
|
||||
rv['bittrex'] = js
|
||||
else:
|
||||
pair = f'{ticker_from}-BTC'
|
||||
pair = f'{exchange_ticker_from}-BTC'
|
||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||
self.log.debug(f'lookupRates: {url}')
|
||||
start = time.time()
|
||||
|
@ -6100,7 +6121,7 @@ class BasicSwap(BaseApp):
|
|||
js_from['time_taken'] = time.time() - start
|
||||
js_from['pair'] = pair
|
||||
|
||||
pair = f'{ticker_to}-BTC'
|
||||
pair = f'{exchange_ticker_to}-BTC'
|
||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||
self.log.debug(f'lookupRates: {url}')
|
||||
start = time.time()
|
||||
|
@ -6124,6 +6145,8 @@ class BasicSwap(BaseApp):
|
|||
}
|
||||
except Exception as e:
|
||||
rv['bittrex_error'] = str(e)
|
||||
if self.debug:
|
||||
self.log.error(traceback.format_exc())
|
||||
|
||||
if output_array:
|
||||
|
||||
|
|
|
@ -374,6 +374,12 @@ class CoinInterface:
|
|||
ticker = 'rt' + ticker
|
||||
return ticker
|
||||
|
||||
def getExchangeTicker(self, exchange_name):
|
||||
return self.ticker()
|
||||
|
||||
def getExchangeName(self, exchange_name):
|
||||
return chainparams[self.coin_type()]['name']
|
||||
|
||||
def ticker_mainnet(self):
|
||||
ticker = chainparams[self.coin_type()]['ticker']
|
||||
return ticker
|
||||
|
|
|
@ -39,3 +39,6 @@ class DASHInterface(BTCInterface):
|
|||
def withdrawCoin(self, value, addr_to, subfee):
|
||||
params = [addr_to, value, '', '', subfee]
|
||||
return self.rpc_callback('sendtoaddress', params)
|
||||
|
||||
def getSpendableBalance(self):
|
||||
return self.make_int(self.rpc_callback('getwalletinfo')['balance'])
|
||||
|
|
|
@ -30,6 +30,9 @@ class FIROInterface(BTCInterface):
|
|||
def coin_type():
|
||||
return Coins.FIRO
|
||||
|
||||
def getExchangeName(self, exchange_name):
|
||||
return 'zcoin'
|
||||
|
||||
def initialiseWallet(self, key):
|
||||
# load with -hdseed= parameter
|
||||
pass
|
||||
|
@ -171,3 +174,6 @@ class FIROInterface(BTCInterface):
|
|||
|
||||
def getWalletSeedID(self):
|
||||
return self.rpc_callback('getwalletinfo')['hdmasterkeyid']
|
||||
|
||||
def getSpendableBalance(self):
|
||||
return self.make_int(self.rpc_callback('getwalletinfo')['balance'])
|
||||
|
|
|
@ -62,3 +62,6 @@ class PIVXInterface(BTCInterface):
|
|||
def withdrawCoin(self, value, addr_to, subfee):
|
||||
params = [addr_to, value, '', '', subfee]
|
||||
return self.rpc_callback('sendtoaddress', params)
|
||||
|
||||
def getSpendableBalance(self):
|
||||
return self.make_int(self.rpc_callback('getwalletinfo')['balance'])
|
||||
|
|
|
@ -37,17 +37,24 @@ from .ui.page_offers import postNewOffer
|
|||
from .protocols.xmr_swap_1 import recoverNoScriptTxnWithKey, getChainBSplitKey
|
||||
|
||||
|
||||
def getFormData(post_string, is_json):
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
form_data = json.loads(post_string)
|
||||
form_data['is_json'] = True
|
||||
else:
|
||||
form_data = urllib.parse.parse_qs(post_string)
|
||||
return form_data
|
||||
|
||||
|
||||
def js_error(self, error_str):
|
||||
error_str_json = json.dumps({'error': error_str})
|
||||
return bytes(error_str_json, 'UTF-8')
|
||||
|
||||
|
||||
def withdraw_coin(swap_client, coin_type, post_string, is_json):
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
value = get_data_entry(post_data, 'value')
|
||||
address = get_data_entry(post_data, 'address')
|
||||
|
@ -99,6 +106,13 @@ def js_wallets(self, url_split, post_string, is_json):
|
|||
return bytes(json.dumps(withdraw_coin(swap_client, coin_type, post_string, is_json)), 'UTF-8')
|
||||
if cmd == 'nextdepositaddr':
|
||||
return bytes(json.dumps(swap_client.cacheNewAddressForCoin(coin_type)), 'UTF-8')
|
||||
if cmd == 'createutxo':
|
||||
post_data = getFormData(post_string, is_json)
|
||||
ci = swap_client.ci(coin_type)
|
||||
value = ci.make_int(get_data_entry(post_data, 'value'))
|
||||
txid_hex, new_addr = ci.createUTXO(value)
|
||||
return bytes(json.dumps({'txid': txid_hex, 'address': new_addr}), 'UTF-8')
|
||||
|
||||
raise ValueError('Unknown command')
|
||||
|
||||
rv = swap_client.getWalletInfo(coin_type)
|
||||
|
@ -113,13 +127,7 @@ def js_offers(self, url_split, post_string, is_json, sent=False):
|
|||
offer_id = None
|
||||
if len(url_split) > 3:
|
||||
if url_split[3] == 'new':
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
form_data = json.loads(post_string)
|
||||
form_data['is_json'] = True
|
||||
else:
|
||||
form_data = urllib.parse.parse_qs(post_string)
|
||||
form_data = getFormData(post_string, is_json)
|
||||
offer_id = postNewOffer(swap_client, form_data)
|
||||
rv = {'offer_id': offer_id.hex()}
|
||||
return bytes(json.dumps(rv), 'UTF-8')
|
||||
|
@ -138,11 +146,7 @@ def js_offers(self, url_split, post_string, is_json, sent=False):
|
|||
filters['offer_id'] = offer_id
|
||||
|
||||
if post_string != '':
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
filters['coin_from'] = setCoinFilter(post_data, 'coin_from')
|
||||
filters['coin_to'] = setCoinFilter(post_data, 'coin_to')
|
||||
|
||||
|
@ -191,13 +195,7 @@ def js_bids(self, url_split, post_string, is_json):
|
|||
swap_client.checkSystemStatus()
|
||||
if len(url_split) > 3:
|
||||
if url_split[3] == 'new':
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
offer_id = bytes.fromhex(get_data_entry(post_data, 'offer_id'))
|
||||
assert (len(offer_id) == 28)
|
||||
|
@ -246,11 +244,7 @@ def js_bids(self, url_split, post_string, is_json):
|
|||
|
||||
show_txns = False
|
||||
if post_string != '':
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
if have_data_entry(post_data, 'accept'):
|
||||
swap_client.acceptBid(bid_id)
|
||||
elif have_data_entry(post_data, 'debugind'):
|
||||
|
@ -314,13 +308,7 @@ def js_smsgaddresses(self, url_split, post_string, is_json):
|
|||
swap_client = self.server.swap_client
|
||||
swap_client.checkSystemStatus()
|
||||
if len(url_split) > 3:
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
if url_split[3] == 'new':
|
||||
addressnote = get_data_entry_or(post_data, 'addressnote', '')
|
||||
new_addr, pubkey = swap_client.newSMSGAddress(addressnote=addressnote)
|
||||
|
@ -341,13 +329,7 @@ def js_smsgaddresses(self, url_split, post_string, is_json):
|
|||
|
||||
|
||||
def js_rates(self, url_split, post_string, is_json):
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
sc = self.server.swap_client
|
||||
coin_from = get_data_entry(post_data, 'coin_from')
|
||||
|
@ -365,13 +347,7 @@ def js_rates_list(self, url_split, query_string, is_json):
|
|||
|
||||
|
||||
def js_rate(self, url_split, post_string, is_json):
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
sc = self.server.swap_client
|
||||
coin_from = getCoinType(get_data_entry(post_data, 'coin_from'))
|
||||
|
@ -447,13 +423,7 @@ def js_vacuumdb(self, url_split, post_string, is_json):
|
|||
def js_getcoinseed(self, url_split, post_string, is_json):
|
||||
swap_client = self.server.swap_client
|
||||
swap_client.checkSystemStatus()
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
||||
if coin in (Coins.PART, Coins.PART_ANON, Coins.PART_BLIND):
|
||||
|
@ -471,13 +441,7 @@ def js_setpassword(self, url_split, post_string, is_json):
|
|||
# Only works with currently enabled coins
|
||||
# Will fail if any coin does not unlock on the old password
|
||||
swap_client = self.server.swap_client
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
old_password = get_data_entry(post_data, 'oldpassword')
|
||||
new_password = get_data_entry(post_data, 'newpassword')
|
||||
|
@ -497,13 +461,7 @@ def js_setpassword(self, url_split, post_string, is_json):
|
|||
|
||||
def js_unlock(self, url_split, post_string, is_json):
|
||||
swap_client = self.server.swap_client
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
password = get_data_entry(post_data, 'password')
|
||||
|
||||
|
@ -520,13 +478,7 @@ def js_unlock(self, url_split, post_string, is_json):
|
|||
|
||||
def js_lock(self, url_split, post_string, is_json):
|
||||
swap_client = self.server.swap_client
|
||||
if post_string == '':
|
||||
raise ValueError('No post data')
|
||||
if is_json:
|
||||
post_data = json.loads(post_string)
|
||||
post_data['is_json'] = True
|
||||
else:
|
||||
post_data = urllib.parse.parse_qs(post_string)
|
||||
post_data = getFormData(post_string, is_json)
|
||||
|
||||
if have_data_entry(post_data, 'coin'):
|
||||
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
||||
|
|
|
@ -335,7 +335,7 @@
|
|||
</div>
|
||||
<div class="w-full md:w-auto p-1.5">
|
||||
<button name="edit_bid_submit" value="Submit" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-coolGray-500 hover:text-coolGray-600 border border-coolGray-200 hover:border-coolGray-300 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Submit Edit Bid </button>
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Submit Edit </button>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if data.show_bidder_seq_diagram %}
|
||||
|
@ -379,7 +379,7 @@
|
|||
{% endif %}
|
||||
<div class="w-full md:w-auto p-1.5">
|
||||
<button name="edit_bid" type="submit" value="Edit Bid" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-coolGray-500 hover:text-coolGray-600 border border-coolGray-200 hover:border-coolGray-300 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Edit bit </button>
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Edit bid </button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if data.was_received == 'True' %}
|
||||
|
|
|
@ -493,7 +493,7 @@
|
|||
</div>
|
||||
<div class="w-full md:w-auto p-1.5">
|
||||
<button name="edit_bid_submit" value="Submit" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-coolGray-500 hover:text-coolGray-600 border border-coolGray-200 hover:border-coolGray-300 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Submit Edit Bid </button>
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Submit Edit </button>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if data.show_bidder_seq_diagram %}
|
||||
|
@ -537,7 +537,7 @@
|
|||
{% endif %}
|
||||
<div class="w-full md:w-auto p-1.5">
|
||||
<button name="edit_bid" type="submit" value="Edit Bid" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-coolGray-500 hover:text-coolGray-600 border border-coolGray-200 hover:border-coolGray-300 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Edit bit </button>
|
||||
<svg class="text-gray-500 w-5 h-5 mr-2" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><g stroke-linecap="round" stroke-width="2" fill="none" stroke="#556987" stroke-linejoin="round" ><line x1="2" y1="23" x2="22" y2="23" stroke="#556987"></line> <line data-cap="butt" x1="13" y1="5" x2="17" y2="9"></line> <polygon points="8 18 3 19 4 14 16 2 20 6 8 18"></polygon></g></svg> Edit bid </button>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if data.was_received == 'True' %}
|
||||
|
|
|
@ -56,7 +56,6 @@ from tests.basicswap.common import (
|
|||
wait_for_bid_tx_state,
|
||||
wait_for_in_progress,
|
||||
read_json_api,
|
||||
post_json_req,
|
||||
TEST_HTTP_HOST,
|
||||
TEST_HTTP_PORT,
|
||||
BASE_PORT,
|
||||
|
@ -247,6 +246,7 @@ def make_part_cli_rpc_func(node_id):
|
|||
|
||||
|
||||
class Test(unittest.TestCase):
|
||||
test_coin_from = Coins.DASH
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
@ -273,7 +273,10 @@ class Test(unittest.TestCase):
|
|||
|
||||
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
||||
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
||||
try:
|
||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat -legacy create', 'bitcoin-wallet')
|
||||
except Exception:
|
||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat create', 'bitcoin-wallet')
|
||||
cls.daemons.append(startDaemon(btc_data_dir, cfg.BITCOIN_BINDIR, cfg.BITCOIND))
|
||||
logging.info('Started %s %d', cfg.BITCOIND, cls.daemons[-1].pid)
|
||||
cls.daemons.append(startDaemon(os.path.join(cfg.TEST_DATADIRS, str(DASH_NODE)), cfg.DASH_BINDIR, cfg.DASHD))
|
||||
|
@ -282,7 +285,10 @@ class Test(unittest.TestCase):
|
|||
for i in range(NUM_NODES):
|
||||
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
||||
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
||||
try:
|
||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat -legacy create', 'particl-wallet')
|
||||
except Exception:
|
||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat create', 'particl-wallet')
|
||||
cls.daemons.append(startDaemon(data_dir, cfg.PARTICL_BINDIR, cfg.PARTICLD))
|
||||
logging.info('Started %s %d', cfg.PARTICLD, cls.daemons[-1].pid)
|
||||
|
||||
|
@ -334,7 +340,7 @@ class Test(unittest.TestCase):
|
|||
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||
|
||||
ro = btcRpc('getdeploymentinfo')
|
||||
ro = btcRpc('getblockchaininfo')
|
||||
checkForks(ro)
|
||||
|
||||
ro = dashRpc('getwalletinfo')
|
||||
|
@ -513,19 +519,27 @@ class Test(unittest.TestCase):
|
|||
swap_clients[0].getChainClientSettings(Coins.DASH)['override_feerate'] = 10.0
|
||||
wait_for_bid(delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||
|
||||
def test_08_withdrawal(self):
|
||||
logging.info('---------- Test DASH withdrawals')
|
||||
def test_08_wallet(self):
|
||||
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||
|
||||
logging.info('Test withdrawal')
|
||||
addr = dashRpc('getnewaddress \"Withdrawal test\"')
|
||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
||||
assert (float(wallets['DASH']['balance']) > 100)
|
||||
assert (float(wallets[self.test_coin_from.name]['balance']) > 100)
|
||||
|
||||
post_json = {
|
||||
'value': 100,
|
||||
'address': addr,
|
||||
'subfee': False,
|
||||
}
|
||||
json_rv = json.loads(post_json_req('http://127.0.0.1:{}/json/wallets/dash/withdraw'.format(TEST_HTTP_PORT + 0), post_json))
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/withdraw'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
logging.info('Test createutxo')
|
||||
post_json = {
|
||||
'value': 10,
|
||||
}
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/createutxo'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
def test_09_initialise_wallet(self):
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
import os
|
||||
import json
|
||||
import random
|
||||
import logging
|
||||
import unittest
|
||||
|
@ -35,7 +34,6 @@ from tests.basicswap.common import (
|
|||
wait_for_bid,
|
||||
make_rpc_func,
|
||||
read_json_api,
|
||||
post_json_req,
|
||||
TEST_HTTP_PORT,
|
||||
wait_for_offer,
|
||||
wait_for_in_progress,
|
||||
|
@ -105,9 +103,9 @@ def prepareDataDir(datadir, node_id, conf_file, dir_prefix, base_p2p_port, base_
|
|||
|
||||
class Test(BaseTest):
|
||||
__test__ = True
|
||||
test_coin_from = Coins.FIRO
|
||||
firo_daemons = []
|
||||
firo_addr = None
|
||||
test_coin_from = Coins.FIRO
|
||||
start_ltc_nodes = False
|
||||
start_xmr_nodes = False
|
||||
|
||||
|
@ -397,9 +395,10 @@ class Test(BaseTest):
|
|||
swap_clients[0].getChainClientSettings(Coins.FIRO)['override_feerate'] = 10.0
|
||||
wait_for_bid(test_delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||
|
||||
def test_08_withdrawal(self):
|
||||
logging.info('---------- Test {} withdrawals'.format(self.test_coin_from.name))
|
||||
def test_08_wallet(self):
|
||||
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||
|
||||
logging.info('Test withdrawal')
|
||||
addr = self.callnoderpc('getnewaddress', ['Withdrawal test', ])
|
||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
||||
assert (float(wallets[self.test_coin_from.name]['balance']) > 100)
|
||||
|
@ -409,7 +408,14 @@ class Test(BaseTest):
|
|||
'address': addr,
|
||||
'subfee': False,
|
||||
}
|
||||
json_rv = json.loads(post_json_req('http://127.0.0.1:{}/json/wallets/{}/withdraw'.format(TEST_HTTP_PORT + 0, self.test_coin_from.name.lower()), post_json))
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/withdraw'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
logging.info('Test createutxo')
|
||||
post_json = {
|
||||
'value': 10,
|
||||
}
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/createutxo'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
def test_101_full_swap(self):
|
||||
|
|
|
@ -332,7 +332,7 @@ class Test(unittest.TestCase):
|
|||
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||
|
||||
ro = btcRpc('getdeploymentinfo')
|
||||
ro = btcRpc('getblockchaininfo')
|
||||
checkForks(ro)
|
||||
|
||||
ro = nmcRpc('getwalletinfo')
|
||||
|
|
|
@ -55,7 +55,6 @@ from tests.basicswap.common import (
|
|||
wait_for_bid_tx_state,
|
||||
wait_for_in_progress,
|
||||
read_json_api,
|
||||
post_json_req,
|
||||
TEST_HTTP_HOST,
|
||||
TEST_HTTP_PORT,
|
||||
BASE_PORT,
|
||||
|
@ -252,6 +251,7 @@ def make_part_cli_rpc_func(node_id):
|
|||
|
||||
|
||||
class Test(unittest.TestCase):
|
||||
test_coin_from = Coins.PIVX
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
@ -285,7 +285,10 @@ class Test(unittest.TestCase):
|
|||
|
||||
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
||||
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
||||
try:
|
||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat -legacy create', 'bitcoin-wallet')
|
||||
except Exception:
|
||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat create', 'bitcoin-wallet')
|
||||
cls.daemons.append(startDaemon(btc_data_dir, cfg.BITCOIN_BINDIR, cfg.BITCOIND))
|
||||
logging.info('Started %s %d', cfg.BITCOIND, cls.daemons[-1].pid)
|
||||
cls.daemons.append(startDaemon(os.path.join(cfg.TEST_DATADIRS, str(PIVX_NODE)), cfg.PIVX_BINDIR, cfg.PIVXD))
|
||||
|
@ -294,7 +297,10 @@ class Test(unittest.TestCase):
|
|||
for i in range(NUM_NODES):
|
||||
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
||||
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
||||
try:
|
||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat -legacy create', 'particl-wallet')
|
||||
except Exception:
|
||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat create', 'particl-wallet')
|
||||
cls.daemons.append(startDaemon(data_dir, cfg.PARTICL_BINDIR, cfg.PARTICLD))
|
||||
logging.info('Started %s %d', cfg.PARTICLD, cls.daemons[-1].pid)
|
||||
|
||||
|
@ -346,7 +352,7 @@ class Test(unittest.TestCase):
|
|||
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||
|
||||
ro = btcRpc('getdeploymentinfo')
|
||||
ro = btcRpc('getblockchaininfo')
|
||||
checkForks(ro)
|
||||
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
@ -522,19 +528,27 @@ class Test(unittest.TestCase):
|
|||
swap_clients[0].getChainClientSettings(Coins.PIVX)['override_feerate'] = 10.0
|
||||
wait_for_bid(delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||
|
||||
def test_08_withdrawal(self):
|
||||
logging.info('---------- Test PIVX withdrawals')
|
||||
def test_08_wallet(self):
|
||||
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||
|
||||
logging.info('Test withdrawal')
|
||||
addr = pivxRpc('getnewaddress \"Withdrawal test\"')
|
||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
||||
assert (float(wallets['PIVX']['balance']) > 100)
|
||||
assert (float(wallets[self.test_coin_from.name]['balance']) > 100)
|
||||
|
||||
post_json = {
|
||||
'value': 100,
|
||||
'address': addr,
|
||||
'subfee': False,
|
||||
}
|
||||
json_rv = json.loads(post_json_req('http://127.0.0.1:{}/json/wallets/pivx/withdraw'.format(TEST_HTTP_PORT + 0), post_json))
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/withdraw'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
logging.info('Test createutxo')
|
||||
post_json = {
|
||||
'value': 10,
|
||||
}
|
||||
json_rv = read_json_api(TEST_HTTP_PORT + 0, 'wallets/{}/createutxo'.format(self.test_coin_from.name.lower()), post_json)
|
||||
assert (len(json_rv['txid']) == 64)
|
||||
|
||||
def test_09_v3_tx(self):
|
||||
|
|
Loading…
Reference in a new issue