Create a constant for 100000000 and use it

Use same name as is in bitcoind.
Note that one of the constants in text.py had the wrong number
of zeroes previously...
This commit is contained in:
Neil Booth 2015-06-01 11:26:22 +09:00
parent 4d9be9a6d2
commit 03e53a5e01
10 changed files with 51 additions and 50 deletions

View File

@ -23,7 +23,7 @@ from __future__ import absolute_import
import android
from electrum import SimpleConfig, Wallet, WalletStorage, format_satoshis
from electrum.bitcoin import is_address
from electrum.bitcoin import is_address, COIN
from electrum import util
from decimal import Decimal
import datetime, re
@ -585,7 +585,7 @@ def payto_loop():
continue
try:
amount = int( 100000000 * Decimal(amount) )
amount = int(COIN * Decimal(amount))
except Exception:
modal_dialog('Error','Invalid amount')
continue
@ -608,7 +608,7 @@ def payto_loop():
if re.match('^bitcoin:', data):
payto, amount, label, message, _ = util.parse_URI(data)
if amount:
amount = str(amount/100000000)
amount = str(amount / COIN)
droid.fullSetProperty("recipient", "text", payto)
droid.fullSetProperty("amount", "text", amount)
droid.fullSetProperty("message", "text", message)
@ -662,7 +662,7 @@ def receive_loop():
elif event["name"]=="amount":
amount = modal_input('Amount', 'Amount you want to receive (in BTC). ', format_satoshis(receive_amount) if receive_amount else None, "numberDecimal")
if amount is not None:
receive_amount = int(100000000 * Decimal(amount)) if amount else None
receive_amount = int(COIN * Decimal(amount)) if amount else None
out = 'receive'
elif event["name"]=="message":
@ -770,7 +770,7 @@ def settings_loop():
def set_listview():
host, port, p, proxy_config, auto_connect = network.get_parameters()
fee = str( Decimal( wallet.fee_per_kb)/100000000 )
fee = str(Decimal(wallet.fee_per_kb) / COIN)
is_encrypted = 'yes' if wallet.use_encryption else 'no'
protocol = protocol_name(p)
droid.fullShow(settings_layout)
@ -818,10 +818,10 @@ def settings_loop():
elif pos == "3": #fee
fee = modal_input('Transaction fee', 'The fee will be this amount multiplied by the number of inputs in your transaction. ',
str(Decimal(wallet.fee_per_kb)/100000000 ), "numberDecimal")
str(Decimal(wallet.fee_per_kb) / COIN), "numberDecimal")
if fee:
try:
fee = int( 100000000 * Decimal(fee) )
fee = int(COIN * Decimal(fee))
except Exception:
modal_dialog('error','invalid fee value')
wallet.set_fee(fee)

View File

@ -25,7 +25,7 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, GObject, cairo
from decimal import Decimal
from electrum.util import print_error, InvalidPassword
from electrum.bitcoin import is_valid
from electrum.bitcoin import is_valid, COIN
from electrum.wallet import NotEnoughFunds
from electrum import WalletStorage, Wallet
@ -48,7 +48,7 @@ def numbify(entry, is_int = False):
s = s.replace('.','')
s = s[:p] + '.' + s[p:p+8]
try:
amount = int( Decimal(s) * 100000000 )
amount = int(Decimal(s) * COIN)
except Exception:
amount = None
else:
@ -164,7 +164,7 @@ def run_settings_dialog(self):
fee_label.set_size_request(150,10)
fee_label.show()
fee.pack_start(fee_label,False, False, 10)
fee_entry.set_text( str( Decimal(self.wallet.fee_per_kb) /100000000 ) )
fee_entry.set_text(str(Decimal(self.wallet.fee_per_kb) / COIN))
fee_entry.connect('changed', numbify, False)
fee_entry.show()
fee.pack_start(fee_entry,False,False, 10)
@ -196,7 +196,7 @@ def run_settings_dialog(self):
return
try:
fee = int( 100000000 * Decimal(fee) )
fee = int(COIN * Decimal(fee))
except Exception:
show_message("error")
return
@ -698,7 +698,7 @@ class ElectrumWindow:
if not self.funds_error:
if not is_fee:
fee = tx.get_fee()
fee_entry.set_text( str( Decimal( fee ) / 100000000 ) )
fee_entry.set_text(str(Decimal(fee) / COIN))
self.fee_box.show()
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
fee_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
@ -791,12 +791,12 @@ class ElectrumWindow:
return
try:
amount = int( Decimal(amount_entry.get_text()) * 100000000 )
amount = int(Decimal(amount_entry.get_text()) * COIN)
except Exception:
self.show_message( "invalid amount")
return
try:
fee = int( Decimal(fee_entry.get_text()) * 100000000 )
fee = int(Decimal(fee_entry.get_text()) * COIN)
except Exception:
self.show_message( "invalid fee")
return

