mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-09-01 01:35:20 +00:00
change estimated_fee to include 34 bytes per output instead of hard-coded 80 (issue #520)
This commit is contained in:
parent
746225c05d
commit
b9bf3a2ee8
1 changed files with 5 additions and 5 deletions
|
@ -1087,7 +1087,7 @@ class NewWallet:
|
||||||
return [x[1] for x in coins]
|
return [x[1] for x in coins]
|
||||||
|
|
||||||
|
|
||||||
def choose_tx_inputs( self, amount, fixed_fee, domain = None ):
|
def choose_tx_inputs( self, amount, fixed_fee, num_outputs, domain = None ):
|
||||||
""" todo: minimize tx size """
|
""" todo: minimize tx size """
|
||||||
total = 0
|
total = 0
|
||||||
fee = self.fee if fixed_fee is None else fixed_fee
|
fee = self.fee if fixed_fee is None else fixed_fee
|
||||||
|
@ -1107,7 +1107,7 @@ class NewWallet:
|
||||||
v = item.get('value')
|
v = item.get('value')
|
||||||
total += v
|
total += v
|
||||||
inputs.append(item)
|
inputs.append(item)
|
||||||
fee = self.estimated_fee(inputs) if fixed_fee is None else fixed_fee
|
fee = self.estimated_fee(inputs, num_outputs) if fixed_fee is None else fixed_fee
|
||||||
if total >= amount + fee: break
|
if total >= amount + fee: break
|
||||||
else:
|
else:
|
||||||
inputs = []
|
inputs = []
|
||||||
|
@ -1120,8 +1120,8 @@ class NewWallet:
|
||||||
self.fee = fee
|
self.fee = fee
|
||||||
self.storage.put('fee_per_kb', self.fee, True)
|
self.storage.put('fee_per_kb', self.fee, True)
|
||||||
|
|
||||||
def estimated_fee(self, inputs):
|
def estimated_fee(self, inputs, num_outputs):
|
||||||
estimated_size = len(inputs) * 180 + 80 # this assumes non-compressed keys
|
estimated_size = len(inputs) * 180 + num_outputs * 34 # this assumes non-compressed keys
|
||||||
fee = self.fee * int(math.ceil(estimated_size/1000.))
|
fee = self.fee * int(math.ceil(estimated_size/1000.))
|
||||||
return fee
|
return fee
|
||||||
|
|
||||||
|
@ -1282,7 +1282,7 @@ class NewWallet:
|
||||||
for address, x in outputs:
|
for address, x in outputs:
|
||||||
assert is_valid(address), "Address " + address + " is invalid!"
|
assert is_valid(address), "Address " + address + " is invalid!"
|
||||||
amount = sum( map(lambda x:x[1], outputs) )
|
amount = sum( map(lambda x:x[1], outputs) )
|
||||||
inputs, total, fee = self.choose_tx_inputs( amount, fee, domain )
|
inputs, total, fee = self.choose_tx_inputs( amount, fee, len(outputs), domain )
|
||||||
if not inputs:
|
if not inputs:
|
||||||
raise ValueError("Not enough funds")
|
raise ValueError("Not enough funds")
|
||||||
self.add_input_info(inputs)
|
self.add_input_info(inputs)
|
||||||
|
|
Loading…
Add table
Reference in a new issue