api: Add wallet/createutxo
This commit is contained in:
parent
59adf3368b
commit
b43d58afbf
@ -1,3 +1,3 @@
|
|||||||
name = "basicswap"
|
name = "basicswap"
|
||||||
|
|
||||||
__version__ = "0.11.48"
|
__version__ = "0.11.49"
|
||||||
|
@ -6035,6 +6035,8 @@ class BasicSwap(BaseApp):
|
|||||||
ci_to = self.ci(int(coin_to))
|
ci_to = self.ci(int(coin_to))
|
||||||
name_from = ci_from.chainparams()['name']
|
name_from = ci_from.chainparams()['name']
|
||||||
name_to = ci_to.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_from = ci_from.chainparams()['ticker']
|
||||||
ticker_to = ci_to.chainparams()['ticker']
|
ticker_to = ci_to.chainparams()['ticker']
|
||||||
headers = {'Connection': 'close'}
|
headers = {'Connection': 'close'}
|
||||||
@ -6044,23 +6046,42 @@ class BasicSwap(BaseApp):
|
|||||||
|
|
||||||
if rate_sources.get('coingecko.com', True):
|
if rate_sources.get('coingecko.com', True):
|
||||||
try:
|
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}')
|
self.log.debug(f'lookupRates: {url}')
|
||||||
start = time.time()
|
start = time.time()
|
||||||
req = urllib.request.Request(url, headers=headers)
|
req = urllib.request.Request(url, headers=headers)
|
||||||
js = json.loads(urllib.request.urlopen(req, timeout=10).read())
|
js = json.loads(urllib.request.urlopen(req, timeout=10).read())
|
||||||
js['time_taken'] = time.time() - start
|
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)
|
js['rate_inferred'] = ci_to.format_amount(rate, conv_int=True, r=1)
|
||||||
rv['coingecko'] = js
|
rv['coingecko'] = js
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
rv['coingecko_error'] = str(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):
|
if rate_sources.get('bittrex.com', True):
|
||||||
bittrex_api_v3 = 'https://api.bittrex.com/v3'
|
bittrex_api_v3 = 'https://api.bittrex.com/v3'
|
||||||
try:
|
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:
|
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'
|
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||||
self.log.debug(f'lookupRates: {url}')
|
self.log.debug(f'lookupRates: {url}')
|
||||||
start = time.time()
|
start = time.time()
|
||||||
@ -6078,7 +6099,7 @@ class BasicSwap(BaseApp):
|
|||||||
js['to_btc'] = js['lastTradeRate']
|
js['to_btc'] = js['lastTradeRate']
|
||||||
rv['bittrex'] = js
|
rv['bittrex'] = js
|
||||||
elif ci_to.coin_type() == Coins.BTC:
|
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'
|
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||||
self.log.debug(f'lookupRates: {url}')
|
self.log.debug(f'lookupRates: {url}')
|
||||||
start = time.time()
|
start = time.time()
|
||||||
@ -6091,7 +6112,7 @@ class BasicSwap(BaseApp):
|
|||||||
js['to_btc'] = 1.0
|
js['to_btc'] = 1.0
|
||||||
rv['bittrex'] = js
|
rv['bittrex'] = js
|
||||||
else:
|
else:
|
||||||
pair = f'{ticker_from}-BTC'
|
pair = f'{exchange_ticker_from}-BTC'
|
||||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||||
self.log.debug(f'lookupRates: {url}')
|
self.log.debug(f'lookupRates: {url}')
|
||||||
start = time.time()
|
start = time.time()
|
||||||
@ -6100,7 +6121,7 @@ class BasicSwap(BaseApp):
|
|||||||
js_from['time_taken'] = time.time() - start
|
js_from['time_taken'] = time.time() - start
|
||||||
js_from['pair'] = pair
|
js_from['pair'] = pair
|
||||||
|
|
||||||
pair = f'{ticker_to}-BTC'
|
pair = f'{exchange_ticker_to}-BTC'
|
||||||
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
url = f'{bittrex_api_v3}/markets/{pair}/ticker'
|
||||||
self.log.debug(f'lookupRates: {url}')
|
self.log.debug(f'lookupRates: {url}')
|
||||||
start = time.time()
|
start = time.time()
|
||||||
@ -6124,6 +6145,8 @@ class BasicSwap(BaseApp):
|
|||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
rv['bittrex_error'] = str(e)
|
rv['bittrex_error'] = str(e)
|
||||||
|
if self.debug:
|
||||||
|
self.log.error(traceback.format_exc())
|
||||||
|
|
||||||
if output_array:
|
if output_array:
|
||||||
|
|
||||||
|
@ -374,6 +374,12 @@ class CoinInterface:
|
|||||||
ticker = 'rt' + ticker
|
ticker = 'rt' + ticker
|
||||||
return 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):
|
def ticker_mainnet(self):
|
||||||
ticker = chainparams[self.coin_type()]['ticker']
|
ticker = chainparams[self.coin_type()]['ticker']
|
||||||
return ticker
|
return ticker
|
||||||
|
@ -39,3 +39,6 @@ class DASHInterface(BTCInterface):
|
|||||||
def withdrawCoin(self, value, addr_to, subfee):
|
def withdrawCoin(self, value, addr_to, subfee):
|
||||||
params = [addr_to, value, '', '', subfee]
|
params = [addr_to, value, '', '', subfee]
|
||||||
return self.rpc_callback('sendtoaddress', params)
|
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():
|
def coin_type():
|
||||||
return Coins.FIRO
|
return Coins.FIRO
|
||||||
|
|
||||||
|
def getExchangeName(self, exchange_name):
|
||||||
|
return 'zcoin'
|
||||||
|
|
||||||
def initialiseWallet(self, key):
|
def initialiseWallet(self, key):
|
||||||
# load with -hdseed= parameter
|
# load with -hdseed= parameter
|
||||||
pass
|
pass
|
||||||
@ -171,3 +174,6 @@ class FIROInterface(BTCInterface):
|
|||||||
|
|
||||||
def getWalletSeedID(self):
|
def getWalletSeedID(self):
|
||||||
return self.rpc_callback('getwalletinfo')['hdmasterkeyid']
|
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):
|
def withdrawCoin(self, value, addr_to, subfee):
|
||||||
params = [addr_to, value, '', '', subfee]
|
params = [addr_to, value, '', '', subfee]
|
||||||
return self.rpc_callback('sendtoaddress', params)
|
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
|
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):
|
def js_error(self, error_str):
|
||||||
error_str_json = json.dumps({'error': error_str})
|
error_str_json = json.dumps({'error': error_str})
|
||||||
return bytes(error_str_json, 'UTF-8')
|
return bytes(error_str_json, 'UTF-8')
|
||||||
|
|
||||||
|
|
||||||
def withdraw_coin(swap_client, coin_type, post_string, is_json):
|
def withdraw_coin(swap_client, coin_type, post_string, is_json):
|
||||||
if is_json:
|
post_data = getFormData(post_string, is_json)
|
||||||
post_data = json.loads(post_string)
|
|
||||||
post_data['is_json'] = True
|
|
||||||
else:
|
|
||||||
post_data = urllib.parse.parse_qs(post_string)
|
|
||||||
|
|
||||||
value = get_data_entry(post_data, 'value')
|
value = get_data_entry(post_data, 'value')
|
||||||
address = get_data_entry(post_data, 'address')
|
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')
|
return bytes(json.dumps(withdraw_coin(swap_client, coin_type, post_string, is_json)), 'UTF-8')
|
||||||
if cmd == 'nextdepositaddr':
|
if cmd == 'nextdepositaddr':
|
||||||
return bytes(json.dumps(swap_client.cacheNewAddressForCoin(coin_type)), 'UTF-8')
|
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')
|
raise ValueError('Unknown command')
|
||||||
|
|
||||||
rv = swap_client.getWalletInfo(coin_type)
|
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
|
offer_id = None
|
||||||
if len(url_split) > 3:
|
if len(url_split) > 3:
|
||||||
if url_split[3] == 'new':
|
if url_split[3] == 'new':
|
||||||
if post_string == '':
|
form_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
offer_id = postNewOffer(swap_client, form_data)
|
offer_id = postNewOffer(swap_client, form_data)
|
||||||
rv = {'offer_id': offer_id.hex()}
|
rv = {'offer_id': offer_id.hex()}
|
||||||
return bytes(json.dumps(rv), 'UTF-8')
|
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
|
filters['offer_id'] = offer_id
|
||||||
|
|
||||||
if post_string != '':
|
if post_string != '':
|
||||||
if is_json:
|
post_data = getFormData(post_string, is_json)
|
||||||
post_data = json.loads(post_string)
|
|
||||||
post_data['is_json'] = True
|
|
||||||
else:
|
|
||||||
post_data = urllib.parse.parse_qs(post_string)
|
|
||||||
filters['coin_from'] = setCoinFilter(post_data, 'coin_from')
|
filters['coin_from'] = setCoinFilter(post_data, 'coin_from')
|
||||||
filters['coin_to'] = setCoinFilter(post_data, 'coin_to')
|
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()
|
swap_client.checkSystemStatus()
|
||||||
if len(url_split) > 3:
|
if len(url_split) > 3:
|
||||||
if url_split[3] == 'new':
|
if url_split[3] == 'new':
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
offer_id = bytes.fromhex(get_data_entry(post_data, 'offer_id'))
|
offer_id = bytes.fromhex(get_data_entry(post_data, 'offer_id'))
|
||||||
assert (len(offer_id) == 28)
|
assert (len(offer_id) == 28)
|
||||||
@ -246,11 +244,7 @@ def js_bids(self, url_split, post_string, is_json):
|
|||||||
|
|
||||||
show_txns = False
|
show_txns = False
|
||||||
if post_string != '':
|
if post_string != '':
|
||||||
if is_json:
|
post_data = getFormData(post_string, is_json)
|
||||||
post_data = json.loads(post_string)
|
|
||||||
post_data['is_json'] = True
|
|
||||||
else:
|
|
||||||
post_data = urllib.parse.parse_qs(post_string)
|
|
||||||
if have_data_entry(post_data, 'accept'):
|
if have_data_entry(post_data, 'accept'):
|
||||||
swap_client.acceptBid(bid_id)
|
swap_client.acceptBid(bid_id)
|
||||||
elif have_data_entry(post_data, 'debugind'):
|
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 = self.server.swap_client
|
||||||
swap_client.checkSystemStatus()
|
swap_client.checkSystemStatus()
|
||||||
if len(url_split) > 3:
|
if len(url_split) > 3:
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
if url_split[3] == 'new':
|
if url_split[3] == 'new':
|
||||||
addressnote = get_data_entry_or(post_data, 'addressnote', '')
|
addressnote = get_data_entry_or(post_data, 'addressnote', '')
|
||||||
new_addr, pubkey = swap_client.newSMSGAddress(addressnote=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):
|
def js_rates(self, url_split, post_string, is_json):
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
sc = self.server.swap_client
|
sc = self.server.swap_client
|
||||||
coin_from = get_data_entry(post_data, 'coin_from')
|
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):
|
def js_rate(self, url_split, post_string, is_json):
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
sc = self.server.swap_client
|
sc = self.server.swap_client
|
||||||
coin_from = getCoinType(get_data_entry(post_data, 'coin_from'))
|
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):
|
def js_getcoinseed(self, url_split, post_string, is_json):
|
||||||
swap_client = self.server.swap_client
|
swap_client = self.server.swap_client
|
||||||
swap_client.checkSystemStatus()
|
swap_client.checkSystemStatus()
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
||||||
if coin in (Coins.PART, Coins.PART_ANON, Coins.PART_BLIND):
|
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
|
# Only works with currently enabled coins
|
||||||
# Will fail if any coin does not unlock on the old password
|
# Will fail if any coin does not unlock on the old password
|
||||||
swap_client = self.server.swap_client
|
swap_client = self.server.swap_client
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
old_password = get_data_entry(post_data, 'oldpassword')
|
old_password = get_data_entry(post_data, 'oldpassword')
|
||||||
new_password = get_data_entry(post_data, 'newpassword')
|
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):
|
def js_unlock(self, url_split, post_string, is_json):
|
||||||
swap_client = self.server.swap_client
|
swap_client = self.server.swap_client
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
password = get_data_entry(post_data, 'password')
|
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):
|
def js_lock(self, url_split, post_string, is_json):
|
||||||
swap_client = self.server.swap_client
|
swap_client = self.server.swap_client
|
||||||
if post_string == '':
|
post_data = getFormData(post_string, is_json)
|
||||||
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)
|
|
||||||
|
|
||||||
if have_data_entry(post_data, 'coin'):
|
if have_data_entry(post_data, 'coin'):
|
||||||
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
coin = getCoinType(get_data_entry(post_data, 'coin'))
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
</h2>
|
</h2>
|
||||||
<p class="font-semibold text-coolGray-200">Bid ID: {{ bid_id }}</p>
|
<p class="font-semibold text-coolGray-200">Bid ID: {{ bid_id }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full md:w-1/2 p-3 p-6 container flex flex-wrap items-center justify-end items-center mx-auto">
|
<div class="w-full md:w-1/2 p-3 p-6 container flex flex-wrap items-center justify-end items-center mx-auto">
|
||||||
{% if refresh %}
|
{% if refresh %}
|
||||||
<a id="refresh" href="/bid/{{ bid_id }}" class="flex flex-wrap justify-center px-5 py-4 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<a id="refresh" href="/bid/{{ bid_id }}" class="flex flex-wrap justify-center px-5 py-4 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 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">
|
<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">
|
||||||
@ -53,13 +53,13 @@
|
|||||||
<path fill="#ffffff" d="M12,3c1.989,0,3.873,0.65,5.43,1.833l-3.604,3.393l9.167,0.983L22.562,0l-3.655,3.442 C16.957,1.862,14.545,1,12,1C5.935,1,1,5.935,1,12h2C3,7.037,7.037,3,12,3z"></path>
|
<path fill="#ffffff" d="M12,3c1.989,0,3.873,0.65,5.43,1.833l-3.604,3.393l9.167,0.983L22.562,0l-3.655,3.442 C16.957,1.862,14.545,1,12,1C5.935,1,1,5.935,1,12h2C3,7.037,7.037,3,12,3z"></path>
|
||||||
<path data-color="color-2" d="M12,21c-1.989,0-3.873-0.65-5.43-1.833l3.604-3.393l-9.167-0.983L1.438,24l3.655-3.442 C7.043,22.138,9.455,23,12,23c6.065,0,11-4.935,11-11h-2C21,16.963,16.963,21,12,21z"></path>
|
<path data-color="color-2" d="M12,21c-1.989,0-3.873-0.65-5.43-1.833l3.604-3.393l-9.167-0.983L1.438,24l3.655-3.442 C7.043,22.138,9.455,23,12,23c6.065,0,11-4.935,11-11h-2C21,16.963,16.963,21,12,21z"></path>
|
||||||
</g>
|
</g>
|
||||||
</svg> <span>Refresh</span> </a>
|
</svg> <span>Refresh</span> </a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
{% include 'inc_messages.html' %}
|
{% include 'inc_messages.html' %}
|
||||||
<section class="bg-white">
|
<section class="bg-white">
|
||||||
<div class="pl-6 pr-6 pt-0 pb-0 mt-5 h-full overflow-hidden bg-white ">
|
<div class="pl-6 pr-6 pt-0 pb-0 mt-5 h-full overflow-hidden bg-white ">
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<th scope="col" class="py-3 px-6 w-1/3">Details</th>
|
<th scope="col" class="py-3 px-6 w-1/3">Details</th>
|
||||||
<th scope="col"></th>
|
<th scope="col"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% if data.was_sent == 'True' %}
|
{% if data.was_sent == 'True' %}
|
||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">Swap</td>
|
<td class="py-4 px-6 bold">Swap</td>
|
||||||
@ -196,7 +196,7 @@
|
|||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">Participate Conf</td>
|
<td class="py-4 px-6 bold">Participate Conf</td>
|
||||||
<td>{{ data.participate_conf }}</td>
|
<td>{{ data.participate_conf }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if data.show_txns %}
|
{% if data.show_txns %}
|
||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">Initiate Tx Refund</td>
|
<td class="py-4 px-6 bold">Initiate Tx Refund</td>
|
||||||
@ -213,8 +213,8 @@
|
|||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">Participate Tx Spend Tx</td>
|
<td class="py-4 px-6 bold">Participate Tx Spend Tx</td>
|
||||||
<td class="monospace">{{ data.participate_tx_spend }}</td>
|
<td class="monospace">{{ data.participate_tx_spend }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -232,7 +232,7 @@
|
|||||||
<th scope="col" class="py-3 px-6">Old States</th>
|
<th scope="col" class="py-3 px-6">Old States</th>
|
||||||
<th scope="col">Set at Time</th>
|
<th scope="col">Set at Time</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for s in old_states %}
|
{% for s in old_states %}
|
||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-3 px-6 w-1/3 bold"> {{ s[1] }}</td>
|
<td class="py-3 px-6 w-1/3 bold"> {{ s[1] }}</td>
|
||||||
@ -247,7 +247,7 @@
|
|||||||
<div>{{ s[0] | formatts }}</div>
|
<div>{{ s[0] | formatts }}</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -266,7 +266,7 @@
|
|||||||
<th scope="col" class="w-1/3 py-3 px-6 bold">Time</th>
|
<th scope="col" class="w-1/3 py-3 px-6 bold">Time</th>
|
||||||
<th scope="col">Events</th>
|
<th scope="col">Events</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for e in data.events %}
|
{% for e in data.events %}
|
||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td scope="row" class="flex items-center px-46 whitespace-nowrap">
|
<td scope="row" class="flex items-center px-46 whitespace-nowrap">
|
||||||
@ -283,13 +283,13 @@
|
|||||||
<td>{{ e.desc }}</td>
|
<td>{{ e.desc }}</td>
|
||||||
</tr> {% endfor %} </table>
|
</tr> {% endfor %} </table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form method="post">
|
<form method="post">
|
||||||
<div class="p-6 pt-10 bg-white bg-opacity-60 rounded-b-md">
|
<div class="p-6 pt-10 bg-white bg-opacity-60 rounded-b-md">
|
||||||
<div class="w-full md:w-0/12">
|
<div class="w-full md:w-0/12">
|
||||||
<div class="flex flex-wrap justify-end -m-1.5">
|
<div class="flex flex-wrap justify-end -m-1.5">
|
||||||
{% if edit_bid %}
|
{% if edit_bid %}
|
||||||
<table class="mt-1">
|
<table class="mt-1">
|
||||||
<tr>
|
<tr>
|
||||||
@ -302,11 +302,11 @@
|
|||||||
<select class="appearance-none bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" name="new_state">
|
<select class="appearance-none bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" name="new_state">
|
||||||
{% for s in data.bid_states %}
|
{% for s in data.bid_states %}
|
||||||
<option value="{{ s[0] }}" {% if data.bid_state_ind==s[0] %} selected{% endif %}>{{ s[1] }}</option>
|
<option value="{{ s[0] }}" {% if data.bid_state_ind==s[0] %} selected{% endif %}>{{ s[1] }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if data.debug_ui == true %}
|
{% if data.debug_ui == true %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="py-6 pr-2 bold">Debug Option:</td>
|
<td class="py-6 pr-2 bold">Debug Option:</td>
|
||||||
@ -317,17 +317,17 @@
|
|||||||
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<select class="appearance-none bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" name="debugind">
|
<select class="appearance-none bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" name="debugind">
|
||||||
<option{% if data.debug_ind=="-1" %} selected{% endif %} value="-1">None</option>
|
<option{% if data.debug_ind=="-1" %} selected{% endif %} value="-1">None</option>
|
||||||
{% for a in data.debug_options %}
|
{% for a in data.debug_options %}
|
||||||
<option{% if data.debug_ind==a[0] %} selected{% endif %} value="{{ a[0] }}">{{ a[1] }}</option>
|
<option{% if data.debug_ind==a[0] %} selected{% endif %} value="{{ a[0] }}">{{ a[1] }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</table>
|
</table>
|
||||||
<div class="w-full md:w-auto p-1.5 ml-2">
|
<div class="w-full md:w-auto p-1.5 ml-2">
|
||||||
<button name="edit_bid_cancel" value="Cancel" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="edit_bid_cancel" value="Cancel" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||||
@ -335,59 +335,59 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<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">
|
<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>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if data.show_bidder_seq_diagram %}
|
{% if data.show_bidder_seq_diagram %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_bidder_seq_diagram" type="submit" value="Hide Bidder Sequence Diagram" 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">
|
<button name="hide_bidder_seq_diagram" type="submit" value="Hide Bidder Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Bidder Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Bidder Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_bidder_seq_diagram" type="submit" value="Show Bidder Sequence Diagram" 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">
|
<button name="show_bidder_seq_diagram" type="submit" value="Show Bidder Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Bidder Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Bidder Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.show_offerer_seq_diagram %}
|
{% if data.show_offerer_seq_diagram %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_offerer_seq_diagram" type="submit" value="Hide Offerer Sequence Diagram" 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">
|
<button name="hide_offerer_seq_diagram" type="submit" value="Hide Offerer Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Offerer Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Offerer Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_offerer_seq_diagram" type="submit" value="Show Offerer Sequence Diagram" 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">
|
<button name="show_offerer_seq_diagram" type="submit" value="Show Offerer Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Offerer Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Offerer Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.can_abandon == true %}
|
{% if data.can_abandon == true %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="abandon_bid" type="submit" value="Abandon Bid" onclick="return confirmPopup();" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="abandon_bid" type="submit" value="Abandon Bid" onclick="return confirmPopup();" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 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="#ef5844" stroke-linejoin="round" ><line x1="16" y1="8" x2="8" y2="16" stroke="#ef5844"></line> <line x1="16" y1="16" x2="8" y2="8" stroke="#ef5844"></line> <circle cx="12" cy="12" r="11"></circle></g></svg> Abandon 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="#ef5844" stroke-linejoin="round" ><line x1="16" y1="8" x2="8" y2="16" stroke="#ef5844"></line> <line x1="16" y1="16" x2="8" y2="8" stroke="#ef5844"></line> <circle cx="12" cy="12" r="11"></circle></g></svg> Abandon Bid </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.show_txns %}
|
{% if data.show_txns %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_txns" type="submit" value="Hide Info" 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">
|
<button name="hide_txns" type="submit" value="Hide Info" 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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Hide info </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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Hide info </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_txns" type="submit" value="Show More Info" 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">
|
<button name="show_txns" type="submit" value="Show More Info" 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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Show More Info </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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Show More Info </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<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">
|
<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>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.was_received == 'True' %}
|
{% if data.was_received == 'True' %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="accept_bid" value="Accept Bid" type="submit" onclick='return confirmPopup("Accept");' class="flex flex-wrap justify-center w-full px-4 py-2.5 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="accept_bid" value="Accept Bid" type="submit" onclick='return confirmPopup("Accept");' class="flex flex-wrap justify-center w-full px-4 py-2.5 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 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="#ffffff" stroke-linejoin="round" ><polyline points=" 6,12 10,16 18,8 " stroke="#ffffff"></polyline> <circle cx="12" cy="12" r="11"></circle></g></svg> Accept 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="#ffffff" stroke-linejoin="round" ><polyline points=" 6,12 10,16 18,8 " stroke="#ffffff"></polyline> <circle cx="12" cy="12" r="11"></circle></g></svg> Accept Bid </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -434,7 +434,7 @@
|
|||||||
return confirm("Are you sure?");
|
return confirm("Are you sure?");
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
{% include 'footer.html' %}
|
{% include 'footer.html' %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -172,7 +172,7 @@
|
|||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">{{ data.ticker_from }} lock refund tx valid at</td>
|
<td class="py-4 px-6 bold">{{ data.ticker_from }} lock refund tx valid at</td>
|
||||||
<td>{{ data.coin_a_lock_refund_tx_est_final | formatts }}</td>
|
<td>{{ data.coin_a_lock_refund_tx_est_final | formatts }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if data.coin_a_lock_refund_swipe_tx_est_final != 'None' %}
|
{% if data.coin_a_lock_refund_swipe_tx_est_final != 'None' %}
|
||||||
<tr class="bg-white border-t hover:bg-gray-50">
|
<tr class="bg-white border-t hover:bg-gray-50">
|
||||||
<td class="py-4 px-6 bold">{{ data.ticker_from }} lock refund tx swipeable at</td>
|
<td class="py-4 px-6 bold">{{ data.ticker_from }} lock refund tx swipeable at</td>
|
||||||
@ -377,7 +377,7 @@
|
|||||||
<textarea rows="15" class="outline-none block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 monospace" id="transfers_view" readonly>{{ data.lock_transfers }}</textarea>
|
<textarea rows="15" class="outline-none block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 monospace" id="transfers_view" readonly>{{ data.lock_transfers }}</textarea>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% if data.show_bidder_seq_diagram %}
|
{% if data.show_bidder_seq_diagram %}
|
||||||
@ -464,7 +464,7 @@
|
|||||||
{% if data.debug_ui == true %}
|
{% if data.debug_ui == true %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="py-6 pr-2 bold"">Debug Option</td>
|
<td class="py-6 pr-2 bold"">Debug Option</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg class="absolute right-4 top-1/2 transform -translate-y-1/2" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
<path d="M11.3333 6.1133C11.2084 5.98913 11.0395 5.91943 10.8633 5.91943C10.6872 5.91943 10.5182 5.98913 10.3933 6.1133L8.00001 8.47329L5.64001 6.1133C5.5151 5.98913 5.34613 5.91943 5.17001 5.91943C4.99388 5.91943 4.82491 5.98913 4.70001 6.1133C4.63752 6.17527 4.58792 6.249 4.55408 6.33024C4.52023 6.41148 4.50281 6.49862 4.50281 6.58663C4.50281 6.67464 4.52023 6.76177 4.55408 6.84301C4.58792 6.92425 4.63752 6.99799 4.70001 7.05996L7.52667 9.88663C7.58865 9.94911 7.66238 9.99871 7.74362 10.0326C7.82486 10.0664 7.912 10.0838 8.00001 10.0838C8.08801 10.0838 8.17515 10.0664 8.25639 10.0326C8.33763 9.99871 8.41136 9.94911 8.47334 9.88663L11.3333 7.05996C11.3958 6.99799 11.4454 6.92425 11.4793 6.84301C11.5131 6.76177 11.5305 6.67464 11.5305 6.58663C11.5305 6.49862 11.5131 6.41148 11.4793 6.33024C11.4454 6.249 11.3958 6.17527 11.3333 6.1133Z" fill="#8896AB"></path>
|
||||||
@ -485,7 +485,7 @@
|
|||||||
<input class="appearance-none pr-15 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" type="text" id="kbs_other" name="kbs_other">
|
<input class="appearance-none pr-15 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg outline-none focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" type="text" id="kbs_other" name="kbs_other">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</table>
|
</table>
|
||||||
<div class="w-full md:w-auto p-1.5 ml-2">
|
<div class="w-full md:w-auto p-1.5 ml-2">
|
||||||
<button name="edit_bid_cancel" value="Cancel" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="edit_bid_cancel" value="Cancel" type="submit" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
||||||
@ -493,59 +493,59 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<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">
|
<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>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if data.show_bidder_seq_diagram %}
|
{% if data.show_bidder_seq_diagram %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_bidder_seq_diagram" type="submit" value="Hide Bidder Sequence Diagram" 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">
|
<button name="hide_bidder_seq_diagram" type="submit" value="Hide Bidder Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Bidder Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Bidder Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_bidder_seq_diagram" type="submit" value="Show Bidder Sequence Diagram" 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">
|
<button name="show_bidder_seq_diagram" type="submit" value="Show Bidder Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Bidder Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Bidder Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.show_offerer_seq_diagram %}
|
{% if data.show_offerer_seq_diagram %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_offerer_seq_diagram" type="submit" value="Hide Offerer Sequence Diagram" 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">
|
<button name="hide_offerer_seq_diagram" type="submit" value="Hide Offerer Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Offerer Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Hide Offerer Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_offerer_seq_diagram" type="submit" value="Show Offerer Sequence Diagram" 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">
|
<button name="show_offerer_seq_diagram" type="submit" value="Show Offerer Sequence Diagram" 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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Offerer Sequence Diagram </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" ><rect x="2" y="2" width="8" height="4"></rect><rect x="2" y="18" width="8" height="4"></rect><line x1="6" y1="9" x2="6" y2="15"></line><polyline points="13 4 17 4 17 6"></polyline><polyline points="13 20 17 20 17 18"></polyline><polygon points="12 12 17 9 22 12 17 15 12 12" stroke="#556987"></polygon></g></svg> Show Offerer Sequence Diagram </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.can_abandon == true %}
|
{% if data.can_abandon == true %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="abandon_bid" type="submit" value="Abandon Bid" onclick="return confirmPopup();" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 bg-white rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="abandon_bid" type="submit" value="Abandon Bid" onclick="return confirmPopup();" class="flex flex-wrap justify-center w-full px-4 py-2.5 font-medium text-sm text-red-500 hover:text-red-600 border border-red-400 hover:border-red-500 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="#ef5844" stroke-linejoin="round" ><line x1="16" y1="8" x2="8" y2="16" stroke="#ef5844"></line> <line x1="16" y1="16" x2="8" y2="8" stroke="#ef5844"></line> <circle cx="12" cy="12" r="11"></circle></g></svg> Abandon 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="#ef5844" stroke-linejoin="round" ><line x1="16" y1="8" x2="8" y2="16" stroke="#ef5844"></line> <line x1="16" y1="16" x2="8" y2="8" stroke="#ef5844"></line> <circle cx="12" cy="12" r="11"></circle></g></svg> Abandon Bid </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.show_txns %}
|
{% if data.show_txns %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="hide_txns" type="submit" value="Hide Info" 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">
|
<button name="hide_txns" type="submit" value="Hide Info" 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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Hide info </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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Hide info </button>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="show_txns" type="submit" value="Show More Info" 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">
|
<button name="show_txns" type="submit" value="Show More Info" 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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Show More Info </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" ><circle cx="12" cy="12" r="11"></circle><line x1="12" y1="11" x2="12" y2="17" stroke="#556987"></line><circle cx="12" cy="7" r="1" stroke="none" fill="#556987"></circle></g></svg> Show More Info </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<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">
|
<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>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if data.was_received == 'True' %}
|
{% if data.was_received == 'True' %}
|
||||||
<div class="w-full md:w-auto p-1.5">
|
<div class="w-full md:w-auto p-1.5">
|
||||||
<button name="accept_bid" value="Accept Bid" type="submit" onclick='return confirmPopup("Accept");' class="flex flex-wrap justify-center w-full px-4 py-2.5 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 rounded-md shadow-button focus:ring-0 focus:outline-none">
|
<button name="accept_bid" value="Accept Bid" type="submit" onclick='return confirmPopup("Accept");' class="flex flex-wrap justify-center w-full px-4 py-2.5 bg-blue-500 hover:bg-blue-600 font-medium text-sm text-white border border-blue-500 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="#ffffff" stroke-linejoin="round" ><polyline points=" 6,12 10,16 18,8 " stroke="#ffffff"></polyline> <circle cx="12" cy="12" r="11"></circle></g></svg> Accept 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="#ffffff" stroke-linejoin="round" ><polyline points=" 6,12 10,16 18,8 " stroke="#ffffff"></polyline> <circle cx="12" cy="12" r="11"></circle></g></svg> Accept Bid </button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -562,4 +562,4 @@
|
|||||||
</div>
|
</div>
|
||||||
{% include 'footer.html' %}
|
{% include 'footer.html' %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -56,7 +56,6 @@ from tests.basicswap.common import (
|
|||||||
wait_for_bid_tx_state,
|
wait_for_bid_tx_state,
|
||||||
wait_for_in_progress,
|
wait_for_in_progress,
|
||||||
read_json_api,
|
read_json_api,
|
||||||
post_json_req,
|
|
||||||
TEST_HTTP_HOST,
|
TEST_HTTP_HOST,
|
||||||
TEST_HTTP_PORT,
|
TEST_HTTP_PORT,
|
||||||
BASE_PORT,
|
BASE_PORT,
|
||||||
@ -247,6 +246,7 @@ def make_part_cli_rpc_func(node_id):
|
|||||||
|
|
||||||
|
|
||||||
class Test(unittest.TestCase):
|
class Test(unittest.TestCase):
|
||||||
|
test_coin_from = Coins.DASH
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
@ -273,7 +273,10 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
||||||
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
||||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat -legacy create', '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))
|
cls.daemons.append(startDaemon(btc_data_dir, cfg.BITCOIN_BINDIR, cfg.BITCOIND))
|
||||||
logging.info('Started %s %d', cfg.BITCOIND, cls.daemons[-1].pid)
|
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))
|
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):
|
for i in range(NUM_NODES):
|
||||||
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
||||||
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
||||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat -legacy create', '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))
|
cls.daemons.append(startDaemon(data_dir, cfg.PARTICL_BINDIR, cfg.PARTICLD))
|
||||||
logging.info('Started %s %d', cfg.PARTICLD, cls.daemons[-1].pid)
|
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)
|
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||||
|
|
||||||
ro = btcRpc('getdeploymentinfo')
|
ro = btcRpc('getblockchaininfo')
|
||||||
checkForks(ro)
|
checkForks(ro)
|
||||||
|
|
||||||
ro = dashRpc('getwalletinfo')
|
ro = dashRpc('getwalletinfo')
|
||||||
@ -513,19 +519,27 @@ class Test(unittest.TestCase):
|
|||||||
swap_clients[0].getChainClientSettings(Coins.DASH)['override_feerate'] = 10.0
|
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)
|
wait_for_bid(delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||||
|
|
||||||
def test_08_withdrawal(self):
|
def test_08_wallet(self):
|
||||||
logging.info('---------- Test DASH withdrawals')
|
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||||
|
|
||||||
|
logging.info('Test withdrawal')
|
||||||
addr = dashRpc('getnewaddress \"Withdrawal test\"')
|
addr = dashRpc('getnewaddress \"Withdrawal test\"')
|
||||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
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 = {
|
post_json = {
|
||||||
'value': 100,
|
'value': 100,
|
||||||
'address': addr,
|
'address': addr,
|
||||||
'subfee': False,
|
'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)
|
assert (len(json_rv['txid']) == 64)
|
||||||
|
|
||||||
def test_09_initialise_wallet(self):
|
def test_09_initialise_wallet(self):
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import json
|
|
||||||
import random
|
import random
|
||||||
import logging
|
import logging
|
||||||
import unittest
|
import unittest
|
||||||
@ -35,7 +34,6 @@ from tests.basicswap.common import (
|
|||||||
wait_for_bid,
|
wait_for_bid,
|
||||||
make_rpc_func,
|
make_rpc_func,
|
||||||
read_json_api,
|
read_json_api,
|
||||||
post_json_req,
|
|
||||||
TEST_HTTP_PORT,
|
TEST_HTTP_PORT,
|
||||||
wait_for_offer,
|
wait_for_offer,
|
||||||
wait_for_in_progress,
|
wait_for_in_progress,
|
||||||
@ -105,9 +103,9 @@ def prepareDataDir(datadir, node_id, conf_file, dir_prefix, base_p2p_port, base_
|
|||||||
|
|
||||||
class Test(BaseTest):
|
class Test(BaseTest):
|
||||||
__test__ = True
|
__test__ = True
|
||||||
|
test_coin_from = Coins.FIRO
|
||||||
firo_daemons = []
|
firo_daemons = []
|
||||||
firo_addr = None
|
firo_addr = None
|
||||||
test_coin_from = Coins.FIRO
|
|
||||||
start_ltc_nodes = False
|
start_ltc_nodes = False
|
||||||
start_xmr_nodes = False
|
start_xmr_nodes = False
|
||||||
|
|
||||||
@ -397,9 +395,10 @@ class Test(BaseTest):
|
|||||||
swap_clients[0].getChainClientSettings(Coins.FIRO)['override_feerate'] = 10.0
|
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)
|
wait_for_bid(test_delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||||
|
|
||||||
def test_08_withdrawal(self):
|
def test_08_wallet(self):
|
||||||
logging.info('---------- Test {} withdrawals'.format(self.test_coin_from.name))
|
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||||
|
|
||||||
|
logging.info('Test withdrawal')
|
||||||
addr = self.callnoderpc('getnewaddress', ['Withdrawal test', ])
|
addr = self.callnoderpc('getnewaddress', ['Withdrawal test', ])
|
||||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
||||||
assert (float(wallets[self.test_coin_from.name]['balance']) > 100)
|
assert (float(wallets[self.test_coin_from.name]['balance']) > 100)
|
||||||
@ -409,7 +408,14 @@ class Test(BaseTest):
|
|||||||
'address': addr,
|
'address': addr,
|
||||||
'subfee': False,
|
'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)
|
assert (len(json_rv['txid']) == 64)
|
||||||
|
|
||||||
def test_101_full_swap(self):
|
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)
|
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||||
|
|
||||||
ro = btcRpc('getdeploymentinfo')
|
ro = btcRpc('getblockchaininfo')
|
||||||
checkForks(ro)
|
checkForks(ro)
|
||||||
|
|
||||||
ro = nmcRpc('getwalletinfo')
|
ro = nmcRpc('getwalletinfo')
|
||||||
|
@ -55,7 +55,6 @@ from tests.basicswap.common import (
|
|||||||
wait_for_bid_tx_state,
|
wait_for_bid_tx_state,
|
||||||
wait_for_in_progress,
|
wait_for_in_progress,
|
||||||
read_json_api,
|
read_json_api,
|
||||||
post_json_req,
|
|
||||||
TEST_HTTP_HOST,
|
TEST_HTTP_HOST,
|
||||||
TEST_HTTP_PORT,
|
TEST_HTTP_PORT,
|
||||||
BASE_PORT,
|
BASE_PORT,
|
||||||
@ -252,6 +251,7 @@ def make_part_cli_rpc_func(node_id):
|
|||||||
|
|
||||||
|
|
||||||
class Test(unittest.TestCase):
|
class Test(unittest.TestCase):
|
||||||
|
test_coin_from = Coins.PIVX
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
@ -285,7 +285,10 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
btc_data_dir = os.path.join(cfg.TEST_DATADIRS, str(BTC_NODE))
|
||||||
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
if os.path.exists(os.path.join(cfg.BITCOIN_BINDIR, 'bitcoin-wallet')):
|
||||||
callrpc_cli(cfg.BITCOIN_BINDIR, btc_data_dir, 'regtest', '-wallet=wallet.dat -legacy create', '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))
|
cls.daemons.append(startDaemon(btc_data_dir, cfg.BITCOIN_BINDIR, cfg.BITCOIND))
|
||||||
logging.info('Started %s %d', cfg.BITCOIND, cls.daemons[-1].pid)
|
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))
|
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):
|
for i in range(NUM_NODES):
|
||||||
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
data_dir = os.path.join(cfg.TEST_DATADIRS, str(i))
|
||||||
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
if os.path.exists(os.path.join(cfg.PARTICL_BINDIR, 'particl-wallet')):
|
||||||
callrpc_cli(cfg.PARTICL_BINDIR, data_dir, 'regtest', '-wallet=wallet.dat -legacy create', '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))
|
cls.daemons.append(startDaemon(data_dir, cfg.PARTICL_BINDIR, cfg.PARTICLD))
|
||||||
logging.info('Started %s %d', cfg.PARTICLD, cls.daemons[-1].pid)
|
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)
|
logging.info('Mining %d Bitcoin blocks to %s', num_blocks, cls.btc_addr)
|
||||||
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
btcRpc('generatetoaddress {} {}'.format(num_blocks, cls.btc_addr))
|
||||||
|
|
||||||
ro = btcRpc('getdeploymentinfo')
|
ro = btcRpc('getblockchaininfo')
|
||||||
checkForks(ro)
|
checkForks(ro)
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, signal_handler)
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
@ -522,19 +528,27 @@ class Test(unittest.TestCase):
|
|||||||
swap_clients[0].getChainClientSettings(Coins.PIVX)['override_feerate'] = 10.0
|
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)
|
wait_for_bid(delay_event, swap_clients[0], bid_id, BidStates.BID_ERROR, wait_for=60)
|
||||||
|
|
||||||
def test_08_withdrawal(self):
|
def test_08_wallet(self):
|
||||||
logging.info('---------- Test PIVX withdrawals')
|
logging.info('---------- Test {} wallet'.format(self.test_coin_from.name))
|
||||||
|
|
||||||
|
logging.info('Test withdrawal')
|
||||||
addr = pivxRpc('getnewaddress \"Withdrawal test\"')
|
addr = pivxRpc('getnewaddress \"Withdrawal test\"')
|
||||||
wallets = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
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 = {
|
post_json = {
|
||||||
'value': 100,
|
'value': 100,
|
||||||
'address': addr,
|
'address': addr,
|
||||||
'subfee': False,
|
'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)
|
assert (len(json_rv['txid']) == 64)
|
||||||
|
|
||||||
def test_09_v3_tx(self):
|
def test_09_v3_tx(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user