View File

@ -36,7 +36,7 @@ import shutil
from util import *
bitcoin = lambda v: v * 100000000
bitcoin = lambda v: v * COIN
def IconButton(filename, parent=None):
pixmap = QPixmap(filename)

View File

@ -30,7 +30,7 @@ from PyQt4.QtGui import *
from PyQt4.QtCore import *
import PyQt4.QtCore as QtCore
from electrum.bitcoin import MIN_RELAY_TX_FEE, is_valid
from electrum.bitcoin import MIN_RELAY_TX_FEE, COIN, is_valid
from electrum.plugins import run_hook
import icons_rc
@ -1092,7 +1092,7 @@ class ElectrumWindow(QMainWindow):
return
amount = sum(map(lambda x:x[2], outputs))
confirm_amount = self.config.get('confirm_amount', 100000000)
confirm_amount = self.config.get('confirm_amount', COIN)
if amount >= confirm_amount:
o = '\n'.join(map(lambda x:x[1], outputs))
if not self.question(_("send %(amount)s to %(address)s?")%{ 'amount' : self.format_amount(amount) + ' '+ self.base_unit(), 'address' : o}):

View File

@ -3,7 +3,7 @@ _ = lambda x:x
#from i18n import _
from electrum.wallet import WalletStorage, Wallet
from electrum.util import format_satoshis, set_verbosity, StoreDict
from electrum.bitcoin import is_valid
from electrum.bitcoin import is_valid, COIN
from electrum.network import filter_protocol
import sys, getpass, datetime
@ -125,11 +125,11 @@ class ElectrumGui:
msg = _( "Synchronizing..." )
else:
c, u, x = self.wallet.get_balance()
msg = _("Balance")+": %f "%(Decimal(c) / 100000000)
msg = _("Balance")+": %f "%(Decimal(c) / COIN)
if u:
msg += " [%f unconfirmed]"%(Decimal(u) / 100000000)
msg += " [%f unconfirmed]"%(Decimal(u) / COIN)
if x:
msg += " [%f unmatured]"%(Decimal(x) / 100000000)
msg += " [%f unmatured]"%(Decimal(x) / COIN)
else:
msg = _( "Not connected" )
@ -178,12 +178,12 @@ class ElectrumGui:
print(_('Invalid Bitcoin address'))
return
try:
amount = int( Decimal( self.str_amount) * 100000000 )
amount = int(Decimal(self.str_amount) * COIN)
except Exception:
print(_('Invalid Amount'))
return
try:
fee = int( Decimal( self.str_fee) * 100000000 )
fee = int(Decimal(self.str_fee) * COIN)
except Exception:
print(_('Invalid Fee'))
return

View File

@ -1,10 +1,9 @@
import curses, datetime, locale
from decimal import Decimal
_ = lambda x:x
#from i18n import _
from electrum.util import format_satoshis, set_verbosity
from electrum.util import StoreDict
from electrum.bitcoin import is_valid
from electrum.bitcoin import is_valid, COIN
from electrum import Wallet, WalletStorage
@ -133,11 +132,11 @@ class ElectrumGui:
msg = _("Synchronizing...")
else:
c, u, x = self.wallet.get_balance()
msg = _("Balance")+": %f "%(Decimal(c) / 100000000)
msg = _("Balance")+": %f "%(Decimal(c) / COIN)
if u:
msg += " [%f unconfirmed]"%(Decimal(u) / 100000000)
msg += " [%f unconfirmed]"%(Decimal(u) / COIN)
if x:
msg += " [%f unmatured]"%(Decimal(x) / 100000000)
msg += " [%f unmatured]"%(Decimal(x) / COIN)
else:
msg = _("Not connected")
@ -297,12 +296,12 @@ class ElectrumGui:
self.show_message(_('Invalid Bitcoin address'))
return
try:
amount = int( Decimal( self.str_amount) * 100000000 )
amount = int(Decimal(self.str_amount) * COIN)
except Exception:
self.show_message(_('Invalid Amount'))
return
try:
fee = int( Decimal( self.str_fee) * 100000000 )
fee = int(Decimal(self.str_fee) * COIN)
except Exception:
self.show_message(_('Invalid Fee'))
return
@ -388,7 +387,7 @@ class ElectrumGui:
if out.get('Default GUI'):
self.config.set_key('gui', out['Default GUI'], True)
if out.get('Default fee'):
fee = int ( Decimal( out['Default fee']) *10000000 )
fee = int(Decimal(out['Default fee']) * COIN)
self.config.set_key('fee_per_kb', fee, True)

