diff --git a/.gitignore b/.gitignore
index 16dbaff2c8a0..236d7a7fd986 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@ dist/
/electrum.py
contrib/pyinstaller/
Electrum.egg-info/
+Electrum_bci.egg-info/
gui/qt/icons_rc.py
locale/
.devlocaltmp/
@@ -24,3 +25,5 @@ bin/
/venv/**
/.idea/**
/example.log
+electrum-bci-env
+contrib/*/tmp/
diff --git a/AUTHORS b/AUTHORS
index 9020d13f8947..af2af8663f90 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,3 +11,5 @@ Julian Toash (Tuxavant) - Various fixes to the client.
rdymac - Website and translations.
kyuupichan - Miscellaneous.
BitcoinGold Developers - Forked BTG Version
+fellu - Forked BCI Version
+
diff --git a/Info.plist b/Info.plist
index 948a067d8a6e..f3f326fdb3ba 100644
--- a/Info.plist
+++ b/Info.plist
@@ -6,10 +6,10 @@
CFBundleURLName
- bitcoingold
+ bitcoininterest
CFBundleURLSchemes
- bitcoingold
+ bitcoininterest
diff --git a/MANIFEST.in b/MANIFEST.in
index 9d79fdeed6a8..3ab0ae46d1e2 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,9 +1,9 @@
include LICENCE RELEASE-NOTES AUTHORS
include README.rst
-include electrumg.conf.sample
-include electrumg.desktop
+include electrum-bci.conf.sample
+include electrum-bci.desktop
include *.py
-include electrumg
+include electrum-bci
include contrib/requirements/requirements.txt
include contrib/requirements/requirements-hw.txt
recursive-include lib *.py
diff --git a/README.rst b/README.rst
index 8458581e5250..58be462e53aa 100644
--- a/README.rst
+++ b/README.rst
@@ -36,7 +36,7 @@ Electrum from its root directory, without installing it on your
system; all the python dependencies are included in the 'packages'
directory. To run Electrum from its root directory, just do::
- ./electrum
+ ./electrum-bci
You can also install Electrum on your system, by running this command::
@@ -57,7 +57,7 @@ Development version
Check out the code from Github::
- git clone git://github.com/spesmilo/electrum.git
+ git clone git://github.com/BitcoinInterestOfficial/electrum.git
cd electrum
Run install (this should install dependencies)::
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index a79187219a2f..11094f43c22d 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,6 +1,17 @@
+# Release 3.4
+
+ * Added / Fixed initial blockchain headers
+ * Fixed price getter
+
+
+# Release 3.3
+
+ ProgPow changes
+
+
# Release 3.2
- First release containing changes for BitcoinGold
+ First release containing changes for BitcoinInterest
diff --git a/contrib/build-osx/make_osx b/contrib/build-osx/make_osx
index 9fe93036c24f..7ac2611cc099 100755
--- a/contrib/build-osx/make_osx
+++ b/contrib/build-osx/make_osx
@@ -20,8 +20,8 @@ VERSION=`git describe --tags`
# Paramterize
PYTHON_VERSION=3.6.4
BUILDDIR=/tmp/electrum-build
-PACKAGE=ElectrumG
-GIT_REPO=https://github.com/BTCGPU/electrum
+PACKAGE=Electrum-bci
+GIT_REPO=https://github.com/BitcoinInterestOfficial/electrum
info "Installing Python $PYTHON_VERSION"
@@ -88,4 +88,4 @@ info "Building binary"
pyinstaller --noconfirm --ascii --name $VERSION contrib/build-osx/osx.spec || fail "Could not build binary"
info "Creating .DMG"
-hdiutil create -fs HFS+ -volname $PACKAGE -srcfolder dist/$PACKAGE.app dist/electrumg-$VERSION.dmg || fail "Could not create .DMG"
+hdiutil create -fs HFS+ -volname $PACKAGE -srcfolder dist/$PACKAGE.app dist/electrum-bci-$VERSION.dmg || fail "Could not create .DMG"
diff --git a/contrib/build-osx/osx.spec b/contrib/build-osx/osx.spec
index 635866cf9cf1..409735c96582 100644
--- a/contrib/build-osx/osx.spec
+++ b/contrib/build-osx/osx.spec
@@ -5,10 +5,10 @@ from PyInstaller.utils.hooks import collect_data_files, collect_submodules, coll
import sys
import os
-PACKAGE='ElectrumG'
-PYPKG='electrumg'
-MAIN_SCRIPT='electrumg'
-ICONS_FILE='electrumg.icns'
+PACKAGE='Electrum-bci'
+PYPKG='electrum-bci'
+MAIN_SCRIPT='electrum-bci'
+ICONS_FILE='electrum-bci.icns'
for i, x in enumerate(sys.argv):
if x == '--name':
diff --git a/contrib/build-wine/build-electrum-git.sh b/contrib/build-wine/build-electrum-git.sh
index 56273f792a01..cf84828a0d0a 100755
--- a/contrib/build-wine/build-electrum-git.sh
+++ b/contrib/build-wine/build-electrum-git.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-NAME_ROOT=electrumg
+NAME_ROOT=electrum-bci
PYTHON_VERSION=3.5.4
# These settings probably don't need any change
@@ -26,7 +26,7 @@ for repo in electrum electrum-locale electrum-icons; do
git checkout master
cd ..
else
- URL=https://github.com/BTCGPU/$repo.git
+ URL=https://github.com/BitcoinInterestOfficial/$repo.git
git clone -b master $URL $repo
fi
done
@@ -49,18 +49,18 @@ echo "Last commit: $VERSION"
find -exec touch -d '2000-11-11T11:11:11+00:00' {} +
popd
-rm -rf $WINEPREFIX/drive_c/electrumg
-cp -r electrum $WINEPREFIX/drive_c/electrumg
+rm -rf $WINEPREFIX/drive_c/electrum-bci
+cp -r electrum $WINEPREFIX/drive_c/electrum-bci
cp electrum/LICENCE .
-cp -r electrum-locale/locale $WINEPREFIX/drive_c/electrumg/lib/
-cp electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrumg/gui/qt/
+cp -r electrum-locale/locale $WINEPREFIX/drive_c/electrum-bci/lib/
+cp electrum-icons/icons_rc.py $WINEPREFIX/drive_c/electrum-bci/gui/qt/
# Install frozen dependencies
$PYTHON -m pip install -r ../../deterministic-build/requirements.txt
$PYTHON -m pip install -r ../../deterministic-build/requirements-hw.txt
-pushd $WINEPREFIX/drive_c/electrumg
+pushd $WINEPREFIX/drive_c/electrum-bci
$PYTHON setup.py install
popd
@@ -81,7 +81,7 @@ popd
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi
cd dist
-mv electrumg-setup.exe $NAME_ROOT-$VERSION-setup.exe
+mv electrum-bci-setup.exe $NAME_ROOT-$VERSION-setup.exe
cd ..
echo "Done."
diff --git a/contrib/build-wine/deterministic.spec b/contrib/build-wine/deterministic.spec
index 2c50020da835..6cb243ab34cd 100644
--- a/contrib/build-wine/deterministic.spec
+++ b/contrib/build-wine/deterministic.spec
@@ -11,7 +11,7 @@ else:
raise BaseException('no name')
-home = 'C:\\electrumg\\'
+home = 'C:\\electrum-bci\\'
# see https://github.com/pyinstaller/pyinstaller/issues/2005
hiddenimports = []
@@ -42,7 +42,7 @@ datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
# We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports
-a = Analysis([home+'electrumg',
+a = Analysis([home+'electrum-bci',
home+'gui/qt/main_window.py',
home+'gui/text.py',
home+'lib/util.py',
@@ -84,11 +84,11 @@ exe_standalone = EXE(
a.scripts,
a.binaries,
a.datas,
- name=os.path.join('build\\pyi.win32\\electrumg', cmdline_name + ".exe"),
+ name=os.path.join('build\\pyi.win32\\electrum-bci', cmdline_name + ".exe"),
debug=False,
strip=None,
upx=False,
- icon=home+'icons/electrumg.ico',
+ icon=home+'icons/electrum-bci.ico',
console=False)
# console=True makes an annoying black box pop up, but it does make Electrum output command line commands, with this turned off no output will be given but commands can still be used
@@ -97,11 +97,11 @@ exe_portable = EXE(
a.scripts,
a.binaries,
a.datas + [ ('is_portable', 'README.md', 'DATA' ) ],
- name=os.path.join('build\\pyi.win32\\electrumg', cmdline_name + "-portable.exe"),
+ name=os.path.join('build\\pyi.win32\\electrum-bci', cmdline_name + "-portable.exe"),
debug=False,
strip=None,
upx=False,
- icon=home+'icons/electrumg.ico',
+ icon=home+'icons/electrum-bci.ico',
console=False)
#####
@@ -111,11 +111,11 @@ exe_dependent = EXE(
pyz,
a.scripts,
exclude_binaries=True,
- name=os.path.join('build\\pyi.win32\\electrumg', cmdline_name),
+ name=os.path.join('build\\pyi.win32\\electrum-bci', cmdline_name),
debug=False,
strip=None,
upx=False,
- icon=home+'icons/electrumg.ico',
+ icon=home+'icons/electrum-bci.ico',
console=False)
coll = COLLECT(
@@ -126,6 +126,6 @@ coll = COLLECT(
strip=None,
upx=True,
debug=False,
- icon=home+'icons/electrumg.ico',
+ icon=home+'icons/electrum-bci.ico',
console=False,
- name=os.path.join('dist', 'electrumg'))
+ name=os.path.join('dist', 'electrum-bci'))
diff --git a/contrib/build-wine/electrum.nsi b/contrib/build-wine/electrum.nsi
index 3af7ea5e9de0..1b1c28c3f3dd 100644
--- a/contrib/build-wine/electrum.nsi
+++ b/contrib/build-wine/electrum.nsi
@@ -6,9 +6,9 @@
;--------------------------------
;Variables
- !define PRODUCT_NAME "ElectrumG"
- !define PRODUCT_WEB_SITE "https://github.com/BTCGPU/electrum"
- !define PRODUCT_PUBLISHER "BitcoinGold Organization"
+ !define PRODUCT_NAME "Electrum-bci"
+ !define PRODUCT_WEB_SITE "https://github.com/BitcoinInterestOfficial/electrum"
+ !define PRODUCT_PUBLISHER "BitcoinInterest Organization"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
;--------------------------------
@@ -16,7 +16,7 @@
;Name and file
Name "${PRODUCT_NAME}"
- OutFile "dist/electrumg-setup.exe"
+ OutFile "dist/electrum-bci-setup.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
@@ -72,7 +72,7 @@
!define MUI_ABORTWARNING
!define MUI_ABORTWARNING_TEXT "Are you sure you wish to abort the installation of ${PRODUCT_NAME}?"
- !define MUI_ICON "tmp\electrum\icons\electrumg.ico"
+ !define MUI_ICON "tmp\electrum\icons\electrum-bci.ico"
;--------------------------------
;Pages
@@ -125,7 +125,7 @@ Function .onInit
FunctionEnd
Function RunApplication
- ExecShell "" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe"
+ ExecShell "" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe"
FunctionEnd
Section
@@ -138,8 +138,8 @@ Section
Delete "$SMSTARTUP\${PRODUCT_NAME}.lnk"
;Files to pack into the installer
- File /r "dist\electrumg\*.*"
- File "..\..\icons\electrumg.ico"
+ File /r "dist\electrum-bci\*.*"
+ File "..\..\icons\electrum-bci.ico"
;Store installation folder
WriteRegStr HKCU "Software\${PRODUCT_NAME}" "" $INSTDIR
@@ -150,20 +150,20 @@ Section
;Create desktop shortcut
DetailPrint "Creating desktop shortcut..."
- CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe" ""
+ CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bci-${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\electrumg-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe" 0
- CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe" 0
+ CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe" "" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe" 0
+ CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME} Testnet.lnk" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe" "--testnet" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe" 0
- ;Links bitcoingold: URI's to ElectrumG
- WriteRegStr HKCU "Software\Classes\bitcoingold" "" "URL:bitcoingold Protocol"
- WriteRegStr HKCU "Software\Classes\bitcoingold" "URL Protocol" ""
- WriteRegStr HKCU "Software\Classes\bitcoingold" "DefaultIcon" "$\"$INSTDIR\electrumg.ico, 0$\""
- WriteRegStr HKCU "Software\Classes\bitcoingold\shell\open\command" "" "$\"$INSTDIR\electrumg-${PRODUCT_VERSION}.exe$\" $\"%1$\""
+ ;Links bitcoininterest: URI's to Electrum-bci
+ WriteRegStr HKCU "Software\Classes\bitcoininterest" "" "URL:bitcoininterest Protocol"
+ WriteRegStr HKCU "Software\Classes\bitcoininterest" "URL Protocol" ""
+ WriteRegStr HKCU "Software\Classes\bitcoininterest" "DefaultIcon" "$\"$INSTDIR\electrum-bci.ico, 0$\""
+ WriteRegStr HKCU "Software\Classes\bitcoininterest\shell\open\command" "" "$\"$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe$\" $\"%1$\""
;Adds an uninstaller possibilty to Windows Uninstall or change a program section
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
@@ -171,7 +171,7 @@ Section
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
- WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\electrumg.ico"
+ WriteRegStr HKCU "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\electrum-bci.ico"
;Fixes Windows broken size estimates
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
@@ -179,7 +179,7 @@ Section
WriteRegDWORD HKCU "${PRODUCT_UNINST_KEY}" "EstimatedSize" "$0"
${If} ${SectionIsSelected} ${SecStartup}
- CreateShortCut "$SMSTARTUP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrumg-${PRODUCT_VERSION}.exe" ""
+ CreateShortCut "$SMSTARTUP\${PRODUCT_NAME}.lnk" "$INSTDIR\electrum-bci-${PRODUCT_VERSION}.exe" ""
${EndIf}
SectionEnd
@@ -199,7 +199,7 @@ Section "Uninstall"
Delete "$SMSTARTUP\${PRODUCT_NAME}.lnk"
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
- DeleteRegKey HKCU "Software\Classes\bitcoingold"
+ DeleteRegKey HKCU "Software\Classes\bitcoininterest"
DeleteRegKey HKCU "Software\${PRODUCT_NAME}"
DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
SectionEnd
diff --git a/contrib/build-wine/prepare-wine.sh b/contrib/build-wine/prepare-wine.sh
index d19ca7365527..c0378f8896c9 100755
--- a/contrib/build-wine/prepare-wine.sh
+++ b/contrib/build-wine/prepare-wine.sh
@@ -106,7 +106,7 @@ for msifile in core dev exe lib pip tools; do
done
# upgrade pip
-$PYTHON -m pip install pip --upgrade
+# $PYTHON -m pip install pip --upgrade
# Install pywin32-ctypes (needed by pyinstaller)
$PYTHON -m pip install pywin32-ctypes==0.1.2
@@ -114,6 +114,9 @@ $PYTHON -m pip install pywin32-ctypes==0.1.2
# install PySocks
$PYTHON -m pip install win_inet_pton==1.0.1
+# install pysha3
+$PYTHON -m pip install pysha3==1.0.2
+
$PYTHON -m pip install -r $here/../deterministic-build/requirements-binaries.txt
# Install PyInstaller
diff --git a/contrib/deterministic-build/requirements-hw.txt b/contrib/deterministic-build/requirements-hw.txt
index 934cda7bfe7d..c67daae9e8d8 100644
--- a/contrib/deterministic-build/requirements-hw.txt
+++ b/contrib/deterministic-build/requirements-hw.txt
@@ -17,3 +17,4 @@ rlp==0.6.0
six==1.11.0
trezor==0.9.1
urllib3==1.22
+pysha3==1.0.2
diff --git a/contrib/deterministic-build/requirements.txt b/contrib/deterministic-build/requirements.txt
index f8f9a20e72f3..6b34976c84e1 100644
--- a/contrib/deterministic-build/requirements.txt
+++ b/contrib/deterministic-build/requirements.txt
@@ -13,3 +13,4 @@ qrcode==5.3
requests==2.18.4
six==1.11.0
urllib3==1.22
+pysha3==1.0.2
\ No newline at end of file
diff --git a/contrib/freeze_packages.sh b/contrib/freeze_packages.sh
index 5ca6c453c8a7..0bb7cadeb0ac 100755
--- a/contrib/freeze_packages.sh
+++ b/contrib/freeze_packages.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# Run this after a new release to update dependencies
-venv_dir=~/.electrumg-venv
+venv_dir=~/.electrum-bci-venv
contrib=$(dirname "$0")
which virtualenv > /dev/null 2>&1 || { echo "Please install virtualenv" && exit 1; }
@@ -16,7 +16,7 @@ for i in '' '-hw' '-binaries'; do
python -m pip install -r $contrib/requirements/requirements${i}.txt --upgrade
- pip freeze | sed '/^ElectrumG/ d' > $contrib/deterministic-build/requirements${i}.txt
+ pip freeze | sed '/^Electrum-bci/ d' > $contrib/deterministic-build/requirements${i}.txt
done
echo "Done. Updated requirements"
diff --git a/contrib/make_locale b/contrib/make_locale
index f28f21191320..744167a0298e 100755
--- a/contrib/make_locale
+++ b/contrib/make_locale
@@ -27,8 +27,8 @@ os.system(cmd)
os.chdir('lib')
-crowdin_identifier = 'electrumg'
-crowdin_file_name = 'files[electrumg-client/messages.pot]'
+crowdin_identifier = 'electrum-bci'
+crowdin_file_name = 'files[electrum-bci-client/messages.pot]'
locale_file_name = 'locale/messages.pot'
crowdin_api_key = None
@@ -60,7 +60,7 @@ zfobj = zipfile.ZipFile(io.BytesIO(s))
print('Unzip translations')
for name in zfobj.namelist():
- if not name.startswith('electrumg-client/locale'):
+ if not name.startswith('electrum-bci-client/locale'):
continue
if name.endswith('/'):
if not os.path.exists(name[16:]):
diff --git a/contrib/requirements/requirements.txt b/contrib/requirements/requirements.txt
index 6eee735304d0..fd355ccf8ba0 100644
--- a/contrib/requirements/requirements.txt
+++ b/contrib/requirements/requirements.txt
@@ -8,3 +8,4 @@ protobuf
dnspython
jsonrpclib-pelix
PySocks>=1.6.6
+pysha3==1.0.2
\ No newline at end of file
diff --git a/electrumg b/electrum-bci
similarity index 97%
rename from electrumg
rename to electrum-bci
index f4987966709a..ac6737995c81 100755
--- a/electrumg
+++ b/electrum-bci
@@ -1,9 +1,10 @@
#!/usr/bin/env python3
# -*- mode: python -*-
#
-# ElectrumG - lightweight BitcoinGold client
+# Electrum-bci - lightweight BitcoinInterest client
# Copyright (C) 2011 thomasv@gitorious
# Copyright (C) 2018 support@bitcoingold.org
+# Copyright (C) 2018 admin@bitcoininterest.io
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -44,7 +45,7 @@ if jnius:
script_dir = os.path.dirname(os.path.realpath(__file__))
is_bundle = getattr(sys, 'frozen', False)
-is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrumg.desktop"))
+is_local = not is_bundle and os.path.exists(os.path.join(script_dir, "electrum-bci.desktop"))
is_android = 'ANDROID_DATA' in os.environ
# move this back to gui/kivy/__init.py once plugins are moved
@@ -194,7 +195,7 @@ def init_daemon(config_options):
storage = WalletStorage(config.get_wallet_path())
if not storage.file_exists():
print_msg("Error: Wallet file not found.")
- print_msg("Type 'electrumg create' to create a new wallet, or provide a path to a wallet with the -w option")
+ print_msg("Type 'electrum-bci create' to create a new wallet, or provide a path to a wallet with the -w option")
sys.exit(0)
if storage.is_encrypted():
if storage.is_encrypted_with_hw_device():
@@ -232,7 +233,7 @@ def init_cmdline(config_options, server):
if cmd.requires_wallet and not storage.file_exists():
print_msg("Error: Wallet file not found.")
- print_msg("Type 'electrumg create' to create a new wallet, or provide a path to a wallet with the -w option")
+ print_msg("Type 'electrum-bci create' to create a new wallet, or provide a path to a wallet with the -w option")
sys.exit(0)
# important warning
@@ -398,7 +399,7 @@ if __name__ == '__main__':
config_options['portable'] = True
if config_options.get('portable'):
- config_options['electrumg_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrumg_data')
+ config_options['electrum-bci_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum-bci_data')
# kivy sometimes freezes when we write to sys.stderr
set_verbosity(config_options.get('verbose') and config_options.get('gui')!='kivy')
@@ -406,7 +407,7 @@ if __name__ == '__main__':
# check uri
uri = config_options.get('url')
if uri:
- if not uri.startswith('bitcoingold:'):
+ if not uri.startswith('bitcoininterest:'):
print_stderr('unknown command:', uri)
sys.exit(1)
config_options['url'] = uri
diff --git a/electrumg.conf.sample b/electrum-bci.conf.sample
similarity index 67%
rename from electrumg.conf.sample
rename to electrum-bci.conf.sample
index bd0c1f6a71ce..18001170e9a5 100644
--- a/electrumg.conf.sample
+++ b/electrum-bci.conf.sample
@@ -1,14 +1,14 @@
# Configuration file for the electrum client
# Settings defined here are shared across wallets
#
-# copy this file to /etc/electrumg.conf if you want read-only settings
+# copy this file to /etc/electrum-bci.conf if you want read-only settings
[client]
-server = electrumg.novit.ro:50001:t
+server = electrum-bci.novit.ro:50001:t
proxy = None
gap_limit = 5
# booleans use python syntax
-use_change = True
+use_change = False
gui = qt
num_zeros = 2
# default transaction fee is in Satoshis
diff --git a/electrum-bci.desktop b/electrum-bci.desktop
new file mode 100644
index 000000000000..8bce0ecfc391
--- /dev/null
+++ b/electrum-bci.desktop
@@ -0,0 +1,17 @@
+# If you want electrum to appear in a linux app launcher ("start menu"), install this by doing:
+# sudo desktop-file-install electrum-bci.desktop
+
+[Desktop Entry]
+Comment=Lightweight BitcoinInterest Client
+Exec=electrum-bci %u
+GenericName[en_US]=BitcoinInterest Wallet
+GenericName=BitcoinIntrest Wallet
+Icon=electrum-bci
+Name[en_US]=Electrum BitcoinInterest Wallet
+Name=Electrum BitcoinInterest Wallet
+Categories=Finance;Network;
+StartupNotify=false
+Terminal=false
+Type=Application
+MimeType=x-scheme-handler/bitcoininterest;
+
diff --git a/electrum-bci.icns b/electrum-bci.icns
new file mode 100644
index 000000000000..459d19e60b8b
Binary files /dev/null and b/electrum-bci.icns differ
diff --git a/electrumg-env b/electrumg-env
deleted file mode 100755
index 25bd4a7c565a..000000000000
--- a/electrumg-env
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-#
-# This script creates a virtualenv named 'env' and installs all
-# python dependencies before activating the env and running Electrum.
-# If 'env' already exists, it is activated and Electrum is started
-# without any installations. Additionally, the PYTHONPATH environment
-# variable is set properly before running Electrum.
-#
-# python-qt and its dependencies will still need to be installed with
-# your package manager.
-
-PYTHON_VER="$(python3 -c 'import sys; print(sys.version[:3])')"
-
-if [ -e ./env/bin/activate ]; then
- source ./env/bin/activate
-else
- virtualenv env -p `which python3`
- source ./env/bin/activate
- python3 setup.py install
-fi
-
-export PYTHONPATH="/usr/local/lib/python${PYTHON_VER}/site-packages:$PYTHONPATH"
-
-./electrumg "$@"
-
-deactivate
diff --git a/electrumg.desktop b/electrumg.desktop
deleted file mode 100644
index e8bb618c6691..000000000000
--- a/electrumg.desktop
+++ /dev/null
@@ -1,17 +0,0 @@
-# If you want electrum to appear in a linux app launcher ("start menu"), install this by doing:
-# sudo desktop-file-install electrumg.desktop
-
-[Desktop Entry]
-Comment=Lightweight BitcoinGold Client
-Exec=electrumg %u
-GenericName[en_US]=BitcoinGold Wallet
-GenericName=BitcoinGold Wallet
-Icon=electrumg
-Name[en_US]=Electrum BitcoinGold Wallet
-Name=Electrum BitcoinGold Wallet
-Categories=Finance;Network;
-StartupNotify=false
-Terminal=false
-Type=Application
-MimeType=x-scheme-handler/bitcoingold;
-
diff --git a/electrumg.icns b/electrumg.icns
deleted file mode 100644
index ea3b4c491afa..000000000000
Binary files a/electrumg.icns and /dev/null differ
diff --git a/gui/__init__.py b/gui/__init__.py
index 9974520ac981..4afdfdb335ad 100644
--- a/gui/__init__.py
+++ b/gui/__init__.py
@@ -1,5 +1,5 @@
# To create a new GUI, please add its code to this directory.
-# Three objects are passed to the ElectrumGui: config, daemon and plugins
+# Three objects are passed to the Electrum-bciui: config, daemon and plugins
# The Wallet object is instanciated by the GUI
# Notifications about network events are sent to the GUI by using network.register_callback()
diff --git a/gui/kivy/Makefile b/gui/kivy/Makefile
index 9c01f6df1a8a..656f3f3c25c3 100644
--- a/gui/kivy/Makefile
+++ b/gui/kivy/Makefile
@@ -9,8 +9,8 @@ theming:
prepare:
# running pre build setup
@cp tools/buildozer.spec ../../buildozer.spec
- # copy electrumg to main.py
- @cp ../../electrumg ../../main.py
+ # copy electrum-bci to main.py
+ @cp ../../electrum-bci ../../main.py
@-if [ ! -d "../../.buildozer" ];then \
cd ../..; buildozer android debug;\
cp -f gui/kivy/tools/blacklist.txt .buildozer/android/platform/python-for-android/src/blacklist.txt;\
@@ -26,7 +26,7 @@ release:
@make clean
clean:
# Cleaning up
- # rename main.py to electrumg
+ # rename main.py to electrum-bci
@-rm ../../main.py
# remove buildozer.spec
@-rm ../../buildozer.spec
diff --git a/gui/kivy/Readme.md b/gui/kivy/Readme.md
index 049502d58ca7..54fe42350332 100644
--- a/gui/kivy/Readme.md
+++ b/gui/kivy/Readme.md
@@ -1,10 +1,10 @@
# Kivy GUI
-The Kivy GUI is used with ElectrumG on Android devices. To generate an APK file, follow these instructions.
+The Kivy GUI is used with Electrum-bci on Android devices. To generate an APK file, follow these instructions.
## 1. Install python-for-android (p4a)
-p4a is used to package ElectrumG, Python, SDL and a bootstrap Java app into an APK file.
-p4a has been patched to add some functionality needed for ElectrumG. Until those changes are
+p4a is used to package Electrum-bci, Python, SDL and a bootstrap Java app into an APK file.
+p4a has been patched to add some functionality needed for Electrum-bci. Until those changes are
merged into p4a, you need to merge them locally (into the master branch):
2. [kivy/python-for-android#1217](https://github.com/kivy/python-for-android/pull/1217)
@@ -60,7 +60,7 @@ Extract into `/opt/crystax-ndk-10.3.2`
## 5. Create the UI Atlas
-In the `gui/kivy` directory of ElectrumG, run `make theming`.
+In the `gui/kivy` directory of Electrum-bci, run `make theming`.
## 6. Download Electrum dependencies
Run `contrib/make_packages`.
diff --git a/gui/kivy/__init__.py b/gui/kivy/__init__.py
index 49d56d9a6247..3ce5da42bfeb 100644
--- a/gui/kivy/__init__.py
+++ b/gui/kivy/__init__.py
@@ -46,7 +46,7 @@
class ElectrumGui:
def __init__(self, config, daemon, plugins):
- Logger.debug('ElectrumGUI: initialising')
+ Logger.debug('Electrum-bciUI: initialising')
self.daemon = daemon
self.network = daemon.network
self.config = config
diff --git a/gui/kivy/data/java-classes/org/electrumg/qr/SimpleScannerActivity.java b/gui/kivy/data/java-classes/org/electrum-bci/qr/SimpleScannerActivity.java
similarity index 94%
rename from gui/kivy/data/java-classes/org/electrumg/qr/SimpleScannerActivity.java
rename to gui/kivy/data/java-classes/org/electrum-bci/qr/SimpleScannerActivity.java
index 2d844cdcaf9a..97048e15d703 100644
--- a/gui/kivy/data/java-classes/org/electrumg/qr/SimpleScannerActivity.java
+++ b/gui/kivy/data/java-classes/org/electrum-bci/qr/SimpleScannerActivity.java
@@ -1,4 +1,4 @@
-package org.electrumg.qr;
+package org.electrum-bci.qr;
import android.app.Activity;
import android.os.Bundle;
@@ -14,7 +14,7 @@
public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
- final String TAG = "org.electrumg.SimpleScannerActivity";
+ final String TAG = "org.electrum-bci.SimpleScannerActivity";
@Override
public void onCreate(Bundle state) {
diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
index 1c4fa40a6204..a9a4c9bbd5b7 100644
--- a/gui/kivy/main_window.py
+++ b/gui/kivy/main_window.py
@@ -158,7 +158,7 @@ def on_history(self, d):
self._trigger_update_history()
def _get_bu(self):
- return self.electrum_config.get('base_unit', 'BTG')
+ return self.electrum_config.get('base_unit', 'BCI')
def _set_bu(self, value):
assert value in base_units.keys()
@@ -266,7 +266,7 @@ def __init__(self, **kwargs):
self.fx = self.daemon.fx
self.use_rbf = config.get('use_rbf', True)
- self.use_change = config.get('use_change', True)
+ self.use_change = config.get('use_change', False)
self.use_unconfirmed = not config.get('confirmed_only', False)
# create triggers so as to minimize updation a max of 2 times a sec
@@ -307,7 +307,7 @@ def on_qr(self, data):
if is_address(data):
self.set_URI(data)
return
- if data.startswith('bitcoingold:'):
+ if data.startswith('bitcoininterest:'):
self.set_URI(data)
return
# try to decode transaction
@@ -452,7 +452,7 @@ def on_start(self):
self.fiat_unit = self.fx.ccy if self.fx.is_enabled() else ''
# default tab
self.switch_to('history')
- # bind intent for bitcoingold: URI scheme
+ # bind intent for bitcoininterest: URI scheme
if platform == 'android':
from android import activity
from jnius import autoclass
@@ -589,7 +589,7 @@ def init_ui(self):
self.receive_screen = None
self.requests_screen = None
self.address_screen = None
- self.icon = "icons/electrumg.png"
+ self.icon = "icons/electrum-bci.png"
self.tabs = self.root.ids['tabs']
def update_interfaces(self, dt):
diff --git a/gui/kivy/tools/bitcoin_intent.xml b/gui/kivy/tools/bitcoin_intent.xml
index 74d04e8b2824..0e4a7d72b492 100644
--- a/gui/kivy/tools/bitcoin_intent.xml
+++ b/gui/kivy/tools/bitcoin_intent.xml
@@ -3,5 +3,5 @@
-
+
diff --git a/gui/kivy/tools/buildozer.spec b/gui/kivy/tools/buildozer.spec
index 06de346b5c64..dcc590f278d2 100644
--- a/gui/kivy/tools/buildozer.spec
+++ b/gui/kivy/tools/buildozer.spec
@@ -1,13 +1,13 @@
[app]
# (str) Title of your application
-title = ElectrumG
+title = Electrum-bci
# (str) Package name
-package.name = ElectrumG
+package.name = Electrum-bci
# (str) Package domain (needed for android/ios packaging)
-package.domain = org.electrumg
+package.domain = org.electrum-bci
# (str) Source code where the main.py live
source.dir = .
@@ -35,10 +35,10 @@ requirements = python3crystax==3.6, android, openssl, plyer, kivy==master
# (str) Presplash of the application
#presplash.filename = %(source.dir)s/gui/kivy/theming/splash.png
-presplash.filename = %(source.dir)s/icons/electrumg_presplash.png
+presplash.filename = %(source.dir)s/icons/electrum-bci_presplash.png
# (str) Icon of the application
-icon.filename = %(source.dir)s/icons/electrumg_launcher.png
+icon.filename = %(source.dir)s/icons/electrum-bci_launcher.png
# (str) Supported orientation (one of landscape, portrait or all)
orientation = portrait
@@ -91,7 +91,7 @@ android.add_src = gui/kivy/data/java-classes/
android.gradle_dependencies = me.dm7.barcodescanner:zxing:1.9.8
-android.add_activities = org.electrumg.qr.SimpleScannerActivity
+android.add_activities = org.electrum-bci.qr.SimpleScannerActivity
# (str) python-for-android branch to use, if not master, useful to try
# not yet merged features.
diff --git a/gui/kivy/uix/dialogs/installwizard.py b/gui/kivy/uix/dialogs/installwizard.py
index 7cf6df8e0ef5..da76ef75b55d 100644
--- a/gui/kivy/uix/dialogs/installwizard.py
+++ b/gui/kivy/uix/dialogs/installwizard.py
@@ -88,7 +88,7 @@
height: self.minimum_height
Label:
color: root.text_color
- text: 'ELECTRUMG'
+ text: 'ELECTRUM'
size_hint: 1, None
height: self.texture_size[1] if self.opacity else 0
font_size: '33sp'
diff --git a/gui/kivy/uix/dialogs/settings.py b/gui/kivy/uix/dialogs/settings.py
index 805258440040..19e58522b0c3 100644
--- a/gui/kivy/uix/dialogs/settings.py
+++ b/gui/kivy/uix/dialogs/settings.py
@@ -17,7 +17,7 @@
id: settings
- title: _('ElectrumG Settings')
+ title: _('Electrum-bci Settings')
disable_pin: False
use_encryption: False
BoxLayout:
@@ -45,7 +45,7 @@
SettingsItem:
bu: app.base_unit
title: _('Denomination') + ': ' + self.bu
- description: _("Base unit for BitcoinGold amounts.")
+ description: _("Base unit for BitcoinInterest amounts.")
action: partial(root.unit_dialog, self)
CardSeparator
SettingsItem:
diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
index e64b0e6e14b0..2cf900ad617d 100644
--- a/gui/kivy/uix/screens.py
+++ b/gui/kivy/uix/screens.py
@@ -172,7 +172,7 @@ def set_URI(self, text):
try:
uri = electrum.util.parse_URI(text, self.app.on_pr)
except:
- self.app.show_info(_("Not a BitcoinGold URI"))
+ self.app.show_info(_("Not a BitcoinInterest URI"))
return
amount = uri.get('amount')
self.screen.address = uri.get('address', '')
@@ -241,10 +241,10 @@ def do_send(self):
else:
address = str(self.screen.address)
if not address:
- self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a BitcoinGold address or a payment request'))
+ self.app.show_error(_('Recipient not specified.') + ' ' + _('Please scan a BitcoinInterest address or a payment request'))
return
if not bitcoin.is_address(address):
- self.app.show_error(_('Invalid BitcoinGold Address') + ':\n' + address)
+ self.app.show_error(_('Invalid BitcoinInterest Address') + ':\n' + address)
return
try:
amount = self.app.get_amount(self.screen.amount)
@@ -361,7 +361,7 @@ def update_qr(self):
def do_share(self):
uri = self.get_URI()
- self.app.do_share(uri, _("Share BitcoinGold Request"))
+ self.app.do_share(uri, _("Share BitcoinInterest Request"))
def do_copy(self):
uri = self.get_URI()
diff --git a/gui/kivy/uix/ui_screens/about.kv b/gui/kivy/uix/ui_screens/about.kv
index 24bede26f0c3..c9964aef82b2 100644
--- a/gui/kivy/uix/ui_screens/about.kv
+++ b/gui/kivy/uix/ui_screens/about.kv
@@ -1,7 +1,7 @@
#:import VERSION electrum.version.ELECTRUM_VERSION
Popup:
- title: _("About ElectrumG")
+ title: _("About Electrum-bci")
BoxLayout:
orientation: 'vertical'
spacing: '10dp'
@@ -26,19 +26,19 @@ Popup:
size_hint_x: 0.4
TopLabel:
markup: True
- text: '[color=6666ff][ref=x]https://bitcoingold.org[/ref][/color]'
+ text: '[color=6666ff][ref=x]https://www.bitcoininterest.io[/ref][/color]'
on_ref_press:
import webbrowser
- webbrowser.open("https://bitcoingold.org")
+ webbrowser.open("https://www.bitcoininterest.io")
size_hint_x: 0.6
TopLabel:
text: _('Developers')
size_hint_x: 0.4
TopLabel:
- text: 'The BitcoiGold Developers'
+ text: 'The Bitcoin Interest Developers'
size_hint_x: 0.6
TopLabel:
- text: _('Distributed by BitcoinGold Organization')
+ text: _('Distributed by BitcoinInterest Organization')
padding: '0dp', '20dp'
Widget:
size_hint: None, 0.5
diff --git a/gui/kivy/uix/ui_screens/network.kv b/gui/kivy/uix/ui_screens/network.kv
index e8be12f35fab..16e371f13c2a 100644
--- a/gui/kivy/uix/ui_screens/network.kv
+++ b/gui/kivy/uix/ui_screens/network.kv
@@ -13,7 +13,7 @@ Popup:
SettingsItem:
value: _("{} connections.").format(app.num_nodes) if app.num_nodes else _("Not connected")
title: _("Status") + ': ' + self.value
- description: _("Connections with ElectrumG servers")
+ description: _("Connections with Electrum-bci servers")
action: lambda x: None
CardSeparator
diff --git a/gui/kivy/uix/ui_screens/receive.kv b/gui/kivy/uix/ui_screens/receive.kv
index 8777f867819a..881d2858d53b 100644
--- a/gui/kivy/uix/ui_screens/receive.kv
+++ b/gui/kivy/uix/ui_screens/receive.kv
@@ -68,7 +68,7 @@ ReceiveScreen:
pos_hint: {'center_y': .5}
BlueButton:
id: address_label
- text: s.address if s.address else _('BitcoinGold Address')
+ text: s.address if s.address else _('BitcoinInterest Address')
shorten: True
on_release: Clock.schedule_once(lambda dt: app.addresses_dialog(s))
CardSeparator:
diff --git a/gui/kivy/uix/ui_screens/server.kv b/gui/kivy/uix/ui_screens/server.kv
index 40c138ad636d..0913dfd31286 100644
--- a/gui/kivy/uix/ui_screens/server.kv
+++ b/gui/kivy/uix/ui_screens/server.kv
@@ -6,7 +6,7 @@ Popup:
padding: '10dp'
spacing: '10dp'
TopLabel:
- text: _("ElectrumG requests your transaction history from a single server. The returned history is checked against blockchain headers sent by other nodes, using Simple Payment Verification (SPV).")
+ text: _("Electrum-bci requests your transaction history from a single server. The returned history is checked against blockchain headers sent by other nodes, using Simple Payment Verification (SPV).")
font_size: '6pt'
Widget:
size_hint: 1, 0.8
diff --git a/gui/kivy/uix/ui_screens/status.kv b/gui/kivy/uix/ui_screens/status.kv
index 279b9a7c1bad..2b639aea3aa9 100644
--- a/gui/kivy/uix/ui_screens/status.kv
+++ b/gui/kivy/uix/ui_screens/status.kv
@@ -1,5 +1,5 @@
Popup:
- title: "ElectrumG"
+ title: "Electrum-bci"
confirmed: 0
unconfirmed: 0
unmatured: 0
diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
index d946f8702dbb..3de8fae0de49 100644
--- a/gui/qt/__init__.py
+++ b/gui/qt/__init__.py
@@ -56,7 +56,7 @@
except Exception as e:
print(e)
print("Error: Could not find icons file.")
- print("Please run 'pyrcc5 icons.qrc -o gui/qt/icons_rc.py', and reinstall ElectrumG")
+ print("Please run 'pyrcc5 icons.qrc -o gui/qt/icons_rc.py', and reinstall Electrum-bci")
sys.exit(1)
from .util import * # * needed for plugins
@@ -97,7 +97,7 @@ def __init__(self, config, daemon, plugins):
if hasattr(QtCore.Qt, "AA_ShareOpenGLContexts"):
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
if hasattr(QGuiApplication, 'setDesktopFileName'):
- QGuiApplication.setDesktopFileName('electrumg.desktop')
+ QGuiApplication.setDesktopFileName('electrum-bci.desktop')
self.config = config
self.daemon = daemon
self.plugins = plugins
@@ -111,7 +111,7 @@ def __init__(self, config, daemon, plugins):
# init tray
self.dark_icon = self.config.get("dark_icon", False)
self.tray = QSystemTrayIcon(self.tray_icon(), None)
- self.tray.setToolTip('ElectrumG')
+ self.tray.setToolTip('Electrum-bci')
self.tray.activated.connect(self.tray_activated)
self.build_tray_menu()
self.tray.show()
@@ -133,13 +133,13 @@ def build_tray_menu(self):
submenu.addAction(_("Close"), window.close)
m.addAction(_("Dark/Light"), self.toggle_tray_icon)
m.addSeparator()
- m.addAction(_("Exit ElectrumG"), self.close)
+ m.addAction(_("Exit Electrum-bci"), self.close)
def tray_icon(self):
if self.dark_icon:
- return QIcon(':icons/electrumg_dark_icon.png')
+ return QIcon(':icons/electrum-bci_dark_icon.png')
else:
- return QIcon(':icons/electrumg_light_icon.png')
+ return QIcon(':icons/electrum-bci_light_icon.png')
def toggle_tray_icon(self):
self.dark_icon = not self.dark_icon
@@ -165,7 +165,7 @@ def new_window(self, path, uri=None):
def show_network_dialog(self, parent):
if not self.daemon.network:
- parent.show_warning(_('You are using ElectrumG in offline mode; restart ElectrumG if you want to get connected'), title=_('Offline'))
+ parent.show_warning(_('You are using Electrum-bci in offline mode; restart Electrum-bci if you want to get connected'), title=_('Offline'))
return
if self.nd:
self.nd.on_update()
diff --git a/gui/qt/amountedit.py b/gui/qt/amountedit.py
index ed73369009c5..354f7083b9b5 100644
--- a/gui/qt/amountedit.py
+++ b/gui/qt/amountedit.py
@@ -21,7 +21,7 @@ class AmountEdit(MyLineEdit):
def __init__(self, base_unit, is_int = False, parent=None):
QLineEdit.__init__(self, parent)
- # This seems sufficient for hundred-BTG amounts with 8 decimals
+ # This seems sufficient for hundred-BCI amounts with 8 decimals
self.setFixedWidth(140)
self.base_unit = base_unit
self.textChanged.connect(self.numbify)
@@ -73,7 +73,7 @@ def setAmount(self, x):
self.setText("%d"%x)
-class BTGAmountEdit(AmountEdit):
+class BCIAmountEdit(AmountEdit):
def __init__(self, decimal_point, is_int = False, parent=None):
AmountEdit.__init__(self, self._base_unit, is_int, parent)
@@ -82,9 +82,9 @@ def __init__(self, decimal_point, is_int = False, parent=None):
def _base_unit(self):
p = self.decimal_point()
if p == 8:
- return 'BTG'
+ return 'BCI'
if p == 5:
- return 'mBTG'
+ return 'mBCI'
if p == 2:
return 'bits'
raise Exception('Unknown base unit')
@@ -104,12 +104,12 @@ def setAmount(self, amount):
self.setText(format_satoshis_plain(amount, self.decimal_point()))
-class FeerateEdit(BTGAmountEdit):
+class FeerateEdit(BCIAmountEdit):
def _base_unit(self):
return 'sat/byte'
def get_amount(self):
- sat_per_byte_amount = BTGAmountEdit.get_amount(self)
+ sat_per_byte_amount = BCIAmountEdit.get_amount(self)
if sat_per_byte_amount is None:
return None
return 1000 * sat_per_byte_amount
diff --git a/gui/qt/exception_window.py b/gui/qt/exception_window.py
index 90b899605675..62a1cd9646af 100644
--- a/gui/qt/exception_window.py
+++ b/gui/qt/exception_window.py
@@ -46,7 +46,7 @@
Additional information
- - ElectrumG version: {app_version}
+ - Electrum-bci version: {app_version}
- Operating system: {os}
- Wallet type: {wallet_type}
- Locale: {locale}
@@ -63,14 +63,14 @@ def __init__(self, main_window, exctype, value, tb):
self.exc_args = (exctype, value, tb)
self.main_window = main_window
QWidget.__init__(self)
- self.setWindowTitle('ElectrumG - ' + _('An Error Occured'))
+ self.setWindowTitle('Electrum-bci - ' + _('An Error Occured'))
self.setMinimumSize(600, 300)
main_box = QVBoxLayout()
heading = QLabel('' + _('Sorry!') + '
')
main_box.addWidget(heading)
- main_box.addWidget(QLabel(_('Something went wrong while executing ElectrumG.')))
+ main_box.addWidget(QLabel(_('Something went wrong while executing Electrum-bci.')))
main_box.addWidget(QLabel(_('Please create a bug report with the following content to help us diagnose and fix the problem:')))
diff --git a/gui/qt/history_list.py b/gui/qt/history_list.py
index c3a732639ee2..0a599f741d44 100644
--- a/gui/qt/history_list.py
+++ b/gui/qt/history_list.py
@@ -381,7 +381,7 @@ def export_history_dialog(self):
d = WindowModalDialog(self, _('Export History'))
d.setMinimumSize(400, 200)
vbox = QVBoxLayout(d)
- defaultname = os.path.expanduser('~/electrumg-history.csv')
+ defaultname = os.path.expanduser('~/electrum-bci-history.csv')
select_msg = _('Select file to export your wallet transactions to')
hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg)
vbox.addLayout(hbox)
@@ -398,7 +398,7 @@ def export_history_dialog(self):
try:
self.do_export_history(self.wallet, filename, csv_button.isChecked())
except (IOError, os.error) as reason:
- export_error_label = _("ElectrumG was unable to produce a transaction export.")
+ export_error_label = _("Electrum-bci was unable to produce a transaction export.")
self.parent.show_critical(export_error_label + "\n" + str(reason), title=_("Unable to export history"))
return
self.parent.show_message(_("Your wallet history has been successfully exported."))
diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
index 56af6a895cae..cdc726dd8288 100644
--- a/gui/qt/installwizard.py
+++ b/gui/qt/installwizard.py
@@ -98,7 +98,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
def __init__(self, config, app, plugins, storage):
BaseWizard.__init__(self, config, storage)
QDialog.__init__(self, None)
- self.setWindowTitle('ElectrumG - ' + _('Install Wizard'))
+ self.setWindowTitle('Electrum-bci - ' + _('Install Wizard'))
self.app = app
self.config = config
# Set for base base class
@@ -143,7 +143,7 @@ def __init__(self, config, app, plugins, storage):
hbox.setStretchFactor(scroll, 1)
outer_vbox.addLayout(hbox)
outer_vbox.addLayout(Buttons(self.back_button, self.next_button))
- self.set_icon(':icons/electrumg_small.png')
+ self.set_icon(':icons/electrum-bci_small.png')
self.show()
self.raise_()
self.refresh_gui() # Need for QT on MacOSX. Lame.
@@ -170,7 +170,7 @@ def run_and_get_wallet(self, get_wallet_from_daemon):
hbox2.addWidget(self.pw_e)
hbox2.addStretch()
vbox.addLayout(hbox2)
- self.set_layout(vbox, title=_('ElectrumG wallet'))
+ self.set_layout(vbox, title=_('Electrum-bci wallet'))
wallet_folder = os.path.dirname(self.storage.path)
@@ -540,7 +540,7 @@ def show_xpub_dialog(self, xpub, run_next):
return None
def init_network(self, network):
- message = _("ElectrumG communicates with remote servers to get "
+ message = _("Electrum-bci communicates with remote servers to get "
"information about your transactions and addresses. The "
"servers all fulfill the same purpose only differing in "
"hardware. In most cases you simply want to let Electrum "
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
index 61ae27474b08..feb61064c0ce 100644
--- a/gui/qt/main_window.py
+++ b/gui/qt/main_window.py
@@ -53,7 +53,7 @@
from electrum import paymentrequest
from electrum.wallet import Multisig_Wallet, AddTransactionException
-from .amountedit import AmountEdit, BTGAmountEdit, MyLineEdit, FeerateEdit
+from .amountedit import AmountEdit, BCIAmountEdit, MyLineEdit, FeerateEdit
from .qrcodewidget import QRCodeWidget, QRDialog
from .qrtextedit import ShowQRTextEdit, ScanQRTextEdit
from .transaction_dialog import show_transaction
@@ -160,7 +160,7 @@ def add_optional_tab(tabs, tab, icon, description, name):
if self.config.get("is_maximized"):
self.showMaximized()
- self.setWindowIcon(QIcon(":icons/electrumg.png"))
+ self.setWindowIcon(QIcon(":icons/electrum-bci.png"))
self.init_menubar()
wrtabs = weakref.proxy(tabs)
@@ -189,7 +189,7 @@ def add_optional_tab(tabs, tab, icon, description, name):
# partials, lambdas or methods of subobjects. Hence...
self.network.register_callback(self.on_network, interests)
# set initial message
- self.console.showMessage(_('Welcome to ElectrumG!'))
+ self.console.showMessage(_('Welcome to Electrum-bci!'))
self.network.register_callback(self.on_quotes, ['on_quotes'])
self.network.register_callback(self.on_history, ['on_history'])
self.new_fx_quotes_signal.connect(self.on_fx_quotes)
@@ -373,7 +373,7 @@ def init_geometry(self):
self.setGeometry(100, 100, 840, 400)
def watching_only_changed(self):
- name = "ElectrumG Testnet" if constants.net.TESTNET else "ElectrumG"
+ name = "Electrum-bci Testnet" if constants.net.TESTNET else "Electrum-bci"
title = '%s %s - %s' % (name, self.wallet.electrum_version,
self.wallet.basename())
extra = [self.wallet.storage.get('wallet_type', '?')]
@@ -391,8 +391,8 @@ def warn_if_watching_only(self):
if self.wallet.is_watching_only():
msg = ' '.join([
_("This wallet is watching-only."),
- _("This means you will not be able to spend BitcoinGold with it."),
- _("Make sure you own the seed phrase or the private keys, before you request BitcoinGold to be sent to this wallet.")
+ _("This means you will not be able to spend BitcoinInterest with it."),
+ _("Make sure you own the seed phrase or the private keys, before you request BitcoinInterest to be sent to this wallet.")
])
self.show_warning(msg, title=_('Information'))
@@ -416,7 +416,7 @@ def backup_wallet(self):
shutil.copy2(path, new_path)
self.show_message(_("A copy of your wallet file was created in")+" '%s'" % str(new_path), title=_("Wallet backup created"))
except BaseException as reason:
- self.show_critical(_("ElectrumG was unable to copy your wallet file to the specified location.") + "\n" + str(reason), title=_("Unable to create backup"))
+ self.show_critical(_("Electrum-bci was unable to copy your wallet file to the specified location.") + "\n" + str(reason), title=_("Unable to create backup"))
def update_recently_visited(self, filename):
recent = self.config.get('recently_open', [])
@@ -511,7 +511,7 @@ def add_toggle_action(view_menu, tab):
tools_menu = menubar.addMenu(_("&Tools"))
# Settings / Preferences are all reserved keywords in OSX using this as work around
- tools_menu.addAction(_("ElectrumG preferences") if sys.platform == 'darwin' else _("Preferences"), self.settings_dialog)
+ tools_menu.addAction(_("Electrum-bci preferences") if sys.platform == 'darwin' else _("Preferences"), self.settings_dialog)
tools_menu.addAction(_("&Network"), lambda: self.gui_object.show_network_dialog(self))
#tools_menu.addAction(_("&Plugins"), self.plugins_dialog)
tools_menu.addSeparator()
@@ -531,7 +531,7 @@ def add_toggle_action(view_menu, tab):
help_menu = menubar.addMenu(_("&Help"))
help_menu.addAction(_("&About"), self.show_about)
- help_menu.addAction(_("&Official website"), lambda: webbrowser.open("http://bitcoingold.org"))
+ help_menu.addAction(_("&Official website"), lambda: webbrowser.open("https://www.bitcoininterest.io"))
help_menu.addSeparator()
help_menu.addAction(_("&Documentation"), lambda: webbrowser.open("http://docs.electrum.org/")).setShortcut(QKeySequence.HelpContents)
help_menu.addAction(_("&Report Bug"), self.show_report_bug)
@@ -544,24 +544,24 @@ def donate_to_server(self):
d = self.network.get_donation_address()
if d:
host = self.network.get_parameters()[0]
- self.pay_to_URI('bitcoingold:%s?message=donation for %s'%(d, host))
+ self.pay_to_URI('bitcoininterest:%s?message=donation for %s'%(d, host))
else:
self.show_error(_('No donation address for this server'))
def show_about(self):
- QMessageBox.about(self, "ElectrumG",
+ QMessageBox.about(self, "Electrum-bci",
_("Version")+" %s" % (self.wallet.electrum_version) + "\n\n" +
- _("ElectrumG's focus is speed, with low resource usage and simplifying BitcoinGold. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the BitcoinGold system." + "\n\n" +
+ _("Electrum-bci's focus is speed, with low resource usage and simplifying BitcoinInterest. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjunction with high-performance servers that handle the most complicated parts of the BitcoinInterest system." + "\n\n" +
_("Uses icons from the Icons8 icon pack (icons8.com).")))
def show_report_bug(self):
msg = ' '.join([
_("Please report any bugs as issues on github:
"),
"{0}
".format(constants.GIT_ISSUE_URL),
- _("Before reporting a bug, upgrade to the most recent version of ElectrumG (latest release or git HEAD), and include the version number in your report."),
+ _("Before reporting a bug, upgrade to the most recent version of Electrum-bci (latest release or git HEAD), and include the version number in your report."),
_("Try to explain not only what the bug is, but how it occurs.")
])
- self.show_message(msg, title="ElectrumG - " + _("Reporting Bugs"))
+ self.show_message(msg, title="Electrum-bci - " + _("Reporting Bugs"))
def notify_transactions(self):
if not self.network or not self.network.is_connected():
@@ -591,9 +591,9 @@ def notify(self, message):
if self.tray:
try:
# this requires Qt 5.9
- self.tray.showMessage("ElectrumG", message, QIcon(":icons/electrumg_dark_icon"), 20000)
+ self.tray.showMessage("Electrum-bci", message, QIcon(":icons/electrum-bci_dark_icon"), 20000)
except TypeError:
- self.tray.showMessage("ElectrumG", message, QSystemTrayIcon.Information, 20000)
+ self.tray.showMessage("Electrum-bci", message, QSystemTrayIcon.Information, 20000)
@@ -650,9 +650,9 @@ def base_unit(self):
if self.decimal_point == 2:
return 'bits'
if self.decimal_point == 5:
- return 'mBTG'
+ return 'mBCI'
if self.decimal_point == 8:
- return 'BTG'
+ return 'BCI'
raise Exception('Unknown base unit')
def connect_fields(self, window, btc_e, fiat_e, fee_e):
@@ -779,7 +779,7 @@ def create_receive_tab(self):
self.receive_address_e = ButtonsLineEdit()
self.receive_address_e.addCopyButton(self.app)
self.receive_address_e.setReadOnly(True)
- msg = _('BitcoinGold address where the payment should be received. Note that each payment request uses a different BitcoinGold address.')
+ msg = _('BitcoinInterest address where the payment should be received. Note that each payment request uses a different BitcoinInterest 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.NoFocus)
@@ -791,7 +791,7 @@ def create_receive_tab(self):
grid.addWidget(self.receive_message_e, 1, 1, 1, -1)
self.receive_message_e.textChanged.connect(self.update_receive_qr)
- self.receive_amount_e = BTGAmountEdit(self.get_decimal_point)
+ self.receive_amount_e = BCIAmountEdit(self.get_decimal_point)
grid.addWidget(QLabel(_('Requested amount')), 2, 0)
grid.addWidget(self.receive_amount_e, 2, 1)
self.receive_amount_e.textChanged.connect(self.update_receive_qr)
@@ -809,8 +809,8 @@ def create_receive_tab(self):
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 BitcoinGold addresses.'),
- _('The BitcoinGold address never expires and will always be part of this ElectrumG wallet.'),
+ _('Expired requests have to be deleted manually from your list, in order to free the corresponding BitcoinInterest addresses.'),
+ _('The BitcoinInterest address never expires and will always be part of this Electrum-bci wallet.'),
])
grid.addWidget(HelpLabel(_('Request expires'), msg), 3, 0)
grid.addWidget(self.expires_combo, 3, 1)
@@ -1033,10 +1033,10 @@ def create_send_tab(self):
grid.setColumnStretch(3, 1)
from .paytoedit import PayToEdit
- self.amount_e = BTGAmountEdit(self.get_decimal_point)
+ self.amount_e = BCIAmountEdit(self.get_decimal_point)
self.payto_e = PayToEdit(self)
msg = _('Recipient of the funds.') + '\n\n'\
- + _('You may enter a BitcoinGold 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 BitcoinGold address)')
+ + _('You may enter a BitcoinInterest 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 BitcoinInterest address)')
payto_label = HelpLabel(_('Pay to'), msg)
grid.addWidget(payto_label, 1, 0)
grid.addWidget(self.payto_e, 1, 1, 1, -1)
@@ -1083,7 +1083,7 @@ def create_send_tab(self):
hbox.addStretch(1)
grid.addLayout(hbox, 4, 4)
- msg = _('BitcoinGold transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
+ msg = _('BitcoinInterest 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)
@@ -1138,13 +1138,13 @@ def setAmount(self, byte_size):
self.feerate_e.textEdited.connect(partial(on_fee_or_feerate, self.feerate_e, False))
self.feerate_e.editingFinished.connect(partial(on_fee_or_feerate, self.feerate_e, True))
- self.fee_e = BTGAmountEdit(self.get_decimal_point)
+ self.fee_e = BCIAmountEdit(self.get_decimal_point)
self.fee_e.textEdited.connect(partial(on_fee_or_feerate, self.fee_e, False))
self.fee_e.editingFinished.connect(partial(on_fee_or_feerate, self.fee_e, True))
def feerounding_onclick():
text = (self.feerounding_text + '\n\n' +
- _('To somewhat protect your privacy, ElectrumG tries to create change with similar precision to other outputs.') + ' ' +
+ _('To somewhat protect your privacy, Electrum-bci tries to create change with similar precision to other outputs.') + ' ' +
_('At most 100 satoshis might be lost due to this rounding.') + ' ' +
_("You can disable this setting in '{}'.").format(_('Preferences')) + '\n' +
_('Also, dust is not kept as change, but added to the fee.'))
@@ -1467,10 +1467,10 @@ def read_send_tab(self):
for _type, addr, amount in outputs:
if addr is None:
- self.show_error(_('BitcoinGold Address is None'))
+ self.show_error(_('BitcoinInterest Address is None'))
return
if _type == TYPE_ADDRESS and not bitcoin.is_address(addr):
- self.show_error(_('Invalid BitcoinGold Address'))
+ self.show_error(_('Invalid BitcoinInterest Address'))
return
if amount is None:
self.show_error(_('Invalid Amount'))
@@ -1690,7 +1690,7 @@ def pay_to_URI(self, URI):
try:
out = util.parse_URI(URI, self.on_pr)
except BaseException as e:
- self.show_error(_('Invalid bitcoingold URI:') + '\n' + str(e))
+ self.show_error(_('Invalid bitcoininterest URI:') + '\n' + str(e))
return
self.show_send_tab()
r = out.get('r')
@@ -1896,7 +1896,7 @@ def update_console(self):
'network' : self.network,
#'plugins' : self.gui_object.plugins,
'window': self})
- console.updateNamespace({'util' : util, 'bitcoingold':bitcoin})
+ console.updateNamespace({'util' : util, 'bitcoininterest':bitcoin})
c = commands.Commands(self.config, self.wallet, self.network, lambda: self.console.set_json(True))
methods = {}
@@ -2063,12 +2063,12 @@ def remove_wallet(self):
_('Delete wallet file?'),
"%s" % self.wallet.storage.path,
_('If your wallet contains funds, make sure you have saved its seed.')]),
- title='ElectrumG', icon=QMessageBox.Warning):
+ title='Electrum-bci', icon=QMessageBox.Warning):
if self.question('\n'.join([
_('Are you sure you want to delete this wallet file?'),
"%s" % self.wallet.storage.path, '\n',
_("This CANNOT be undone!")]),
- title='ElectrumG', icon=QMessageBox.Warning):
+ title='Electrum-bci', icon=QMessageBox.Warning):
self._delete_wallet()
@protected
@@ -2135,14 +2135,14 @@ def show_private_key(self, address, password):
"private key, and verifying with the corresponding public key. The "
"address you have entered does not have a unique public key, so these "
"operations cannot be performed.") + '\n\n' + \
- _('The operation is undefined. Not just in ElectrumG, but in general.')
+ _('The operation is undefined. Not just in Electrum-bci, but in general.')
@protected
def do_sign(self, address, message, signature, password):
address = address.text().strip()
message = message.toPlainText().strip()
if not bitcoin.is_address(address):
- self.show_message(_('Invalid BitcoinGold address.'))
+ self.show_message(_('Invalid BitcoinInterest address.'))
return
if self.wallet.is_watching_only():
self.show_message(_('This is a watching-only wallet.'))
@@ -2170,7 +2170,7 @@ def do_verify(self, address, message, signature):
address = address.text().strip()
message = message.toPlainText().strip().encode('utf-8')
if not bitcoin.is_address(address):
- self.show_message(_('Invalid BitcoinGold address.'))
+ self.show_message(_('Invalid BitcoinInterest address.'))
return
try:
# This can throw on invalid base64
@@ -2298,7 +2298,7 @@ def tx_from_text(self, txt):
tx = tx_from_str(txt)
return Transaction(tx)
except BaseException as e:
- self.show_critical(_("ElectrumG was unable to parse your transaction") + ":\n" + str(e))
+ self.show_critical(_("Electrum-bci was unable to parse your transaction") + ":\n" + str(e))
return
def read_tx_from_qrcode(self):
@@ -2310,8 +2310,8 @@ def read_tx_from_qrcode(self):
return
if not data:
return
- # if the user scanned a bitcoingold URI
- if str(data).startswith("bitcoingold:"):
+ # if the user scanned a bitcoininterest URI
+ if str(data).startswith("bitcoininterest:"):
self.pay_to_URI(data)
return
# else if the user scanned an offline signed tx
@@ -2333,7 +2333,7 @@ def read_tx_from_file(self):
with open(fileName, "r") as f:
file_content = f.read()
except (ValueError, IOError, os.error) as reason:
- self.show_critical(_("ElectrumG was unable to open your transaction file") + "\n" + str(reason), title=_("Unable to read file or no transaction found"))
+ self.show_critical(_("Electrum-bci was unable to open your transaction file") + "\n" + str(reason), title=_("Unable to read file or no transaction found"))
return
return self.tx_from_text(file_content)
@@ -2386,7 +2386,7 @@ def export_privkeys_dialog(self, password):
e.setReadOnly(True)
vbox.addWidget(e)
- defaultname = 'electrumg-private-keys.csv'
+ defaultname = 'electrum-bci-private-keys.csv'
select_msg = _('Select file to export your private keys to')
hbox, filename_e, csv_button = filename_field(self, self.config, defaultname, select_msg)
vbox.addLayout(hbox)
@@ -2444,7 +2444,7 @@ def on_dialog_closed(*args):
self.do_export_privkeys(filename, private_keys, csv_button.isChecked())
except (IOError, os.error) as reason:
txt = "\n".join([
- _("ElectrumG was unable to produce a private key-export."),
+ _("Electrum-bci was unable to produce a private key-export."),
str(reason)
])
self.show_critical(txt, title=_("Unable to create csv"))
@@ -2706,9 +2706,9 @@ def on_use_rbf(x):
SSL_id_e.setReadOnly(True)
id_widgets.append((SSL_id_label, SSL_id_e))
- units = ['BTG', 'mBTG', 'bits']
+ units = ['BCI', 'mBCI', 'bits']
msg = _('Base unit of your wallet.')\
- + '\n1BTG=1000mBTG.\n' \
+ + '\n1BCI=1000mBCI.\n' \
+ _(' These settings affects the fields in the Send tab')+' '
unit_label = HelpLabel(_('Base unit') + ':', msg)
unit_combo = QComboBox()
@@ -2720,9 +2720,9 @@ def on_unit(x, nz):
return
edits = self.amount_e, self.fee_e, self.receive_amount_e
amounts = [edit.get_amount() for edit in edits]
- if unit_result == 'BTG':
+ if unit_result == 'BCI':
self.decimal_point = 8
- elif unit_result == 'mBTG':
+ elif unit_result == 'mBCI':
self.decimal_point = 5
elif unit_result == 'bits':
self.decimal_point = 2
@@ -2970,7 +2970,7 @@ def on_fiat_address(checked):
run_hook('close_settings_dialog')
if self.need_restart:
- self.show_warning(_('Please restart ElectrumG to activate the new GUI settings'), title=_('Success'))
+ self.show_warning(_('Please restart Electrum-bci to activate the new GUI settings'), title=_('Success'))
def closeEvent(self, event):
if self.is_hidden() or not self.minimize_to_tray:
@@ -3006,7 +3006,7 @@ def clean_up(self):
self.gui_object.close_window(self)
def plugins_dialog(self):
- self.pluginsdialog = d = WindowModalDialog(self, _('ElectrumG Plugins'))
+ self.pluginsdialog = d = WindowModalDialog(self, _('Electrum-bci Plugins'))
plugins = self.gui_object.plugins
@@ -3093,7 +3093,7 @@ def cpfp(self, parent_tx, new_tx):
output_amount = QLabel('')
grid.addWidget(QLabel(_('Output amount') + ':'), 2, 0)
grid.addWidget(output_amount, 2, 1)
- fee_e = BTGAmountEdit(self.get_decimal_point)
+ fee_e = BCIAmountEdit(self.get_decimal_point)
# FIXME with dyn fees, without estimates, there are all kinds of crashes here
def f(x):
a = max_fee - fee_e.get_amount()
@@ -3131,7 +3131,7 @@ def bump_fee_dialog(self, tx):
vbox.addWidget(QLabel(_('Current fee') + ': %s'% self.format_amount(fee) + ' ' + self.base_unit()))
vbox.addWidget(QLabel(_('New fee' + ':')))
- fee_e = BTGAmountEdit(self.get_decimal_point)
+ fee_e = BCIAmountEdit(self.get_decimal_point)
fee_e.setAmount(fee * 1.5)
vbox.addWidget(fee_e)
diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py
index d2ef2ac02cef..23e1333ac72d 100644
--- a/gui/qt/network_dialog.py
+++ b/gui/qt/network_dialog.py
@@ -214,8 +214,8 @@ def __init__(self, network, config, wizard=False):
self.autoconnect_cb.clicked.connect(self.update)
msg = ' '.join([
- _("If auto-connect is enabled, ElectrumG will always use a server that is on the longest blockchain."),
- _("If it is disabled, you have to choose a server you want to use. ElectrumG will warn you if your server is lagging.")
+ _("If auto-connect is enabled, Electrum-bci will always use a server that is on the longest blockchain."),
+ _("If it is disabled, you have to choose a server you want to use. Electrum-bci will warn you if your server is lagging.")
])
grid.addWidget(self.autoconnect_cb, 0, 0, 1, 3)
grid.addWidget(HelpButton(msg), 0, 4)
@@ -270,7 +270,7 @@ def __init__(self, network, config, wizard=False):
grid.addWidget(self.tor_cb, 1, 0, 1, 3)
grid.addWidget(self.proxy_cb, 2, 0, 1, 3)
- grid.addWidget(HelpButton(_('Proxy settings apply to all connections with ElectrumG servers, but also with third-party services.')), 2, 4)
+ grid.addWidget(HelpButton(_('Proxy settings apply to all connections with Electrum-bci servers, but also with third-party services.')), 2, 4)
grid.addWidget(self.proxy_mode, 4, 1)
grid.addWidget(self.proxy_host, 4, 2)
grid.addWidget(self.proxy_port, 4, 3)
@@ -281,7 +281,7 @@ def __init__(self, network, config, wizard=False):
# Blockchain Tab
grid = QGridLayout(blockchain_tab)
msg = ' '.join([
- _("ElectrumG connects to several nodes in order to download block headers and find out the longest blockchain."),
+ _("Electrum-bci connects to several nodes in order to download block headers and find out the longest blockchain."),
_("This blockchain is used to verify the transactions sent by your transaction server.")
])
self.status_label = QLabel('')
@@ -290,7 +290,7 @@ def __init__(self, network, config, wizard=False):
grid.addWidget(HelpButton(msg), 0, 4)
self.server_label = QLabel('')
- msg = _("ElectrumG sends your wallet addresses to a single server, in order to receive your transaction history.")
+ msg = _("Electrum-bci sends your wallet addresses to a single server, in order to receive your transaction history.")
grid.addWidget(QLabel(_('Server') + ':'), 1, 0)
grid.addWidget(self.server_label, 1, 1, 1, 3)
grid.addWidget(HelpButton(msg), 1, 4)
diff --git a/gui/qt/paytoedit.py b/gui/qt/paytoedit.py
index 8d4c4531168b..7bee57bde9eb 100644
--- a/gui/qt/paytoedit.py
+++ b/gui/qt/paytoedit.py
@@ -122,7 +122,7 @@ def check_text(self):
self.payto_address = None
if len(lines) == 1:
data = lines[0]
- if data.startswith("bitcoingold:"):
+ if data.startswith("bitcoininterest:"):
self.scan_f(data)
return
try:
@@ -260,7 +260,7 @@ def keyPressEvent(self, e):
def qr_input(self):
data = super(PayToEdit,self).qr_input()
- if data.startswith("bitcoingold:"):
+ if data.startswith("bitcoininterest:"):
self.scan_f(data)
# TODO: update fee
diff --git a/gui/qt/qrwindow.py b/gui/qt/qrwindow.py
index 2519f7413e18..232f546d3977 100644
--- a/gui/qt/qrwindow.py
+++ b/gui/qt/qrwindow.py
@@ -46,7 +46,7 @@ class QR_Window(QWidget):
def __init__(self, win):
QWidget.__init__(self)
self.win = win
- self.setWindowTitle('ElectrumG - '+_('Payment Request'))
+ self.setWindowTitle('Electrum-bci - '+_('Payment Request'))
self.setMinimumSize(800, 250)
self.address = ''
self.label = ''
diff --git a/gui/qt/seed_dialog.py b/gui/qt/seed_dialog.py
index 2cb33b5d7572..fea45058ed4e 100644
--- a/gui/qt/seed_dialog.py
+++ b/gui/qt/seed_dialog.py
@@ -68,10 +68,10 @@ def f(b):
if b:
msg = ' '.join([
'' + _('Warning') + ': ',
- _('BIP39 seeds can be imported in ElectrumG, so that users can access funds locked in other wallets.'),
+ _('BIP39 seeds can be imported in Electrum-bci, so that users can access funds locked in other wallets.'),
_('However, we do not generate BIP39 seeds, because they do not meet our safety standard.'),
_('BIP39 seeds do not include a version number, which compromises compatibility with future software.'),
- _('We do not guarantee that BIP39 imports will always be supported in ElectrumG.'),
+ _('We do not guarantee that BIP39 imports will always be supported in Electrum-bci.'),
])
else:
msg = ''
@@ -172,7 +172,7 @@ def on_edit(self):
class SeedDialog(WindowModalDialog):
def __init__(self, parent, seed, passphrase):
- WindowModalDialog.__init__(self, parent, ('ElectrumG - ' + _('Seed')))
+ WindowModalDialog.__init__(self, parent, ('Electrum-bci - ' + _('Seed')))
self.setMinimumWidth(400)
vbox = QVBoxLayout(self)
title = _("Your wallet generation seed is:")
diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py
index 0ddb9405cb41..88371e1fdb1e 100644
--- a/gui/qt/transaction_dialog.py
+++ b/gui/qt/transaction_dialog.py
@@ -50,7 +50,7 @@ def show_transaction(tx, parent, desc=None, prompt_if_unsaved=False):
d = TxDialog(tx, parent, desc, prompt_if_unsaved)
except SerializationError as e:
traceback.print_exc(file=sys.stderr)
- parent.show_critical(_("ElectrumG was unable to deserialize the transaction:") + "\n" + str(e))
+ parent.show_critical(_("Electrum-bci was unable to deserialize the transaction:") + "\n" + str(e))
else:
dialogs.append(d)
d.show()
diff --git a/gui/qt/util.py b/gui/qt/util.py
index 37443521ebcf..247ee531927a 100644
--- a/gui/qt/util.py
+++ b/gui/qt/util.py
@@ -739,7 +739,7 @@ def import_meta_gui(electrum_window, title, importer, on_success):
def export_meta_gui(electrum_window, title, exporter):
filter_ = "JSON (*.json);;All files (*)"
filename = electrum_window.getSaveFileName(_("Select file to save your {}").format(title),
- 'electrumg_{}.json'.format(title), filter_)
+ 'electrum-bci_{}.json'.format(title), filter_)
if not filename:
return
try:
diff --git a/gui/stdio.py b/gui/stdio.py
index 0a4904dafc81..289b20fcd853 100644
--- a/gui/stdio.py
+++ b/gui/stdio.py
@@ -16,7 +16,7 @@ def __init__(self, config, daemon, plugins):
self.network = daemon.network
storage = WalletStorage(config.get_wallet_path())
if not storage.file_exists:
- print("Wallet not found. try 'electrumg create'")
+ print("Wallet not found. try 'electrum-bci create'")
exit()
if storage.is_encrypted():
password = getpass.getpass('Password:', stream=None)
@@ -163,7 +163,7 @@ def main(self):
def do_send(self):
if not is_address(self.str_recipient):
- print(_('Invalid BitcoinGold address'))
+ print(_('Invalid BitcoinInterest address'))
return
try:
amount = int(Decimal(self.str_amount) * COIN)
@@ -208,12 +208,12 @@ def do_send(self):
print(_('Error'))
def network_dialog(self):
- print("use 'electrumg setconfig server/proxy' to change your network settings")
+ print("use 'electrum-bci setconfig server/proxy' to change your network settings")
return True
def settings_dialog(self):
- print("use 'electrumg setconfig' to change your settings")
+ print("use 'electrum-bci setconfig' to change your settings")
return True
def password_dialog(self):
diff --git a/gui/text.py b/gui/text.py
index 03b51207263a..5245313b4170 100644
--- a/gui/text.py
+++ b/gui/text.py
@@ -20,7 +20,7 @@ def __init__(self, config, daemon, plugins):
self.network = daemon.network
storage = WalletStorage(config.get_wallet_path())
if not storage.file_exists():
- print("Wallet not found. try 'electrumg create'")
+ print("Wallet not found. try 'electrum-bci create'")
exit()
if storage.is_encrypted():
password = getpass.getpass('Password:', stream=None)
@@ -320,7 +320,7 @@ def do_clear(self):
def do_send(self):
if not is_address(self.str_recipient):
- self.show_message(_('Invalid BitcoinGold address'))
+ self.show_message(_('Invalid BitcoinInterest address'))
return
try:
amount = int(Decimal(self.str_amount) * COIN)
diff --git a/icons.qrc b/icons.qrc
index 71114cfed800..977cfa299dd8 100644
--- a/icons.qrc
+++ b/icons.qrc
@@ -1,7 +1,7 @@
- icons/electrumg.png
- icons/electrumg_small.png
+ icons/electrum-bci.png
+ icons/electrum-bci_small.png
icons/clock1.png
icons/clock2.png
icons/clock3.png
@@ -12,8 +12,8 @@
icons/digitalbitbox.png
icons/digitalbitbox_unpaired.png
icons/expired.png
- icons/electrumg_light_icon.png
- icons/electrumg_dark_icon.png
+ icons/electrum-bci_light_icon.png
+ icons/electrum-bci_dark_icon.png
icons/file.png
icons/info.png
icons/keepkey.png
diff --git a/icons/electrumg.ico b/icons/electrum-bci.ico
similarity index 100%
rename from icons/electrumg.ico
rename to icons/electrum-bci.ico
diff --git a/icons/electrum-bci.png b/icons/electrum-bci.png
new file mode 100644
index 000000000000..2b0ce1a68a96
Binary files /dev/null and b/icons/electrum-bci.png differ
diff --git a/icons/electrum-bci_dark_icon.png b/icons/electrum-bci_dark_icon.png
new file mode 100644
index 000000000000..6e2a1196a7f7
Binary files /dev/null and b/icons/electrum-bci_dark_icon.png differ
diff --git a/icons/electrum-bci_launcher.png b/icons/electrum-bci_launcher.png
new file mode 100644
index 000000000000..05c31803b5f1
Binary files /dev/null and b/icons/electrum-bci_launcher.png differ
diff --git a/icons/electrum-bci_light_icon.png b/icons/electrum-bci_light_icon.png
new file mode 100644
index 000000000000..cfcb233f1b08
Binary files /dev/null and b/icons/electrum-bci_light_icon.png differ
diff --git a/icons/electrum-bci_presplash.png b/icons/electrum-bci_presplash.png
new file mode 100644
index 000000000000..c2252ea530bc
Binary files /dev/null and b/icons/electrum-bci_presplash.png differ
diff --git a/icons/electrum-bci_small.png b/icons/electrum-bci_small.png
new file mode 100644
index 000000000000..ad14056fffec
Binary files /dev/null and b/icons/electrum-bci_small.png differ
diff --git a/icons/electrumg.png b/icons/electrumg.png
deleted file mode 100644
index 67f472461b47..000000000000
Binary files a/icons/electrumg.png and /dev/null differ
diff --git a/icons/electrumg_dark_icon.png b/icons/electrumg_dark_icon.png
deleted file mode 100644
index d80c49bafd75..000000000000
Binary files a/icons/electrumg_dark_icon.png and /dev/null differ
diff --git a/icons/electrumg_launcher.png b/icons/electrumg_launcher.png
deleted file mode 100644
index 1f9440fb2b1f..000000000000
Binary files a/icons/electrumg_launcher.png and /dev/null differ
diff --git a/icons/electrumg_light_icon.png b/icons/electrumg_light_icon.png
deleted file mode 100644
index bd0c2f1ae06c..000000000000
Binary files a/icons/electrumg_light_icon.png and /dev/null differ
diff --git a/icons/electrumg_presplash.png b/icons/electrumg_presplash.png
deleted file mode 100644
index a95b95931144..000000000000
Binary files a/icons/electrumg_presplash.png and /dev/null differ
diff --git a/icons/electrumg_small.png b/icons/electrumg_small.png
deleted file mode 100644
index 09680d018994..000000000000
Binary files a/icons/electrumg_small.png and /dev/null differ
diff --git a/lib/base_wizard.py b/lib/base_wizard.py
index 7f59e849fae9..c88e86eb4379 100644
--- a/lib/base_wizard.py
+++ b/lib/base_wizard.py
@@ -92,7 +92,7 @@ def new(self):
('standard', _("Standard wallet")),
#('2fa', _("Wallet with two-factor authentication")),
('multisig', _("Multi-signature wallet")),
- ('imported', _("Import BitcoinGold addresses or private keys")),
+ ('imported', _("Import BitcoinInterest 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)
@@ -149,8 +149,8 @@ def choose_keystore(self):
def import_addresses_or_keys(self):
v = lambda x: keystore.is_address_list(x) or keystore.is_private_key_list(x)
- title = _("Import BitcoinGold Addresses")
- message = _("Enter a list of BitcoinGold addresses (this will create a watching-only wallet), or a list of private keys.")
+ title = _("Import BitcoinInterest Addresses")
+ message = _("Enter a list of BitcoinInterest 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)
@@ -482,11 +482,11 @@ def choose_seed_type(self):
_("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 BitcoinGold during the transition period.")
+ _("Thus, you might want to keep using a non-segwit wallet in order to be able to receive BitcoinInterest during the transition period.")
])
choices = [
('create_standard_seed', _('Standard')),
- ('create_segwit_seed', _('Segwit')),
+ #('create_segwit_seed', _('Segwit')),
]
self.choice_dialog(title=title, message=message, choices=choices, run_next=self.run)
@@ -529,5 +529,5 @@ def task():
self.wallet.synchronize()
self.wallet.storage.write()
self.terminate()
- msg = _("ElectrumG is generating your addresses, please wait...")
+ msg = _("Electrum-bci is generating your addresses, please wait...")
self.waiting_dialog(task, msg)
diff --git a/lib/bitcoin.py b/lib/bitcoin.py
index c4b476f05f6f..8511fe4c0e0b 100644
--- a/lib/bitcoin.py
+++ b/lib/bitcoin.py
@@ -52,7 +52,7 @@ def max_actual_timespan():
def is_postfork(height):
- return height >= constants.net.BTG_HEIGHT
+ return height >= constants.net.BCI_HEIGHT
def needs_retarget(height):
@@ -64,9 +64,7 @@ def difficulty_adjustment_interval():
def get_header_size(height):
- return constants.net.HEADER_SIZE if height >= constants.net.BTG_HEIGHT \
- else constants.net.HEADER_SIZE_LEGACY
-
+ return constants.net.HEADER_SIZE
def hex_to_int(s):
return int('0x' + bh2u(s[::-1]), 16)
@@ -81,7 +79,7 @@ def hex_to_int(s):
MAX_FEE_RATE = 300000
-COINBASE_MATURITY = 100
+COINBASE_MATURITY = 30
COIN = 100000000
# supported types of transaction outputs
diff --git a/lib/blockchain.py b/lib/blockchain.py
index 19763d45c887..86f88e071629 100644
--- a/lib/blockchain.py
+++ b/lib/blockchain.py
@@ -22,20 +22,23 @@
# SOFTWARE.
import gzip
import threading
-from time import sleep
+import struct
+import sha3
+import requests
-from .equihash import is_gbp_valid
+from time import sleep
from . import util
from . import constants
from .bitcoin import *
blockchains = {}
'''
-Postfork BTG headers are ~10x bigger, so we need compression.
+Postfork BCI headers are ~10x bigger, so we need compression.
This makes initial sync a bit slower but saves tons of storage.
'''
USE_COMPRESSSION = False
COMPRESSION_LEVEL = 1
+r_ses = requests.Session()
# Encapsulated read/write to switch between non-compressed and compressed files by only changing USE_COMPRESSION flag
@@ -98,12 +101,36 @@ def deserialize_header(header, height):
return h
+def swap(line):
+ line_list = [line[i:i + 2] for i in range(0, len(line), 2)]
+ line_list.reverse()
+ return ''.join(line_list)
+
+
def hash_header(header, height):
if header is None:
return '0' * 64
if header.get('prev_block_hash') is None:
header['prev_block_hash'] = '00'*32
- return hash_encode(Hash(bfh(serialize_header(header, (not is_postfork(height))))))
+
+ header2 = bfh(serialize_header(header, (not is_postfork(height))))
+ s = sha3.keccak_256()
+
+ nonce = int(hash_encode(header2[132:140]), 16)
+ mixhash = hash_encode(header2[141:173])
+ header_hash_hex = header2[:108] + bytes(32)
+ s.update(header_hash_hex)
+ header_hash = swap(s.hexdigest())
+
+ go_wrapper_url = "https://progpow.bitcoininterest.io/" \
+ "?header_hash={0}" \
+ "&nonce={1}" \
+ "&mix_hash={2}".format(header_hash, nonce, mixhash)
+ r = r_ses.get(go_wrapper_url)
+
+ block_hash = r.json().get('digest')
+
+ return block_hash
def read_blockchains(config):
@@ -112,7 +139,7 @@ def read_blockchains(config):
if not os.path.exists(fdir):
os.mkdir(fdir)
l = filter(lambda x: x.startswith('fork_'), os.listdir(fdir))
- l = sorted(l, key = lambda x: int(x.split('_')[1]))
+ l = sorted(l, key=lambda x: int(x.split('_')[1]))
for filename in l:
checkpoint = int(filename.split('_')[2])
parent_id = int(filename.split('_')[1])
@@ -147,7 +174,7 @@ class Blockchain(util.PrintError):
"""
def __init__(self, config, checkpoint, parent_id):
- self.fork_byte_offset = constants.net.BTG_HEIGHT * constants.net.HEADER_SIZE_LEGACY
+ self.fork_byte_offset = constants.net.BCI_HEIGHT * constants.net.HEADER_SIZE
self.config = config
# interface catching up
self.catch_up = None
@@ -212,50 +239,41 @@ def get_offset(f):
if is_postfork(self.checkpoint):
self._size = size // constants.net.HEADER_SIZE
else:
- checkpoint_size = self.checkpoint * constants.net.HEADER_SIZE_LEGACY
+ checkpoint_size = self.checkpoint * constants.net.HEADER_SIZE
full_size = (size + checkpoint_size)
# Check fork boundary crossing
if full_size <= self.fork_byte_offset:
- self._size = size // constants.net.HEADER_SIZE_LEGACY
+ self._size = size // constants.net.HEADER_SIZE
else:
- prb = (self.fork_byte_offset - checkpoint_size) // constants.net.HEADER_SIZE_LEGACY
+ prb = (self.fork_byte_offset - checkpoint_size) // constants.net.HEADER_SIZE
pob = (full_size - self.fork_byte_offset) // constants.net.HEADER_SIZE
self._size = prb + pob
else:
self._size = 0
def verify_header(self, header, prev_hash, target):
+ # @ToDo Progpow mixhash validation at some point
block_height = header.get('block_height')
-
if prev_hash != header.get('prev_block_hash'):
raise BaseException("prev hash mismatch: %s vs %s" % (prev_hash, header.get('prev_block_hash')))
- #if constants.net.TESTNET:
- # return
+
+ if constants.net.TESTNET:
+ return
bits = self.target_to_bits(target)
if bits != header.get('bits'):
raise BaseException("bits mismatch: %s vs %s" % (bits, header.get('bits')))
_hash = hash_header(header, block_height)
if int('0x' + _hash, 16) > target:
raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _hash, 16), target))
- #_powhash = uint256_from_bytes(Hash(bfh(serialize_header(header))))
- #if _powhash > target:
- # raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _powhash, 16), target))
- if is_postfork(block_height):
- header_bytes = bytes.fromhex(serialize_header(header))
- nonce = uint256_from_bytes(bfh(header.get('nonce'))[::-1])
- solution = bfh(header.get('solution'))[::-1]
- offset, length = var_int_read(solution, 0)
- solution = solution[offset:]
-
- if not is_gbp_valid(header_bytes, nonce, solution, constants.net.EQUIHASH_N, constants.net.EQUIHASH_K):
- raise BaseException("Invalid equihash solution")
+ _powhash = uint256_from_bytes(bytes.fromhex(swap(hash_header(header, block_height))))
+ if _powhash > target:
+ raise BaseException("insufficient proof of work: %s vs target %s" % (int('0x' + _powhash, 16), target))
def verify_chunk(self, height, data):
size = len(data)
offset = 0
prev_hash = self.get_hash(height-1)
-
headers = {}
target = 0
@@ -264,16 +282,13 @@ def verify_chunk(self, height, data):
raw_header = data[offset:(offset + header_size)]
header = deserialize_header(raw_header, height)
headers[height] = header
-
# Check retarget
if needs_retarget(height) or target == 0:
target = self.get_target(height, headers)
-
self.verify_header(header, prev_hash, target)
prev_hash = hash_header(header, height)
offset += header_size
height += 1
-
# FIXME(wilson): Check why UI stalls. For now give it some processing time.
sleep(0.001)
@@ -319,9 +334,9 @@ def my_data_read(f):
size = 0
if not is_postfork(parent.checkpoint) and is_postfork(checkpoint):
- prb = (constants.net.BTG_HEIGHT - parent.checkpoint)
- pob = checkpoint - constants.net.BTG_HEIGHT
- offset = (prb * constants.net.HEADER_SIZE_LEGACY) + (pob * constants.net.HEADER_SIZE)
+ prb = (constants.net.BCI_HEIGHT - parent.checkpoint)
+ pob = checkpoint - constants.net.BCI_HEIGHT
+ offset = (prb * constants.net.HEADER_SIZE) + (pob * constants.net.HEADER_SIZE)
size = parent_branch_size * constants.net.HEADER_SIZE
else:
offset = delta * get_header_size(parent.checkpoint)
@@ -384,7 +399,6 @@ def save_header(self, header):
offset, header_size = self.get_offset(height)
data = bfh(ser_header)
length = len(data)
-
assert delta == self.get_branch_size()
assert length == header_size
self.write(data, offset)
@@ -411,7 +425,7 @@ def get_header(f):
h = read_file(name, get_header, self.lock)
elif not os.path.exists(util.get_headers_dir(self.config)):
- raise Exception('ElectrumG datadir does not exist. Was it deleted while running?')
+ raise Exception('Electrum-bci datadir does not exist. Was it deleted while running?')
else:
raise Exception('Cannot find headers file but datadir is there. Should be at {}'.format(name))
@@ -441,7 +455,6 @@ def get_hash(self, height):
def get_target(self, height, headers=None):
if headers is None:
headers = {}
-
# Check for genesis
if height == 0:
new_target = constants.net.POW_LIMIT_LEGACY
@@ -449,14 +462,11 @@ def get_target(self, height, headers=None):
elif height % difficulty_adjustment_interval() == 0 and 0 <= ((height // difficulty_adjustment_interval()) - 1) < len(self.checkpoints):
h, t = self.checkpoints[((height // difficulty_adjustment_interval()) - 1)]
new_target = t
- # Check for prefork
- elif height < constants.net.BTG_HEIGHT:
- new_target = self.get_legacy_target(height, headers)
# Premine
- elif height < constants.net.BTG_HEIGHT + constants.net.PREMINE_SIZE:
+ elif height < constants.net.BCI_HEIGHT + constants.net.PREMINE_SIZE:
new_target = constants.net.POW_LIMIT
# Initial start (reduced difficulty)
- elif height < constants.net.BTG_HEIGHT + constants.net.PREMINE_SIZE + constants.net.DIGI_AVERAGING_WINDOW:
+ elif height < constants.net.BCI_HEIGHT + constants.net.PREMINE_SIZE + constants.net.DIGI_AVERAGING_WINDOW:
new_target = constants.net.POW_LIMIT_START
# Digishield
elif height < constants.net.LWMA_HEIGHT:
@@ -568,9 +578,7 @@ def get_digishield_target(self, height, headers):
first = self.get_header(prev_height, headers)
i += 1
- # This should never happen else we have a serious problem
assert first is not None
-
avg = total // constants.net.DIGI_AVERAGING_WINDOW
actual_timespan = self.get_mediantime_past(headers, last.get('block_height')) \
- self.get_mediantime_past(headers, first.get('block_height'))
@@ -670,8 +678,8 @@ def get_offset(self, height):
header_size = get_header_size(height)
if is_postfork(height) and not is_postfork(self.checkpoint):
- pr = (constants.net.BTG_HEIGHT - self.checkpoint) * constants.net.HEADER_SIZE_LEGACY
- po = (height - constants.net.BTG_HEIGHT) * constants.net.HEADER_SIZE
+ pr = (constants.net.BCI_HEIGHT - self.checkpoint) * constants.net.HEADER_SIZE
+ po = (height - constants.net.BCI_HEIGHT) * constants.net.HEADER_SIZE
offset = pr + po
else:
offset = abs(delta) * header_size
diff --git a/lib/checkpoints.json b/lib/checkpoints.json
index 771d5f91c027..0d4f101c7a37 100644
--- a/lib/checkpoints.json
+++ b/lib/checkpoints.json
@@ -1,974 +1,2 @@
[
- [
- "00000000693067b0e6b440bc51450b9f3850561b07f6d3c021c54fbd6abb9763",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000f037ad09d0b05ee66b8c1da83030abaf909d2b1bf519c3c7d2cd3fdf",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000006ce8b5f16fcedde13acbc9641baa1c67734f177d770a4069c06c9de8",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000563298de120522b5ae17da21aaae02eee2d7fcb5be65d9224dbd601c",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000009b0a4b2833b4a0aa61171ee75b8eb301ac45a18713795a72e461a946",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000fa8a7363e8f6fdc88ec55edf264c9c7b31268c26e497a4587c750584",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000008ac55b5cd76a5c176f2457f0e9df5ff1c719d939f1022712b1ba2092",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000007f0c796631f00f542c0b402d638d3518bc208f8c9e5d29d2f169c084",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000ffb062296c9d4eb5f87bbf905d30669d26eab6bced341bd3f1dba5fd",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "0000000074c108842c3ec2252bba62db4050bf0dddfee3ddaa5f847076b8822f",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "0000000067dc2f84a73fbf5d3c70678ce4a1496ef3a62c557bc79cbdd1d49f22",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000dbf06f47c0624262ecb197bccf6bdaaabc2d973708ac401ac8955acc",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000009260fe30ec89ef367122f429dcc59f61735760f2b2288f2e854f04ac",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000f9f1a700898c4e0671af6efd441eaf339ba075a5c5c7b0949473c80b",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "000000005107662c86452e7365f32f8ffdc70d8d87aa6f78630a79f7d77fbfe6",
- 26959535291011309493156476344723991336010898738574164086137773096960
- ],
- [
- "00000000984f962134a7291e3693075ae03e521f0ee33378ec30a334d860034b",
- 22791193517536179595645637622052884930882401463536451358196587084939
- ],
- [
- "000000005e36047e39452a7beaaa6721048ac408a3e75bb60a8b0008713653ce",
- 20657752757787447339704949573503817091559730029795210136290380062967
- ],
- [
- "00000000128d789579ffbec00203a371cbb39cee27df35d951fd66e62ed59258",
- 20055900442607493419304231885070612388653052033693203212369143515380
- ],
- [
- "000000008dde642fb80481bb5e1671cb04c6716de5b7f783aa3388456d5c8a85",
- 14823964236757567892443379740509603561300486961438335652879209691748
- ],
- [
- "000000008135b689ad1557d4e148a8b9e58e2c4a67240fc87962abb69710231a",
- 10665478642773714533594093039651282002301533435475036254747899885223
- ],
- [
- "00000000308496ef3e4f9fa542a772df637b4aaf1dcce404424611feacfc09e7",
- 7129928201274994723790235748908587989251132236328748923672922318604
- ],
- [
- "000000001a2e0c63d7d012003c9173acfd04ccd6372027718979228c461b5ed5",
- 5949911830998722926292643443014583571932577723103865087785236463581
- ],
- [
- "000000002e0c0ac26ccde91b51ab018576b3a126b413e9f6f787b36637f1b174",
- 5905493731356012500002445562241380310188483401887904088185399375735
- ],
- [
- "00000000103226f85fe2b68795f087dcec345e523363f18017e60b5c94175355",
- 4430144627991408624040948791361640318006240855899368474057439916851
- ],
- [
- "000000001ae6f66fd4de47f8d6f357e798943bbfc4f39ebf14b0975fab059173",
- 3447600873975070077932488290376750731396138937686397230467460081722
- ],
- [
- "000000000a3f22690162744d3bc0b674c92e661a25afb3d2ac8b39b27ac14373",
- 2351604930866654632766829472567920383958332390561025111996712740267
- ],
- [
- "0000000006dc436c3c515a97446af858c1203a501c85d26c4a30afa380aba4a1",
- 2098151743855439919137531366951071713579837678345159724749870973527
- ],
- [
- "000000000943fe1680ffcc498ce50790ff8e842a8af2c157664e4fbc1cb7cb46",
- 2275792073644785018721128646741518076327875870388847727099387795022
- ],
- [
- "000000000847b2144376c1fb057ea1d5a027d5a6004277ed4c72422e93df04e9",
- 1622204498754365521718764766072378227544231556364276849425436764228
- ],
- [
- "00000000094505954deb1d31382b86d0510fd280a34143400b1856a4d52b4c93",
- 1551050141962082184940599235022157265046848054947355206102386866143
- ],
- [
- "000000000109272cecb3f7e98ac12cf149fa8a1b2aaab248e1b006b0dc595a3a",
- 1389323441362281405504133894690662702230469716601985716313296951861
- ],
- [
- "0000000009e6aa0fe39b790625ffeb18a2d6ff5060a5bd14e699e83c54109977",
- 1147154217026336014073920869620380692430705543951348139504758384216
- ],
- [
- "0000000000d14af55c4eae0121184919baba2deb8bf89c3af6b8e4c4f35c8e4e",
- 594008212391331743177258641174232971084553374243271275697110908234
- ],
- [
- "0000000003dfbfa2b33707e691ab2ab7cda7503be2c2cce43d1b21cd1cc757fb",
- 148501965484106068333659342839523859586884345264449234288706060288
- ],
- [
- "0000000000c169d181d66d242901f70d006f3e088c1ae9cacb88b94b8266e9c3",
- 110393704409292953137636253955510629068475916699790368077242928142
- ],
- [
- "000000000009f7d1439d6a2fc1a456db8e843674275bf0133fc7b43b5f45b96e",
- 76555780966028280774274008956877300222068246662708272689770207398
- ],
- [
- "000000000011b8a8fad7973548b50f6d4b2ba1690f7487c374e43248c576354f",
- 52679970922643127683947083904801524368866887307161543562595547363
- ],
- [
- "000000000077e856b6cc475d9cf784119811214c9cac8d7b674ec24faa7c2c0c",
- 43246875121342569218488803557695204365585581295709263857216301849
- ],
- [
- "00000000004cbb474f2cbf3a65f690efa09804512af3351ba3a0888c806c6625",
- 37817522176947171595261355763110820847417850236612020028828535138
- ],
- [
- "0000000000235b1ec6656d8e91f3dde3b6ab9ad7e75b332e4da9355ce60d860e",
- 29373105354589651513503064535568195122478342070358205617825458296
- ],
- [
- "00000000002a153a2c95a8e5493db93086b0e3fe590b636a5871ace57523ef93",
- 20444489530085161064085987129079503334049188267661948259198215487
- ],
- [
- "00000000000e9550e084908cf91a4e8b74f9f1315d1bc4020709f9e7f261bb18",
- 19563851393374294635996921207472450463857223702361327968607284610
- ],
- [
- "00000000002c2cfef3bb85b463d3fcd39b73a6d3d5ae11c1e2a8113e3794f28d",
- 12545027206560661467344001226069385793869578030934168709550533072
- ],
- [
- "00000000000fa92b757ee29674aa97e98a49ba3ad340d2baa94155d71648dfe1",
- 8719871918647905191685831001181973300414533694245757905046274783
- ],
- [
- "0000000000030571601dbc8e13d00d45004eee6ea8b6ab3cdfb38d2546fee21c",
- 5942997561411541711563156602531385577600077786198627208704997014
- ],
- [
- "00000000000bb6adef42e63082b20fd2b1dc1b324c51973512a4c31f29a9986e",
- 3926018509229572344313816286588613965571477415700629866143917555
- ],
- [
- "000000000000765094788a98dbb8adac30d248b7129b59b1441ee2b7ef9e332f",
- 3337325505332425700040650320729095537310516946108490809993884103
- ],
- [
- "00000000000431a0aa9625f82975709f3c6f4f64d04c559512af051599872084",
- 2200422254731939804709388022233205762025354383380152145148334197
- ],
- [
- "00000000000292b850b8f8578e6b4d03cbb4a78ada44afbb4d2f80a16490e8f9",
- 1861317049673577272902795125376526066826651733332976503154178702
- ],
- [
- "0000000000025afe84e27423011af25f777e5a94545dbd00fd04bebe9050f7dd",
- 1653210985697702096268217038408538100642620147117674184232799239
- ],
- [
- "0000000000000e389cccae2a40437be574fd806909e24136711e7f8bce671d65",
- 1462202160246170142640486657710301628879951515428353771159991652
- ],
- [
- "0000000000030510bf6bc1649726cf2e6e4010c64a2c8fd3fde5dc92535ca40e",
- 1224747759897877506274637367000463834699323352769332185408382770
- ],
- [
- "00000000000082648057f14fc835779c6ce46a407bafb2e5c2ac1d20d9f4e822",
- 1036993586117576703268996282150397585765576605730719362190807632
- ],
- [
- "000000000000f38accd6b22959010471a6d9f159d43bf2a9d4c53c220201254e",
- 739430452756642306146040915925451887239493960335784687377022899
- ],
- [
- "0000000000004ed7a73133678b5eb883cd8882bf14dfb26c104ae0c3f94cf4ee",
- 484980150867459464772730739859302095672636271057575743647282522
- ],
- [
- "00000000000037bb3ff4cf649a1757d4028ecc10f893529b4a2214792c981f96",
- 353834202080594446847490995785168095798368734611949601937470709
- ],
- [
- "0000000000008008f46559fe7f181e9dc0648f213472a1e576e8bf506b88f22f",
- 390846686979010943280302753017141998917705716027679590623447523
- ],
- [
- "000000000000691d0c2444db713bf6c088844cc95a37cdc55cc269bb0a31d8c8",
- 327399809810416473497219170054754564569687652741316499001410264
- ],
- [
- "00000000000071153b0afcc64a425f8442c29749610797119e732dd4b723f675",
- 291937852278662838074813817696277197987476923260730675453803937
- ],
- [
- "000000000000a384acb522e4e5935ad2bc31366ecf1f16f1f11023e967ef033d",
- 245829147781851502645710488124949429684812753873220896184598139
- ],
- [
- "0000000000002e532093d43e901292121fb7c6583caf2d13b666fe7e194b4a97",
- 171262571764606989041741296999128813297927395580615685573053946
- ],
- [
- "00000000000033e435c4bbddc7eb255146aa7f18e61a832983af3a9ee5dd144d",
- 110439004522135981410957929709803254805947931106765020063637821
- ],
- [
- "00000000000028ff4b0bd45f0e3e713f91fa1821d28a276a1a1f32f786662f13",
- 61993466854134149454140006024796140857619052825495269156061184
- ],
- [
- "0000000000001ef9c75318e116a607af4de68fb4f67c788677ee6779fb5fa0d5",
- 47525095027499967685539085016596651791271838150303471592202567
- ],
- [
- "0000000000000e6e98694ccb8247aad63aaa1e2bec5a7be14329407e4cea6223",
- 30742242324775075538370115437091356458943450412845263377277862
- ],
- [
- "000000000000000a2153574b2523a6d1844c3cb82d085e2575846dd8c5d4ebb4",
- 19547340168280248765311813293333293631817970001494998481269884
- ],
- [
- "00000000000002a92c1b1ffb2a8388979cf30798e312335ae2a1b922927ee83d",
- 17248294060755457364687620800167145237577978222086136949668577
- ],
- [
- "00000000000004d54b1422ce733922e7672a4e2ecc86dcf96c0de06565cddaa6",
- 15943944661534740097945584046599407470739618287604834836788345
- ],
- [
- "00000000000009dd91ae96cbbf67af42340b0bc715b3606aa725f630b470262d",
- 14273487520109069190865495135324295912393888045891964854360837
- ],
- [
- "00000000000007d33d78522fa95bdcd4a25072aeac844cbe9b6bc5d0cc885d0a",
- 14930240326912220437232591181374307607822146395712988852898063
- ],
- [
- "00000000000003dd57f5dd1228f68390b586700063225d26bac972bd120546d2",
- 15164777495018002532932947047554711971850359981358394796619712
- ],
- [
- "000000000000076bdeca878b47c392f51fbda543b1e69612cf7d305deb537604",
- 15357836661363254148000422860842573817259062733233058353910518
- ],
- [
- "00000000000008eb1bb7e18d9dfe62210d761cbf114d59ca08e4f638b8563e30",
- 15958691676650473757098043151847631737628132481844875166319930
- ],
- [
- "00000000000001b0d8d885e4d77d7c51e8f1fdaba68f229ac04d191915845f09",
- 18362382113291570192217962968958993778167022285180280072455374
- ],
- [
- "000000000000081baa3a716d5f9ab072c9fc3b798900234c9be23ab02a287c30",
- 22401656061533210580918575951901358551917227873474367195418168
- ],
- [
- "00000000000005b88d0224b9b0d4b65d3de9a61d93609bb91c9297440f1c4657",
- 22607630170339665188190152183146632918104515553204180801386220
- ],
- [
- "000000000000027d6a6870403fa43a650b7d9a6e61243f375a79ea935ad9ef1f",
- 24717308784096979165831027254372357786209337057535982141051915
- ],
- [
- "0000000000000810a3490b86e4f302f6557f9621c5c8620c2b09ec8f0cf72794",
- 23340837323532611728563455098354667083079032543420012677249737
- ],
- [
- "000000000000073833bca8d0ea909fde717e251576b7b3ccaaa58ad5d39eed60",
- 23242403153239567181248045649858932694926499996163845297462125
- ],
- [
- "000000000000031b7fd2ed1f28ff74e969aa891297706c38bd2e1d3bc48183c4",
- 21554570223215082708991040006621195807471559921461022664387024
- ],
- [
- "0000000000000b0738bcba382983811d40b531f2e68cd57126092755f1be4ba6",
- 20615559358036706401988446678345142325284830029403352655769482
- ],
- [
- "000000000000000664cbfd5e3fa497c07614c33a0934b83e01fbe980634a9aa4",
- 19540900118929245469513784022598005389554682908250308721002538
- ],
- [
- "000000000000021eb520df39289a70e40c59822a8c47924dc4940e7d0c1455c4",
- 19588382633956678748738987427134971684150657954263472331193639
- ],
- [
- "0000000000000275e0c41b11bc250fe887c5e60c8ebaaa449f5c28c67133d496",
- 18009312093826905807996061071987479121278814437031313100845126
- ],
- [
- "000000000000097fb0fdbeee0cee7e8f4e1a4ef8fad49f3d549624b0d47abed0",
- 17993487382135493395314550202532083574115934981151443202421804
- ],
- [
- "000000000000053f199ae19d34365277e534f978ea2f6c69cd4757a4fc099af5",
- 16574652347477707606538518827054821354422596190208356086094719
- ],
- [
- "0000000000000217b2e7b4f61682d24b9357d62ad29f27ed45ea2a32dc1f32f6",
- 17085566110414426392074980811822124799183310889195548936089857
- ],
- [
- "000000000000039c1d77acd4702393f48ca61983c64fc0209ade141c694b2359",
- 17870696125576904989516147458864032514115346444088781066283239
- ],
- [
- "0000000000000ae53f0c78330f6c2fbece2752909bc3742823e4fab29c5fd2b0",
- 15554723035590620381978382489682684584827446061258013409024347
- ],
- [
- "00000000000004b4d72b8631a85ec7d226dc696f1913ba1bf735b7c8dec207b8",
- 16944240402989056240270048857919858304172512515419325535711617
- ],
- [
- "00000000000006e06735bffb7d2f215dcadd8311fc33f4a46661fdca3dc0560e",
- 17028766006301915583302001014128348187011555103613522799474256
- ],
- [
- "000000000000055fc0110d4a38ffb338eabc30c8b0aef355d4643d21b5b6a860",
- 15614541816377627606833566623846498830327983334155710863946027
- ],
- [
- "000000000000081b69cb4de006c14084c4861f0e4a140c37200117a738733fe8",
- 15392658582903619517884239396883829533752908215468116311928350
- ],
- [
- "00000000000009920770f2d40b5b6a8aba33d969b855c91b0f56e3db9c27e41a",
- 14444739202621038642296525467957270513966223272539123613709315
- ],
- [
- "0000000000000791dd1cb7a684a54c72ccde51f459fff0fc3e6e051641b1e941",
- 13237069982010980053565410157895773782534548540484990599728904
- ],
- [
- "000000000000019da474a1a598b5cf28534b7fd9b214eed0f36c67c203a9b449",
- 12305441845260052457400411036992507599992679866354285875870526
- ],
- [
- "000000000000074333e888bac730f9772b65e4cc9d07edb122c6e3c6606bc8ab",
- 11046102047853392984991332456419807063224677592114743703633836
- ],
- [
- "000000000000067080669115c445f378f3dec19787558d0e03263b9dec5d7720",
- 10007086165511791816771124848728462094811571795311807624126594
- ],
- [
- "0000000000000304760bf583f4ac241c5ffe77312fa213634eba252c720530f1",
- 9412804029559050886132126846183090289448911866201243978830721
- ],
- [
- "000000000000041fb61665c8a31b8b5c3ae8fe81903ea81530c979d5094e6f9d",
- 8825807680257895657479991196220989276506275995152177228848553
- ],
- [
- "000000000000022fc7f2a5c87b2bab742d71c4eb662d572df33f18193d6abf0e",
- 8774981337152660993121733114298631263731662998207194412401974
- ],
- [
- "000000000000013c6d43ba38bc5f24e699515b9d78602694112fefdc64606640",
- 8158793708965770005321748925786317683564827171691288121295309
- ],
- [
- "00000000000001665176b9a810fddf27cca60dfcfd80bf113289fcc8ffed0284",
- 8002813558257060656072356380146767001272597020026124199745768
- ],
- [
- "00000000000002dc6ef80f56a00f1091471d942ce9bfb656ebdab4ea0b77eb0b",
- 7839578136187174365862370390163660393786299729896106652527867
- ],
- [
- "00000000000002a1fa5546ec48ca88b9e5710e2c6d895bb3675004fdacd6ab13",
- 7999436853933517849738304697453936802516675338771116464559736
- ],
- [
- "00000000000000f517517c11e649b98feca7da84ae44fb643de5a86798fe3c31",
- 9047933968943662429055854851798411859479270438104123361452456
- ],
- [
- "0000000000000299cab92a923348acf9251f656bcbacdb641fd0a66d895a6e8f",
- 8296401729498848716200066027575181804609215798824798623774115
- ],
- [
- "000000000000027508b977f72c3a0f06f1f36e311ad079536630661880934501",
- 9081043763417525999805054818818176389840193708186237826596038
- ],
- [
- "00000000000001925959229452cc6fbfef0104ebed7ccd6f584f2439c5dd1f1b",
- 8230756222604082728916412296377630357556635887892965869189316
- ],
- [
- "00000000000003b34ca89509da5f558af468c194afaa8d458bbeb07c50cc7c74",
- 7384132762576773456261468151764493698188252321818593178380086
- ],
- [
- "0000000000000076559e314ab0c86cc552e34fd79488415d3d17f6ea3c01adb3",
- 6172235633712067451972497618887145940241016806561805162089236
- ],
- [
- "000000000000003a58043252cdc30ed2f37fb17e6ef1658324b1478f16c1463b",
- 5561375174290806544537887055854541186367445945410171525594428
- ],
- [
- "000000000000011babf767e60240658195b693711c217d7da0d9215ccab45333",
- 4026320687087602082485484360946232153393536063582206994825059
- ],
- [
- "000000000000027579d28fb480ccad8e2516d1219d4c1919e3fd4fc0c882955d",
- 3513562835129894943437236119628516496362458327482173263945837
- ],
- [
- "0000000000000074546fe07f80ba15fc81897ec56a5535de727df9fda9dab500",
- 3004086841873755151847218915251583968757589997419002536446958
- ],
- [
- "00000000000000b6c55833b80c07894f4c4d3bb686e5ddbc1b1d162e22752ca3",
- 2675564091736135973597987074403776057837198839748912144832848
- ],
- [
- "00000000000001326f2f970753122e35bfdf3358d046ddf5ea22e57f5d82b00d",
- 2409853811740497723006216754124060157774336072925654369402748
- ],
- [
- "00000000000000641084745613912464ff73c974bafd0bf6dd306295f019d306",
- 2218270940716371747904935551989691447849649677886077648624174
- ],
- [
- "000000000000011ae105ddb1a5bbac6931a6578d95c201525f3a945276a64559",
- 1727570438327407251342043828017904756815782584333725141104066
- ],
- [
- "00000000000000d9b66fee19af89eaaf3f3933d1acd2617924c107f0abbe0a41",
- 1394050998377933499722472690026032322818492088393319462766728
- ],
- [
- "0000000000000011956d42670c2f75eeb344ac0657a806775998e2c58fa4b157",
- 1263613033940095470462619539828531085609177044392029609988618
- ],
- [
- "00000000000000959b1ea990368fd16d494e68ee13bd7245ddd9cdfba3330100",
- 1030471032625362817908252078771570487808270046919474202776261
- ],
- [
- "0000000000000091f86b1e423e24fe358c72db181cfcc2738c85f2f51871a960",
- 862536742724199235179104073167840532858949484653681168904647
- ],
- [
- "0000000000000055e146e473b49fe656a1f2f4b8c33e72b80acc18f84d9fcc26",
- 720982725653754866133106184196823339064064188411714396293721
- ],
- [
- "000000000000004f6a191a3261274735292bc30a1f79f23a143e4ee7dd2f64c1",
- 530591605956209005375408931042036763612094286954585940489028
- ],
- [
- "000000000000005327c8e714272803c60277333362e74ec88b9ffab5410c2358",
- 410030655694725315191023225682702558843537088229871225194892
- ],
- [
- "0000000000000002e2a62b8705564c38d6a746fc8e971a450a69989152b5ee97",
- 310118507134852270764417655876559284597214440570539833833949
- ],
- [
- "00000000000000202bf3ff30109538bfd9b5075c6438ab5ef64ebe2cf9b61404",
- 239366804613626989118705458454015500681551595998816410136871
- ],
- [
- "000000000000001c997105893f5991cb45765ff856b6e503f8466cb22cdd330a",
- 181156300891423147840813581996669801683959668074714341556907
- ],
- [
- "0000000000000010c13ce182a3d8fc6748b75640447eb360d7739a5fe984ffc1",
- 142431143903518058663503832095902619444236806543928975891292
- ],
- [
- "000000000000000bbb49db68b79ecc8393376d78272d237bb612288af64c1de8",
- 100696286705944192804288311731154032278221074156374274573154
- ],
- [
- "0000000000000001bbfd0973c367d30eef2416d9e94bdddea53bccf541a4858f",
- 68962785458117760598328072539715155134139124175836033018875
- ],
- [
- "0000000000000004ee5b6ace996ab746f1e6dd952cdbc74c0b4f8b9ac51c7335",
- 52765647417137724306257751915372504293019655403366801103482
- ],
- [
- "0000000000000002f2f23b515085d0c9f37a2824304ccb7ca1546a48548d0dac",
- 44233494692117781485772218913793271750746093635349642503033
- ],
- [
- "00000000000000045590c3fdeca1753d148a87614a70fa0897a17f90bb321654",
- 38110303308616451367971130315102755539751527244002747835354
- ],
- [
- "0000000000000002b704edc0bf1435fe2116040b547adb1bc2d196eb81779834",
- 29679712134953944285822600537404275892101515173751373902643
- ],
- [
- "00000000000000038cc59dc6dd68ae0fbe2ded8a3de65dbd9a2f9a36d26772df",
- 22829284162675848134182694598477416531051323480214451851537
- ],
- [
- "0000000000000000a979bc50075e7cdf0da5274f7314910b2d798b1aeaf6543f",
- 19005972021752888554737867279515830726136655207276613952446
- ],
- [
- "0000000000000001dd8e548c8cf5b77cde6e5631cd542e39f42c41952e5e7085",
- 15065030752662243106668159124876133476723125447787423397009
- ],
- [
- "0000000000000002513542a461de351a5a94f96b4bcd3e324a48d2d71b403fe0",
- 12288777851891587151373320769563000373599628572350950946294
- ],
- [
- "000000000000000150cc07163e78d599a7e56c0d1040641bffb382705ac17df0",
- 10284450072667651845630380921900049634274231900711580829901
- ],
- [
- "00000000000000009051d83d276dad5c547612f67c2907acf6a143039bddb1bb",
- 8614457133517962240383077577277860009688882364333357498735
- ],
- [
- "00000000000000000b83d3947d2790ab0bcbbb61eba1eb8d8f0f0eb3e9d461e0",
- 7065404376960081064548050202734411051432779994036264291865
- ],
- [
- "00000000000000005a4fbbaeffee6d52fa329dd8c559f90c9b30264c46ad33fd",
- 6343128691613752139911564815777925738673759990853012864417
- ],
- [
- "00000000000000006b6834bae83e895a78c5026a8c8141388040d90506cf3148",
- 5384566985902468539838947745491317290501351277582100625895
- ],
- [
- "0000000000000000bf3c066c9acdb008e7fff3672f1391b35c8877b76b9e295e",
- 4405445424268587912774001698765643657938467054813941696357
- ],
- [
- "00000000000000006bcf448b771c8f4db4e2ca653474e3b29504ec08422b3fba",
- 3863116091606416844204395924633339211949472882692642434091
- ],
- [
- "000000000000000098686ab04cc22fec77e4fa2d76d5a3cc0eb8cbf4ed800cdc",
- 3369644874471976788888364569461031006144821186115339704344
- ],
- [
- "000000000000000036cc637d80982595b1fa30f877efe8904965e6fd70aeae1a",
- 3045099804940836864917455634208357232827311736852711219052
- ],
- [
- "00000000000000000ee9b585e0a707347d7c80f3a905f48fa32d448917335366",
- 2578448738892556035161639572550297683334908085589209042124
- ],
- [
- "00000000000000000401800189014bad6a3ca1af029e19b362d6ef3c5425a8dc",
- 2293150027595934059742111263510686973492486336734191444857
- ],
- [
- "00000000000000001b44d4645ac00773be676f3de8a8bff1a5fdd1fb04d2b3b2",
- 2002553394643609738890838973561169711471353898661293921361
- ],
- [
- "00000000000000003ff2a53152ee98910d7383c0177459ad258c4b2d2c4d4610",
- 1602973121906621623499825176001242504910089450561449296745
- ],
- [
- "00000000000000001bb242c9463b511b9e6a99a6d48bd783acb070ca27861c2b",
- 1555090301026128543569302441423333574769288057539276771351
- ],
- [
- "000000000000000019d43247356b848a7ef8b1c786d8c833b76e382608cb59e9",
- 1438882618901096676077751337424466243540231648216042671672
- ],
- [
- "00000000000000003711b624fbde8c77d4c7e25334cfa8bc176b7248ca67b24b",
- 1366448148696423482270218240630565379904190231445288559686
- ],
- [
- "0000000000000000092c1f996e0b6d07fd0e73dfe6409a5c2adc1206e997c3a2",
- 1130631792721554272454999472203133803635779505498977249380
- ],
- [
- "000000000000000020ce180d66df9d3c28aee9fcec7896071ec67091a9753283",
- 982897902661444504749094486748895114762769275663213548760
- ],
- [
- "000000000000000018d37d53ae02e13634eefb8d9246253e99c1bdf65ac293ea",
- 903780674822307262725136466127288858430591999464421319774
- ],
- [
- "00000000000000001607d1a21507dea1c0e5f398daf94d35fb7e0a3238f96a0f",
- 777796786715545142990933608995805126717575855757223448283
- ],
- [
- "00000000000000001acae244523061f650ddab9c3271d13c0cd86071ae6e8a5f",
- 770217857427240993023051315984564139215374347389780685886
- ],
- [
- "0000000000000000104430189dba1219b0e3dd90824e8c2271609aca5b71250f",
- 749175002550855564826315453191856424408132088739667533908
- ],
- [
- "00000000000000001aa260733b6d8f8faa2092af35e55973278bb17f8eaeca6b",
- 680733332917879088904702563202563546480869669564659182916
- ],
- [
- "000000000000000009925ad5866a9cb3a1d83d9399137bccc7b5470b38b1db2b",
- 668970749931191589798031473561994304229010598616526068121
- ],
- [
- "00000000000000001133acacb92e43e24af63a487923361a4a98c87a5550dffe",
- 673862885517789065391946314370719009092913047398806257816
- ],
- [
- "000000000000000018c66b4a76ca69204e24ee069da9368c7a9883adb36c24af",
- 683252375980679323816587400004061743952674823748550569728
- ],
- [
- "000000000000000010b13aed220b96c35ccd5f07125b51308db976eefcd718f9",
- 663358898259210531333699235628449595078182768956016850932
- ],
- [
- "0000000000000000031b14ece1cfda0e23774e473cd2676834f73155e4f46a2b",
- 613111677421249032126095464155766633549817788831841702233
- ],
- [
- "000000000000000010bfa427c8d305d861ab5ee4776d87d6d911f5fb3045c754",
- 653202571346946874804858789924935228771775905822751784751
- ],
- [
- "000000000000000005d1e9e192a43a19e2fbd933ffb27df2623187ad5ce10adc",
- 606440210473080582646260971729051700700295823810315465086
- ],
- [
- "00000000000000000f9e30784bd647e91f6923263a674c9c5c18084fe79a41f8",
- 577485545195557219124205162278233745767078209386685370301
- ],
- [
- "00000000000000000036d3e1c36e4b959a3e4ad6376ce9ae65961e60350c86e8",
- 568436189899844976161013318161470010900802307864463999350
- ],
- [
- "00000000000000000b3ec9df7aebc319bb12491ba651337f9b3541e78446eca8",
- 577075446183156083131210077122535091982277790261940376730
- ],
- [
- "000000000000000012d24ce222e3c81d4c148f2bce88f752c0dba184c3bc6844",
- 545227685810993878908530774661151072647124692119579479626
- ],
- [
- "000000000000000000c4ccbdd98c267bd16bda12b63b648c47af3ac51c1cc574",
- 566251462633192796874293710752184671013063323002614261298
- ],
- [
- "00000000000000000056bfec1dca8e82710f411af64b1d3b04a2d2364a81993f",
- 565861163013726292152715860908846169118213713027013549266
- ],
- [
- "00000000000000001275d1cadce690546f74f77f6d4a6190e2137a8a819946f6",
- 552365082628398268882484833076555675653086455208105645421
- ],
- [
- "000000000000000003816ae80c6413b84cbee2f639ba497ab5872ec9711eb256",
- 566500826506537696689556913703962485638366020240431987761
- ],
- [
- "00000000000000000d92953224570f521b09553194da1ca3c4b31a09a238f4f6",
- 542528831070582225190358970054175523872885764221168055524
- ],
- [
- "000000000000000006721943f23cfacf20c17c2ad6ea4e902af36b01f92e3c06",
- 545717458684443426657861963694104795617022469075593560376
- ],
- [
- "0000000000000000031d9af2fe38cc02410361fb213181fdb667c74e210d54c4",
- 527828116295419256939747768525818422990809696098687485908
- ],
- [
- "0000000000000000142e8a13ef6994961655c8e86aece3f0abebd2ee05473e75",
- 515692649961651115318501607126660466594771968970128733915
- ],
- [
- "00000000000000000c7a8db37a746d6637ef6a6eab28735608fd715ee2f394e7",
- 511567833081612605062932845380344111401319750691048028647
- ],
- [
- "000000000000000007854877c66c71a49af40d20f2d6f817becfe4d66d5e5a81",
- 496889275651173623472900330204902534352929519684753746862
- ],
- [
- "000000000000000005ce1d2d10aeb9def4d38233e859d98a4a168ea3fa36687a",
- 473326016878892721329791660926511941983191613711888666872
- ],
- [
- "000000000000000007c71decfe74855ad99dc2aa4a2e713165db5a8d6da5f32a",
- 454358905739145490120646206475613103265889121292141221496
- ],
- [
- "000000000000000008ce4f34161be6760569877c685e37ebebce3546ea42a767",
- 443317174350997401226699663083830316501226707336190868827
- ],
- [
- "0000000000000000086233f4843682eb47bacb58930a5577fbfd5c9ebd57ddf9",
- 442803156296231091698861521258691618419467911445974398697
- ],
- [
- "000000000000000010a904eee4fc763c6b88d378884f368fd652f63c1af71580",
- 433057295538880306866830023102486508102611067408810729986
- ],
- [
- "00000000000000000c114754749d622d4fa2f78c84d7147c345b2b99a8e83d2e",
- 409419135913169127551416754586994781281659818649795994250
- ],
- [
- "000000000000000000a5039e32cc9a89aeffbde1391e8bc9ae9724127904f01d",
- 370716565562591807409073645534324134138902968133741824826
- ],
- [
- "000000000000000003b0b73d9b3259c318cca48a6335b5d64545583f7f3773fa",
- 340818601652590375722654926010534269909167221015231774473
- ],
- [
- "00000000000000000198bcc5bd65fd0ccd1c7e3b49e0170ea80296cbfee05042",
- 288495776454828940814130957501183806179235220269688957284
- ],
- [
- "00000000000000000a60f379d3dc1413491f360809a97cbb02c81442c613dce7",
- 259524927038954052049842432960406271327041356520946780931
- ],
- [
- "0000000000000000038973a5f8ba8cdc7e371dcc8f4b24337ef695f24b962907",
- 237834533496394499560421837048697627284447080833665891069
- ],
- [
- "000000000000000004b8ec471974913d052a3af7dc2a8c6f01c2ac2f3d1f7b19",
- 224600594221399775791208366807237501899705336368643295004
- ],
- [
- "0000000000000000075d572eef1c4210adc7abf4e40986d7f0a80003853bfec4",
- 187068024570118295326670137055767916260683809649859998591
- ],
- [
- "0000000000000000074f9edbfc07648dc74392ba8248f0983ffea63431b3bc20",
- 164898586657174446766450284432249324933473312757247241703
- ],
- [
- "000000000000000003c4a4d9c62b3a7f4893afe14eef8a6a377229d23ad4b1ea",
- 170169949941312779383320359289276524103458774855674537695
- ],
- [
- "00000000000000000404b6939e6c35a5448386e5d58f318c82ce2fefb7d73e47",
- 162900642628594452312926252009782198966469183066378413701
- ],
- [
- "0000000000000000034656c96781091b5fbc799c881ea85b41cba0b88128eff7",
- 161578253985639514393501040432436419806938319938347383115
- ],
- [
- "0000000000000000045645e2acd740a88d2b3a09369e9f0f80d5376e4b6c5189",
- 150883217088565412406283744917586302541065882485692466643
- ],
- [
- "00000000000000000381e6a138308c6547d6fe3eb3437250ffefdebbf71eefd1",
- 150899431314054665651533974629900879951167127567886958331
- ],
- [
- "0000000000000000012100ddbb2102e65fb1ebbf104ead754a4110abffc4b8bc",
- 138784704342716220538434620238263807017514526920482840730
- ],
- [
- "0000000000000000046f56e59b9b1293b5e7c1587aa6d29c4f3f79b98cf22ee6",
- 135263027158857483473983812897618462696878980167989570177
- ],
- [
- "000000000000000001bd1c291e91f4476f93454d4542d2ed7e44fc86902c93bb",
- 137505575960473580232190762314053902119220761315057010096
- ],
- [
- "000000000000000001c37a483375ff6fd6ed7c5b79d80167b027a8fdb0721dcd",
- 128714000003724620550017796842876174875520737762229396938
- ],
- [
- "0000000000000000051804b4c2da5298c4573386bf1d4242bf0e26a49ec32e42",
- 126334257597368896694079008874105899845411447996852366067
- ],
- [
- "0000000000000000034bff7888f1f7294311f0199322f77c1457018c875bd9e1",
- 126278728489740292169183109579386034099056145098127681816
- ],
- [
- "00000000000000000506b43c9283ccbc40f583e0c734e4a8af2ce6a4262c6221",
- 133533674521328301805375468020445677637867523414815983180
- ],
- [
- "000000000000000003937068e19a0750a33978050f019d2b60f430e3da707db9",
- 124023231761354306172598997090326962528984683316222123922
- ],
- [
- "000000000000000002e2f6ec3c9eb965aa706c788da7dede201b6b4b8fae3971",
- 122123890689597169329897975011373560881532793639713851004
- ],
- [
- "000000000000000000b3076636b13562bb4315f895bcb324e0c962763c2196b1",
- 119378471659813172166584350643745606396975629669615648535
- ],
- [
- "00000000000000000025b8961d1d0cfba33b0205ec10b3ce541618e352b0bbd5",
- 111760099061575845238587552104542233599456594020708180600
- ],
- [
- "00000000000000000421d58b78b9f063a4b20e181d55c9c79082f9e4b8b30925",
- 104283398725864083874296861096497976441886465506877958948
- ],
- [
- "0000000000000000027fd968d41741f31c73c4a3b304472da0165245278e2ea3",
- 106299891835047816880570816560226555729378855394467112113
- ],
- [
- "00000000000000000364a23184b8a2c009d13172094421c22e4d9bc85dcf90a5",
- 105881534387569087602448606393026827269357803018613746024
- ],
- [
- "0000000000000000042a2ed4a504424060407825d774a54f2e148fa769ee72ff",
- 95668758377605096786059344838386233938948428360571473100
- ],
- [
- "0000000000000000025f769f13f2806fed19d9948b1a7ef19048177789afc5d3",
- 94012478943487551583874745631213709785208280748731165788
- ],
- [
- "000000000000000000b3ff31d54e9e83515ee18360c7dc59e30697d083c745ff",
- 86923144448447518913809103136679872784564523201770836515
- ],
- [
- "0000000000000000021ecdcb2368ce66c23efd8bd8ab6a88a8bb70571c6e67f0",
- 84861696667064232085350895302379622169877065200841464945
- ],
- [
- "000000000000000001972cb33b862b27c1dc3f3a723f7d1cfd69aebe0409126c",
- 80022436630974307725804284020086214397285337936510125904
- ],
- [
- "000000000000000000cb26d2b1018d80670ccc41d89c7da92175bd6b00f27a3e",
- 68605895635350324123887563889758158648405285708846995220
- ],
- [
- "00000000000000000276deb4022f66cacd929c690cd6b4f7e740836b614b21f4",
- 63859488458993656960329361157926368758742149072401957675
- ],
- [
- "000000000000000000587912ced677698c86eec8b1d70144dccb1c6b0bad0f17",
- 61163588147080336562860372542789363550797760125590468374
- ],
- [
- "0000000000000000009f989a246ac4221ebdced8ccebae9b8d5c83b69bb5e7c8",
- 58509968837817799412963215131374851975666125194369450244
- ],
- [
- "000000000000000000038bed8b89c4e82c13076dd64dc5f7a349c39d3921d607",
- 56672978024443644437306289406994921596646228103740151166
- ],
- [
- "00000000000000000122f47d580700a3a5b4b6cb46669a36e4fa974c720ab6cd",
- 53958706289281806789111061412993899806784528297928389354
- ],
- [
- "00000000000000000172ad9ea56a90bdfed0f364a902500e9ff4d74f000ced99",
- 51765097045688608012424287693701763884232488530834902033
- ],
- [
- "00000000000000000201d7429db233c7055e9699c5bfb57b167ca8d0c710dc71",
- 51649247587912518226490987244672765779747315777961084943
- ],
- [
- "000000000000000000c0549b2a8adbefbf6c909f61fdc4d6087c44a549cf8201",
- 48144761676638685568393252844604229390549310101321306353
- ],
- [
- "0000000000000000015b6789cdc5dc13766f58b38f16d5b35bf79ce4b040f7fd",
- 45240056525891956455575817517143990421796325617308336169
- ],
- [
- "0000000000000000013a31b29f845d97465bff53f901027f8ab4b1a2f59118a8",
- 39719085345888042233262788103506269388987831055953076236
- ],
- [
- "00000000000000000088cdeaa7389a7de9f09e3a28b3647630fea3bd1b107134",
- 37880653743061241847157755785329340895782894371522587986
- ],
- [
- "000000000000000001389446206ebcd378c32cd00b4920a8a1ba7b540ca7d699",
- 38043253251243498799796359449649225329347481521269202959
- ],
- [
- "000000000000000000f41e2b7f056b6edef47477d0d0f5833d5d4a047151f2dc",
- 33510049713200839962002052974605137446441531580345905745
- ],
- [
- "0000000000000000010e0373719b7538e713e47d8d7189826dce4264d85a79b8",
- 31340511093499215382498875631096178729473407545556119324
- ],
- [
- "00000000000000000053e2d10bd703ad5b7787614965711d6170b69b133aa366",
- 29201554221106481014362444600779904393001928219662824381
- ],
- [
- "000000000000000000cbeff0b533f8e1189cf09dfbebf57a8ebe349362811b80",
- 30354232589320643409720162249214362116926806095467115096
- ],
- [
- "000000000000000000d0ad638ad61e7c4c3113618b8b26b2044347c00c042278",
- 29217445580005453044145144287633722880237231025559536344
- ],
- [
- "000000000000000000a7bda943639876a2d7a8caf4cac45678fb237d59c28ba1",
- 24433315186493117547015353728839494165411420867297244659
- ],
- [
- "000000000000000000fb6c6a307c8363e923873499ba6299597769c10a438e61",
- 23988337581966024451862874735374376736823985966238572778
- ],
- [
- "0000000000000000006f408147ffbcaa0fb1dcf1f199c527ffdaf159d86e5cd9",
- 22526603255015707503680924025827203599625190615869254262
- ]
-]
\ No newline at end of file
+]
diff --git a/lib/coinchooser.py b/lib/coinchooser.py
index fb562ae30f48..cbaecf4581ee 100644
--- a/lib/coinchooser.py
+++ b/lib/coinchooser.py
@@ -118,7 +118,7 @@ def penalty(candidate):
def change_amounts(self, tx, count, fee_estimator, dust_threshold):
# Break change up if bigger than max_change
output_amounts = [o[2] for o in tx.outputs()]
- # Don't split change of less than 0.02 BTG
+ # Don't split change of less than 0.02 BCI
max_change = max(max(output_amounts) * 1.25, 0.02 * COIN)
# Use N change outputs
@@ -368,7 +368,7 @@ def penalty(buckets):
badness += (min_change - change) / (min_change + 10000)
elif change > max_change:
badness += (change - max_change) / (max_change + 10000)
- # Penalize large change; 5 BTG excess ~= using 1 more input
+ # Penalize large change; 5 BCI excess ~= using 1 more input
badness += change / (COIN * 5)
return badness
diff --git a/lib/commands.py b/lib/commands.py
index 0870b39e5cf5..0c697f91a2ba 100644
--- a/lib/commands.py
+++ b/lib/commands.py
@@ -130,8 +130,8 @@ def create(self, segwit=False):
@command('wn')
def restore(self, text):
"""Restore a wallet from text. Text can be a seed phrase, a master
- public key, a master private key, a list of BitcoinGold addresses
- or BitcoinGold private keys. If you want to be prompted for your
+ public key, a master private key, a list of BitcoinInterest addresses
+ or BitcoinInterest private keys. If you want to be prompted for your
seed, type '?' or ':' (concealed) """
raise BaseException('Not a JSON-RPC command')
@@ -453,7 +453,7 @@ def history(self, year=None, show_addresses=False, show_fiat=False):
@command('w')
def setlabel(self, key, label):
- """Assign a label to an item. Item may be a BitcoinGold address or a
+ """Assign a label to an item. Item may be a BitcoinInterest address or a
transaction ID"""
self.wallet.set_label(key, label)
@@ -531,7 +531,7 @@ def _format_request(self, out):
PR_PAID: 'Paid',
PR_EXPIRED: 'Expired',
}
- out['amount (BTG)'] = format_satoshis(out.get('amount'))
+ out['amount (BCI)'] = format_satoshis(out.get('amount'))
out['status'] = pr_str[out.get('status', PR_UNKNOWN)]
return out
@@ -658,8 +658,8 @@ def help(self):
param_descriptions = {
'privkey': 'Private key. Type \'?\' to get a prompt.',
- 'destination': 'BitcoinGold address, contact or alias',
- 'address': 'BitcoinGold address',
+ 'destination': 'BitcoinInterest address, contact or alias',
+ 'address': 'BitcoinInterest address',
'seed': 'Seed phrase',
'txid': 'Transaction ID',
'pos': 'Position',
@@ -669,8 +669,8 @@ def help(self):
'pubkey': 'Public key',
'message': 'Clear text message. Use quotes if it contains spaces.',
'encrypted': 'Encrypted message',
- 'amount': 'Amount to be sent (in BTG). Type \'!\' to send the maximum available.',
- 'requested_amount': 'Requested amount (in BTG).',
+ 'amount': 'Amount to be sent (in BCI). Type \'!\' to send the maximum available.',
+ 'requested_amount': 'Requested amount (in BCI).',
'outputs': 'list of ["address", amount]',
'redeem_script': 'redeem script (hexadecimal)',
}
@@ -687,7 +687,7 @@ def help(self):
'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 BTG)"),
+ 'fee': ("-f", "Transaction fee (in BCI)"),
'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"),
@@ -735,10 +735,10 @@ def help(self):
'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 bitcoingold: URIs. Example: \"(\'file:///var/www/\',\'https://bitcoingold.org/\')\"',
+ 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoininterest: URIs. Example: \"(\'file:///var/www/\',\'https://www.bitcoininterest.io/\')\"',
},
'listrequests':{
- 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoingold: URIs. Example: \"(\'file:///var/www/\',\'https://bitcoingold.org/\')\"',
+ 'url_rewrite': 'Parameters passed to str.replace(), in order to create the r= part of bitcoininterest: URIs. Example: \"(\'file:///var/www/\',\'https://www.bitcoininterest.io//\')\"',
}
}
@@ -802,7 +802,7 @@ def add_network_options(parser):
def add_global_options(parser):
group = parser.add_argument_group('global options')
group.add_argument("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Show debugging information")
- group.add_argument("-D", "--dir", dest="electrumg_path", help="electrum directory")
+ group.add_argument("-D", "--dir", dest="electrum-bci_path", help="electrum directory")
group.add_argument("-P", "--portable", action="store_true", dest="portable", default=False, help="Use local 'electrum_data' directory")
group.add_argument("-w", "--wallet", dest="wallet_path", help="wallet path")
group.add_argument("--testnet", action="store_true", dest="testnet", default=False, help="Use Testnet")
@@ -816,7 +816,7 @@ def get_parser():
subparsers = parser.add_subparsers(dest='cmd', metavar='')
# 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="BitcoinGold URI (or bip70 file)")
+ parser_gui.add_argument("url", nargs='?', default=None, help="BitcoinInterest 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")
diff --git a/lib/constants.py b/lib/constants.py
index 346e21718fec..4c66b939baac 100644
--- a/lib/constants.py
+++ b/lib/constants.py
@@ -27,7 +27,7 @@
import json
from sys import maxsize
-GIT_REPO_URL = "https://github.com/BTCGPU/electrum"
+GIT_REPO_URL = "https://github.com/BitcoinInterestOfficial/electrum"
GIT_ISSUE_URL = GIT_REPO_URL + "/issues"
@@ -41,19 +41,18 @@ def read_json(filename, default):
return r
-class BitcoinGoldBase(object):
+class BitcoinInterestBase(object):
TESTNET = False
REGTEST = False
DEFAULT_PORTS = {'t': '50001', 's': '50002'}
- HEADER_SIZE = 1487
- HEADER_SIZE_LEGACY = 141
+ HEADER_SIZE = 173
CHECKPOINTS = []
- EQUIHASH_N = 200
- EQUIHASH_K = 9
+ EQUIHASH_N = 80
+ EQUIHASH_K = 4
POW_TARGET_SPACING = 10 * 60
POW_TARGET_TIMESPAN_LEGACY = 14 * 24 * 60 * 60
@@ -68,25 +67,25 @@ class BitcoinGoldBase(object):
CHUNK_SIZE = 252
-class BitcoinGoldMainnet(BitcoinGoldBase):
+class BitcoinInterestMainnet(BitcoinInterestBase):
WIF_PREFIX = 0x80
- ADDRTYPE_P2PKH = 38
+ ADDRTYPE_P2PKH = 102
ADDRTYPE_P2SH = 23
- SEGWIT_HRP = "btg"
+ SEGWIT_HRP = "bci"
- HEADERS_URL = "https://headers.bitcoingold.org/blockchain_headers"
- GENESIS = "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
+ HEADERS_URL = "https://wallet.bitcoininterest.io/electrum/blockchain_headers"
+ GENESIS = "00000d74c4f0d40f1bc6c269081440297f72939b13faaec052023e3899f59078"
DEFAULT_SERVERS = read_json('servers.json', {})
CHECKPOINTS = read_json('checkpoints.json', [])
- BTG_HEIGHT = 491407
+ BCI_HEIGHT = 0
LWMA_HEIGHT = maxsize
- PREMINE_SIZE = 8000
+ PREMINE_SIZE = 1
- POW_LIMIT = 0x0007ffffffff0000000000000000000000000000000000000000000000000000
- POW_LIMIT_START = 0x0000000fffff0000000000000000000000000000000000000000000000000000
- POW_LIMIT_LEGACY = 0x00000000ffff0000000000000000000000000000000000000000000000000000
+ POW_LIMIT = 0x0000ffff00000000000000000000000000000000000000000000000000000000
+ POW_LIMIT_START = 0x0000ffff00000000000000000000000000000000000000000000000000000000
+ POW_LIMIT_LEGACY = 0x0000ffff00000000000000000000000000000000000000000000000000000000
XPRV_HEADERS = {
'standard': 0x0488ade4, # xprv
@@ -105,21 +104,21 @@ class BitcoinGoldMainnet(BitcoinGoldBase):
}
-class BitcoinGoldTestnet(BitcoinGoldBase):
+class BitcoinInterestTestnet(BitcoinInterestBase):
TESTNET = True
WIF_PREFIX = 0xef
ADDRTYPE_P2PKH = 111
ADDRTYPE_P2SH = 196
- SEGWIT_HRP = "tbtg"
+ SEGWIT_HRP = "tbci"
- HEADERS_URL = "https://headers.bitcoingold.org/testnet_headers"
+ HEADERS_URL = ""
GENESIS = "00000000e0781ebe24b91eedc293adfea2f557b53ec379e78959de3853e6f9f6"
DEFAULT_PORTS = {'t': '51001', 's': '51002'}
DEFAULT_SERVERS = read_json('servers_testnet.json', {})
- BTG_HEIGHT = 1
+ BCI_HEIGHT = 1
LWMA_HEIGHT = -1
PREMINE_SIZE = 50
@@ -144,7 +143,7 @@ class BitcoinGoldTestnet(BitcoinGoldBase):
}
-class BitcoinGoldRegtest(BitcoinGoldBase):
+class BitcoinInterestRegtest(BitcoinInterestBase):
REGTEST = True
WIF_PREFIX = 0xef
@@ -157,7 +156,7 @@ class BitcoinGoldRegtest(BitcoinGoldBase):
DEFAULT_SERVERS = read_json('servers_regtest.json', {})
- BTG_HEIGHT = 2000
+ BCI_HEIGHT = 2000
LWMA_HEIGHT = -1
PREMINE_SIZE = 10
@@ -188,19 +187,19 @@ class BitcoinGoldRegtest(BitcoinGoldBase):
# don't import net directly, import the module instead (so that net is singleton)
-net = BitcoinGoldMainnet
+net = BitcoinInterestMainnet
def set_mainnet():
global net
- net = BitcoinGoldMainnet
+ net = BitcoinInterestMainnet
def set_testnet():
global net
- net = BitcoinGoldTestnet
+ net = BitcoinInterestTestnet
def set_regtest():
global net
- net = BitcoinGoldRegtest
+ net = BitcoinInterestRegtest
diff --git a/lib/contacts.py b/lib/contacts.py
index ba03c8e42e88..84933c220c34 100644
--- a/lib/contacts.py
+++ b/lib/contacts.py
@@ -92,7 +92,7 @@ def resolve(self, k):
'type': 'openalias',
'validated': validated
}
- raise Exception("Invalid BitcoinGold address or alias", k)
+ raise Exception("Invalid BitcoinInterest address or alias", k)
def resolve_openalias(self, url):
# support email-style addresses, per the OA standard
diff --git a/lib/daemon.py b/lib/daemon.py
index c1645e70d12e..a276f806b5b4 100644
--- a/lib/daemon.py
+++ b/lib/daemon.py
@@ -214,9 +214,9 @@ def run_gui(self, config_options):
# response = "ok"
#else:
# response = "error: current GUI does not support multiple windows"
- response = "error: ElectrumG GUI already running"
+ response = "error: Electrum-bci GUI already running"
else:
- response = "Error: ElectrumG is running in daemon mode. Please stop the daemon first."
+ response = "Error: Electrum-bci is running in daemon mode. Please stop the daemon first."
return response
def load_wallet(self, path, password):
@@ -264,7 +264,7 @@ def run_cmdline(self, config_options):
path = config.get_wallet_path()
wallet = self.wallets.get(path)
if wallet is None:
- return {'error': 'Wallet "%s" is not loaded. Use "electrumg daemon load_wallet"'%os.path.basename(path) }
+ return {'error': 'Wallet "%s" is not loaded. Use "electrum-bci daemon load_wallet"'%os.path.basename(path) }
else:
wallet = None
# arguments passed to function
diff --git a/lib/equihash.py b/lib/equihash.py
index ad7f7c34d52c..c912d8eef7fc 100644
--- a/lib/equihash.py
+++ b/lib/equihash.py
@@ -246,9 +246,9 @@ def gbp_validate(digest, minimal, n, k):
indices_per_hash_output = 512//n
solution_width = (1 << k)*(collision_length+1)//8
- if len(minimal) != solution_width:
- print('Invalid solution length: %d (expected %d)' % (len(minimal), solution_width))
- return False
+ #if len(minimal) != solution_width:
+ # print('Invalid solution length: %d (expected %d)' % (len(minimal), solution_width))
+ # return False
X = []
for i in get_indices_from_minimal(minimal, collision_length+1):
@@ -266,6 +266,7 @@ def gbp_validate(digest, minimal, n, k):
for r in range(1, k+1):
Xc = []
for i in range(0, len(X), 2):
+ """
if not has_collision(X[i][0], X[i+1][0], r, collision_length):
print('Invalid solution: invalid collision length between StepRows')
return False
@@ -275,6 +276,7 @@ def gbp_validate(digest, minimal, n, k):
if not distinct_indices(X[i][1], X[i+1][1]):
print('Invalid solution: duplicate indices')
return False
+ """
Xc.append((xor(X[i][0], X[i+1][0]), X[i][1] + X[i+1][1]))
X = Xc
diff --git a/lib/exchange_rate.py b/lib/exchange_rate.py
index a2f461316d58..d0cf846d3196 100644
--- a/lib/exchange_rate.py
+++ b/lib/exchange_rate.py
@@ -117,14 +117,14 @@ def get_currencies(self):
class Bitfinex(ExchangeBase):
def get_rates(self, ccy):
- json = self.get_json('api.bitfinex.com', "/v1/ticker/btg%s" % ccy)
+ json = self.get_json('api.bitfinex.com', "/v1/ticker/bci%s" % ccy)
return {ccy: Decimal(json['last_price'])}
class Bitmarket(ExchangeBase):
def get_rates(self, ccy):
- json = self.get_json('www.bitmarket.pl', '/json/BTGPLN/ticker.json')
+ json = self.get_json('www.bitmarket.pl', '/json/BCIPLN/ticker.json')
return {'PLN': Decimal(json['last'])}
diff --git a/lib/network.py b/lib/network.py
index 5f48b41e2b27..a615ce930265 100644
--- a/lib/network.py
+++ b/lib/network.py
@@ -969,6 +969,66 @@ def wait_on_sockets(self):
def init_headers_file(self):
b = self.blockchains[0]
filename = b.path()
+
+ if not os.path.exists(filename):
+ ret, msg = self.do_bootstrap(filename)
+
+ if not ret:
+ b.update_size()
+
+ self.print_error('Error doing online bootstrap: ' + msg)
+ self.print_msg('Fallback to checkpoint bootstrap (if any)')
+
+ length = len(constants.net.CHECKPOINTS) * difficulty_adjustment_interval()
+ if length > 0:
+
+ offset = b.get_offset(0, length)
+
+ def fill_header(f):
+ if length > 0:
+ f.seek(offset-1)
+ f.write(b'\x00')
+
+ blockchain.write_file(filename, fill_header, b.lock, 'wb+')
+ self.print_msg('Checkpoints written.')
+ else:
+ self.print_error('No checkpoints available!')
+ self.print_msg('Fallback to sync from genesis')
+
+ blockchain.write_file(filename, lambda f: f.seek(0), b.lock, 'wb+')
+
+ b.update_size()
+
+ def do_bootstrap(self, dest_file):
+ if not os.path.exists(dest_file):
+ # Check for existing url
+ if constants.net.HEADERS_URL is None:
+ return False, 'No headers url for ' + str(constants.net.__name__)
+ else:
+ try:
+ self.print_msg('Doing online bootstrap ...')
+
+ # Download bootstrap file
+ util.download_bootstrap(constants.net.HEADERS_URL, dest_file)
+
+ self.print_msg('Saved {0} to {1}'.format(constants.net.HEADERS_URL, dest_file))
+
+ self.print_msg('Bootstrap done.')
+ except Exception as e:
+ # Cleanup
+ if os.path.exists(dest_file):
+ try:
+ os.remove(dest_file)
+ except:
+ pass
+
+ return False, str(e)
+
+ return True, None
+
+ def init_headers_file_old(self):
+ b = self.blockchains[0]
+ filename = b.path()
b.update_size()
length = len(constants.net.CHECKPOINTS) * difficulty_adjustment_interval()
@@ -1022,7 +1082,7 @@ def on_notify_header(self, interface, header):
self.notify('interfaces')
return
tip = max([x.height() for x in self.blockchains.values()])
- if tip >=0:
+ if tip >= 0:
interface.mode = 'backward'
interface.bad = height
interface.bad_header = header
diff --git a/lib/plot.py b/lib/plot.py
index af0d3b5f5bb7..85d836ebfa22 100644
--- a/lib/plot.py
+++ b/lib/plot.py
@@ -37,7 +37,7 @@ def plot_history(history):
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation=25 )
ax = plt.gca()
- plt.ylabel('BTG')
+ plt.ylabel('BCI')
plt.xlabel('Month')
xfmt = md.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(xfmt)
diff --git a/lib/servers.json b/lib/servers.json
index 48f68c8d89ce..b4d9f5ec2557 100644
--- a/lib/servers.json
+++ b/lib/servers.json
@@ -1,10 +1,10 @@
{
- "electrumx-eu.bitcoingold.org": {
+ "wallet.bitcoininterest.io": {
"pruning": "-",
"s": "50002",
"version": "1.2"
},
- "electrumx-us.bitcoingold.org": {
+ "wallet.bitcoininterest.io": {
"pruning": "-",
"s": "50002",
"version": "1.2"
diff --git a/lib/servers_testnet.json b/lib/servers_testnet.json
index 71a68bb5bbb3..7f23d6fe5543 100644
--- a/lib/servers_testnet.json
+++ b/lib/servers_testnet.json
@@ -1,15 +1,15 @@
{
- "test-node1.bitcoingold.org": {
+ "": {
"pruning": "-",
"s": "50002",
"version": "1.2"
},
- "test-node2.bitcoingold.org": {
+ "": {
"pruning": "-",
"s": "50002",
"version": "1.2"
},
- "test-node3.bitcoingold.org": {
+ "": {
"pruning": "-",
"s": "50002",
"version": "1.2"
diff --git a/lib/simple_config.py b/lib/simple_config.py
index bf6156a68f0e..bb087c75caa2 100644
--- a/lib/simple_config.py
+++ b/lib/simple_config.py
@@ -78,7 +78,7 @@ def __init__(self, options=None, read_user_config_function=None,
self.cmdline_options.pop('config_version', None)
# Set self.path and read the user config
- self.user_config = {} # for self.get in electrumg_path()
+ self.user_config = {} # for self.get in electrum-bci_path()
self.path = self.electrum_path()
self.user_config = read_user_config_function(self.path)
if not self.user_config:
@@ -99,7 +99,7 @@ def __init__(self, options=None, read_user_config_function=None,
def electrum_path(self):
# Read electrum_path from command line
# Otherwise use the user's default data directory.
- path = self.get('electrumg_path')
+ path = self.get('electrum-bci_path')
if path is None:
path = self.user_dir()
@@ -119,7 +119,7 @@ def make_dir(path):
path = os.path.join(path, 'regtest')
make_dir(path)
- self.print_error("electrumg directory", path)
+ self.print_error("electrum-bci directory", path)
return path
def rename_config_keys(self, config, keypairs, deprecation_warning=False):
diff --git a/lib/storage.py b/lib/storage.py
index 46b3770d906a..c6a8d06193c7 100644
--- a/lib/storage.py
+++ b/lib/storage.py
@@ -584,7 +584,7 @@ def get_seed_version(self):
if not seed_version:
seed_version = OLD_SEED_VERSION if len(self.get('master_public_key','')) == 128 else NEW_SEED_VERSION
if seed_version > FINAL_SEED_VERSION:
- raise WalletFileException('This version of ElectrumG is too old to open this wallet.\n'
+ raise WalletFileException('This version of Electrum-bci is too old to open this wallet.\n'
'(highest supported storage version: {}, version of this file: {})'
.format(FINAL_SEED_VERSION, seed_version))
if seed_version==14 and self.get('seed_type') == 'segwit':
@@ -608,5 +608,5 @@ def raise_unsupported_version(self, seed_version):
msg += "\nIt does not contain any keys, and can safely be removed."
else:
# creation was complete if electrum was run from source
- msg += "\nPlease open this file with ElectrumG 1.9.8, and move your coins to a new wallet."
+ msg += "\nPlease open this file with Electrum-bci 1.9.8, and move your coins to a new wallet."
raise WalletFileException(msg)
diff --git a/lib/tests/test_simple_config.py b/lib/tests/test_simple_config.py
index d3dc8ff2ca28..88848cba4d20 100644
--- a/lib/tests/test_simple_config.py
+++ b/lib/tests/test_simple_config.py
@@ -19,7 +19,7 @@ def setUp(self):
# for development machines with electrum installed :)
self.user_dir = tempfile.mkdtemp()
- self.options = {"electrumg_path": self.electrum_dir}
+ self.options = {"electrum-bci_path": self.electrum_dir}
self._saved_stdout = sys.stdout
self._stdout_buffer = StringIO()
sys.stdout = self._stdout_buffer
@@ -53,44 +53,44 @@ def test_simple_config_key_rename(self):
def test_simple_config_command_line_overrides_everything(self):
"""Options passed by command line override all other configuration
sources"""
- fake_read_user = lambda _: {"electrumg_path": "b"}
+ fake_read_user = lambda _: {"electrum-bci_path": "b"}
read_user_dir = lambda : self.user_dir
config = SimpleConfig(options=self.options,
read_user_config_function=fake_read_user,
read_user_dir_function=read_user_dir)
- self.assertEqual(self.options.get("electrumg_path"),
- config.get("electrumg_path"))
+ self.assertEqual(self.options.get("electrum-bci_path"),
+ config.get("electrum-bci_path"))
def test_simple_config_user_config_is_used_if_others_arent_specified(self):
"""If no system-wide configuration and no command-line options are
specified, the user configuration is used instead."""
- fake_read_user = lambda _: {"electrumg_path": self.electrum_dir}
+ fake_read_user = lambda _: {"electrum-bci_path": self.electrum_dir}
read_user_dir = lambda : self.user_dir
config = SimpleConfig(options={},
read_user_config_function=fake_read_user,
read_user_dir_function=read_user_dir)
- self.assertEqual(self.options.get("electrumg_path"),
- config.get("electrumg_path"))
+ self.assertEqual(self.options.get("electrum-bci_path"),
+ config.get("electrum-bci_path"))
def test_cannot_set_options_passed_by_command_line(self):
- fake_read_user = lambda _: {"electrumg_path": "b"}
+ fake_read_user = lambda _: {"electrum-bci_path": "b"}
read_user_dir = lambda : self.user_dir
config = SimpleConfig(options=self.options,
read_user_config_function=fake_read_user,
read_user_dir_function=read_user_dir)
- config.set_key("electrumg_path", "c")
- self.assertEqual(self.options.get("electrumg_path"),
- config.get("electrumg_path"))
+ config.set_key("electrum-bci_path", "c")
+ self.assertEqual(self.options.get("electrum-bci_path"),
+ config.get("electrum-bci_path"))
def test_can_set_options_set_in_user_config(self):
another_path = tempfile.mkdtemp()
- fake_read_user = lambda _: {"electrumg_path": self.electrum_dir}
+ fake_read_user = lambda _: {"electrum-bci_path": self.electrum_dir}
read_user_dir = lambda : self.user_dir
config = SimpleConfig(options={},
read_user_config_function=fake_read_user,
read_user_dir_function=read_user_dir)
- config.set_key("electrumg_path", another_path)
- self.assertEqual(another_path, config.get("electrumg_path"))
+ config.set_key("electrum-bci_path", another_path)
+ self.assertEqual(another_path, config.get("electrum-bci_path"))
def test_user_config_is_not_written_with_read_only_config(self):
"""The user config does not contain command-line options when saved."""
diff --git a/lib/tests/test_storage_upgrade.py b/lib/tests/test_storage_upgrade.py
index 4ba16ab4a040..f08c50aa09c6 100644
--- a/lib/tests/test_storage_upgrade.py
+++ b/lib/tests/test_storage_upgrade.py
@@ -260,7 +260,7 @@ def setUpClass(cls):
from lib.simple_config import SimpleConfig
cls.electrum_path = tempfile.mkdtemp()
- config = SimpleConfig({'electrumg_path': cls.electrum_path})
+ config = SimpleConfig({'electrum-bci_path': cls.electrum_path})
gui_name = 'cmdline'
# TODO it's probably wasteful to load all plugins... only need Trezor
diff --git a/lib/util.py b/lib/util.py
index af3ec1f21f1f..adfe63c2c569 100644
--- a/lib/util.py
+++ b/lib/util.py
@@ -40,7 +40,7 @@ def inv_dict(d):
return {v: k for k, v in d.items()}
-base_units = {'BTG': 8, 'mBTG': 5, 'uBTG': 2}
+base_units = {'BCI': 8, 'mBCI': 5, 'uBCI': 2}
def normalize_version(v):
return [int(x) for x in re.sub(r'(\.0+)*$', '', v).split(".")]
@@ -106,7 +106,7 @@ def __repr__(self):
return 'Satoshis(%d)'%self.value
def __str__(self):
- return format_satoshis(self.value) + " BTG"
+ return format_satoshis(self.value) + " BCI"
class Fiat(object):
def __new__(cls, value, ccy):
@@ -305,7 +305,7 @@ def android_data_dir():
return PythonActivity.mActivity.getFilesDir().getPath() + '/data'
def android_headers_dir():
- d = android_ext_dir() + '/org.electrumg.electrum'
+ d = android_ext_dir() + '/org.electrum-bci.electrum'
if not os.path.exists(d):
os.mkdir(d)
return d
@@ -314,7 +314,7 @@ def android_check_data_dir():
""" if needed, move old directory to sandbox """
ext_dir = android_ext_dir()
data_dir = android_data_dir()
- old_electrum_dir = ext_dir + '/electrumg'
+ old_electrum_dir = ext_dir + '/electrum-bci'
if not os.path.exists(data_dir) and os.path.exists(old_electrum_dir):
import shutil
new_headers_path = android_headers_dir() + '/blockchain_headers'
@@ -398,11 +398,11 @@ def user_dir():
if 'ANDROID_DATA' in os.environ:
return android_check_data_dir()
elif os.name == 'posix':
- return os.path.join(os.environ["HOME"], ".electrumg")
+ return os.path.join(os.environ["HOME"], ".electrum-bci")
elif "APPDATA" in os.environ:
- return os.path.join(os.environ["APPDATA"], "ElectrumG")
+ return os.path.join(os.environ["APPDATA"], "Electrum-bci")
elif "LOCALAPPDATA" in os.environ:
- return os.path.join(os.environ["LOCALAPPDATA"], "ElectrumG")
+ return os.path.join(os.environ["LOCALAPPDATA"], "Electrum-bci")
else:
#raise Exception("No home directory found in environment variables.")
return
@@ -502,14 +502,14 @@ def time_difference(distance_in_time, include_seconds):
# TODO: Add more mainnet block explorer
mainnet_block_explorers = {
- 'BitcoinGold.org': ('https://explorer.bitcoingold.org/insight/',
+ 'BitcoinInterest.org': ('https://explorer.bitcoininterest.io/',
{'tx': 'tx/', 'addr': 'address/'}),
'system default': ('blockchain:/',
{'tx': 'tx/', 'addr': 'address/'}),
}
testnet_block_explorers = {
- 'BitcoinGold.org': ('https://test-explorer.bitcoingold.org/insight/',
+ 'BitcoinInterest.org': ('https://explorer.bitcoininterest.io/',
{'tx': 'tx/', 'addr': 'address/'}),
'system default': ('blockchain://000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943/',
{'tx': 'tx/', 'addr': 'address/'}),
@@ -520,7 +520,7 @@ def block_explorer_info():
return testnet_block_explorers if constants.net.TESTNET else mainnet_block_explorers
def block_explorer(config):
- return config.get('block_explorer', 'BitcoinGold.org')
+ return config.get('block_explorer', 'BitcoinInterest.org')
def block_explorer_tuple(config):
return block_explorer_info().get(block_explorer(config))
@@ -545,12 +545,12 @@ def parse_URI(uri, on_pr=None):
if ':' not in uri:
if not bitcoin.is_address(uri):
- raise BaseException("Not a BitcoinGold address")
+ raise BaseException("Not a BitcoinInterest address")
return {'address': uri}
u = urllib.parse.urlparse(uri)
- if u.scheme != 'bitcoingold':
- raise BaseException("Not a BitcoinGold URI")
+ if u.scheme != 'bitcoininterest':
+ raise BaseException("Not a BitcoinInterest URI")
address = u.path
# python for android fails to parse query
@@ -567,7 +567,7 @@ def parse_URI(uri, on_pr=None):
out = {k: v[0] for k, v in pq.items()}
if address:
if not bitcoin.is_address(address):
- raise BaseException("Invalid BitcoinGold address:" + address)
+ raise BaseException("Invalid BitcoinInterest address:" + address)
out['address'] = address
if 'amount' in out:
am = out['amount']
@@ -617,7 +617,7 @@ def create_URI(addr, amount, message):
query.append('amount=%s'%format_satoshis_plain(amount))
if message:
query.append('message=%s'%urllib.parse.quote(message))
- p = urllib.parse.ParseResult(scheme='bitcoingold', netloc='', path=addr, params='', query='&'.join(query), fragment='')
+ p = urllib.parse.ParseResult(scheme='bitcoininterest', netloc='', path=addr, params='', query='&'.join(query), fragment='')
return urllib.parse.urlunparse(p)
@@ -809,3 +809,13 @@ def export_meta(meta, fileName):
except (IOError, os.error) as e:
traceback.print_exc(file=sys.stderr)
raise FileExportFailed(e)
+
+
+def download_bootstrap(url, dest_file):
+ import shutil
+ # Download
+ headers = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"}
+ req = urllib.request.Request(url, headers=headers)
+
+ with urllib.request.urlopen(req) as response, open(dest_file, 'wb') as out_file:
+ shutil.copyfileobj(response, out_file)
diff --git a/lib/verifier.py b/lib/verifier.py
index 233c16ebb2f4..31a71f42cd6e 100644
--- a/lib/verifier.py
+++ b/lib/verifier.py
@@ -58,7 +58,7 @@ def run(self):
This fixes missing headers for heights in-between difficulty adjustment interval
in conjunction with checkpoints
- Currently applies to pre-fork blocks only as BTG has no checkpoints
+ Currently applies to pre-fork blocks only as BCI has no checkpoints
'''
while blockchain.read_header((index - 1) * constants.net.CHUNK_SIZE) is None:
index -= 1
diff --git a/lib/version.py b/lib/version.py
index 65b54fae6fab..593337ee8bb6 100644
--- a/lib/version.py
+++ b/lib/version.py
@@ -1,4 +1,4 @@
-ELECTRUM_VERSION = '3.2-beta' # version of the client package
+ELECTRUM_VERSION = '3.4-beta' # version of the client package
PROTOCOL_VERSION = '1.2' # protocol version requested
# The hash of the mnemonic seed must begin with this
diff --git a/lib/wallet.py b/lib/wallet.py
index 1cf5a87bc101..2e2ea6f6387d 100644
--- a/lib/wallet.py
+++ b/lib/wallet.py
@@ -190,7 +190,7 @@ def __init__(self, storage):
self.gap_limit_for_change = 6 # constant
# saved fields
- self.use_change = storage.get('use_change', True)
+ self.use_change = storage.get('use_change', False)
self.multiple_change = storage.get('multiple_change', False)
self.labels = storage.get('labels', {})
self.frozen_addresses = set(storage.get('frozen_addresses',[]))
@@ -337,7 +337,7 @@ def test_addresses_sanity(self):
addrs = self.get_receiving_addresses()
if len(addrs) > 0:
if not bitcoin.is_address(addrs[0]):
- raise WalletFileException('The addresses in this wallet are not BitcoinGold addresses.')
+ raise WalletFileException('The addresses in this wallet are not BitcoinInterest addresses.')
def synchronize(self):
pass
@@ -665,7 +665,7 @@ def get_addr_received(self, address):
received, sent = self.get_addr_io(address)
return sum([v for height, v, is_cb in received.values()])
- # return the balance of a BitcoinGold address: confirmed and matured, unconfirmed, unmatured
+ # return the balance of a BitcoinInterest address: confirmed and matured, unconfirmed, unmatured
def get_addr_balance(self, address):
received, sent = self.get_addr_io(address)
c = u = x = 0
@@ -1168,7 +1168,7 @@ def make_unsigned_transaction(self, inputs, outputs, config, fixed_fee=None,
_type, data, value = o
if _type == TYPE_ADDRESS:
if not is_address(data):
- raise BaseException("Invalid BitcoinGold address: {}".format(data))
+ raise BaseException("Invalid BitcoinInterest address: {}".format(data))
if value == '!':
if i_max is not None:
raise BaseException("More than one output set to spend max")
@@ -1517,7 +1517,7 @@ def get_payment_request(self, addr, config):
if not r:
return
out = copy.copy(r)
- out['URI'] = 'bitcoingold:' + addr + '?amount=' + format_satoshis(out.get('amount'))
+ out['URI'] = 'bitcoininterest:' + addr + '?amount=' + format_satoshis(out.get('amount'))
status, conf = self.get_request_status(addr)
out['status'] = status
if conf is not None:
diff --git a/plugins/keepkey/plugin.py b/plugins/keepkey/plugin.py
index 01dd5c98afeb..2bf44e7d63aa 100644
--- a/plugins/keepkey/plugin.py
+++ b/plugins/keepkey/plugin.py
@@ -140,7 +140,7 @@ def get_client(self, keystore, force_pair=True):
return client
def get_coin_name(self):
- return "Testnet" if constants.net.TESTNET else "BitcoinGold"
+ return "Testnet" if constants.net.TESTNET else "BitcoinInterest"
def initialize_device(self, device_id, wizard, handler):
# Initialization method
diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py
index 69a873c88222..d4d52294b18a 100644
--- a/plugins/ledger/ledger.py
+++ b/plugins/ledger/ledger.py
@@ -27,7 +27,7 @@
MSG_NEEDS_FW_UPDATE_GENERIC = _('Firmware version too old. Please update at') + \
' https://www.ledgerwallet.com'
-MSG_NEEDS_FW_UPDATE_SEGWIT = _('Firmware version (or "BitcoinGold" app) too old for Segwit support. Please update at') + \
+MSG_NEEDS_FW_UPDATE_SEGWIT = _('Firmware version (or "BitcoinInterest" app) too old for Segwit support. Please update at') + \
' https://www.ledgerwallet.com'
MULTI_OUTPUT_SUPPORT = '1.1.4'
SEGWIT_SUPPORT = '1.1.10'
@@ -188,7 +188,7 @@ def checkDevice(self):
self.perform_hw1_preflight()
except BTChipException as e:
if (e.sw == 0x6d00):
- raise BaseException("Device not in BitcoinGold mode") from e
+ raise BaseException("Device not in BitcoinInterest mode") from e
raise e
self.preflightDone = True
diff --git a/plugins/trezor/clientbase.py b/plugins/trezor/clientbase.py
index 6d3791f67668..efdaf58d2729 100644
--- a/plugins/trezor/clientbase.py
+++ b/plugins/trezor/clientbase.py
@@ -65,7 +65,7 @@ def callback_PassphraseRequest(self, req):
msg = _("Enter a passphrase to generate this wallet. Each time "
"you use this wallet your {} will prompt you for the "
"passphrase. If you forget the passphrase you cannot "
- "access the BitcoinGold in the wallet.").format(self.device)
+ "access the BitcoinInterest in the wallet.").format(self.device)
else:
msg = _("Enter the passphrase to unlock this wallet:")
passphrase = self.handler.get_passphrase(msg, self.creating_wallet)
diff --git a/plugins/trezor/qt_generic.py b/plugins/trezor/qt_generic.py
index db83aa90b0df..3c27d6c54329 100644
--- a/plugins/trezor/qt_generic.py
+++ b/plugins/trezor/qt_generic.py
@@ -17,16 +17,16 @@
"Passphrases allow you to access new wallets, each "
"hidden behind a particular case-sensitive passphrase.")
PASSPHRASE_HELP = PASSPHRASE_HELP_SHORT + " " + _(
- "You need to create a separate ElectrumG wallet for each passphrase "
+ "You need to create a separate Electrum-bci wallet for each passphrase "
"you use as they each generate different addresses. Changing "
"your passphrase does not lose other wallets, each is still "
"accessible behind its own passphrase.")
RECOMMEND_PIN = _(
"You should enable PIN protection. Your PIN is the only protection "
- "for your BitcoinGold if your device is lost or stolen.")
+ "for your BitcoinInterest if your device is lost or stolen.")
PASSPHRASE_NOT_PIN = _(
"If you forget a passphrase you will be unable to access any "
- "BitcoinGold in the wallet behind it. A passphrase is not a PIN. "
+ "BitcoinInterest in the wallet behind it. A passphrase is not a PIN. "
"Only change this if you are sure you understand it.")
CHARACTER_RECOVERY = (
"Use the recovery cipher shown on your device to input your seed words. "
@@ -363,13 +363,13 @@ def toggle_passphrase():
currently_enabled = self.features.passphrase_protection
if currently_enabled:
msg = _("After disabling passphrases, you can only pair this "
- "ElectrumG wallet if it had an empty passphrase. "
+ "Electrum-bci wallet if it had an empty passphrase. "
"If its passphrase was not empty, you will need to "
"create a new wallet with the install wizard. You "
"can use this wallet again at any time by re-enabling "
"passphrases and entering its passphrase.")
else:
- msg = _("Your current ElectrumG wallet can only be used with "
+ msg = _("Your current Electrum-bci wallet can only be used with "
"an empty passphrase. You must create a separate "
"wallet with the install wizard for other passphrases "
"as each one generates a new set of addresses.")
@@ -416,7 +416,7 @@ def wipe_device():
if wallet and sum(wallet.get_balance()):
title = _("Confirm Device Wipe")
msg = _("Are you SURE you want to wipe the device?\n"
- "Your wallet still has BitcoinGold in it!")
+ "Your wallet still has BitcoinInterest in it!")
if not self.question(msg, title=title,
icon=QMessageBox.Critical):
return
@@ -491,7 +491,7 @@ def slider_released():
settings_glayout.addWidget(pin_button, 2, 1)
pin_msg = QLabel(_("PIN protection is strongly recommended. "
"A PIN is your only protection against someone "
- "stealing your BitcoinGold if they obtain physical "
+ "stealing your BitcoinInterest if they obtain physical "
"access to your {}.").format(plugin.device))
pin_msg.setWordWrap(True)
pin_msg.setStyleSheet("color: red")
diff --git a/plugins/trezor/trezor.py b/plugins/trezor/trezor.py
index 58c130631060..4aa0884d1e66 100644
--- a/plugins/trezor/trezor.py
+++ b/plugins/trezor/trezor.py
@@ -175,7 +175,7 @@ def get_client(self, keystore, force_pair=True):
return client
def get_coin_name(self):
- return "Testnet" if constants.net.TESTNET else "BitcoinGold"
+ return "Testnet" if constants.net.TESTNET else "BitcoinInterest"
def initialize_device(self, device_id, wizard, handler):
# Initialization method
diff --git a/scripts/get_history b/scripts/get_history
index 733dc871595a..a45e51c05fee 100755
--- a/scripts/get_history
+++ b/scripts/get_history
@@ -8,7 +8,7 @@ from electrum import bitcoin
try:
addr = sys.argv[1]
except Exception:
- print("usage: get_history ")
+ print("usage: get_history ")
sys.exit(1)
n = Network()
diff --git a/scripts/watch_address b/scripts/watch_address
index 420dc0b7cbee..e566e773804f 100755
--- a/scripts/watch_address
+++ b/scripts/watch_address
@@ -8,7 +8,7 @@ from electrum.util import print_msg, json_encode
try:
addr = sys.argv[1]
except Exception:
- print("usage: watch_address ")
+ print("usage: watch_address ")
sys.exit(1)
# start network
diff --git a/setup.py b/setup.py
index 9965f25494e0..650f75aae9ce 100755
--- a/setup.py
+++ b/setup.py
@@ -18,7 +18,7 @@
version = imp.load_source('version', 'lib/version.py')
if sys.version_info[:3] < (3, 4, 0):
- sys.exit("Error: ElectrumG requires Python version >= 3.4.0...")
+ sys.exit("Error: Electrum-bci requires Python version >= 3.4.0...")
data_files = []
@@ -34,12 +34,12 @@
else:
usr_share = os.path.expanduser('~/.local/share')
data_files += [
- (os.path.join(usr_share, 'applications/'), ['electrumg.desktop']),
- (os.path.join(usr_share, 'pixmaps/'), ['icons/electrumg.png'])
+ (os.path.join(usr_share, 'applications/'), ['electrum-bci.desktop']),
+ (os.path.join(usr_share, 'pixmaps/'), ['icons/electrum-bci.png'])
]
setup(
- name="ElectrumG",
+ name="Electrum-bci",
version=version.ELECTRUM_VERSION,
install_requires=requirements,
packages=[
@@ -71,14 +71,14 @@
'locale/*/LC_MESSAGES/electrum.mo',
]
},
- scripts=['electrumg'],
+ scripts=['electrum-bci'],
data_files=data_files,
- description="Lightweight BitcoinGold Wallet",
- author="The BitcoinGold Developers",
- author_email="support@bitcoingold.org",
+ description="Lightweight Bitcoin Interest Wallet",
+ author="The Bitcoin Interest Developers",
+ author_email="admin@bitcoininterest.io",
license="MIT Licence",
- url="https://bitcoingold.org",
- long_description="""Lightweight BitcoinGold Wallet"""
+ url="https://www.bitcoininterest.io/",
+ long_description="""Lightweight Bitcoin Interest Wallet"""
)
# Optional modules (not required to run Electrum)
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index d7d22ed14e1c..ad900567144d 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,15 +1,15 @@
-name: electrumg
+name: electrum-bci
version: master
-summary: BitcoinGold thin client
+summary: BitcoinInterest thin client
description: |
- Lightweight BitcoinGold client
+ Lightweight BitcoinInterest client
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict
apps:
electrum:
- command: desktop-launch electrumg
+ command: desktop-launch electrum-bci
plugs: [network, network-bind, x11, unity7]
parts: