Browse Source

Litecoin: Fix various tests

0.16
Adrian Gallagher 7 years ago
parent
commit
e838c27971
No known key found for this signature in database
GPG Key ID: FE3348877809386C
  1. 18
      .travis.yml
  2. 4
      contrib/testgen/gen_base58_test_vectors.py
  3. 8
      src/qt/guiutil.cpp
  4. 38
      src/qt/test/paymentrequestdata.h
  5. 2
      src/qt/test/rpcnestedtests.cpp
  6. 36
      src/qt/test/uritests.cpp
  7. 2
      src/rpc/mining.cpp
  8. 21
      src/test/README.md
  9. 20
      src/test/blockencodings_tests.cpp
  10. 2
      src/test/bloom_tests.cpp
  11. 94
      src/test/data/base58_keys_invalid.json
  12. 200
      src/test/data/base58_keys_valid.json
  13. 20
      src/test/key_tests.cpp
  14. 4
      src/test/main_tests.cpp
  15. 58
      src/test/miner_tests.cpp
  16. 38
      src/test/pow_tests.cpp
  17. 4
      src/test/rpc_tests.cpp
  18. 4
      src/test/test_bitcoin.cpp
  19. 26
      src/test/versionbits_tests.cpp
  20. 2
      test/functional/feature_block.py
  21. 4
      test/functional/p2p_compactblocks.py
  22. 2
      test/functional/rpc_fundrawtransaction.py
  23. 4
      test/functional/rpc_users.py
  24. 6
      test/functional/test_framework/util.py
  25. 196
      test/util/data/bitcoin-util-test.json
  26. 4
      test/util/data/tt-delin1-out.json
  27. 2
      test/util/data/tt-delout1-out.json
  28. 4
      test/util/data/tt-locktime317000-out.json
  29. 2
      test/util/data/txcreate1.hex
  30. 34
      test/util/data/txcreate1.json
  31. 2
      test/util/data/txcreatedata1.hex
  32. 16
      test/util/data/txcreatedata1.json
  33. 2
      test/util/data/txcreatedata2.hex
  34. 16
      test/util/data/txcreatedata2.json
  35. 2
      test/util/data/txcreatedata_seq0.hex
  36. 16
      test/util/data/txcreatedata_seq0.json
  37. 2
      test/util/data/txcreatedata_seq1.hex
  38. 10
      test/util/data/txcreatedata_seq1.json
  39. 6
      test/util/data/txcreatemultisig1.json
  40. 2
      test/util/data/txcreatemultisig2.json
  41. 2
      test/util/data/txcreatemultisig4.json
  42. 2
      test/util/data/txcreateoutpubkey1.json
  43. 2
      test/util/data/txcreateoutpubkey3.json
  44. 2
      test/util/data/txcreatescript2.json
  45. 2
      test/util/data/txcreatescript4.json
  46. 2
      test/util/data/txcreatesignv1.hex
  47. 18
      test/util/data/txcreatesignv1.json
  48. 2
      test/util/data/txcreatesignv2.hex

18
.travis.yml