View File

@ -35,6 +35,7 @@ DUST_THRESHOLD = 546
MIN_RELAY_TX_FEE = 1000
RECOMMENDED_FEE = 50000
COINBASE_MATURITY = 100
COIN = 100000000
# AES encryption
EncodeAES = lambda secret, s: base64.b64encode(aes.encryptData(secret,s))

View File

@ -29,7 +29,7 @@ from decimal import Decimal
import util
from util import print_msg, format_satoshis, print_stderr
import bitcoin
from bitcoin import is_address, hash_160_to_bc_address, hash_160
from bitcoin import is_address, hash_160_to_bc_address, hash_160, COIN
from transaction import Transaction
@ -148,7 +148,7 @@ class Commands:
def listunspent(self):
"""List unspent outputs. Returns the list of unspent transaction outputs in your wallet."""
l = copy.deepcopy(self.wallet.get_spendable_coins(exclude_frozen = False))
for i in l: i["value"] = str(Decimal(i["value"])/100000000)
for i in l: i["value"] = str(Decimal(i["value"])/COIN)
return l
@command('n')
@ -178,7 +178,7 @@ class Commands:
break
else:
raise BaseException('Transaction output not in wallet', prevout_hash+":%d"%prevout_n)
outputs = map(lambda x: ('address', x[0], int(1e8*x[1])), outputs.items())
outputs = map(lambda x: ('address', x[0], int(COIN*x[1])), outputs.items())
tx = Transaction.from_io(tx_inputs, outputs)
if not unsigned:
self.wallet.sign_transaction(tx, self.password)
@ -260,19 +260,19 @@ class Commands:
c, u, x = self.wallet.get_balance()
else:
c, u, x = self.wallet.get_account_balance(account)
out = {"confirmed": str(Decimal(c)/100000000)}
out = {"confirmed": str(Decimal(c)/COIN)}
if u:
out["unconfirmed"] = str(Decimal(u)/100000000)
out["unconfirmed"] = str(Decimal(u)/COIN)
if x:
out["unmatured"] = str(Decimal(x)/100000000)
out["unmatured"] = str(Decimal(x)/COIN)
return out
@command('n')
def getaddressbalance(self, address):
"""Return the balance of an address"""
out = self.network.synchronous_get([('blockchain.address.get_balance', [address])])[0]
out["confirmed"] = str(Decimal(out["confirmed"])/100000000)
out["unconfirmed"] = str(Decimal(out["unconfirmed"])/100000000)
out["confirmed"] = str(Decimal(out["confirmed"])/COIN)
out["unconfirmed"] = str(Decimal(out["unconfirmed"])/COIN)
return out
@command('n')
@ -332,7 +332,7 @@ class Commands:
dest = resolver(destination)
if tx_fee is None:
tx_fee = 0.0001
fee = int(Decimal(tx_fee)*100000000)
fee = int(Decimal(tx_fee)*COIN)
return Transaction.sweep([privkey], self.network, dest, fee)
@command('wp')
@ -350,7 +350,7 @@ class Commands:
resolver = lambda x: None if x is None else self.contacts.resolve(x, nocheck)['address']
change_addr = resolver(change_addr)
domain = None if domain is None else map(resolver, domain)
fee = None if fee is None else int(100000000*Decimal(fee))
fee = None if fee is None else int(COIN*Decimal(fee))
final_outputs = []
for address, amount in outputs:
address = resolver(address)
@ -367,7 +367,7 @@ class Commands:
fee = self.wallet.estimated_fee(dummy_tx)
amount -= fee
else:
amount = int(100000000*Decimal(amount))
amount = int(COIN*Decimal(amount))
final_outputs.append(('address', address, amount))
coins = self.wallet.get_spendable_coins(domain)

