tx.base: add nondata_outputs property

This commit is contained in:
The MMGen Project 2025-02-15 09:54:20 +00:00
commit be025dc817
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
7 changed files with 17 additions and 9 deletions

View file

@ -1 +1 @@
15.1.dev14
15.1.dev15

View file

@ -295,6 +295,10 @@ class Base(TxBase):
getattr(self.proto.coin_amt, to_unit) /
self.estimate_size()))
@property
def nondata_outputs(self):
return [o for o in self.outputs if not o.data]
@property
def deserialized(self):
if not self._deserialized:

View file

@ -67,7 +67,7 @@ class Completed(Base, TxBase.Completed):
@property
def send_amt(self):
return self.sum_outputs(
exclude = None if len(self.outputs) == 1 else self.chg_idx
exclude = None if len(self.nondata_outputs) == 1 else self.chg_idx
)
def check_txfile_hex_data(self):

View file

@ -132,7 +132,7 @@ class New(Base, TxNew):
cfg = self.cfg,
message = yellow(message),
action = 'Are you sure this is what you want?')
if len(self.outputs) > 1 and not self.chg_output.mmid:
if len(self.nondata_outputs) > 1 and not self.chg_output.mmid:
do_err()
async def create_serialized(self, locktime=None, bump=None):

View file

@ -29,6 +29,10 @@ class Base(TxBase.Base):
usr_contract_data = HexStr('')
disable_fee_check = False
@property
def nondata_outputs(self):
return self.outputs
def pretty_fmt_fee(self, fee):
if fee < 1:
ret = f'{fee:.8f}'.rstrip('0')

View file

@ -49,8 +49,8 @@ class Bump(Completed, New):
return False
return True
if len(self.outputs) == 1:
if check_sufficient_funds(self.outputs[0].amt):
if len(self.nondata_outputs) == 1:
if check_sufficient_funds(self.nondata_outputs[0].amt):
self.bump_output_idx = 0
return 0
else:

View file

@ -245,8 +245,8 @@ class New(Base):
f'{gc.proj_name} Segwit address requested on the command line, '
'but Segwit is not active on this chain')
if not self.outputs:
die(2, 'At least one output must be specified on the command line')
if not self.nondata_outputs:
die(2, 'At least one spending output must be specified on the command line')
self.add_mmaddrs_to_outputs(ad_f, ad_w)
@ -255,7 +255,7 @@ class New(Base):
if self.chg_output is not None:
if self.chg_autoselected:
self.confirm_autoselected_addr(self.chg_output.mmid, 'change address')
elif len(self.outputs) > 1:
elif len(self.nondata_outputs) > 1:
await self.warn_addr_used(self.proto, self.chg_output, 'change address')
def get_addrfiles_from_cmdline(self, cmd_args):
@ -289,7 +289,7 @@ class New(Base):
self.cfg,
'Using {a} as {b}. OK?'.format(
a = mmid.hl(),
b = 'single output address' if len(self.outputs) == 1 else desc),
b = 'single output address' if len(self.nondata_outputs) == 1 else desc),
default_yes = True):
die(1, 'Exiting at user request')