@ -21,21 +21,22 @@ env:
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out - BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
- SDK_URL=https://bitcoincore.org/depends-sources/sdks - SDK_URL=https://bitcoincore.org/depends-sources/sdks
- WINEDEBUG=fixme-all - WINEDEBUG=fixme-all
- LITECOIN_SCRYPT=0
matrix: matrix:
# ARM # ARM
- HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf python3-pip" 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 python3-pip" 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" 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 nsis g++-mingw-w64-i686 wine1.6" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" LITECOIN_SCRYPT=1
# Qt4 & system libs # Qt4 & system libs
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qt4-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.1++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER" - HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qt4-dev-tools libssl-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.1++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER" LITECOIN_SCRYPT=1
# 32-bit + dash # 32-bit + dash
- HOST=i686-pc-linux-gnu PACKAGES="g++-multilib python3-zmq" 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 python3-zmq" 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" 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 nsis g++-mingw-w64-x86-64 wine1.6" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" LITECOIN_SCRYPT=1
# x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout) # x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" - HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" LITECOIN_SCRYPT=1
# x86_64 Linux, No wallet # x86_64 Linux, No wallet
- HOST=x86_64-unknown-linux-gnu PACKAGES="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="python3" 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-gui --enable-reduce-exports --enable-werror" 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-gui --enable-reduce-exports --enable-werror" OSX_SDK=10.11 GOAL="deploy"
@ -46,6 +47,7 @@ install:
- 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 [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then travis_retry pip3 install flake8 --user; fi - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then travis_retry pip3 install flake8 --user; fi
- if [ "$LITECOIN_SCRYPT" = 1 ]; then travis_retry sudo pip3 install litecoin_scrypt; fi
before_script: before_script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/crypto/ctaes; fi - if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/git-subtree-check.sh src/crypto/ctaes; fi
@ -63,8 +65,8 @@ before_script:
# Start xvfb if needed, as documented at https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI # Start xvfb if needed, as documented at https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI
- if [ "$NEED_XVFB" = 1 ]; then export DISPLAY=:99.0; /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi - if [ "$NEED_XVFB" = 1 ]; then export DISPLAY=:99.0; /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi
script: script:
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "litecoin-project/litecoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "litecoin-project/litecoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1` - export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi - if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST - OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST

4
contrib/testgen/gen_base58_test_vectors.py

@ -18,11 +18,11 @@ import random
from binascii import b2a_hex from binascii import b2a_hex
# key types # key types
PUBKEY_ADDRESS = 0 PUBKEY_ADDRESS = 48
SCRIPT_ADDRESS = 5 SCRIPT_ADDRESS = 5
PUBKEY_ADDRESS_TEST = 111 PUBKEY_ADDRESS_TEST = 111
SCRIPT_ADDRESS_TEST = 196 SCRIPT_ADDRESS_TEST = 196
PRIVKEY = 128 PRIVKEY = 176
PRIVKEY_TEST = 239 PRIVKEY_TEST = 239
metadata_keys = ['isPrivkey', 'isTestnet', 'addrType', 'isCompressed'] metadata_keys = ['isPrivkey', 'isTestnet', 'addrType', 'isCompressed']

8
src/qt/guiutil.cpp

@ -146,7 +146,7 @@ void setupAmountWidget(QLineEdit *widget, QWidget *parent)
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
{ {
// return if URI is not valid or is no bitcoin: URI // return if URI is not valid or is no bitcoin: URI
if(!uri.isValid() || uri.scheme() != QString("bitcoin")) if(!uri.isValid() || uri.scheme() != QString("litecoin"))
return false; return false;
SendCoinsRecipient rv; SendCoinsRecipient rv;
@ -210,9 +210,9 @@ bool parseBitcoinURI(QString uri, SendCoinsRecipient *out)
// //
// Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host, // Cannot handle this later, because bitcoin:// will cause Qt to see the part after // as host,
// which will lower-case it (and thus invalidate the address). // which will lower-case it (and thus invalidate the address).
if(uri.startsWith("bitcoin://", Qt::CaseInsensitive)) if(uri.startsWith("litecoin://", Qt::CaseInsensitive))
{ {
uri.replace(0, 10, "bitcoin:"); uri.replace(0, 11, "litecoin:");
} }
QUrl uriInstance(uri); QUrl uriInstance(uri);
return parseBitcoinURI(uriInstance, out); return parseBitcoinURI(uriInstance, out);
@ -220,7 +220,7 @@ bool parseBitcoinURI(QString uri, SendCoinsRecipient *out)
QString formatBitcoinURI(const SendCoinsRecipient &info) QString formatBitcoinURI(const SendCoinsRecipient &info)
{ {
QString ret = QString("bitcoin:%1").arg(info.address); QString ret = QString("litecoin:%1").arg(info.address);
int paramCount = 0; int paramCount = 0;
if (info.amount) if (info.amount)

38
src/qt/test/paymentrequestdata.h

@ -435,26 +435,26 @@ d2hj739GDLz0b5KuJ2SG6VknMRQM976w/m2qlq0ccVGaaZ2zMIGfpzL3p6adwx/5\
"; ";
// //
// Payment request with amount overflow (amount is set to 21000001 BTC) // Payment request with amount overflow (amount is set to 84000001 LTC)
// //
const char* paymentrequest5_cert2_BASE64 = const char* paymentrequest5_cert2_BASE64 =
"\ "\
Egt4NTA5K3NoYTI1NhrQBArNBDCCAkkwggExoAMCAQICAQEwDQYJKoZIhvcNAQEL\ Egt4NTA5K3NoYTI1NhryBArvBDCCAmswggFToAMCAQICAQEwDQYJKoZIhvcNAQEL\
BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNTAxMTEx\ BQAwITEfMB0GA1UEAwwWUGF5bWVudFJlcXVlc3QgVGVzdCBDQTAeFw0xNjExMTYw\
ODIxMDhaFw0yNTAxMDgxODIxMDhaMCExHzAdBgNVBAMMFlBheW1lbnRSZXF1ZXN0\ MDU1NTFaFw0yNjExMTQwMDU1NTFaMEMxGTAXBgNVBAMMEHRlc3RtZXJjaGFudC5v\
IFRlc3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMsZqzkzeBGo+i2N\ cmcxJjAkBgNVBAoMHVBheW1lbnQgUmVxdWVzdCBUZXN0IE1lcmNoYW50MIGfMA0G\
mUak3Ciodr1V7S062VOy7N0OQYNDQHYkgDFAUET7cEb5VJaHPv5m3ppTBpU9xBcf\ CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQsHxApsShFxVBsS8EKqCSwQFIPV8fTdTb\
wbHHUt4VjA+mhRmYrl1khjvZM+X8kEqvWn20BtcM9R6r0yIYec8UERDDHBleL/P8\ 6a+apXmbiXPuqs8Ga5KmOe+AuYs7bolSoFGqe9tjFU+W9VEUMmx8y6EDsOrTZuqC\
RkxEnVLjYTV9zigCXfMsgYb3EQShAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ\ ZH2Sl4nSW358F6McO2aJftCg7NKpW9Hca/qf5IZXJ1TDuyEVLmXtJI3RFhgC/lik\
KoZIhvcNAQELBQADggEBABUJpl3QCqsoDSxAsQdV6zKT4VGV76AzoGj7etQsQY+r\ Y5u5IjSFbwIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IB\
+S26VfWh/fMobEzuxFChr0USgLJ6FoK78hAtoZvt1lrye9yqFv/ig3WLWsJKWHHb\ AQCyGrRABBP+ONSFjcoQoCx4nVSlS+YjgR5HR41Mkgy67K7BWexhklz0RLRUtxLF\
3RT6oR03CIwZXFSUasi08QDVLxafwsU5OMcPLucF3a1lRL1ccYrNgVCCx1+X7Bos\ 5XOYCfL1ZBB0ZCf22+QBVlhKlzZldMVRaGvlWIwF3u7Q0hnRTetkBfUunY/7bEF+\
tIgDGRQQ4AyoHTcfVd2hEGeUv7k14mOxFsAp6851yosHq9Q2kwmdH+rHEJbjof87\ OIuLAW2C0mvxli+ZQUUxTWZnNrSn67ZylCpNCt5ssOK2vZqJIcxE2mNlPWqIa9Gz\
yyKLagc4owyXBZYkQmkeHWCNqnuRmO5vUsfVb0UUrkD64o7Th/NjwooA7SCiUXl6\ Uz0lls2Nlx3fYSw9VlWgoesYl8Un9kyhr9/zPRJ3nVlFcrd0GlfaF3wexhZWViK8\
dfygT1b7ggpx7GC+sP2DsIM47IAZ55drjqX5u2f+Ba0iTAoEdGVzdBIkCIDC9P+F\ 3tP0AAx3j3wg8jpDSM24R0xX15EGTB9qFLysaYFeG/YkLa2SNaU9sy/RclHeTFpS\
vt0DEhl2qRQErGqUUwSsaMpDvWIaGnJGNQqi8oisGLzcrKYFKhhUZXN0aW5nIGFt\ prYZy5/E0R3Zpfg81R2LkJ+IIkYSJAiAwsvwlvj1DhIZdqkUcqXt94tkwh5sokNv\
b3VudCBvdmVyZmxvdyEqgAG8S7WEDUC6tCL6q2CTBjop/AitgEy31RL9IqYruytR\ ETxkJlR7FJGIrBj+ia/BBSoYVGVzdGluZyBhbW91bnQgb3ZlcmZsb3chKoABcG6J\
iEBFUrBDJZU+UEezGwr7/zoECjo5ZY3PmtZcM2sILNjyweJF6XVzGqTxUw6pN6sW\ s7WGhoR2oeePOiH8WF9rNnZYfNR9t26afph2vTTHPMQQoS6o7HeKA9RcPxbdl441\
XR2T3Gy2LzRvhVA25QgGqpz0/juS2BtmNbsZPkN9gMMwKimgzc+PuCzmEKwPK9cQ\ 4Mt8Ii0Fds+15AUPAfCjQ6YFuYfxO+HuMyhzJh6sFJbpZU7GrBNvqjn5kx52F6nn\
YQ==\ KuPIpNvaauPm/XqqdoQfqtj+AlQWLZF8pQeTbEU=\
"; ";

2
src/qt/test/rpcnestedtests.cpp

@ -73,7 +73,7 @@ void RPCNestedTests::rpcNestedTests()
QVERIFY(result == result2); QVERIFY(result == result2);
RPCConsole::RPCExecuteCommandLine(result, "getblock(getbestblockhash())[tx][0]", &filtered); RPCConsole::RPCExecuteCommandLine(result, "getblock(getbestblockhash())[tx][0]", &filtered);
QVERIFY(result == "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"); QVERIFY(result == "97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9");
QVERIFY(filtered == "getblock(getbestblockhash())[tx][0]"); QVERIFY(filtered == "getblock(getbestblockhash())[tx][0]");
RPCConsole::RPCParseCommandLine(result, "importprivkey", false, &filtered); RPCConsole::RPCParseCommandLine(result, "importprivkey", false, &filtered);

36
src/qt/test/uritests.cpp

@ -13,54 +13,54 @@ void URITests::uriTests()
{ {
SendCoinsRecipient rv; SendCoinsRecipient rv;
QUrl uri; QUrl uri;
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist=")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?req-dontexist="));
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?dontexist=")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?dontexist="));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString()); QVERIFY(rv.label == QString());
QVERIFY(rv.amount == 0); QVERIFY(rv.amount == 0);
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Wikipedia Example Address")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?label=Wikipedia Example Address"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString("Wikipedia Example Address")); QVERIFY(rv.label == QString("Wikipedia Example Address"));
QVERIFY(rv.amount == 0); QVERIFY(rv.amount == 0);
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.001")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?amount=0.001"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString()); QVERIFY(rv.label == QString());
QVERIFY(rv.amount == 100000); QVERIFY(rv.amount == 100000);
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1.001")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?amount=1.001"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString()); QVERIFY(rv.label == QString());
QVERIFY(rv.amount == 100100000); QVERIFY(rv.amount == 100100000);
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=100&label=Wikipedia Example")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?amount=100&label=Wikipedia Example"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.amount == 10000000000LL); QVERIFY(rv.amount == 10000000000LL);
QVERIFY(rv.label == QString("Wikipedia Example")); QVERIFY(rv.label == QString("Wikipedia Example"));
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?message=Wikipedia Example Address"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString()); QVERIFY(rv.label == QString());
QVERIFY(GUIUtil::parseBitcoinURI("bitcoin://175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=Wikipedia Example Address", &rv)); QVERIFY(GUIUtil::parseBitcoinURI("litecoin://LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?message=Wikipedia Example Address", &rv));
QVERIFY(rv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W")); QVERIFY(rv.address == QString("LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2"));
QVERIFY(rv.label == QString()); QVERIFY(rv.label == QString());
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-message=Wikipedia Example Address")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?req-message=Wikipedia Example Address"));
QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(GUIUtil::parseBitcoinURI(uri, &rv));
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000&label=Wikipedia Example")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?amount=1,000&label=Wikipedia Example"));
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example")); uri.setUrl(QString("litecoin:LEr4HnaeFWYhBmGxCfP2po1NPRueIk8kM2?amount=1,000.0&label=Wikipedia Example"));
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv)); QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
} }

2
src/rpc/mining.cpp

@ -126,7 +126,7 @@ UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGen
LOCK(cs_main); LOCK(cs_main);
IncrementExtraNonce(pblock, chainActive.Tip(), nExtraNonce); IncrementExtraNonce(pblock, chainActive.Tip(), nExtraNonce);
} }
while (nMaxTries > 0 && pblock->nNonce < nInnerLoopCount && !CheckProofOfWork(pblock->GetHash(), pblock->nBits, Params().GetConsensus())) { while (nMaxTries > 0 && pblock->nNonce < nInnerLoopCount && !CheckProofOfWork(pblock->GetPoWHash(), pblock->nBits, Params().GetConsensus())) {
++pblock->nNonce; ++pblock->nNonce;
--nMaxTries; --nMaxTries;
} }

21
src/test/README.md

@ -35,20 +35,23 @@ Run `test_bitcoin --help` for the full list.
### Note on adding test cases ### Note on adding test cases
The sources in this directory are unit test cases. Boost includes a The sources in this directory are unit test cases. Boost includes a
unit testing framework, and since bitcoin already uses boost, it makes unit testing framework, and since litecoin already uses boost, it makes
sense to simply use this framework rather than require developers to sense to simply use this framework rather than require developers to
configure some other framework (we want as few impediments to creating configure some other framework (we want as few impediments to creating
unit tests as possible). unit tests as possible).
The build system is setup to compile an executable called `test_bitcoin` The build system is setup to compile an executable called "test_litecoin"
that runs all of the unit tests. The main source file is called that runs all of the unit tests. The main source file is called
test_bitcoin.cpp. To add a new unit test file to our test suite you need test_bitcoin.cpp, which simply includes other files that contain the
to add the file to `src/Makefile.test.include`. The pattern is to create actual unit tests (outside of a couple required preprocessor
one test file for each class or source file for which you want to create directives). The pattern is to create one test file for each class or
unit tests. The file naming convention is `<source_filename>_tests.cpp` source file for which you want to create unit tests. The file naming
and such files should wrap their tests in a test suite convention is "<source_filename>_tests.cpp" and such files should wrap
called `<source_filename>_tests`. For an example of this pattern, their tests in a test suite called "<source_filename>_tests". For an
examine `uint256_tests.cpp`. examples of this pattern, examine uint160_tests.cpp and
uint256_tests.cpp.
Add the source files to /src/Makefile.test.include to add them to the build.
For further reading, I found the following website to be helpful in For further reading, I found the following website to be helpful in
explaining how the boost unit test framework works: explaining how the boost unit test framework works:

20
src/test/blockencodings_tests.cpp

@ -29,9 +29,9 @@ static CBlock BuildBlockTestCase() {
block.vtx.resize(3); block.vtx.resize(3);
block.vtx[0] = MakeTransactionRef(tx); block.vtx[0] = MakeTransactionRef(tx);
block.nVersion = 42; block.nVersion = 1;
block.hashPrevBlock = InsecureRand256(); block.hashPrevBlock = InsecureRand256();
block.nBits = 0x207fffff; block.nBits = 0x1e0ffff0;
tx.vin[0].prevout.hash = InsecureRand256(); tx.vin[0].prevout.hash = InsecureRand256();
tx.vin[0].prevout.n = 0; tx.vin[0].prevout.n = 0;
@ -47,7 +47,7 @@ static CBlock BuildBlockTestCase() {
bool mutated; bool mutated;
block.hashMerkleRoot = BlockMerkleRoot(block, &mutated); block.hashMerkleRoot = BlockMerkleRoot(block, &mutated);
assert(!mutated); assert(!mutated);
while (!CheckProofOfWork(block.GetHash(), block.nBits, Params().GetConsensus())) ++block.nNonce; while (!CheckProofOfWork(block.GetPoWHash(), block.nBits, Params().GetConsensus())) ++block.nNonce;
return block; return block;
} }
@ -105,7 +105,7 @@ BOOST_AUTO_TEST_CASE(SimpleRoundTripTest)
CBlock block3; CBlock block3;
BOOST_CHECK(partialBlock.FillBlock(block3, {block.vtx[1]}) == READ_STATUS_OK); BOOST_CHECK(partialBlock.FillBlock(block3, {block.vtx[1]}) == READ_STATUS_OK);
BOOST_CHECK_EQUAL(block.GetHash().ToString(), block3.GetHash().ToString()); BOOST_CHECK_EQUAL(block.GetPoWHash().ToString(), block3.GetPoWHash().ToString());
BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block3, &mutated).ToString()); BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block3, &mutated).ToString());
BOOST_CHECK(!mutated); BOOST_CHECK(!mutated);
} }
@ -209,7 +209,7 @@ BOOST_AUTO_TEST_CASE(NonCoinbasePreforwardRTTest)
CBlock block3; CBlock block3;
PartiallyDownloadedBlock partialBlockCopy = partialBlock; PartiallyDownloadedBlock partialBlockCopy = partialBlock;
BOOST_CHECK(partialBlock.FillBlock(block3, {block.vtx[0]}) == READ_STATUS_OK); BOOST_CHECK(partialBlock.FillBlock(block3, {block.vtx[0]}) == READ_STATUS_OK);
BOOST_CHECK_EQUAL(block.GetHash().ToString(), block3.GetHash().ToString()); BOOST_CHECK_EQUAL(block.GetPoWHash().ToString(), block3.GetPoWHash().ToString());
BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block3, &mutated).ToString()); BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block3, &mutated).ToString());
BOOST_CHECK(!mutated); BOOST_CHECK(!mutated);
@ -260,7 +260,7 @@ BOOST_AUTO_TEST_CASE(SufficientPreforwardRTTest)
CBlock block2; CBlock block2;
PartiallyDownloadedBlock partialBlockCopy = partialBlock; PartiallyDownloadedBlock partialBlockCopy = partialBlock;
BOOST_CHECK(partialBlock.FillBlock(block2, {}) == READ_STATUS_OK); BOOST_CHECK(partialBlock.FillBlock(block2, {}) == READ_STATUS_OK);
BOOST_CHECK_EQUAL(block.GetHash().ToString(), block2.GetHash().ToString()); BOOST_CHECK_EQUAL(block.GetPoWHash().ToString(), block2.GetPoWHash().ToString());
bool mutated; bool mutated;
BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block2, &mutated).ToString()); BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block2, &mutated).ToString());
BOOST_CHECK(!mutated); BOOST_CHECK(!mutated);
@ -285,14 +285,14 @@ BOOST_AUTO_TEST_CASE(EmptyBlockRoundTripTest)
CBlock block; CBlock block;
block.vtx.resize(1); block.vtx.resize(1);
block.vtx[0] = MakeTransactionRef(std::move(coinbase)); block.vtx[0] = MakeTransactionRef(std::move(coinbase));
block.nVersion = 42; block.nVersion = 1;
block.hashPrevBlock = InsecureRand256(); block.hashPrevBlock = InsecureRand256();
block.nBits = 0x207fffff; block.nBits = 0x1e0ffff0;
bool mutated; bool mutated;
block.hashMerkleRoot = BlockMerkleRoot(block, &mutated); block.hashMerkleRoot = BlockMerkleRoot(block, &mutated);
assert(!mutated); assert(!mutated);
while (!CheckProofOfWork(block.GetHash(), block.nBits, Params().GetConsensus())) ++block.nNonce; while (!CheckProofOfWork(block.GetPoWHash(), block.nBits, Params().GetConsensus())) ++block.nNonce;
// Test simple header round-trip with only coinbase // Test simple header round-trip with only coinbase
{ {
@ -311,7 +311,7 @@ BOOST_AUTO_TEST_CASE(EmptyBlockRoundTripTest)
CBlock block2; CBlock block2;
std::vector<CTransactionRef> vtx_missing; std::vector<CTransactionRef> vtx_missing;
BOOST_CHECK(partialBlock.FillBlock(block2, vtx_missing) == READ_STATUS_OK); BOOST_CHECK(partialBlock.FillBlock(block2, vtx_missing) == READ_STATUS_OK);
BOOST_CHECK_EQUAL(block.GetHash().ToString(), block2.GetHash().ToString()); BOOST_CHECK_EQUAL(block.GetPoWHash().ToString(), block2.GetPoWHash().ToString());
BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block2, &mutated).ToString()); BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block2, &mutated).ToString());
BOOST_CHECK(!mutated); BOOST_CHECK(!mutated);
} }

2
src/test/bloom_tests.cpp

@ -84,7 +84,7 @@ BOOST_AUTO_TEST_CASE(bloom_create_insert_serialize_with_tweak)
BOOST_AUTO_TEST_CASE(bloom_create_insert_key) BOOST_AUTO_TEST_CASE(bloom_create_insert_key)
{ {
std::string strSecret = std::string("5Kg1gnAjaLfKiwhhPpGS3QfRg2m6awQvaj98JCZBZQ5SuS2F15C"); std::string strSecret = std::string("6vyk9uiGUm8CCKbYue4PpoSbdWKZnjrxMQYJ1PaDGrQ4bLHTxQJ");
CBitcoinSecret vchSecret; CBitcoinSecret vchSecret;
BOOST_CHECK(vchSecret.SetString(strSecret)); BOOST_CHECK(vchSecret.SetString(strSecret));

94
src/test/data/base58_keys_invalid.json

@ -6,145 +6,145 @@
"x" "x"
], ],
[ [
"37qgekLpCCHrQuSjvX3fs496FWTGsHFHizjJAs6NPcR47aefnnCWECAhHV6E3g4YN7u7Yuwod5Y" "gZXdHjj9QCnNz5KnSqrXo2w8XghqUaYQmoFxMFaks8ZTLCcu2LtWmWFTNH3HdXQ46yJNha24p3T"
], ],
[ [
"dzb7VV1Ui55BARxv7ATxAtCUeJsANKovDGWFVgpTbhq9gvPqP3yv" "6vFieKyF36RmFmvMaBVC9UJyQUm2b1xmYRhwJY97tv4p5LF68FF"
], ],
[ [
"MuNu7ZAEDFiHthiunm7dPjwKqrVNCM3mAz6rP9zFveQu14YA8CxExSJTHcVP9DErn6u84E6Ej7S" "cQWGj8MhCtKbN26j23EPbuTPXZ5pyPKuYFFTBJLxQvCWQvJEMBEXW"
], ],
[ [
"rPpQpYknyNQ5AEHuY6H8ijJJrYc2nDKKk9jjmKEXsWzyAQcFGpDLU2Zvsmoi8JLR7hAwoy3RQWf" "JBoefAMfPKWWaUYPo5edWZvvt1CCjaTCPcpLbtVPvmajm1RTZnLTxgtCxM9QVEf8if9u7Eg88fV1"
], ],
[ [
"4Uc3FmN6NQ6zLBK5QQBXRBUREaaHwCZYsGCueHauuDmJpZKn6jkEskMB2Zi2CNgtb5r6epWEFfUJq" "TbxPvvXwEtvLwVJGsAzFHqskzVcHVkSYporbcVXfkUSsgFewgEsf"
], ],
[ [
"7aQgR5DFQ25vyXmqZAWmnVCjL3PkBcdVkBUpjrjMTcghHx3E8wb" "2NUDYkhC7duHz13gNFxkwPdL1i2UATDDUAgYzE7Lhg3VkLxpCNkqThs6SR6zMiiNzQer6RZPURqf"
], ],
[ [
"17QpPprjeg69fW1DV8DcYYCKvWjYhXvWkov6MJ1iTTvMFj6weAqW7wybZeH57WTNxXVCRH4veVs" "LgcotVvFQgGHygDWCkkyqVgyctGTe3pH4G"
], ],
[ [
"KxuACDviz8Xvpn1xAh9MfopySZNuyajYMZWz16Dv2mHHryznWUp3" "5mfqm4pggSkz238Tju7k9UhnHpvuSNbYKckmXKV29KBwYFNdCZBMRfbaikVNyjvz3Mj2rHpYtF7wg"
], ],
[ [
"7nK3GSmqdXJQtdohvGfJ7KsSmn3TmGqExug49583bDAL91pVSGq5xS9SHoAYL3Wv3ijKTit65th" "2U4ajn8ASmYcM42hDCGqi7rFCKuzZJ7nNWUgjeRtQdrz4kKVS7t6iG2QEE4xABbuoedzK4ya7u8B"
], ],
[ [
"cTivdBmq7bay3RFGEBBuNfMh2P1pDCgRYN2Wbxmgwr4ki3jNUL2va" "2PGCEn9m7Vx1hcwjZzvm61UBfdm8rynZcNb"
], ],
[ [
"gjMV4vjNjyMrna4fsAr8bWxAbwtmMUBXJS3zL4NJt5qjozpbQLmAfK1uA3CquSqsZQMpoD1g2nk" "2iKcv8HMvVtbHVEmfPPp52AMbjLQqgvbFYt"
], ],
[ [
"emXm1naBMoVzPjbk7xpeTVMFy4oDEe25UmoyGgKEB1gGWsK8kRGs" "uDpgjm6HCQypJFQcVTmqv5qHioEhpsvZb1rsQX4ivTSwEPaZBp"
], ],
[ [
"7VThQnNRj1o3Zyvc7XHPRrjDf8j2oivPTeDXnRPYWeYGE4pXeRJDZgf28ppti5hsHWXS2GSobdqyo" "4MxF1GvQDokfTcUm9BVfkAgnUdd1QaMo7jx7zrbvtg41YWJPecL"
], ],
[ [
"1G9u6oCVCPh2o8m3t55ACiYvG1y5BHewUkDSdiQarDcYXXhFHYdzMdYfUAhfxn5vNZBwpgUNpso" "cQcyPZ6SYhkauD8rywrqVYhoib1qfLN7o8BMjsTFziCrmtppGuAw"
], ],
[ [
"31QQ7ZMLkScDiB4VyZjuptr7AEc9j1SjstF7pRoLhHTGkW4Q2y9XELobQmhhWxeRvqcukGd1XCq" "5ngBnqMF5sDmGqaA42FXWuK1TornGT8irTU2jggc66NN6B9Pw7LH2qgYU7Msr6MLwNLxpnKxai2UV"
], ],
[ [
"DHqKSnpxa8ZdQyH8keAhvLTrfkyBMQxqngcQA5N8LQ9KVt25kmGN" "cRSUJiBwxSUuswwFWRpk2fdBLK6KWHby3mgNyTRTpEMs7XJQ3xkbT"
], ],
[ [
"2LUHcJPbwLCy9GLH1qXmfmAwvadWw4bp4PCpDfduLqV17s6iDcy1imUwhQJhAoNoN1XNmweiJP4i" "2KtV23FPhBCmkPYE43kXfJFm5bvzGaGxEj5"
], ],
[ [
"7USRzBXAnmck8fX9HmW7RAb4qt92VFX6soCnts9s74wxm4gguVhtG5of8fZGbNPJA83irHVY6bCos" "25xmYrwhzccp4mK4x7DWJQ1KYqKcw6ckso4TraMXnRhn1aimYFPWEVFCgcfjxgWH9tBHziipv4isE"
], ],
[ [
"1DGezo7BfVebZxAbNT3XGujdeHyNNBF3vnficYoTSp4PfK2QaML9bHzAMxke3wdKdHYWmsMTJVu" "5mqiJJe7ej7245THhVmyhFuNekhCJkotVpeuQvstRKDdW8wYUdqZFyPRqFPuen7AEaSu69AiEzYJp"
], ],
[ [
"2D12DqDZKwCxxkzs1ZATJWvgJGhQ4cFi3WrizQ5zLAyhN5HxuAJ1yMYaJp8GuYsTLLxTAz6otCfb" "cN6EEuVvKaubeqiqVfDSyGA72UoZ8j8KPPRahQ57jxuyBMdaT19vR"
], ],
[ [
"8AFJzuTujXjw1Z6M3fWhQ1ujDW7zsV4ePeVjVo7D1egERqSW9nZ" "wVwfGNa9BkYKseBzr7Vb458bZqTXMQL94V"
], ],
[ [
"163Q17qLbTCue8YY3AvjpUhotuaodLm2uqMhpYirsKjVqnxJRWTEoywMVY3NbBAHuhAJ2cF9GAZ" "HfLPJ1eL8KGMhmHXSptJnSe4oBmXzMZ1PfvnKWewBdv9vhEiSVmevKjgwHffL9oM24YNAj5zAau"
], ],
[ [
"2MnmgiRH4eGLyLc9eAqStzk7dFgBjFtUCtu" "Yk5B6MRro1YEay6CiX1Qj8qHY1R5o3c4EsXN644EAmjB2JMrgex5"
], ],
[ [
"461QQ2sYWxU7H2PV4oBwJGNch8XVTYYbZxU" "LbW5JEaVWMLuMeiRhUQ3vmPzzzQ8sgXTFme"
], ],
[ [
"2UCtv53VttmQYkVU4VMtXB31REvQg4ABzs41AEKZ8UcB7DAfVzdkV9JDErwGwyj5AUHLkmgZeobs" "FwVS4Xy2KUEypF76i9n5dkKvUM1YjbyRYJ"
], ],
[ [
"cSNjAsnhgtiFMi6MtfvgscMB2Cbhn2v1FUYfviJ1CdjfidvmeW6mn" "T3Xe7hU6cgBveFinLV45SE8WHT1aJ6xEBXkyAqAtj4CqfKPb3ZEG"
], ],
[ [
"gmsow2Y6EWAFDFE1CE4Hd3Tpu2BvfmBfG1SXsuRARbnt1WjkZnFh1qGTiptWWbjsq2Q6qvpgJVj" "M8LH9iCJBTzgSjTE5y8RtSLo3vabSv6RWjLr54pZHqXZCBJtkEbV"
], ],
[ [
"nksUKSkzS76v8EsSgozXGMoQFiCoCHzCVajFKAXqzK5on9ZJYVHMD5CKwgmX3S3c7M1U3xabUny" "JKAsgoe5RRWDFruerwz2TVEifnGLkHkMiWkJzm9Y1KkDpMXW2nssdyXaHfQzPoxqvazpTEmRPe6"
], ],
[ [
"L3favK1UzFGgdzYBF2oBT5tbayCo4vtVBLJhg2iYuMeePxWG8SQc" "7sTp4xUuNRta4baVDHf96n7fqba2NJ1DjAnYXYswEh1xm8hbZJF"
], ],
[ [
"7VxLxGGtYT6N99GdEfi6xz56xdQ8nP2dG1CavuXx7Rf2PrvNMTBNevjkfgs9JmkcGm6EXpj8ipyPZ" "cUSxdRJwpEP8czXTLPSXPNYAB75xyFi7AYwc7azPvGqQLcyEb7jq"
], ],
[ [
"2mbZwFXF6cxShaCo2czTRB62WTx9LxhTtpP" "JKSnxB43ogNNPW9F27d8amwPWimdRLG95EUCiSrFJybfxVFPUjBFZFdeGdjzBygXCi7rinvS6Rz"
], ],
[ [
"dB7cwYdcPSgiyAwKWL3JwCVwSk6epU2txw" "tJgWcJ8FqGWWuX6DGeMxnCKjfhm2osTu6Q"
], ],
[ [
"HPhFUhUAh8ZQQisH8QQWafAxtQYju3SFTX" "2UDnhZGfuHzAKd4HSo99ALrVax5TgKxzALJR1Ct36ibrZqXsnwRBsVvKneDYWxiQjcpnQ3NWK2as"
], ],
[ [
"4ctAH6AkHzq5ioiM1m9T3E2hiYEev5mTsB" "JCK4Kx3L6ZbHkSJwPYJPijK6SNgQDutbtE4XAxgTFgFWmFx1w97XczfKptjZKn3THosoZ2k81mb"
], ],
[ [
"Hn1uFi4dNexWrqARpjMqgT6cX1UsNPuV3cHdGg9ExyXw8HTKadbktRDtdeVmY3M1BxJStiL4vjJ" "AbnXu1Rgaemzvbg1tVgTBjah1owubWPkFZ"
], ],
[ [
"Sq3fDbvutABmnAHHExJDgPLQn44KnNC7UsXuT7KZecpaYDMU9Txs" "928wcz8UaXY3tHmeseuFAfYLNSBjrs8jdxKRGkJGk5Wyx2CvhmkPzTrPKporxAKqLs9bAh29Btb"
], ],
[ [
"6TqWyrqdgUEYDQU1aChMuFMMEimHX44qHFzCUgGfqxGgZNMUVWJ" "Qp7EyuWueg4cazBtJW3uYKwLmL1uR3PkgDVoBsGSMZWu1njcRRJ"
], ],
[ [
"giqJo7oWqFxNKWyrgcBxAVHXnjJ1t6cGoEffce5Y1y7u649Noj5wJ4mmiUAKEVVrYAGg2KPB3Y4" "6R9r5RHQdN6Fgk9K2PHSx1sXKpk8QskdyzXtCSNAfJmehY9DD1Dd"
], ],
[ [
"cNzHY5e8vcmM3QVJUcjCyiKMYfeYvyueq5qCMV3kqcySoLyGLYUK" "271T9hGPSeP9QRTb7g5tRZYT7ADbJhivFb6"
], ],
[ [
"37uTe568EYc9WLoHEd9jXEvUiWbq5LFLscNyqvAzLU5vBArUJA6eydkLmnMwJDjkL5kXc2VK7ig" "2x7WjATScgcSHNpGMGz8TKKS2g2E7Qkg9x3CMuGxxCDCHy1rQr1RFEjdjP6Lw6qksGJLcp7i6U6"
], ],
[ [
"EsYbG4tWWWY45G31nox838qNdzksbPySWc" "2jwUaPdB93pxW5dJpoGjq3RCKyBEqTqfcq3"
], ],
[ [
"nbuzhfwMoNzA3PaFnyLcRxE9bTJPDkjZ6Rf6Y6o2ckXZfzZzXBT" "7VkJFJwgtTaqCXks8JrxuJEkEoDGGUrGQBBUp2SVwb93UWAQ6d3kYK8y3u1CQKZi6f8fZWCoDpr3pP"
], ],
[ [
"cQN9PoxZeCWK1x56xnz6QYAsvR11XAce3Ehp3gMUdfSQ53Y2mPzx" "T4UVQQSBJdRVkNvgNxkmcP9mVtWoBLWqmzZo1T8Z9GDNPYj6rV1s"
], ],
[ [
"1Gm3N3rkef6iMbx4voBzaxtXcmmiMTqZPhcuAepRzYUJQW4qRpEnHvMojzof42hjFRf8PE2jPde" "2UA3wL1KGhNh2UR2HYRPVgJ9Dx32qEGapePi8wp1SZ9UmTCHV5fkudMA2CZ78t7KKDAQWtNB3PFc"
], ],
[ [
"2TAq2tuN6x6m233bpT7yqdYQPELdTDJn1eU" "gcBstMZS9mKRXeGiYQJ5vG2ukiEKRirxskCEqZ6rmFwWuh2kyNxwqsd6pnduEdV7Zvvkgcu9VKt"
], ],
[ [
"ntEtnnGhqPii4joABvBtSEJG6BxjT2tUZqE8PcVYgk3RHpgxgHDCQxNbLJf7ardf1dDk2oCQ7Cf" "5mqKtSZGj3bHtMgmSDbt9Qmp9NnQ8ECnYQ8b54eJKERw5stGCTZ42ECVxeTWU1JTC9o8Tewe4WxEW"
], ],
[ [
"Ky1YjoZNgQ196HJV3HpdkecfhRBmRZdMJk89Hi5KGfpfPwS2bUbfd" "31q9AKvsdwuSP2znBRMLugqALxQ1aSfAqWbT1gyS1tsjFFj2ZZMSGAEE1kyFsC6H6fy7v6yTTtb"
], ],
[ [
"2A1q1YsMZowabbvta7kTy2Fd6qN4r5ZCeG3qLpvZBMzCixMUdkN2Y4dHB1wPsZAeVXUGD83MfRED" "2A1q1YsMZowabbvta7kTy2Fd6qN4r5ZCeG3qLpvZBMzCixMUdkN2Y4dHB1wPsZAeVXUGD83MfRED"

200
src/test/data/base58_keys_valid.json

@ -1,47 +1,47 @@
[ [
[ [
"1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", "LdwLvykqj2nUH3MWcut6mtjHxVxVFC7st5",
"76a91465a16059864a2fdbc7c99a4723a8395bc6f188eb88ac", "cd463dbc6f8076c7021f2766b36ea7e19c5c9e2e",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou", "3QiEMZmknJkHxz9q2VjTCT1tvUicLvBpdZ",
"a91474f209f6ea907e2ea48f74fae05782ae8a66525787", "fc85afab90ad569ed50fe8771d70aff8a7eb788d",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"mo9ncXisMeAoXwqcV5EWuyncbmCcQN4rVs", "mmCKZS7toE69QgXNs1JZcjW6LFj8LfUbz6",
"76a91453c0307d6851aa0ce7825ba883c6bd9ad242b48688ac", "3e4a9a4a79dcad8800b6cfcdf102bf98064b7454",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"mo9ncXisMeAoXwqcV5EWuyncbmCcQN4rVs", "2N5X5FB9Cro2qW4Dww1pEKYXMhQt8PK6KHM",
"76a91453c0307d6851aa0ce7825ba883c6bd9ad242b48688ac", "86a0ddc5ce64594f0b84d96596657e1f5e0af7f6",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "regtest" "chain": "regtest"
} }
], ],
[ [
"2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br", "6uyyEQaLajn2bVG4DQ9LkwKqdTLWv5fxzSgBBwFMhZnY6SHamHF",
"a9146349a418fc4578d10a372b54b45c280cc8c4382f87", "716bbb0c59dc95f658b169b09c9ada6b106d79ef637dc0a1361aea83b67f3281",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5Kd3NBUAdUnhyzenEwVLy9pBKxSwXvE9FMPyR4UKZvpe6E3AgLr", "T92ej9rAJ2HEKBtXKpcQEB88KMjBUW43uVxzwgAAYmm97CbDfuB2",
"eddbdc1168f1daeadbd3e44c1e3f8f5a284c2029f78ad26af98583a499de5b19", "b257a0d8b63aac2cbac1f6b57c73ee6313650a000ac895456f633e05e1f276b1",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -49,8 +49,8 @@
} }
], ],
[ [
"Kz6UJmQACJmLtaQj5A3JAge4kVTNQ8gbvXuwbmCj7bsaabudb3RD", "93UCtAocH3kKPwoqEcjNGR1qi9MLkhQio2vMjWCMdEsBNwTKszg",
"55c9bccb9ed68446d1b75273bbce89d7fe013a8acd1625514420fb2aca1a21c4", "f8270343a5cc4936c0f304520700b9a9f443dddeb5b2bfa9ef8414d126e9835b",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -58,8 +58,8 @@
} }
], ],
[ [
"9213qJab2HNEpMpYNBa7wHGFKKbkDn24jpANDs2huN3yi4J11ko", "cU3MMfRXJpVuVXKdkqn1x8cqEHz4AfyBmVFj7CvBUdApAZYo6Lj8",
"36cb93b9ab1bdabf7fb9f2c04f1b9cc879933530ae7842398eef5a63a56800c2", "c0bbf61af02667b9a7c172c2d4bfa64ac9d4553f7ae19fb295c06e77cc799296",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -67,8 +67,8 @@
} }
], ],
[ [
"9213qJab2HNEpMpYNBa7wHGFKKbkDn24jpANDs2huN3yi4J11ko", "LWZR9ybwmT8vSXP6tmrBX4b6nE9o94AjQG",
"36cb93b9ab1bdabf7fb9f2c04f1b9cc879933530ae7842398eef5a63a56800c2", "7c57bc50a38d8377ad55260f29f2c8619846ef08",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -76,8 +76,8 @@
} }
], ],
[ [
"cTpB4YiyKiBcPxnefsDpbnDxFDffjqJob8wGCEDXxgQ7zQoMXJdH", "32wfwbXojzQN9vYFQGquFTt7sqKnB8Phyz",
"b9f4892c9e8282028fea1d2667c4dc5213564d41fc5783896a0d843fc15089f3", "0dbdaf6928107d60299f5069367c4cf07fa9b6e5",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -85,8 +85,8 @@
} }
], ],
[ [
"cTpB4YiyKiBcPxnefsDpbnDxFDffjqJob8wGCEDXxgQ7zQoMXJdH", "mvJg85FLYqN7xAcZeFZRVg7pMbJ53BqKmy",
"b9f4892c9e8282028fea1d2667c4dc5213564d41fc5783896a0d843fc15089f3", "a237653c5ae7e18e840d6463d380701ce3ba5035",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -94,40 +94,40 @@
} }
], ],
[ [
"1Ax4gZtb7gAit2TivwejZHYtNNLT18PUXJ", "2NCGcqUHf4q4vE2MZD6bnaVzFUSKPM4WCDX",
"76a9146d23156cbbdcc82a5a47eee4c2c7c583c18b6bf488ac", "d0ade0e231a81794ed1baa081604de53ddd8b083",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy", "6w3nZ8BsJLuJwe42QpFAwCZC9EFz4e2k1ewhRT9ab2poUv8KSu7",
"a914fcc5460dd6e2487c7d75b1963625da0e8f4c597587", "fdc80a3b189a9d64a1fb8e5a9905d92922f77e135a235a06046147f10d4f09be",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"n3ZddxzLvAY9o7184TB4c6FJasAybsw4HZ", "T5EAeSR4zfUGvNiA4iCVPpV8Gz6ZUGAT94bsBqTv3kd81hNQCgzY",
"76a914f1d470f9b02370fdec2e6b708b08ac431bf7a5f788ac", "40eab9b09d0469a7d9f84dae6bc5f98199e0b187fe4e74013cab437f9306ea00",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"2NBFNJTktNa7GZusGbDbGKRZTxdK9VVez3n", "92hDYngM3s5oLTK6Fsq1JKLLSgL5NdarzLm8r9ymzEfQzCB24cJ",
"a914c579342c2c4c9220205e2cdc285617040c924a0a87", "92001dd4cb225cdc0cf9fe2f824c807ffedd5235c9c0ca014949d0793fc66868",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5K494XZwps2bGyeL71pWid4noiSNA2cfCibrvRWqcHSptoFn7rc", "cQFFjska277aBhcbCaEdBSixz1BXEgnLoGYECu9mKJip3GBco8CL",
"a326b95ebae30164217d7a7f57d72ab2b54e3be64928a19da0210b9568d4015e", "4f8210f4e6830d16fa8818d37fa9aed65664a20f3c41bfa5b502cdc8d1173dcb",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -135,8 +135,8 @@
} }
], ],
[ [
"L1RrrnXkcKut5DEMwtDthjwRcTTwED36thyL1DebVrKuwvohjMNi", "LWkdEB9SHUfuBiTvZofK2LqYE4RTTtUcqi",
"7d998b45c219a1e38e99e7cbd312ef67f77a455a9b50c730c27f02c6f730dfb4", "7e766382cb564021bcbc273e23569dcaed536ac6",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -144,8 +144,8 @@
} }
], ],
[ [
"93DVKyFYwSN6wEo3E2fCrFPUp17FtrtNi2Lf7n4G3garFb16CRj", "32cjrquumLmwSmBrNCbkU5UTUmtgetWqaL",
"d6bca256b5abc5602ec2e1c121a08b0da2556587430bcf7e1898af2224885203", "0a290d74c272ab52dec1a87ce88e75d29c94fe5a",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -153,8 +153,8 @@
} }
], ],
[ [
"cTDVKtMGVYWTHCb1AFjmVbEbWjvKpKqKgMaR3QJxToMSQAhmCeTN", "mtei3esVvHhww4Rw9FYnMdTUTVvbpWhLfF",
"a81ca4e8f90181ec4b61b6a7eb998af17b2cb04de8a03b504b9e34c4c61db7d9", "901111ab28cf850a5b6846e94e8c0c4a505603a9",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -162,40 +162,40 @@
} }
], ],
[ [
"1C5bSj1iEGUgSTbziymG7Cn18ENQuT36vv", "2N85CqWKWqfZ5Hc9qGXWmr5JKZzMqZCRDPM",
"76a9147987ccaa53d02c8873487ef919677cd3db7a691288ac", "a2a4c41bd7150d28aa730140cebf7aa5341e2619",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"3AnNxabYGoTxYiTEZwFEnerUoeFXK2Zoks", "6vfWJ2KcJLjvXXx8aZNsLcQQnxTvXA38ci22BvhprTq5QpRS6k6",
"a91463bcc565f9e68ee0189dd5cc67f1b0e5f02f45cb87", "cb30eec426333b2396d2362d4a380d7f6a4ae50a2701309a53f500fa389c166c",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"n3LnJXCqbPjghuVs8ph9CYsAe4Sh4j97wk", "T9xQZ1QYhGyYp7wzRQuLdfm1te8BwrnvWsibt6GXuK58Xoq2wryN",
"76a914ef66444b5b17f14e8fae6e7e19b045a78c54fd7988ac", "cdff0814191533898aa1e6291f2c77e1a1945a732f70b8f09aadc637e9241e59",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"2NB72XtkjpnATMggui83aEtPawyyKvnbX2o", "93C56vYXBM3XycR9M9pDNY333bTLT8KeqTpRXKSncruKpeuvfZ5",
"a914c3e55fceceaa4391ed2a9677f4a4d34eacd021a087", "d3849230c2d8bd3590708a8ff485deea6a73916a664255f95179282b146854fe",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5KaBW9vNtWNhc3ZEDyNCiXLPdVPHCikRxSBWwV9NrpLLa4LsXi9", "cV7TW5gn8yJjrVy4mfYLDY1tfYN7o81tjeubEeqWxzyjdcU7Bv9F",
"e75d936d56377f432f404aabb406601f892fd49da90eb6ac558a733c93b47252", "e0af129330504deb99dd989339b96d77ce3782a852b8e61a4367394505abc3e0",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -203,8 +203,8 @@
} }
], ],
[ [
"L1axzbSyynNYA8mCAhzxkipKkfHtAXYF4YQnhSKcLV8YXA874fgT", "LVcGHJcTv1ctR6GLRXxR4SQSsycdmQ6pwZ",
"8248bd0375f2f75d7e274ae544fb920f51784480866b102384190b1addfbaa5c", "71e9734a1283f2368bbd5a397d3c7a22610b2958",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -212,8 +212,8 @@
} }
], ],
[ [
"927CnUkUbasYtDwYwVn2j8GdTuACNnKkjZ1rpZd2yBB1CLcnXpo", "35CcFdsWEiXv4cuHjR8G54FYvrrDtm4WUm",
"44c4f6a096eac5238291a94cc24c01e3b19b8d8cef72874a079e00a242237a52", "268118c8299cd5d8d3b9561caaf8c94d4bd1af44",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -221,8 +221,8 @@
} }
], ],
[ [
"cUcfCMRjiQf85YMzzQEk9d1s5A4K7xL5SmBCLrezqXFuTVefyhY7", "myWBvpVEeY86YvJLb5kwH2iWbdXPGjTtZk",
"d1de707020a9059d6d3abaf85e17967c6555151143db13dbb06db78df0f15c69", "c54d3aa920e78e56b72c0076d36e99bc87058397",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -230,40 +230,40 @@
} }
], ],
[ [
"1Gqk4Tv79P91Cc1STQtU3s1W6277M2CVWu", "2N54Ew2vPqzA9PxG89rB1LM8MVfgePiCKqV",
"76a914adc1cc2081a27206fae25792f28bbc55b831549d88ac", "818db8c869c5911d286d37088de9020cca43f702",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"33vt8ViH5jsr115AGkW6cEmEz9MpvJSwDk", "6uM1BTu9jkS6cMfFTtxzutmcNQYVpTome57XhxES6xKiiN7eM4v",
"a914188f91a931947eddd7432d6e614387e32b24470987", "1d7bee7a5f4be2bcd945a4bdce28a479bb1afcf4d925d29de0124325bb55277d",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"mhaMcBxNh5cqXm4aTQ6EcVbKtfL6LGyK2H", "T6gDa2FYoYuCDpeJy8ePrdTVqxxvZ9H5nCqmdVCiRvLBWr1jymE9",
"76a9141694f5bc1a7295b600f40018a618a6ea48eeb49888ac", "6c27d6190e8c49919b7c0919d1ca1b033c2b72b03234728d0b092087983f2544",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"2MxgPqX1iThW3oZVk9KoFcE5M4JpiETssVN", "91epwsbfDsLwAum2kYeibW9v3cyM9ALeHxFoR1wh7g8w58gihCj",
"a9143b9b3fd7a50d4f08d1a5b0f62f644fa7115ae2f387", "08e0d6cf0999a1427830e034b5281c8112d707d463da05d993d8b2b66985d91f",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5HtH6GdcwCJA4ggWEL1B3jzBBUB8HPiBi9SBc5h9i4Wk4PSeApR", "cTNjHC1zu7CifxVJ7g9V16LKVokd7D1XuEvqTtA88uwTsRUFXmWj",
"091035445ef105fa1bb125eccfb1882f3fe69592265956ade751fd095033d8d0", "acdd979c5e6eb9e619dfede5c7112af1057442c8799c1e1d85d7bf59892c923a",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -271,8 +271,8 @@
} }
], ],
[ [
"L2xSYmMeVo3Zek3ZTsv9xUrXVAmrWxJ8Ua4cw8pkfbQhcEFhkXT8", "LPD8ZwGjE4WmQ1EEnjZHrvofSyvGtbEWsH",
"ab2b4bcdfc91d34dee0ae2a8c6b6668dadaeb3a88b9859743156f462325187af", "2bb8b0991f396d7f411c2227af00cc09d1ae0adf",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -280,8 +280,8 @@
} }
], ],
[ [
"92xFEve1Z9N8Z641KQQS7ByCSb8kGjsDzw6fAmjHN1LZGKQXyMq", "35Bjf3NUkU6CNqUFB4HnkaYqN3VPMYwUED",
"b4204389cef18bbe2b353623cbf93e8678fbc92a475b664ae98ed594e6cf0856", "2656dc6ac50a5bdeb80348b9097af31e74698f44",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -289,8 +289,8 @@
} }
], ],
[ [
"92xFEve1Z9N8Z641KQQS7ByCSb8kGjsDzw6fAmjHN1LZGKQXyMq", "mhv2Ti1xy9CsWoYgnEjehEunbhFiyFwLAp",
"b4204389cef18bbe2b353623cbf93e8678fbc92a475b664ae98ed594e6cf0856", "1a4d4bf230aabafd3a425770b8b98700bf06e370",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -298,8 +298,8 @@
} }
], ],
[ [
"cVM65tdYu1YK37tNoAyGoJTR13VBYFva1vg9FLuPAsJijGvG6NEA", "2MwyQVPME89pGMxuX3fRwEgfXtgN1Y1wB7e",
"e7b230133f1b5489843260236b06edca25f66adb1be455fbd38d4010d48faeef", "33dabd6dfda94c9c1ef1654a3c3b1e0984a7aecf",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -307,40 +307,40 @@
} }
], ],
[ [
"1JwMWBVLtiqtscbaRHai4pqHokhFCbtoB4", "6uqTHcTC88EcZ8RQJDoH7dFfH46E8ZNpThbEKXCiQ12ag2GeHQ7",
"76a914c4c1b72491ede1eedaca00618407ee0b772cad0d88ac", "5e15635f0be1e9717529fb2b65b0d430355f0f5db5811b47fc6545efbe082b23",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"3QCzvfL4ZRvmJFiWWBVwxfdaNBT8EtxB5y", "T34vLND26MHR4j1L8qsmojWcHtwYcmDdibMrsgo41SRYDDDdJzQe",
"a914f6fe69bcb548a829cce4c57bf6fff8af3a5981f987", "007c379af039e5472c784a1f41ccea5de8b8d6fde03139644f12294a5a4dc20d",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"mizXiucXRCsEriQCHUkCqef9ph9qtPbZZ6", "932VXf7wK3qQTGzudkeHWME2iweTTdyfyxQV4HqWLZsocbVQMgZ",
"76a914261f83568a098a8638844bd7aeca039d5f2352c088ac", "bdc494c6c492168886d7d19fe35c4e67c477f8e19bfe1b50a4b28a7f0910ac02",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"2NEWDzHWwY5ZZp8CQWbB7ouNMLqCia6YRda", "cUNY2YHa2TZRNMKBjypnZ1kh7LnPzgBhapKQgqh8MXGGVQTqdqQS",
"a914e930e1834a4d234702773951d627cce82fbb5d2e87", "ca9a6a553f353255f2d91fde1718bd1f86c40c0b16f2aaccf8efefe242f5a7b6",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5KQmDryMNDcisTzRp3zEq9e4awRmJrEVU1j5vFRTKpRNYPqYrMg", "LPGeGFBPCVLHdGVD1i1oikzD92XZoTEVyh",
"d1fab7ab7385ad26872237f1eb9789aa25cc986bacc695e07ac571d6cdac8bc0", "2c62b9d0c13b499167506863248f473416b18850",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -348,8 +348,8 @@
} }
], ],
[ [
"L39Fy7AC2Hhj95gh3Yb2AU5YHh1mQSAHgpNixvm27poizcJyLtUi", "37h7vEB4v3jpqxKvX1qqJ5xZaqzLj7NPyN",
"b0bbede33ef254e8376aceb1510253fc3550efd0fcf84dcd0c9998b288f166b3", "41d5c23a8188270b32d0afce2e11e4c3028afe6b",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -357,8 +357,8 @@
} }
], ],
[ [
"91cTVUcgydqyZLgaANpf1fvL55FH53QMm4BsnCADVNYuWuqdVys", "mhvk8vH4LaAgUBUJsU4UtL4KSWLavssToW",
"037f4192c630f399d9271e26c575269b1d15be553ea1a7217f0cb8513cef41cb", "1a701609b7d938f932d9517f965eb938ec45d067",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -366,8 +366,8 @@
} }
], ],
[ [
"cQspfSzsgLeiJGB2u8vrAiWpCU4MxUT6JseWo2SjXy4Qbzn2fwDw", "2NBbbBFBoKk85mhvTJH4tc11U1zh4oqp7SG",
"6251e205e8ad508bab5596bee086ef16cd4b239e0cc0c5d7c4e6035441e7d5de", "c94c4561b8ec99cddd540dedc67380c6b859ae00",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,
@ -375,40 +375,40 @@
} }
], ],
[ [
"19dcawoKcZdQz365WpXWMhX6QCUpR9SY4r", "6vQqYTYdTXyHLcAivoZ6N2pginHXkZj9DF8uu9rroj5jT32joQn",
"76a9145eadaf9bb7121f0f192561a5a62f5e5f5421029288ac", "a9e2a8019c11e6fd215f5c2ae834c7f07207723cac79b4e22744800c97212ac1",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3", "T7qqfYACj4bdqNMm9ZMMNtbaMXRzePBpL59msQiWw7i5JRuDLFVB",
"a9143f210e7277c899c3a155cc1c90f4106cbddeec6e87", "8ef16edbbc8996a1be1c8a8d7de566a489a84484912060471158c0d20fcd42ba",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "main" "chain": "main"
} }
], ],
[ [
"myoqcgYiehufrsnnkqdqbp69dddVDMopJu", "91pvMZgXhzBit7xx2NrbgMiuVZJep46gTCdvFkQTijTA76Gzxfc",
"76a914c8a3c2a09a298592c3e180f02487cd91ba3400b588ac", "1fcbd613ad91f41e062a66b11299585cff1639775df447360e74fbeea1e336c8",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"2N7FuwuUuoTBrDFdrAZ9KxBmtqMLxce9i1C", "cVWTK7AxBVgndSKS6Xs54XonuEh4NUhaHVtyzrWhHfQ2rLWdVrNy",
"a91499b31df7c9068d1481b596578ddbb4d3bd90baeb87", "ec83a732c245dc6df111d6412aa1b2ed78072ae3ebaa499660ccb7f013adca8f",
{ {
"isPrivkey": false, "isPrivkey": false,
"chain": "test" "chain": "test"
} }
], ],
[ [
"5KL6zEaMtPRXZKo1bbMq7JDjjo1bJuQcsgL33je3oY8uSJCR5b4", "LhLu7S8qdG7YZR1GgSP8g4aqN8nXCRLkzX",
"c7666842503db6dc6ea061f092cfb9c388448629a6fe868d068c42a488b478ae", "f2a30c60e4abcbbdcdf7cb34520b742ae07b6018",
{ {
"isCompressed": false, "isCompressed": false,
"isPrivkey": true, "isPrivkey": true,
@ -416,8 +416,8 @@
} }
], ],
[ [
"KwV9KAfwbwt51veZWNscRTeZs9CKpojyu1MsPnaKTF5kz69H1UN2", "3B7BZ4asi1qP4jQmo4UjshAp4ZtgmpA7CW",
"07f0803fc5399e773555ab1e8939907e9badacc17ca129e67a2f5f2ff84351dd", "674b274f2be5747793d2529972d964f1cfe9f985",
{ {
"isCompressed": true, "isCompressed": true,
"isPrivkey": true, "isPrivkey": true,

20
src/test/key_tests.cpp

@ -16,16 +16,16 @@
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
static const std::string strSecret1 = "5HxWvvfubhXpYYpS3tJkw6fq9jE9j18THftkZjHHfmFiWtmAbrj"; static const std::string strSecret1 = "6uGFQ4DSW7zh1viHZi6iiVT17CncvoaV4MHvGvJKPDaLCdymj87";
static const std::string strSecret2 = "5KC4ejrDjv152FGwP386VD1i2NYc5KkfSMyv1nGy1VGDxGHqVY3"; static const std::string strSecret2 = "6vVo7sPkeLTwVdAntrv4Gbnsyr75H8ChD3P5iyHziwaqe8mCYR5";
static const std::string strSecret1C = "Kwr371tjA9u2rFSMZjTNun2PXXP3WPZu2afRHTcta6KxEUdm1vEw"; static const std::string strSecret1C = "T3gJYmBuZXsdd65E7NQF88ZmUP2MaUanqnZg9GFS94W7kND4Ebjq";
static const std::string strSecret2C = "L3Hq7a8FEQwJkW1M2GNKDW28546Vp5miewcCzSqUD9kCAXrJdS3g"; static const std::string strSecret2C = "T986ZKRRdnuuXLeDZuKBRrZW1ujotAncU9WTrFU1n7vMgRW75ZtF";
static const std::string addr1 = "1QFqqMUD55ZV3PJEJZtaKCsQmjLT6JkjvJ"; static const std::string addr1 = "LiUo6Zn39joYJBzPUhssbDwAywhjFcoHE3";
static const std::string addr2 = "1F5y5E5FMc5YzdJtB9hLaUe43GDxEKXENJ"; static const std::string addr2 = "LZJvLSP5SGKcFS13MHgdrVhpFUbEMB5XVC";
static const std::string addr1C = "1NoJrossxPBKfCHuJXT4HadJrXRE9Fxiqs"; static const std::string addr1C = "Lh2G82Bi33RNuzz4UfSMZbh54jnWHVnmw8";
static const std::string addr2C = "1CRj2HyM1CXWzHAXLQtiGLyggNT9WQqsDs"; static const std::string addr2C = "LWegHWHB5rmaF5rgWYt1YN3StapRdnGJfU";
static const std::string strAddressBad = "1HV9Lc3sNHZxwj4Zk6fB38tEmBryq2cBiF"; static const std::string strAddressBad = "Lbi6bpMhSwp2CXkivEeUK9wzyQEFzHDfSr";
BOOST_FIXTURE_TEST_SUITE(key_tests, BasicTestingSetup) BOOST_FIXTURE_TEST_SUITE(key_tests, BasicTestingSetup)

4
src/test/main_tests.cpp

@ -49,13 +49,13 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test)
{ {
const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); const auto chainParams = CreateChainParams(CBaseChainParams::MAIN);
CAmount nSum = 0; CAmount nSum = 0;
for (int nHeight = 0; nHeight < 14000000; nHeight += 1000) { for (int nHeight = 0; nHeight < 56000000; nHeight += 1000) {
CAmount nSubsidy = GetBlockSubsidy(nHeight, chainParams->GetConsensus()); CAmount nSubsidy = GetBlockSubsidy(nHeight, chainParams->GetConsensus());
BOOST_CHECK(nSubsidy <= 50 * COIN); BOOST_CHECK(nSubsidy <= 50 * COIN);
nSum += nSubsidy * 1000; nSum += nSubsidy * 1000;
BOOST_CHECK(MoneyRange(nSum)); BOOST_CHECK(MoneyRange(nSum));
} }
BOOST_CHECK_EQUAL(nSum, 2099999997690000ULL); BOOST_CHECK_EQUAL(nSum, 8399999990760000ULL);
} }
bool ReturnFalse() { return false; } bool ReturnFalse() { return false; }

58
src/test/miner_tests.cpp

@ -52,34 +52,34 @@ struct {
unsigned char extranonce; unsigned char extranonce;
unsigned int nonce; unsigned int nonce;
} blockinfo[] = { } blockinfo[] = {
{4, 0xa4a3e223}, {2, 0x15c32f9e}, {1, 0x0375b547}, {1, 0x7004a8a5}, {4, 0xa4ad9f65}, {2, 0x15cf2b27}, {1, 0x037620ac}, {1, 0x700d9c54},
{2, 0xce440296}, {2, 0x52cfe198}, {1, 0x77a72cd0}, {2, 0xbb5d6f84}, {2, 0xce79f74f}, {2, 0x52d9c194}, {1, 0x77bc3efc}, {2, 0xbb62c5e8},
{2, 0x83f30c2c}, {1, 0x48a73d5b}, {1, 0xef7dcd01}, {2, 0x6809c6c4}, {2, 0x83ff997a}, {1, 0x48b984ee}, {1, 0xef925da0}, {2, 0x680d2979},
{2, 0x0883ab3c}, {1, 0x087bbbe2}, {2, 0x2104a814}, {2, 0xdffb6daa}, {2, 0x08953af7}, {1, 0x087dd553}, {2, 0x210e2818}, {2, 0xdfffcdef},
{1, 0xee8a0a08}, {2, 0xba4237c1}, {1, 0xa70349dc}, {1, 0x344722bb}, {1, 0xeea1b209}, {2, 0xba4a8943}, {1, 0xa7333e77}, {1, 0x344f3e2a},
{3, 0xd6294733}, {2, 0xec9f5c94}, {2, 0xca2fbc28}, {1, 0x6ba4f406}, {3, 0xd651f08e}, {2, 0xeca3957f}, {2, 0xca35aa49}, {1, 0x6bb2065d},
{2, 0x015d4532}, {1, 0x6e119b7c}, {2, 0x43e8f314}, {2, 0x27962f38}, {2, 0x0170ee44}, {1, 0x6e12f4aa}, {2, 0x43f4f4db}, {2, 0x279c1c44},
{2, 0xb571b51b}, {2, 0xb36bee23}, {2, 0xd17924a8}, {2, 0x6bc212d9}, {2, 0xb5a50f10}, {2, 0xb3902841}, {2, 0xd198647e}, {2, 0x6bc40d88},
{1, 0x630d4948}, {2, 0x9a4c4ebb}, {2, 0x554be537}, {1, 0xd63ddfc7}, {1, 0x633a9a1c}, {2, 0x9a722ed8}, {2, 0x55580d10}, {1, 0xd65022a1},
{2, 0xa10acc11}, {1, 0x759a8363}, {2, 0xfb73090d}, {1, 0xe82c6a34}, {2, 0xa12ffcc8}, {1, 0x75a6a9c7}, {2, 0xfb7c80b7}, {1, 0xe8403e6c},
{1, 0xe33e92d7}, {3, 0x658ef5cb}, {2, 0xba32ff22}, {5, 0x0227a10c}, {1, 0xe34017a0}, {3, 0x659e177b}, {2, 0xba5c40bf}, {5, 0x022f11ef},
{1, 0xa9a70155}, {5, 0xd096d809}, {1, 0x37176174}, {1, 0x830b8d0f}, {1, 0xa9ab516a}, {5, 0xd0999ed4}, {1, 0x37277cb3}, {1, 0x830f735f},
{1, 0xc6e3910e}, {2, 0x823f3ca8}, {1, 0x99850849}, {1, 0x7521fb81}, {1, 0xc6e3d947}, {2, 0x824a0c1b}, {1, 0x99962416}, {1, 0x75336f63},
{1, 0xaacaabab}, {1, 0xd645a2eb}, {5, 0x7aea1781}, {5, 0x9d6e4b78}, {1, 0xaacf0fea}, {1, 0xd6531aec}, {5, 0x7afcf541}, {5, 0x9d6fac0d},
{1, 0x4ce90fd8}, {1, 0xabdc832d}, {6, 0x4a34f32a}, {2, 0xf2524c1c}, {1, 0x4cf5c4df}, {1, 0xabe0f2a0}, {6, 0x4a3dac18}, {2, 0xf265febe},
{2, 0x1bbeb08a}, {1, 0xad47f480}, {1, 0x9f026aeb}, {1, 0x15a95049}, {2, 0x1bc9f23f}, {1, 0xad49ab71}, {1, 0x9f2d8923}, {1, 0x15acb65d},
{2, 0xd1cb95b2}, {2, 0xf84bbda5}, {1, 0x0fa62cd1}, {1, 0xe05f9169}, {2, 0xd1cecb52}, {2, 0xf856808b}, {1, 0x0fa96e29}, {1, 0xe063ecbc},
{1, 0x78d194a9}, {5, 0x3e38147b}, {5, 0x737ba0d4}, {1, 0x63378e10}, {1, 0x78d926c6}, {5, 0x3e38ad35}, {5, 0x73901915}, {1, 0x63424be0},
{1, 0x6d5f91cf}, {2, 0x88612eb8}, {2, 0xe9639484}, {1, 0xb7fabc9d}, {1, 0x6d6b0a1d}, {2, 0x888ba681}, {2, 0xe96b0714}, {1, 0xb7fcaa55},
{2, 0x19b01592}, {1, 0x5a90dd31}, {2, 0x5bd7e028}, {2, 0x94d00323}, {2, 0x19c106eb}, {1, 0x5aa13484}, {2, 0x5bf4c2f3}, {2, 0x94d401dd},
{1, 0xa9b9c01a}, {1, 0x3a40de61}, {1, 0x56e7eec7}, {5, 0x859f7ef6}, {1, 0xa9bc23d9}, {1, 0x3a69c375}, {1, 0x56ed2006}, {5, 0x85ba6dbd},
{1, 0xfd8e5630}, {1, 0x2b0c9f7f}, {1, 0xba700e26}, {1, 0x7170a408}, {1, 0xfd9b2000}, {1, 0x2b2be19a}, {1, 0xba724468}, {1, 0x717eb6e5},
{1, 0x70de86a8}, {1, 0x74d64cd5}, {1, 0x49e738a1}, {2, 0x6910b602}, {1, 0x70de86d9}, {1, 0x74e23a42}, {1, 0x49e92832}, {2, 0x6926dbb9},
{0, 0x643c565f}, {1, 0x54264b3f}, {2, 0x97ea6396}, {2, 0x55174459}, {0, 0x64452497}, {1, 0x54306d6f}, {2, 0x97ebf052}, {2, 0x55198b70},
{2, 0x03e8779a}, {1, 0x98f34d8f}, {1, 0xc07b2b07}, {1, 0xdfe29668}, {2, 0x03fe61f0}, {1, 0x98f9e67f}, {1, 0xc0842a09}, {1, 0xdfed39c5},
{1, 0x3141c7c1}, {1, 0xb3b595f4}, {1, 0x735abf08}, {5, 0x623bfbce}, {1, 0x3144223e}, {1, 0xb3d12f84}, {1, 0x7366ceb7}, {5, 0x6240691b},
{2, 0xd351e722}, {1, 0xf4ca48c9}, {1, 0x5b19c670}, {1, 0xa164bf0e}, {2, 0xd3529b57}, {1, 0xf4cae3b1}, {1, 0x5b1df222}, {1, 0xa16a5c70},
{2, 0xbbbeb305}, {2, 0xfe1c810a}, {2, 0xbbccedc6}, {2, 0xfe38d0ef},
}; };
CBlockIndex CreateBlockIndex(int nHeight) CBlockIndex CreateBlockIndex(int nHeight)
@ -368,7 +368,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
// subsidy changing // subsidy changing
int nHeight = chainActive.Height(); int nHeight = chainActive.Height();
// Create an actual 209999-long block chain (without valid blocks). // Create an actual 209999-long block chain (without valid blocks).
while (chainActive.Tip()->nHeight < 209999) { while (chainActive.Tip()->nHeight < 839999) {
CBlockIndex* prev = chainActive.Tip(); CBlockIndex* prev = chainActive.Tip();
CBlockIndex* next = new CBlockIndex(); CBlockIndex* next = new CBlockIndex();
next->phashBlock = new uint256(InsecureRand256()); next->phashBlock = new uint256(InsecureRand256());

38
src/test/pow_tests.cpp

@ -17,48 +17,48 @@ BOOST_FIXTURE_TEST_SUITE(pow_tests, BasicTestingSetup)
BOOST_AUTO_TEST_CASE(get_next_work) BOOST_AUTO_TEST_CASE(get_next_work)
{ {
const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); const auto chainParams = CreateChainParams(CBaseChainParams::MAIN);
int64_t nLastRetargetTime = 1261130161; // Block #30240 int64_t nLastRetargetTime = 1358118740; // Block #278207
CBlockIndex pindexLast; CBlockIndex pindexLast;
pindexLast.nHeight = 32255; pindexLast.nHeight = 280223;
pindexLast.nTime = 1262152739; // Block #32255 pindexLast.nTime = 1358378777; // Block #280223
pindexLast.nBits = 0x1d00ffff; pindexLast.nBits = 0x1c0ac141;
BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1d00d86a); BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1c093f8d);
} }
/* Test the constraint on the upper bound for next work */ /* Test the constraint on the upper bound for next work */
BOOST_AUTO_TEST_CASE(get_next_work_pow_limit) BOOST_AUTO_TEST_CASE(get_next_work_pow_limit)
{ {
const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); const auto chainParams = CreateChainParams(CBaseChainParams::MAIN);
int64_t nLastRetargetTime = 1231006505; // Block #0 int64_t nLastRetargetTime = 1317972665; // Block #0
CBlockIndex pindexLast; CBlockIndex pindexLast;
pindexLast.nHeight = 2015; pindexLast.nHeight = 2015;
pindexLast.nTime = 1233061996; // Block #2015 pindexLast.nTime = 1318480354; // Block #2015
pindexLast.nBits = 0x1d00ffff; pindexLast.nBits = 0x1e0ffff0;
BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1d00ffff); BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1e0fffff);
} }
/* Test the constraint on the lower bound for actual time taken */ /* Test the constraint on the lower bound for actual time taken */
BOOST_AUTO_TEST_CASE(get_next_work_lower_limit_actual) BOOST_AUTO_TEST_CASE(get_next_work_lower_limit_actual)
{ {
const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); const auto chainParams = CreateChainParams(CBaseChainParams::MAIN);
int64_t nLastRetargetTime = 1279008237; // Block #66528 int64_t nLastRetargetTime = 1401682934; // NOTE: Not an actual block time
CBlockIndex pindexLast; CBlockIndex pindexLast;
pindexLast.nHeight = 68543; pindexLast.nHeight = 578591;
pindexLast.nTime = 1279297671; // Block #68543 pindexLast.nTime = 1401757934; // Block #578591
pindexLast.nBits = 0x1c05a3f4; pindexLast.nBits = 0x1b075cf1;
BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1c0168fd); BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1b01d73c);
} }
/* Test the constraint on the upper bound for actual time taken */ /* Test the constraint on the upper bound for actual time taken */
BOOST_AUTO_TEST_CASE(get_next_work_upper_limit_actual) BOOST_AUTO_TEST_CASE(get_next_work_upper_limit_actual)
{ {
const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); const auto chainParams = CreateChainParams(CBaseChainParams::MAIN);
int64_t nLastRetargetTime = 1263163443; // NOTE: Not an actual block time int64_t nLastRetargetTime = 1463690315; // NOTE: Not an actual block time
CBlockIndex pindexLast; CBlockIndex pindexLast;
pindexLast.nHeight = 46367; pindexLast.nHeight = 1001951;
pindexLast.nTime = 1269211443; // Block #46367 pindexLast.nTime = 1464900315; // Block #46367
pindexLast.nBits = 0x1c387f6f; pindexLast.nBits = 0x1b015318;
BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1d00e1fd); BOOST_CHECK_EQUAL(CalculateNextWorkRequired(&pindexLast, nLastRetargetTime, chainParams->GetConsensus()), 0x1b054c60);
} }
BOOST_AUTO_TEST_CASE(GetBlockProofEquivalentTime_test) BOOST_AUTO_TEST_CASE(GetBlockProofEquivalentTime_test)

4
src/test/rpc_tests.cpp

@ -117,8 +117,8 @@ BOOST_AUTO_TEST_CASE(rpc_rawsign)
r = CallRPC(std::string("createrawtransaction ")+prevout+" "+ r = CallRPC(std::string("createrawtransaction ")+prevout+" "+
"{\"3HqAe9LtNBjnsfM4CyYaWTnvCaUYT7v4oZ\":11}"); "{\"3HqAe9LtNBjnsfM4CyYaWTnvCaUYT7v4oZ\":11}");
std::string notsigned = r.get_str(); std::string notsigned = r.get_str();
std::string privkey1 = "\"KzsXybp9jX64P5ekX1KUxRQ79Jht9uzW7LorgwE65i5rWACL6LQe\""; std::string privkey1 = "\"T6hoRM7L8u4f9vHd4eGMAmwV6AMCE11PvYi7YjrdegG223kw64r1\"";
std::string privkey2 = "\"Kyhdf5LuKTRx4ge69ybABsiUAWjVRK4XGxAKk2FQLp2HjGMy87Z4\""; std::string privkey2 = "\"T5Xu6pe5iqQYqXGxhcY2QEFr7NNoVQ5R6A4abpswunCTF9w85g8V\"";
r = CallRPC(std::string("signrawtransaction ")+notsigned+" "+prevout+" "+"[]"); r = CallRPC(std::string("signrawtransaction ")+notsigned+" "+prevout+" "+"[]");
BOOST_CHECK(find_value(r.get_obj(), "complete").get_bool() == false); BOOST_CHECK(find_value(r.get_obj(), "complete").get_bool() == false);
r = CallRPC(std::string("signrawtransaction ")+notsigned+" "+prevout+" "+"["+privkey1+","+privkey2+"]"); r = CallRPC(std::string("signrawtransaction ")+notsigned+" "+prevout+" "+"["+privkey1+","+privkey2+"]");

4
src/test/test_bitcoin.cpp

@ -65,7 +65,7 @@ TestingSetup::TestingSetup(const std::string& chainName) : BasicTestingSetup(cha
RegisterAllCoreRPCCommands(tableRPC); RegisterAllCoreRPCCommands(tableRPC);
ClearDatadirCache(); ClearDatadirCache();
pathTemp = fs::temp_directory_path() / strprintf("test_bitcoin_%lu_%i", (unsigned long)GetTime(), (int)(InsecureRandRange(100000))); pathTemp = fs::temp_directory_path() / strprintf("test_litecoin_%lu_%i", (unsigned long)GetTime(), (int)(InsecureRandRange(100000)));
fs::create_directories(pathTemp); fs::create_directories(pathTemp);
gArgs.ForceSetArg("-datadir", pathTemp.string()); gArgs.ForceSetArg("-datadir", pathTemp.string());
@ -148,7 +148,7 @@ TestChain100Setup::CreateAndProcessBlock(const std::vector<CMutableTransaction>&
IncrementExtraNonce(&block, chainActive.Tip(), extraNonce); IncrementExtraNonce(&block, chainActive.Tip(), extraNonce);
} }
while (!CheckProofOfWork(block.GetHash(), block.nBits, chainparams.GetConsensus())) ++block.nNonce; while (!CheckProofOfWork(block.GetPoWHash(), block.nBits, chainparams.GetConsensus())) ++block.nNonce;
std::shared_ptr<const CBlock> shared_pblock = std::make_shared<const CBlock>(block); std::shared_ptr<const CBlock> shared_pblock = std::make_shared<const CBlock>(block);
ProcessNewBlock(chainparams, shared_pblock, true, nullptr); ProcessNewBlock(chainparams, shared_pblock, true, nullptr);

26
src/test/versionbits_tests.cpp

@ -271,12 +271,12 @@ BOOST_AUTO_TEST_CASE(versionbits_computeblockversion)
// Before MedianTimePast of the chain has crossed nStartTime, the bit // Before MedianTimePast of the chain has crossed nStartTime, the bit
// should not be set. // should not be set.
CBlockIndex *lastBlock = nullptr; CBlockIndex *lastBlock = nullptr;
lastBlock = firstChain.Mine(2016, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(8064, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0); BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0);
// Mine 2011 more blocks at the old time, and check that CBV isn't setting the bit yet. // Mine 2011 more blocks at the old time, and check that CBV isn't setting the bit yet.
for (int i=1; i<2012; i++) { for (int i=1; i<8060; i++) {
lastBlock = firstChain.Mine(2016+i, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(8064+i, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
// This works because VERSIONBITS_LAST_OLD_BLOCK_VERSION happens // This works because VERSIONBITS_LAST_OLD_BLOCK_VERSION happens
// to be 4, and the bit we're testing happens to be bit 28. // to be 4, and the bit we're testing happens to be bit 28.
BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0); BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0);
@ -284,13 +284,13 @@ BOOST_AUTO_TEST_CASE(versionbits_computeblockversion)
// Now mine 5 more blocks at the start time -- MTP should not have passed yet, so // Now mine 5 more blocks at the start time -- MTP should not have passed yet, so
// CBV should still not yet set the bit. // CBV should still not yet set the bit.
nTime = nStartTime; nTime = nStartTime;
for (int i=2012; i<=2016; i++) { for (int i=8060; i<=8064; i++) {
lastBlock = firstChain.Mine(2016+i, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(8064+i, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0); BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0);
} }
// Advance to the next period and transition to STARTED, // Advance to the next period and transition to STARTED,
lastBlock = firstChain.Mine(6048, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(24192, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
// so ComputeBlockVersion should now set the bit, // so ComputeBlockVersion should now set the bit,
BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0); BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0);
// and should also be using the VERSIONBITS_TOP_BITS. // and should also be using the VERSIONBITS_TOP_BITS.
@ -298,8 +298,8 @@ BOOST_AUTO_TEST_CASE(versionbits_computeblockversion)
// Check that ComputeBlockVersion will set the bit until nTimeout // Check that ComputeBlockVersion will set the bit until nTimeout
nTime += 600; nTime += 600;
int blocksToMine = 4032; // test blocks for up to 2 time periods int blocksToMine = 16128; // test blocks for up to 2 time periods
int nHeight = 6048; int nHeight = 24192;
// These blocks are all before nTimeout is reached. // These blocks are all before nTimeout is reached.
while (nTime < nTimeout && blocksToMine > 0) { while (nTime < nTimeout && blocksToMine > 0) {
lastBlock = firstChain.Mine(nHeight+1, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(nHeight+1, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
@ -313,7 +313,7 @@ BOOST_AUTO_TEST_CASE(versionbits_computeblockversion)
nTime = nTimeout; nTime = nTimeout;
// FAILED is only triggered at the end of a period, so CBV should be setting // FAILED is only triggered at the end of a period, so CBV should be setting
// the bit until the period transition. // the bit until the period transition.
for (int i=0; i<2015; i++) { for (int i=0; i<8063; i++) {
lastBlock = firstChain.Mine(nHeight+1, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = firstChain.Mine(nHeight+1, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0); BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0);
nHeight += 1; nHeight += 1;
@ -329,20 +329,20 @@ BOOST_AUTO_TEST_CASE(versionbits_computeblockversion)
// Mine one period worth of blocks, and check that the bit will be on for the // Mine one period worth of blocks, and check that the bit will be on for the
// next period. // next period.
lastBlock = secondChain.Mine(2016, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = secondChain.Mine(8064, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0); BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0);
// Mine another period worth of blocks, signaling the new bit. // Mine another period worth of blocks, signaling the new bit.
lastBlock = secondChain.Mine(4032, nTime, VERSIONBITS_TOP_BITS | (1<<bit)).Tip(); lastBlock = secondChain.Mine(16128, nTime, VERSIONBITS_TOP_BITS | (1<<bit)).Tip();
// After one period of setting the bit on each block, it should have locked in. // After one period of setting the bit on each block, it should have locked in.
// We keep setting the bit for one more period though, until activation. // We keep setting the bit for one more period though, until activation.
BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0); BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0);
// Now check that we keep mining the block until the end of this period, and // Now check that we keep mining the block until the end of this period, and
// then stop at the beginning of the next period. // then stop at the beginning of the next period.
lastBlock = secondChain.Mine(6047, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = secondChain.Mine(24191, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0); BOOST_CHECK((ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit)) != 0);
lastBlock = secondChain.Mine(6048, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip(); lastBlock = secondChain.Mine(24192, nTime, VERSIONBITS_LAST_OLD_BLOCK_VERSION).Tip();
BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0); BOOST_CHECK_EQUAL(ComputeBlockVersion(lastBlock, mainnetParams) & (1<<bit), 0);
// Finally, verify that after a soft fork has activated, CBV no longer uses // Finally, verify that after a soft fork has activated, CBV no longer uses

2
test/functional/feature_block.py

@ -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'))

4
test/functional/p2p_compactblocks.py

@ -14,6 +14,8 @@ from test_framework.util import *
from test_framework.blocktools import create_block, create_coinbase, add_witness_commitment from test_framework.blocktools import create_block, create_coinbase, add_witness_commitment
from test_framework.script import CScript, OP_TRUE from test_framework.script import CScript, OP_TRUE
VB_TOP_BITS = 0x20000000
# TestNode: A peer we use to send messages to bitcoind, and store responses. # TestNode: A peer we use to send messages to bitcoind, and store responses.
class TestNode(P2PInterface): class TestNode(P2PInterface):
def __init__(self): def __init__(self):
@ -103,7 +105,7 @@ class CompactBlocksTest(BitcoinTestFramework):
tip = node.getbestblockhash() tip = node.getbestblockhash()
mtp = node.getblockheader(tip)['mediantime'] mtp = node.getblockheader(tip)['mediantime']
block = create_block(int(tip, 16), create_coinbase(height + 1), mtp + 1) block = create_block(int(tip, 16), create_coinbase(height + 1), mtp + 1)
block.nVersion = 4 block.nVersion = VB_TOP_BITS
if segwit: if segwit:
add_witness_commitment(block) add_witness_commitment(block)
block.solve() block.solve()

2
test/functional/rpc_fundrawtransaction.py

@ -192,7 +192,7 @@ class RawTransactionsTest(BitcoinTestFramework):
dec_tx = self.nodes[2].decoderawtransaction(rawtx) dec_tx = self.nodes[2].decoderawtransaction(rawtx)
assert_equal(utx['txid'], dec_tx['vin'][0]['txid']) assert_equal(utx['txid'], dec_tx['vin'][0]['txid'])
assert_raises_rpc_error(-5, "changeAddress must be a valid bitcoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'}) assert_raises_rpc_error(-5, "changeAddress must be a valid litecoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'})
############################################################ ############################################################
# test a fundrawtransaction with a provided change address # # test a fundrawtransaction with a provided change address #

4
test/functional/rpc_users.py

@ -22,10 +22,10 @@ class HTTPBasicsTest (BitcoinTestFramework):
rpcauth2 = "rpcauth=rt2:f8607b1a88861fac29dfccf9b52ff9f$ff36a0c23c8c62b4846112e50fa888416e94c17bfd4c42f88fd8f55ec6a3137e" rpcauth2 = "rpcauth=rt2:f8607b1a88861fac29dfccf9b52ff9f$ff36a0c23c8c62b4846112e50fa888416e94c17bfd4c42f88fd8f55ec6a3137e"
rpcuser = "rpcuser=rpcuser💻" rpcuser = "rpcuser=rpcuser💻"
rpcpassword = "rpcpassword=rpcpassword🔑" rpcpassword = "rpcpassword=rpcpassword🔑"
with open(os.path.join(self.options.tmpdir+"/node0", "bitcoin.conf"), 'a', encoding='utf8') as f: with open(os.path.join(self.options.tmpdir+"/node0", "litecoin.conf"), 'a', encoding='utf8') as f:
f.write(rpcauth+"\n") f.write(rpcauth+"\n")
f.write(rpcauth2+"\n") f.write(rpcauth2+"\n")
with open(os.path.join(self.options.tmpdir+"/node1", "bitcoin.conf"), 'a', encoding='utf8') as f: with open(os.path.join(self.options.tmpdir+"/node1", "litecoin.conf"), 'a', encoding='utf8') as f:
f.write(rpcuser+"\n") f.write(rpcuser+"\n")
f.write(rpcpassword+"\n") f.write(rpcpassword+"\n")

6
test/functional/test_framework/util.py

@ -287,7 +287,7 @@ def initialize_datadir(dirname, n):
datadir = os.path.join(dirname, "node" + str(n)) datadir = os.path.join(dirname, "node" + str(n))
if not os.path.isdir(datadir): if not os.path.isdir(datadir):
os.makedirs(datadir) os.makedirs(datadir)
with open(os.path.join(datadir, "bitcoin.conf"), 'w', encoding='utf8') as f: with open(os.path.join(datadir, "litecoin.conf"), 'w', encoding='utf8') as f:
f.write("regtest=1\n") f.write("regtest=1\n")
f.write("port=" + str(p2p_port(n)) + "\n") f.write("port=" + str(p2p_port(n)) + "\n")
f.write("rpcport=" + str(rpc_port(n)) + "\n") f.write("rpcport=" + str(rpc_port(n)) + "\n")
@ -300,8 +300,8 @@ def get_datadir_path(dirname, n):
def get_auth_cookie(datadir): def get_auth_cookie(datadir):
user = None user = None
password = None password = None
if os.path.isfile(os.path.join(datadir, "bitcoin.conf")): if os.path.isfile(os.path.join(datadir, "litecoin.conf")):
with open(os.path.join(datadir, "bitcoin.conf"), 'r', encoding='utf8') as f: with open(os.path.join(datadir, "litecoin.conf"), 'r', encoding='utf8') as f:
for line in f: for line in f:
if line.startswith("rpcuser="): if line.startswith("rpcuser="):
assert user is None # Ensure that there is only one rpcuser line assert user is None # Ensure that there is only one rpcuser line

196
test/util/data/bitcoin-util-test.json

@ -1,82 +1,82 @@
[ [
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "nversion=1"], "args": ["-create", "nversion=1"],
"output_cmp": "blanktxv1.hex", "output_cmp": "blanktxv1.hex",
"description": "Creates a blank v1 transaction" "description": "Creates a blank v1 transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json","-create", "nversion=1"], "args": ["-json","-create", "nversion=1"],
"output_cmp": "blanktxv1.json", "output_cmp": "blanktxv1.json",
"description": "Creates a blank v1 transaction (output in json)" "description": "Creates a blank v1 transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-"], "args": ["-"],
"input": "blanktxv2.hex", "input": "blanktxv2.hex",
"output_cmp": "blanktxv2.hex", "output_cmp": "blanktxv2.hex",
"description": "Creates a blank transaction when nothing is piped into bitcoin-tx" "description": "Creates a blank transaction when nothing is piped into litecoin-tx"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json","-create"], "args": ["-json","-create"],
"output_cmp": "blanktxv2.json", "output_cmp": "blanktxv2.json",
"description": "Creates a blank transaction (output in json)" "description": "Creates a blank transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json","-"], "args": ["-json","-"],
"input": "blanktxv2.hex", "input": "blanktxv2.hex",
"output_cmp": "blanktxv2.json", "output_cmp": "blanktxv2.json",
"description": "Creates a blank transaction when nothing is piped into bitcoin-tx (output in json)" "description": "Creates a blank transaction when nothing is piped into litecoin-tx (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-", "delin=1"], "args": ["-", "delin=1"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-delin1-out.hex", "output_cmp": "tt-delin1-out.hex",
"description": "Deletes a single input from a transaction" "description": "Deletes a single input from a transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-", "delin=1"], "args": ["-json", "-", "delin=1"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-delin1-out.json", "output_cmp": "tt-delin1-out.json",
"description": "Deletes a single input from a transaction (output in json)" "description": "Deletes a single input from a transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-", "delin=31"], "args": ["-", "delin=31"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"return_code": 1, "return_code": 1,
"error_txt": "error: Invalid TX input index '31'", "error_txt": "error: Invalid TX input index '31'",
"description": "Attempts to delete an input with a bad index from a transaction. Expected to fail." "description": "Attempts to delete an input with a bad index from a transaction. Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-", "delout=1"], "args": ["-", "delout=1"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-delout1-out.hex", "output_cmp": "tt-delout1-out.hex",
"description": "Deletes a single output from a transaction" "description": "Deletes a single output from a transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-", "delout=1"], "args": ["-json", "-", "delout=1"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-delout1-out.json", "output_cmp": "tt-delout1-out.json",
"description": "Deletes a single output from a transaction (output in json)" "description": "Deletes a single output from a transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-", "delout=2"], "args": ["-", "delout=2"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"return_code": 1, "return_code": 1,
"error_txt": "error: Invalid TX output index '2'", "error_txt": "error: Invalid TX output index '2'",
"description": "Attempts to delete an output with a bad index from a transaction. Expected to fail." "description": "Attempts to delete an output with a bad index from a transaction. Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-", "locktime=317000"], "args": ["-", "locktime=317000"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-locktime317000-out.hex", "output_cmp": "tt-locktime317000-out.hex",
"description": "Adds an nlocktime to a transaction" "description": "Adds an nlocktime to a transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-", "locktime=317000"], "args": ["-json", "-", "locktime=317000"],
"input": "tx394b54bb.hex", "input": "tx394b54bb.hex",
"output_cmp": "tt-locktime317000-out.json", "output_cmp": "tt-locktime317000-out.json",
"description": "Adds an nlocktime to a transaction (output in json)" "description": "Adds an nlocktime to a transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"outaddr=1"], "outaddr=1"],
@ -84,7 +84,7 @@
"error_txt": "error: TX output missing or too many separators", "error_txt": "error: TX output missing or too many separators",
"description": "Malformed outaddr argument (no address specified). Expected to fail." "description": "Malformed outaddr argument (no address specified). Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"outaddr=1:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o:garbage"], "outaddr=1:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o:garbage"],
@ -92,7 +92,7 @@
"error_txt": "error: TX output missing or too many separators", "error_txt": "error: TX output missing or too many separators",
"description": "Malformed outaddr argument (too many separators). Expected to fail." "description": "Malformed outaddr argument (too many separators). Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"outpubkey=0"], "outpubkey=0"],
@ -100,7 +100,7 @@
"error_txt": "error: TX output missing or too many separators", "error_txt": "error: TX output missing or too many separators",
"description": "Malformed outpubkey argument (no pubkey specified). Expected to fail." "description": "Malformed outpubkey argument (no pubkey specified). Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"], "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"],
@ -108,160 +108,160 @@
"error_txt": "error: TX output missing or too many separators", "error_txt": "error: TX output missing or too many separators",
"description": "Malformed outpubkey argument (too many separators). Expected to fail." "description": "Malformed outpubkey argument (too many separators). Expected to fail."
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=5ee62e3f7757f5fd995b2fa1bdb5b744298146098d5de92959ec4b52dc77191e:1",
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18", "in=3cd215c1c6b7ae33bc6266f268fd212b83860e13902b454502ce6d54448e398a:25",
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1", "in=0f941395005b80a61726baecebb11d7caa184a1a58246daff7dffca793ab07b8:12",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=12.52000000:LT7W6xCWK9tZVyyg3iifzHp8vUgMKke4sY",
"outaddr=4:1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46"], "outaddr=0.01000487:LMnn592npBwmeLtTfKc9RoZUqAe2rDgvKX"],
"output_cmp": "txcreate1.hex", "output_cmp": "txcreate1.hex",
"description": "Creates a new transaction with three inputs and two outputs" "description": "Creates a new transaction with three inputs and two outputs"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=5ee62e3f7757f5fd995b2fa1bdb5b744298146098d5de92959ec4b52dc77191e:1",
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18", "in=3cd215c1c6b7ae33bc6266f268fd212b83860e13902b454502ce6d54448e398a:25",
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1", "in=0f941395005b80a61726baecebb11d7caa184a1a58246daff7dffca793ab07b8:12",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=12.52000000:LMgENNXzzuPxp7vfMjDrCU44bsmrEMgqvc",
"outaddr=4:1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46"], "outaddr=0.01000487:LV1ByjbJNFTHyFQqwqwdJXKJznYDzXzg4B"],
"output_cmp": "txcreate1.json", "output_cmp": "txcreate1.json",
"description": "Creates a new transaction with three inputs and two outputs (output in json)" "description": "Creates a new transaction with three inputs and two outputs (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outscript=0:"], "args": ["-create", "outscript=0:"],
"output_cmp": "txcreate2.hex", "output_cmp": "txcreate2.hex",
"description": "Creates a new transaction with a single empty output script" "description": "Creates a new transaction with a single empty output script"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outscript=0:"], "args": ["-json", "-create", "outscript=0:"],
"output_cmp": "txcreate2.json", "output_cmp": "txcreate2.json",
"description": "Creates a new transaction with a single empty output script (output in json)" "description": "Creates a new transaction with a single empty output script (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["02000000000100000000000000000000000000"], "args": ["02000000000100000000000000000000000000"],
"output_cmp": "txcreate2.hex", "output_cmp": "txcreate2.hex",
"description": "Parses a transation with no inputs and a single output script" "description": "Parses a transation with no inputs and a single output script"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "02000000000100000000000000000000000000"], "args": ["-json", "02000000000100000000000000000000000000"],
"output_cmp": "txcreate2.json", "output_cmp": "txcreate2.json",
"description": "Parses a transation with no inputs and a single output script (output in json)" "description": "Parses a transation with no inputs and a single output script (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outscript=0:OP_DROP", "nversion=1"], "args": ["-create", "outscript=0:OP_DROP", "nversion=1"],
"output_cmp": "txcreatescript1.hex", "output_cmp": "txcreatescript1.hex",
"description": "Create a new transaction with a single output script (OP_DROP)" "description": "Create a new transaction with a single output script (OP_DROP)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outscript=0:OP_DROP", "nversion=1"], "args": ["-json", "-create", "outscript=0:OP_DROP", "nversion=1"],
"output_cmp": "txcreatescript1.json", "output_cmp": "txcreatescript1.json",
"description": "Create a new transaction with a single output script (OP_DROP) (output as json)" "description": "Create a new transaction with a single output script (OP_DROP) (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outscript=0:OP_DROP:S", "nversion=1"], "args": ["-create", "outscript=0:OP_DROP:S", "nversion=1"],
"output_cmp": "txcreatescript2.hex", "output_cmp": "txcreatescript2.hex",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH" "description": "Create a new transaction with a single output script (OP_DROP) in a P2SH"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outscript=0:OP_DROP:S", "nversion=1"], "args": ["-json", "-create", "outscript=0:OP_DROP:S", "nversion=1"],
"output_cmp": "txcreatescript2.json", "output_cmp": "txcreatescript2.json",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH (output as json)" "description": "Create a new transaction with a single output script (OP_DROP) in a P2SH (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outscript=0:OP_DROP:W", "nversion=1"], "args": ["-create", "outscript=0:OP_DROP:W", "nversion=1"],
"output_cmp": "txcreatescript3.hex", "output_cmp": "txcreatescript3.hex",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH" "description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outscript=0:OP_DROP:W", "nversion=1"], "args": ["-json", "-create", "outscript=0:OP_DROP:W", "nversion=1"],
"output_cmp": "txcreatescript3.json", "output_cmp": "txcreatescript3.json",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH (output as json)" "description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outscript=0:OP_DROP:WS", "nversion=1"], "args": ["-create", "outscript=0:OP_DROP:WS", "nversion=1"],
"output_cmp": "txcreatescript4.hex", "output_cmp": "txcreatescript4.hex",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH, wrapped in a P2SH" "description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH, wrapped in a P2SH"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outscript=0:OP_DROP:WS", "nversion=1"], "args": ["-json", "-create", "outscript=0:OP_DROP:WS", "nversion=1"],
"output_cmp": "txcreatescript4.json", "output_cmp": "txcreatescript4.json",
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH, wrapped in a P2SH (output as json)" "description": "Create a new transaction with a single output script (OP_DROP) in a P2SH, wrapped in a P2SH (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", "nversion=1", ["-create", "nversion=1",
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0", "in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=privatekeys:[\"T3Eyvg7Me8fuajt2RJvQaRokRabBweiyBWVJiQG8P1bwDUEXPhqv\"]",
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "set=prevtxs:[{\"txid\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\",\"vout\":0,\"scriptPubKey\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\"}]",
"sign=ALL", "sign=ALL",
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], "outaddr=0.001:LXC44cQhuRufFtaDhDYv4q8nxQJBkUAsXp"],
"output_cmp": "txcreatesignv1.hex", "output_cmp": "txcreatesignv1.hex",
"description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction" "description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"-create", "nversion=1", "-create", "nversion=1",
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0", "in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=privatekeys:[\"T3Eyvg7Me8fuajt2RJvQaRokRabBweiyBWVJiQG8P1bwDUEXPhqv\"]",
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "set=prevtxs:[{\"txid\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\",\"vout\":0,\"scriptPubKey\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\"}]",
"sign=ALL", "sign=ALL",
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], "outaddr=0.001:LXC44cQhuRufFtaDhDYv4q8nxQJBkUAsXp"],
"output_cmp": "txcreatesignv1.json", "output_cmp": "txcreatesignv1.json",
"description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction (output in json)" "description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0", "in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=privatekeys:[\"T3Eyvg7Me8fuajt2RJvQaRokRabBweiyBWVJiQG8P1bwDUEXPhqv\"]",
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "set=prevtxs:[{\"txid\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\",\"vout\":0,\"scriptPubKey\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\"}]",
"sign=ALL", "sign=ALL",
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], "outaddr=0.001:LXC44cQhuRufFtaDhDYv4q8nxQJBkUAsXp"],
"output_cmp": "txcreatesignv2.hex", "output_cmp": "txcreatesignv2.hex",
"description": "Creates a new transaction with a single input and a single output, and then signs the transaction" "description": "Creates a new transaction with a single input and a single output, and then signs the transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"], ["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"],
"output_cmp": "txcreateoutpubkey1.hex", "output_cmp": "txcreateoutpubkey1.hex",
"description": "Creates a new transaction with a single pay-to-pubkey output" "description": "Creates a new transaction with a single pay-to-pubkey output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"], ["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"],
"output_cmp": "txcreateoutpubkey1.json", "output_cmp": "txcreateoutpubkey1.json",
"description": "Creates a new transaction with a single pay-to-pubkey output (output as json)" "description": "Creates a new transaction with a single pay-to-pubkey output (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"], ["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"],
"output_cmp": "txcreateoutpubkey2.hex", "output_cmp": "txcreateoutpubkey2.hex",
"description": "Creates a new transaction with a single pay-to-witness-pubkey output" "description": "Creates a new transaction with a single pay-to-witness-pubkey output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"], ["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"],
"output_cmp": "txcreateoutpubkey2.json", "output_cmp": "txcreateoutpubkey2.json",
"description": "Creates a new transaction with a single pay-to-witness-pubkey output (output as json)" "description": "Creates a new transaction with a single pay-to-witness-pubkey output (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"], ["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"],
"output_cmp": "txcreateoutpubkey3.hex", "output_cmp": "txcreateoutpubkey3.hex",
"description": "Creates a new transaction with a single pay-to-witness-pubkey, wrapped in P2SH output" "description": "Creates a new transaction with a single pay-to-witness-pubkey, wrapped in P2SH output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"], ["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"],
"output_cmp": "txcreateoutpubkey3.json", "output_cmp": "txcreateoutpubkey3.json",
"description": "Creates a new transaction with a single pay-to-pub-key output, wrapped in P2SH (output as json)" "description": "Creates a new transaction with a single pay-to-pub-key output, wrapped in P2SH (output as json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", "-create", "outpubkey=0:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS", "nversion=1"], ["-json", "-create", "outpubkey=0:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS", "nversion=1"],
"return_code": 1, "return_code": 1,
@ -271,127 +271,127 @@
{ "exec": "./bitcoin-tx", { "exec": "./bitcoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outdata=4:badhexdata"], "outdata=4:badhexdata"],
"return_code": 1, "return_code": 1,
"error_txt": "error: invalid TX output data", "error_txt": "error: invalid TX output data",
"description": "Attempts to create a new transaction with one input and an output with malformed hex data. Expected to fail" "description": "Attempts to create a new transaction with one input and an output with malformed hex data. Expected to fail"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outdata=badhexdata"], "outdata=badhexdata"],
"return_code": 1, "return_code": 1,
"error_txt": "error: invalid TX output data", "error_txt": "error: invalid TX output data",
"description": "Attempts to create a new transaction with one input and an output with no value and malformed hex data. Expected to fail" "description": "Attempts to create a new transaction with one input and an output with no value and malformed hex data. Expected to fail"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=0.002:LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg",
"outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
"output_cmp": "txcreatedata1.hex", "output_cmp": "txcreatedata1.hex",
"description": "Creates a new transaction with one input, one address output and one data output" "description": "Creates a new transaction with one input, one address output and one data output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"-create", "nversion=1", "-create", "nversion=1",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=0.002:LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg",
"outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
"output_cmp": "txcreatedata1.json", "output_cmp": "txcreatedata1.json",
"description": "Creates a new v1 transaction with one input, one address output and one data output (output in json)" "description": "Creates a new v1 transaction with one input, one address output and one data output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=0.002:LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg",
"outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
"output_cmp": "txcreatedata2.hex", "output_cmp": "txcreatedata2.hex",
"description": "Creates a new transaction with one input, one address output and one data (zero value) output" "description": "Creates a new transaction with one input, one address output and one data (zero value) output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", "outaddr=0.002:LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg",
"outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
"output_cmp": "txcreatedata2.json", "output_cmp": "txcreatedata2.json",
"description": "Creates a new transaction with one input, one address output and one data (zero value) output (output in json)" "description": "Creates a new transaction with one input, one address output and one data (zero value) output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-create", ["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:4294967293",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o"], "outaddr=0.002:LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg"],
"output_cmp": "txcreatedata_seq0.hex", "output_cmp": "txcreatedata_seq0.hex",
"description": "Creates a new transaction with one input with sequence number and one address output" "description": "Creates a new transaction with one input with sequence number and one address output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:4294967293",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o"], "outaddr=0.002:LhzRRruapBx5gEtAf9RuVEePrzcG1wxRYa"],
"output_cmp": "txcreatedata_seq0.json", "output_cmp": "txcreatedata_seq0.json",
"description": "Creates a new transaction with one input with sequence number and one address output (output in json)" "description": "Creates a new transaction with one input with sequence number and one address output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000", ["01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:1"], "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:1"],
"output_cmp": "txcreatedata_seq1.hex", "output_cmp": "txcreatedata_seq1.hex",
"description": "Adds a new input with sequence number to a transaction" "description": "Adds a new input with sequence number to a transaction"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": "args":
["-json", ["-json",
"01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000", "01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:1"], "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:1"],
"output_cmp": "txcreatedata_seq1.json", "output_cmp": "txcreatedata_seq1.json",
"description": "Adds a new input with sequence number to a transaction (output in json)" "description": "Adds a new input with sequence number to a transaction (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"], "args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"],
"output_cmp": "txcreatemultisig1.hex", "output_cmp": "txcreatemultisig1.hex",
"description": "Creates a new transaction with a single 2-of-3 multisig output" "description": "Creates a new transaction with a single 2-of-3 multisig output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"],
"output_cmp": "txcreatemultisig1.json", "output_cmp": "txcreatemultisig1.json",
"description": "Creates a new transaction with a single 2-of-3 multisig output (output in json)" "description": "Creates a new transaction with a single 2-of-3 multisig output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"], "args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"],
"output_cmp": "txcreatemultisig2.hex", "output_cmp": "txcreatemultisig2.hex",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"],
"output_cmp": "txcreatemultisig2.json", "output_cmp": "txcreatemultisig2.json",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output (output in json)" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"], "args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"],
"output_cmp": "txcreatemultisig3.hex", "output_cmp": "txcreatemultisig3.hex",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"],
"output_cmp": "txcreatemultisig3.json", "output_cmp": "txcreatemultisig3.json",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output (output in json)" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output (output in json)"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"], "args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"],
"output_cmp": "txcreatemultisig4.hex", "output_cmp": "txcreatemultisig4.hex",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH"
}, },
{ "exec": "./bitcoin-tx", { "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"],
"output_cmp": "txcreatemultisig4.json", "output_cmp": "txcreatemultisig4.json",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH (output in json)" "description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH (output in json)"

4
test/util/data/tt-delin1-out.json

@ -197,7 +197,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" "LYLPXtUPKrXH3JFW5ZV1o4kEzBBdkaYVpD"
] ]
} }
}, },
@ -210,7 +210,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1AtWkdmfmYkErU16d3KYykJUbEp9MAj9Sb" "LV7U1r5VrCzJ7GhFoBJrFmNEoTBRUqZvNB"
] ]
} }
} }

2
test/util/data/tt-delout1-out.json

@ -206,7 +206,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" "LYLPXtUPKrXH3JFW5ZV1o4kEzBBdkaYVpD"
] ]
} }
} }

4
test/util/data/tt-locktime317000-out.json

@ -206,7 +206,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" "LYLPXtUPKrXH3JFW5ZV1o4kEzBBdkaYVpD"
] ]
} }
}, },
@ -219,7 +219,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1AtWkdmfmYkErU16d3KYykJUbEp9MAj9Sb" "LV7U1r5VrCzJ7GhFoBJrFmNEoTBRUqZvNB"
] ]
} }
} }

2
test/util/data/txcreate1.hex

@ -1 +1 @@
02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fffffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0084d717000000001976a914f2d4db28cad6502226ee484ae24505c2885cb12d88ac00000000 02000000031e1977dc524bec5929e95d8d0946812944b7b5bda12f5b99fdf557773f2ee65e0100000000ffffffff8a398e44546dce0245452b90130e86832b21fd68f26662bc33aeb7c6c115d23c1900000000ffffffffb807ab93a7fcdff7af6d24581a4a18aa7c1db1ebecba2617a6805b009513940f0c00000000ffffffff020001a04a000000001976a9145688ac6b45bcc02f738e2970d2381d068d68eea788ac27440f00000000001976a9141c2578aa5e5c10ba3b6c3b71a78bff48077d8ba188ac00000000

34
test/util/data/txcreate1.json

@ -1,14 +1,14 @@
{ {
"txid": "fe7d174f42dce0cffa7a527e9bc8368956057619ec817648f6138b98f2533e8f", "txid": "1c50c1770374d7de2f81a87463a5225bb620d25fd467536223a5b715a47c9e32",
"hash": "fe7d174f42dce0cffa7a527e9bc8368956057619ec817648f6138b98f2533e8f", "hash": "1c50c1770374d7de2f81a87463a5225bb620d25fd467536223a5b715a47c9e32",
"version": 2, "version": 2,
"size": 201, "size": 201,
"vsize": 201, "vsize": 201,
"locktime": 0, "locktime": 0,
"vin": [ "vin": [
{ {
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f", "txid": "5ee62e3f7757f5fd995b2fa1bdb5b744298146098d5de92959ec4b52dc77191e",
"vout": 0, "vout": 1,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
"hex": "" "hex": ""
@ -16,8 +16,8 @@
"sequence": 4294967295 "sequence": 4294967295
}, },
{ {
"txid": "bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c", "txid": "3cd215c1c6b7ae33bc6266f268fd212b83860e13902b454502ce6d54448e398a",
"vout": 18, "vout": 25,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
"hex": "" "hex": ""
@ -25,8 +25,8 @@
"sequence": 4294967295 "sequence": 4294967295
}, },
{ {
"txid": "22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc", "txid": "0f941395005b80a61726baecebb11d7caa184a1a58246daff7dffca793ab07b8",
"vout": 1, "vout": 12,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
"hex": "" "hex": ""
@ -36,31 +36,31 @@
], ],
"vout": [ "vout": [
{ {
"value": 0.18000000, "value": 12.52000000,
"n": 0, "n": 0,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 1fc11f39be1729bf973a7ab6a615ca4729d64574 OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 1ae882e788091732da6910595314447c9e38bd8d OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac", "hex": "76a9141ae882e788091732da6910595314447c9e38bd8d88ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" "LMgENNXzzuPxp7vfMjDrCU44bsmrEMgqvc"
] ]
} }
}, },
{ {
"value": 4.00000000, "value": 0.01000487,
"n": 1, "n": 1,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 f2d4db28cad6502226ee484ae24505c2885cb12d OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 6b474cbf0f6004329b630bdd4798f2c23d1751b6 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914f2d4db28cad6502226ee484ae24505c2885cb12d88ac", "hex": "76a9146b474cbf0f6004329b630bdd4798f2c23d1751b688ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46" "LV1ByjbJNFTHyFQqwqwdJXKJznYDzXzg4B"
] ]
} }
} }
], ],
"hex": "02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fffffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0084d717000000001976a914f2d4db28cad6502226ee484ae24505c2885cb12d88ac00000000" "hex": "02000000031e1977dc524bec5929e95d8d0946812944b7b5bda12f5b99fdf557773f2ee65e0100000000ffffffff8a398e44546dce0245452b90130e86832b21fd68f26662bc33aeb7c6c115d23c1900000000ffffffffb807ab93a7fcdff7af6d24581a4a18aa7c1db1ebecba2617a6805b009513940f0c00000000ffffffff020001a04a000000001976a9141ae882e788091732da6910595314447c9e38bd8d88ac27440f00000000001976a9146b474cbf0f6004329b630bdd4798f2c23d1751b688ac00000000"
} }

2
test/util/data/txcreatedata1.hex

@ -1 +1 @@
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000 0200000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000ffffffff02400d0300000000001976a914feda50542e61108cf53b93dbffa0959f91ccb32588ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000

16
test/util/data/txcreatedata1.json

@ -1,13 +1,13 @@
{ {
"txid": "07894b4d12fe7853dd911402db1620920d261b9627c447f931417d330c25f06e", "txid": "111faf6fcbb3c31500966d87044cb34d47e698cae2ba85640c673fd1ad3d68b9",
"hash": "07894b4d12fe7853dd911402db1620920d261b9627c447f931417d330c25f06e", "hash": "111faf6fcbb3c31500966d87044cb34d47e698cae2ba85640c673fd1ad3d68b9",
"version": 1, "version": 1,
"size": 176, "size": 176,
"vsize": 176, "vsize": 176,
"locktime": 0, "locktime": 0,
"vin": [ "vin": [
{ {
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f", "txid": "69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef",
"vout": 0, "vout": 0,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
@ -18,15 +18,15 @@
], ],
"vout": [ "vout": [
{ {
"value": 0.18000000, "value": 0.00200000,
"n": 0, "n": 0,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 1fc11f39be1729bf973a7ab6a615ca4729d64574 OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 feda50542e61108cf53b93dbffa0959f91ccb325 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac", "hex": "76a914feda50542e61108cf53b93dbffa0959f91ccb32588ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" "LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg"
] ]
} }
}, },
@ -40,5 +40,5 @@
} }
} }
], ],
"hex": "01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000" "hex": "0100000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000ffffffff02400d0300000000001976a914feda50542e61108cf53b93dbffa0959f91ccb32588ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000"
} }

2
test/util/data/txcreatedata2.hex

@ -1 +1 @@
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000 0200000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000ffffffff02400d0300000000001976a914feda50542e61108cf53b93dbffa0959f91ccb32588ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000

16
test/util/data/txcreatedata2.json

@ -1,13 +1,13 @@
{ {
"txid": "c14b007fa3a6c1e7765919c1d14c1cfc2b8642c3a5d3be4b1fa8c4ccfec98bb0", "txid": "17e220f41ed113fbca2b5ae97382018b54819990cb84d2004fe9099e64d2aa77",
"hash": "c14b007fa3a6c1e7765919c1d14c1cfc2b8642c3a5d3be4b1fa8c4ccfec98bb0", "hash": "17e220f41ed113fbca2b5ae97382018b54819990cb84d2004fe9099e64d2aa77",
"version": 2, "version": 2,
"size": 176, "size": 176,
"vsize": 176, "vsize": 176,
"locktime": 0, "locktime": 0,
"vin": [ "vin": [
{ {
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f", "txid": "69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef",
"vout": 0, "vout": 0,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
@ -18,15 +18,15 @@
], ],
"vout": [ "vout": [
{ {
"value": 0.18000000, "value": 0.00200000,
"n": 0, "n": 0,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 1fc11f39be1729bf973a7ab6a615ca4729d64574 OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 feda50542e61108cf53b93dbffa0959f91ccb325 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac", "hex": "76a914feda50542e61108cf53b93dbffa0959f91ccb32588ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" "LiTVReQ6N8rWc2pNg2XMwCWq7A9P15teWg"
] ]
} }
}, },
@ -40,5 +40,5 @@
} }
} }
], ],
"hex": "02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000" "hex": "0200000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000ffffffff02400d0300000000001976a914feda50542e61108cf53b93dbffa0959f91ccb32588ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000"
} }

2
test/util/data/txcreatedata_seq0.hex

@ -1 +1 @@
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000 0200000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000fdffffff01400d0300000000001976a914feda50542e61108cf53b93dbffa0959f91ccb32588ac00000000

16
test/util/data/txcreatedata_seq0.json

@ -1,13 +1,13 @@
{ {
"txid": "8df6ed527472542dd5e137c242a7c5a9f337ac34f7b257ae4af886aeaebb51b0", "txid": "6d91ec40ccf2f0e1f4aad31d7a2eaeff34be2f78a743ce938eb285efbcafc3cd",
"hash": "8df6ed527472542dd5e137c242a7c5a9f337ac34f7b257ae4af886aeaebb51b0", "hash": "6d91ec40ccf2f0e1f4aad31d7a2eaeff34be2f78a743ce938eb285efbcafc3cd",
"version": 2, "version": 2,
"size": 85, "size": 85,
"vsize": 85, "vsize": 85,
"locktime": 0, "locktime": 0,
"vin": [ "vin": [
{ {
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f", "txid": "69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef",
"vout": 0, "vout": 0,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
@ -18,18 +18,18 @@
], ],
"vout": [ "vout": [
{ {
"value": 0.18000000, "value": 0.00200000,
"n": 0, "n": 0,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 1fc11f39be1729bf973a7ab6a615ca4729d64574 OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 f9bbbf34117bfd1384c0708a13509f5599bb49e7 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac", "hex": "76a914f9bbbf34117bfd1384c0708a13509f5599bb49e788ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" "LhzRRruapBx5gEtAf9RuVEePrzcG1wxRYa"
] ]
} }
} }
], ],
"hex": "02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000" "hex": "0200000001efc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000fdffffff01400d0300000000001976a914f9bbbf34117bfd1384c0708a13509f5599bb49e788ac00000000"
} }

2
test/util/data/txcreatedata_seq1.hex

@ -1 +1 @@
01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff1f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000 01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffffefc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000

10
test/util/data/txcreatedata_seq1.json

@ -1,6 +1,6 @@
{ {
"txid": "c4dea671b0d7b48f8ab10bc46650e8329d3c5766931f548f513847a19f5ba75b", "txid": "e53e05d5591c15d8bea55d5649d5944bc9a75c2f61b42fa52cef36910d2a7653",
"hash": "c4dea671b0d7b48f8ab10bc46650e8329d3c5766931f548f513847a19f5ba75b", "hash": "e53e05d5591c15d8bea55d5649d5944bc9a75c2f61b42fa52cef36910d2a7653",
"version": 1, "version": 1,
"size": 126, "size": 126,
"vsize": 126, "vsize": 126,
@ -16,7 +16,7 @@
"sequence": 4294967293 "sequence": 4294967293
}, },
{ {
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f", "txid": "69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef",
"vout": 0, "vout": 0,
"scriptSig": { "scriptSig": {
"asm": "", "asm": "",
@ -35,10 +35,10 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" "LN7rZWXF75vE7aNq6EHjtThcro5GpGmjYy"
] ]
} }
} }
], ],
"hex": "01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff1f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000" "hex": "01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffffefc59c584fb0be1066baf08b93f8baf0d9b9beaafcdd318a59cda6302dc1e9690000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000"
} }

6
test/util/data/txcreatemultisig1.json

@ -17,9 +17,9 @@
"reqSigs": 2, "reqSigs": 2,
"type": "multisig", "type": "multisig",
"addresses": [ "addresses": [
"1FoG2386FG2tAJS9acMuiDsKy67aGg9MKz", "La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A",
"1FXtz9KU8JNmQDyHdiEm5HDiALuP3zdHvV", "LZkrFMdJCxcpf2fSorE4MJHUNZGfAnD7gf",
"14LuavcBbXZYJ6Tsz3cAUQj9SuQoL2xCQX" "LNZrr8v1gBobYuA3ABbTkRnuf7n5RRo5Cz"
] ]
} }
} }

2
test/util/data/txcreatemultisig2.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "scripthash", "type": "scripthash",
"addresses": [ "addresses": [
"34HNh57oBCRKkxNyjTuWAJkTbuGh6jg2Ms" "MAVWzxXm8KGkZTesqLtqywzrvbs96FEoKy"
] ]
} }
} }

2
test/util/data/txcreatemultisig4.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "scripthash", "type": "scripthash",
"addresses": [ "addresses": [
"3BoFUz1StqcNcgUTZE5cC1eFhuYFzj3fGH" "MJ1PnsRQqxToRBkMf74x1etf2c8i2imj3Y"
] ]
} }
} }

2
test/util/data/txcreateoutpubkey1.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "pubkey", "type": "pubkey",
"addresses": [ "addresses": [
"1FoG2386FG2tAJS9acMuiDsKy67aGg9MKz" "La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A"
] ]
} }
} }

2
test/util/data/txcreateoutpubkey3.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "scripthash", "type": "scripthash",
"addresses": [ "addresses": [
"3GnzN8FqgvYGYdhj8NW6UNxxVv3Uj1ApQn" "MP18g1foe3PhM8ydEFVSJ2DMpcdvhLebXR"
] ]
} }
} }

2
test/util/data/txcreatescript2.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "scripthash", "type": "scripthash",
"addresses": [ "addresses": [
"3C5QarEGh9feKbDJ3QbMf2YNjnMoiPDhNp" "MJHYtjeEeGX586VC9HahUfnn4UxFmqozk8"
] ]
} }
} }

2
test/util/data/txcreatescript4.json

@ -17,7 +17,7 @@
"reqSigs": 1, "reqSigs": 1,
"type": "scripthash", "type": "scripthash",
"addresses": [ "addresses": [
"3BNQbeFeJJGMAyDxPwWPuqxPMrjsFLjk3f" "MHaYuXfcFR7myUVrVpVjjVCngZLKDuRbn3"
] ]
} }
} }

2
test/util/data/txcreatesignv1.hex

@ -1 +1 @@
01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008b48304502210096a75056c9e2cc62b7214777b3d2a592cfda7092520126d4ebfcd6d590c99bd8022051bb746359cf98c0603f3004477eac68701132380db8facba19c89dc5ab5c5e201410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000 0100000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000

18
test/util/data/txcreatesignv1.json

@ -1,17 +1,17 @@
{ {
"txid": "977e7cd286cb72cd470d539ba6cb48400f8f387d97451d45cdb8819437a303af", "txid": "bf7c8b55745d4f9d9b2e33b5fbec5d08e38f3dcfc1838cb424a16db3ebc52f13",
"hash": "977e7cd286cb72cd470d539ba6cb48400f8f387d97451d45cdb8819437a303af", "hash": "bf7c8b55745d4f9d9b2e33b5fbec5d08e38f3dcfc1838cb424a16db3ebc52f13",
"version": 1, "version": 1,
"size": 224, "size": 224,
"vsize": 224, "vsize": 224,
"locktime": 0, "locktime": 0,
"vin": [ "vin": [
{ {
"txid": "4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485", "txid": "6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7",
"vout": 0, "vout": 0,
"scriptSig": { "scriptSig": {
"asm": "304502210096a75056c9e2cc62b7214777b3d2a592cfda7092520126d4ebfcd6d590c99bd8022051bb746359cf98c0603f3004477eac68701132380db8facba19c89dc5ab5c5e2[ALL] 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", "asm": "",
"hex": "48304502210096a75056c9e2cc62b7214777b3d2a592cfda7092520126d4ebfcd6d590c99bd8022051bb746359cf98c0603f3004477eac68701132380db8facba19c89dc5ab5c5e201410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8" "hex": ""
}, },
"sequence": 4294967295 "sequence": 4294967295
} }
@ -21,15 +21,15 @@
"value": 0.00100000, "value": 0.00100000,
"n": 0, "n": 0,
"scriptPubKey": { "scriptPubKey": {
"asm": "OP_DUP OP_HASH160 5834479edbbe0539b31ffd3a8f8ebadc2165ed01 OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 834584e0afbd77db57fcf4a3a076b8d3e02aa6fb OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac", "hex": "76a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac",
"reqSigs": 1, "reqSigs": 1,
"type": "pubkeyhash", "type": "pubkeyhash",
"addresses": [ "addresses": [
"193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7" "LXC44cQhuRufFtaDhDYv4q8nxQJBkUAsXp"
] ]
} }
} }
], ],
"hex": "01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008b48304502210096a75056c9e2cc62b7214777b3d2a592cfda7092520126d4ebfcd6d590c99bd8022051bb746359cf98c0603f3004477eac68701132380db8facba19c89dc5ab5c5e201410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000" "hex": "0100000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000"
} }

2
test/util/data/txcreatesignv2.hex

@ -1 +1 @@
02000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a473044022079c7aa014177a2e973caf6df7c7b8f15399083b91eba370ea1e19c4caed9181e02205f8f8763505ce8e6cbdd2cd28fab3fd407a75003e7d0dc04e6bebb0a3c89e7cb01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000 0200000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000

Loading…
Cancel
Save