View File

@ -254,7 +254,7 @@ def parse_URI(uri):
k = int(m.group(2)) - 8
amount = Decimal(m.group(1)) * pow( Decimal(10) , k)
else:
amount = Decimal(am) * 100000000
amount = Decimal(am) * COIN
if 'message' in pq:
message = pq['message'][0].decode('utf8')
if 'label' in pq:

View File

@ -11,6 +11,7 @@ import re
from ssl import SSLError
from decimal import Decimal
from electrum.bitcoin import COIN
from electrum.plugins import BasePlugin, hook
from electrum.i18n import _
from electrum_gui.qt.util import *
@ -220,7 +221,7 @@ class Plugin(BasePlugin):
@hook
def get_fiat_balance_text(self, btc_balance, r):
# return balance as: 1.23 USD
r[0] = self.create_fiat_balance_text(Decimal(btc_balance) / 100000000)
r[0] = self.create_fiat_balance_text(Decimal(btc_balance) / COIN)
def get_fiat_price_text(self, r):
# return BTC price as: 123.45 USD
@ -240,7 +241,7 @@ class Plugin(BasePlugin):
price_text = "1 BTC~%s"%quote
fiat_currency = quote[-3:]
btc_price = self.btc_rate
fiat_balance = Decimal(btc_price) * (Decimal(btc_balance)/100000000)
fiat_balance = Decimal(btc_price) * Decimal(btc_balance) / COIN
balance_text = "(%.2f %s)" % (fiat_balance,fiat_currency)
text = " " + balance_text + " " + price_text + " "
r2[0] = text
@ -338,20 +339,20 @@ class Plugin(BasePlugin):
tx_info = {'timestamp':int(time.time()), 'value': v}
pass
tx_time = int(tx_info['timestamp'])
tx_value = Decimal(str(tx_info['value'])) / 100000000
tx_value = Decimal(str(tx_info['value'])) / COIN
if self.cur_exchange == "CoinDesk":
tx_time_str = datetime.datetime.fromtimestamp(tx_time).strftime('%Y-%m-%d')
try:
tx_fiat_val = "%.2f %s" % (tx_value * Decimal(self.resp_hist['bpi'][tx_time_str]), "USD")
except KeyError:
tx_fiat_val = "%.2f %s" % (self.btc_rate * Decimal(str(tx_info['value']))/100000000 , "USD")
tx_fiat_val = "%.2f %s" % (self.btc_rate * Decimal(str(tx_info['value']))/COIN , "USD")
elif self.cur_exchange == "Winkdex":
tx_time_str = datetime.datetime.fromtimestamp(tx_time).strftime('%Y-%m-%d') + "T16:00:00-04:00"
try:
tx_rate = self.resp_hist[[x['timestamp'] for x in self.resp_hist].index(tx_time_str)]['price']
tx_fiat_val = "%.2f %s" % (tx_value * Decimal(tx_rate)/Decimal("100.0"), "USD")
except ValueError:
tx_fiat_val = "%.2f %s" % (self.btc_rate * Decimal(tx_info['value'])/100000000 , "USD")
tx_fiat_val = "%.2f %s" % (self.btc_rate * Decimal(tx_info['value'])/COIN , "USD")
except KeyError:
tx_fiat_val = _("No data")
elif self.cur_exchange == "BitcoinVenezuela":
@ -520,7 +521,7 @@ class Plugin(BasePlugin):
exchange_rate = self.exchanger.exchange(Decimal("1.0"), self.fiat_unit())
if exchange_rate is not None:
btc_amount = fiat_amount/exchange_rate
btc_e.setAmount(int(btc_amount*Decimal(100000000)))
btc_e.setAmount(int(btc_amount*Decimal(COIN)))
if fee_e: self.win.update_fee(False)
fiat_e.textEdited.connect(fiat_changed)
def btc_changed():
@ -530,7 +531,7 @@ class Plugin(BasePlugin):
if btc_amount is None:
fiat_e.setText("")
return
fiat_amount = self.exchanger.exchange(Decimal(btc_amount)/Decimal(100000000), self.fiat_unit())
fiat_amount = self.exchanger.exchange(Decimal(btc_amount)/Decimal(COIN), self.fiat_unit())
if fiat_amount is not None:
pos = fiat_e.cursorPosition()
fiat_e.setText("%.2f"%fiat_amount)