Litecoin: Use litecoin_scrypt to solve blocks in mininode.py

Also updated qa/README.md .travis.yml
pull/266/head
ultragtx 8 years ago committed by Adrian Gallagher
parent 761243c98c
commit e39a79bb5d

@ -3,7 +3,7 @@ dist: trusty
#workaround for https://github.com/travis-ci/travis-ci/issues/5227 #workaround for https://github.com/travis-ci/travis-ci/issues/5227
addons: addons:
hostname: bitcoin-tester hostname: litecoin-tester
os: linux os: linux
language: generic language: generic
@ -25,19 +25,20 @@ env:
- SDK_URL=https://bitcoincore.org/depends-sources/sdks - SDK_URL=https://bitcoincore.org/depends-sources/sdks
- PYTHON_DEBUG=1 - PYTHON_DEBUG=1
- WINEDEBUG=fixme-all - WINEDEBUG=fixme-all
- LITECOIN_SCRYPT=0
matrix: matrix:
# ARM # ARM
- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" - HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
# Win32 # Win32
- HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6 bc openjdk-7-jre-headless" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" - HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 python3-dev python3-pip nsis g++-mingw-w64-i686 wine1.6 bc openjdk-7-jre-headless" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" LITECOIN_SCRYPT=1
# 32-bit + dash # 32-bit + dash
- HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python3-zmq openjdk-7-jre-headless" DEP_OPTS="NO_QT=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" - HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python3-pip python3-dev python3-zmq openjdk-7-jre-headless" DEP_OPTS="NO_QT=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" LITECOIN_SCRYPT=1
# Win64 # Win64
- HOST=x86_64-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine1.6 bc openjdk-7-jre-headless" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" - HOST=x86_64-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 python3-dev python3-pip nsis g++-mingw-w64-x86-64 wine1.6 bc openjdk-7-jre-headless" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" LITECOIN_SCRYPT=1
# bitcoind # bitcoind
- HOST=x86_64-unknown-linux-gnu PACKAGES="bc python3-zmq openjdk-7-jre-headless" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" - HOST=x86_64-unknown-linux-gnu PACKAGES="bc python3-pip python3-dev python3-zmq openjdk-7-jre-headless" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" LITECOIN_SCRYPT=1
# No wallet # No wallet
- HOST=x86_64-unknown-linux-gnu PACKAGES=" openjdk-7-jre-headless python3" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" - HOST=x86_64-unknown-linux-gnu PACKAGES=" openjdk-7-jre-headless python3 python3-dev python3-pip" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" LITECOIN_SCRYPT=1
# Cross-Mac # Cross-Mac
- HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.11 GOAL="deploy" - HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev" BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.11 GOAL="deploy"
@ -48,6 +49,7 @@ install:
- if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi - if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
- if [ "$LITECOIN_SCRYPT" = 1 ]; then travis_retry sudo pip3 install litecoin_scrypt; fi
before_script: before_script:
- unset CC; unset CXX - unset CC; unset CXX
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi - if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi

@ -11,15 +11,17 @@ Before running the tests, the following must be installed.
Unix Unix
---- ----
The python3-zmq library is required. On Ubuntu or Debian it can be installed via: `python3-zmq` and `litecoin_scrypt` are required. On Ubuntu or Debian they can be installed via:
``` ```
sudo apt-get install python3-zmq sudo apt-get install python3-zmq
pip3 install litecoin_scrypt
``` ```
OS X OS X
------ ------
``` ```
pip3 install pyzmq pip3 install pyzmq
pip3 install litecoin_scrypt
``` ```
Running tests Running tests

@ -665,7 +665,7 @@ class FullBlockTest(ComparisonTestFramework):
tip(44) tip(44)
b47 = block(47, solve=False) b47 = block(47, solve=False)
target = uint256_from_compact(b47.nBits) target = uint256_from_compact(b47.nBits)
while b47.sha256 < target: #changed > to < while b47.scrypt256 < target: #changed > to <
b47.nNonce += 1 b47.nNonce += 1
b47.rehash() b47.rehash()
yield rejected(RejectResult(16, b'high-hash')) yield rejected(RejectResult(16, b'high-hash'))

@ -36,6 +36,7 @@ from threading import RLock
from threading import Thread from threading import Thread
import logging import logging
import copy import copy
import litecoin_scrypt
from test_framework.siphash import siphash256 from test_framework.siphash import siphash256
BIP0031_VERSION = 60000 BIP0031_VERSION = 60000
@ -535,6 +536,7 @@ class CBlockHeader(object):
self.nNonce = header.nNonce self.nNonce = header.nNonce
self.sha256 = header.sha256 self.sha256 = header.sha256
self.hash = header.hash self.hash = header.hash
self.scrypt256 = header.scrypt256
self.calc_sha256() self.calc_sha256()
def set_null(self): def set_null(self):
@ -546,6 +548,7 @@ class CBlockHeader(object):
self.nNonce = 0 self.nNonce = 0
self.sha256 = None self.sha256 = None
self.hash = None self.hash = None
self.scrypt256 = None
def deserialize(self, f): def deserialize(self, f):
self.nVersion = struct.unpack("<i", f.read(4))[0] self.nVersion = struct.unpack("<i", f.read(4))[0]
@ -556,6 +559,7 @@ class CBlockHeader(object):
self.nNonce = struct.unpack("<I", f.read(4))[0] self.nNonce = struct.unpack("<I", f.read(4))[0]
self.sha256 = None self.sha256 = None
self.hash = None self.hash = None
self.scrypt256 = None
def serialize(self): def serialize(self):
r = b"" r = b""
@ -578,9 +582,11 @@ class CBlockHeader(object):
r += struct.pack("<I", self.nNonce) r += struct.pack("<I", self.nNonce)
self.sha256 = uint256_from_str(hash256(r)) self.sha256 = uint256_from_str(hash256(r))
self.hash = encode(hash256(r)[::-1], 'hex_codec').decode('ascii') self.hash = encode(hash256(r)[::-1], 'hex_codec').decode('ascii')
self.scrypt256 = uint256_from_str(litecoin_scrypt.getPoWHash(r))
def rehash(self): def rehash(self):
self.sha256 = None self.sha256 = None
self.scrypt256 = None
self.calc_sha256() self.calc_sha256()
return self.sha256 return self.sha256
@ -639,7 +645,7 @@ class CBlock(CBlockHeader):
def is_valid(self): def is_valid(self):
self.calc_sha256() self.calc_sha256()
target = uint256_from_compact(self.nBits) target = uint256_from_compact(self.nBits)
if self.sha256 > target: if self.scrypt256 > target:
return False return False
for tx in self.vtx: for tx in self.vtx:
if not tx.is_valid(): if not tx.is_valid():
@ -651,7 +657,7 @@ class CBlock(CBlockHeader):
def solve(self): def solve(self):
self.rehash() self.rehash()
target = uint256_from_compact(self.nBits) target = uint256_from_compact(self.nBits)
while self.sha256 > target: while self.scrypt256 > target:
self.nNonce += 1 self.nNonce += 1
self.rehash() self.rehash()

Loading…
Cancel
Save