From 29c5ea22dbc58360005449e42b77d0b00d26cc32 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 20 Oct 2026 17:38:48 +0000 Subject: [PATCH] various fixes and cleanups --- mmgen/main_txcreate.py | 5 +---- mmgen/tx/new_swap.py | 16 +++++++-------- test/cmdtest_d/automount.py | 29 +++++---------------------- test/cmdtest_d/autosign.py | 19 ++++++++++++++++++ test/cmdtest_d/httpd/thornode/swap.py | 16 ++++++++++----- test/cmdtest_d/swap.py | 5 ++++- 6 files changed, 47 insertions(+), 43 deletions(-) diff --git a/mmgen/main_txcreate.py b/mmgen/main_txcreate.py index 705df951..e378d062 100644 --- a/mmgen/main_txcreate.py +++ b/mmgen/main_txcreate.py @@ -175,9 +175,6 @@ async def main(): locktime = int(cfg.locktime or 0), do_info = cfg.info) - if tx1.is_compat: - return - if tx1.is_swap and tx1.is_refreq: # memoless first pass if cfg.no_refreq_tx: Msg(f'MEMO: {tx1.reference_memo}') @@ -186,7 +183,7 @@ async def main(): tx2 = NewTX(cfg=rune_cfg, proto=rune_cfg._proto, target='tx', refreq_src=tx1) tx3 = await tx2.create(args=('deposit,0', f'data:{tx1.reference_memo}')) write_to_file(tx3, asi) - else: + elif not tx1.is_compat: write_to_file(tx2, asi) async_run(cfg, main) diff --git a/mmgen/tx/new_swap.py b/mmgen/tx/new_swap.py index 8f467027..085cf2e1 100644 --- a/mmgen/tx/new_swap.py +++ b/mmgen/tx/new_swap.py @@ -98,13 +98,13 @@ class NewSwap(BaseSwapMethods, New): from ..amt import is_coin_amt arg = get_arg() - # arg 2: amt + # arg 2: optional amt if is_coin_amt(self.proto, arg): UniAmt(arg) # throw exception on decimal overflow args.send_amt = self.proto.coin_amt(arg) arg = get_arg() - # arg 3: chg_spec (change address spec) + # arg 3: optional chg_spec (change address spec, requires amt) if args.send_amt and not ( self.proto.is_vm or arg in sa.recv): # is change arg @@ -118,7 +118,7 @@ class NewSwap(BaseSwapMethods, New): self.swap_recv_asset_spec = sp.SwapAsset(arg, 'recv').name # used by ‘recv_asset’ property self.recv_proto = init_swap_proto(self.cfg, self.recv_asset) - # arg 5: recv_spec (receive address spec) + # arg 5: optional recv_spec (receive address spec) if args_in: if self.refnum: die(1, 'destination address must be omitted with --refnum') @@ -214,12 +214,10 @@ class NewSwap(BaseSwapMethods, New): str(self.update_memo(self.memoless_memo, qd.trade_limit))) return None - ret = ( - [f'vault,{args.send_amt}'] if args.send_amt and self.proto.is_vm else - [f'vault,{args.send_amt}', chg_output.mmid] if args.send_amt else - ['vault']) - - return tuple(ret if self.is_memoless else (ret + [f'data:{memo}'])) + return tuple(( + [f'vault,{args.send_amt}', chg_output.mmid] if chg_output else + [f'vault,{args.send_amt}'] if args.send_amt else + ['vault']) + ([] if self.is_memoless else [f'data:{memo}'])) async def display_quote_loop(self, qd, *, deduct_est_fee=False): from ..term import get_char diff --git a/test/cmdtest_d/automount.py b/test/cmdtest_d/automount.py index 117a3eb7..31facd84 100644 --- a/test/cmdtest_d/automount.py +++ b/test/cmdtest_d/automount.py @@ -169,37 +169,18 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest): def alice_txcreate4(self): return self._user_txcreate('alice', chg_addr='L:4', need_rbf=True) - def _alice_txsend_abort(self, err=False, send_resp='y', expect_str=None, shred_expect_str=[]): - self.insert_device_online() - t = self.spawn( - 'mmgen-txsend', - ['--quiet', '--abort'], - no_passthru_opts = ['coin'], - exit_val = 2 if err else 1 if send_resp == 'n' else None) - if err: - t.expect(expect_str) - else: - t.expect('(y/N): ', send_resp) - if expect_str: - t.expect(expect_str) - for pat in shred_expect_str: - t.expect(pat, regex=True) - t.read() - self.remove_device_online() - return t - def alice_txsend_abort1(self): - return self._alice_txsend_abort(shred_expect_str=['Shredding .*arawtx']) + return self._txsend_abort(shred_expect_str=['Shredding .*arawtx']) def alice_txsend_abort2(self): - return self._alice_txsend_abort(err=True, expect_str='No unsent transactions') + return self._txsend_abort(err=True, expect_str='No unsent transactions') def alice_txsend_abort3(self): - return self._alice_txsend_abort(send_resp='n', expect_str='Exiting at user request') + return self._txsend_abort(send_resp='n', expect_str='Exiting at user request') def alice_txsend_abort4(self): self._wait_signed('transaction') - return self._alice_txsend_abort(shred_expect_str=[r'Shredding .*arawtx', r'Shredding .*asigtx']) + return self._txsend_abort(shred_expect_str=[r'Shredding .*arawtx', r'Shredding .*asigtx']) alice_txsend_abort5 = alice_txsend_abort2 @@ -381,7 +362,7 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest): def alice_txbump_abort1(self): if not self.proto.cap('rbf'): return 'skip' - return self._alice_txsend_abort(shred_expect_str=['Shredding .*arawtx']) + return self._txsend_abort(shred_expect_str=['Shredding .*arawtx']) def alice_txbump5(self): sid = self._user_sid('alice') diff --git a/test/cmdtest_d/autosign.py b/test/cmdtest_d/autosign.py index e84427f0..43e1752e 100644 --- a/test/cmdtest_d/autosign.py +++ b/test/cmdtest_d/autosign.py @@ -610,6 +610,25 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase): self.remove_device_online() return t + def _txsend_abort(self, err=False, send_resp='y', expect_str=None, shred_expect_str=[]): + self.insert_device_online() + t = self.spawn( + 'mmgen-txsend', + ['--quiet', '--abort'], + no_passthru_opts = ['coin'], + exit_val = 2 if err else 1 if send_resp == 'n' else None) + if err: + t.expect(expect_str) + else: + t.expect('(y/N): ', send_resp) + if expect_str: + t.expect(expect_str) + for pat in shred_expect_str: + t.expect(pat, regex=True) + t.read() + self.remove_device_online() + return t + def _wait_loop_start(self, opts=[], add_opts=[]): t = self.spawn( 'mmgen-autosign', diff --git a/test/cmdtest_d/httpd/thornode/swap.py b/test/cmdtest_d/httpd/thornode/swap.py index 634ea68d..ec26ba8b 100644 --- a/test/cmdtest_d/httpd/thornode/swap.py +++ b/test/cmdtest_d/httpd/thornode/swap.py @@ -28,8 +28,14 @@ prices = { 'ETH': 2304, 'MM1': 0.998, 'RUNE': 1.4} -gas_rate_units = {'ETH': 'gwei', 'BTC': 'satsperbyte'} -recommended_gas_rate = {'ETH': '1', 'BTC': '6'} + +gas_rate_units = { + 'BTC': 'satsperbyte', + 'ETH': 'gwei'} + +recommended_gas_rate = { + 'BTC': '6', + 'ETH': '1'} data_template_from_rune = { 'outbound_delay_blocks': 0, @@ -123,12 +129,12 @@ def make_inbound_addr(cfg, proto, mmtype): return '0x' + eth_inbound_addr # non-checksummed as per ninerealms thornode else: from mmgen.tool.coin import tool_cmd - n = int(time.time()) // (60 * 60 * 24) # increments once every 24 hrs + n = int(time.time()) // (60 * 60 * 24) + int('beadcafe' * 8, 16) # increments once every 24 hrs return tool_cmd( cfg = cfg, - cmdname = 'pubhash2addr', + cmdname = 'privhex2addr', proto = proto, - mmtype = mmtype).pubhash2addr(f'{n:040x}') + mmtype = mmtype).privhex2addr(f'{n:064x}') class ThornodeSwapServer(ThornodeServer): port = 18900 diff --git a/test/cmdtest_d/swap.py b/test/cmdtest_d/swap.py index 9cd0d61d..791a87eb 100644 --- a/test/cmdtest_d/swap.py +++ b/test/cmdtest_d/swap.py @@ -879,7 +879,10 @@ class CmdTestSwap( refreq_swaptxsend = rune_txsend_refreq def remote_get_refnum(self): - t = self._rune_remote('get_refnum', (self.refreq_txid,), color=False) + return self._remote_get_refnum(self.refreq_txid) + + def _remote_get_refnum(self, txid): + t = self._rune_remote('get_refnum', (txid,), color=False) self.write_to_tmpfile('memo_info.json', t.read().strip()) return t