implement MIN_RELAY_TX_FEE

This commit is contained in:
ecdsa 2013-03-24 11:25:17 +01:00
parent 70e82e99ea
commit fc7122008a
4 changed files with 17 additions and 5 deletions

View File

@ -32,6 +32,7 @@ from PyQt4.QtCore import *
import PyQt4.QtCore as QtCore
import PyQt4.QtGui as QtGui
from electrum.interface import DEFAULT_SERVERS
from electrum.bitcoin import MIN_RELAY_TX_FEE
try:
import icons_rc
@ -795,8 +796,8 @@ class ElectrumWindow(QMainWindow):
self.show_message(str(e))
return
if tx.requires_fee(self.wallet.verifier) and fee == 0:
QMessageBox.warning(self, _('Error'), _("This transaction requires a fee, or it will not be propagated by the network."), _('OK'))
if tx.requires_fee(self.wallet.verifier) and fee < MIN_RELAY_TX_FEE:
QMessageBox.warning(self, _('Error'), _("This transaction requires a higher fee, or it will not be propagated by the network."), _('OK'))
return
self.run_hook('send_tx', tx)

View File

@ -35,6 +35,7 @@ MONOSPACE_FONT = 'Lucida Console' if platform.system() == 'Windows' else 'monosp
from electrum.util import format_satoshis
from electrum.interface import DEFAULT_SERVERS
from electrum.bitcoin import MIN_RELAY_TX_FEE
def numbify(entry, is_int = False):
text = entry.get_text().strip()
@ -844,8 +845,8 @@ class ElectrumWindow:
self.show_message(str(e))
return
if tx.requires_fee(self.wallet.verifier) and fee == 0:
self.show_message( "This transaction requires a fee, or it will not be propagated by the network." )
if tx.requires_fee(self.wallet.verifier) and fee < MIN_RELAY_TX_FEE:
self.show_message( "This transaction requires a higher fee, or it will not be propagated by the network." )
return

View File

@ -577,6 +577,7 @@ class BIP32Sequence:
################################## transactions
MIN_RELAY_TX_FEE = 10000
class Transaction:
@ -877,15 +878,23 @@ class Transaction:
def requires_fee(self, verifier):
# see https://en.bitcoin.it/wiki/Transaction_fees
threshold = 57600000
size = len(self.raw)/2
if size >= 10000:
return True
for o in self.outputs:
value = o[1]
if value < 1000000:
return True
sum = 0
for i in self.inputs:
age = verifier.get_confirmations(i["tx_hash"])[0]
sum += i["value"] * age
priority = sum / size
print_error(priority, threshold)
return priority < threshold
return priority < threshold

View File

@ -912,6 +912,7 @@ class Wallet:
height = None
for h in ext_h:
if h == ['*']: continue
print_error(h)
for item in h:
if item.get('tx_hash') == tx_hash:
height = item.get('height')