8 Commits be025dc817 ... ef5f6e4b22

Author SHA1 Message Date
  The MMGen Project ef5f6e4b22 mmgen-txbump: support new outputs in the replacement TX 10 months ago
  The MMGen Project d3b5ba23f3 tx.new: new `get_inputs()` and `get_fee()` methods 10 months ago
  The MMGen Project 0d38b62081 minor fixes and cleanups 10 months ago
  The MMGen Project 967fad0b14 cmdtest.py regtest: mempool, RBF status cleanups 10 months ago
  The MMGen Project 52f26202a8 write_data_to_file(): add `no_stdout` parameter 10 months ago
  The MMGen Project 6620b4dba0 txhist: support OP_RETURN TX outputs 10 months ago
  The MMGen Project 004a4650eb txbump: update `opts_data` to new format 10 months ago
  The MMGen Project e54f039690 update copyright dates 10 months ago
301 changed files with 687 additions and 541 deletions
  1. 1 1
      cmds/mmgen-addrgen
  2. 1 1
      cmds/mmgen-addrimport
  3. 1 1
      cmds/mmgen-autosign
  4. 1 1
      cmds/mmgen-keygen
  5. 1 1
      cmds/mmgen-msg
  6. 1 1
      cmds/mmgen-passchg
  7. 1 1
      cmds/mmgen-passgen
  8. 1 1
      cmds/mmgen-regtest
  9. 1 1
      cmds/mmgen-seedjoin
  10. 1 1
      cmds/mmgen-seedsplit
  11. 1 1
      cmds/mmgen-subwalletgen
  12. 1 1
      cmds/mmgen-tool
  13. 1 1
      cmds/mmgen-txbump
  14. 1 1
      cmds/mmgen-txcreate
  15. 1 1
      cmds/mmgen-txdo
  16. 1 1
      cmds/mmgen-txsend
  17. 1 1
      cmds/mmgen-txsign
  18. 1 1
      cmds/mmgen-walletchk
  19. 1 1
      cmds/mmgen-walletconv
  20. 1 1
      cmds/mmgen-walletgen
  21. 1 1
      cmds/mmgen-xmrwallet
  22. 1 1
      examples/bip_hd.py
  23. 1 1
      examples/coin-daemon-info.py
  24. 1 1
      examples/halving-calculator.py
  25. 1 1
      examples/whitepaper.py
  26. 1 1
      extmod/secp256k1mod.c
  27. 1 1
      mmgen/addr.py
  28. 1 1
      mmgen/addrdata.py
  29. 1 1
      mmgen/addrfile.py
  30. 1 1
      mmgen/addrgen.py
  31. 1 1
      mmgen/addrlist.py
  32. 1 1
      mmgen/altcoin/params.py
  33. 1 1
      mmgen/altcoin/util.py
  34. 1 1
      mmgen/amt.py
  35. 1 1
      mmgen/autosign.py
  36. 1 1
      mmgen/base_obj.py
  37. 1 1
      mmgen/baseconv.py
  38. 1 1
      mmgen/bip39.py
  39. 1 1
      mmgen/bip_hd/__init__.py
  40. 2 2
      mmgen/cfg.py
  41. 1 1
      mmgen/cfgfile.py
  42. 1 1
      mmgen/color.py
  43. 1 1
      mmgen/contrib/license.py
  44. 1 1
      mmgen/crypto.py
  45. 1 1
      mmgen/daemon.py
  46. 1 1
      mmgen/data/version
  47. 1 1
      mmgen/derive.py
  48. 1 1
      mmgen/devinit.py
  49. 1 1
      mmgen/devtools.py
  50. 1 1
      mmgen/exception.py
  51. 1 1
      mmgen/filename.py
  52. 5 2
      mmgen/fileutil.py
  53. 1 1
      mmgen/flags.py
  54. 1 1
      mmgen/help/__init__.py
  55. 2 2
      mmgen/help/help_notes.py
  56. 1 1
      mmgen/help/seedsplit.py
  57. 1 1
      mmgen/help/xmrwallet.py
  58. 1 1
      mmgen/key.py
  59. 1 1
      mmgen/keygen.py
  60. 1 1
      mmgen/led.py
  61. 1 1
      mmgen/main.py
  62. 1 1
      mmgen/main_addrgen.py
  63. 1 1
      mmgen/main_addrimport.py
  64. 1 1
      mmgen/main_autosign.py
  65. 1 1
      mmgen/main_msg.py
  66. 1 1
      mmgen/main_passgen.py
  67. 1 1
      mmgen/main_regtest.py
  68. 1 1
      mmgen/main_seedjoin.py
  69. 1 1
      mmgen/main_split.py
  70. 1 1
      mmgen/main_tool.py
  71. 91 83
      mmgen/main_txbump.py
  72. 1 1
      mmgen/main_txcreate.py
  73. 1 1
      mmgen/main_txdo.py
  74. 1 1
      mmgen/main_txsend.py
  75. 1 1
      mmgen/main_txsign.py
  76. 1 1
      mmgen/main_wallet.py
  77. 1 1
      mmgen/main_xmrwallet.py
  78. 1 1
      mmgen/mn_entry.py
  79. 1 1
      mmgen/msg.py
  80. 1 1
      mmgen/obj.py
  81. 1 1
      mmgen/objmethods.py
  82. 1 1
      mmgen/opts.py
  83. 1 1
      mmgen/passwdlist.py
  84. 1 1
      mmgen/platform/darwin/util.py
  85. 1 1
      mmgen/proto/bch/cashaddr.py
  86. 1 1
      mmgen/proto/bch/params.py
  87. 1 1
      mmgen/proto/btc/addrdata.py
  88. 1 1
      mmgen/proto/btc/addrgen.py
  89. 1 1
      mmgen/proto/btc/common.py
  90. 1 1
      mmgen/proto/btc/daemon.py
  91. 1 1
      mmgen/proto/btc/misc.py
  92. 1 1
      mmgen/proto/btc/msg.py
  93. 1 1
      mmgen/proto/btc/params.py
  94. 1 1
      mmgen/proto/btc/regtest.py
  95. 1 1
      mmgen/proto/btc/rpc.py
  96. 1 1
      mmgen/proto/btc/tw/addresses.py
  97. 1 1
      mmgen/proto/btc/tw/bal.py
  98. 1 1
      mmgen/proto/btc/tw/ctl.py
  99. 1 1
      mmgen/proto/btc/tw/json.py
  100. 1 1
      mmgen/proto/btc/tw/prune.py
  101. 1 1
      mmgen/proto/btc/tw/rpc.py
  102. 14 5
      mmgen/proto/btc/tw/txhistory.py
  103. 1 1
      mmgen/proto/btc/tw/unspent.py
  104. 1 1
      mmgen/proto/btc/tx/base.py
  105. 5 2
      mmgen/proto/btc/tx/bump.py
  106. 1 1
      mmgen/proto/btc/tx/completed.py
  107. 1 1
      mmgen/proto/btc/tx/info.py
  108. 4 4
      mmgen/proto/btc/tx/new.py
  109. 1 1
      mmgen/proto/btc/tx/new_swap.py
  110. 1 1
      mmgen/proto/btc/tx/online.py
  111. 1 1
      mmgen/proto/btc/tx/op_return_data.py
  112. 1 1
      mmgen/proto/btc/tx/signed.py
  113. 1 1
      mmgen/proto/btc/tx/status.py
  114. 1 1
      mmgen/proto/btc/tx/unsigned.py
  115. 1 1
      mmgen/proto/etc/params.py
  116. 1 1
      mmgen/proto/eth/addrdata.py
  117. 1 1
      mmgen/proto/eth/addrgen.py
  118. 1 1
      mmgen/proto/eth/contract.py
  119. 1 1
      mmgen/proto/eth/daemon.py
  120. 1 1
      mmgen/proto/eth/misc.py
  121. 1 1
      mmgen/proto/eth/msg.py
  122. 1 1
      mmgen/proto/eth/params.py
  123. 1 1
      mmgen/proto/eth/rpc.py
  124. 1 1
      mmgen/proto/eth/tw/addresses.py
  125. 1 1
      mmgen/proto/eth/tw/bal.py
  126. 1 1
      mmgen/proto/eth/tw/ctl.py
  127. 1 1
      mmgen/proto/eth/tw/json.py
  128. 1 1
      mmgen/proto/eth/tw/rpc.py
  129. 1 1
      mmgen/proto/eth/tw/unspent.py
  130. 1 1
      mmgen/proto/eth/tw/view.py
  131. 1 1
      mmgen/proto/eth/tx/base.py
  132. 4 1
      mmgen/proto/eth/tx/bump.py
  133. 1 1
      mmgen/proto/eth/tx/completed.py
  134. 1 1
      mmgen/proto/eth/tx/info.py
  135. 2 2
      mmgen/proto/eth/tx/new.py
  136. 1 1
      mmgen/proto/eth/tx/online.py
  137. 1 1
      mmgen/proto/eth/tx/signed.py
  138. 1 1
      mmgen/proto/eth/tx/status.py
  139. 1 1
      mmgen/proto/eth/tx/unsigned.py
  140. 1 1
      mmgen/proto/ltc/params.py
  141. 1 1
      mmgen/proto/secp256k1/keygen.py
  142. 1 1
      mmgen/proto/xmr/addrgen.py
  143. 1 1
      mmgen/proto/xmr/daemon.py
  144. 1 1
      mmgen/proto/xmr/keygen.py
  145. 1 1
      mmgen/proto/xmr/params.py
  146. 1 1
      mmgen/proto/xmr/rpc.py
  147. 1 1
      mmgen/proto/zec/addrgen.py
  148. 1 1
      mmgen/proto/zec/keygen.py
  149. 1 1
      mmgen/proto/zec/params.py
  150. 1 1
      mmgen/protocol.py
  151. 1 1
      mmgen/pyversion.py
  152. 1 1
      mmgen/rpc.py
  153. 1 1
      mmgen/seed.py
  154. 1 1
      mmgen/seedsplit.py
  155. 1 1
      mmgen/sha2.py
  156. 1 1
      mmgen/subseed.py
  157. 1 1
      mmgen/term.py
  158. 1 1
      mmgen/test.py
  159. 1 1
      mmgen/tool/api.py
  160. 1 1
      mmgen/tool/coin.py
  161. 1 1
      mmgen/tool/common.py
  162. 1 1
      mmgen/tool/file.py
  163. 1 1
      mmgen/tool/filecrypt.py
  164. 1 1
      mmgen/tool/fileutil.py
  165. 1 1
      mmgen/tool/help.py
  166. 1 1
      mmgen/tool/mnemonic.py
  167. 1 1
      mmgen/tool/rpc.py
  168. 1 1
      mmgen/tool/util.py
  169. 1 1
      mmgen/tool/wallet.py
  170. 1 1
      mmgen/tw/addresses.py
  171. 1 1
      mmgen/tw/bal.py
  172. 1 1
      mmgen/tw/ctl.py
  173. 1 1
      mmgen/tw/json.py
  174. 1 1
      mmgen/tw/prune.py
  175. 1 1
      mmgen/tw/rpc.py
  176. 1 1
      mmgen/tw/shared.py
  177. 1 1
      mmgen/tw/txhistory.py
  178. 1 1
      mmgen/tw/unspent.py
  179. 1 1
      mmgen/tw/view.py
  180. 1 1
      mmgen/tx/__init__.py
  181. 2 1
      mmgen/tx/base.py
  182. 46 3
      mmgen/tx/bump.py
  183. 1 1
      mmgen/tx/completed.py
  184. 1 1
      mmgen/tx/file.py
  185. 1 1
      mmgen/tx/info.py
  186. 81 62
      mmgen/tx/new.py
  187. 2 2
      mmgen/tx/new_swap.py
  188. 1 1
      mmgen/tx/online.py
  189. 6 6
      mmgen/tx/sign.py
  190. 1 1
      mmgen/tx/signed.py
  191. 1 1
      mmgen/tx/status.py
  192. 1 1
      mmgen/tx/unsigned.py
  193. 1 1
      mmgen/tx/util.py
  194. 1 1
      mmgen/ui.py
  195. 1 1
      mmgen/util.py
  196. 1 1
      mmgen/util2.py
  197. 1 1
      mmgen/wallet/__init__.py
  198. 1 1
      mmgen/wallet/base.py
  199. 1 1
      mmgen/wallet/bip39.py
  200. 1 1
      mmgen/wallet/brain.py
  201. 1 1
      mmgen/wallet/dieroll.py
  202. 1 1
      mmgen/wallet/enc.py
  203. 1 1
      mmgen/wallet/incog.py
  204. 1 1
      mmgen/wallet/incog_base.py
  205. 1 1
      mmgen/wallet/incog_hex.py
  206. 1 1
      mmgen/wallet/incog_hidden.py
  207. 1 1
      mmgen/wallet/mmgen.py
  208. 1 1
      mmgen/wallet/mmhex.py
  209. 1 1
      mmgen/wallet/mnemonic.py
  210. 1 1
      mmgen/wallet/plainhex.py
  211. 1 1
      mmgen/wallet/seed.py
  212. 1 1
      mmgen/wallet/unenc.py
  213. 1 1
      mmgen/wallet/words.py
  214. 1 1
      mmgen/wordlist/electrum.py
  215. 1 1
      mmgen/wordlist/tirosh.py
  216. 1 1
      mmgen/xmrseed.py
  217. 1 1
      mmgen/xmrwallet/__init__.py
  218. 1 1
      mmgen/xmrwallet/file/__init__.py
  219. 1 1
      mmgen/xmrwallet/file/outputs.py
  220. 1 1
      mmgen/xmrwallet/file/tx.py
  221. 1 1
      mmgen/xmrwallet/include.py
  222. 1 1
      mmgen/xmrwallet/ops/__init__.py
  223. 1 1
      mmgen/xmrwallet/ops/create.py
  224. 1 1
      mmgen/xmrwallet/ops/dump.py
  225. 1 1
      mmgen/xmrwallet/ops/export.py
  226. 1 1
      mmgen/xmrwallet/ops/import.py
  227. 1 1
      mmgen/xmrwallet/ops/label.py
  228. 1 1
      mmgen/xmrwallet/ops/new.py
  229. 1 1
      mmgen/xmrwallet/ops/relay.py
  230. 1 1
      mmgen/xmrwallet/ops/restore.py
  231. 1 1
      mmgen/xmrwallet/ops/sign.py
  232. 1 1
      mmgen/xmrwallet/ops/spec.py
  233. 1 1
      mmgen/xmrwallet/ops/submit.py
  234. 1 1
      mmgen/xmrwallet/ops/sweep.py
  235. 1 1
      mmgen/xmrwallet/ops/sync.py
  236. 1 1
      mmgen/xmrwallet/ops/txview.py
  237. 1 1
      mmgen/xmrwallet/ops/view.py
  238. 1 1
      mmgen/xmrwallet/ops/wallet.py
  239. 1 1
      mmgen/xmrwallet/rpc.py
  240. 1 1
      scripts/create-token.py
  241. 1 1
      scripts/exec_wrapper.py
  242. 1 1
      scripts/txsign-eval-exploit.diff
  243. 1 1
      setup.cfg
  244. 1 1
      setup.py
  245. 1 1
      test/altcointest.py
  246. 1 1
      test/clean.py
  247. 1 1
      test/cmdtest.py
  248. 1 1
      test/cmdtest_d/cfg.py
  249. 1 1
      test/cmdtest_d/common.py
  250. 76 23
      test/cmdtest_d/ct_automount.py
  251. 1 1
      test/cmdtest_d/ct_automount_eth.py
  252. 1 1
      test/cmdtest_d/ct_autosign.py
  253. 1 1
      test/cmdtest_d/ct_base.py
  254. 1 1
      test/cmdtest_d/ct_cfgfile.py
  255. 1 1
      test/cmdtest_d/ct_chainsplit.py
  256. 1 1
      test/cmdtest_d/ct_ethdev.py
  257. 1 1
      test/cmdtest_d/ct_help.py
  258. 1 1
      test/cmdtest_d/ct_input.py
  259. 2 2
      test/cmdtest_d/ct_main.py
  260. 1 1
      test/cmdtest_d/ct_misc.py
  261. 1 1
      test/cmdtest_d/ct_opts.py
  262. 1 1
      test/cmdtest_d/ct_ref.py
  263. 1 1
      test/cmdtest_d/ct_ref_3seed.py
  264. 1 1
      test/cmdtest_d/ct_ref_altcoin.py
  265. 54 53
      test/cmdtest_d/ct_regtest.py
  266. 1 1
      test/cmdtest_d/ct_seedsplit.py
  267. 1 1
      test/cmdtest_d/ct_shared.py
  268. 5 3
      test/cmdtest_d/ct_swap.py
  269. 1 1
      test/cmdtest_d/ct_tool.py
  270. 1 1
      test/cmdtest_d/ct_wallet.py
  271. 1 1
      test/cmdtest_d/ct_xmr_autosign.py
  272. 1 1
      test/cmdtest_d/ct_xmrwallet.py
  273. 1 1
      test/cmdtest_d/input.py
  274. 1 1
      test/colortest.py
  275. 1 1
      test/gentest.py
  276. 1 1
      test/hashfunc.py
  277. 1 1
      test/include/cfg.py
  278. 1 1
      test/include/coin_daemon_control.py
  279. 2 1
      test/include/common.py
  280. 1 1
      test/include/ecc.py
  281. 1 1
      test/include/pexpect.py
  282. 1 1
      test/include/test_init.py
  283. 1 1
      test/include/unit_test.py
  284. 1 1
      test/misc/tool_api_test.py
  285. 1 1
      test/objattrtest.py
  286. 1 1
      test/objattrtest_d/oat_btc_mainnet.py
  287. 1 1
      test/objattrtest_d/oat_common.py
  288. 1 1
      test/objtest.py
  289. 1 1
      test/objtest_d/ot_btc_mainnet.py
  290. 1 1
      test/objtest_d/ot_btc_testnet.py
  291. 1 1
      test/objtest_d/ot_common.py
  292. 1 1
      test/objtest_d/ot_eth_mainnet.py
  293. 1 1
      test/objtest_d/ot_ltc_mainnet.py
  294. 1 1
      test/objtest_d/ot_ltc_testnet.py
  295. 1 1
      test/overlay/__init__.py
  296. 1 1
      test/scrambletest.py
  297. 1 1
      test/test-release.d/cfg.sh
  298. 1 1
      test/test-release.sh
  299. 1 1
      test/tooltest.py
  300. 1 1
      test/tooltest2.py
  301. 1 1
      test/tooltest2_d/data.py

