Merge pull request #11 from hTrap/master

Update travis builds
This commit is contained in:
VictorLux 2019-07-15 22:22:13 +02:00 committed by GitHub
commit be41d9bf15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 103 additions and 100 deletions

View File

@ -12,35 +12,45 @@ matrix:
language: ruby
osx_image: xcode7.3
- os: linux
python: '3.4'
python: "3.4"
services:
- docker
- if: NOT tag =~ .+
os: linux
python: '3.5'
python: "3.5"
- if: NOT tag =~ .+
os: linux
python: '3.6'
python: "3.6"
before_install:
- source contrib/zclassic/travis/electrum_zclassic_version_env.sh
- echo electrum-zclassic version is $ELECTRUM_ZCL_VERSION
- mkdir -p build && cp contrib/zclassic/travis/* ./build/
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then ./build/before_install-osx.sh;
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then
./build/before_install-osx.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then
./build/before_install-linux.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then
./build/before_install-linux-apk.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.4' ]]; then ./build/before_install-linux.sh; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.5' ]]; then ./build/before_install-linux-apk.sh; fi
install:
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]]; then pip install tox;
pip install tox-travis; fi
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]]; then
pip install tox; pip install tox-travis;
fi
script:
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then ./build/travis-build-osx.sh
; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.4' ]]; then ./build/travis-build-linux.sh; fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION
== '3.5' ]]; then ./build/travis-build-linux-apk.sh; fi
- if [[ -z $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]];then
tox;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'osx' ]]; then
./build/travis-build-osx.sh ;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then
./build/travis-build-linux.sh;
fi
- if [[ -n $TRAVIS_TAG ]] && [[ $TRAVIS_OS_NAME == 'linux' ]] && [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then
./build/travis-build-linux-apk.sh;
fi
deploy:
- provider: releases
api_key:
@ -49,9 +59,8 @@ deploy:
- build/electrum-zclassic/dist/electrum-zclassic-$ELECTRUM_ZCL_VERSION-macosx.dmg
on:
repo: ZclassicCommunity/electrum-zclassic
tags: false
tags: true
condition: "$TRAVIS_OS_NAME = osx"
draft: true
- provider: releases
api_key:
secure: n0KT+T49e1mOIV64wpVmf4bYga4KArHQnY9ZQ3u2DImLRGmhMkpa/OC6/oboDdzdyC+IhpcdwX7uCu2lxlsFBfP2zyuprEQThxeW8gL6pFaTMoJJ201lNjppFmCpbS2VqxDJWIap3E+RHwoQZpo+b8Lt2xoOzB1VZFdxm4qVCb/I4jl5ZWouibYxMwb9IsqdakTK7ZTmCN+YMthsbgvRpjbb1s5vuE5I3AjVx3dFOR2YYvfdwjfknSY9Ej7xfUqmkraRdd4kRQrznVDdB5i9gvPTF1hxtGGusxsDHEYAe6pUdDKk6XZ6esM/MhZDHnxWMt0wUKNrdIIlL9gI767AHiP+VQ5SAfbbVZrkCVIQ4d8s7dH4AbFlW0dsj5OuLb00Mp99FPxYpmMkdz6agWQmFky83Hc++DiGaRGZQr3eQUnKUkuGsWjueXCh5AC4uYNNYnXlaz2mkrKxenWgXscAa7XlyVcdZMAilMeOVOjZdjkjhN0bPz905NOm0sCSkOiR6v0iJmFsw2KKZwGNBG/DQV4bBWzbEu3G5ehCP4WkbXh0Cfjxqi56LkZt4YXbkFIHY+qj0gE6tRQbc42lad8+aLGbi4mKnttCuLZbN70E+c1Y++VAaYAOCqF9VlDD5/4OIizeRYW9hC18wD0+T3GWK+mezpWKrWdkdIEEVvt1SyQ=
@ -62,6 +71,5 @@ deploy:
- build/electrum-zclassic/bin/Electrum_Zclassic-$ELECTRUM_ZCL_APK_VERSION-release-unsigned.apk
on:
repo: ZclassicCommunity/electrum-zclassic
tags: false
tags: true
condition: "$TRAVIS_OS_NAME = linux"
draft: true

View File

@ -26,7 +26,7 @@ for repo in electrum-zclassic electrum-locale electrum-icons; do
git checkout master
cd ..
else
URL=https://github.com/ZClassicCommunity/$repo.git
URL=https://github.com/ZclassicCommunity/$repo.git
git clone -b master $URL $repo
fi
done

View File

@ -6,9 +6,9 @@
;--------------------------------
;Variables
!define PRODUCT_NAME "ZClassic Electrum"
!define PRODUCT_WEB_SITE "https://github.com/ZClassicCommunity/electrum-zclassic"
!define PRODUCT_PUBLISHER "ZClassic Electrum Technologies"
!define PRODUCT_NAME "Zclassic Electrum"
!define PRODUCT_WEB_SITE "https://github.com/ZclassicCommunity/electrum-zclassic"
!define PRODUCT_PUBLISHER "Zclassic Electrum Technologies"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
;--------------------------------

View File

@ -50,7 +50,7 @@ datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
binaries = [('C:/Python34/libusb-1.0.dll', '.')]
binaries = [('C:/Python36/libusb-1.0.dll', '.')]
# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl
sys.modules['FixTk'] = None
@ -136,7 +136,7 @@ conexe = EXE(pyz,
'console-%s' % cmdline_name))
# trezorctl separate executable
tctl_a = Analysis(['C:/Python34/Scripts/trezorctl'],
tctl_a = Analysis(['C:/Python36/Scripts/trezorctl'],
hiddenimports=['pkgutil'],
excludes=excludes,
runtime_hooks=['pyi_tctl_runtimehook.py'])

View File

@ -1,10 +1,13 @@
FROM debian:stretch-slim
FROM ubuntu:18.04
LABEL maintainer "Andriy Khavryuchenko <akhavr@khavr.com>"
USER root
WORKDIR /root
RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get install -y --no-install-recommends software-properties-common \
&& apt-add-repository -y ppa:zebra-lucky/ed-bdeps \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
wine-development wine32-development wine64-development libwine-development libwine-development:i386 \
@ -13,75 +16,72 @@ RUN dpkg --add-architecture i386 \
&& chmod +x winetricks && mv winetricks /usr/local/bin \
&& rm -rf /var/lib/apt/lists/*
ENV WINEPATH c:/git/cmd
ENV WINEPATH c:/git/cmd;c:/Python36;c:/Python36/Scripts
ENV WINEDEBUG -all
ENV WINEPREFIX /root/.wine-32
ENV WINEARCH win32
ENV PYHOME $WINEPREFIX/drive_c/Python34
ENV PYHOME $WINEPREFIX/drive_c/Python36
RUN echo 'download and install 32-bit Python/mingwpy/pywin32/PyQt/git/NSIS/PyInstaller' \
RUN echo 'download and install 32-bit Python/pywin32/PyQt/git/NSIS' \
&& wineboot -i \
&& xvfb-run -a winetricks -q vcrun2010 \
&& xvfb-run -a winetricks -q vcrun2015 && winetricks win10 \
\
&& wget -nv -O python.msi https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi \
&& msiexec /q /i python.msi && rm python.msi \
&& wget -nv -O python.exe https://www.python.org/ftp/python/3.6.6/python-3.6.6.exe \
&& xvfb-run -a wine python.exe /quiet InstallAllUsers=1 TargetDir=$PYHOME && rm python.exe \
&& wine python -m pip install -U pip \
\
&& wget -nv -O libusb.7z https://prdownloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.22/libusb-1.0.22.7z?download \
&& 7z x -olibusb libusb.7z -aos && rm libusb.7z \
&& cp libusb/MS32/dll/libusb-1.0.dll $PYHOME/ \
\
&& wine pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy \
&& /bin/echo -e '[build]\ncompiler=mingw32\n' > $PYHOME/Lib/distutils/distutils.cfg \
\
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b221/pywin32-221.win32-py3.4.exe \
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b223/pywin32-223.win32-py3.6.exe \
&& unzip -qq -d pywin32 pywin32.exe; echo && rm pywin32.exe \
&& cp -r pywin32/PLATLIB/* $PYHOME/Lib/site-packages/ \
&& cp -r pywin32/SCRIPTS/* $PYHOME/Scripts/ && rm -rf pywin32 \
&& wine python $PYHOME/Scripts/pywin32_postinstall.py -install \
\
&& wget -nv -O PyQt.exe "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe/download" \
&& wine PyQt.exe /S && rm PyQt.exe \
&& wine pip install PyQt5==5.11.2 \
\
&& wget -nv -O git.zip https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/MinGit-2.16.3-32-bit.zip \
&& unzip -qq -d git git.zip && rm git.zip && mv git $WINEPREFIX/drive_c/ \
\
&& wget -nv -O nsis.exe "https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-setup.exe/download" \
&& wine nsis.exe /S && rm nsis.exe \
&& wget -nv -O nsis.exe "https://prdownloads.sourceforge.net/nsis/nsis-3.03-setup.exe?download" \
&& wine nsis.exe /S \
\
&& wine pip install PyInstaller==3.2.1 \
&& rm -rf /tmp/.wine-0
ENV WINEPREFIX /root/.wine-64
ENV WINEARCH win64
ENV PYHOME $WINEPREFIX/drive_c/Python34
ENV PYHOME $WINEPREFIX/drive_c/Python36
RUN echo 'download and install 64-bit Python/mingwpy/pywin32/PyQt/git/NSIS/PyInstaller' \
&& wineboot -i \
&& xvfb-run -a winetricks -q vcrun2010 \
RUN echo 'download and install 64-bit Python/pywin32/PyQt/git/NSIS' \
&& wineboot -i && winetricks win10 \
&& wget -nv https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe \
&& cabextract -d ex vc_redist.x64.exe && rm vc_redist.x64.exe \
&& cabextract -d ex/a10ex ex/a10 && cabextract -d ex/a11ex ex/a11 \
&& for f in ex/a10ex/api_ms_win_*; do mv $f $(echo "$f" | sed s/_/-/g); done \
&& cp ex/a10ex/* $WINEPREFIX/drive_c/windows/system32 \
&& cp ex/a11ex/* $WINEPREFIX/drive_c/windows/system32 \
&& rm -rf ex \
\
&& wget -nv -O python.msi https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi \
&& msiexec /q /i python.msi && rm python.msi \
&& wget -nv -O python.exe https://www.python.org/ftp/python/3.6.6/python-3.6.6-amd64.exe \
&& xvfb-run -a wine python.exe /quiet InstallAllUsers=1 TargetDir=$PYHOME && rm python.exe \
&& wine python -m pip install -U pip \
\
&& cp libusb/MS64/dll/libusb-1.0.dll $PYHOME/ && rm -rf libusb \
\
&& wine pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy \
&& /bin/echo -e '[build]\ncompiler=mingw32\n' > $PYHOME/Lib/distutils/distutils.cfg \
\
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b221/pywin32-221.win-amd64-py3.4.exe \
&& wget -nv -O pywin32.exe https://github.com/mhammond/pywin32/releases/download/b223/pywin32-223.win-amd64-py3.6.exe \
&& unzip -qq -d pywin32 pywin32.exe; echo && rm pywin32.exe \
&& cp -r pywin32/PLATLIB/* $PYHOME/Lib/site-packages/ \
&& cp -r pywin32/SCRIPTS/* $PYHOME/Scripts/ && rm -rf pywin32 \
&& wine python $PYHOME/Scripts/pywin32_postinstall.py -install \
\
&& wget -nv -O PyQt.exe "https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x64.exe/download" \
&& wine PyQt.exe /S && rm PyQt.exe \
&& wine pip install PyQt5==5.11.2 \
\
&& wget -nv -O git.zip https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/MinGit-2.16.3-64-bit.zip \
&& unzip -qq -d git git.zip && rm git.zip && mv git $WINEPREFIX/drive_c/ \
\
&& wget -nv -O nsis.exe "https://sourceforge.net/projects/nsis/files/NSIS%202/2.51/nsis-2.51-setup.exe/download" \
&& wine nsis.exe /S && rm nsis.exe \
\
&& wine pip install PyInstaller==3.2.1 \
&& rm -rf /tmp/.wine-0

View File

@ -7,4 +7,4 @@ if [[ -z $TRAVIS_TAG ]]; then
fi
docker pull zebralucky/electrum-dash-winebuild:Linux
docker pull zebralucky/electrum-dash-winebuild:Wine
docker pull zebralucky/electrum-dash-winebuild:WinePy36

View File

@ -9,7 +9,8 @@ fi
cd build
brew update
brew install zebra-lucky/qt5/qt5
brew tap zebra-lucky/qt5
brew install zebra-lucky/qt5/qt
brew install gettext
curl -O https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg

View File

@ -13,21 +13,17 @@ cp contrib/zclassic/deterministic.spec .
cp contrib/zclassic/pyi_runtimehook.py .
cp contrib/zclassic/pyi_tctl_runtimehook.py .
wine pip install --upgrade pip
export PYINSTALLER_TAG=dev180610
wget https://github.com/zebra-lucky/pyinstaller/archive/$PYINSTALLER_TAG.tar.gz
wine pip install $PYINSTALLER_TAG.tar.gz
rm $PYINSTALLER_TAG.tar.gz
wine pip install eth-hash==0.1.2
wine pip install -r contrib/zclassic/requirements.txt
wine pip install --upgrade pip==18.1
wine pip install PyInstaller==3.4
wine pip install x11_hash
wine pip install cython
wine pip install cython=0.29.3
wine pip install hidapi
wine pip install pycryptodomex==3.6.0
wine pip install btchip-python==0.1.26
wine pip install btchip-python==0.1.28
wine pip install keepkey==4.0.2
wine pip install rlp==0.6.0
wine pip install trezor==0.9.1
mkdir $WINEPREFIX/drive_c/Qt

View File

@ -20,10 +20,9 @@ docker run --rm \
sudo find . -name '*.po' -delete
sudo find . -name '*.pot' -delete
export WINEARCH=win32
export WINEPREFIX=/root/.wine-32
export PYHOME=$WINEPREFIX/drive_c/Python34
export PYHOME=$WINEPREFIX/drive_c/Python36
wget https://github.com/zebra-lucky/zbarw/releases/download/20180620/zbarw-zbarcam-0.10-win32.zip
unzip zbarw-zbarcam-0.10-win32.zip && rm zbarw-zbarcam-0.10-win32.zip
@ -35,11 +34,11 @@ docker run --rm \
-v $(pwd):/opt \
-v $(pwd)/electrum-zclassic/:$WINEPREFIX/drive_c/electrum-zclassic \
-w /opt/electrum-zclassic \
-t zebralucky/electrum-dash-winebuild:Wine /opt/build_wine.sh
-t zebralucky/electrum-dash-winebuild:WinePy36 /opt/build_wine.sh
export WINEARCH=win64
export WINEPREFIX=/root/.wine-64
export PYHOME=$WINEPREFIX/drive_c/Python34
export PYHOME=$WINEPREFIX/drive_c/Python36
wget https://github.com/zebra-lucky/zbarw/releases/download/20180620/zbarw-zbarcam-0.10-win64.zip
unzip zbarw-zbarcam-0.10-win64.zip && rm zbarw-zbarcam-0.10-win64.zip
@ -51,4 +50,4 @@ docker run --rm \
-v $(pwd):/opt \
-v $(pwd)/electrum-zclassic/:$WINEPREFIX/drive_c/electrum-zclassic \
-w /opt/electrum-zclassic \
-t zebralucky/electrum-dash-winebuild:Wine /opt/build_wine.sh
-t zebralucky/electrum-dash-winebuild:WinePy36 /opt/build_wine.sh

View File

@ -22,9 +22,8 @@ echo wine build version is $ELECTRUM_ZCL_VERSION
sudo pip3 install --upgrade pip
sudo pip3 install -r contrib/deterministic-build/requirements.txt
sudo pip3 install \
x11_hash>=1.4 \
pycryptodomex==3.6.0 \
btchip-python==0.1.26 \
btchip-python==0.1.28 \
keepkey==4.0.2 \
trezor==0.9.1

View File

@ -50,7 +50,7 @@ datas += collect_data_files('trezorlib')
datas += collect_data_files('btchip')
datas += collect_data_files('keepkeylib')
binaries = [('C:/Python34/libusb-1.0.dll', '.')]
binaries = [('C:/Python36/libusb-1.0.dll', '.')]
# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl
sys.modules['FixTk'] = None
@ -136,7 +136,7 @@ conexe = EXE(pyz,
'console-%s' % cmdline_name))
# trezorctl separate executable
tctl_a = Analysis(['C:/Python34/Scripts/trezorctl'],
tctl_a = Analysis(['C:/Python36/Scripts/trezorctl'],
hiddenimports=['pkgutil'],
excludes=excludes,
runtime_hooks=['pyi_tctl_runtimehook.py'])

Binary file not shown.

View File

@ -78,8 +78,8 @@ class Test_bitcoin(unittest.TestCase):
print('sig1_b64', sig1_b64)
print('sig2_b64', sig2_b64)
self.assertEqual(sig1_b64, b'IAcowIh4U6j342ioNfu/jH4OCcy+qtLp9O6P3aoFVk5NbC+UpsCDhBYwlg2R7gsw18TV1QKjDX7JkWaYb9pGdGo=')
self.assertEqual(sig2_b64, b'HIszHegFNJvGYqJYvzSqrBtfc1PdbR1fai93xIZUeXr6coc3XrEmEvjKvcyas2mermVUnaCVox944itoZg3bwt8=')
self.assertEqual(sig1_b64, b'H21pkXZ9GzHxUOYwHhQs+qgiIUjBRsDnWgQ3JEIPghHbQRHxZWMu9fQWcHVn5YcjS/paPLS9WxDb2g/+3URFmhE=')
self.assertEqual(sig2_b64, b'HOs3IQvLuO5wAk/YSS6Ah3Dh7hLk51JQ+c38iMHLk2xifq77AcMM7GNQ3udnMkbLUsICeSRZZqyINFpFQcbArWE=')
self.assertTrue(verify_message(addr1, sig1, msg1))
self.assertTrue(verify_message(addr2, sig2, msg2))
@ -202,12 +202,12 @@ class Test_xprv_xpub(unittest.TestCase):
def test_bip32(self):
# see https://en.bitcoin.it/wiki/BIP_0032_TestVectors
xpub, xprv = self._do_test_bip32("000102030405060708090a0b0c0d0e0f", "m/0'/1/2'/2/1000000000")
self.assertEqual("xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy", xpub)
self.assertEqual("xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76", xprv)
self.assertEqual("xpub6GtLmbGxckjC9RrEYgQjSK1uiKZFLAbLqb7kRkLQToDpcGhGn5i3ChRRozt91d79t8WcofLWSj4huF2hhQqPCtt4oNWqFjotBjiNMtwdiW8", xpub)
self.assertEqual("xprvA3tzN5k4nPAtvwmmSesj5B5BAHikvhsVUNC9dMvnuTgqjUN8EYPneu6wxhZUtutZK1dF9FNURDKNqUMyrnr7hEumoSP2dooyUVT12oMauVj", xprv)
xpub, xprv = self._do_test_bip32("fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542","m/0/2147483647'/1/2147483646'/2")
self.assertEqual("xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt", xpub)
self.assertEqual("xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j", xprv)
self.assertEqual("xpub6HHYic53gmPLUKh6f2531cKv1TESTEvUAEzVptorn9EqZzvKCr5X6Qo7VgopK2vWYG5eW4rt8p2nPaBbS5yVFNgfRZn9w8aP4YHtCAHAyC8", xpub)
self.assertEqual("xprvA4JCK6Y9rPq3FqcdYzY2eUPBTRPx3nCco24u2WQFDohrhCbAfJmGYcUdeQ2jwowQej5QDzdqiWkjjeeDvJtDMosXic8fLLvje1JG8qukcbZ", xprv)
def test_xpub_from_xprv(self):
"""We can derive the xpub key from a xprv."""

View File

@ -68,14 +68,14 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
WalletIntegrityHelper.check_seeded_keystore_sanity(self, ks)
self.assertTrue(isinstance(ks, keystore.BIP32_KeyStore))
self.assertEqual(ks.xprv, 'xprv9s21ZrQH143K32jECVM729vWgGq4mUDJCk1ozqAStTphzQtCTuoFmFafNoG1g55iCnBTXUzz3zWnDb5CVLGiFvmaZjuazHDL8a81cPQ8KL6')
self.assertEqual(ks.xpub, 'xpub661MyMwAqRbcFWohJWt7PHsFEJfZAvw9ZxwQoDa4SoMgsDDM1T7WK3u9E4edkC4ugRnZ8E4xDZRpk8Rnts3Nbt97dPwT52CwBdDWroaZf8U')
self.assertEqual(ks.xprv, 'xprv9s21ZrQH143K2ghMCZbyreZcic8NSSuC8AG1gSTVPdvjiXufyQJyEVwUmS7EBtsH1YKdaMC17EBDrSzpe7M4k48FUYtJpzJNNptxbnpHEXL')
self.assertEqual(ks.xpub, 'xpub661MyMwAqRbcFAmpJb8zDnWMGdxrqud3VPBcUps6wyTibLEpWwdDnJFxchhCazNLf4xNd3SpAEifKJoL4LSy5jBj2iqXdrfBMmxTWevpCQs')
w = WalletIntegrityHelper.create_standard_wallet(ks)
self.assertEqual(w.txin_type, 'p2pkh')
self.assertEqual(w.get_receiving_addresses()[0], 't1fFMuEC9XFGsEUEPzpEE8jhxpcEMs369xJ')
self.assertEqual(w.get_change_addresses()[0], 't1cKFzsmq8d97RtePBbqS1WebLofuXaXkzF')
self.assertEqual(w.get_receiving_addresses()[0], 't1WuqhS6byNzoKu3LJrpfv2BGp7oiATxzyn')
self.assertEqual(w.get_change_addresses()[0], 't1fvzMLWaFGdJnsJ7K5Ju1jMuC3bKexciyL')
@mock.patch.object(storage.WalletStorage, '_write')
def test_electrum_seed_old(self, mock_write):
@ -104,14 +104,14 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
self.assertTrue(isinstance(ks, keystore.BIP32_KeyStore))
self.assertEqual(ks.xprv, 'xprv9zGLcNEb3cHUKizLVBz6RYeE9bEZAVPjH2pD1DEzCnPcsemWc3d3xTao8sfhfUmDLMq6e3RcEMEvJG1Et8dvfL8DV4h7mwm9J6AJsW9WXQD')
self.assertEqual(ks.xpub, 'xpub6DFh1smUsyqmYD4obDX6ngaxhd53Zx7aeFjoobebm7vbkT6f9awJWFuGzBT9FQJEWFBL7UyhMXtYzRcwDuVbcxtv9Ce2W9eMm4KXLdvdbjv')
self.assertEqual(ks.xprv, 'xprv9z8mPoJhK3FiPpzM3gPVYxLkaq6QeCYpwLheSgPBHH3RURwnZYaTqxzLWnkyFMtV1vm8hGTkEjrJRoYegJwgFKEg1K9bsdf3UrpcAcnSj6w')
self.assertEqual(ks.xpub, 'xpub6D87oJqb9Qp1cK4p9hvVv6HV8rvu3fGgJZdFF4nnqcaQMEGw75tiPmJpN3CQrZR9gpHe7zycB78ynLfT3v6451qoC8k3YcGyiuWyWzuXaKN')
w = WalletIntegrityHelper.create_standard_wallet(ks)
self.assertEqual(w.txin_type, 'p2pkh')
self.assertEqual(w.get_receiving_addresses()[0], 't1PbiEBABXU1E4GEnE31cUPULDoYYWVMpjs')
self.assertEqual(w.get_change_addresses()[0], 't1Z8gbq4eeVbg89ACGddq1T6yfEP9bQx9Ki')
self.assertEqual(w.get_receiving_addresses()[0], 't1fiRjRCGirFb2PprWzYdXjukAAuYB89Gzz')
self.assertEqual(w.get_change_addresses()[0], 't1SVeFNqPq3SzuuzWmbJjj6TX9W8kv7eWJL')
@mock.patch.object(storage.WalletStorage, '_write')
def test_electrum_multisig_seed_standard(self, mock_write):
@ -121,8 +121,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
ks1 = keystore.from_seed(seed_words, '', True)
WalletIntegrityHelper.check_seeded_keystore_sanity(self, ks1)
self.assertTrue(isinstance(ks1, keystore.BIP32_KeyStore))
self.assertEqual(ks1.xprv, 'xprv9s21ZrQH143K3t9vo23J3hajRbzvkRLJ6Y1zFrUFAfU3t8oooMPfb7f87cn5KntgqZs5nipZkCiBFo5ZtaSD2eDo7j7CMuFV8Zu6GYLTpY6')
self.assertEqual(ks1.xpub, 'xpub661MyMwAqRbcGNEPu3aJQqXTydqR9t49Tkwb4Esrj112kw8xLthv8uybxvaki4Ygt9xiwZUQGeFTG7T2TUzR3eA4Zp3aq5RXsABHFBUrq4c')
self.assertEqual(ks1.xprv, 'xprv9s21ZrQH143K2qPRVQ1Z66ZqoNSWoyxWdBXKivnt1TCaAoe7Pa74eYxWRtpSnYrZsvoBcxJqM6H2sGrzkQDPcHKUwztcwSpkTYpAz5y3LJh')
self.assertEqual(ks1.xpub, 'xpub661MyMwAqRbcFKTtbRYZTEWaMQH1DSgMzQSvXKCVZnjZ3byFw7RKCMGzH9G2U7MTTxYuaEhL3suS4HFGHb66QbiDaHPgCZoGNx2678FKe3X')
# electrum seed: ghost into match ivory badge robot record tackle radar elbow traffic loud
ks2 = keystore.from_xpub('xpub661MyMwAqRbcGfCPEkkyo5WmcrhTq8mi3xuBS7VEZ3LYvsgY1cCFDbenT33bdD12axvrmXhuX3xkAbKci3yZY9ZEk8vhLic7KNhLjqdh5ec')
@ -132,8 +132,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
w = WalletIntegrityHelper.create_multisig_wallet(ks1, ks2)
self.assertEqual(w.txin_type, 'p2sh')
self.assertEqual(w.get_receiving_addresses()[0], 't3KcK3kAJerAahSJhN6Pt729u7ficQqK4XX')
self.assertEqual(w.get_change_addresses()[0], 't3PQ7wZhzpoywPLnD1nfcd5sPYLtw2qh5ak')
self.assertEqual(w.get_receiving_addresses()[0], 't3eXoCQLLLZnf95PhrrQhoDTsGdR8FwLhXe')
self.assertEqual(w.get_change_addresses()[0], 't3RoTuEy2FbMgP3urUmYTFpbajjbMpECh9S')
@mock.patch.object(storage.WalletStorage, '_write')
def test_bip39_multisig_seed_bip45_standard(self, mock_write):
@ -142,8 +142,8 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
ks1 = keystore.from_bip39_seed(seed_words, '', "m/45'/0")
self.assertTrue(isinstance(ks1, keystore.BIP32_KeyStore))
self.assertEqual(ks1.xprv, 'xprv9vyEFyXf7pYVv4eDU3hhuCEAHPHNGuxX73nwtYdpbLcqwJCPwFKknAK8pHWuHHBirCzAPDZ7UJHrYdhLfn1NkGp9rk3rVz2aEqrT93qKRD9')
self.assertEqual(ks1.xpub, 'xpub69xafV4YxC6o8Yiga5EiGLAtqR7rgNgNUGiYgw3S9g9pp6XYUne1KxdcfYtxwmA3eBrzMFuYcNQKfqsXCygCo4GxQFHfywxpUbKNfYvGJka')
self.assertEqual(ks1.xprv, 'xprv9w8rAFAEVWArZQjheVqb3wkb2s4LzyCz8crjnsz9Le2hXbsvp6x1vxk1aC7GinLWBGkADbBnCbU9cLe7goagdHAdDYk231FK9uWp6nbVN8a')
self.assertEqual(ks1.xpub, 'xpub6A8CZkh8Ksj9mtpAkXNbR5hKattqQRvqVqnLbGPktyZgQQD5MeGGUm4VRUxfX8jBebX9bcwK7V234sCqboDBxcmA9qSZpy7gnmysRWGdzoz')
# bip39 seed: tray machine cook badge night page project uncover ritual toward person enact
# der: m/45'/0
@ -154,6 +154,6 @@ class TestWalletKeystoreAddressIntegrityForMainnet(unittest.TestCase):
w = WalletIntegrityHelper.create_multisig_wallet(ks1, ks2)
self.assertEqual(w.txin_type, 'p2sh')
self.assertEqual(w.get_receiving_addresses()[0], 't3ZvKyVcMRf5rofUFgN8gk23jtCkRh12Lja')
self.assertEqual(w.get_change_addresses()[0], 't3JaafdGtfhXJzCrupYct6tJBdD2XZUtm8H')
self.assertEqual(w.get_receiving_addresses()[0], 't3YmFV8iPfehb2aVAmod4bEqFVwQTGf4j1i')
self.assertEqual(w.get_change_addresses()[0], 't3ND13q6EWVnYUme5Ko6VAYxPbP6bae2RcH')

View File

@ -1,4 +1,4 @@
ELECTRUM_VERSION = '3.2.0' # version of the client package
ELECTRUM_VERSION = 'v3.2.1a' # version of the client package
PROTOCOL_VERSION = '1.2' # protocol version requested
# The hash of the mnemonic seed must begin with this