mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
commit
c1eef023dc
15 changed files with 86 additions and 115 deletions
|
@ -93,7 +93,7 @@ exe_standalone = EXE(
|
|||
a.scripts,
|
||||
a.binaries,
|
||||
a.datas,
|
||||
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"),
|
||||
name=os.path.join('build\\pyi.win32\\electrum-lbry', cmdline_name + ".exe"),
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=False,
|
||||
|
@ -106,7 +106,7 @@ exe_portable = EXE(
|
|||
a.scripts,
|
||||
a.binaries,
|
||||
a.datas + [ ('is_portable', 'README.md', 'DATA' ) ],
|
||||
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + "-portable.exe"),
|
||||
name=os.path.join('build\\pyi.win32\\electrum-lbry', cmdline_name + "-portable.exe"),
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=False,
|
||||
|
@ -120,7 +120,7 @@ exe_dependent = EXE(
|
|||
pyz,
|
||||
a.scripts,
|
||||
exclude_binaries=True,
|
||||
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name),
|
||||
name=os.path.join('build\\pyi.win32\\electrum-lbry', cmdline_name),
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=False,
|
||||
|
|
|
@ -20,7 +20,7 @@ RUN dpkg --add-architecture i386 && \
|
|||
wine-stable-i386:i386=3.0.1~bionic \
|
||||
wine-stable:amd64=3.0.1~bionic \
|
||||
winehq-stable:amd64=3.0.1~bionic \
|
||||
git=1:2.17.1-1ubuntu0.3 \
|
||||
git \
|
||||
p7zip-full=16.02+dfsg-6 \
|
||||
make=4.1-9.1ubuntu1 \
|
||||
mingw-w64=5.0.3-1 \
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
;Include Modern UI
|
||||
!include "TextFunc.nsh" ;Needed for the $GetSize function. I know, doesn't sound logical, it isn't.
|
||||
!include "MUI2.nsh"
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Variables
|
||||
|
||||
!define PRODUCT_NAME "Electrum"
|
||||
!define PRODUCT_NAME "LBRY_Wallet"
|
||||
!define PRODUCT_WEB_SITE "https://github.com/spesmilo/electrum"
|
||||
!define PRODUCT_PUBLISHER "Electrum Technologies GmbH"
|
||||
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
;Name and file
|
||||
Name "${PRODUCT_NAME}"
|
||||
OutFile "dist/electrum-setup.exe"
|
||||
OutFile "dist/electrum-lbry-setup.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
|
||||
|
@ -29,31 +29,31 @@
|
|||
|
||||
;Specifies whether or not the installer will perform a CRC on itself before allowing an install
|
||||
CRCCheck on
|
||||
|
||||
|
||||
;Sets whether or not the details of the install are shown. Can be 'hide' (the default) to hide the details by default, allowing the user to view them, or 'show' to show them by default, or 'nevershow', to prevent the user from ever seeing them.
|
||||
ShowInstDetails show
|
||||
|
||||
|
||||
;Sets whether or not the details of the uninstall are shown. Can be 'hide' (the default) to hide the details by default, allowing the user to view them, or 'show' to show them by default, or 'nevershow', to prevent the user from ever seeing them.
|
||||
ShowUninstDetails show
|
||||
|
||||
|
||||
;Sets the colors to use for the install info screen (the default is 00FF00 000000. Use the form RRGGBB (in hexadecimal, as in HTML, only minus the leading '#', since # can be used for comments). Note that if "/windows" is specified as the only parameter, the default windows colors will be used.
|
||||
InstallColors /windows
|
||||
|
||||
|
||||
;This command sets the compression algorithm used to compress files/data in the installer. (http://nsis.sourceforge.net/Reference/SetCompressor)
|
||||
SetCompressor /SOLID lzma
|
||||
|
||||
|
||||
;Sets the dictionary size in megabytes (MB) used by the LZMA compressor (default is 8 MB).
|
||||
SetCompressorDictSize 64
|
||||
|
||||
|
||||
;Sets the text that is shown (by default it is 'Nullsoft Install System vX.XX') in the bottom of the install window. Setting this to an empty string ("") uses the default; to set the string to blank, use " " (a space).
|
||||
BrandingText "${PRODUCT_NAME} Installer v${PRODUCT_VERSION}"
|
||||
|
||||
BrandingText "${PRODUCT_NAME} Installer v${PRODUCT_VERSION}"
|
||||
|
||||
;Sets what the titlebars of the installer will display. By default, it is 'Name Setup', where Name is specified with the Name command. You can, however, override it with 'MyApp Installer' or whatever. If you specify an empty string (""), the default will be used (you can however specify " " to achieve a blank string)
|
||||
Caption "${PRODUCT_NAME}"
|
||||
|
||||
;Adds the Product Version on top of the Version Tab in the Properties of the file.
|
||||
VIProductVersion 1.0.0.0
|
||||
|
||||
|
||||
;VIAddVersionKey - Adds a field in the Version Tab of the File Properties. This can either be a field provided by the system or a user defined field.
|
||||
VIAddVersionKey ProductName "${PRODUCT_NAME} Installer"
|
||||
VIAddVersionKey Comments "The installer for ${PRODUCT_NAME}"
|
||||
|
@ -63,7 +63,7 @@
|
|||
VIAddVersionKey FileVersion ${PRODUCT_VERSION}
|
||||
VIAddVersionKey ProductVersion ${PRODUCT_VERSION}
|
||||
VIAddVersionKey InternalName "${PRODUCT_NAME} Installer"
|
||||
VIAddVersionKey LegalTrademarks "${PRODUCT_NAME} is a trademark of ${PRODUCT_PUBLISHER}"
|
||||
VIAddVersionKey LegalTrademarks "${PRODUCT_NAME} is a trademark of ${PRODUCT_PUBLISHER}"
|
||||
VIAddVersionKey OriginalFilename "${PRODUCT_NAME}.exe"
|
||||
|
||||
;--------------------------------
|
||||
|
@ -71,9 +71,9 @@
|
|||
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ABORTWARNING_TEXT "Are you sure you wish to abort the installation of ${PRODUCT_NAME}?"
|
||||
|
||||
|
||||
!define MUI_ICON "c:\electrum\icons\electrum.ico"
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
|
||||
|
@ -108,7 +108,7 @@ Section
|
|||
RMDir /r "$INSTDIR\*.*"
|
||||
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
|
||||
|
||||
|
||||
;Files to pack into the installer
|
||||
File /r "dist\electrum\*.*"
|
||||
File "c:\electrum\icons\electrum.ico"
|
||||
|
@ -122,14 +122,14 @@ Section
|
|||
|
||||
;Create desktop shortcut
|
||||
DetailPrint "Creating desktop shortcut..."
|
||||
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" ""
|
||||
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-lbry-${PRODUCT_VERSION}.exe" ""
|
||||
|
||||
;Create start-menu items
|
||||
DetailPrint "Creating start-menu items..."
|
||||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-${PRODUCT_VERSION}.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-lbry-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-lbry-${PRODUCT_VERSION}.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-lbry-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-lbry-${PRODUCT_VERSION}.exe" 0
|
||||
|
||||
|
||||
;Links bitcoin: URI's to Electrum
|
||||
|
@ -167,7 +167,7 @@ Section "Uninstall"
|
|||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\*.*"
|
||||
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
|
||||
DeleteRegKey HKCU "Software\Classes\bitcoin"
|
||||
DeleteRegKey HKCU "Software\Classes\lbc"
|
||||
DeleteRegKey HKCU "Software\${PRODUCT_NAME}"
|
||||
DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
|
||||
SectionEnd
|
||||
|
|
|
@ -110,7 +110,7 @@ class BaseWizard(object):
|
|||
('standard', _("Standard wallet")),
|
||||
('2fa', _("Wallet with two-factor authentication")),
|
||||
('multisig', _("Multi-signature wallet")),
|
||||
('imported', _("Import Bitcoin addresses or private keys")),
|
||||
('imported', _("Import LBRY Credits addresses or private keys")),
|
||||
]
|
||||
choices = [pair for pair in wallet_kinds if pair[0] in wallet_types]
|
||||
self.choice_dialog(title=title, message=message, choices=choices, run_next=self.on_wallet_type)
|
||||
|
@ -183,8 +183,8 @@ class BaseWizard(object):
|
|||
|
||||
def import_addresses_or_keys(self):
|
||||
v = lambda x: keystore.is_address_list(x) or keystore.is_private_key_list(x)
|
||||
title = _("Import Bitcoin Addresses")
|
||||
message = _("Enter a list of Bitcoin addresses (this will create a watching-only wallet), or a list of private keys.")
|
||||
title = _("Import LBRY Credits Addresses")
|
||||
message = _("Enter a list of LBRY Credits addresses (this will create a watching-only wallet), or a list of private keys.")
|
||||
self.add_xpub_dialog(title=title, message=message, run_next=self.on_import,
|
||||
is_valid=v, allow_multi=True, show_wif_help=True)
|
||||
|
||||
|
@ -340,14 +340,14 @@ class BaseWizard(object):
|
|||
# There is no general standard for HD multisig.
|
||||
# For legacy, this is partially compatible with BIP45; assumes index=0
|
||||
# For segwit, a custom path is used, as there is no standard at all.
|
||||
default_choice_idx = 2
|
||||
default_choice_idx = 0
|
||||
choices = [
|
||||
('standard', 'legacy multisig (p2sh)', "m/45'/0"),
|
||||
('p2wsh-p2sh', 'p2sh-segwit multisig (p2wsh-p2sh)', purpose48_derivation(0, xtype='p2wsh-p2sh')),
|
||||
('p2wsh', 'native segwit multisig (p2wsh)', purpose48_derivation(0, xtype='p2wsh')),
|
||||
]
|
||||
else:
|
||||
default_choice_idx = 2
|
||||
default_choice_idx = 0
|
||||
choices = [
|
||||
('standard', 'legacy (p2pkh)', bip44_derivation(0, bip43_purpose=44)),
|
||||
('p2wpkh-p2sh', 'p2sh-segwit (p2wpkh-p2sh)', bip44_derivation(0, bip43_purpose=49)),
|
||||
|
@ -544,10 +544,10 @@ class BaseWizard(object):
|
|||
_("The type of addresses used by your wallet will depend on your seed."),
|
||||
_("Segwit wallets use bech32 addresses, defined in BIP173."),
|
||||
_("Please note that websites and other wallets may not support these addresses yet."),
|
||||
_("Thus, you might want to keep using a non-segwit wallet in order to be able to receive bitcoins during the transition period.")
|
||||
_("Thus, you might want to keep using a non-segwit wallet in order to be able to receive LBRY Credits during the transition period.")
|
||||
])
|
||||
choices = [
|
||||
('create_segwit_seed', _('Segwit')),
|
||||
|
||||
('create_standard_seed', _('Legacy')),
|
||||
]
|
||||
self.choice_dialog(title=title, message=message, choices=choices, run_next=self.run)
|
||||
|
|
|
@ -91,7 +91,7 @@ def command(s):
|
|||
wallet = args[0].wallet
|
||||
password = kwargs.get('password')
|
||||
if c.requires_wallet and wallet is None:
|
||||
raise Exception("wallet not loaded. Use 'electrum daemon load_wallet'")
|
||||
raise Exception("wallet not loaded. Use 'electrum-lbry daemon load_wallet'")
|
||||
if c.requires_password and password is None and wallet.has_password():
|
||||
return {'error': 'Password required' }
|
||||
return func(*args, **kwargs)
|
||||
|
@ -156,8 +156,8 @@ class Commands:
|
|||
@command('')
|
||||
def restore(self, text, passphrase=None, password=None, encrypt_file=True):
|
||||
"""Restore a wallet from text. Text can be a seed phrase, a master
|
||||
public key, a master private key, a list of bitcoin addresses
|
||||
or bitcoin private keys. If you want to be prompted for your
|
||||
public key, a master private key, a list of lbry credits addresses
|
||||
or lbry credits private keys. If you want to be prompted for your
|
||||
seed, type '?' or ':' (concealed) """
|
||||
storage = WalletStorage(self.config.get_wallet_path())
|
||||
if storage.file_exists():
|
||||
|
@ -366,7 +366,7 @@ class Commands:
|
|||
@command('')
|
||||
def dumpprivkeys(self):
|
||||
"""Deprecated."""
|
||||
return "This command is deprecated. Use a pipe instead: 'electrum listaddresses | electrum getprivatekeys - '"
|
||||
return "This command is deprecated. Use a pipe instead: 'electrum-lbry listaddresses | electrum-lbry getprivatekeys - '"
|
||||
|
||||
@command('')
|
||||
def validateaddress(self, address):
|
||||
|
@ -536,7 +536,7 @@ class Commands:
|
|||
|
||||
@command('w')
|
||||
def setlabel(self, key, label):
|
||||
"""Assign a label to an item. Item may be a bitcoin address or a
|
||||
"""Assign a label to an item. Item may be a LBRY Credits address or a
|
||||
transaction ID"""
|
||||
self.wallet.set_label(key, label)
|
||||
|
||||
|
@ -616,7 +616,7 @@ class Commands:
|
|||
PR_PAID: 'Paid',
|
||||
PR_EXPIRED: 'Expired',
|
||||
}
|
||||
out['amount (BTC)'] = format_satoshis(out.get('amount'))
|
||||
out['amount (LBC)'] = format_satoshis(out.get('amount'))
|
||||
out['status'] = pr_str[out.get('status', PR_UNKNOWN)]
|
||||
return out
|
||||
|
||||
|
@ -756,8 +756,8 @@ def eval_bool(x: str) -> bool:
|
|||
|
||||
param_descriptions = {
|
||||
'privkey': 'Private key. Type \'?\' to get a prompt.',
|
||||
'destination': 'Bitcoin address, contact or alias',
|
||||
'address': 'Bitcoin address',
|
||||
'destination': 'LBRY Credits address, contact or alias',
|
||||
'address': 'LBRY Credits address',
|
||||
'seed': 'Seed phrase',
|
||||
'txid': 'Transaction ID',
|
||||
'pos': 'Position',
|
||||
|
@ -767,8 +767,8 @@ param_descriptions = {
|
|||
'pubkey': 'Public key',
|
||||
'message': 'Clear text message. Use quotes if it contains spaces.',
|
||||
'encrypted': 'Encrypted message',
|
||||
'amount': 'Amount to be sent (in BTC). Type \'!\' to send the maximum available.',
|
||||
'requested_amount': 'Requested amount (in BTC).',
|
||||
'amount': 'Amount to be sent (in LBC). Type \'!\' to send the maximum available.',
|
||||
'requested_amount': 'Requested amount (in LBC).',
|
||||
'outputs': 'list of ["address", amount]',
|
||||
'redeem_script': 'redeem script (hexadecimal)',
|
||||
}
|
||||
|
@ -786,7 +786,7 @@ command_options = {
|
|||
'labels': ("-l", "Show the labels of listed addresses"),
|
||||
'nocheck': (None, "Do not verify aliases"),
|
||||
'imax': (None, "Maximum number of inputs"),
|
||||
'fee': ("-f", "Transaction fee (in BTC)"),
|
||||
'fee': ("-f", "Transaction fee (in LBC)"),
|
||||
'from_addr': ("-F", "Source address (must be a wallet address; use sweep to spend from non-wallet address)."),
|
||||
'change_addr': ("-c", "Change address. Default is a spare address, or the source address if it's not in the wallet"),
|
||||
'nbits': (None, "Number of bits of entropy"),
|
||||
|
@ -840,10 +840,10 @@ config_variables = {
|
|||
'requests_dir': 'directory where a bip70 file will be written.',
|
||||
'ssl_privkey': 'Path to your SSL private key, needed to sign the request.',
|
||||
'ssl_chain': 'Chain of SSL certificates, needed for signed requests. Put your certificate at the top and the root CA at the end',
|
||||
'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"',
|
||||
'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of lbry credits: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"',
|
||||
},
|
||||
'listrequests':{
|
||||
'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoin: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"',
|
||||
'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of lbry credits: URIs. Example: \"(\'file:///var/www/\',\'https://electrum.org/\')\"',
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -920,12 +920,12 @@ def add_global_options(parser):
|
|||
def get_parser():
|
||||
# create main parser
|
||||
parser = argparse.ArgumentParser(
|
||||
epilog="Run 'electrum help <command>' to see the help for a command")
|
||||
epilog="Run 'electrum-lbry help <command>' to see the help for a command")
|
||||
add_global_options(parser)
|
||||
subparsers = parser.add_subparsers(dest='cmd', metavar='<command>')
|
||||
# gui
|
||||
parser_gui = subparsers.add_parser('gui', description="Run Electrum's Graphical User Interface.", help="Run GUI (default)")
|
||||
parser_gui.add_argument("url", nargs='?', default=None, help="bitcoin URI (or bip70 file)")
|
||||
parser_gui.add_argument("url", nargs='?', default=None, help="lbry credits URI (or bip70 file)")
|
||||
parser_gui.add_argument("-g", "--gui", dest="gui", help="select graphical user interface", choices=['qt', 'kivy', 'text', 'stdio'])
|
||||
parser_gui.add_argument("-o", "--offline", action="store_true", dest="offline", default=False, help="Run offline")
|
||||
parser_gui.add_argument("-m", action="store_true", dest="hide_gui", default=False, help="hide GUI on startup")
|
||||
|
|
|
@ -51,7 +51,7 @@ class BitcoinMainnet(AbstractNet):
|
|||
WIF_PREFIX = 0x1c
|
||||
ADDRTYPE_P2PKH = 0x55
|
||||
ADDRTYPE_P2SH = 0x7A
|
||||
SEGWIT_HRP = "bc"
|
||||
SEGWIT_HRP = "lbc"
|
||||
GENESIS = "9c89283ba0f3227f6c03b70216b9f665f0118d5e0fa729cedf4fb34d6a34f463"
|
||||
DEFAULT_PORTS = {'t': '50001', 's': '50002'}
|
||||
DEFAULT_SERVERS = read_json('servers.json', {})
|
||||
|
@ -80,7 +80,7 @@ class BitcoinTestnet(AbstractNet):
|
|||
WIF_PREFIX = 0xef
|
||||
ADDRTYPE_P2PKH = 111
|
||||
ADDRTYPE_P2SH = 196
|
||||
SEGWIT_HRP = "tb"
|
||||
SEGWIT_HRP = "tlbc"
|
||||
GENESIS = "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"
|
||||
DEFAULT_PORTS = {'t': '51001', 's': '51002'}
|
||||
DEFAULT_SERVERS = read_json('servers_testnet.json', {})
|
||||
|
@ -105,7 +105,7 @@ class BitcoinTestnet(AbstractNet):
|
|||
|
||||
class BitcoinRegtest(BitcoinTestnet):
|
||||
|
||||
SEGWIT_HRP = "bcrt"
|
||||
SEGWIT_HRP = "blbc"
|
||||
GENESIS = "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"
|
||||
DEFAULT_SERVERS = read_json('servers_regtest.json', {})
|
||||
CHECKPOINTS = []
|
||||
|
@ -113,7 +113,7 @@ class BitcoinRegtest(BitcoinTestnet):
|
|||
|
||||
class BitcoinSimnet(BitcoinTestnet):
|
||||
|
||||
SEGWIT_HRP = "sb"
|
||||
SEGWIT_HRP = "slbc"
|
||||
GENESIS = "683e86bd5c6d110d91b94b97137ba6bfe02dbbdb8e3dff722a669b5d69d77af6"
|
||||
DEFAULT_SERVERS = read_json('servers_regtest.json', {})
|
||||
CHECKPOINTS = []
|
||||
|
|
|
@ -90,7 +90,7 @@ class Contacts(dict):
|
|||
'type': 'openalias',
|
||||
'validated': validated
|
||||
}
|
||||
raise Exception("Invalid Bitcoin address or alias", k)
|
||||
raise Exception("Invalid LBRY Credits address or alias", k)
|
||||
|
||||
def resolve_openalias(self, url):
|
||||
# support email-style addresses, per the OA standard
|
||||
|
@ -100,7 +100,7 @@ class Contacts(dict):
|
|||
except DNSException as e:
|
||||
print_error(f'Error resolving openalias: {repr(e)}')
|
||||
return None
|
||||
prefix = 'btc'
|
||||
prefix = 'lbc'
|
||||
for record in records:
|
||||
string = to_string(record.strings[0], 'utf8')
|
||||
if string.startswith('oa1:' + prefix):
|
||||
|
@ -118,7 +118,7 @@ class Contacts(dict):
|
|||
return regex.search(haystack).groups()[0]
|
||||
except AttributeError:
|
||||
return None
|
||||
|
||||
|
||||
def _validate(self, data):
|
||||
for k, v in list(data.items()):
|
||||
if k == 'contacts':
|
||||
|
@ -130,4 +130,3 @@ class Contacts(dict):
|
|||
if _type != 'address':
|
||||
data.pop(k)
|
||||
return data
|
||||
|
||||
|
|
|
@ -306,7 +306,7 @@ class ECPubkey(object):
|
|||
def msg_magic(message: bytes) -> bytes:
|
||||
from .bitcoin import var_int
|
||||
length = bfh(var_int(len(message)))
|
||||
return b"\x18Bitcoin Signed Message:\n" + length + message
|
||||
return b"\x18LBRYcrd Signed Message:\n" + length + message
|
||||
|
||||
|
||||
def verify_message_with_address(address: str, sig65: bytes, message: bytes):
|
||||
|
|
|
@ -131,7 +131,7 @@ class BitcoinAverage(ExchangeBase):
|
|||
|
||||
async def get_rates(self, ccy):
|
||||
json = await self.get_json('apiv2.bitcoinaverage.com', '/indices/global/ticker/short')
|
||||
return dict([(r.replace("BTC", ""), Decimal(json[r]['last']))
|
||||
return dict([(r.replace("LBC", ""), Decimal(json[r]['last']))
|
||||
for r in json if r != 'timestamp'])
|
||||
|
||||
def history_ccys(self):
|
||||
|
@ -160,8 +160,8 @@ class BitcoinVenezuela(ExchangeBase):
|
|||
|
||||
async def get_rates(self, ccy):
|
||||
json = await self.get_json('api.bitcoinvenezuela.com', '/')
|
||||
rates = [(r, json['BTC'][r]) for r in json['BTC']
|
||||
if json['BTC'][r] is not None] # Giving NULL for LTC
|
||||
rates = [(r, json['LBC'][r]) for r in json['LBC']
|
||||
if json['LBC'][r] is not None] # Giving NULL for LTC
|
||||
return dict(rates)
|
||||
|
||||
def history_ccys(self):
|
||||
|
@ -169,8 +169,8 @@ class BitcoinVenezuela(ExchangeBase):
|
|||
|
||||
async def request_history(self, ccy):
|
||||
json = await self.get_json('api.bitcoinvenezuela.com',
|
||||
"/historical/index.php?coin=BTC")
|
||||
return json[ccy +'_BTC']
|
||||
"/historical/index.php?coin=LBC")
|
||||
return json[ccy +'_LBC']
|
||||
|
||||
|
||||
class Bitbank(ExchangeBase):
|
||||
|
|
|
@ -151,7 +151,7 @@ class ElectrumWindow(App):
|
|||
self.send_screen.set_URI(uri)
|
||||
|
||||
def on_new_intent(self, intent):
|
||||
if intent.getScheme() != 'bitcoin':
|
||||
if intent.getScheme() != 'lbrycredits':
|
||||
return
|
||||
uri = intent.getDataString()
|
||||
self.set_URI(uri)
|
||||
|
@ -272,7 +272,7 @@ class ElectrumWindow(App):
|
|||
|
||||
App.__init__(self)#, **kwargs)
|
||||
|
||||
title = _('Electrum App')
|
||||
title = _('Electrum-LBRY App')
|
||||
self.electrum_config = config = kwargs.get('config', None)
|
||||
self.language = config.get('language', 'en')
|
||||
self.network = network = kwargs.get('network', None) # type: Network
|
||||
|
@ -336,7 +336,7 @@ class ElectrumWindow(App):
|
|||
if is_address(data):
|
||||
self.set_URI(data)
|
||||
return
|
||||
if data.startswith('bitcoin:'):
|
||||
if data.startswith('lbrycredits:'):
|
||||
self.set_URI(data)
|
||||
return
|
||||
# try to decode transaction
|
||||
|
@ -775,7 +775,7 @@ class ElectrumWindow(App):
|
|||
from plyer import notification
|
||||
icon = (os.path.dirname(os.path.realpath(__file__))
|
||||
+ '/../../' + self.icon)
|
||||
notification.notify('Electrum', message,
|
||||
notification.notify('Electrum-LBRY', message,
|
||||
app_icon=icon, app_name='Electrum')
|
||||
except ImportError:
|
||||
Logger.Error('Notification: needs plyer; `sudo pip install plyer`')
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="bitcoin" />
|
||||
<data android:scheme="lbrycredits" />
|
||||
</intent-filter>
|
||||
|
|
|
@ -834,7 +834,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||
self.receive_address_e = ButtonsLineEdit()
|
||||
self.receive_address_e.addCopyButton(self.app)
|
||||
self.receive_address_e.setReadOnly(True)
|
||||
msg = _('Bitcoin address where the payment should be received. Note that each payment request uses a different Bitcoin address.')
|
||||
msg = _('LBRY Credits address where the payment should be received. Note that each payment request uses a different LBRY Credits address.')
|
||||
self.receive_address_label = HelpLabel(_('Receiving address'), msg)
|
||||
self.receive_address_e.textChanged.connect(self.update_receive_qr)
|
||||
self.receive_address_e.setFocusPolicy(Qt.ClickFocus)
|
||||
|
@ -864,8 +864,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||
msg = ' '.join([
|
||||
_('Expiration date of your request.'),
|
||||
_('This information is seen by the recipient if you send them a signed payment request.'),
|
||||
_('Expired requests have to be deleted manually from your list, in order to free the corresponding Bitcoin addresses.'),
|
||||
_('The bitcoin address never expires and will always be part of this electrum wallet.'),
|
||||
_('Expired requests have to be deleted manually from your list, in order to free the corresponding LBRY Credits addresses.'),
|
||||
_('The LBRY Credits address never expires and will always be part of this electrum wallet.'),
|
||||
])
|
||||
grid.addWidget(HelpLabel(_('Request expires'), msg), 3, 0)
|
||||
grid.addWidget(self.expires_combo, 3, 1)
|
||||
|
@ -1091,7 +1091,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||
self.amount_e = BTCAmountEdit(self.get_decimal_point)
|
||||
self.payto_e = PayToEdit(self)
|
||||
msg = _('Recipient of the funds.') + '\n\n'\
|
||||
+ _('You may enter a Bitcoin address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Bitcoin address)')
|
||||
+ _('You may enter a LBRY Credits address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Bitcoin address)')
|
||||
payto_label = HelpLabel(_('Pay to'), msg)
|
||||
grid.addWidget(payto_label, 1, 0)
|
||||
grid.addWidget(self.payto_e, 1, 1, 1, -1)
|
||||
|
@ -1138,7 +1138,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||
hbox.addStretch(1)
|
||||
grid.addLayout(hbox, 4, 4)
|
||||
|
||||
msg = _('Bitcoin transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
|
||||
msg = _('LBRY Credits transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
|
||||
+ _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\
|
||||
+ _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.')
|
||||
self.fee_e_label = HelpLabel(_('Fee'), msg)
|
||||
|
@ -2739,7 +2739,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||
fee_widgets.append((fee_type_label, fee_type_combo))
|
||||
|
||||
feebox_cb = QCheckBox(_('Edit fees manually'))
|
||||
feebox_cb.setChecked(self.config.get('show_fee', False))
|
||||
feebox_cb.setChecked(self.config.get('show_fee', True))
|
||||
feebox_cb.setToolTip(_("Show fee edit box in send tab."))
|
||||
def on_feebox(x):
|
||||
self.config.set_key('show_fee', x == Qt.Checked)
|
||||
|
|
|
@ -18,6 +18,7 @@ _sym_db = _symbol_database.Default()
|
|||
DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='paymentrequest.proto',
|
||||
package='payments',
|
||||
syntax='proto2',
|
||||
serialized_pb=_b('\n\x14paymentrequest.proto\x12\x08payments\"+\n\x06Output\x12\x11\n\x06\x61mount\x18\x01 \x01(\x04:\x01\x30\x12\x0e\n\x06script\x18\x02 \x02(\x0c\"\xa3\x01\n\x0ePaymentDetails\x12\x15\n\x07network\x18\x01 \x01(\t:\x04main\x12!\n\x07outputs\x18\x02 \x03(\x0b\x32\x10.payments.Output\x12\x0c\n\x04time\x18\x03 \x02(\x04\x12\x0f\n\x07\x65xpires\x18\x04 \x01(\x04\x12\x0c\n\x04memo\x18\x05 \x01(\t\x12\x13\n\x0bpayment_url\x18\x06 \x01(\t\x12\x15\n\rmerchant_data\x18\x07 \x01(\x0c\"\x95\x01\n\x0ePaymentRequest\x12\"\n\x17payment_details_version\x18\x01 \x01(\r:\x01\x31\x12\x16\n\x08pki_type\x18\x02 \x01(\t:\x04none\x12\x10\n\x08pki_data\x18\x03 \x01(\x0c\x12\"\n\x1aserialized_payment_details\x18\x04 \x02(\x0c\x12\x11\n\tsignature\x18\x05 \x01(\x0c\"\'\n\x10X509Certificates\x12\x13\n\x0b\x63\x65rtificate\x18\x01 \x03(\x0c\"i\n\x07Payment\x12\x15\n\rmerchant_data\x18\x01 \x01(\x0c\x12\x14\n\x0ctransactions\x18\x02 \x03(\x0c\x12#\n\trefund_to\x18\x03 \x03(\x0b\x32\x10.payments.Output\x12\x0c\n\x04memo\x18\x04 \x01(\t\">\n\nPaymentACK\x12\"\n\x07payment\x18\x01 \x02(\x0b\x32\x11.payments.Payment\x12\x0c\n\x04memo\x18\x02 \x01(\tB(\n\x1eorg.bitcoin.protocols.paymentsB\x06Protos')
|
||||
)
|
||||
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
|
||||
|
@ -54,6 +55,7 @@ _OUTPUT = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
@ -126,6 +128,7 @@ _PAYMENTDETAILS = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
@ -184,6 +187,7 @@ _PAYMENTREQUEST = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
@ -214,6 +218,7 @@ _X509CERTIFICATES = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
@ -265,6 +270,7 @@ _PAYMENT = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
@ -302,6 +308,7 @@ _PAYMENTACK = _descriptor.Descriptor(
|
|||
],
|
||||
options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto2',
|
||||
extension_ranges=[],
|
||||
oneofs=[
|
||||
],
|
||||
|
|
|
@ -20,10 +20,9 @@ FEE_DEPTH_TARGETS = [10000000, 5000000, 2000000, 1000000, 500000, 200000, 100000
|
|||
# satoshi per kbyte
|
||||
FEERATE_MAX_DYNAMIC = 1500000
|
||||
FEERATE_WARNING_HIGH_FEE = 600000
|
||||
FEERATE_FALLBACK_STATIC_FEE = 150000
|
||||
FEERATE_DEFAULT_RELAY = 1000
|
||||
FEERATE_STATIC_VALUES = [1000, 2000, 5000, 10000, 20000, 30000,
|
||||
50000, 70000, 100000, 150000, 200000, 300000]
|
||||
FEERATE_FALLBACK_STATIC_FEE = 50000
|
||||
FEERATE_DEFAULT_RELAY = 50000
|
||||
FEERATE_STATIC_VALUES = [50000, 50000,]
|
||||
|
||||
|
||||
config = None
|
||||
|
@ -202,7 +201,7 @@ class SimpleConfig(PrintError):
|
|||
base_unit = self.user_config.get('base_unit')
|
||||
if isinstance(base_unit, str):
|
||||
self._set_key_in_user_config('base_unit', None)
|
||||
map_ = {'btc':8, 'mbtc':5, 'ubtc':2, 'bits':2, 'sat':0}
|
||||
map_ = {'lbc':8, 'mlbc':5, 'ulbc':2, 'lbcs':2, 'dewey':0}
|
||||
decimal_point = map_.get(base_unit.lower())
|
||||
self._set_key_in_user_config('decimal_point', decimal_point)
|
||||
|
||||
|
|
|
@ -56,9 +56,9 @@ def inv_dict(d):
|
|||
return {v: k for k, v in d.items()}
|
||||
|
||||
|
||||
base_units = {'BTC':8, 'mBTC':5, 'bits':2, 'sat':0}
|
||||
base_units = {'LBC':8, 'mLBC':5, 'deweys':2, 'dewey':0}
|
||||
base_units_inverse = inv_dict(base_units)
|
||||
base_units_list = ['BTC', 'mBTC', 'bits', 'sat'] # list(dict) does not guarantee order
|
||||
base_units_list = ['LBC', 'mLBC', 'deweys', 'dewey'] # list(dict) does not guarantee order
|
||||
|
||||
DECIMAL_POINT_DEFAULT = 5 # mBTC
|
||||
|
||||
|
@ -620,44 +620,10 @@ def time_difference(distance_in_time, include_seconds):
|
|||
return "over %d years" % (round(distance_in_minutes / 525600))
|
||||
|
||||
mainnet_block_explorers = {
|
||||
'Bitupper Explorer': ('https://bitupper.com/en/explorer/bitcoin/',
|
||||
{'tx': 'transactions/', 'addr': 'addresses/'}),
|
||||
'Biteasy.com': ('https://www.biteasy.com/blockchain/',
|
||||
{'tx': 'transactions/', 'addr': 'addresses/'}),
|
||||
'Bitflyer.jp': ('https://chainflyer.bitflyer.jp/',
|
||||
{'tx': 'Transaction/', 'addr': 'Address/'}),
|
||||
'Blockchain.info': ('https://blockchain.info/',
|
||||
'LBRY Explorer': ('https://explorer.lbry.io/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'blockchainbdgpzk.onion': ('https://blockchainbdgpzk.onion/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'Blockr.io': ('https://btc.blockr.io/',
|
||||
{'tx': 'tx/info/', 'addr': 'address/info/'}),
|
||||
'Blockstream.info': ('https://blockstream.info/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'Blocktrail.com': ('https://www.blocktrail.com/BTC/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'BTC.com': ('https://chain.btc.com/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'Chain.so': ('https://www.chain.so/',
|
||||
{'tx': 'tx/BTC/', 'addr': 'address/BTC/'}),
|
||||
'Insight.is': ('https://insight.bitpay.com/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'TradeBlock.com': ('https://tradeblock.com/blockchain/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'BlockCypher.com': ('https://live.blockcypher.com/btc/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'Blockchair.com': ('https://blockchair.com/bitcoin/',
|
||||
{'tx': 'transaction/', 'addr': 'address/'}),
|
||||
'blockonomics.co': ('https://www.blockonomics.co/',
|
||||
{'tx': 'api/tx?txid=', 'addr': '#/search?q='}),
|
||||
'OXT.me': ('https://oxt.me/',
|
||||
{'tx': 'transaction/', 'addr': 'address/'}),
|
||||
'smartbit.com.au': ('https://www.smartbit.com.au/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
'system default': ('blockchain:/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
testnet_block_explorers = {
|
||||
'Blocktrail.com': ('https://www.blocktrail.com/tBTC/',
|
||||
{'tx': 'tx/', 'addr': 'address/'}),
|
||||
|
|
Loading…
Add table
Reference in a new issue