+ 1 - 1
cmds/mmgen-addrgen

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-addrimport

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-autosign

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-keygen

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-msg

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
 # mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
cmds/mmgen-passchg

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-passgen

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-regtest

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-seedjoin

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-seedsplit

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-subwalletgen

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-tool

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-txbump

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-txcreate

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-txdo

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-txsend

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-txsign

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-walletchk

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-walletconv

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-walletgen

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
cmds/mmgen-xmrwallet

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 
 
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify it under
 # This program is free software: you can redistribute it and/or modify it under
 # the terms of the GNU General Public License as published by the Free Software
 # the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
examples/bip_hd.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
examples/coin-daemon-info.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
examples/halving-calculator.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
examples/whitepaper.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
extmod/secp256k1mod.c

@@ -1,6 +1,6 @@
 /*
 /*
   mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
   mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-  Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+  Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
   This program is free software: you can redistribute it and/or modify it under
   This program is free software: you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free Software
   the terms of the GNU General Public License as published by the Free Software

+ 1 - 1
mmgen/addr.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/addrdata.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/addrfile.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/addrlist.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/altcoin/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/altcoin/util.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/amt.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/autosign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/base_obj.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/baseconv.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/bip39.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/bip_hd/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 2 - 2
mmgen/cfg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@ class GlobalConstants(Lockable):
 	proj_url           = 'https://github.com/mmgen/mmgen-wallet'
 	proj_url           = 'https://github.com/mmgen/mmgen-wallet'
 	author             = 'The MMGen Project'
 	author             = 'The MMGen Project'
 	email              = '<mmgen@tuta.io>'
 	email              = '<mmgen@tuta.io>'
-	Cdates             = '2013-2024'
+	Cdates             = '2013-2025'
 	dfl_hash_preset    = '3'
 	dfl_hash_preset    = '3'
 	passwd_max_tries   = 5
 	passwd_max_tries   = 5
 	min_screen_width   = 80
 	min_screen_width   = 80

+ 1 - 1
mmgen/cfgfile.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/color.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/contrib/license.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/crypto.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/daemon.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/data/version

@@ -1 +1 @@
-15.1.dev15
+15.1.dev16

+ 1 - 1
mmgen/derive.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/devinit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/devtools.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/exception.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/filename.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 5 - 2
mmgen/fileutil.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -159,6 +159,7 @@ def write_data_to_file(
 		ask_overwrite         = True,
 		ask_overwrite         = True,
 		ask_tty               = True,
 		ask_tty               = True,
 		no_tty                = False,
 		no_tty                = False,
+		no_stdout             = False,
 		quiet                 = False,
 		quiet                 = False,
 		binary                = False,
 		binary                = False,
 		ignore_opt_outdir     = False,
 		ignore_opt_outdir     = False,
@@ -269,7 +270,9 @@ def write_data_to_file(
 
 
 		return True
 		return True
 
 
-	if cfg.stdout or outfile in ('', '-'):
+	if no_stdout:
+		do_file(outfile, ask_write_prompt)
+	elif cfg.stdout or outfile in ('', '-'):
 		do_stdout()
 		do_stdout()
 	elif sys.stdin.isatty() and not sys.stdout.isatty():
 	elif sys.stdin.isatty() and not sys.stdout.isatty():
 		do_stdout()
 		do_stdout()

+ 1 - 1
mmgen/flags.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/help/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 2 - 2
mmgen/help/help_notes.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -24,7 +24,7 @@ class help_notes:
 		return (
 		return (
 			'COIN1 [AMT CHG_ADDR] COIN2 [ADDR]'
 			'COIN1 [AMT CHG_ADDR] COIN2 [ADDR]'
 				if target == 'swaptx' else
 				if target == 'swaptx' else
-			'[ADDR,AMT ... | DATA_SPEC] ADDR <change addr, addrlist ID or addr type>'
+			'[ADDR,AMT ... | DATA_SPEC] ADDR'
 				if self.proto.base_proto == 'Bitcoin' else
 				if self.proto.base_proto == 'Bitcoin' else
 			'ADDR,AMT')
 			'ADDR,AMT')
 
 

+ 1 - 1
mmgen/help/seedsplit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/help/xmrwallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/key.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/keygen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/led.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_addrimport.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_autosign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_msg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/main_passgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_regtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_seedjoin.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_split.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_tool.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 91 - 83
mmgen/main_txbump.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -17,8 +17,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 """
 """
-mmgen-txbump: Increase the fee on a replaceable (replace-by-fee) MMGen
-              transaction, and optionally sign and send it
+mmgen-txbump: Create, and optionally send and sign, a replacement transaction
+              on networks that support replace-by-fee (RBF)
 """
 """
 
 
 from .cfg import gc, Config
 from .cfg import gc, Config
@@ -26,60 +26,75 @@ from .util import msg, msg_r, die, async_run
 from .color import green
 from .color import green
 
 
 opts_data = {
 opts_data = {
+	'filter_codes': ['-'],
 	'sets': [('yes', True, 'quiet', True)],
 	'sets': [('yes', True, 'quiet', True)],
 	'text': {
 	'text': {
-		'desc': f"""
-                Increase the fee on a replaceable (RBF) {gc.proj_name} transaction,
-                creating a new transaction, and optionally sign and send the
-                new transaction
+		'desc': """
+                Create, and optionally send and sign, a replacement transaction
+                on networks that support replace-by-fee (RBF)
 		 """,
 		 """,
-		'usage':   f'[opts] [{gc.proj_name} TX file] [seed source] ...',
+		'usage2':   (
+			f'[opts] [{gc.proj_name} TX file] [seed source] ...',
+			f'[opts] {{u_args}} [{gc.proj_name} TX file] [seed source] ...',
+		),
 		'options': """
 		'options': """
--h, --help             Print this help message
---, --longhelp         Print help message for long (global) options
--a, --autosign         Bump the most recent transaction created and sent with
-                       the --autosign option. The removable device is mounted
-                       and unmounted automatically.  The transaction file
-                       argument must be omitted.  Note that only sent trans-
-                       actions may be bumped with this option.  To redo an
-                       unsent --autosign transaction, first delete it using
-                       ‘mmgen-txsend --abort’ and then create a new one
--b, --brain-params=l,p Use seed length 'l' and hash preset 'p' for
-                       brainwallet input
--c, --comment-file=  f Source the transaction's comment from file 'f'
--d, --outdir=        d Specify an alternate directory 'd' for output
--e, --echo-passphrase  Print passphrase to screen when typing it
--f, --fee=           f Transaction fee, as a decimal {cu} amount or as
-                       {fu} (an integer followed by {fl!r}).
-                       See FEE SPECIFICATION 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)
--l, --seed-len=      l Specify wallet seed length of 'l' bits. This option
-                       is required only for brainwallet and incognito inputs
-                       with non-standard (< {dsl}-bit) seed lengths.
--k, --keys-from-file=f Provide additional keys for non-{pnm} addresses
--K, --keygen-backend=n Use backend 'n' for public key generation.  Options
-                       for {coin_id}: {kgs}
--M, --mmgen-keys-from-file=f Provide keys for {pnm} addresses in a key-
-                       address file (output of '{pnl}-keygen'). Permits
-                       online signing without an {pnm} seed source. The
-                       key-address file is also used to verify {pnm}-to-{cu}
-                       mappings, so the user should record its checksum.
--o, --output-to-reduce=o Deduct the fee from output 'o' (an integer, or 'c'
-                       for the transaction's change output, if present)
--O, --old-incog-fmt    Specify old-format incognito input
--p, --hash-preset=   p Use the scrypt hash parameters defined by preset 'p'
-                       for password hashing (default: '{gc.dfl_hash_preset}')
--P, --passwd-file=   f Get {pnm} wallet passphrase from file 'f'
--q, --quiet            Suppress warnings; overwrite files without prompting
--s, --send             Sign and send the transaction (the default if seed
-                       data is provided)
--v, --verbose          Produce more verbose output
--y, --yes             Answer 'yes' to prompts, suppress non-essential output
--z, --show-hash-presets Show information on available hash presets
+			-- -h, --help             Print this help message
+			-- --, --longhelp         Print help message for long (global) options
+			-- -a, --autosign         Bump the most recent transaction created and sent with
+			+                         the --autosign option. The removable device is mounted
+			+                         and unmounted automatically.  The transaction file
+			+                         argument must be omitted.  Note that only sent trans-
+			+                         actions may be bumped with this option.  To redo an
+			+                         unsent --autosign transaction, first delete it using
+			+                         ‘mmgen-txsend --abort’ and then create a new one
+			-- -b, --brain-params=l,p Use seed length 'l' and hash preset 'p' for
+			+                         brainwallet input
+			-- -c, --comment-file=  f Source the transaction's comment from file 'f'
+			-- -d, --outdir=        d Specify an alternate directory 'd' for output
+			-- -e, --echo-passphrase  Print passphrase to screen when typing it
+			-- -f, --fee=           f Transaction fee, as a decimal {cu} amount or as
+			+                         {fu} (an integer followed by {fl!r}).
+			+                         See FEE SPECIFICATION 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)
+			-- -l, --seed-len=      l Specify wallet seed length of 'l' bits. This option
+			+                         is required only for brainwallet and incognito inputs
+			+                         with non-standard (< {dsl}-bit) seed lengths.
+			-- -k, --keys-from-file=f Provide additional keys for non-{pnm} addresses
+			-- -K, --keygen-backend=n Use backend 'n' for public key generation.  Options
+			+                         for {coin_id}: {kgs}
+			-- -M, --mmgen-keys-from-file=f Provide keys for {pnm} addresses in a key-
+			+                         address file (output of '{pnl}-keygen'). Permits
+			+                         online signing without an {pnm} seed source. The
+			+                         key-address file is also used to verify {pnm}-to-{cu}
+			+                         mappings, so the user should record its checksum.
+			b- -o, --output-to-reduce=o Deduct the fee from output 'o' (an integer, or 'c'
+			+                         for the transaction's change output, if present)
+			-- -O, --old-incog-fmt    Specify old-format incognito input
+			-- -p, --hash-preset=   p Use the scrypt hash parameters defined by preset 'p'
+			+                         for password hashing (default: '{gc.dfl_hash_preset}')
+			-- -P, --passwd-file=   f Get {pnm} wallet passphrase from file 'f'
+			-- -q, --quiet            Suppress warnings; overwrite files without prompting
+			-- -s, --send             Sign and send the transaction (the default if seed
+			+                         data is provided)
+			-- -v, --verbose          Produce more verbose output
+			-- -y, --yes              Answer 'yes' to prompts, suppress non-essential output
+			-- -z, --show-hash-presets Show information on available hash presets
 """,
 """,
 	'notes': """
 	'notes': """
+
+With --autosign, the TX file argument is omitted, and the last submitted TX
+file on the removable device will be used.
+
+If no outputs are specified, the original outputs will be used for the
+replacement transaction, otherwise a new transaction will be created with the
+outputs listed on the command line.  The syntax for the output arguments is
+identical to that of ‘mmgen-txcreate’.
+
+The user should take care to select a fee sufficient to ensure the original
+transaction is replaced in the mempool.
+
 {e}{s}
 {e}{s}
 Seed source files must have the canonical extensions listed in the 'FileExt'
 Seed source files must have the canonical extensions listed in the 'FileExt'
 column below:
 column below:
@@ -88,6 +103,8 @@ column below:
 """
 """
 	},
 	},
 	'code': {
 	'code': {
+		'usage': lambda cfg, proto, help_notes, s: s.format(
+			u_args = help_notes('txcreate_args', 'tx')),
 		'options': lambda cfg, help_notes, proto, s: s.format(
 		'options': lambda cfg, help_notes, proto, s: s.format(
 			cfg     = cfg,
 			cfg     = cfg,
 			gc      = gc,
 			gc      = gc,
@@ -108,15 +125,22 @@ column below:
 
 
 cfg = Config(opts_data=opts_data)
 cfg = Config(opts_data=opts_data)
 
 
-if not cfg.autosign:
-	tx_file = cfg._args.pop(0)
-	from .fileutil import check_infile
-	check_infile(tx_file)
-
 from .tx import CompletedTX, BumpTX, UnsignedTX, OnlineSignedTX
 from .tx import CompletedTX, BumpTX, UnsignedTX, OnlineSignedTX
 from .tx.sign import txsign, get_seed_files, get_keyaddrlist, get_keylist
 from .tx.sign import txsign, get_seed_files, get_keyaddrlist, get_keylist
 
 
-seed_files = get_seed_files(cfg, cfg._args) if (cfg._args or cfg.send) else None
+seed_files = get_seed_files(
+	cfg,
+	cfg._args,
+	ignore_dfl_wallet = not cfg.send,
+	empty_ok = not cfg.send)
+
+if cfg.autosign:
+	if cfg.send:
+		die(1, '--send cannot be used together with --autosign')
+else:
+	tx_file = cfg._args.pop()
+	from .fileutil import check_infile
+	check_infile(tx_file)
 
 
 from .ui import do_license_msg
 from .ui import do_license_msg
 do_license_msg(cfg)
 do_license_msg(cfg)
@@ -158,33 +182,17 @@ async def main():
 		check_sent = cfg.autosign or sign_and_send,
 		check_sent = cfg.autosign or sign_and_send,
 		twctl = await TwCtl(cfg, orig_tx.proto) if orig_tx.proto.tokensym else None)
 		twctl = await TwCtl(cfg, orig_tx.proto) if orig_tx.proto.tokensym else None)
 
 
-	from .rpc import rpc_init
-	tx.rpc = await rpc_init(cfg, tx.proto)
-
-	msg('Creating replacement transaction')
-
-	tx.check_sufficient_funds_for_bump()
+	tx.orig_rel_fee = tx.get_orig_rel_fee()
 
 
-	output_idx = tx.choose_output()
-
-	if not silent:
-		msg(f'Minimum fee for new transaction: {tx.min_fee.hl()} {tx.proto.coin}')
-
-	tx.usr_fee = tx.get_usr_fee_interactive(fee=cfg.fee, desc='User-selected')
-
-	tx.bump_fee(output_idx, tx.usr_fee)
-
-	assert tx.fee <= tx.proto.max_tx_fee
-
-	if not cfg.yes:
-		tx.add_comment()   # edits an existing comment
-
-	await tx.create_serialized(bump=True)
-
-	tx.add_timestamp()
-	tx.add_blockcount()
-
-	cfg._util.qmsg('Fee successfully increased')
+	if cfg._args:
+		tx.new_outputs = True
+		tx.is_swap = False
+		tx.outputs = tx.OutputList(tx)
+		tx.cfg = cfg # NB: with --automount, must use current cfg opts, not those from orig_tx
+		await tx.create(cfg._args, caller='txdo' if sign_and_send else 'txcreate')
+	else:
+		tx.new_outputs = False
+		await tx.create_feebump(silent=silent)
 
 
 	if not silent:
 	if not silent:
 		msg(green('\nREPLACEMENT TRANSACTION:'))
 		msg(green('\nREPLACEMENT TRANSACTION:'))

+ 1 - 1
mmgen/main_txcreate.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_txdo.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_txsend.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_txsign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_wallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/main_xmrwallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/mn_entry.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/msg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/obj.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/objmethods.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/opts.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/passwdlist.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/platform/darwin/util.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/bch/cashaddr.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/bch/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/addrdata.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/daemon.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/misc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/msg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/regtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/btc/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/addresses.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/bal.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/ctl.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/json.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/prune.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tw/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 14 - 5
mmgen/proto/btc/tw/txhistory.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -23,6 +23,8 @@ from .rpc import BitcoinTwRPC
 
 
 class BitcoinTwTransaction:
 class BitcoinTwTransaction:
 
 
+	no_address_str = '[DATA]'
+
 	def __init__(self, parent, proto, rpc,
 	def __init__(self, parent, proto, rpc,
 			idx,          # unique numeric identifier of this transaction in listing
 			idx,          # unique numeric identifier of this transaction in listing
 			unspent_info, # addrs in wallet with balances: {'mmid': {'addr', 'comment', 'amt'}}
 			unspent_info, # addrs in wallet with balances: {'mmid': {'addr', 'comment', 'amt'}}
@@ -58,7 +60,9 @@ class BitcoinTwTransaction:
 			_d = namedtuple('vout_info', ['txid', 'coin_addr', 'twlabel', 'data'])
 			_d = namedtuple('vout_info', ['txid', 'coin_addr', 'twlabel', 'data'])
 			def gen():
 			def gen():
 				for d in data:
 				for d in data:
-					addr = d.data['scriptPubKey'].get('address') or d.data['scriptPubKey']['addresses'][0]
+					addr = (
+						d.data['scriptPubKey'].get('address') or
+						d.data['scriptPubKey'].get('addresses',[self.no_address_str])[0])
 					yield _d(
 					yield _d(
 						txid = d.txid,
 						txid = d.txid,
 						coin_addr = addr,
 						coin_addr = addr,
@@ -161,7 +165,9 @@ class BitcoinTwTransaction:
 						i = CoinTxID(e.txid).hl(color=color),
 						i = CoinTxID(e.txid).hl(color=color),
 						n = (nocolor, red)[color](str(e.data['n']).ljust(3)),
 						n = (nocolor, red)[color](str(e.data['n']).ljust(3)),
 						a = CoinAddr(self.proto, e.coin_addr).fmt(
 						a = CoinAddr(self.proto, e.coin_addr).fmt(
-							addr_view_pref, width=self.max_addrlen[src], color=color),
+							addr_view_pref, width=self.max_addrlen[src], color=color)
+								if e.coin_addr != self.no_address_str else
+							CoinAddr.fmtc(e.coin_addr, width=self.max_addrlen[src], color=color),
 						A = self.proto.coin_amt(e.data['value']).fmt(color=color)
 						A = self.proto.coin_amt(e.data['value']).fmt(color=color)
 					).rstrip()
 					).rstrip()
 				else:
 				else:
@@ -193,7 +199,10 @@ class BitcoinTwTransaction:
 				if not mmid:
 				if not mmid:
 					if width and space_left < addr_w:
 					if width and space_left < addr_w:
 						break
 						break
-					yield CoinAddr(self.proto, e.coin_addr).fmt(addr_view_pref, width=addr_w, color=color)
+					yield (
+						CoinAddr(self.proto, e.coin_addr).fmt(addr_view_pref, width=addr_w, color=color)
+							if e.coin_addr != self.no_address_str else
+						CoinAddr.fmtc(e.coin_addr, width=addr_w, color=color))
 					space_left -= addr_w
 					space_left -= addr_w
 				elif mmid.type == 'mmgen':
 				elif mmid.type == 'mmgen':
 					mmid_disp = mmid + bal_star
 					mmid_disp = mmid + bal_star
@@ -312,7 +321,7 @@ class BitcoinTwTxHistory(TwTxHistory, BitcoinTwRPC):
 				_mmp(TwMMGenID(self.proto, i['twmmid']), TwComment(i['comment']))
 				_mmp(TwMMGenID(self.proto, i['twmmid']), TwComment(i['comment']))
 					if i['twmmid'] else _mmp(None, None)
 					if i['twmmid'] else _mmp(None, None)
 			)
 			)
-			for i in data}
+			for i in data if 'address' in i}
 
 
 		if self.sinceblock: # mapping data may be incomplete for inputs, so update from 'listlabels'
 		if self.sinceblock: # mapping data may be incomplete for inputs, so update from 'listlabels'
 			mm_map.update(
 			mm_map.update(

+ 1 - 1
mmgen/proto/btc/tw/unspent.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 5 - 2
mmgen/proto/btc/tx/bump.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -21,6 +21,9 @@ from .unsigned import AutomountUnsigned
 class Bump(Completed, New, TxBase.Bump):
 class Bump(Completed, New, TxBase.Bump):
 	desc = 'fee-bumped transaction'
 	desc = 'fee-bumped transaction'
 
 
+	def get_orig_rel_fee(self):
+		return self.fee_abs2rel(self.sum_inputs() - self.sum_outputs())
+
 	@property
 	@property
 	def min_fee(self):
 	def min_fee(self):
 		return self.sum_inputs() - self.sum_outputs() + self.relay_fee
 		return self.sum_inputs() - self.sum_outputs() + self.relay_fee
@@ -33,7 +36,7 @@ class Bump(Completed, New, TxBase.Bump):
 
 
 	def convert_and_check_fee(self, fee, desc):
 	def convert_and_check_fee(self, fee, desc):
 		ret = super().convert_and_check_fee(fee, desc)
 		ret = super().convert_and_check_fee(fee, desc)
-		if ret is False:
+		if ret is False or self.new_outputs:
 			return ret
 			return ret
 		if ret < self.min_fee:
 		if ret < self.min_fee:
 			msg('{} {c}: {} fee too small. Minimum fee: {} {c} ({} {})'.format(
 			msg('{} {c}: {} fee too small. Minimum fee: {} {c} ({} {})'.format(

+ 1 - 1
mmgen/proto/btc/tx/completed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/info.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 4 - 4
mmgen/proto/btc/tx/new.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -135,9 +135,9 @@ class New(Base, TxNew):
 		if len(self.nondata_outputs) > 1 and not self.chg_output.mmid:
 		if len(self.nondata_outputs) > 1 and not self.chg_output.mmid:
 			do_err()
 			do_err()
 
 
-	async def create_serialized(self, locktime=None, bump=None):
+	async def create_serialized(self, locktime=None):
 
 
-		if not bump:
+		if not self.is_bump:
 			# Set all sequence numbers to the same value, in conformity with the behavior of most modern wallets:
 			# Set all sequence numbers to the same value, in conformity with the behavior of most modern wallets:
 			do_rbf = self.proto.cap('rbf') and not self.cfg.no_rbf
 			do_rbf = self.proto.cap('rbf') and not self.cfg.no_rbf
 			seqnum_val = self.proto.max_int - (2 if do_rbf else 1 if locktime else 0)
 			seqnum_val = self.proto.max_int - (2 if do_rbf else 1 if locktime else 0)
@@ -158,7 +158,7 @@ class New(Base, TxNew):
 
 
 		ret = await self.rpc.call('createrawtransaction', inputs_list, outputs_dict)
 		ret = await self.rpc.call('createrawtransaction', inputs_list, outputs_dict)
 
 
-		if locktime and not bump:
+		if locktime and not self.is_bump:
 			msg(f'Setting nLockTime to {self.info.strfmt_locktime(locktime)}!')
 			msg(f'Setting nLockTime to {self.info.strfmt_locktime(locktime)}!')
 			assert isinstance(locktime, int), 'locktime value not an integer'
 			assert isinstance(locktime, int), 'locktime value not an integer'
 			self.locktime = locktime
 			self.locktime = locktime

+ 1 - 1
mmgen/proto/btc/tx/new_swap.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/online.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/op_return_data.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/signed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/status.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/btc/tx/unsigned.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/etc/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/addrdata.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/eth/addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/contract.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/eth/daemon.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/misc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/msg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tw/addresses.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tw/bal.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/eth/tw/ctl.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/eth/tw/json.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tw/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tw/unspent.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/proto/eth/tw/view.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tx/base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 4 - 1
mmgen/proto/eth/tx/bump.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -21,6 +21,9 @@ from .new import New, TokenNew
 class Bump(Completed, New, TxBase.Bump):
 class Bump(Completed, New, TxBase.Bump):
 	desc = 'fee-bumped transaction'
 	desc = 'fee-bumped transaction'
 
 
+	def get_orig_rel_fee(self): # disable this check for ETH
+		return 0
+
 	@property
 	@property
 	def min_fee(self):
 	def min_fee(self):
 		return self.fee * Decimal('1.101')
 		return self.fee * Decimal('1.101')

+ 1 - 1
mmgen/proto/eth/tx/completed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tx/info.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 2 - 2
mmgen/proto/eth/tx/new.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -65,7 +65,7 @@ class New(Base, TxBase.New):
 	# Instead of serializing tx data as with BTC, just create a JSON dump.
 	# Instead of serializing tx data as with BTC, just create a JSON dump.
 	# This complicates things but means we avoid using the rlp library to deserialize the data,
 	# This complicates things but means we avoid using the rlp library to deserialize the data,
 	# thus removing an attack vector
 	# thus removing an attack vector
-	async def create_serialized(self, locktime=None, bump=None):
+	async def create_serialized(self, locktime=None):
 		assert len(self.inputs) == 1, 'Transaction has more than one input!'
 		assert len(self.inputs) == 1, 'Transaction has more than one input!'
 		o_num = len(self.outputs)
 		o_num = len(self.outputs)
 		o_ok = 0 if self.usr_contract_data else 1
 		o_ok = 0 if self.usr_contract_data else 1

+ 1 - 1
mmgen/proto/eth/tx/online.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tx/signed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tx/status.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/eth/tx/unsigned.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/ltc/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/secp256k1/keygen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/xmr/addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/xmr/daemon.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/xmr/keygen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/xmr/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/xmr/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/zec/addrgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/zec/keygen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/proto/zec/params.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/protocol.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/pyversion.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/seed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/seedsplit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/sha2.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/subseed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/term.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/test.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tool/api.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/coin.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/file.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/filecrypt.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/fileutil.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/help.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/mnemonic.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/util.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tool/wallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tw/addresses.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/bal.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tw/ctl.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tw/json.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/prune.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/shared.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/txhistory.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tw/unspent.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tw/view.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tx/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 2 - 1
mmgen/tx/base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -79,6 +79,7 @@ class Base(MMGenObject):
 	locktime     = None
 	locktime     = None
 	chain        = None
 	chain        = None
 	signed       = False
 	signed       = False
+	is_bump      = False
 	is_swap      = False
 	is_swap      = False
 	file_format  = 'json'
 	file_format  = 'json'
 	non_mmgen_inputs_msg = f"""
 	non_mmgen_inputs_msg = f"""

+ 46 - 3
mmgen/tx/bump.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -14,12 +14,13 @@ tx.bump: transaction bump class
 
 
 from .new import New
 from .new import New
 from .completed import Completed
 from .completed import Completed
-from ..util import msg, is_int, die
+from ..util import msg, ymsg, is_int, die
 
 
 class Bump(Completed, New):
 class Bump(Completed, New):
 	desc = 'fee-bumped transaction'
 	desc = 'fee-bumped transaction'
 	ext  = 'rawtx'
 	ext  = 'rawtx'
 	bump_output_idx = None
 	bump_output_idx = None
+	is_bump = True
 
 
 	def __init__(self, check_sent, *args, **kwargs):
 	def __init__(self, check_sent, *args, **kwargs):
 
 
@@ -30,11 +31,53 @@ class Bump(Completed, New):
 
 
 		# If sending, require original tx to be sent
 		# If sending, require original tx to be sent
 		if check_sent and not self.coin_txid:
 		if check_sent and not self.coin_txid:
-			die(1, 'Transaction {self.txid!r} was not broadcast to the network')
+			die(1, f'Transaction {self.txid!r} was not broadcast to the network')
 
 
 		self.coin_txid = ''
 		self.coin_txid = ''
 		self.sent_timestamp = None
 		self.sent_timestamp = None
 
 
+	async def get_inputs(self, outputs_sum):
+		return True
+
+	def check_bumped_fee_ok(self, abs_fee):
+		orig = int(self.orig_rel_fee)
+		new = int(self.fee_abs2rel(abs_fee))
+		if new <= orig:
+			ymsg('New fee ({b} {d}) <= original fee ({a} {d}). Please choose a higher fee'.format(
+				a=orig, b=new, d=self.rel_fee_disp))
+			return False
+		return True
+
+	async def create_feebump(self, silent):
+
+		from ..rpc import rpc_init
+		self.rpc = await rpc_init(self.cfg, self.proto)
+
+		msg('Creating replacement transaction')
+
+		self.check_sufficient_funds_for_bump()
+
+		output_idx = self.choose_output()
+
+		if not silent:
+			msg(f'Minimum fee for new transaction: {self.min_fee.hl()} {self.proto.coin}')
+
+		self.usr_fee = self.get_usr_fee_interactive(fee=self.cfg.fee, desc='User-selected')
+
+		self.bump_fee(output_idx, self.usr_fee)
+
+		assert self.fee <= self.proto.max_tx_fee
+
+		if not self.cfg.yes:
+			self.add_comment()   # edits an existing comment
+
+		await self.create_serialized()
+
+		self.add_timestamp()
+		self.add_blockcount()
+
+		self.cfg._util.qmsg('Fee successfully increased')
+
 	def check_sufficient_funds_for_bump(self):
 	def check_sufficient_funds_for_bump(self):
 		if not [o.amt for o in self.outputs if o.amt >= self.min_fee]:
 		if not [o.amt for o in self.outputs if o.amt >= self.min_fee]:
 			die(1,
 			die(1,

+ 1 - 1
mmgen/tx/completed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tx/file.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/tx/info.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 81 - 62
mmgen/tx/new.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -137,21 +137,24 @@ class New(Base):
 			if fee:
 			if fee:
 				abs_fee = self.convert_and_check_fee(fee, desc)
 				abs_fee = self.convert_and_check_fee(fee, desc)
 			if abs_fee:
 			if abs_fee:
-				prompt = '{a} TX fee{b}: {c}{d} {e} ({f} {g})\n'.format(
-					a = desc,
-					b = (f' (after {self.cfg.fee_adjust:.2f}X adjustment)'
-							if self.cfg.fee_adjust != 1 and desc.startswith('Network-estimated')
-								else ''),
-					c = ('', '≈')[self.fee_is_approximate],
-					d = abs_fee.hl(),
-					e = self.coin,
-					f = pink(self.fee_abs2rel(abs_fee)),
-					g = self.rel_fee_disp)
-				from ..ui import keypress_confirm
-				if self.cfg.yes or keypress_confirm(self.cfg, prompt+'OK?', default_yes=True):
-					if self.cfg.yes:
-						msg(prompt)
-					return abs_fee
+				if self.is_bump and not self.check_bumped_fee_ok(abs_fee):
+					pass
+				else:
+					prompt = '{a} TX fee{b}: {c}{d} {e} ({f} {g})\n'.format(
+						a = desc,
+						b = (f' (after {self.cfg.fee_adjust:.2f}X adjustment)'
+								if self.cfg.fee_adjust != 1 and desc.startswith('Network-estimated')
+									else ''),
+						c = ('', '≈')[self.fee_is_approximate],
+						d = abs_fee.hl(),
+						e = self.coin,
+						f = pink(self.fee_abs2rel(abs_fee)),
+						g = self.rel_fee_disp)
+					from ..ui import keypress_confirm
+					if self.cfg.yes or keypress_confirm(self.cfg, prompt+'OK?', default_yes=True):
+						if self.cfg.yes:
+							msg(prompt)
+						return abs_fee
 			fee = line_input(self.cfg, self.usr_fee_prompt)
 			fee = line_input(self.cfg, self.usr_fee_prompt)
 			desc = 'User-selected'
 			desc = 'User-selected'
 
 
@@ -363,46 +366,51 @@ class New(Base):
 		self.inputs = type(self.inputs)(self, list(gen_inputs()))
 		self.inputs = type(self.inputs)(self, list(gen_inputs()))
 
 
 	async def get_funds_available(self, fee, outputs_sum):
 	async def get_funds_available(self, fee, outputs_sum):
-		in_ = self.sum_inputs()
-		out = outputs_sum + fee
-		return self._funds_available(in_ >= out, in_ - out if in_ >= out else out - in_)
-
-	async def get_inputs_from_user(self, outputs_sum):
-
-		while True:
-			sel_nums = (
-				self.get_unspent_nums_from_inputs_opt if self.cfg.inputs else
-				self.get_unspent_nums_from_user
-			)(self.twuo.data)
-
-			msg(f'Selected output{suf(sel_nums)}: {{}}'.format(' '.join(str(n) for n in sel_nums)))
-			sel_unspent = MMGenList(self.twuo.data[i-1] for i in sel_nums)
-
-			inputs_sum = sum(s.amt for s in sel_unspent)
-			if not await self.precheck_sufficient_funds(inputs_sum, sel_unspent, outputs_sum):
-				continue
+		in_sum = self.sum_inputs()
+		out_sum = outputs_sum + fee
+		return self._funds_available(
+			in_sum >= out_sum,
+			# CoinAmt must be non-negative, so cannot use abs():
+			in_sum - out_sum if in_sum >= out_sum else out_sum - in_sum)
+
+	async def get_inputs(self, outputs_sum):
+		sel_nums = (
+			self.get_unspent_nums_from_inputs_opt if self.cfg.inputs else
+			self.get_unspent_nums_from_user
+		)(self.twuo.data)
+
+		msg(f'Selected output{suf(sel_nums)}: {{}}'.format(' '.join(str(n) for n in sel_nums)))
+		sel_unspent = MMGenList(self.twuo.data[i-1] for i in sel_nums)
+
+		if not await self.precheck_sufficient_funds(
+				sum(s.amt for s in sel_unspent),
+				sel_unspent,
+				outputs_sum):
+			return False
+		self.copy_inputs_from_tw(sel_unspent)  # makes self.inputs
+		return True
 
 
-			self.copy_inputs_from_tw(sel_unspent)  # makes self.inputs
+	async def get_fee(self, fee, outputs_sum):
 
 
-			if self.cfg.fee:
-				self.usr_fee = self.get_usr_fee_interactive(self.cfg.fee, 'User-selected')
-			else:
-				fee_per_kb, fe_type = await self.get_rel_fee_from_network()
-				self.usr_fee = self.get_usr_fee_interactive(
-					None if fee_per_kb is None else self.fee_est2abs(fee_per_kb, fe_type),
-					self.network_estimated_fee_label)
+		if fee:
+			self.usr_fee = self.get_usr_fee_interactive(fee, 'User-selected')
+		else:
+			fee_per_kb, fe_type = await self.get_rel_fee_from_network()
+			self.usr_fee = self.get_usr_fee_interactive(
+				None if fee_per_kb is None else self.fee_est2abs(fee_per_kb, fe_type),
+				self.network_estimated_fee_label)
 
 
-			funds = await self.get_funds_available(self.usr_fee, outputs_sum)
+		funds = await self.get_funds_available(self.usr_fee, outputs_sum)
 
 
-			if funds.is_positive:
-				p = self.final_inputs_ok_msg(funds.amt)
-				from ..ui import keypress_confirm
-				if self.cfg.yes or keypress_confirm(self.cfg, p+'. OK?', default_yes=True):
-					if self.cfg.yes:
-						msg(p)
-					return funds.amt
-			else:
-				self.warn_insufficient_funds(funds.amt, self.coin)
+		if funds.is_positive:
+			p = self.final_inputs_ok_msg(funds.amt)
+			from ..ui import keypress_confirm
+			if self.cfg.yes or keypress_confirm(self.cfg, p+'. OK?', default_yes=True):
+				if self.cfg.yes:
+					msg(p)
+				return funds.amt
+		else:
+			self.warn_insufficient_funds(funds.amt, self.coin)
 
 
 	async def create(self, cmd_args, locktime=None, do_info=False, caller='txcreate'):
 	async def create(self, cmd_args, locktime=None, do_info=False, caller='txcreate'):
 
 
@@ -426,21 +434,22 @@ class New(Base):
 				self.get_addrdata_from_files(self.proto, addrfile_args),
 				self.get_addrdata_from_files(self.proto, addrfile_args),
 				await TwAddrData(self.cfg, self.proto, twctl=self.twctl))
 				await TwAddrData(self.cfg, self.proto, twctl=self.twctl))
 
 
-		self.twuo = await TwUnspentOutputs(
-			self.cfg,
-			self.proto,
-			minconf = self.cfg.minconf,
-			addrs = await self.get_input_addrs_from_inputs_opt())
-
-		await self.twuo.get_data()
+		if not self.is_bump:
+			self.twuo = await TwUnspentOutputs(
+				self.cfg,
+				self.proto,
+				minconf = self.cfg.minconf,
+				addrs = await self.get_input_addrs_from_inputs_opt())
+			await self.twuo.get_data()
 
 
 		from ..ui import do_license_msg
 		from ..ui import do_license_msg
 		do_license_msg(self.cfg)
 		do_license_msg(self.cfg)
 
 
-		if not self.cfg.inputs:
+		if not (self.is_bump or self.cfg.inputs):
 			await self.twuo.view_filter_and_sort()
 			await self.twuo.view_filter_and_sort()
 
 
-		self.twuo.display_total()
+		if not self.is_bump:
+			self.twuo.display_total()
 
 
 		if do_info:
 		if do_info:
 			del self.twuo.twctl
 			del self.twuo.twctl
@@ -453,7 +462,14 @@ class New(Base):
 			f'{outputs_sum.hl()} {self.dcoin}' if outputs_sum else 'Unknown'
 			f'{outputs_sum.hl()} {self.dcoin}' if outputs_sum else 'Unknown'
 		))
 		))
 
 
-		funds_left = await self.get_inputs_from_user(outputs_sum)
+		while True:
+			if not await self.get_inputs(outputs_sum):
+				continue
+			fee_hint = None
+			if self.is_swap:
+				fee_hint = self.update_vault_output(self.vault_output.amt or self.sum_inputs())
+			if funds_left := await self.get_fee(fee_hint or self.cfg.fee, outputs_sum):
+				break
 
 
 		self.check_non_mmgen_inputs(caller)
 		self.check_non_mmgen_inputs(caller)
 
 
@@ -473,6 +489,9 @@ class New(Base):
 
 
 		self.cfg._util.qmsg('Transaction successfully created')
 		self.cfg._util.qmsg('Transaction successfully created')
 
 
+		if self.is_bump:
+			return
+
 		from . import UnsignedTX
 		from . import UnsignedTX
 		new = UnsignedTX(cfg=self.cfg, data=self.__dict__, automount=self.cfg.autosign)
 		new = UnsignedTX(cfg=self.cfg, data=self.__dict__, automount=self.cfg.autosign)
 
 

+ 2 - 2
mmgen/tx/new_swap.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -18,5 +18,5 @@ class NewSwap(New):
 	desc = 'swap transaction'
 	desc = 'swap transaction'
 	is_swap = True
 	is_swap = True
 
 
-	async def process_swap_cmdline_args(self, cmd_args, addrfile_args):
+	async def process_swap_cmdline_args(self, cmd_args, addrfiles):
 		raise NotImplementedError(f'Swap not implemented for protocol {self.proto.__name__}')
 		raise NotImplementedError(f'Swap not implemented for protocol {self.proto.__name__}')

+ 1 - 1
mmgen/tx/online.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 6 - 6
mmgen/tx/sign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -128,15 +128,15 @@ def get_tx_files(cfg, args):
 		die(1, 'You must specify a raw transaction file!')
 		die(1, 'You must specify a raw transaction file!')
 	return ret
 	return ret
 
 
-def get_seed_files(cfg, args):
+def get_seed_files(cfg, args, ignore_dfl_wallet=False, empty_ok=False):
 	# favor unencrypted seed sources first, as they don't require passwords
 	# favor unencrypted seed sources first, as they don't require passwords
 	ret = _pop_matching_fns(args, get_wallet_extensions('unenc'))
 	ret = _pop_matching_fns(args, get_wallet_extensions('unenc'))
 	from ..filename import find_file_in_dir
 	from ..filename import find_file_in_dir
-	wf = find_file_in_dir(get_wallet_cls('mmgen'), cfg.data_dir) # Make this the first encrypted ss in the list
-	if wf:
-		ret.append(wf)
+	if not ignore_dfl_wallet: # Make this the first encrypted ss in the list
+		if wf := find_file_in_dir(get_wallet_cls('mmgen'), cfg.data_dir):
+			ret.append(wf)
 	ret += _pop_matching_fns(args, get_wallet_extensions('enc'))
 	ret += _pop_matching_fns(args, get_wallet_extensions('enc'))
-	if not (ret or cfg.mmgen_keys_from_file or cfg.keys_from_file): # or cfg.use_wallet_dat
+	if not (ret or empty_ok or cfg.mmgen_keys_from_file or cfg.keys_from_file): # or cfg.use_wallet_dat
 		die(1, 'You must specify a seed or key source!')
 		die(1, 'You must specify a seed or key source!')
 	return ret
 	return ret
 
 

+ 1 - 1
mmgen/tx/signed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tx/status.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tx/unsigned.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/tx/util.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/ui.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/util.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/util2.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/bip39.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/brain.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/dieroll.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/enc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/incog.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/incog_base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/incog_hex.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/incog_hidden.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/mmgen.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/mmhex.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/mnemonic.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/plainhex.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/seed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/unenc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wallet/words.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/wordlist/electrum.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/wordlist/tirosh.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/xmrseed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
mmgen/xmrwallet/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/file/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/file/outputs.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/file/tx.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/include.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/create.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/dump.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/export.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/import.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/label.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/new.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/relay.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/restore.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/sign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/spec.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/submit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/sweep.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/sync.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/txview.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/view.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/ops/wallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
mmgen/xmrwallet/rpc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
scripts/create-token.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
scripts/exec_wrapper.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
scripts/txsign-eval-exploit.diff

@@ -1,5 +1,5 @@
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
 # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
setup.cfg

@@ -1,5 +1,5 @@
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
setup.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/altcointest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/clean.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/cmdtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/cfg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/cmdtest_d/common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 76 - 23
test/cmdtest_d/ct_automount.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -61,6 +61,13 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 		('alice_txsend2',                    'sending the transaction'),
 		('alice_txsend2',                    'sending the transaction'),
 		('alice_txbump3',                    'bumping the transaction'),
 		('alice_txbump3',                    'bumping the transaction'),
 		('alice_txsend3',                    'sending the bumped transaction'),
 		('alice_txsend3',                    'sending the bumped transaction'),
+		('alice_txbump4',                    'bumping the transaction (new outputs, fee too low)'),
+		('alice_txbump_abort1',              'aborting the transaction'),
+		('alice_txbump5',                    'bumping the transaction (new outputs)'),
+		('alice_txsend5',                    'sending the bumped transaction'),
+		('alice_txstatus5',                  'getting transaction status (in mempool)'),
+		('generate',                         'mining a block'),
+		('alice_bal2',                       'checking Alice’s balance'),
 		('wait_loop_kill',                   'stopping autosign wait loop'),
 		('wait_loop_kill',                   'stopping autosign wait loop'),
 		('stop',                             'stopping regtest daemon'),
 		('stop',                             'stopping regtest daemon'),
 		('txview',                           'viewing transactions'),
 		('txview',                           'viewing transactions'),
@@ -78,7 +85,10 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 
 
 		self.opts.append('--alice')
 		self.opts.append('--alice')
 
 
-	def _alice_txcreate(self, chg_addr, opts=[], exit_val=0, expect_str=None, data_arg=None):
+	def _alice_txcreate(self, chg_addr, opts=[], exit_val=0, expect_str=None, data_arg=None, need_rbf=False):
+
+		if need_rbf and not self.proto.cap('rbf'):
+			return 'skip'
 
 
 		def do_return():
 		def do_return():
 			if expect_str:
 			if expect_str:
@@ -120,9 +130,7 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 	alice_txcreate3 = alice_txcreate2
 	alice_txcreate3 = alice_txcreate2
 
 
 	def alice_txcreate4(self):
 	def alice_txcreate4(self):
-		if cfg.coin == 'BCH':
-			return 'skip'
-		return self._alice_txcreate(chg_addr='L:4')
+		return self._alice_txcreate(chg_addr='L:4', need_rbf=True)
 
 
 	def _alice_txsend_abort(self, err=False, send_resp='y', expect=None, shred_expect=[]):
 	def _alice_txsend_abort(self, err=False, send_resp='y', expect=None, shred_expect=[]):
 		self.insert_device_online()
 		self.insert_device_online()
@@ -170,16 +178,19 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 		return self._alice_txsend('This one’s worth a comment', no_wait=True)
 		return self._alice_txsend('This one’s worth a comment', no_wait=True)
 
 
 	def alice_txsend2(self):
 	def alice_txsend2(self):
-		if cfg.coin == 'BCH':
-			return 'skip'
-		return self._alice_txsend()
+		return self._alice_txsend(need_rbf=True)
 
 
 	def alice_txsend3(self):
 	def alice_txsend3(self):
-		if cfg.coin == 'BCH':
+		return self._alice_txsend(need_rbf=True)
+
+	def alice_txsend5(self):
+		return self._alice_txsend(need_rbf=True)
+
+	def _alice_txstatus(self, expect, exit_val=None, need_rbf=False):
+
+		if need_rbf and not self.proto.cap('rbf'):
 			return 'skip'
 			return 'skip'
-		return self._alice_txsend()
 
 
-	def _alice_txstatus(self, expect, exit_val=None):
 		self.insert_device_online()
 		self.insert_device_online()
 		t = self.spawn(
 		t = self.spawn(
 				'mmgen-txsend',
 				'mmgen-txsend',
@@ -203,9 +214,17 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 	def alice_txstatus4(self):
 	def alice_txstatus4(self):
 		return self._alice_txstatus('1 confirmation', 0)
 		return self._alice_txstatus('1 confirmation', 0)
 
 
-	def _alice_txsend(self, comment=None, no_wait=False):
+	def alice_txstatus5(self):
+		return self._alice_txstatus('in mempool', need_rbf=True)
+
+	def _alice_txsend(self, comment=None, no_wait=False, need_rbf=False):
+
+		if need_rbf and not self.proto.cap('rbf'):
+			return 'skip'
+
 		if not no_wait:
 		if not no_wait:
 			self._wait_signed('transaction')
 			self._wait_signed('transaction')
+
 		self.insert_device_online()
 		self.insert_device_online()
 		t = self.spawn('mmgen-txsend', ['--alice', '--quiet', '--autosign'])
 		t = self.spawn('mmgen-txsend', ['--alice', '--quiet', '--autosign'])
 		t.view_tx('t')
 		t.view_tx('t')
@@ -224,22 +243,30 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 		self.remove_device_online()
 		self.remove_device_online()
 		return t
 		return t
 
 
-	def _alice_txbump(self, bad_tx_desc=None):
-		if cfg.coin == 'BCH':
+	def _alice_txbump(self, fee_opt=None, output_args=[], bad_tx_expect=None, low_fee_fix=None):
+		if not self.proto.cap('rbf'):
 			return 'skip'
 			return 'skip'
 		self.insert_device_online()
 		self.insert_device_online()
 		t = self.spawn(
 		t = self.spawn(
 				'mmgen-txbump',
 				'mmgen-txbump',
-				['--alice', '--autosign'],
-				exit_val = 1 if bad_tx_desc else None)
-		if bad_tx_desc:
+				['--alice', '--autosign']
+				+ ([fee_opt] if fee_opt else [])
+				+ output_args,
+				exit_val = 1 if bad_tx_expect else None)
+		if bad_tx_expect:
 			time.sleep(0.5)
 			time.sleep(0.5)
 			t.expect('Only sent transactions')
 			t.expect('Only sent transactions')
-			t.expect(bad_tx_desc)
+			t.expect(bad_tx_expect)
 		else:
 		else:
-			t.expect(r'to deduct the fee from .* change output\): ', '\n', regex=True)
-			t.expect(r'(Y/n): ', 'y')  # output OK?
-			t.expect('transaction fee: ', '200s\n')
+			if not output_args:
+				t.expect(r'to deduct the fee from .* change output\): ', '\n', regex=True)
+				t.expect(r'(Y/n): ', 'y')  # output OK?
+			if low_fee_fix or not fee_opt:
+				if low_fee_fix:
+					t.expect('Please choose a higher fee')
+				t.expect('transaction fee: ', (low_fee_fix or '200s') + '\n')
+			if output_args:
+				t.expect(r'(Y/n): ', 'y')
 			t.expect(r'(Y/n): ', 'y')  # fee OK?
 			t.expect(r'(Y/n): ', 'y')  # fee OK?
 			t.expect(r'(y/N): ', '\n') # add comment?
 			t.expect(r'(y/N): ', '\n') # add comment?
 			t.expect(r'(y/N): ', 'y')  # save?
 			t.expect(r'(y/N): ', 'y')  # save?
@@ -248,11 +275,37 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtestBDBWallet)
 		return t
 		return t
 
 
 	def alice_txbump1(self):
 	def alice_txbump1(self):
-		return self._alice_txbump(bad_tx_desc='unsigned transaction')
+		return self._alice_txbump(bad_tx_expect='unsigned transaction')
 
 
 	def alice_txbump2(self):
 	def alice_txbump2(self):
 		self._wait_signed('transaction')
 		self._wait_signed('transaction')
-		return self._alice_txbump(bad_tx_desc='unsent transaction')
+		return self._alice_txbump(bad_tx_expect='unsent transaction')
 
 
 	def alice_txbump3(self):
 	def alice_txbump3(self):
 		return self._alice_txbump()
 		return self._alice_txbump()
+
+	def alice_txbump4(self):
+		sid = self._user_sid('alice')
+		return self._alice_txbump(
+			fee_opt = '--fee=3s',
+			output_args = [f'{self.burn_addr},7.654321', f'{sid}:C:1'],
+			low_fee_fix = '300s')
+
+	def alice_txbump_abort1(self):
+		if not self.proto.cap('rbf'):
+			return 'skip'
+		return self._alice_txsend_abort(shred_expect=['Shredding .*arawtx'])
+
+	def alice_txbump5(self):
+		sid = self._user_sid('alice')
+		return self._alice_txbump(
+			fee_opt = '--fee=400s',
+			output_args = ['data:message for posterity', f'{self.burn_addr},7.654321', f'{sid}:C:1'])
+
+	def alice_bal2(self):
+		bals = {
+			'btc': '491.11002204',
+			'ltc': '5491.11002204',
+			'bch': '498.7653392',
+		}
+		return self.user_bal('alice', bals.get(self.coin, None))

+ 1 - 1
test/cmdtest_d/ct_automount_eth.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/cmdtest_d/ct_autosign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_base.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_cfgfile.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.

+ 1 - 1
test/cmdtest_d/ct_chainsplit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_ethdev.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_help.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/cmdtest_d/ct_input.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.

+ 2 - 2
test/cmdtest_d/ct_main.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -1058,7 +1058,7 @@ class CmdTestMain(CmdTestBase, CmdTestShared):
 		return self.txbump(
 		return self.txbump(
 			f7,
 			f7,
 			prepend_args = ['-p1', '-k', non_mm_file, '-M', f1],
 			prepend_args = ['-p1', '-k', non_mm_file, '-M', f1],
-			seed_args    = [f2, f3, f4, f5, f6, f8])
+			seed_args    = [f2, f3, f4, f6, f8])
 
 
 	def walletgen5(self, del_dw_run='dummy'):
 	def walletgen5(self, del_dw_run='dummy'):
 		return self.walletgen()
 		return self.walletgen()

+ 1 - 1
test/cmdtest_d/ct_misc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_opts.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.

+ 1 - 1
test/cmdtest_d/ct_ref.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_ref_3seed.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_ref_altcoin.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 54 - 53
test/cmdtest_d/ct_regtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -54,7 +54,8 @@ from .common import (
 	tw_comment_lat_cyr_gr,
 	tw_comment_lat_cyr_gr,
 	tw_comment_zh,
 	tw_comment_zh,
 	tx_comment_jp,
 	tx_comment_jp,
-	get_env_without_debug_vars)
+	get_env_without_debug_vars,
+	rt_pw)
 
 
 from .ct_base import CmdTestBase
 from .ct_base import CmdTestBase
 from .ct_shared import CmdTestShared
 from .ct_shared import CmdTestShared
@@ -66,14 +67,13 @@ dfl_wcls = get_wallet_cls('mmgen')
 
 
 tx_fee = rtFundAmt = rtFee = rtBals = rtBals_gb = rtBobOp3 = rtAmts = None # ruff
 tx_fee = rtFundAmt = rtFee = rtBals = rtBals_gb = rtBobOp3 = rtAmts = None # ruff
 
 
-rt_pw = 'abc-α'
 rt_data = {
 rt_data = {
 	'tx_fee': {'btc':'0.0001', 'bch':'0.001', 'ltc':'0.01'},
 	'tx_fee': {'btc':'0.0001', 'bch':'0.001', 'ltc':'0.01'},
 	'rtFundAmt': {'btc':'500', 'bch':'500', 'ltc':'5500'},
 	'rtFundAmt': {'btc':'500', 'bch':'500', 'ltc':'5500'},
 	'rtFee': {
 	'rtFee': {
-		'btc': ('20s', '10s', '60s', '31s', '10s', '20s'),
-		'bch': ('20s', '10s', '60s', '0.0001', '10s', '20s'),
-		'ltc': ('1000s', '500s', '1500s', '0.05', '400s', '1000s')
+		'btc': ('20s', '10s', '60s', '31s', '10s', '20s', '40s'),
+		'bch': ('20s', '10s', '60s', '0.0001', '10s', '20s', '40s'),
+		'ltc': ('1000s', '500s', '1500s', '0.05', '400s', '1000s', '1200s')
 	},
 	},
 	'rtBals': {
 	'rtBals': {
 		'btc': ('499.9999488', '399.9998282', '399.9998147', '399.9996877',
 		'btc': ('499.9999488', '399.9998282', '399.9998147', '399.9996877',
@@ -291,8 +291,10 @@ class CmdTestRegtest(CmdTestBase, CmdTestShared):
 		('bob_send_maybe_rbf',         'sending funds to Alice (RBF, if supported)'),
 		('bob_send_maybe_rbf',         'sending funds to Alice (RBF, if supported)'),
 		('get_mempool1',               'mempool (before RBF bump)'),
 		('get_mempool1',               'mempool (before RBF bump)'),
 		('bob_rbf_status1',            'getting status of transaction'),
 		('bob_rbf_status1',            'getting status of transaction'),
-		('bob_rbf_bump',               'bumping RBF transaction'),
+		('bob_rbf_bump_newoutputs',    'bumping RBF transaction (new outputs)'),
 		('get_mempool2',               'mempool (after RBF bump)'),
 		('get_mempool2',               'mempool (after RBF bump)'),
+		('bob_rbf_bump',               'bumping RBF transaction'),
+		('get_mempool3',               'mempool (after RBF bump)'),
 		('bob_rbf_status2',            'getting status of transaction after replacement'),
 		('bob_rbf_status2',            'getting status of transaction after replacement'),
 		('bob_rbf_status3',            'getting status of replacement transaction (mempool)'),
 		('bob_rbf_status3',            'getting status of replacement transaction (mempool)'),
 		('generate',                   'mining a block'),
 		('generate',                   'mining a block'),
@@ -1173,10 +1175,18 @@ class CmdTestRegtest(CmdTestBase, CmdTestShared):
 			t.written_to_file('Fee-bumped transaction')
 			t.written_to_file('Fee-bumped transaction')
 		return t
 		return t
 
 
+	def bob_rbf_bump_newoutputs(self):
+		return self._bob_rbf_bump(
+			['--send', 'data:embedded forever', f'{self.burn_addr},0.1', f'{self._user_sid("bob")}:C:5'],
+			rtFee[6])
+
 	def bob_rbf_bump(self):
 	def bob_rbf_bump(self):
+		return self._bob_rbf_bump(['--send'], rtFee[2])
+
+	def _bob_rbf_bump(self, add_args, fee):
 		ext = ',{}]{x}.regtest.sigtx'.format(rtFee[1][:-1], x='-α' if cfg.debug_utf8 else '')
 		ext = ',{}]{x}.regtest.sigtx'.format(rtFee[1][:-1], x='-α' if cfg.debug_utf8 else '')
 		txfile = self.get_file_with_ext(ext, delete=False, no_dot=True)
 		txfile = self.get_file_with_ext(ext, delete=False, no_dot=True)
-		return self.user_txbump('bob', self.tmpdir, txfile, rtFee[2], add_args=['--send'])
+		return self.user_txbump('bob', self.tmpdir, txfile, fee, add_args=add_args)
 
 
 	def generate(self, num_blocks=1, add_opts=[]):
 	def generate(self, num_blocks=1, add_opts=[]):
 		int(num_blocks)
 		int(num_blocks)
@@ -1197,77 +1207,68 @@ class CmdTestRegtest(CmdTestBase, CmdTestShared):
 		).read().strip()
 		).read().strip()
 		return json.loads(ret) if decode_json else ret
 		return json.loads(ret) if decode_json else ret
 
 
+	def get_mempool1(self):
+		return self._get_mempool_compare_txid(None, 'rbf_txid1')
+
+	def get_mempool2(self):
+		return self._get_mempool_compare_txid('rbf_txid1', 'rbf_txid2')
+
+	def get_mempool3(self):
+		return self._get_mempool_compare_txid('rbf_txid2', 'rbf_txid3')
+
 	def _get_mempool(self, do_msg=False):
 	def _get_mempool(self, do_msg=False):
 		if do_msg:
 		if do_msg:
 			self.spawn('', msg_only=True)
 			self.spawn('', msg_only=True)
 		return self._do_mmgen_regtest(['mempool'], decode_json=True)
 		return self._do_mmgen_regtest(['mempool'], decode_json=True)
 
 
-	def get_mempool1(self):
+	def _get_mempool_compare_txid(self, txid1, txid2):
+		if not self.proto.cap('rbf'):
+			return 'skip'
 		mp = self._get_mempool(do_msg=True)
 		mp = self._get_mempool(do_msg=True)
 		if len(mp) != 1:
 		if len(mp) != 1:
 			die(4, 'Mempool has more or less than one TX!')
 			die(4, 'Mempool has more or less than one TX!')
-		self.write_to_tmpfile('rbf_txid', mp[0]+'\n')
+		if txid1:
+			chk = self.read_from_tmpfile(txid1)
+			if chk.strip() == mp[0]:
+				die(4, 'TX in mempool has not changed!  RBF bump failed')
+		self.write_to_tmpfile(txid2, mp[0]+'\n')
 		return 'ok'
 		return 'ok'
 
 
-	def bob_rbf_status(self, fee, exp1, exp2='', exit_val=None):
+	def _bob_rbf_status(self, fee, exit_val=None, txid=None, confirmations=0):
 		if not self.proto.cap('rbf'):
 		if not self.proto.cap('rbf'):
 			return 'skip'
 			return 'skip'
+		if txid:
+			txid = self.read_from_tmpfile(txid).strip()
+			if confirmations:
+				r1 = f'Replacement transaction has {confirmations} confirmation'
+				r2 = rf'Replacing transactions:.*{txid}'
+			else:
+				r1, r2 = ('Transaction has been replaced', f'{txid} in mempool')
+		elif confirmations:
+			r1, r2 = (f'Transaction has {confirmations} confirmation', '')
+		else:
+			r1, r2 = ('in mempool, replaceable', '')
 		ext = ',{}]{x}.regtest.sigtx'.format(fee[:-1], x='-α' if cfg.debug_utf8 else '')
 		ext = ',{}]{x}.regtest.sigtx'.format(fee[:-1], x='-α' if cfg.debug_utf8 else '')
 		txfile = self.get_file_with_ext(ext, delete=False, no_dot=True)
 		txfile = self.get_file_with_ext(ext, delete=False, no_dot=True)
-		return self.user_txsend_status('bob', txfile, exp1, exp2, exit_val=exit_val)
+		return self.user_txsend_status('bob', txfile, r1, r2, exit_val=exit_val)
 
 
 	def bob_rbf_status1(self):
 	def bob_rbf_status1(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		return self.bob_rbf_status(rtFee[1], 'in mempool, replaceable')
-
-	def get_mempool2(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		mp = self._get_mempool(do_msg=True)
-		if len(mp) != 1:
-			die(4, 'Mempool has more or less than one TX!')
-		chk = self.read_from_tmpfile('rbf_txid')
-		if chk.strip() == mp[0]:
-			die(4, 'TX in mempool has not changed!  RBF bump failed')
-		self.write_to_tmpfile('rbf_txid2', mp[0]+'\n')
-		return 'ok'
+		return self._bob_rbf_status(rtFee[1])
 
 
 	def bob_rbf_status2(self):
 	def bob_rbf_status2(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		new_txid = self.read_from_tmpfile('rbf_txid2').strip()
-		return self.bob_rbf_status(
-			rtFee[1],
-			'Transaction has been replaced',
-			f'{new_txid} in mempool',
-			exit_val = 0)
+		return self._bob_rbf_status(rtFee[1], txid='rbf_txid3')
 
 
 	def bob_rbf_status3(self):
 	def bob_rbf_status3(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		return self.bob_rbf_status(rtFee[2], 'status: in mempool, replaceable')
+		return self._bob_rbf_status(rtFee[2])
 
 
 	def bob_rbf_status4(self):
 	def bob_rbf_status4(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		new_txid = self.read_from_tmpfile('rbf_txid2').strip()
-		return self.bob_rbf_status(rtFee[1],
-			'Replacement transaction has 1 confirmation',
-			rf'Replacing transactions:\s+{new_txid}')
+		return self._bob_rbf_status(rtFee[1], txid='rbf_txid3', confirmations=1, exit_val=0)
 
 
 	def bob_rbf_status5(self):
 	def bob_rbf_status5(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		return self.bob_rbf_status(rtFee[2], 'Transaction has 1 confirmation')
+		return self._bob_rbf_status(rtFee[2], confirmations=1, exit_val=0)
 
 
 	def bob_rbf_status6(self):
 	def bob_rbf_status6(self):
-		if not self.proto.cap('rbf'):
-			return 'skip'
-		new_txid = self.read_from_tmpfile('rbf_txid2').strip()
-		return self.bob_rbf_status(rtFee[1],
-			'Replacement transaction has 2 confirmations',
-			rf'Replacing transactions:\s+{new_txid}')
+		return self._bob_rbf_status(rtFee[1], txid='rbf_txid3', confirmations=2, exit_val=0)
 
 
 	def _gen_pairs(self, n):
 	def _gen_pairs(self, n):
 		from mmgen.tool.api import tool_api
 		from mmgen.tool.api import tool_api

+ 1 - 1
test/cmdtest_d/ct_seedsplit.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_shared.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 5 - 3
test/cmdtest_d/ct_swap.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:
@@ -14,6 +14,8 @@ test.cmdtest_d.ct_swap: asset swap tests for the cmdtest.py test suite
 
 
 from mmgen.protocol import init_proto
 from mmgen.protocol import init_proto
 
 
+from ..include.common import gr_uc
+
 from .ct_regtest import (
 from .ct_regtest import (
 	CmdTestRegtest,
 	CmdTestRegtest,
 	rt_data,
 	rt_data,
@@ -21,7 +23,7 @@ from .ct_regtest import (
 	rt_pw,
 	rt_pw,
 	cfg)
 	cfg)
 
 
-sample1 = '=:ETH.ETH:0x86d526d6624AbC0178cF7296cD538Ecc080A95F1:0/1/0'
+sample1 = gr_uc[:24]
 sample2 = '00010203040506'
 sample2 = '00010203040506'
 
 
 class CmdTestSwap(CmdTestRegtest):
 class CmdTestSwap(CmdTestRegtest):
@@ -53,7 +55,7 @@ class CmdTestSwap(CmdTestRegtest):
 		),
 		),
 		'data': (
 		'data': (
 			'OP_RETURN data operations',
 			'OP_RETURN data operations',
-			('data_tx1_create',  'Creating a transaction with OP_RETURN data (hex-encoded ascii)'),
+			('data_tx1_create',  'Creating a transaction with OP_RETURN data (hex-encoded UTF-8)'),
 			('data_tx1_sign',    'Signing the transaction'),
 			('data_tx1_sign',    'Signing the transaction'),
 			('data_tx1_send',    'Sending the transaction'),
 			('data_tx1_send',    'Sending the transaction'),
 			('data_tx1_chk',     'Checking the sent transaction'),
 			('data_tx1_chk',     'Checking the sent transaction'),

+ 1 - 1
test/cmdtest_d/ct_tool.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.

+ 1 - 1
test/cmdtest_d/ct_wallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/ct_xmr_autosign.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/cmdtest_d/ct_xmrwallet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/cmdtest_d/input.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Project source code repository: https://github.com/mmgen/mmgen-wallet
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.
 # Licensed according to the terms of GPL Version 3.  See LICENSE for details.

+ 1 - 1
test/colortest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test/colortest.py: test color handling for the MMGen suite
 test/colortest.py: test color handling for the MMGen suite

+ 1 - 1
test/gentest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/hashfunc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/include/cfg.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/include/coin_daemon_control.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 2 - 1
test/include/common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by
@@ -205,6 +205,7 @@ def write_to_file(fn, data, binary=False):
 		fn,
 		fn,
 		data,
 		data,
 		quiet = True,
 		quiet = True,
+		no_stdout = True,
 		binary = binary,
 		binary = binary,
 		ignore_opt_outdir = True)
 		ignore_opt_outdir = True)
 
 

+ 1 - 1
test/include/ecc.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/include/pexpect.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/include/test_init.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/include/unit_test.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/misc/tool_api_test.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.misc.tool_api_test: test the MMGen suite tool API
 test.misc.tool_api_test: test the MMGen suite tool API

+ 1 - 1
test/objattrtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/objattrtest_d/oat_btc_mainnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objattrtest_d.oat_btc_mainnet: BTC mainnet test vectors for MMGen data objects
 test.objattrtest_d.oat_btc_mainnet: BTC mainnet test vectors for MMGen data objects

+ 1 - 1
test/objattrtest_d/oat_common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objattrtest_d.oat_common: shared data for MMGen data objects tests
 test.objattrtest_d.oat_common: shared data for MMGen data objects tests

+ 1 - 1
test/objtest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/objtest_d/ot_btc_mainnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_btc_mainnet: BTC mainnet test vectors for MMGen data objects
 test.objtest_d.ot_btc_mainnet: BTC mainnet test vectors for MMGen data objects

+ 1 - 1
test/objtest_d/ot_btc_testnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_btc_testnet: BTC testnet test vectors for MMGen data objects
 test.objtest_d.ot_btc_testnet: BTC testnet test vectors for MMGen data objects

+ 1 - 1
test/objtest_d/ot_common.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_common: shared data for MMGen data objects tests
 test.objtest_d.ot_common: shared data for MMGen data objects tests

+ 1 - 1
test/objtest_d/ot_eth_mainnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_eth_mainnet: ETH mainnet test vectors for MMGen data objects
 test.objtest_d.ot_eth_mainnet: ETH mainnet test vectors for MMGen data objects

+ 1 - 1
test/objtest_d/ot_ltc_mainnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_ltc_mainnet: LTC mainnet test vectors for MMGen data objects
 test.objtest_d.ot_ltc_mainnet: LTC mainnet test vectors for MMGen data objects

+ 1 - 1
test/objtest_d/ot_ltc_testnet.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 
 
 """
 """
 test.objtest_d.ot_ltc_testnet: LTC testnet test vectors for MMGen data objects
 test.objtest_d.ot_ltc_testnet: LTC testnet test vectors for MMGen data objects

+ 1 - 1
test/overlay/__init__.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/scrambletest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/test-release.d/cfg.sh

@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/test-release.sh

@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories:

+ 1 - 1
test/tooltest.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/tooltest2.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # it under the terms of the GNU General Public License as published by

+ 1 - 1
test/tooltest2_d/data.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 #
 #
 # MMGen Wallet, a terminal-based cryptocurrency wallet
 # MMGen Wallet, a terminal-based cryptocurrency wallet
-# Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
+# Copyright (C)2013-2025 The MMGen Project <mmgen@tuta.io>
 # Licensed under the GNU General Public License, Version 3:
 # Licensed under the GNU General Public License, Version 3:
 #   https://www.gnu.org/licenses
 #   https://www.gnu.org/licenses
 # Public project repositories:
 # Public project repositories: