mmgen-txbump: support --gas option
Testing:
$ test/cmdtest.py --coin=eth ethbump
This commit is contained in:
parent
a11eb44d85
commit
bcb6170195
4 changed files with 97 additions and 9 deletions
|
|
@ -1 +1 @@
|
|||
15.1.dev34
|
||||
15.1.dev35
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ opts_data = {
|
|||
-- -f, --fee= f Transaction fee, as a decimal {cu} amount or as
|
||||
+ {fu} (an integer followed by {fl}).
|
||||
+ See FEE SPECIFICATION below.
|
||||
e- -g, --gas=N Set the gas limit (see GAS LIMIT below)
|
||||
-- -H, --hidden-incog-input-params=f,o Read hidden incognito data from file
|
||||
+ 'f' at offset 'o' (comma-separated)
|
||||
-- -i, --in-fmt= f Input is from wallet format 'f' (see FMT CODES below)
|
||||
|
|
@ -106,7 +107,7 @@ Internet must be reachable either directly or via the SOCKS5 proxy specified
|
|||
with the --proxy option. To improve privacy, it’s recommended to proxy
|
||||
requests to the quote server via Tor or some other anonymity network.
|
||||
|
||||
{e}
|
||||
{g}{F}
|
||||
|
||||
{s}
|
||||
Seed source files must have the canonical extensions listed in the 'FileExt'
|
||||
|
|
@ -130,7 +131,8 @@ column below:
|
|||
dsl = help_notes('dfl_seed_len'),
|
||||
cu = proto.coin),
|
||||
'notes': lambda help_mod, help_notes, s: s.format(
|
||||
e = help_notes('fee'),
|
||||
g = help_notes('gas_limit', target=None),
|
||||
F = help_notes('fee'),
|
||||
s = help_mod('txsign'),
|
||||
f = help_notes('fmt_codes')),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ tx.bump: transaction bump class
|
|||
from .new_swap import NewSwap
|
||||
from .completed import Completed
|
||||
from ..util import msg, ymsg, is_int, die
|
||||
from ..color import pink
|
||||
from ..color import orange, pink
|
||||
|
||||
class Bump(Completed, NewSwap):
|
||||
desc = 'fee-bumped transaction'
|
||||
|
|
@ -37,6 +37,10 @@ class Bump(Completed, NewSwap):
|
|||
setattr(self, attr, None)
|
||||
self.outputs = self.OutputList(self)
|
||||
self.cfg = kwargs['cfg'] # must use current cfg opts, not those from orig_tx
|
||||
elif self.is_swap and self.is_token:
|
||||
die(1,
|
||||
orange('Fee-bumping of token swap transactions currently not supported.\n') +
|
||||
orange('To bump the transaction, supply new outputs on the command line'))
|
||||
|
||||
if not self.is_replaceable():
|
||||
die(1, f'Transaction {self.txid} is not replaceable')
|
||||
|
|
|
|||
|
|
@ -135,6 +135,9 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
('subgroup.token_init', ['eth_init']),
|
||||
('subgroup.token_feebump', ['token_init']),
|
||||
('subgroup.token_new_outputs', ['token_init']),
|
||||
('subgroup.token_init_swap', ['token_init']),
|
||||
# ('subgroup.token_feebump_swap', ['token_init_swap']), # TBD
|
||||
('subgroup.token_new_outputs_swap', ['token_init_swap']),
|
||||
('ltc_stop', ''),
|
||||
('stop', 'stopping daemon'),
|
||||
)
|
||||
|
|
@ -231,7 +234,32 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
('token_txbump2send', 'sending the replacement transaction'),
|
||||
('wait7', 'waiting for block'),
|
||||
('token_bal3', 'the token balance'),
|
||||
)
|
||||
),
|
||||
'token_init_swap': (
|
||||
'initializing token swap configuration',
|
||||
('token_compile_router', 'compiling THORChain router contract'),
|
||||
('token_deploy_router', 'deploying THORChain router contract'),
|
||||
),
|
||||
'token_feebump_swap': (
|
||||
'creating, signing, sending, bumping and resending a token swap transaction (feebump)',
|
||||
('token_fund_user11', 'transferring token funds from dev to user (addr #11)'),
|
||||
('token_addrimport_inbound', 'importing THORNode inbound token address'),
|
||||
('token_swaptxdo1', 'creating, signing and sending a token transaction (feebump)'),
|
||||
('token_swaptxbump1', 'bumping the token transaction (fee-bump)'),
|
||||
('token_swaptxbump1sign', 'signing the replacement transaction'),
|
||||
('token_swaptxbump1send', 'sending the replacement transaction'),
|
||||
('wait8', 'waiting for block'),
|
||||
('token_bal5', 'the token balance'),
|
||||
),
|
||||
'token_new_outputs_swap': (
|
||||
'creating, signing, sending, bumping and resending a token swap transaction (new outputs)',
|
||||
('token_swaptxdo2', 'creating, signing and sending a token swap transaction (new outputs)'),
|
||||
('token_swaptxbump2', 'creating a replacement token transaction'),
|
||||
('token_swaptxbump2sign', 'signing the replacement transaction'),
|
||||
('token_swaptxbump2send', 'sending the replacement transaction'),
|
||||
('wait9', 'waiting for block'),
|
||||
('token_bal6', 'the token balance'),
|
||||
),
|
||||
}
|
||||
|
||||
ltc_tests = [c[0] for v in tuple(cmd_subgroups.values()) + (cmd_group_in,)
|
||||
|
|
@ -310,6 +338,9 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
def token_fund_user1(self):
|
||||
return self._token_fund_user(mm_idxs=[1])
|
||||
|
||||
def token_fund_user11(self):
|
||||
return self._token_fund_user(mm_idxs=[11])
|
||||
|
||||
def token_txdo1(self):
|
||||
return self._token_txcreate(cmd='txdo', args=[f'{dfl_sid}:E:2,1.23456', dfl_words_file])
|
||||
|
||||
|
|
@ -333,7 +364,7 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
return self._txbump_new_outputs(
|
||||
args = [f'{dfl_sid}:E:4,6.54321'],
|
||||
fee = '1.6G',
|
||||
add_opts = ['--token=mm1'])
|
||||
add_opts = ['--token=mm1', '--gas=75000'])
|
||||
|
||||
def token_txbump2sign(self):
|
||||
return self._txsign(has_label=False)
|
||||
|
|
@ -347,7 +378,58 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
def wait_reth1(self):
|
||||
return self._wait_for_block() if self.daemon.id == 'reth' else 'silent'
|
||||
|
||||
wait1 = wait2 = wait3 = wait4 = wait5 = wait6 = wait7 = CmdTestEthBumpMethods._wait_for_block
|
||||
def token_swaptxdo1(self):
|
||||
self.get_file_with_ext('sigtx', delete_all=True)
|
||||
t = self._swaptxcreate(
|
||||
['ETH.MM1', '0.321', 'ETH', dfl_words_file],
|
||||
action = 'txdo')
|
||||
t.expect('(Y/n): ', '\n')
|
||||
return self._swaptxcreate_ui_common(
|
||||
t,
|
||||
sign_and_send = True,
|
||||
need_passphrase = False,
|
||||
file_desc = 'Sent transaction',
|
||||
inputs = 11)
|
||||
|
||||
def token_swaptxbump1(self):
|
||||
time.sleep(0.2)
|
||||
self.get_file_with_ext('rawtx', delete_all=True)
|
||||
txfile = self.get_file_with_ext('sigtx', no_dot=True)
|
||||
t = self.spawn(
|
||||
'mmgen-txbump',
|
||||
self.eth_opts
|
||||
+ ['--gas=50000'] # , '--router-gas=600000']
|
||||
+ ['--yes', txfile])
|
||||
t.expect('to continue: ', '\n') # exit swap quote view
|
||||
t.expect('or gas price: ', '8G\n') # enter fee
|
||||
t.expect(r'Gas limit:.*\D650000\D', regex=True)
|
||||
t.written_to_file('Fee-bumped transaction')
|
||||
return t
|
||||
|
||||
def token_swaptxdo2(self):
|
||||
self.get_file_with_ext('sigtx', delete_all=True)
|
||||
return self._swaptxcreate_ui_common(
|
||||
self._swaptxcreate(
|
||||
['ETH.MM1', '0.321', 'ETH', f'{dfl_sid}:E:21', dfl_words_file],
|
||||
action = 'txdo'),
|
||||
sign_and_send = True,
|
||||
need_passphrase = False,
|
||||
file_desc = 'Sent transaction',
|
||||
inputs = 1)
|
||||
|
||||
def token_swaptxbump2(self):
|
||||
return self._txbump_new_outputs(
|
||||
args = [f'{dfl_sid}:E:8,0.54321'],
|
||||
fee = '1.4G',
|
||||
add_opts = ['--gas=67888', '--fee=3G'])
|
||||
|
||||
def token_bal5(self):
|
||||
return self._token_bal_check(pat=r'feedbeefcafe\s+non-MMGen\s+0\.321\s')
|
||||
|
||||
def token_bal6(self):
|
||||
return self._token_bal_check(pat=rf'{dfl_sid}:E:8\s+0\.54321')
|
||||
|
||||
wait1 = wait2 = wait3 = wait4 = wait5 = wait6 = wait7 = wait8 = wait9 = CmdTestEthBumpMethods._wait_for_block
|
||||
|
||||
txsign1 = txsign2 = txbump1sign = txbump2sign = CmdTestEthBumpMethods._txsign
|
||||
txsend1 = txsend2 = txbump1send = txbump2send = CmdTestEthBumpMethods._txsend
|
||||
|
|
@ -356,8 +438,8 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMe
|
|||
swaptxsign2 = swaptxsign1
|
||||
swaptxsend2 = swaptxsend1
|
||||
|
||||
swaptxbump1sign = swaptxbump2sign = token_txbump2sign
|
||||
swaptxbump1send = swaptxbump2send = token_txbump2send
|
||||
token_swaptxbump1sign = token_swaptxbump2sign = swaptxbump1sign = swaptxbump2sign = token_txbump2sign
|
||||
token_swaptxbump1send = token_swaptxbump2send = swaptxbump1send = swaptxbump2send = token_txbump2send
|
||||
|
||||
class CmdTestEthBumpLTC(CmdTestSwapMethods, CmdTestRegtest):
|
||||
network = ('ltc',)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue