Browse Source

More changes from litecoin to kevacoin.

cn
Jianping Wu 5 years ago
parent
commit
392b7aba5f
  1. 8
      .github/ISSUE_TEMPLATE.md
  2. 6
      .travis.yml
  3. 28
      CONTRIBUTING.md
  4. 2
      COPYING
  5. 4
      INSTALL.md
  6. 12
      Makefile.am
  7. 6
      README.md
  8. 4
      build-aux/m4/bitcoin_qt.m4
  9. 16
      contrib/README.md
  10. 8
      contrib/devtools/gen-manpages.sh
  11. 72
      contrib/gitian-build.sh
  12. 22
      contrib/gitian-descriptors/gitian-linux.yml
  13. 10
      contrib/gitian-descriptors/gitian-osx-signer.yml
  14. 12
      contrib/gitian-descriptors/gitian-osx.yml
  15. 8
      contrib/gitian-descriptors/gitian-win-signer.yml
  16. 16
      contrib/gitian-descriptors/gitian-win.yml
  17. 6
      contrib/linearize/README.md
  18. 8
      contrib/linearize/example-linearize.cfg
  19. 4
      contrib/macdeploy/README.md
  20. 4
      contrib/macdeploy/custom_dsstore.py
  21. 2
      contrib/macdeploy/detached-sig-create.sh
  22. 2
      contrib/macdeploy/fancy.plist
  23. 134
      contrib/macdeploy/macdeployqtplus
  24. 4
      contrib/qos/README.md
  25. 2
      contrib/qos/tc.sh
  26. 6
      contrib/seeds/generate-seeds.py
  27. 4
      contrib/testgen/README.md
  28. 12
      contrib/tidy_datadir.sh
  29. 6
      contrib/windeploy/win-codesign.cert
  30. 2
      contrib/zmq/zmq_sub.py
  31. 4
      contrib/zmq/zmq_sub3.4.py
  32. 6
      depends/README.md
  33. 4
      depends/description.md
  34. 2
      doc/README_osx.md
  35. 14
      doc/README_windows.txt
  36. 4
      doc/REST-interface.md
  37. 2
      doc/assets-attribution.md
  38. 4
      doc/benchmarking.md
  39. 2
      doc/dependencies.md
  40. 24
      doc/developer-notes.md
  41. 16
      doc/dnsseed-policy.md
  42. 6
      doc/files.md
  43. 30
      doc/litecoin-release-notes/release-notes-0.10.2.2.md
  44. 22
      doc/litecoin-release-notes/release-notes-0.10.4.md
  45. 104
      doc/litecoin-release-notes/release-notes-0.13.2.md
  46. 14
      doc/litecoin-release-notes/release-notes-0.13.3.md
  47. 70
      doc/litecoin-release-notes/release-notes-0.14.2.md
  48. 40
      doc/litecoin-release-notes/release-notes-0.15.0.1.md
  49. 24
      doc/litecoin-release-notes/release-notes-0.15.1.md
  50. 6
      doc/man/Makefile.am
  51. 28
      doc/man/kevacoin-cli.1
  52. 20
      doc/man/kevacoin-qt.1
  53. 22
      doc/man/kevacoin-tx.1
  54. 22
      doc/man/kevacoind.1
  55. 4
      doc/reduce-traffic.md
  56. 18
      doc/release-notes-litecoin.md
  57. 126
      doc/release-process.md
  58. 52
      doc/tor.md
  59. 2
      doc/travis-ci.md
  60. 2
      doc/zmq.md
  61. 22
      share/qt/Info.plist.in
  62. 6
      share/rpcauth/rpcauth.py
  63. 8
      share/setup.nsi.in
  64. 2
      src/chainparamsseeds.h
  65. 2
      src/pow.cpp
  66. 4
      src/rpc/mining.cpp
  67. 4
      src/rpc/misc.cpp
  68. 4
      src/wallet/rpcdump.cpp
  69. 4
      src/wallet/rpcwallet.cpp
  70. 2
      src/wallet/test/wallet_tests.cpp
  71. 50
      test/README.md
  72. 22
      test/functional/README.md
  73. 4
      test/functional/feature_block.py
  74. 2
      test/functional/feature_config_args.py
  75. 6
      test/functional/feature_help.py
  76. 14
      test/functional/feature_proxy.py
  77. 8
      test/functional/interface_bitcoin_cli.py
  78. 2
      test/functional/interface_zmq.py
  79. 2
      test/functional/mempool_persist.py
  80. 12
      test/functional/p2p_segwit.py
  81. 4
      test/functional/p2p_unrequested_blocks.py
  82. 2
      test/functional/rpc_bind.py
  83. 2
      test/functional/rpc_fundrawtransaction.py
  84. 2
      test/functional/rpc_listtransactions.py
  85. 4
      test/functional/rpc_rawtransaction.py
  86. 6
      test/functional/rpc_users.py
  87. 2
      test/functional/test_framework/coverage.py
  88. 6
      test/functional/test_framework/mininode.py
  89. 32
      test/functional/test_framework/test_framework.py
  90. 12
      test/functional/test_framework/test_node.py
  91. 6
      test/functional/test_framework/util.py
  92. 12
      test/functional/test_runner.py
  93. 2
      test/functional/wallet_bumpfee.py
  94. 4
      test/functional/wallet_scriptaddress2.py
  95. 2
      test/util/bitcoin-util-test.py
  96. 126
      test/util/data/bitcoin-util-test.json

8
.github/ISSUE_TEMPLATE.md

@ -1,8 +1,8 @@
<!-- This issue tracker is only for technical issues related to Litecoin Core. <!-- This issue tracker is only for technical issues related to Kevacoin Core.
General litecoin questions and/or support requests and are best directed to the [litecointalk.io forums](https://litecointalk.io/). General kevacoin questions and/or support requests and are best directed to the [litecointalk.io forums](https://litecointalk.io/).
For reporting security issues, please contact the Litecoin developers on the #litecoin-dev Freenode IRC channel or alternatively you can email us at contact@litecoin.org. For reporting security issues, please contact the Kevacoin developers on the #kevacoin-dev Freenode IRC channel or alternatively you can email us at contact@kevacoin.org.
If the node is "stuck" during sync or giving "block checksum mismatch" errors, please ensure your hardware is stable by running memtest and observe CPU temperature with a load-test tool such as linpack before creating an issue! --> If the node is "stuck" during sync or giving "block checksum mismatch" errors, please ensure your hardware is stable by running memtest and observe CPU temperature with a load-test tool such as linpack before creating an issue! -->
@ -13,7 +13,7 @@ If the node is "stuck" during sync or giving "block checksum mismatch" errors, p
<!--- How reliably can you reproduce the issue, what are the steps to do so? --> <!--- How reliably can you reproduce the issue, what are the steps to do so? -->
<!-- What version of Litecoin Core are you using, where did you get it (website, self-compiled, etc)? --> <!-- What version of Kevacoin Core are you using, where did you get it (website, self-compiled, etc)? -->
<!-- What type of machine are you observing the error on (OS/CPU and disk type)? --> <!-- What type of machine are you observing the error on (OS/CPU and disk type)? -->

6
.travis.yml

@ -65,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" = "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" = "kevacoin-project/kevacoin" -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 contrib/verify-commits/verify-commits.sh; fi - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "kevacoin-project/kevacoin" -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
@ -76,7 +76,7 @@ script:
- mkdir build && cd build - mkdir build && cd build
- ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) - ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- make distdir VERSION=$HOST - make distdir VERSION=$HOST
- cd litecoin-$HOST - cd kevacoin-$HOST
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) - ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false ) - make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib

28
CONTRIBUTING.md

@ -1,7 +1,7 @@
Contributing to Litecoin Core Contributing to Kevacoin Core
============================ ============================
The Litecoin Core project operates an open contributor model where anyone is The Kevacoin Core project operates an open contributor model where anyone is
welcome to contribute towards development in the form of peer review, testing welcome to contribute towards development in the form of peer review, testing
and patches. This document explains the practical process and guidelines for and patches. This document explains the practical process and guidelines for
contributing. contributing.
@ -57,12 +57,12 @@ the pull request affects. Valid areas as:
- *Consensus* for changes to consensus critical code - *Consensus* for changes to consensus critical code
- *Docs* for changes to the documentation - *Docs* for changes to the documentation
- *Qt* for changes to litecoin-qt - *Qt* for changes to kevacoin-qt
- *Mining* for changes to the mining code - *Mining* for changes to the mining code
- *Net* or *P2P* for changes to the peer-to-peer network code - *Net* or *P2P* for changes to the peer-to-peer network code
- *RPC/REST/ZMQ* for changes to the RPC, REST or ZMQ APIs - *RPC/REST/ZMQ* for changes to the RPC, REST or ZMQ APIs
- *Scripts and tools* for changes to the scripts and tools - *Scripts and tools* for changes to the scripts and tools
- *Tests* for changes to the litecoin unit tests or QA tests - *Tests* for changes to the kevacoin unit tests or QA tests
- *Trivial* should **only** be used for PRs that do not change generated - *Trivial* should **only** be used for PRs that do not change generated
executable code. Notably, refactors (change of function arguments and code executable code. Notably, refactors (change of function arguments and code
reorganization) and changes in behavior should **not** be marked as trivial. reorganization) and changes in behavior should **not** be marked as trivial.
@ -82,7 +82,7 @@ Examples:
Trivial: Fix typo in init.cpp Trivial: Fix typo in init.cpp
Note that translations should not be submitted as pull requests, please see Note that translations should not be submitted as pull requests, please see
[Translation Process](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md) [Translation Process](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md)
for more information on helping with translations. for more information on helping with translations.
If a pull request is not to be considered for merging (yet), please If a pull request is not to be considered for merging (yet), please
@ -169,11 +169,11 @@ workload on reviewing.
"Decision Making" Process "Decision Making" Process
------------------------- -------------------------
The following applies to code changes to the Litecoin Core project (and related The following applies to code changes to the Kevacoin Core project (and related
projects such as libsecp256k1), and is not to be confused with overall Litecoin projects such as libsecp256k1), and is not to be confused with overall Kevacoin
Network Protocol consensus changes. Network Protocol consensus changes.
Whether a pull request is merged into Litecoin Core rests with the project merge Whether a pull request is merged into Kevacoin Core rests with the project merge
maintainers and ultimately the project lead. maintainers and ultimately the project lead.
Maintainers will take into consideration if a patch is in line with the general Maintainers will take into consideration if a patch is in line with the general
@ -191,7 +191,7 @@ In general, all pull requests must:
- Where bugs are fixed, where possible, there should be unit tests - Where bugs are fixed, where possible, there should be unit tests
demonstrating the bug and also proving the fix. This helps prevent regression. demonstrating the bug and also proving the fix. This helps prevent regression.
Patches that change Litecoin consensus rules are considerably more involved than Patches that change Kevacoin consensus rules are considerably more involved than
normal because they affect the entire ecosystem and so must be preceded by normal because they affect the entire ecosystem and so must be preceded by
extensive mailing list discussions and have a numbered BIP. While each case will extensive mailing list discussions and have a numbered BIP. While each case will
be different, one should be prepared to expend more time and effort than for be different, one should be prepared to expend more time and effort than for
@ -232,7 +232,7 @@ higher in terms of discussion and peer review requirements, keeping in mind that
mistakes could be very costly to the wider community. This includes refactoring mistakes could be very costly to the wider community. This includes refactoring
of consensus critical code. of consensus critical code.
Where a patch set proposes to change the Litecoin consensus, it must have been Where a patch set proposes to change the Kevacoin consensus, it must have been
discussed extensively on the mailing list and IRC, be accompanied by a widely discussed extensively on the mailing list and IRC, be accompanied by a widely
discussed BIP and have a generally widely perceived technical consensus of being discussed BIP and have a generally widely perceived technical consensus of being
a worthwhile change based on the judgement of the maintainers. a worthwhile change based on the judgement of the maintainers.
@ -272,12 +272,12 @@ about:
Release Policy Release Policy
-------------- --------------
The project leader is the release manager for each Litecoin Core release. The project leader is the release manager for each Kevacoin Core release.
Copyright Copyright
--------- ---------
By contributing to this repository, you agree to license your work under the By contributing to this repository, you agree to license your work under the
MIT license unless specified otherwise in `contrib/debian/copyright` or at MIT license unless specified otherwise in `contrib/debian/copyright` or at
the top of the file itself. Any work contributed where you are not the original the top of the file itself. Any work contributed where you are not the original
author must contain its license header with the original author(s) and source. author must contain its license header with the original author(s) and source.

2
COPYING

@ -2,7 +2,7 @@ The MIT License (MIT)
Copyright (c) 2009-2018 The Bitcoin Core developers Copyright (c) 2009-2018 The Bitcoin Core developers
Copyright (c) 2009-2018 Bitcoin Developers Copyright (c) 2009-2018 Bitcoin Developers
Copyright (c) 2011-2018 The Litecoin Core developers Copyright (c) 2011-2018 The Kevacoin Core developers
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

4
INSTALL.md

@ -1,5 +1,5 @@
Building Litecoin Building Kevacoin
================ ================
See doc/build-*.md for instructions on building the various See doc/build-*.md for instructions on building the various
elements of the Litecoin Core reference implementation of Kevacoin. elements of the Kevacoin Core reference implementation of Kevacoin.

12
Makefile.am

@ -24,7 +24,7 @@ BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EX
empty := empty :=
space := $(empty) $(empty) space := $(empty) $(empty)
OSX_APP=Litecoin-Qt.app OSX_APP=Kevacoin-Qt.app
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME)) OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
OSX_DMG = $(OSX_VOLNAME).dmg OSX_DMG = $(OSX_VOLNAME).dmg
OSX_BACKGROUND_SVG=background.svg OSX_BACKGROUND_SVG=background.svg
@ -85,7 +85,7 @@ $(OSX_APP)/Contents/PkgInfo:
$(OSX_APP)/Contents/Resources/empty.lproj: $(OSX_APP)/Contents/Resources/empty.lproj:
$(MKDIR_P) $(@D) $(MKDIR_P) $(@D)
@touch $@ @touch $@
$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST) $(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
$(MKDIR_P) $(@D) $(MKDIR_P) $(@D)
@ -95,7 +95,7 @@ $(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS)
$(MKDIR_P) $(@D) $(MKDIR_P) $(@D)
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
$(OSX_APP)/Contents/MacOS/Litecoin-Qt: $(BITCOIN_QT_BIN) $(OSX_APP)/Contents/MacOS/Kevacoin-Qt: $(BITCOIN_QT_BIN)
$(MKDIR_P) $(@D) $(MKDIR_P) $(@D)
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@
@ -105,7 +105,7 @@ $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
$(OSX_APP)/Contents/MacOS/Litecoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings $(OSX_APP)/Contents/MacOS/Kevacoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
osx_volname: osx_volname:
echo $(OSX_VOLNAME) >$@ echo $(OSX_VOLNAME) >$@
@ -130,7 +130,7 @@ $(APP_DIST_DIR)/Applications:
@rm -f $@ @rm -f $@
@cd $(@D); $(LN_S) /Applications $(@F) @cd $(@D); $(LN_S) /Applications $(@F)
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Litecoin-Qt $(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Kevacoin-Qt
$(OSX_DMG): $(APP_DIST_EXTRAS) $(OSX_DMG): $(APP_DIST_EXTRAS)
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist $(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
@ -145,7 +145,7 @@ $(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIF
$(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN) $(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN)
$(PYTHON) $< "$@" "$(OSX_VOLNAME)" $(PYTHON) $< "$@" "$(OSX_VOLNAME)"
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Litecoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Kevacoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2
deploydir: $(APP_DIST_EXTRAS) deploydir: $(APP_DIST_EXTRAS)

6
README.md

@ -8,7 +8,7 @@ https://kevacoin.org
What is Kevacoin? What is Kevacoin?
---------------- ----------------
Kevacoin is a decentralized open source key-value data store based on the Litecoin (which is in turn based on Bitcoin) cryptocurrency. Kevacoin is largely influenced by Namecoin [https://namecoin.org](https://namecoin.org), even though it serves very different purposes and works very differently. Kevacoin is a decentralized open source key-value data store based on the Kevacoin (which is in turn based on Bitcoin) cryptocurrency. Kevacoin is largely influenced by Namecoin [https://namecoin.org](https://namecoin.org), even though it serves very different purposes and works very differently.
What does it do? What does it do?
---------------- ----------------
@ -19,7 +19,7 @@ What does it do?
What can it be used for? What can it be used for?
------------------------ ------------------------
As a decentralized key-value database, it can be used to store data for all kinds of applications, such as social media, microblogging, public identity information, notary service. Kevacoin has limited support for smart contracts (similar to Bitcoin and Litecoin), but one can still develop decentralized apps (dApps) on Kevacoin. The data is decentralized while the application logic is developed off the blockchain. As a decentralized key-value database, it can be used to store data for all kinds of applications, such as social media, microblogging, public identity information, notary service. Kevacoin has limited support for smart contracts (similar to Bitcoin and Kevacoin), but one can still develop decentralized apps (dApps) on Kevacoin. The data is decentralized while the application logic is developed off the blockchain.
For more information, as well as an immediately useable, binary version of For more information, as well as an immediately useable, binary version of
the Kevacoin Core software, see [https://kevacoin.org](https://kevacoin.org). the Kevacoin Core software, see [https://kevacoin.org](https://kevacoin.org).
@ -41,7 +41,7 @@ Development Process
------------------- -------------------
The `master` branch is regularly built and tested, but is not guaranteed to be The `master` branch is regularly built and tested, but is not guaranteed to be
completely stable. [Tags](https://github.com/kevacoin-project/litecoin/tags) are created completely stable. [Tags](https://github.com/kevacoin-project/kevacoin/tags) are created
regularly to indicate new official, stable release versions of Kevacoin Core. regularly to indicate new official, stable release versions of Kevacoin Core.
The contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md). The contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md).

4
build-aux/m4/bitcoin_qt.m4

@ -7,7 +7,7 @@ dnl Output: If qt version is auto, set bitcoin_enable_qt to false. Else, exit.
AC_DEFUN([BITCOIN_QT_FAIL],[ AC_DEFUN([BITCOIN_QT_FAIL],[
if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then if test "x$bitcoin_qt_want_version" = xauto && test "x$bitcoin_qt_force" != xyes; then
if test "x$bitcoin_enable_qt" != xno; then if test "x$bitcoin_enable_qt" != xno; then
AC_MSG_WARN([$1; litecoin-qt frontend will not be built]) AC_MSG_WARN([$1; kevacoin-qt frontend will not be built])
fi fi
bitcoin_enable_qt=no bitcoin_enable_qt=no
bitcoin_enable_qt_test=no bitcoin_enable_qt_test=no
@ -54,7 +54,7 @@ AC_DEFUN([BITCOIN_QT_INIT],[
dnl enable qt support dnl enable qt support
AC_ARG_WITH([gui], AC_ARG_WITH([gui],
[AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@], [AS_HELP_STRING([--with-gui@<:@=no|qt4|qt5|auto@:>@],
[build litecoin-qt GUI (default=auto, qt5 tried first)])], [build kevacoin-qt GUI (default=auto, qt5 tried first)])],
[ [
bitcoin_qt_want_version=$withval bitcoin_qt_want_version=$withval
if test "x$bitcoin_qt_want_version" = xyes; then if test "x$bitcoin_qt_want_version" = xyes; then

16
contrib/README.md

@ -13,7 +13,7 @@ Construct a linear, no-fork, best version of the blockchain.
### [Qos](/contrib/qos) ### ### [Qos](/contrib/qos) ###
A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Litecoin network. This means one can have an always-on litecoind instance running, and another local litecoind/litecoin-qt instance which connects to this node and receives blocks from it. A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Kevacoin network. This means one can have an always-on kevacoind instance running, and another local kevacoind/kevacoin-qt instance which connects to this node and receives blocks from it.
### [Seeds](/contrib/seeds) ### ### [Seeds](/contrib/seeds) ###
Utility to generate the pnSeed[] array that is compiled into the client. Utility to generate the pnSeed[] array that is compiled into the client.
@ -22,17 +22,17 @@ Build Tools and Keys
--------------------- ---------------------
### [Debian](/contrib/debian) ### ### [Debian](/contrib/debian) ###
Contains files used to package litecoind/litecoin-qt Contains files used to package kevacoind/kevacoin-qt
for Debian-based Linux systems. If you compile litecoind/litecoin-qt yourself, there are some useful files here. for Debian-based Linux systems. If you compile kevacoind/kevacoin-qt yourself, there are some useful files here.
### [Gitian-descriptors](/contrib/gitian-descriptors) ### ### [Gitian-descriptors](/contrib/gitian-descriptors) ###
Files used during the gitian build process. For more information about gitian, see the [the Bitcoin Core documentation repository](https://github.com/bitcoin-core/docs). Files used during the gitian build process. For more information about gitian, see the [the Bitcoin Core documentation repository](https://github.com/bitcoin-core/docs).
### [Gitian-keys](/contrib/gitian-keys) ### [Gitian-keys](/contrib/gitian-keys)
PGP keys used for signing Litecoin Core [Gitian release](/doc/release-process.md) results. PGP keys used for signing Kevacoin Core [Gitian release](/doc/release-process.md) results.
### [MacDeploy](/contrib/macdeploy) ### ### [MacDeploy](/contrib/macdeploy) ###
Scripts and notes for Mac builds. Scripts and notes for Mac builds.
### [RPM](/contrib/rpm) ### ### [RPM](/contrib/rpm) ###
RPM spec file for building blitecoin-core on RPM based distributions. RPM spec file for building blitecoin-core on RPM based distributions.
@ -40,11 +40,11 @@ RPM spec file for building blitecoin-core on RPM based distributions.
### [Gitian-build](/contrib/gitian-build.sh) ### ### [Gitian-build](/contrib/gitian-build.sh) ###
Script for running full Gitian builds. Script for running full Gitian builds.
Test and Verify Tools Test and Verify Tools
--------------------- ---------------------
### [TestGen](/contrib/testgen) ### ### [TestGen](/contrib/testgen) ###
Utilities to generate test vectors for the data-driven Litecoin tests. Utilities to generate test vectors for the data-driven Kevacoin tests.
### [Verify Binaries](/contrib/verifybinaries) ### ### [Verify Binaries](/contrib/verifybinaries) ###
This script attempts to download and verify the signature file SHA256SUMS.asc from litecoin.org. This script attempts to download and verify the signature file SHA256SUMS.asc from kevacoin.org.

8
contrib/devtools/gen-manpages.sh

@ -4,10 +4,10 @@ TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
SRCDIR=${SRCDIR:-$TOPDIR/src} SRCDIR=${SRCDIR:-$TOPDIR/src}
MANDIR=${MANDIR:-$TOPDIR/doc/man} MANDIR=${MANDIR:-$TOPDIR/doc/man}
LITECOIND=${LITECOIND:-$SRCDIR/litecoind} LITECOIND=${LITECOIND:-$SRCDIR/kevacoind}
LITECOINCLI=${LITECOINCLI:-$SRCDIR/litecoin-cli} LITECOINCLI=${LITECOINCLI:-$SRCDIR/kevacoin-cli}
LITECOINTX=${LITECOINTX:-$SRCDIR/litecoin-tx} LITECOINTX=${LITECOINTX:-$SRCDIR/kevacoin-tx}
LITECOINQT=${LITECOINQT:-$SRCDIR/qt/litecoin-qt} LITECOINQT=${LITECOINQT:-$SRCDIR/qt/kevacoin-qt}
[ ! -x $LITECOIND ] && echo "$LITECOIND not found or not executable." && exit 1 [ ! -x $LITECOIND ] && echo "$LITECOIND not found or not executable." && exit 1

72
contrib/gitian-build.sh

@ -16,7 +16,7 @@ osx=true
SIGNER= SIGNER=
VERSION= VERSION=
commit=false commit=false
url=https://github.com/litecoin-project/litecoin url=https://github.com/kevacoin-project/kevacoin
proc=2 proc=2
mem=2000 mem=2000
lxc=true lxc=true
@ -30,7 +30,7 @@ commitFiles=true
read -d '' usage <<- EOF read -d '' usage <<- EOF
Usage: $scriptName [-c|u|v|b|s|B|o|h|j|m|] signer version Usage: $scriptName [-c|u|v|b|s|B|o|h|j|m|] signer version
Run this script from the directory containing the litecoin, gitian-builder, gitian.sigs.ltc, and litecoin-detached-sigs. Run this script from the directory containing the kevacoin, gitian-builder, gitian.sigs.ltc, and kevacoin-detached-sigs.
Arguments: Arguments:
signer GPG signer to sign each build assert file signer GPG signer to sign each build assert file
@ -38,7 +38,7 @@ version Version number, commit, or branch to build. If building a commit or bra
Options: Options:
-c|--commit Indicate that the version argument is for a commit or branch -c|--commit Indicate that the version argument is for a commit or branch
-u|--url Specify the URL of the repository. Default is https://github.com/litecoin-project/litecoin -u|--url Specify the URL of the repository. Default is https://github.com/kevacoin-project/kevacoin
-v|--verify Verify the gitian build -v|--verify Verify the gitian build
-b|--build Do a gitian build -b|--build Do a gitian build
-s|--sign Make signed binaries for Windows and Mac OSX -s|--sign Make signed binaries for Windows and Mac OSX
@ -229,8 +229,8 @@ echo ${COMMIT}
if [[ $setup = true ]] if [[ $setup = true ]]
then then
sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm qemu-utils sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm qemu-utils
git clone https://github.com/litecoin-project/gitian.sigs.ltc.git git clone https://github.com/kevacoin-project/gitian.sigs.ltc.git
git clone https://github.com/litecoin-project/litecoin-detached-sigs.git git clone https://github.com/kevacoin-project/kevacoin-detached-sigs.git
git clone https://github.com/devrandom/gitian-builder.git git clone https://github.com/devrandom/gitian-builder.git
pushd ./gitian-builder pushd ./gitian-builder
if [[ -n "$USE_LXC" ]] if [[ -n "$USE_LXC" ]]
@ -244,7 +244,7 @@ then
fi fi
# Set up build # Set up build
pushd ./litecoin pushd ./kevacoin
git fetch git fetch
git checkout ${COMMIT} git checkout ${COMMIT}
popd popd
@ -253,17 +253,17 @@ popd
if [[ $build = true ]] if [[ $build = true ]]
then then
# Make output folder # Make output folder
mkdir -p ./litecoin-binaries/${VERSION} mkdir -p ./kevacoin-binaries/${VERSION}
# Build Dependencies # Build Dependencies
echo "" echo ""
echo "Building Dependencies" echo "Building Dependencies"
echo "" echo ""
pushd ./gitian-builder pushd ./gitian-builder
mkdir -p inputs mkdir -p inputs
wget -N -P inputs $osslPatchUrl wget -N -P inputs $osslPatchUrl
wget -N -P inputs $osslTarUrl wget -N -P inputs $osslTarUrl
make -C ../litecoin/depends download SOURCES_PATH=`pwd`/cache/common make -C ../kevacoin/depends download SOURCES_PATH=`pwd`/cache/common
# Linux # Linux
if [[ $linux = true ]] if [[ $linux = true ]]
@ -271,9 +271,9 @@ then
echo "" echo ""
echo "Compiling ${VERSION} Linux" echo "Compiling ${VERSION} Linux"
echo "" echo ""
./bin/gbuild -j ${proc} -m ${mem} --commit litecoin=${COMMIT} --url litecoin=${url} ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gbuild -j ${proc} -m ${mem} --commit kevacoin=${COMMIT} --url kevacoin=${url} ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
mv build/out/litecoin-*.tar.gz build/out/src/litecoin-*.tar.gz ../litecoin-binaries/${VERSION} mv build/out/kevacoin-*.tar.gz build/out/src/kevacoin-*.tar.gz ../kevacoin-binaries/${VERSION}
fi fi
# Windows # Windows
if [[ $windows = true ]] if [[ $windows = true ]]
@ -281,10 +281,10 @@ then
echo "" echo ""
echo "Compiling ${VERSION} Windows" echo "Compiling ${VERSION} Windows"
echo "" echo ""
./bin/gbuild -j ${proc} -m ${mem} --commit litecoin=${COMMIT} --url litecoin=${url} ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gbuild -j ${proc} -m ${mem} --commit kevacoin=${COMMIT} --url kevacoin=${url} ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
mv build/out/litecoin-*-win-unsigned.tar.gz inputs/litecoin-win-unsigned.tar.gz mv build/out/kevacoin-*-win-unsigned.tar.gz inputs/kevacoin-win-unsigned.tar.gz
mv build/out/litecoin-*.zip build/out/litecoin-*.exe ../litecoin-binaries/${VERSION} mv build/out/kevacoin-*.zip build/out/kevacoin-*.exe ../kevacoin-binaries/${VERSION}
fi fi
# Mac OSX # Mac OSX
if [[ $osx = true ]] if [[ $osx = true ]]
@ -292,10 +292,10 @@ then
echo "" echo ""
echo "Compiling ${VERSION} Mac OSX" echo "Compiling ${VERSION} Mac OSX"
echo "" echo ""
./bin/gbuild -j ${proc} -m ${mem} --commit litecoin=${COMMIT} --url litecoin=${url} ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gbuild -j ${proc} -m ${mem} --commit kevacoin=${COMMIT} --url kevacoin=${url} ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
mv build/out/litecoin-*-osx-unsigned.tar.gz inputs/litecoin-osx-unsigned.tar.gz mv build/out/kevacoin-*-osx-unsigned.tar.gz inputs/kevacoin-osx-unsigned.tar.gz
mv build/out/litecoin-*.tar.gz build/out/litecoin-*.dmg ../litecoin-binaries/${VERSION} mv build/out/kevacoin-*.tar.gz build/out/kevacoin-*.dmg ../kevacoin-binaries/${VERSION}
fi fi
popd popd
@ -322,34 +322,34 @@ then
echo "" echo ""
echo "Verifying v${VERSION} Linux" echo "Verifying v${VERSION} Linux"
echo "" echo ""
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-linux ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-linux ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
# Windows # Windows
echo "" echo ""
echo "Verifying v${VERSION} Windows" echo "Verifying v${VERSION} Windows"
echo "" echo ""
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-unsigned ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-unsigned ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
# Mac OSX # Mac OSX
echo "" echo ""
echo "Verifying v${VERSION} Mac OSX" echo "Verifying v${VERSION} Mac OSX"
echo "" echo ""
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-unsigned ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-unsigned ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
# Signed Windows # Signed Windows
echo "" echo ""
echo "Verifying v${VERSION} Signed Windows" echo "Verifying v${VERSION} Signed Windows"
echo "" echo ""
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
# Signed Mac OSX # Signed Mac OSX
echo "" echo ""
echo "Verifying v${VERSION} Signed Mac OSX" echo "Verifying v${VERSION} Signed Mac OSX"
echo "" echo ""
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
popd popd
fi fi
# Sign binaries # Sign binaries
if [[ $sign = true ]] if [[ $sign = true ]]
then then
pushd ./gitian-builder pushd ./gitian-builder
# Sign Windows # Sign Windows
if [[ $windows = true ]] if [[ $windows = true ]]
@ -357,10 +357,10 @@ then
echo "" echo ""
echo "Signing ${VERSION} Windows" echo "Signing ${VERSION} Windows"
echo "" echo ""
./bin/gbuild -i --commit signature=${COMMIT} ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gbuild -i --commit signature=${COMMIT} ../kevacoin/contrib/gitian-descriptors/gitian-win-signer.yml
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-win-signer.yml
mv build/out/litecoin-*win64-setup.exe ../litecoin-binaries/${VERSION} mv build/out/kevacoin-*win64-setup.exe ../kevacoin-binaries/${VERSION}
mv build/out/litecoin-*win32-setup.exe ../litecoin-binaries/${VERSION} mv build/out/kevacoin-*win32-setup.exe ../kevacoin-binaries/${VERSION}
fi fi
# Sign Mac OSX # Sign Mac OSX
if [[ $osx = true ]] if [[ $osx = true ]]
@ -368,9 +368,9 @@ then
echo "" echo ""
echo "Signing ${VERSION} Mac OSX" echo "Signing ${VERSION} Mac OSX"
echo "" echo ""
./bin/gbuild -i --commit signature=${COMMIT} ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gbuild -i --commit signature=${COMMIT} ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gsign -p $signProg --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
mv build/out/litecoin-osx-signed.dmg ../litecoin-binaries/${VERSION}/litecoin-${VERSION}-osx.dmg mv build/out/kevacoin-osx-signed.dmg ../kevacoin-binaries/${VERSION}/kevacoin-${VERSION}-osx.dmg
fi fi
popd popd

22
contrib/gitian-descriptors/gitian-linux.yml

@ -1,5 +1,5 @@
--- ---
name: "litecoin-linux-0.16" name: "kevacoin-linux-0.16"
enable_cache: true enable_cache: true
suites: suites:
- "trusty" - "trusty"
@ -28,8 +28,8 @@ packages:
- "ca-certificates" - "ca-certificates"
- "python" - "python"
remotes: remotes:
- "url": "https://github.com/litecoin-project/litecoin.git" - "url": "https://github.com/kevacoin-project/kevacoin.git"
"dir": "litecoin" "dir": "kevacoin"
files: [] files: []
script: | script: |
@ -113,7 +113,7 @@ script: |
chmod +x ${WRAP_DIR}/${prog} chmod +x ${WRAP_DIR}/${prog}
done done
cd litecoin cd kevacoin
BASEPREFIX=`pwd`/depends BASEPREFIX=`pwd`/depends
# Build dependencies for each host # Build dependencies for each host
for i in $HOSTS; do for i in $HOSTS; do
@ -135,13 +135,13 @@ script: |
./autogen.sh ./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/ CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist make dist
SOURCEDIST=`echo litecoin-*.tar.gz` SOURCEDIST=`echo kevacoin-*.tar.gz`
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
# Correct tar file order # Correct tar file order
mkdir -p temp mkdir -p temp
pushd temp pushd temp
tar xf ../$SOURCEDIST tar xf ../$SOURCEDIST
find litecoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST find kevacoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
popd popd
# Workaround for tarball not building with the bare tag version (prep) # Workaround for tarball not building with the bare tag version (prep)
@ -181,14 +181,14 @@ script: |
find . -name "lib*.la" -delete find . -name "lib*.la" -delete
find . -name "lib*.a" -delete find . -name "lib*.a" -delete
rm -rf ${DISTNAME}/lib/pkgconfig rm -rf ${DISTNAME}/lib/pkgconfig
# Litecoin: Delete libbitcoin from binary distribution for now, see #192 # Kevacoin: Delete libbitcoin from binary distribution for now, see #192
rm -rf ${DISTNAME}/lib/ rm -rf ${DISTNAME}/lib/
rm -rf ${DISTNAME}/include/ rm -rf ${DISTNAME}/include/
# Litecoin: ends # Kevacoin: ends
find ${DISTNAME}/bin -type f -executable -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \; find ${DISTNAME}/bin -type f -executable -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \;
#find ${DISTNAME}/lib -type f -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \; # Litecoin: see issue 192 #find ${DISTNAME}/lib -type f -exec ../contrib/devtools/split-debug.sh {} {} {}.dbg \; # Kevacoin: see issue 192
find ${DISTNAME} -not -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz find ${DISTNAME} -not -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
find ${DISTNAME} -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}-debug.tar.gz find ${DISTNAME} -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}-debug.tar.gz
cd ../../ cd ../../

10
contrib/gitian-descriptors/gitian-osx-signer.yml

@ -1,5 +1,5 @@
--- ---
name: "litecoin-dmg-signer" name: "kevacoin-dmg-signer"
suites: suites:
- "trusty" - "trusty"
architectures: architectures:
@ -7,10 +7,10 @@ architectures:
packages: packages:
- "faketime" - "faketime"
remotes: remotes:
- "url": "https://github.com/litecoin-project/litecoin-detached-sigs.git" - "url": "https://github.com/kevacoin-project/kevacoin-detached-sigs.git"
"dir": "signature" "dir": "signature"
files: files:
- "litecoin-osx-unsigned.tar.gz" - "kevacoin-osx-unsigned.tar.gz"
script: | script: |
WRAP_DIR=$HOME/wrapped WRAP_DIR=$HOME/wrapped
mkdir -p ${WRAP_DIR} mkdir -p ${WRAP_DIR}
@ -27,8 +27,8 @@ script: |
chmod +x ${WRAP_DIR}/${prog} chmod +x ${WRAP_DIR}/${prog}
done done
UNSIGNED=litecoin-osx-unsigned.tar.gz UNSIGNED=kevacoin-osx-unsigned.tar.gz
SIGNED=litecoin-osx-signed.dmg SIGNED=kevacoin-osx-signed.dmg
tar -xf ${UNSIGNED} tar -xf ${UNSIGNED}
OSX_VOLNAME="$(cat osx_volname)" OSX_VOLNAME="$(cat osx_volname)"

12
contrib/gitian-descriptors/gitian-osx.yml

@ -1,5 +1,5 @@
--- ---
name: "litecoin-osx-0.16" name: "kevacoin-osx-0.16"
enable_cache: true enable_cache: true
suites: suites:
- "trusty" - "trusty"
@ -28,8 +28,8 @@ packages:
- "python-setuptools" - "python-setuptools"
- "fonts-tuffy" - "fonts-tuffy"
remotes: remotes:
- "url": "https://github.com/litecoin-project/litecoin.git" - "url": "https://github.com/kevacoin-project/kevacoin.git"
"dir": "litecoin" "dir": "kevacoin"
files: files:
- "MacOSX10.11.sdk.tar.gz" - "MacOSX10.11.sdk.tar.gz"
script: | script: |
@ -83,7 +83,7 @@ script: |
create_per-host_faketime_wrappers "2000-01-01 12:00:00" create_per-host_faketime_wrappers "2000-01-01 12:00:00"
export PATH=${WRAP_DIR}:${PATH} export PATH=${WRAP_DIR}:${PATH}
cd litecoin cd kevacoin
BASEPREFIX=`pwd`/depends BASEPREFIX=`pwd`/depends
mkdir -p ${BASEPREFIX}/SDKs mkdir -p ${BASEPREFIX}/SDKs
@ -104,14 +104,14 @@ script: |
./autogen.sh ./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/ CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist make dist
SOURCEDIST=`echo litecoin-*.tar.gz` SOURCEDIST=`echo kevacoin-*.tar.gz`
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
# Correct tar file order # Correct tar file order
mkdir -p temp mkdir -p temp
pushd temp pushd temp
tar xf ../$SOURCEDIST tar xf ../$SOURCEDIST
find litecoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST find kevacoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
popd popd
# Workaround for tarball not building with the bare tag version (prep) # Workaround for tarball not building with the bare tag version (prep)

8
contrib/gitian-descriptors/gitian-win-signer.yml

@ -1,5 +1,5 @@
--- ---
name: "litecoin-win-signer" name: "kevacoin-win-signer"
suites: suites:
- "trusty" - "trusty"
architectures: architectures:
@ -8,12 +8,12 @@ packages:
- "libssl-dev" - "libssl-dev"
- "autoconf" - "autoconf"
remotes: remotes:
- "url": "https://github.com/litecoin-project/litecoin-detached-sigs.git" - "url": "https://github.com/kevacoin-project/kevacoin-detached-sigs.git"
"dir": "signature" "dir": "signature"
files: files:
- "osslsigncode-1.7.1.tar.gz" - "osslsigncode-1.7.1.tar.gz"
- "osslsigncode-Backports-to-1.7.1.patch" - "osslsigncode-Backports-to-1.7.1.patch"
- "litecoin-win-unsigned.tar.gz" - "kevacoin-win-unsigned.tar.gz"
script: | script: |
BUILD_DIR=`pwd` BUILD_DIR=`pwd`
SIGDIR=${BUILD_DIR}/signature/win SIGDIR=${BUILD_DIR}/signature/win
@ -23,7 +23,7 @@ script: |
echo "a8c4e9cafba922f89de0df1f2152e7be286aba73f78505169bc351a7938dd911 osslsigncode-Backports-to-1.7.1.patch" | sha256sum -c echo "a8c4e9cafba922f89de0df1f2152e7be286aba73f78505169bc351a7938dd911 osslsigncode-Backports-to-1.7.1.patch" | sha256sum -c
mkdir -p ${UNSIGNED_DIR} mkdir -p ${UNSIGNED_DIR}
tar -C ${UNSIGNED_DIR} -xf litecoin-win-unsigned.tar.gz tar -C ${UNSIGNED_DIR} -xf kevacoin-win-unsigned.tar.gz
tar xf osslsigncode-1.7.1.tar.gz tar xf osslsigncode-1.7.1.tar.gz
cd osslsigncode-1.7.1 cd osslsigncode-1.7.1

16
contrib/gitian-descriptors/gitian-win.yml

@ -1,5 +1,5 @@
--- ---
name: "litecoin-win-0.16" name: "kevacoin-win-0.16"
enable_cache: true enable_cache: true
suites: suites:
- "trusty" - "trusty"
@ -22,8 +22,8 @@ packages:
- "ca-certificates" - "ca-certificates"
- "python" - "python"
remotes: remotes:
- "url": "https://github.com/litecoin-project/litecoin.git" - "url": "https://github.com/kevacoin-project/kevacoin.git"
"dir": "litecoin" "dir": "kevacoin"
files: [] files: []
script: | script: |
WRAP_DIR=$HOME/wrapped WRAP_DIR=$HOME/wrapped
@ -101,7 +101,7 @@ script: |
create_per-host_linker_wrapper "2000-01-01 12:00:00" create_per-host_linker_wrapper "2000-01-01 12:00:00"
export PATH=${WRAP_DIR}:${PATH} export PATH=${WRAP_DIR}:${PATH}
cd litecoin cd kevacoin
BASEPREFIX=`pwd`/depends BASEPREFIX=`pwd`/depends
# Build dependencies for each host # Build dependencies for each host
for i in $HOSTS; do for i in $HOSTS; do
@ -119,14 +119,14 @@ script: |
./autogen.sh ./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/ CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist make dist
SOURCEDIST=`echo litecoin-*.tar.gz` SOURCEDIST=`echo kevacoin-*.tar.gz`
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
# Correct tar file order # Correct tar file order
mkdir -p temp mkdir -p temp
pushd temp pushd temp
tar xf ../$SOURCEDIST tar xf ../$SOURCEDIST
find litecoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST find kevacoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
mkdir -p $OUTDIR/src mkdir -p $OUTDIR/src
cp ../$SOURCEDIST $OUTDIR/src cp ../$SOURCEDIST $OUTDIR/src
popd popd
@ -155,7 +155,7 @@ script: |
make deploy make deploy
make install DESTDIR=${INSTALLPATH} make install DESTDIR=${INSTALLPATH}
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe
cp -f litecoin-*setup*.exe $OUTDIR/ cp -f kevacoin-*setup*.exe $OUTDIR/
cd installed cd installed
mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/ mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/
find . -name "lib*.la" -delete find . -name "lib*.la" -delete
@ -171,7 +171,7 @@ script: |
cp -rf contrib/windeploy $BUILD_DIR cp -rf contrib/windeploy $BUILD_DIR
cd $BUILD_DIR/windeploy cd $BUILD_DIR/windeploy
mkdir unsigned mkdir unsigned
cp $OUTDIR/litecoin-*setup-unsigned.exe unsigned/ cp $OUTDIR/kevacoin-*setup-unsigned.exe unsigned/
find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip

6
contrib/linearize/README.md

@ -1,5 +1,5 @@
# Linearize # Linearize
Construct a linear, no-fork, best version of the Litecoin blockchain. The scripts Construct a linear, no-fork, best version of the Kevacoin blockchain. The scripts
run using Python 3 but are compatible with Python 2. run using Python 3 but are compatible with Python 2.
## Step 1: Download hash list ## Step 1: Download hash list
@ -21,7 +21,7 @@ standalone hash lists but safe to use with linearize-data.py, which will output
the same data no matter which byte format is chosen. the same data no matter which byte format is chosen.
The `linearize-hashes` script requires a connection, local or remote, to a The `linearize-hashes` script requires a connection, local or remote, to a
JSON-RPC server. Running `litecoind` or `litecoin-qt -server` will be sufficient. JSON-RPC server. Running `kevacoind` or `kevacoin-qt -server` will be sufficient.
## Step 2: Copy local block data ## Step 2: Copy local block data
@ -39,7 +39,7 @@ will be printed.
respectively, to the current time and to the timestamp of the most recent block respectively, to the current time and to the timestamp of the most recent block
written to the script's blockchain. written to the script's blockchain.
* `genesis`: The hash of the genesis block in the blockchain. * `genesis`: The hash of the genesis block in the blockchain.
* `input`: litecoind blocks/ directory containing blkNNNNN.dat * `input`: kevacoind blocks/ directory containing blkNNNNN.dat
* `hashlist`: text file containing list of block hashes created by * `hashlist`: text file containing list of block hashes created by
linearize-hashes.py. linearize-hashes.py.
* `max_out_sz`: Maximum size for files created by the `output_file` option. * `max_out_sz`: Maximum size for files created by the `output_file` option.

8
contrib/linearize/example-linearize.cfg

@ -1,7 +1,7 @@
# litecoind RPC settings (linearize-hashes) # kevacoind RPC settings (linearize-hashes)
rpcuser=someuser rpcuser=someuser
rpcpassword=somepassword rpcpassword=somepassword
#datadir=~/.litecoin #datadir=~/.kevacoin
host=127.0.0.1 host=127.0.0.1
#mainnet default #mainnet default
@ -21,12 +21,12 @@ max_height=313000
# mainnet # mainnet
netmagic=fbc0b6db netmagic=fbc0b6db
genesis=12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2 genesis=12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2
input=/home/example/.litecoin/blocks input=/home/example/.kevacoin/blocks
# testnet # testnet
#netmagic=fdd2c8f1 #netmagic=fdd2c8f1
#genesis=4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0 #genesis=4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0
#input=/home/example/.litecoin/testnet3/blocks #input=/home/example/.kevacoin/testnet3/blocks
# "output" option causes blockchain files to be written to the given location, # "output" option causes blockchain files to be written to the given location,
# with "output_file" ignored. If not used, "output_file" is used instead. # with "output_file" ignored. If not used, "output_file" is used instead.

4
contrib/macdeploy/README.md

@ -1,7 +1,7 @@
### MacDeploy ### ### MacDeploy ###
For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package: For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package:
sudo easy_install argparse sudo easy_install argparse
This script should not be run manually, instead, after building as usual: This script should not be run manually, instead, after building as usual:
@ -11,5 +11,5 @@ This script should not be run manually, instead, after building as usual:
During the process, the disk image window will pop up briefly where the fancy During the process, the disk image window will pop up briefly where the fancy
settings are applied. This is normal, please do not interfere. settings are applied. This is normal, please do not interfere.
When finished, it will produce `Litecoin-Core.dmg`. When finished, it will produce `Kevacoin-Core.dmg`.

4
contrib/macdeploy/custom_dsstore.py

@ -46,7 +46,7 @@ alias.volume.name = package_name_ns
alias.volume.posix_path = '/Volumes/' + package_name_ns alias.volume.posix_path = '/Volumes/' + package_name_ns
alias.volume.disk_image_alias.target.filename = package_name_ns + '.temp.dmg' alias.volume.disk_image_alias.target.filename = package_name_ns + '.temp.dmg'
alias.volume.disk_image_alias.target.carbon_path = 'Macintosh HD:Users:\x00litecoinuser:\x00Documents:\x00litecoin:\x00litecoin:\x00' + package_name_ns + '.temp.dmg' alias.volume.disk_image_alias.target.carbon_path = 'Macintosh HD:Users:\x00litecoinuser:\x00Documents:\x00litecoin:\x00litecoin:\x00' + package_name_ns + '.temp.dmg'
alias.volume.disk_image_alias.target.posix_path = 'Users/litecoinuser/Documents/litecoin/litecoin/' + package_name_ns + '.temp.dmg' alias.volume.disk_image_alias.target.posix_path = 'Users/litecoinuser/Documents/kevacoin/kevacoin/' + package_name_ns + '.temp.dmg'
alias.target.carbon_path = package_name_ns + ':.background:\x00background.tiff' alias.target.carbon_path = package_name_ns + ':.background:\x00background.tiff'
icvp['backgroundImageAlias'] = biplist.Data(alias.to_bytes()) icvp['backgroundImageAlias'] = biplist.Data(alias.to_bytes())
ds['.']['icvp'] = icvp ds['.']['icvp'] = icvp
@ -54,7 +54,7 @@ ds['.']['icvp'] = icvp
ds['.']['vSrn'] = ('long', 1) ds['.']['vSrn'] = ('long', 1)
ds['Applications']['Iloc'] = (370, 156) ds['Applications']['Iloc'] = (370, 156)
ds['Litecoin-Qt.app']['Iloc'] = (128, 156) ds['Kevacoin-Qt.app']['Iloc'] = (128, 156)
ds.flush() ds.flush()
ds.close() ds.close()

2
contrib/macdeploy/detached-sig-create.sh

@ -6,7 +6,7 @@
set -e set -e
ROOTDIR=dist ROOTDIR=dist
BUNDLE="${ROOTDIR}/Litecoin-Qt.app" BUNDLE="${ROOTDIR}/Kevacoin-Qt.app"
CODESIGN=codesign CODESIGN=codesign
TEMPDIR=sign.temp TEMPDIR=sign.temp
TEMPLIST=${TEMPDIR}/signatures.txt TEMPLIST=${TEMPDIR}/signatures.txt

2
contrib/macdeploy/fancy.plist

@ -22,7 +22,7 @@
<integer>370</integer> <integer>370</integer>
<integer>156</integer> <integer>156</integer>
</array> </array>
<key>Litecoin-Qt.app</key> <key>Kevacoin-Qt.app</key>
<array> <array>
<integer>128</integer> <integer>128</integer>
<integer>156</integer> <integer>156</integer>

134
contrib/macdeploy/macdeployqtplus

@ -41,13 +41,13 @@ class FrameworkInfo(object):
self.sourceContentsDirectory = "" self.sourceContentsDirectory = ""
self.destinationResourcesDirectory = "" self.destinationResourcesDirectory = ""
self.destinationVersionContentsDirectory = "" self.destinationVersionContentsDirectory = ""
def __eq__(self, other): def __eq__(self, other):
if self.__class__ == other.__class__: if self.__class__ == other.__class__:
return self.__dict__ == other.__dict__ return self.__dict__ == other.__dict__
else: else:
return False return False
def __str__(self): def __str__(self):
return """ Framework name: %s return """ Framework name: %s
Framework directory: %s Framework directory: %s
@ -71,51 +71,51 @@ class FrameworkInfo(object):
self.deployedInstallName, self.deployedInstallName,
self.sourceFilePath, self.sourceFilePath,
self.destinationDirectory) self.destinationDirectory)
def isDylib(self): def isDylib(self):
return self.frameworkName.endswith(".dylib") return self.frameworkName.endswith(".dylib")
def isQtFramework(self): def isQtFramework(self):
if self.isDylib(): if self.isDylib():
return self.frameworkName.startswith("libQt") return self.frameworkName.startswith("libQt")
else: else:
return self.frameworkName.startswith("Qt") return self.frameworkName.startswith("Qt")
reOLine = re.compile(r'^(.+) \(compatibility version [0-9.]+, current version [0-9.]+\)$') reOLine = re.compile(r'^(.+) \(compatibility version [0-9.]+, current version [0-9.]+\)$')
bundleFrameworkDirectory = "Contents/Frameworks" bundleFrameworkDirectory = "Contents/Frameworks"
bundleBinaryDirectory = "Contents/MacOS" bundleBinaryDirectory = "Contents/MacOS"
@classmethod @classmethod
def fromOtoolLibraryLine(cls, line): def fromOtoolLibraryLine(cls, line):
# Note: line must be trimmed # Note: line must be trimmed
if line == "": if line == "":
return None return None
# Don't deploy system libraries (exception for libQtuitools and libQtlucene). # Don't deploy system libraries (exception for libQtuitools and libQtlucene).
if line.startswith("/System/Library/") or line.startswith("@executable_path") or (line.startswith("/usr/lib/") and "libQt" not in line): if line.startswith("/System/Library/") or line.startswith("@executable_path") or (line.startswith("/usr/lib/") and "libQt" not in line):
return None return None
m = cls.reOLine.match(line) m = cls.reOLine.match(line)
if m is None: if m is None:
raise RuntimeError("otool line could not be parsed: " + line) raise RuntimeError("otool line could not be parsed: " + line)
path = m.group(1) path = m.group(1)
info = cls() info = cls()
info.sourceFilePath = path info.sourceFilePath = path
info.installName = path info.installName = path
if path.endswith(".dylib"): if path.endswith(".dylib"):
dirname, filename = os.path.split(path) dirname, filename = os.path.split(path)
info.frameworkName = filename info.frameworkName = filename
info.frameworkDirectory = dirname info.frameworkDirectory = dirname
info.frameworkPath = path info.frameworkPath = path
info.binaryDirectory = dirname info.binaryDirectory = dirname
info.binaryName = filename info.binaryName = filename
info.binaryPath = path info.binaryPath = path
info.version = "-" info.version = "-"
info.installName = path info.installName = path
info.deployedInstallName = "@executable_path/../Frameworks/" + info.binaryName info.deployedInstallName = "@executable_path/../Frameworks/" + info.binaryName
info.sourceFilePath = path info.sourceFilePath = path
@ -130,32 +130,32 @@ class FrameworkInfo(object):
i += 1 i += 1
if i == len(parts): if i == len(parts):
raise RuntimeError("Could not find .framework or .dylib in otool line: " + line) raise RuntimeError("Could not find .framework or .dylib in otool line: " + line)
info.frameworkName = parts[i] info.frameworkName = parts[i]
info.frameworkDirectory = "/".join(parts[:i]) info.frameworkDirectory = "/".join(parts[:i])
info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName) info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName)
info.binaryName = parts[i+3] info.binaryName = parts[i+3]
info.binaryDirectory = "/".join(parts[i+1:i+3]) info.binaryDirectory = "/".join(parts[i+1:i+3])
info.binaryPath = os.path.join(info.binaryDirectory, info.binaryName) info.binaryPath = os.path.join(info.binaryDirectory, info.binaryName)
info.version = parts[i+2] info.version = parts[i+2]
info.deployedInstallName = "@executable_path/../Frameworks/" + os.path.join(info.frameworkName, info.binaryPath) info.deployedInstallName = "@executable_path/../Frameworks/" + os.path.join(info.frameworkName, info.binaryPath)
info.destinationDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, info.binaryDirectory) info.destinationDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, info.binaryDirectory)
info.sourceResourcesDirectory = os.path.join(info.frameworkPath, "Resources") info.sourceResourcesDirectory = os.path.join(info.frameworkPath, "Resources")
info.sourceContentsDirectory = os.path.join(info.frameworkPath, "Contents") info.sourceContentsDirectory = os.path.join(info.frameworkPath, "Contents")
info.sourceVersionContentsDirectory = os.path.join(info.frameworkPath, "Versions", info.version, "Contents") info.sourceVersionContentsDirectory = os.path.join(info.frameworkPath, "Versions", info.version, "Contents")
info.destinationResourcesDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Resources") info.destinationResourcesDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Resources")
info.destinationContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Contents") info.destinationContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Contents")
info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents") info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents")
return info return info
class ApplicationBundleInfo(object): class ApplicationBundleInfo(object):
def __init__(self, path): def __init__(self, path):
self.path = path self.path = path
appName = "Litecoin-Qt" appName = "Kevacoin-Qt"
self.binaryPath = os.path.join(path, "Contents", "MacOS", appName) self.binaryPath = os.path.join(path, "Contents", "MacOS", appName)
if not os.path.exists(self.binaryPath): if not os.path.exists(self.binaryPath):
raise RuntimeError("Could not find bundle binary for " + path) raise RuntimeError("Could not find bundle binary for " + path)
@ -167,7 +167,7 @@ class DeploymentInfo(object):
self.qtPath = None self.qtPath = None
self.pluginPath = None self.pluginPath = None
self.deployedFrameworks = [] self.deployedFrameworks = []
def detectQtPath(self, frameworkDirectory): def detectQtPath(self, frameworkDirectory):
parentDir = os.path.dirname(frameworkDirectory) parentDir = os.path.dirname(frameworkDirectory)
if os.path.exists(os.path.join(parentDir, "translations")): if os.path.exists(os.path.join(parentDir, "translations")):
@ -186,7 +186,7 @@ class DeploymentInfo(object):
pluginPath = os.path.join(self.qtPath, "plugins") pluginPath = os.path.join(self.qtPath, "plugins")
if os.path.exists(pluginPath): if os.path.exists(pluginPath):
self.pluginPath = pluginPath self.pluginPath = pluginPath
def usesFramework(self, name): def usesFramework(self, name):
nameDot = "%s." % name nameDot = "%s." % name
libNameDot = "lib%s." % name libNameDot = "lib%s." % name
@ -215,7 +215,7 @@ def getFrameworks(binaryPath, verbose):
otoolLines.pop(0) # First line is the inspected binary otoolLines.pop(0) # First line is the inspected binary
if ".framework" in binaryPath or binaryPath.endswith(".dylib"): if ".framework" in binaryPath or binaryPath.endswith(".dylib"):
otoolLines.pop(0) # Frameworks and dylibs list themselves as a dependency. otoolLines.pop(0) # Frameworks and dylibs list themselves as a dependency.
libraries = [] libraries = []
for line in otoolLines: for line in otoolLines:
line = line.replace("@loader_path", os.path.dirname(binaryPath)) line = line.replace("@loader_path", os.path.dirname(binaryPath))
@ -225,7 +225,7 @@ def getFrameworks(binaryPath, verbose):
print("Found framework:") print("Found framework:")
print(info) print(info)
libraries.append(info) libraries.append(info)
return libraries return libraries
def runInstallNameTool(action, *args): def runInstallNameTool(action, *args):
@ -262,16 +262,16 @@ def copyFramework(framework, path, verbose):
fromPath = framework.sourceFilePath fromPath = framework.sourceFilePath
toDir = os.path.join(path, framework.destinationDirectory) toDir = os.path.join(path, framework.destinationDirectory)
toPath = os.path.join(toDir, framework.binaryName) toPath = os.path.join(toDir, framework.binaryName)
if not os.path.exists(fromPath): if not os.path.exists(fromPath):
raise RuntimeError("No file at " + fromPath) raise RuntimeError("No file at " + fromPath)
if os.path.exists(toPath): if os.path.exists(toPath):
return None # Already there return None # Already there
if not os.path.exists(toDir): if not os.path.exists(toDir):
os.makedirs(toDir) os.makedirs(toDir)
shutil.copy2(fromPath, toPath) shutil.copy2(fromPath, toPath)
if verbose >= 3: if verbose >= 3:
print("Copied:", fromPath) print("Copied:", fromPath)
@ -313,53 +313,53 @@ def copyFramework(framework, path, verbose):
if verbose >= 3: if verbose >= 3:
print("Copied for libQtGui:", qtMenuNibSourcePath) print("Copied for libQtGui:", qtMenuNibSourcePath)
print(" to:", qtMenuNibDestinationPath) print(" to:", qtMenuNibDestinationPath)
return toPath return toPath
def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploymentInfo=None): def deployFrameworks(frameworks, bundlePath, binaryPath, strip, verbose, deploymentInfo=None):
if deploymentInfo is None: if deploymentInfo is None:
deploymentInfo = DeploymentInfo() deploymentInfo = DeploymentInfo()
while len(frameworks) > 0: while len(frameworks) > 0:
framework = frameworks.pop(0) framework = frameworks.pop(0)
deploymentInfo.deployedFrameworks.append(framework.frameworkName) deploymentInfo.deployedFrameworks.append(framework.frameworkName)
if verbose >= 2: if verbose >= 2:
print("Processing", framework.frameworkName, "...") print("Processing", framework.frameworkName, "...")
# Get the Qt path from one of the Qt frameworks # Get the Qt path from one of the Qt frameworks
if deploymentInfo.qtPath is None and framework.isQtFramework(): if deploymentInfo.qtPath is None and framework.isQtFramework():
deploymentInfo.detectQtPath(framework.frameworkDirectory) deploymentInfo.detectQtPath(framework.frameworkDirectory)
if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath): if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath):
if verbose >= 2: if verbose >= 2:
print(framework.frameworkName, "already deployed, skipping.") print(framework.frameworkName, "already deployed, skipping.")
continue continue
# install_name_tool the new id into the binary # install_name_tool the new id into the binary
changeInstallName(framework.installName, framework.deployedInstallName, binaryPath, verbose) changeInstallName(framework.installName, framework.deployedInstallName, binaryPath, verbose)
# Copy framework to app bundle. # Copy framework to app bundle.
deployedBinaryPath = copyFramework(framework, bundlePath, verbose) deployedBinaryPath = copyFramework(framework, bundlePath, verbose)
# Skip the rest if already was deployed. # Skip the rest if already was deployed.
if deployedBinaryPath is None: if deployedBinaryPath is None:
continue continue
if strip: if strip:
runStrip(deployedBinaryPath, verbose) runStrip(deployedBinaryPath, verbose)
# install_name_tool it a new id. # install_name_tool it a new id.
changeIdentification(framework.deployedInstallName, deployedBinaryPath, verbose) changeIdentification(framework.deployedInstallName, deployedBinaryPath, verbose)
# Check for framework dependencies # Check for framework dependencies
dependencies = getFrameworks(deployedBinaryPath, verbose) dependencies = getFrameworks(deployedBinaryPath, verbose)
for dependency in dependencies: for dependency in dependencies:
changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath, verbose) changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath, verbose)
# Deploy framework if necessary. # Deploy framework if necessary.
if dependency.frameworkName not in deploymentInfo.deployedFrameworks and dependency not in frameworks: if dependency.frameworkName not in deploymentInfo.deployedFrameworks and dependency not in frameworks:
frameworks.append(dependency) frameworks.append(dependency)
return deploymentInfo return deploymentInfo
def deployFrameworksForAppBundle(applicationBundle, strip, verbose): def deployFrameworksForAppBundle(applicationBundle, strip, verbose):
@ -440,30 +440,30 @@ def deployPlugins(appBundleInfo, deploymentInfo, strip, verbose):
continue continue
plugins.append((pluginDirectory, pluginName)) plugins.append((pluginDirectory, pluginName))
for pluginDirectory, pluginName in plugins: for pluginDirectory, pluginName in plugins:
if verbose >= 2: if verbose >= 2:
print("Processing plugin", os.path.join(pluginDirectory, pluginName), "...") print("Processing plugin", os.path.join(pluginDirectory, pluginName), "...")
sourcePath = os.path.join(deploymentInfo.pluginPath, pluginDirectory, pluginName) sourcePath = os.path.join(deploymentInfo.pluginPath, pluginDirectory, pluginName)
destinationDirectory = os.path.join(appBundleInfo.pluginPath, pluginDirectory) destinationDirectory = os.path.join(appBundleInfo.pluginPath, pluginDirectory)
if not os.path.exists(destinationDirectory): if not os.path.exists(destinationDirectory):
os.makedirs(destinationDirectory) os.makedirs(destinationDirectory)
destinationPath = os.path.join(destinationDirectory, pluginName) destinationPath = os.path.join(destinationDirectory, pluginName)
shutil.copy2(sourcePath, destinationPath) shutil.copy2(sourcePath, destinationPath)
if verbose >= 3: if verbose >= 3:
print("Copied:", sourcePath) print("Copied:", sourcePath)
print(" to:", destinationPath) print(" to:", destinationPath)
if strip: if strip:
runStrip(destinationPath, verbose) runStrip(destinationPath, verbose)
dependencies = getFrameworks(destinationPath, verbose) dependencies = getFrameworks(destinationPath, verbose)
for dependency in dependencies: for dependency in dependencies:
changeInstallName(dependency.installName, dependency.deployedInstallName, destinationPath, verbose) changeInstallName(dependency.installName, dependency.deployedInstallName, destinationPath, verbose)
# Deploy framework if necessary. # Deploy framework if necessary.
if dependency.frameworkName not in deploymentInfo.deployedFrameworks: if dependency.frameworkName not in deploymentInfo.deployedFrameworks:
deployFrameworks([dependency], appBundleInfo.path, destinationPath, strip, verbose, deploymentInfo) deployFrameworks([dependency], appBundleInfo.path, destinationPath, strip, verbose, deploymentInfo)
@ -541,7 +541,7 @@ if len(config.fancy) == 1:
if verbose >= 1: if verbose >= 1:
sys.stderr.write("Error: Could not import plistlib which is required for fancy disk images.\n") sys.stderr.write("Error: Could not import plistlib which is required for fancy disk images.\n")
sys.exit(1) sys.exit(1)
p = config.fancy[0] p = config.fancy[0]
if verbose >= 3: if verbose >= 3:
print("Fancy: Loading \"%s\"..." % p) print("Fancy: Loading \"%s\"..." % p)
@ -549,14 +549,14 @@ if len(config.fancy) == 1:
if verbose >= 1: if verbose >= 1:
sys.stderr.write("Error: Could not find fancy disk image plist at \"%s\"\n" % (p)) sys.stderr.write("Error: Could not find fancy disk image plist at \"%s\"\n" % (p))
sys.exit(1) sys.exit(1)
try: try:
fancy = plistlib.readPlist(p) fancy = plistlib.readPlist(p)
except: except:
if verbose >= 1: if verbose >= 1:
sys.stderr.write("Error: Could not parse fancy disk image plist at \"%s\"\n" % (p)) sys.stderr.write("Error: Could not parse fancy disk image plist at \"%s\"\n" % (p))
sys.exit(1) sys.exit(1)
try: try:
assert "window_bounds" not in fancy or (isinstance(fancy["window_bounds"], list) and len(fancy["window_bounds"]) == 4) assert "window_bounds" not in fancy or (isinstance(fancy["window_bounds"], list) and len(fancy["window_bounds"]) == 4)
assert "background_picture" not in fancy or isinstance(fancy["background_picture"], str) assert "background_picture" not in fancy or isinstance(fancy["background_picture"], str)
@ -570,7 +570,7 @@ if len(config.fancy) == 1:
if verbose >= 1: if verbose >= 1:
sys.stderr.write("Error: Bad format of fancy disk image plist at \"%s\"\n" % (p)) sys.stderr.write("Error: Bad format of fancy disk image plist at \"%s\"\n" % (p))
sys.exit(1) sys.exit(1)
if "background_picture" in fancy: if "background_picture" in fancy:
bp = fancy["background_picture"] bp = fancy["background_picture"]
if verbose >= 3: if verbose >= 3:
@ -591,7 +591,7 @@ else:
if os.path.exists("dist"): if os.path.exists("dist"):
if verbose >= 2: if verbose >= 2:
print("+ Removing old dist folder +") print("+ Removing old dist folder +")
shutil.rmtree("dist") shutil.rmtree("dist")
# ------------------------------------------------ # ------------------------------------------------
@ -603,7 +603,7 @@ else:
# ------------------------------------------------ # ------------------------------------------------
target = os.path.join("dist", "Litecoin-Qt.app") target = os.path.join("dist", "Kevacoin-Qt.app")
if verbose >= 2: if verbose >= 2:
print("+ Copying source bundle +") print("+ Copying source bundle +")
@ -638,7 +638,7 @@ except RuntimeError as e:
if config.plugins: if config.plugins:
if verbose >= 2: if verbose >= 2:
print("+ Deploying plugins +") print("+ Deploying plugins +")
try: try:
deployPlugins(applicationBundle, deploymentInfo, config.strip, verbose) deployPlugins(applicationBundle, deploymentInfo, config.strip, verbose)
except RuntimeError as e: except RuntimeError as e:
@ -741,26 +741,26 @@ if config.dmg is not None:
elif verbose >= 3: elif verbose >= 3:
hdiutil_args.append("-verbose") hdiutil_args.append("-verbose")
run = subprocess.check_call run = subprocess.check_call
for key, value in kwargs.items(): for key, value in kwargs.items():
hdiutil_args.append("-" + key) hdiutil_args.append("-" + key)
if not value is True: if not value is True:
hdiutil_args.append(str(value)) hdiutil_args.append(str(value))
return run(hdiutil_args) return run(hdiutil_args)
if verbose >= 2: if verbose >= 2:
if fancy is None: if fancy is None:
print("+ Creating .dmg disk image +") print("+ Creating .dmg disk image +")
else: else:
print("+ Preparing .dmg disk image +") print("+ Preparing .dmg disk image +")
if config.dmg != "": if config.dmg != "":
dmg_name = config.dmg dmg_name = config.dmg
else: else:
spl = app_bundle_name.split(" ") spl = app_bundle_name.split(" ")
dmg_name = spl[0] + "".join(p.capitalize() for p in spl[1:]) dmg_name = spl[0] + "".join(p.capitalize() for p in spl[1:])
if fancy is None: if fancy is None:
try: try:
runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname=volname, ov=True) runHDIUtil("create", dmg_name, srcfolder="dist", format="UDBZ", volname=volname, ov=True)
@ -774,28 +774,28 @@ if config.dmg is not None:
for file in files: for file in files:
size += os.path.getsize(os.path.join(path, file)) size += os.path.getsize(os.path.join(path, file))
size += int(size * 0.15) size += int(size * 0.15)
if verbose >= 3: if verbose >= 3:
print("Creating temp image for modification...") print("Creating temp image for modification...")
try: try:
runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname=volname, ov=True) runHDIUtil("create", dmg_name + ".temp", srcfolder="dist", format="UDRW", size=size, volname=volname, ov=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
sys.exit(e.returncode) sys.exit(e.returncode)
if verbose >= 3: if verbose >= 3:
print("Attaching temp image...") print("Attaching temp image...")
try: try:
output = runHDIUtil("attach", dmg_name + ".temp", readwrite=True, noverify=True, noautoopen=True, capture_stdout=True) output = runHDIUtil("attach", dmg_name + ".temp", readwrite=True, noverify=True, noautoopen=True, capture_stdout=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
sys.exit(e.returncode) sys.exit(e.returncode)
m = re.search("/Volumes/(.+$)", output.decode()) m = re.search("/Volumes/(.+$)", output.decode())
disk_root = m.group(0) disk_root = m.group(0)
disk_name = m.group(1) disk_name = m.group(1)
if verbose >= 2: if verbose >= 2:
print("+ Applying fancy settings +") print("+ Applying fancy settings +")
if "background_picture" in fancy: if "background_picture" in fancy:
bg_path = os.path.join(disk_root, ".background", os.path.basename(fancy["background_picture"])) bg_path = os.path.join(disk_root, ".background", os.path.basename(fancy["background_picture"]))
os.mkdir(os.path.dirname(bg_path)) os.mkdir(os.path.dirname(bg_path))
@ -804,10 +804,10 @@ if config.dmg is not None:
shutil.copy2(fancy["background_picture"], bg_path) shutil.copy2(fancy["background_picture"], bg_path)
else: else:
bg_path = None bg_path = None
if fancy.get("applications_symlink", False): if fancy.get("applications_symlink", False):
os.symlink("/Applications", os.path.join(disk_root, "Applications")) os.symlink("/Applications", os.path.join(disk_root, "Applications"))
# The Python appscript package broke with OSX 10.8 and isn't being fixed. # The Python appscript package broke with OSX 10.8 and isn't being fixed.
# So we now build up an AppleScript string and use the osascript command # So we now build up an AppleScript string and use the osascript command
# to make the .dmg file pretty: # to make the .dmg file pretty:
@ -873,12 +873,12 @@ if config.dmg is not None:
if verbose >= 2: if verbose >= 2:
print("+ Finalizing .dmg disk image +") print("+ Finalizing .dmg disk image +")
time.sleep(5) time.sleep(5)
try: try:
runHDIUtil("convert", dmg_name + ".temp", format="UDBZ", o=dmg_name + ".dmg", ov=True) runHDIUtil("convert", dmg_name + ".temp", format="UDBZ", o=dmg_name + ".dmg", ov=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
sys.exit(e.returncode) sys.exit(e.returncode)
os.unlink(dmg_name + ".temp.dmg") os.unlink(dmg_name + ".temp.dmg")
# ------------------------------------------------ # ------------------------------------------------

4
contrib/qos/README.md

@ -1,5 +1,5 @@
### Qos ### ### Qos ###
This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Litecoin network. It limits outbound TCP traffic with a source or destination port of 9333, but not if the destination IP is within a LAN (defined as 192.168.x.x). This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Kevacoin network. It limits outbound TCP traffic with a source or destination port of 9333, but not if the destination IP is within a LAN (defined as 192.168.x.x).
This means one can have an always-on litecoind instance running, and another local litecoind/litecoin-qt instance which connects to this node and receives blocks from it. This means one can have an always-on kevacoind instance running, and another local kevacoind/kevacoin-qt instance which connects to this node and receives blocks from it.

2
contrib/qos/tc.sh

@ -6,7 +6,7 @@
IF="eth0" IF="eth0"
#limit of the network interface in question #limit of the network interface in question
LINKCEIL="1gbit" LINKCEIL="1gbit"
#limit outbound Litecoin protocol traffic to this rate #limit outbound Kevacoin protocol traffic to this rate
LIMIT="160kbit" LIMIT="160kbit"
#defines the address space for which you wish to disable rate limiting #defines the address space for which you wish to disable rate limiting
LOCALNET="192.168.0.0/16" LOCALNET="192.168.0.0/16"

6
contrib/seeds/generate-seeds.py

@ -11,7 +11,7 @@ argument:
nodes_main.txt nodes_main.txt
nodes_test.txt nodes_test.txt
These files must consist of lines in the format These files must consist of lines in the format
<ip> <ip>
<ip>:<port> <ip>:<port>
@ -120,7 +120,7 @@ def main():
g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n') g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n') g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
g.write('/**\n') g.write('/**\n')
g.write(' * List of fixed seed nodes for the litecoin network\n') g.write(' * List of fixed seed nodes for the kevacoin network\n')
g.write(' * AUTOGENERATED by contrib/seeds/generate-seeds.py\n') g.write(' * AUTOGENERATED by contrib/seeds/generate-seeds.py\n')
g.write(' *\n') g.write(' *\n')
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n') g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
@ -132,7 +132,7 @@ def main():
with open(os.path.join(indir,'nodes_test.txt'),'r') as f: with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_test', 19335) process_nodes(g, f, 'pnSeed6_test', 19335)
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n') g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
if __name__ == '__main__': if __name__ == '__main__':
main() main()

4
contrib/testgen/README.md

@ -1,8 +1,8 @@
### TestGen ### ### TestGen ###
Utilities to generate test vectors for the data-driven Litecoin tests. Utilities to generate test vectors for the data-driven Kevacoin tests.
Usage: Usage:
gen_base58_test_vectors.py valid 50 > ../../src/test/data/base58_keys_valid.json gen_base58_test_vectors.py valid 50 > ../../src/test/data/base58_keys_valid.json
gen_base58_test_vectors.py invalid 50 > ../../src/test/data/base58_keys_invalid.json gen_base58_test_vectors.py invalid 50 > ../../src/test/data/base58_keys_invalid.json

12
contrib/tidy_datadir.sh

@ -7,7 +7,7 @@ if [ -d "$1" ]; then
cd "$1" || exit 1 cd "$1" || exit 1
else else
echo "Usage: $0 <datadir>" >&2 echo "Usage: $0 <datadir>" >&2
echo "Removes obsolete Litecoin database files" >&2 echo "Removes obsolete Kevacoin database files" >&2
exit 1 exit 1
fi fi
@ -19,22 +19,22 @@ if [ -f wallet.dat -a -f peers.dat -a -f chainstate/CURRENT -a -f blocks/index/C
case $LEVEL in case $LEVEL in
0) 0)
echo "Error: no Litecoin datadir detected." echo "Error: no Kevacoin datadir detected."
exit 1 exit 1
;; ;;
1) 1)
echo "Detected old Litecoin datadir (before 0.7)." echo "Detected old Kevacoin datadir (before 0.7)."
echo "Nothing to do." echo "Nothing to do."
exit 0 exit 0
;; ;;
2) 2)
echo "Detected Litecoin 0.7 datadir." echo "Detected Kevacoin 0.7 datadir."
;; ;;
3) 3)
echo "Detected Litecoin pre-0.8 datadir." echo "Detected Kevacoin pre-0.8 datadir."
;; ;;
4) 4)
echo "Detected Litecoin 0.8 datadir." echo "Detected Kevacoin 0.8 datadir."
;; ;;
esac esac

6
contrib/windeploy/win-codesign.cert

@ -1,7 +1,7 @@
Bag Attributes Bag Attributes
friendlyName: Litecoin Foundation LTD.'s DigiCert Inc ID friendlyName: Kevacoin Foundation LTD.'s DigiCert Inc ID
localKeyID: 2F AA 3A 86 85 98 1A 53 D5 23 F0 2E A0 22 CC 51 21 6D 78 B0 localKeyID: 2F AA 3A 86 85 98 1A 53 D5 23 F0 2E A0 22 CC 51 21 6D 78 B0
subject=/C=SG/L=Singapore/O=Litecoin Foundation LTD./CN=Litecoin Foundation LTD. subject=/C=SG/L=Singapore/O=Kevacoin Foundation LTD./CN=Kevacoin Foundation LTD.
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Assured ID Code Signing CA issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Assured ID Code Signing CA
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIFKjCCBBKgAwIBAgIQDvRXzQ2H3xYGUBDUDBeH/TANBgkqhkiG9w0BAQsFADBy MIIFKjCCBBKgAwIBAgIQDvRXzQ2H3xYGUBDUDBeH/TANBgkqhkiG9w0BAQsFADBy

2
contrib/zmq/zmq_sub.py

@ -7,7 +7,7 @@
ZMQ example using python3's asyncio ZMQ example using python3's asyncio
Litecoind should be started with the command line arguments: Litecoind should be started with the command line arguments:
litecoind -testnet -daemon \ kevacoind -testnet -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28332 \ -zmqpubrawtx=tcp://127.0.0.1:28332 \
-zmqpubrawblock=tcp://127.0.0.1:28332 \ -zmqpubrawblock=tcp://127.0.0.1:28332 \
-zmqpubhashtx=tcp://127.0.0.1:28332 \ -zmqpubhashtx=tcp://127.0.0.1:28332 \

4
contrib/zmq/zmq_sub3.4.py

@ -6,8 +6,8 @@
""" """
ZMQ example using python3's asyncio ZMQ example using python3's asyncio
Litecoin should be started with the command line arguments: Kevacoin should be started with the command line arguments:
litecoind -testnet -daemon \ kevacoind -testnet -daemon \
-zmqpubrawtx=tcp://127.0.0.1:28332 \ -zmqpubrawtx=tcp://127.0.0.1:28332 \
-zmqpubrawblock=tcp://127.0.0.1:28332 \ -zmqpubrawblock=tcp://127.0.0.1:28332 \
-zmqpubhashtx=tcp://127.0.0.1:28332 \ -zmqpubhashtx=tcp://127.0.0.1:28332 \

6
depends/README.md

@ -12,9 +12,9 @@ For example:
make HOST=x86_64-w64-mingw32 -j4 make HOST=x86_64-w64-mingw32 -j4
A prefix will be generated that's suitable for plugging into Litecoin's A prefix will be generated that's suitable for plugging into Kevacoin's
configure. In the above example, a dir named x86_64-w64-mingw32 will be configure. In the above example, a dir named x86_64-w64-mingw32 will be
created. To use it for Litecoin: created. To use it for Kevacoin:
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32 ./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
@ -59,7 +59,7 @@ The following can be set when running make: make FOO=bar
BUILD_ID_SALT: Optional salt to use when generating build package ids BUILD_ID_SALT: Optional salt to use when generating build package ids
If some packages are not built, for example `make NO_WALLET=1`, the appropriate If some packages are not built, for example `make NO_WALLET=1`, the appropriate
options will be passed to litecoin's configure. In this case, `--disable-wallet`. options will be passed to kevacoin's configure. In this case, `--disable-wallet`.
Additional targets: Additional targets:

4
depends/description.md

@ -1,4 +1,4 @@
This is a system of building and caching dependencies necessary for building Litecoin. This is a system of building and caching dependencies necessary for building Kevacoin.
There are several features that make it different from most similar systems: There are several features that make it different from most similar systems:
### It is designed to be builder and host agnostic ### It is designed to be builder and host agnostic
@ -26,7 +26,7 @@ Before building, a unique build-id is generated for each package. This id
consists of a hash of all files used to build the package (Makefiles, packages, consists of a hash of all files used to build the package (Makefiles, packages,
etc), and as well as a hash of the same data for each recursive dependency. If etc), and as well as a hash of the same data for each recursive dependency. If
any portion of a package's build recipe changes, it will be rebuilt as well as any portion of a package's build recipe changes, it will be rebuilt as well as
any other package that depends on it. If any of the main makefiles (Makefile, any other package that depends on it. If any of the main makefiles (Makefile,
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the funcs.mk, etc) are changed, all packages will be rebuilt. After building, the
results are cached into a tarball that can be re-used and distributed. results are cached into a tarball that can be re-used and distributed.

2
doc/README_osx.md

@ -92,6 +92,6 @@ build process to remain somewhat deterministic. Here's how it works:
that have been previously (deterministically) built in order to create a that have been previously (deterministically) built in order to create a
final dmg. final dmg.
- The Apple keyholder uses this unsigned app to create a detached signature, - The Apple keyholder uses this unsigned app to create a detached signature,
using the script that is also included there. Detached signatures are available from this [repository](https://github.com/litecoin-project/litecoin-detached-sigs). using the script that is also included there. Detached signatures are available from this [repository](https://github.com/kevacoin-project/kevacoin-detached-sigs).
- Builders feed the unsigned app + detached signature back into Gitian. It - Builders feed the unsigned app + detached signature back into Gitian. It
uses the pre-built tools to recombine the pieces into a deterministic dmg. uses the pre-built tools to recombine the pieces into a deterministic dmg.

14
doc/README_windows.txt

@ -1,9 +1,9 @@
Litecoin Core Kevacoin Core
============= =============
Intro Intro
----- -----
Litecoin is a free open source peer-to-peer electronic cash system that is Kevacoin is a free open source peer-to-peer electronic cash system that is
completely decentralized, without the need for a central server or trusted completely decentralized, without the need for a central server or trusted
parties. Users hold the crypto keys to their own money and transact directly parties. Users hold the crypto keys to their own money and transact directly
with each other, with the help of a P2P network to check for double-spending. with each other, with the help of a P2P network to check for double-spending.
@ -11,13 +11,13 @@ with each other, with the help of a P2P network to check for double-spending.
Setup Setup
----- -----
Unpack the files into a directory and run litecoin-qt.exe. Unpack the files into a directory and run kevacoin-qt.exe.
Litecoin Core is the original Litecoin client and it builds the backbone of the network. Kevacoin Core is the original Kevacoin client and it builds the backbone of the network.
However, it downloads and stores the entire history of Litecoin transactions; However, it downloads and stores the entire history of Kevacoin transactions;
depending on the speed of your computer and network connection, the synchronization depending on the speed of your computer and network connection, the synchronization
process can take anywhere from a few hours to a day or more. process can take anywhere from a few hours to a day or more.
See the litecoin wiki at: See the kevacoin wiki at:
https://litecoin.info/ https://kevacoin.info/
for more help and information. for more help and information.

4
doc/REST-interface.md

@ -67,7 +67,7 @@ $ curl localhost:19332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff76
{ {
"txvers" : 1 "txvers" : 1
"height" : 2147483647, "height" : 2147483647,
"value" : 8.8687, "value" : 8.8687,
"scriptPubKey" : { "scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG", "asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac", "hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
@ -100,4 +100,4 @@ Only supports JSON as output format.
Risks Risks
------------- -------------
Running a web browser on the same node with a REST enabled litecoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:9332/rest/tx/1234567890.json">` which might break the nodes privacy. Running a web browser on the same node with a REST enabled kevacoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:9332/rest/tx/1234567890.json">` which might break the nodes privacy.

2
doc/assets-attribution.md

@ -1 +1 @@
The list of assets used in the litecoin source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright). The list of assets used in the kevacoin source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright).

4
doc/benchmarking.md

@ -1,12 +1,12 @@
Benchmarking Benchmarking
============ ============
Litecoin Core has an internal benchmarking framework, with benchmarks Kevacoin Core has an internal benchmarking framework, with benchmarks
for cryptographic algorithms such as SHA1, SHA256, SHA512 and RIPEMD160. As well as the rolling bloom filter. for cryptographic algorithms such as SHA1, SHA256, SHA512 and RIPEMD160. As well as the rolling bloom filter.
Running Running
--------------------- ---------------------
After compiling Litecoin-core, the benchmarks can be run with: After compiling Kevacoin-core, the benchmarks can be run with:
src/bench/bench_Litecoin src/bench/bench_Litecoin

2
doc/dependencies.md

@ -1,7 +1,7 @@
Dependencies Dependencies
============ ============
These are the dependencies currently used by Litecoin Core. You can find instructions for installing them in the `build-*.md` file for your platform. These are the dependencies currently used by Kevacoin Core. You can find instructions for installing them in the `build-*.md` file for your platform.
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html) | | Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html) |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |

24
doc/developer-notes.md

@ -162,7 +162,7 @@ that run in -regtest mode.
**DEBUG_LOCKORDER** **DEBUG_LOCKORDER**
Litecoin Core is a multithreaded application, and deadlocks or other multithreading bugs Kevacoin Core is a multithreaded application, and deadlocks or other multithreading bugs
can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure
CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks
are held, and adds warnings to the debug.log file if inconsistencies are detected. are held, and adds warnings to the debug.log file if inconsistencies are detected.
@ -179,7 +179,7 @@ in-tree. Example use:
$ valgrind --suppressions=contrib/valgrind.supp src/test/test_litecoin $ valgrind --suppressions=contrib/valgrind.supp src/test/test_litecoin
$ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \ $ valgrind --suppressions=contrib/valgrind.supp --leak-check=full \
--show-leak-kinds=all src/test/test_litecoin --log_level=test_suite --show-leak-kinds=all src/test/test_litecoin --log_level=test_suite
$ valgrind -v --leak-check=full src/litecoind -printtoconsole $ valgrind -v --leak-check=full src/kevacoind -printtoconsole
``` ```
**compiling for test coverage** **compiling for test coverage**
@ -252,7 +252,7 @@ Ignoring IDE/editor files
In closed-source environments in which everyone uses the same IDE it is common In closed-source environments in which everyone uses the same IDE it is common
to add temporary files it produces to the project-wide `.gitignore` file. to add temporary files it produces to the project-wide `.gitignore` file.
However, in open source software such as Litecoin Core, where everyone uses However, in open source software such as Kevacoin Core, where everyone uses
their own editors/IDE/tools, it is less common. Only you know what files your their own editors/IDE/tools, it is less common. Only you know what files your
editor produces and this may change from version to version. The canonical way editor produces and this may change from version to version. The canonical way
to do this is thus to create your local gitignore. Add this to `~/.gitconfig`: to do this is thus to create your local gitignore. Add this to `~/.gitconfig`:
@ -282,9 +282,9 @@ Development guidelines
============================ ============================
A few non-style-related recommendations for developers, as well as points to A few non-style-related recommendations for developers, as well as points to
pay attention to for reviewers of Litecoin Core code. pay attention to for reviewers of Kevacoin Core code.
General Litecoin Core General Kevacoin Core
---------------------- ----------------------
- New features should be exposed on RPC first, then can be made available in the GUI - New features should be exposed on RPC first, then can be made available in the GUI
@ -400,7 +400,7 @@ Strings and formatting
- For `strprintf`, `LogPrint`, `LogPrintf` formatting characters don't need size specifiers - For `strprintf`, `LogPrint`, `LogPrintf` formatting characters don't need size specifiers
- *Rationale*: Litecoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion - *Rationale*: Kevacoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion
Variable names Variable names
-------------- --------------
@ -514,12 +514,12 @@ Subtrees
Several parts of the repository are subtrees of software maintained elsewhere. Several parts of the repository are subtrees of software maintained elsewhere.
Some of these are maintained by active developers of Litecoin Core, in which case changes should probably go Some of these are maintained by active developers of Kevacoin Core, in which case changes should probably go
directly upstream without being PRed directly against the project. They will be merged back in the next directly upstream without being PRed directly against the project. They will be merged back in the next
subtree merge. subtree merge.
Others are external projects without a tight relationship with our project. Changes to these should also Others are external projects without a tight relationship with our project. Changes to these should also
be sent upstream but bugfixes may also be prudent to PR against Litecoin Core so that they can be integrated be sent upstream but bugfixes may also be prudent to PR against Kevacoin Core so that they can be integrated
quickly. Cosmetic changes should be purely taken upstream. quickly. Cosmetic changes should be purely taken upstream.
There is a tool in contrib/devtools/git-subtree-check.sh to check a subtree directory for consistency with There is a tool in contrib/devtools/git-subtree-check.sh to check a subtree directory for consistency with
@ -582,7 +582,7 @@ Git and GitHub tips
[remote "upstream-pull"] [remote "upstream-pull"]
fetch = +refs/pull/*:refs/remotes/upstream-pull/* fetch = +refs/pull/*:refs/remotes/upstream-pull/*
url = git@github.com:litecoin-project/litecoin.git url = git@github.com:kevacoin-project/kevacoin.git
This will add an `upstream-pull` remote to your git repository, which can be fetched using `git fetch --all` This will add an `upstream-pull` remote to your git repository, which can be fetched using `git fetch --all`
or `git fetch upstream-pull`. Afterwards, you can use `upstream-pull/NUMBER/head` in arguments to `git show`, or `git fetch upstream-pull`. Afterwards, you can use `upstream-pull/NUMBER/head` in arguments to `git show`,
@ -648,7 +648,7 @@ A few guidelines for introducing and reviewing new RPC interfaces:
- Try not to overload methods on argument type. E.g. don't make `getblock(true)` and `getblock("hash")` - Try not to overload methods on argument type. E.g. don't make `getblock(true)` and `getblock("hash")`
do different things. do different things.
- *Rationale*: This is impossible to use with `litecoin-cli`, and can be surprising to users. - *Rationale*: This is impossible to use with `kevacoin-cli`, and can be surprising to users.
- *Exception*: Some RPC calls can take both an `int` and `bool`, most notably when a bool was switched - *Exception*: Some RPC calls can take both an `int` and `bool`, most notably when a bool was switched
to a multi-value, or due to other historical reasons. **Always** have false map to 0 and to a multi-value, or due to other historical reasons. **Always** have false map to 0 and
@ -667,7 +667,7 @@ A few guidelines for introducing and reviewing new RPC interfaces:
- Add every non-string RPC argument `(method, idx, name)` to the table `vRPCConvertParams` in `rpc/client.cpp`. - Add every non-string RPC argument `(method, idx, name)` to the table `vRPCConvertParams` in `rpc/client.cpp`.
- *Rationale*: `litecoin-cli` and the GUI debug console use this table to determine how to - *Rationale*: `kevacoin-cli` and the GUI debug console use this table to determine how to
convert a plaintext command line to JSON. If the types don't match, the method can be unusable convert a plaintext command line to JSON. If the types don't match, the method can be unusable
from there. from there.
@ -689,7 +689,7 @@ A few guidelines for introducing and reviewing new RPC interfaces:
RPCs whose behavior does *not* depend on the current chainstate may omit this RPCs whose behavior does *not* depend on the current chainstate may omit this
call. call.
- *Rationale*: In previous versions of Litecoin Core, the wallet was always - *Rationale*: In previous versions of Kevacoin Core, the wallet was always
in-sync with the chainstate (by virtue of them all being updated in the in-sync with the chainstate (by virtue of them all being updated in the
same cs_main lock). In order to maintain the behavior that wallet RPCs same cs_main lock). In order to maintain the behavior that wallet RPCs
return results as of at least the highest best-known block an RPC return results as of at least the highest best-known block an RPC

16
doc/dnsseed-policy.md

@ -1,12 +1,12 @@
Expectations for DNS Seed operators Expectations for DNS Seed operators
==================================== ====================================
Litecoin Core attempts to minimize the level of trust in DNS seeds, Kevacoin Core attempts to minimize the level of trust in DNS seeds,
but DNS seeds still pose a small amount of risk for the network. but DNS seeds still pose a small amount of risk for the network.
As such, DNS seeds must be run by entities which have some minimum As such, DNS seeds must be run by entities which have some minimum
level of trust within the Litecoin community. level of trust within the Kevacoin community.
Other implementations of Litecoin software may also use the same Other implementations of Kevacoin software may also use the same
seeds and may be more exposed. In light of this exposure, this seeds and may be more exposed. In light of this exposure, this
document establishes some basic expectations for operating dnsseeds. document establishes some basic expectations for operating dnsseeds.
@ -16,7 +16,7 @@ and not sell or transfer control of the DNS seed. Any hosting services
contracted by the operator are equally expected to uphold these expectations. contracted by the operator are equally expected to uphold these expectations.
1. The DNS seed results must consist exclusively of fairly selected and 1. The DNS seed results must consist exclusively of fairly selected and
functioning Litecoin nodes from the public network to the best of the functioning Kevacoin nodes from the public network to the best of the
operator's understanding and capability. operator's understanding and capability.
2. For the avoidance of doubt, the results may be randomized but must not 2. For the avoidance of doubt, the results may be randomized but must not
@ -26,7 +26,7 @@ urgent technical necessity and disclosed.
3. The results may not be served with a DNS TTL of less than one minute. 3. The results may not be served with a DNS TTL of less than one minute.
4. Any logging of DNS queries should be only that which is necessary 4. Any logging of DNS queries should be only that which is necessary
for the operation of the service or urgent health of the Litecoin for the operation of the service or urgent health of the Kevacoin
network and must not be retained longer than necessary nor disclosed network and must not be retained longer than necessary nor disclosed
to any third party. to any third party.
@ -42,13 +42,13 @@ details of their operating practices.
related to the DNS seed operation. related to the DNS seed operation.
If these expectations cannot be satisfied the operator should If these expectations cannot be satisfied the operator should
discontinue providing services and contact the active Litecoin discontinue providing services and contact the active Kevacoin
Core development team as well as posting on Core development team as well as posting on
[litecoin-dev](https://groups.google.com/forum/#!forum/litecoin-dev). [kevacoin-dev](https://groups.google.com/forum/#!forum/kevacoin-dev).
Behavior outside of these expectations may be reasonable in some Behavior outside of these expectations may be reasonable in some
situations but should be discussed in public in advance. situations but should be discussed in public in advance.
See also See also
---------- ----------
- [litecoin-seeder](https://github.com/pooler/litecoin-seeder) is a reference implementation of a DNS seed. - [kevacoin-seeder](https://github.com/pooler/kevacoin-seeder) is a reference implementation of a DNS seed.

6
doc/files.md

@ -1,14 +1,14 @@
* banlist.dat: stores the IPs/Subnets of banned nodes * banlist.dat: stores the IPs/Subnets of banned nodes
* litecoin.conf: contains configuration settings for litecoind or litecoin-qt * kevacoin.conf: contains configuration settings for kevacoind or kevacoin-qt
* litecoind.pid: stores the process id of litecoind while running * kevacoind.pid: stores the process id of kevacoind while running
* blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0 * blocks/blk000??.dat: block data (custom, 128 MiB per file); since 0.8.0
* blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8) * blocks/rev000??.dat; block undo data (custom); since 0.8.0 (format changed since pre-0.8)
* blocks/index/*; block index (LevelDB); since 0.8.0 * blocks/index/*; block index (LevelDB); since 0.8.0
* chainstate/*; block chain state database (LevelDB); since 0.8.0 * chainstate/*; block chain state database (LevelDB); since 0.8.0
* database/*: BDB database environment; only used for wallet since 0.8.0; moved to wallets/ directory on new installs since 0.16.0 * database/*: BDB database environment; only used for wallet since 0.8.0; moved to wallets/ directory on new installs since 0.16.0
* db.log: wallet database log file; moved to wallets/ directory on new installs since 0.16.0 * db.log: wallet database log file; moved to wallets/ directory on new installs since 0.16.0
* debug.log: contains debug information and general logging generated by litecoind or litecoin-qt * debug.log: contains debug information and general logging generated by kevacoind or kevacoin-qt
* fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0 * fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation; since 0.10.0
* mempool.dat: dump of the mempool's transactions; since 0.14.0. * mempool.dat: dump of the mempool's transactions; since 0.14.0.
* peers.dat: peer IP address database (custom format); since 0.7.0 * peers.dat: peer IP address database (custom format); since 0.7.0

30
doc/litecoin-release-notes/release-notes-0.10.2.2.md

@ -1,13 +1,13 @@
Litecoin Core version 0.10.2.2 is now available from: Kevacoin Core version 0.10.2.2 is now available from:
<https://download.litecoin.org/litecoin-0.10.2.2/> <https://download.kevacoin.org/kevacoin-0.10.2.2/>
This is a new major version release, bringing bug fixes and translation This is a new major version release, bringing bug fixes and translation
updates. It is recommended to upgrade to this version. updates. It is recommended to upgrade to this version.
Please report bugs using the issue tracker at github: Please report bugs using the issue tracker at github:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
Upgrading and downgrading Upgrading and downgrading
========================= =========================
@ -17,15 +17,15 @@ How to Upgrade
If you are running an older version, shut it down. Wait until it has completely If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over /Applications/Litecoin-Qt (on Mac) or installer (on Windows) or just copy over /Applications/Kevacoin-Qt (on Mac) or
litecoind/litecoin-qt (on Linux). kevacoind/kevacoin-qt (on Linux).
Downgrade warning Downgrade warning
------------------ ------------------
Because release 0.10+ and later makes use of headers-first synchronization and Because release 0.10+ and later makes use of headers-first synchronization and
parallel block download (see further), the block files and databases are not parallel block download (see further), the block files and databases are not
backwards-compatible with pre-0.10 versions of Litecoin Core or other software: backwards-compatible with pre-0.10 versions of Kevacoin Core or other software:
* Blocks will be stored on disk out of order (in the order they are * Blocks will be stored on disk out of order (in the order they are
received, really), which makes it incompatible with some tools or received, really), which makes it incompatible with some tools or
@ -44,14 +44,14 @@ supported and may break as soon as the older version attempts to reindex.
This does not affect wallet forward or backward compatibility. This does not affect wallet forward or backward compatibility.
Litecoin 0.10.2.2 Change log Kevacoin 0.10.2.2 Change log
============================ ============================
This release is based upon Bitcoin Core v0.10.2. Their upstream changelog applies to us and This release is based upon Bitcoin Core v0.10.2. Their upstream changelog applies to us and
is included in as separate release-notes. This section describes the Litecoin-specific differences. is included in as separate release-notes. This section describes the Kevacoin-specific differences.
Protocol: Protocol:
- Scrypt Proof-of-Work instead of sha256d, however block hashes are sha256d for performance reasons. - Scrypt Proof-of-Work instead of sha256d, however block hashes are sha256d for performance reasons.
- Litecoin TCP port 9333 (instead of 8333) - Kevacoin TCP port 9333 (instead of 8333)
- RPC TCP port 9332 (instead of 8332) - RPC TCP port 9332 (instead of 8332)
- Testnet TCP port 19333 (instead of 18333) - Testnet TCP port 19333 (instead of 18333)
- Testnet RPC TCP port 19332 (instead of 18332) - Testnet RPC TCP port 19332 (instead of 18332)
@ -62,22 +62,22 @@ Protocol:
- bnProofOfWorkLimit = >> 20 (instead of >> 32) - bnProofOfWorkLimit = >> 20 (instead of >> 32)
- See 9a980612005adffdeb2a17ca7a09fe126dd45e0e for Genesis Parameters - See 9a980612005adffdeb2a17ca7a09fe126dd45e0e for Genesis Parameters
- zeitgeist2 protection: b1b31d15cc720a1c186431b21ecc9d1a9062bcb6 Slightly different way to calculate difficulty changes. - zeitgeist2 protection: b1b31d15cc720a1c186431b21ecc9d1a9062bcb6 Slightly different way to calculate difficulty changes.
- Litecoin Core v0.10.2.2 is protocol version 70003 (instead of 70002) - Kevacoin Core v0.10.2.2 is protocol version 70003 (instead of 70002)
Relay: Relay:
- Litecoin Core rounds transaction size up to the nearest 1000 bytes before calculating fees. This size rounding behavior is to mimic fee calculation of Litecoin v0.6 and v0.8. - Kevacoin Core rounds transaction size up to the nearest 1000 bytes before calculating fees. This size rounding behavior is to mimic fee calculation of Kevacoin v0.6 and v0.8.
- Bitcoin's IsDust() is disabled in favor of Litecoin's fee-based dust penalty. - Bitcoin's IsDust() is disabled in favor of Kevacoin's fee-based dust penalty.
- Fee-based Dust Penalty: For each transaction output smaller than DUST_THRESHOLD (currently 0.001 LTC) the default relay/mining policy will expect an additional 1000 bytes of fee. Otherwise the transaction will be rejected from relay/mining. Such transactions are also disqualified from the free/high-priority transaction rule. - Fee-based Dust Penalty: For each transaction output smaller than DUST_THRESHOLD (currently 0.001 LTC) the default relay/mining policy will expect an additional 1000 bytes of fee. Otherwise the transaction will be rejected from relay/mining. Such transactions are also disqualified from the free/high-priority transaction rule.
- Miners and relays can adjust the expected fee per-KB with the -minrelaytxfee parameter. - Miners and relays can adjust the expected fee per-KB with the -minrelaytxfee parameter.
Wallet: Wallet:
- Coins smaller than 0.00001 LTC are by default ignored by the wallet. Use the -mininput parameter if you want to see smaller coins. - Coins smaller than 0.00001 LTC are by default ignored by the wallet. Use the -mininput parameter if you want to see smaller coins.
Notable changes since Litecoin v0.8 Notable changes since Kevacoin v0.8
=================================== ===================================
- The Block data and indexes of v0.10 are incompatible with v0.8 clients. You can upgrade from v0.8 but you downgrading is not possible. For this reason you may want to make a backup copy of your Data Directory. - The Block data and indexes of v0.10 are incompatible with v0.8 clients. You can upgrade from v0.8 but you downgrading is not possible. For this reason you may want to make a backup copy of your Data Directory.
- litecoind no longer sends RPC commands. You must use the separate litecoin-cli command line utility. - kevacoind no longer sends RPC commands. You must use the separate kevacoin-cli command line utility.
- Watch-Only addresses are now possible. - Watch-Only addresses are now possible.
Credits Credits

22
doc/litecoin-release-notes/release-notes-0.10.4.md

@ -1,6 +1,6 @@
Litecoin Core version 0.10.4.0 is now available from: Kevacoin Core version 0.10.4.0 is now available from:
<https://download.litecoin.org/litecoin-0.10.4.0/> <https://download.kevacoin.org/kevacoin-0.10.4.0/>
This is a new minor version release, bringing bug fixes, the BIP65 This is a new minor version release, bringing bug fixes, the BIP65
(CLTV) consensus change, and relay policy preparation for BIP113. It is (CLTV) consensus change, and relay policy preparation for BIP113. It is
@ -8,7 +8,7 @@ recommended to upgrade to this version as soon as possible.
Please report bugs using the issue tracker at github: Please report bugs using the issue tracker at github:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
Upgrading and downgrading Upgrading and downgrading
========================= =========================
@ -18,15 +18,15 @@ How to Upgrade
If you are running an older version, shut it down. Wait until it has completely If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over /Applications/Litecoin-Qt (on Mac) or installer (on Windows) or just copy over /Applications/Kevacoin-Qt (on Mac) or
litecoind/litecoin-qt (on Linux). kevacoind/kevacoin-qt (on Linux).
Downgrade warning Downgrade warning
------------------ ------------------
Because release 0.10+ and later makes use of headers-first synchronization and Because release 0.10+ and later makes use of headers-first synchronization and
parallel block download (see further), the block files and databases are not parallel block download (see further), the block files and databases are not
backwards-compatible with pre-0.10 versions of Litecoin Core or other software: backwards-compatible with pre-0.10 versions of Kevacoin Core or other software:
* Blocks will be stored on disk out of order (in the order they are * Blocks will be stored on disk out of order (in the order they are
received, really), which makes it incompatible with some tools or received, really), which makes it incompatible with some tools or
@ -66,13 +66,13 @@ specified point in the future.
longer accept new version 3 blocks and it will only accept version 4 longer accept new version 3 blocks and it will only accept version 4
blocks if they comply with the BIP65 rules for CLTV. blocks if they comply with the BIP65 rules for CLTV.
**Notice to miners:** Litecoin Core’s block templates are now for **Notice to miners:** Kevacoin Core’s block templates are now for
version 4 blocks only, and any mining software relying on its version 4 blocks only, and any mining software relying on its
getblocktemplate must be updated in parallel to use libblkmaker either getblocktemplate must be updated in parallel to use libblkmaker either
version v0.4.3 or any version from v0.5.2 onward. version v0.4.3 or any version from v0.5.2 onward.
- If you are solo mining, this will affect you the moment you upgrade - If you are solo mining, this will affect you the moment you upgrade
Litecoin Core, which must be done prior to BIP65 achieving its 951/1001 Kevacoin Core, which must be done prior to BIP65 achieving its 951/1001
status. status.
- If you are mining with the stratum mining protocol: this does not - If you are mining with the stratum mining protocol: this does not
@ -89,7 +89,7 @@ Windows bug fix for corrupted UTXO database on unclean shutdowns
---------------------------------------------------------------- ----------------------------------------------------------------
Several Windows users reported that they often need to reindex the Several Windows users reported that they often need to reindex the
entire blockchain after an unclean shutdown of Litecoin Core on Windows entire blockchain after an unclean shutdown of Kevacoin Core on Windows
(or an unclean shutdown of Windows itself). Although unclean shutdowns (or an unclean shutdown of Windows itself). Although unclean shutdowns
remain unsafe, this release no longer relies on memory-mapped files for remain unsafe, this release no longer relies on memory-mapped files for
the UTXO database, which significantly reduced the frequency of unclean the UTXO database, which significantly reduced the frequency of unclean
@ -104,8 +104,8 @@ next major release.
================= =================
This release is based upon Bitcoin Core v0.10.4. Their upstream changelog applies to us and This release is based upon Bitcoin Core v0.10.4. Their upstream changelog applies to us and
is included in as separate release-notes, see: [Release Notes](release-notes.md). is included in as separate release-notes, see: [Release Notes](release-notes.md).
This section describes the Litecoin-specific differences. This section describes the Kevacoin-specific differences.
- Added BIP65 CHECKLOCKTIMEVERIFY softfork. - Added BIP65 CHECKLOCKTIMEVERIFY softfork.
- Increased OP_RETURN relay size to 80 bytes. - Increased OP_RETURN relay size to 80 bytes.

104
doc/litecoin-release-notes/release-notes-0.13.2.md

@ -1,20 +1,20 @@
Litecoin Core version 0.13.2 is now available from: Kevacoin Core version 0.13.2 is now available from:
<https://download.litecoin.org/litecoin-0.13.2.1/> <https://download.kevacoin.org/kevacoin-0.13.2.1/>
This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations. This is a new major version release, including new features, various bugfixes and performance improvements, as well as updated translations.
It is recommended to upgrade to this version. It is recommended to upgrade to this version.
Please report bugs using the issue tracker at github: Please report bugs using the issue tracker at github:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
Compatibility Compatibility
============== ==============
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
an OS initially released in 2001. This means that not even critical security an OS initially released in 2001. This means that not even critical security
updates will be released anymore. Without security updates, using a litecoin updates will be released anymore. Without security updates, using a kevacoin
wallet on a XP machine is irresponsible at least. wallet on a XP machine is irresponsible at least.
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
@ -41,7 +41,7 @@ Notable changes
Signature validation using libsecp256k1 Signature validation using libsecp256k1
--------------------------------------- ---------------------------------------
ECDSA signatures inside Litecoin transactions now use validation using ECDSA signatures inside Kevacoin transactions now use validation using
[libsecp256k1](https://github.com/bitcoin-core/secp256k1) instead of OpenSSL. [libsecp256k1](https://github.com/bitcoin-core/secp256k1) instead of OpenSSL.
Depending on the platform, this means a significant speedup for raw signature Depending on the platform, this means a significant speedup for raw signature
@ -88,15 +88,15 @@ can often prevent an extra roundtrip before the actual block is downloaded.
Memory pool limiting Memory pool limiting
-------------------- --------------------
Previous versions of Litecoin Core had their mempool limited by checking Previous versions of Kevacoin Core had their mempool limited by checking
a transaction's fees against the node's minimum relay fee. There was no a transaction's fees against the node's minimum relay fee. There was no
upper bound on the size of the mempool and attackers could send a large upper bound on the size of the mempool and attackers could send a large
number of transactions paying just slighly more than the default minimum number of transactions paying just slighly more than the default minimum
relay fee to crash nodes with relatively low RAM. A temporary workaround relay fee to crash nodes with relatively low RAM. A temporary workaround
for previous versions of Litecoin Core was to raise the default minimum for previous versions of Kevacoin Core was to raise the default minimum
relay fee. relay fee.
Litecoin Core 0.13.2 will have a strict maximum size on the mempool. The Kevacoin Core 0.13.2 will have a strict maximum size on the mempool. The
default value is 300 MB and can be configured with the `-maxmempool` default value is 300 MB and can be configured with the `-maxmempool`
parameter. Whenever a transaction would cause the mempool to exceed parameter. Whenever a transaction would cause the mempool to exceed
its maximum size, the transaction that (along with in-mempool descendants) has its maximum size, the transaction that (along with in-mempool descendants) has
@ -105,7 +105,7 @@ minimum relay feerate will be increased to match this feerate plus the initial
minimum relay feerate. The initial minimum relay feerate is set to minimum relay feerate. The initial minimum relay feerate is set to
1000 satoshis per kB. 1000 satoshis per kB.
Litecoin Core 0.13.2 also introduces new default policy limits on the length and Kevacoin Core 0.13.2 also introduces new default policy limits on the length and
size of unconfirmed transaction chains that are allowed in the mempool size of unconfirmed transaction chains that are allowed in the mempool
(generally limiting the length of unconfirmed chains to 25 transactions, with a (generally limiting the length of unconfirmed chains to 25 transactions, with a
total size of 101 KB). These limits can be overriden using command line total size of 101 KB). These limits can be overriden using command line
@ -124,7 +124,7 @@ overridden with the option `-rpccookiefile`.
This is similar to Tor's CookieAuthentication: see This is similar to Tor's CookieAuthentication: see
https://www.torproject.org/docs/tor-manual.html.en https://www.torproject.org/docs/tor-manual.html.en
This allows running litecoind without having to do any manual configuration. This allows running kevacoind without having to do any manual configuration.
Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed
----------------------------------------------------------------- -----------------------------------------------------------------
@ -147,10 +147,10 @@ returned (previously all relevant hashes were returned).
Relay and Mining: Priority transactions Relay and Mining: Priority transactions
--------------------------------------- ---------------------------------------
Litecoin Core has a heuristic 'priority' based on coin value and age. This Kevacoin Core has a heuristic 'priority' based on coin value and age. This
calculation is used for relaying of transactions which do not pay the calculation is used for relaying of transactions which do not pay the
minimum relay fee, and can be used as an alternative way of sorting minimum relay fee, and can be used as an alternative way of sorting
transactions for mined blocks. Litecoin Core will relay transactions with transactions for mined blocks. Kevacoin Core will relay transactions with
insufficient fees depending on the setting of `-limitfreerelay=<r>` (default: insufficient fees depending on the setting of `-limitfreerelay=<r>` (default:
`r=15` kB per minute) and `-blockprioritysize=<s>`. `r=15` kB per minute) and `-blockprioritysize=<s>`.
@ -175,7 +175,7 @@ Note, however, that if mining priority transactions is left disabled, the
priority delta will be ignored and only the fee metric will be effective. priority delta will be ignored and only the fee metric will be effective.
This internal automatic prioritization handling is being considered for removal This internal automatic prioritization handling is being considered for removal
entirely in Litecoin Core 0.13, and it is at this time undecided whether the entirely in Kevacoin Core 0.13, and it is at this time undecided whether the
more accurate priority calculation for chained unconfirmed transactions will be more accurate priority calculation for chained unconfirmed transactions will be
restored. Community direction on this topic is particularly requested to help restored. Community direction on this topic is particularly requested to help
set project priorities. set project priorities.
@ -185,15 +185,15 @@ Automatically use Tor hidden services
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
API, to create and destroy 'ephemeral' hidden services programmatically. API, to create and destroy 'ephemeral' hidden services programmatically.
Litecoin Core has been updated to make use of this. Kevacoin Core has been updated to make use of this.
This means that if Tor is running (and proper authorization is available), This means that if Tor is running (and proper authorization is available),
Litecoin Core automatically creates a hidden service to listen on, without Kevacoin Core automatically creates a hidden service to listen on, without
manual configuration. Litecoin Core will also use Tor automatically to connect manual configuration. Kevacoin Core will also use Tor automatically to connect
to other .onion nodes if the control socket can be successfully opened. This to other .onion nodes if the control socket can be successfully opened. This
will positively affect the number of available .onion nodes and their usage. will positively affect the number of available .onion nodes and their usage.
This new feature is enabled by default if Litecoin Core is listening, and This new feature is enabled by default if Kevacoin Core is listening, and
a connection to Tor can be made. It can be configured with the `-listenonion`, a connection to Tor can be made. It can be configured with the `-listenonion`,
`-torcontrol` and `-torpassword` settings. To show verbose debugging `-torcontrol` and `-torpassword` settings. To show verbose debugging
information, pass `-debug=tor`. information, pass `-debug=tor`.
@ -214,8 +214,8 @@ Various improvements have been made to how the wallet calculates
transaction fees. transaction fees.
Users can decide to pay a predefined fee rate by setting `-paytxfee=<n>` Users can decide to pay a predefined fee rate by setting `-paytxfee=<n>`
(or `settxfee <n>` rpc during runtime). A value of `n=0` signals Litecoin (or `settxfee <n>` rpc during runtime). A value of `n=0` signals Kevacoin
Core to use floating fees. By default, Litecoin Core will use floating Core to use floating fees. By default, Kevacoin Core will use floating
fees. fees.
Based on past transaction data, floating fees approximate the fees Based on past transaction data, floating fees approximate the fees
@ -226,9 +226,9 @@ Sometimes, it is not possible to give good estimates, or an estimate
at all. Therefore, a fallback value can be set with `-fallbackfee=<f>` at all. Therefore, a fallback value can be set with `-fallbackfee=<f>`
(default: `0.0002` LTC/kB). (default: `0.0002` LTC/kB).
At all times, Litecoin Core will cap fees at `-maxtxfee=<x>` (default: At all times, Kevacoin Core will cap fees at `-maxtxfee=<x>` (default:
0.10) LTC. 0.10) LTC.
Furthermore, Litecoin Core will never create transactions paying less than Furthermore, Kevacoin Core will never create transactions paying less than
the current minimum relay fee. the current minimum relay fee.
Finally, a user can set the minimum fee rate for all transactions with Finally, a user can set the minimum fee rate for all transactions with
`-mintxfee=<i>`, which defaults to 1000 satoshis per kB. `-mintxfee=<i>`, which defaults to 1000 satoshis per kB.
@ -271,7 +271,7 @@ However, rescans as well as the RPCs `importwallet`, `importaddress`,
`importprivkey` are disabled. `importprivkey` are disabled.
To enable block pruning set `prune=<N>` on the command line or in To enable block pruning set `prune=<N>` on the command line or in
`litecoin.conf`, where `N` is the number of MiB to allot for `kevacoin.conf`, where `N` is the number of MiB to allot for
raw block & undo data. raw block & undo data.
A value of 0 disables pruning. The minimal value above 0 is 550. Your A value of 0 disables pruning. The minimal value above 0 is 550. Your
@ -330,7 +330,7 @@ and are affected by this change:
- RPC `decodescript` - RPC `decodescript`
- REST `/rest/tx/` (JSON format) - REST `/rest/tx/` (JSON format)
- REST `/rest/block/` (JSON format when including extended tx details) - REST `/rest/block/` (JSON format when including extended tx details)
- `litecoin-tx -json` - `kevacoin-tx -json`
For example, the `scriptSig.asm` property of a transaction input that For example, the `scriptSig.asm` property of a transaction input that
previously showed an assembly representation of: previously showed an assembly representation of:
@ -387,7 +387,7 @@ caching. A sample config for apache2 could look like:
# AuthType Digest # AuthType Digest
# ... # ...
# optional bypass litecoind rpc basic auth # optional bypass kevacoind rpc basic auth
# RequestHeader set Authorization "Basic <hash>" # RequestHeader set Authorization "Basic <hash>"
# get the <hash> from the shell with: base64 <<< litecoinrpc:<password> # get the <hash> from the shell with: base64 <<< litecoinrpc:<password>
</Location> </Location>
@ -401,7 +401,7 @@ Other P2P Changes
----------------- -----------------
The list of banned peers is now stored on disk rather than in memory. The list of banned peers is now stored on disk rather than in memory.
Restarting litecoind will no longer clear out the list of banned peers; instead Restarting kevacoind will no longer clear out the list of banned peers; instead
a new RPC call (`clearbanned`) can be used to manually clear the list. The new a new RPC call (`clearbanned`) can be used to manually clear the list. The new
`setban` RPC call can also be used to manually ban or unban a peer. `setban` RPC call can also be used to manually ban or unban a peer.
@ -415,21 +415,21 @@ For this reason the default was changed to 300 MiB in this release.
For nodes on low-memory systems, the database cache can be changed back to For nodes on low-memory systems, the database cache can be changed back to
100 MiB (or to another value) by either: 100 MiB (or to another value) by either:
- Adding `dbcache=100` in litecoin.conf - Adding `dbcache=100` in kevacoin.conf
- Changing it in the GUI under `Options → Size of database cache` - Changing it in the GUI under `Options → Size of database cache`
Note that the database cache setting has the most performance impact Note that the database cache setting has the most performance impact
during initial sync of a node, and when catching up after downtime. during initial sync of a node, and when catching up after downtime.
litecoin-cli: arguments privacy kevacoin-cli: arguments privacy
------------------------------ ------------------------------
The RPC command line client gained a new argument, `-stdin` The RPC command line client gained a new argument, `-stdin`
to read extra arguments from standard input, one per line until EOF/Ctrl-D. to read extra arguments from standard input, one per line until EOF/Ctrl-D.
For example: For example:
$ src/litecoin-cli -stdin walletpassphrase $ src/kevacoin-cli -stdin walletpassphrase
mysecretcode mysecretcode
120 120
..... press Ctrl-D here to end input ..... press Ctrl-D here to end input
@ -443,7 +443,7 @@ table by any user on the system.
C++11 and Python 3 C++11 and Python 3
------------------ ------------------
Various code modernizations have been done. The Litecoin Core code base has Various code modernizations have been done. The Kevacoin Core code base has
started using C++11. This means that a C++11-capable compiler is now needed for started using C++11. This means that a C++11-capable compiler is now needed for
building. Effectively this means GCC 4.7 or higher, or Clang 3.3 or higher. building. Effectively this means GCC 4.7 or higher, or Clang 3.3 or higher.
@ -462,9 +462,9 @@ executables.
The following extra files can be found in the download directory or torrent: The following extra files can be found in the download directory or torrent:
- `litecoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries for the most - `kevacoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries for the most
common 32-bit ARM architecture. common 32-bit ARM architecture.
- `litecoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries for the most - `kevacoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries for the most
common 64-bit ARM architecture. common 64-bit ARM architecture.
ARM builds are still experimental. If you have problems on a certain device or ARM builds are still experimental. If you have problems on a certain device or
@ -489,7 +489,7 @@ BIP112 soft fork to enforce OP_CHECKSEQUENCEVERIFY
-------------------------------------------------- --------------------------------------------------
[BIP112][] redefines the existing OP_NOP3 as OP_CHECKSEQUENCEVERIFY (CSV) [BIP112][] redefines the existing OP_NOP3 as OP_CHECKSEQUENCEVERIFY (CSV)
for a new opcode in the Litecoin scripting system that in combination with for a new opcode in the Kevacoin scripting system that in combination with
[BIP68][] allows execution pathways of a script to be restricted based [BIP68][] allows execution pathways of a script to be restricted based
on the age of the output being spent. on the age of the output being spent.
@ -499,10 +499,10 @@ For more information about the implementation, see
BIP113 locktime enforcement soft fork BIP113 locktime enforcement soft fork
------------------------------------- -------------------------------------
This release seeks to make mempool-only locktime enforcement using GetMedianTimePast() This release seeks to make mempool-only locktime enforcement using GetMedianTimePast()
a consensus rule. a consensus rule.
Litecoin transactions currently may specify a locktime indicating when Kevacoin transactions currently may specify a locktime indicating when
they may be added to a valid block. Current consensus rules require they may be added to a valid block. Current consensus rules require
that blocks have a block header time greater than the locktime specified that blocks have a block header time greater than the locktime specified
in any transaction in that block. in any transaction in that block.
@ -592,7 +592,7 @@ You can't disable HD key generation once you have created a HD wallet.
There is no distinction between internal (change) and external keys. There is no distinction between internal (change) and external keys.
HD wallets are incompatible with older versions of Litecoin Core. HD wallets are incompatible with older versions of Kevacoin Core.
[Pull request](https://github.com/bitcoin/bitcoin/pull/8035/files), [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) [Pull request](https://github.com/bitcoin/bitcoin/pull/8035/files), [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)
@ -645,7 +645,7 @@ files on disk. These two have now been split up, so that all blocks are known
before validation starts. This was necessary to make certain optimizations that before validation starts. This was necessary to make certain optimizations that
are available during normal synchronizations also available during reindexing. are available during normal synchronizations also available during reindexing.
The two phases are distinct in the Litecoin-Qt GUI. During the first one, The two phases are distinct in the Kevacoin-Qt GUI. During the first one,
"Reindexing blocks on disk" is shown. During the second (slower) one, "Reindexing blocks on disk" is shown. During the second (slower) one,
"Processing blocks on disk" is shown. "Processing blocks on disk" is shown.
@ -751,7 +751,7 @@ Low-level RPC changes
- RPC `decodescript` - RPC `decodescript`
- REST `/rest/tx/` (JSON format) - REST `/rest/tx/` (JSON format)
- REST `/rest/block/` (JSON format when including extended tx details) - REST `/rest/block/` (JSON format when including extended tx details)
- `litecoin-tx -json` - `kevacoin-tx -json`
- The sorting of the output of the `getrawmempool` output has changed. - The sorting of the output of the `getrawmempool` output has changed.
@ -786,9 +786,9 @@ covered by the txid. This provides several immediate benefits:
identifier (txid) of transactions without referencing the witness, which can identifier (txid) of transactions without referencing the witness, which can
sometimes be changed by third-parties (such as miners) or by co-signers in a sometimes be changed by third-parties (such as miners) or by co-signers in a
multisig spend. This solves all known cases of unwanted transaction multisig spend. This solves all known cases of unwanted transaction
malleability, which is a problem that makes programming Litecoin wallet malleability, which is a problem that makes programming Kevacoin wallet
software more difficult and which seriously complicates the design of smart software more difficult and which seriously complicates the design of smart
contracts for Litecoin. contracts for Kevacoin.
- **Capacity increase:** Segwit transactions contain new fields that are not - **Capacity increase:** Segwit transactions contain new fields that are not
part of the data currently used to calculate the size of a block, which part of the data currently used to calculate the size of a block, which
@ -802,7 +802,7 @@ covered by the txid. This provides several immediate benefits:
following section for details). following section for details).
- **Weighting data based on how it affects node performance:** Some parts of - **Weighting data based on how it affects node performance:** Some parts of
each Litecoin block need to be stored by nodes in order to validate future each Kevacoin block need to be stored by nodes in order to validate future
blocks; other parts of a block can be immediately forgotten (pruned) or used blocks; other parts of a block can be immediately forgotten (pruned) or used
only for helping other nodes sync their copy of the block chain. One large only for helping other nodes sync their copy of the block chain. One large
part of the immediately prunable data are transaction signatures (witnesses), part of the immediately prunable data are transaction signatures (witnesses),
@ -835,7 +835,7 @@ covered by the txid. This provides several immediate benefits:
different signature method that doesn't suffer from this problem and doesn't different signature method that doesn't suffer from this problem and doesn't
have any unwanted side-effects. have any unwanted side-effects.
- **Increased security for multisig:** Litecoin addresses (both P2PKH addresses - **Increased security for multisig:** Kevacoin addresses (both P2PKH addresses
that start with a '1' and P2SH addresses that start with a '3' or 'M') use a hash that start with a '1' and P2SH addresses that start with a '3' or 'M') use a hash
function known as RIPEMD-160. For P2PKH addresses, this provides about 160 function known as RIPEMD-160. For P2PKH addresses, this provides about 160
bits of security---which is beyond what cryptographers believe can be broken bits of security---which is beyond what cryptographers believe can be broken
@ -845,7 +845,7 @@ covered by the txid. This provides several immediate benefits:
Segwit allows advanced transactions to use the SHA256 hash function instead, Segwit allows advanced transactions to use the SHA256 hash function instead,
which provides about 128 bits of security (that is 281 trillion times as which provides about 128 bits of security (that is 281 trillion times as
much security as 80 bits and is equivalent to the maximum bits of security much security as 80 bits and is equivalent to the maximum bits of security
believed to be provided by Litecoin's choice of parameters for its Elliptic believed to be provided by Kevacoin's choice of parameters for its Elliptic
Curve Digital Security Algorithm [ECDSA].) Curve Digital Security Algorithm [ECDSA].)
- **More efficient almost-full-node security** Satoshi Nakamoto's original - **More efficient almost-full-node security** Satoshi Nakamoto's original
@ -853,7 +853,7 @@ covered by the txid. This provides several immediate benefits:
skip downloading and validating some data from historic blocks that are skip downloading and validating some data from historic blocks that are
protected by large amounts of proof of work. Unfortunately, Nakamoto's protected by large amounts of proof of work. Unfortunately, Nakamoto's
method can't guarantee that a newly-started node using this method will method can't guarantee that a newly-started node using this method will
produce an accurate copy of Litecoin's current ledger (called the UTXO set), produce an accurate copy of Kevacoin's current ledger (called the UTXO set),
making the node vulnerable to falling out of consensus with other nodes. making the node vulnerable to falling out of consensus with other nodes.
Although the problems with Nakamoto's method can't be fixed in a soft fork, Although the problems with Nakamoto's method can't be fixed in a soft fork,
Segwit accomplishes something similar to his original proposal: it makes it Segwit accomplishes something similar to his original proposal: it makes it
@ -861,13 +861,13 @@ covered by the txid. This provides several immediate benefits:
(specifically, the segregated witnesses) while still ensuring that the node (specifically, the segregated witnesses) while still ensuring that the node
can build an accurate copy of the UTXO set for the block chain with the most can build an accurate copy of the UTXO set for the block chain with the most
proof of work. Segwit enables this capability at the consensus layer, but proof of work. Segwit enables this capability at the consensus layer, but
note that Litecoin Core does not provide an option to use this capability as note that Kevacoin Core does not provide an option to use this capability as
of this 0.13.2 release. of this 0.13.2 release.
- **Script versioning:** Segwit makes it easy for future soft forks to allow - **Script versioning:** Segwit makes it easy for future soft forks to allow
Litecoin users to individually opt-in to almost any change in the Litecoin Kevacoin users to individually opt-in to almost any change in the Kevacoin
Script language when those users receive new transactions. Features Script language when those users receive new transactions. Features
currently being researched by Bitcoin and Litecoin Core contributors that may currently being researched by Bitcoin and Kevacoin Core contributors that may
use this capability include support for Schnorr signatures, which can improve use this capability include support for Schnorr signatures, which can improve
the privacy and efficiency of multisig transactions (or transactions with the privacy and efficiency of multisig transactions (or transactions with
multiple inputs), and Merklized Abstract Syntax Trees (MAST), which can multiple inputs), and Merklized Abstract Syntax Trees (MAST), which can
@ -877,8 +877,8 @@ covered by the txid. This provides several immediate benefits:
Activation for the segwit soft fork is being managed using Activation for the segwit soft fork is being managed using
BIP9. At the beginning of the first retarget period after BIP9. At the beginning of the first retarget period after
segwit's start date of 1 January 2017 miners can update the Litecoin segwit's start date of 1 January 2017 miners can update the Kevacoin
client to Litecoin Core 0.13.2 to signal for segwit support. When a client to Kevacoin Core 0.13.2 to signal for segwit support. When a
super-majority of 75% is reached segwit is activated by optional, and super-majority of 75% is reached segwit is activated by optional, and
if 75% of blocks within a 8,064-block retarget period (about 3.5 days) if 75% of blocks within a 8,064-block retarget period (about 3.5 days)
signal support for segwit, after another 8,064 blocks, segwit will signal support for segwit, after another 8,064 blocks, segwit will
@ -911,7 +911,7 @@ a third-party to insert data into other people's transactions, changing
the transaction's txid (called transaction malleability) and possibly the transaction's txid (called transaction malleability) and possibly
causing other problems. causing other problems.
Since Litecoin Core 0.10.0, nodes have defaulted to only relaying and Since Kevacoin Core 0.10.0, nodes have defaulted to only relaying and
mining transactions whose dummy element was a null value (0x00, also mining transactions whose dummy element was a null value (0x00, also
called OP_0). The null dummy soft fork turns this relay rule into a called OP_0). The null dummy soft fork turns this relay rule into a
consensus rule both for non-segwit transactions and segwit transactions, consensus rule both for non-segwit transactions and segwit transactions,
@ -937,14 +937,14 @@ Low-level RPC changes
Linux ARM builds Linux ARM builds
---------------- ----------------
Pre-built Linux ARM binaries have been added to the set of uploaded executables. Pre-built Linux ARM binaries have been added to the set of uploaded executables.
Additional detail on the ARM architecture targeted by each is provided below. Additional detail on the ARM architecture targeted by each is provided below.
The following extra files can be found in the download directory or torrent: The following extra files can be found in the download directory or torrent:
- `litecoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting - `kevacoin-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting
the 32-bit ARMv7-A architecture. the 32-bit ARMv7-A architecture.
- `litecoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting - `kevacoin-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting
the 64-bit ARMv8-A architecture. the 64-bit ARMv8-A architecture.
ARM builds are still experimental. If you have problems on a certain device or ARM builds are still experimental. If you have problems on a certain device or

14
doc/litecoin-release-notes/release-notes-0.13.3.md

@ -1,20 +1,20 @@
Litecoin Core version 0.13.3 is now available from: Kevacoin Core version 0.13.3 is now available from:
<https://download.litecoin.org/litecoin-0.13.3/> <https://download.kevacoin.org/kevacoin-0.13.3/>
This is a new minor version release, including new features, various bugfixes and performance improvements. This is a new minor version release, including new features, various bugfixes and performance improvements.
It is recommended to upgrade to this version. It is recommended to upgrade to this version.
Please report bugs using the issue tracker at github: Please report bugs using the issue tracker at github:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
Compatibility Compatibility
============== ==============
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
an OS initially released in 2001. This means that not even critical security an OS initially released in 2001. This means that not even critical security
updates will be released anymore. Without security updates, using a litecoin updates will be released anymore. Without security updates, using a kevacoin
wallet on a XP machine is irresponsible at least. wallet on a XP machine is irresponsible at least.
In addition to that, with 0.12.x there have been varied reports of Bitcoin Core In addition to that, with 0.12.x there have been varied reports of Bitcoin Core
@ -41,7 +41,7 @@ Notable changes
New Multisig Address Prefix New Multisig Address Prefix
--------------------------- ---------------------------
Litecoin Core now supports P2SH addresses beginning with M on mainnet and Q on testnet. Kevacoin Core now supports P2SH addresses beginning with M on mainnet and Q on testnet.
P2SH addresses beginning with 3 on mainnet and m or n on testnet will continue to be valid. P2SH addresses beginning with 3 on mainnet and m or n on testnet will continue to be valid.
Old and new addresses can be used interchangeably. Old and new addresses can be used interchangeably.
@ -50,7 +50,7 @@ miniupnp CVE-2017-8798
Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact. Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact.
This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Litecoin Core 0.10.4) it has been disabled by default. This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Kevacoin Core 0.10.4) it has been disabled by default.
If you use this option, it is recommended to upgrade to this version as soon as possible. If you use this option, it is recommended to upgrade to this version as soon as possible.
@ -64,7 +64,7 @@ Testnet faucets can be located at:
- http://testnet.litecointools.com - http://testnet.litecointools.com
- http://testnet.thrasher.io - http://testnet.thrasher.io
Developers who require the new testnet blockchain paramaters can find them [here](https://github.com/litecoin-project/litecoin/blob/0.13/src/chainparams.cpp#L214). Developers who require the new testnet blockchain paramaters can find them [here](https://github.com/kevacoin-project/kevacoin/blob/0.13/src/chainparams.cpp#L214).
Credits Credits
======= =======

70
doc/litecoin-release-notes/release-notes-0.14.2.md

@ -1,22 +1,22 @@
Litecoin Core version 0.14.2 is now available from: Kevacoin Core version 0.14.2 is now available from:
<https://download.litecoin.org/litecoin-0.14.2.0/> <https://download.kevacoin.org/kevacoin-0.14.2.0/>
This is a new major version release, including new features, various bugfixes This is a new major version release, including new features, various bugfixes
and performance improvements, as well as updated translations. and performance improvements, as well as updated translations.
Please report bugs using the issue tracker at github: Please report bugs using the issue tracker at github:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
To receive security and update notifications, please subscribe to: To receive security and update notifications, please subscribe to:
<https://groups.google.com/forum/#!forum/litecoin-dev> <https://groups.google.com/forum/#!forum/kevacoin-dev>
Compatibility Compatibility
============== ==============
Litecoin Core is extensively tested on multiple operating systems using Kevacoin Core is extensively tested on multiple operating systems using
the Linux kernel, macOS 10.8+, and Windows Vista and later. the Linux kernel, macOS 10.8+, and Windows Vista and later.
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
@ -24,7 +24,7 @@ No attempt is made to prevent installing or running the software on Windows XP,
can still do so at your own risk but be aware that there are known instabilities and issues. can still do so at your own risk but be aware that there are known instabilities and issues.
Please do not report issues about Windows XP to the issue tracker. Please do not report issues about Windows XP to the issue tracker.
Litecoin Core should also work on most other Unix-like systems but is not Kevacoin Core should also work on most other Unix-like systems but is not
frequently tested on them. frequently tested on them.
Notable changes Notable changes
@ -33,7 +33,7 @@ Notable changes
New Multisig Address Prefix New Multisig Address Prefix
--------------------------- ---------------------------
Litecoin Core now supports P2SH addresses beginning with M on mainnet and Q on testnet. Kevacoin Core now supports P2SH addresses beginning with M on mainnet and Q on testnet.
P2SH addresses beginning with 3 on mainnet and m or n on testnet will continue to be valid. P2SH addresses beginning with 3 on mainnet and m or n on testnet will continue to be valid.
Old and new addresses can be used interchangeably. Old and new addresses can be used interchangeably.
@ -42,7 +42,7 @@ miniupnp CVE-2017-8798
Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact. Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error (present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers (within the LAN) to cause a denial of service or possibly have unspecified other impact.
This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Litecoin Core 0.10.4) it has been disabled by default. This only affects users that have explicitly enabled UPnP through the GUI setting or through the -upnp option, as since the last UPnP vulnerability (in Kevacoin Core 0.10.4) it has been disabled by default.
If you use this option, it is recommended to upgrade to this version as soon as possible. If you use this option, it is recommended to upgrade to this version as soon as possible.
@ -56,7 +56,7 @@ Testnet faucets can be located at:
- http://testnet.litecointools.com - http://testnet.litecointools.com
- http://testnet.thrasher.io - http://testnet.thrasher.io
Developers who require the new testnet blockchain paramaters can find them [here](https://github.com/litecoin-project/litecoin/blob/master/src/chainparams.cpp#L220). Developers who require the new testnet blockchain paramaters can find them [here](https://github.com/kevacoin-project/kevacoin/blob/master/src/chainparams.cpp#L220).
Performance Improvements Performance Improvements
-------------- --------------
@ -83,7 +83,7 @@ improved, leading to much shorter sync and initial block download times.
Manual Pruning Manual Pruning
-------------- --------------
Litecoin Core has supported automatically pruning the blockchain since 0.13.2. Pruning Kevacoin Core has supported automatically pruning the blockchain since 0.13.2. Pruning
the blockchain allows for significant storage space savings as the vast majority of the blockchain allows for significant storage space savings as the vast majority of
the downloaded data can be discarded after processing so very little of it remains the downloaded data can be discarded after processing so very little of it remains
on the disk. on the disk.
@ -124,7 +124,7 @@ ZMQ On Windows
Previously the ZeroMQ notification system was unavailable on Windows Previously the ZeroMQ notification system was unavailable on Windows
due to various issues with ZMQ. These have been fixed upstream and due to various issues with ZMQ. These have been fixed upstream and
now ZMQ can be used on Windows. Please see [this document](https://github.com/litecoin-project/litecoin/blob/master/doc/zmq.md) for now ZMQ can be used on Windows. Please see [this document](https://github.com/kevacoin-project/kevacoin/blob/master/doc/zmq.md) for
help with using ZMQ in general. help with using ZMQ in general.
Nested RPC Commands in Debug Console Nested RPC Commands in Debug Console
@ -136,7 +136,7 @@ command without running the commands separately.
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
done with square brackets where object values are accessed with either an done with square brackets where object values are accessed with either an
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
commas and spaces can be used to separate parameters in both the bracket syntax commas and spaces can be used to separate parameters in both the bracket syntax
and normal RPC command syntax. and normal RPC command syntax.
@ -145,9 +145,9 @@ Network Activity Toggle
----------------------- -----------------------
A RPC command and GUI toggle have been added to enable or disable all p2p A RPC command and GUI toggle have been added to enable or disable all p2p
network activity. The network status icon in the bottom right hand corner network activity. The network status icon in the bottom right hand corner
is now the GUI toggle. Clicking the icon will either enable or disable all is now the GUI toggle. Clicking the icon will either enable or disable all
p2p network activity. If network activity is disabled, the icon will p2p network activity. If network activity is disabled, the icon will
be grayed out with an X on top of it. be grayed out with an X on top of it.
Additionally the `setnetworkactive` RPC command has been added which does Additionally the `setnetworkactive` RPC command has been added which does
@ -157,7 +157,7 @@ the same thing as the GUI icon. The command takes one boolean parameter,
Out-of-sync Modal Info Layer Out-of-sync Modal Info Layer
---------------------------- ----------------------------
When Litecoin Core is out-of-sync on startup, a semi-transparent information When Kevacoin Core is out-of-sync on startup, a semi-transparent information
layer will be shown over top of the normal display. This layer contains layer will be shown over top of the normal display. This layer contains
details about the current sync progress and estimates the amount of time details about the current sync progress and estimates the amount of time
remaining to finish syncing. This layer can also be hidden and subsequently remaining to finish syncing. This layer can also be hidden and subsequently
@ -166,19 +166,19 @@ unhidden by clicking on the progress bar at the bottom of the window.
Support for JSON-RPC Named Arguments Support for JSON-RPC Named Arguments
------------------------------------ ------------------------------------
Commands sent over the JSON-RPC interface and through the `litecoin-cli` binary Commands sent over the JSON-RPC interface and through the `kevacoin-cli` binary
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification) can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
for passing parameters by-name with an object. for passing parameters by-name with an object.
`litecoin-cli` has been updated to support this by parsing `name=value` arguments `kevacoin-cli` has been updated to support this by parsing `name=value` arguments
when the `-named` option is given. when the `-named` option is given.
Some examples: Some examples:
src/litecoin-cli -named help command="help" src/kevacoin-cli -named help command="help"
src/litecoin-cli -named getblockhash height=0 src/kevacoin-cli -named getblockhash height=0
src/litecoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f src/kevacoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
src/litecoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true src/kevacoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
The order of arguments doesn't matter in this case. Named arguments are also The order of arguments doesn't matter in this case. Named arguments are also
useful to leave out arguments that should stay at their default value. The useful to leave out arguments that should stay at their default value. The
@ -209,7 +209,7 @@ commands such as `prioritisetransaction` so that those changes will not be lost.
Final Alert Final Alert
----------- -----------
The Alert System was disabled and deprecated in Litecoin Core 0.10.4 and removed in 0.13.2. The Alert System was disabled and deprecated in Kevacoin Core 0.10.4 and removed in 0.13.2.
The Alert System was retired with a maximum sequence final alert which causes any nodes The Alert System was retired with a maximum sequence final alert which causes any nodes
supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also
prevents any other alerts from overriding it. This final alert is hard-coded into this release prevents any other alerts from overriding it. This final alert is hard-coded into this release
@ -218,15 +218,15 @@ so that all old nodes receive the final alert.
GUI Changes GUI Changes
----------- -----------
- After resetting the options by clicking the `Reset Options` button - After resetting the options by clicking the `Reset Options` button
in the options dialog or with the `-resetguioptions` startup option, in the options dialog or with the `-resetguioptions` startup option,
the user will be prompted to choose the data directory again. This the user will be prompted to choose the data directory again. This
is to ensure that custom data directories will be kept after the is to ensure that custom data directories will be kept after the
option reset which clears the custom data directory set via the choose option reset which clears the custom data directory set via the choose
datadir dialog. datadir dialog.
- Multiple peers can now be selected in the list of peers in the debug - Multiple peers can now be selected in the list of peers in the debug
window. This allows for users to ban or disconnect multiple peers window. This allows for users to ban or disconnect multiple peers
simultaneously instead of banning them one at a time. simultaneously instead of banning them one at a time.
- An indicator has been added to the bottom right hand corner of the main - An indicator has been added to the bottom right hand corner of the main
@ -241,7 +241,7 @@ Low-level RPC changes
an optional third arg, which was always ignored. Make sure to never pass more an optional third arg, which was always ignored. Make sure to never pass more
than two arguments. than two arguments.
- The first boolean argument to `getaddednodeinfo` has been removed. This is - The first boolean argument to `getaddednodeinfo` has been removed. This is
an incompatible change. an incompatible change.
- RPC command `getmininginfo` loses the "testnet" field in favor of the more - RPC command `getmininginfo` loses the "testnet" field in favor of the more
@ -251,8 +251,8 @@ Low-level RPC changes
precious. A precious block will be treated as if it were received earlier precious. A precious block will be treated as if it were received earlier
than a competing block. than a competing block.
- A new RPC command `importmulti` has been added which receives an array of - A new RPC command `importmulti` has been added which receives an array of
JSON objects representing the intention of importing a public key, a JSON objects representing the intention of importing a public key, a
private key, an address and script/p2sh private key, an address and script/p2sh
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent - Use of `getrawtransaction` for retrieving confirmed transactions with unspent
@ -261,7 +261,7 @@ Low-level RPC changes
the mempool or if `txindex` is enabled. the mempool or if `txindex` is enabled.
- A new RPC command `getmemoryinfo` has been added which will return information - A new RPC command `getmemoryinfo` has been added which will return information
about the memory usage of Litecoin Core. This was added in conjunction with about the memory usage of Kevacoin Core. This was added in conjunction with
optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753) optimizations to memory management. See [Pull #8753](https://github.com/bitcoin/bitcoin/pull/8753)
for more information. for more information.
@ -281,7 +281,7 @@ HTTP REST Changes
----------------- -----------------
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n> - UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status /.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500) code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
when requests contain invalid parameters. when requests contain invalid parameters.
@ -413,7 +413,7 @@ the same cache performance as prior releases. Users on low-memory systems
this parameter. this parameter.
Additional information relating to running on low-memory systems can be found Additional information relating to running on low-memory systems can be found
here, originally written for Bitcoin but can also be used for Litecoin: here, originally written for Bitcoin but can also be used for Kevacoin:
[reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7). [reducing-bitcoind-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7).
Credits Credits

40
doc/litecoin-release-notes/release-notes-0.15.0.1.md

@ -1,25 +1,25 @@
Litecoin Core version *0.15.0* is now available from: Kevacoin Core version *0.15.0* is now available from:
<https://download.litecoin.org/litecoin-0.15.0/> <https://download.kevacoin.org/kevacoin-0.15.0/>
This is a new major version release, including new features, various bugfixes This is a new major version release, including new features, various bugfixes
and performance improvements, as well as updated translations. and performance improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub: Please report bugs using the issue tracker at GitHub:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
To receive security and update notifications, please subscribe to: To receive security and update notifications, please subscribe to:
<https://groups.google.com/forum/#!forum/litecoin-dev> <https://groups.google.com/forum/#!forum/kevacoin-dev>
How to Upgrade How to Upgrade
============== ==============
If you are running an older version, shut it down. Wait until it has completely If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over `/Applications/Litecoin-Qt` (on Mac) installer (on Windows) or just copy over `/Applications/Kevacoin-Qt` (on Mac)
or `litecoind`/`litecoin-qt` (on Linux). or `kevacoind`/`kevacoin-qt` (on Linux).
The first time you run version 0.15.0, your chainstate database will be converted to a The first time you run version 0.15.0, your chainstate database will be converted to a
new format, which will take anywhere from a few minutes to half an hour, new format, which will take anywhere from a few minutes to half an hour,
@ -48,10 +48,10 @@ processing the entire blockchain.
Compatibility Compatibility
============== ==============
Litecoin Core is extensively tested on multiple operating systems using Kevacoin Core is extensively tested on multiple operating systems using
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported. the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
Litecoin Core should also work on most other Unix-like systems but is not Kevacoin Core should also work on most other Unix-like systems but is not
frequently tested on them. frequently tested on them.
Notable changes Notable changes
@ -92,7 +92,7 @@ Initial Block Download, startup, transaction and block validation much faster:
validation. In version 0.15, SHA256 hardware optimization is disabled in release builds by validation. In version 0.15, SHA256 hardware optimization is disabled in release builds by
default, but can be enabled by using `--enable-experimental-asm` when building. default, but can be enabled by using `--enable-experimental-asm` when building.
- Refill of the keypool no longer flushes the wallet between each key which resulted in a ~20x speedup in creating a new wallet. Part of this speedup was used to increase the default keypool to 1000 keys to make recovery more robust. (See [PR 10831](https://github.com/bitcoin/bitcoin/pull/10831)). - Refill of the keypool no longer flushes the wallet between each key which resulted in a ~20x speedup in creating a new wallet. Part of this speedup was used to increase the default keypool to 1000 keys to make recovery more robust. (See [PR 10831](https://github.com/bitcoin/bitcoin/pull/10831)).
- Scrypt hashing has been optimized for architectures supporting SSE 2 (See [PR 362](https://github.com/litecoin-project/litecoin/pull/362)). This boosts scrypt hashing performance by a factor of 2. In version 0.15, scrypt hardware optimization is disabled in release builds by default, but can be enabled by using `--enable-sse2` when building. - Scrypt hashing has been optimized for architectures supporting SSE 2 (See [PR 362](https://github.com/kevacoin-project/kevacoin/pull/362)). This boosts scrypt hashing performance by a factor of 2. In version 0.15, scrypt hardware optimization is disabled in release builds by default, but can be enabled by using `--enable-sse2` when building.
Fee Estimation Improvements Fee Estimation Improvements
--------------------------- ---------------------------
@ -116,7 +116,7 @@ Fee estimation has been significantly improved in version 0.15, with more accura
- The `nblocks` argument has been renamed to `conf_target` (to be consistent with other RPC methods). - The `nblocks` argument has been renamed to `conf_target` (to be consistent with other RPC methods).
- An `estimate_mode` argument has been added. This argument takes one of the following strings: `CONSERVATIVE`, `ECONOMICAL` or `UNSET` (which defaults to `CONSERVATIVE`). - An `estimate_mode` argument has been added. This argument takes one of the following strings: `CONSERVATIVE`, `ECONOMICAL` or `UNSET` (which defaults to `CONSERVATIVE`).
- The RPC return object now contains an `errors` member, which returns errors encountered during processing. - The RPC return object now contains an `errors` member, which returns errors encountered during processing.
- If Litecoin Core has not been running for long enough and has not seen enough blocks or transactions to produce an accurate fee estimation, an error will be returned (previously a value of -1 was used to indicate an error, which could be confused for a feerate). - If Kevacoin Core has not been running for long enough and has not seen enough blocks or transactions to produce an accurate fee estimation, an error will be returned (previously a value of -1 was used to indicate an error, which could be confused for a feerate).
- A new `estimaterawfee` RPC is added to provide raw fee data. External clients can query and use this data in their own fee estimation logic. - A new `estimaterawfee` RPC is added to provide raw fee data. External clients can query and use this data in their own fee estimation logic.
Opt into RBF When Sending Opt into RBF When Sending
@ -135,17 +135,17 @@ In version 0.15, creating an opt-in RBF transaction and replacing the unconfirme
Multi-wallet support Multi-wallet support
-------------------- --------------------
Litecoin Core now supports loading multiple, separate wallets (See [PR 8694](https://github.com/bitcoin/bitcoin/pull/8694), [PR 10849](https://github.com/bitcoin/bitcoin/pull/10849)). The wallets are completely separated, with individual balances, keys and received transactions. Kevacoin Core now supports loading multiple, separate wallets (See [PR 8694](https://github.com/bitcoin/bitcoin/pull/8694), [PR 10849](https://github.com/bitcoin/bitcoin/pull/10849)). The wallets are completely separated, with individual balances, keys and received transactions.
Multi-wallet is enabled by using more than one `-wallet` argument when starting Litecoin, either on the command line or in the Litecoin config file. Multi-wallet is enabled by using more than one `-wallet` argument when starting Kevacoin, either on the command line or in the Kevacoin config file.
**In Litecoin-Qt, only the first wallet will be displayed and accessible for creating and signing transactions.** GUI selectable multiple wallets will be supported in a future version. However, even in 0.15 other loaded wallets will remain synchronized to the node's current tip in the background. This can be useful if running a pruned node, since loading a wallet where the most recent sync is beyond the pruned height results in having to download and revalidate the whole blockchain. Continuing to synchronize all wallets in the background avoids this problem. **In Kevacoin-Qt, only the first wallet will be displayed and accessible for creating and signing transactions.** GUI selectable multiple wallets will be supported in a future version. However, even in 0.15 other loaded wallets will remain synchronized to the node's current tip in the background. This can be useful if running a pruned node, since loading a wallet where the most recent sync is beyond the pruned height results in having to download and revalidate the whole blockchain. Continuing to synchronize all wallets in the background avoids this problem.
Litecoin Core 0.15.0 contains the following changes to the RPC interface and `litecoin-cli` for multi-wallet: Kevacoin Core 0.15.0 contains the following changes to the RPC interface and `kevacoin-cli` for multi-wallet:
* When running Litecoin Core with a single wallet, there are **no** changes to the RPC interface or `litecoin-cli`. All RPC calls and `litecoin-cli` commands continue to work as before. * When running Kevacoin Core with a single wallet, there are **no** changes to the RPC interface or `kevacoin-cli`. All RPC calls and `kevacoin-cli` commands continue to work as before.
* When running Litecoin Core with multi-wallet, all *node-level* RPC methods continue to work as before. HTTP RPC requests should be send to the normal `<RPC IP address>:<RPC port>/` endpoint, and `litecoin-cli` commands should be run as before. A *node-level* RPC method is any method which does not require access to the wallet. * When running Kevacoin Core with multi-wallet, all *node-level* RPC methods continue to work as before. HTTP RPC requests should be send to the normal `<RPC IP address>:<RPC port>/` endpoint, and `kevacoin-cli` commands should be run as before. A *node-level* RPC method is any method which does not require access to the wallet.
* When running Litecoin Core with multi-wallet, *wallet-level* RPC methods must specify the wallet for which they're intended in every request. HTTP RPC requests should be send to the `<RPC IP address>:<RPC port>/wallet/<wallet name>/` endpoint, for example `127.0.0.1:9332/wallet/wallet1.dat/`. `litecoin-cli` commands should be run with a `-rpcwallet` option, for example `litecoin-cli -rpcwallet=wallet1.dat getbalance`. * When running Kevacoin Core with multi-wallet, *wallet-level* RPC methods must specify the wallet for which they're intended in every request. HTTP RPC requests should be send to the `<RPC IP address>:<RPC port>/wallet/<wallet name>/` endpoint, for example `127.0.0.1:9332/wallet/wallet1.dat/`. `kevacoin-cli` commands should be run with a `-rpcwallet` option, for example `kevacoin-cli -rpcwallet=wallet1.dat getbalance`.
* A new *node-level* `listwallets` RPC method is added to display which wallets are currently loaded. The names returned by this method are the same as those used in the HTTP endpoint and for the `rpcwallet` argument. * A new *node-level* `listwallets` RPC method is added to display which wallets are currently loaded. The names returned by this method are the same as those used in the HTTP endpoint and for the `rpcwallet` argument.
Note that while multi-wallet is now fully supported, the RPC multi-wallet interface should be considered unstable for version 0.15.0, and there may backwards-incompatible changes in future versions. Note that while multi-wallet is now fully supported, the RPC multi-wallet interface should be considered unstable for version 0.15.0, and there may backwards-incompatible changes in future versions.
@ -153,7 +153,7 @@ Note that while multi-wallet is now fully supported, the RPC multi-wallet interf
Removal of Coin Age Priority Removal of Coin Age Priority
---------------------------- ----------------------------
In previous versions of Litecoin Core, a portion of each block could be reserved for transactions based on the age and value of UTXOs they spent. This concept (Coin Age Priority) is a policy choice by miners, and there are no consensus rules around the inclusion of Coin Age Priority transactions in blocks. In practice, only a few miners continue to use Coin Age Priority for transaction selection in blocks. Litecoin Core 0.15 removes all remaining support for Coin Age Priority (See [PR 9602](https://github.com/bitcoin/bitcoin/pull/9602)). This has the following implications: In previous versions of Kevacoin Core, a portion of each block could be reserved for transactions based on the age and value of UTXOs they spent. This concept (Coin Age Priority) is a policy choice by miners, and there are no consensus rules around the inclusion of Coin Age Priority transactions in blocks. In practice, only a few miners continue to use Coin Age Priority for transaction selection in blocks. Kevacoin Core 0.15 removes all remaining support for Coin Age Priority (See [PR 9602](https://github.com/bitcoin/bitcoin/pull/9602)). This has the following implications:
- The concept of *free transactions* has been removed. High Coin Age Priority transactions would previously be allowed to be relayed even if they didn't attach a miner fee. This is no longer possible since there is no concept of Coin Age Priority. The `-limitfreerelay` and `-relaypriority` options which controlled relay of free transactions have therefore been removed. - The concept of *free transactions* has been removed. High Coin Age Priority transactions would previously be allowed to be relayed even if they didn't attach a miner fee. This is no longer possible since there is no concept of Coin Age Priority. The `-limitfreerelay` and `-relaypriority` options which controlled relay of free transactions have therefore been removed.
- The `-sendfreetransactions` option has been removed, since almost all miners do not include transactions which do not attach a transaction fee. - The `-sendfreetransactions` option has been removed, since almost all miners do not include transactions which do not attach a transaction fee.
@ -186,7 +186,7 @@ Version 0.15 introduces several new RPC methods:
Low-level RPC changes Low-level RPC changes
--------------------- ---------------------
- When using Litecoin Core in multi-wallet mode, RPC requests for wallet methods must specify - When using Kevacoin Core in multi-wallet mode, RPC requests for wallet methods must specify
the wallet that they're intended for. See [Multi-wallet support](#multi-wallet-support) for full details. the wallet that they're intended for. See [Multi-wallet support](#multi-wallet-support) for full details.
- The new database model no longer stores information about transaction - The new database model no longer stores information about transaction

24
doc/litecoin-release-notes/release-notes-0.15.1.md

@ -1,25 +1,25 @@
Litecoin Core version *0.15.1* is now available from: Kevacoin Core version *0.15.1* is now available from:
<https://download.litecoin.org/litecoin-0.15.1/> <https://download.kevacoin.org/kevacoin-0.15.1/>
This is a new minor version release, including various bugfixes and This is a new minor version release, including various bugfixes and
performance improvements, as well as updated translations. performance improvements, as well as updated translations.
Please report bugs using the issue tracker at GitHub: Please report bugs using the issue tracker at GitHub:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
To receive security and update notifications, please subscribe to: To receive security and update notifications, please subscribe to:
<https://groups.google.com/forum/#!forum/litecoin-dev> <https://groups.google.com/forum/#!forum/kevacoin-dev>
How to Upgrade How to Upgrade
============== ==============
If you are running an older version, shut it down. Wait until it has completely If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over `/Applications/Litecoin-Qt` (on Mac) installer (on Windows) or just copy over `/Applications/Kevacoin-Qt` (on Mac)
or `litecoind`/`litecoin-qt` (on Linux). or `kevacoind`/`kevacoin-qt` (on Linux).
The first time you run version 0.15.0 or higher, your chainstate database will The first time you run version 0.15.0 or higher, your chainstate database will
be converted to a new format, which will take anywhere from a few minutes to be converted to a new format, which will take anywhere from a few minutes to
@ -48,10 +48,10 @@ processing the entire blockchain.
Compatibility Compatibility
============== ==============
Litecoin Core is extensively tested on multiple operating systems using Kevacoin Core is extensively tested on multiple operating systems using
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported. the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
Litecoin Core should also work on most other Unix-like systems but is not Kevacoin Core should also work on most other Unix-like systems but is not
frequently tested on them. frequently tested on them.
@ -61,12 +61,12 @@ Notable changes
Network fork safety enhancements Network fork safety enhancements
-------------------------------- --------------------------------
A number of changes to the way Litecoin Core deals with peer connections and invalid blocks A number of changes to the way Kevacoin Core deals with peer connections and invalid blocks
have been made, as a safety precaution against blockchain forks and misbehaving peers. have been made, as a safety precaution against blockchain forks and misbehaving peers.
- Unrequested blocks with less work than the minimum-chain-work are now no longer processed even - Unrequested blocks with less work than the minimum-chain-work are now no longer processed even
if they have more work than the tip (a potential issue during IBD where the tip may have low-work). if they have more work than the tip (a potential issue during IBD where the tip may have low-work).
This prevents peers wasting the resources of a node. This prevents peers wasting the resources of a node.
- Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected. - Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
@ -255,7 +255,7 @@ Thanks to everyone who directly contributed to this release:
- aunyks - aunyks
- coblee - coblee
- gabrieldov - gabrieldov
- Martin Smith - Martin Smith
- ppm0 - ppm0
- romanornr - romanornr
- shaolinfry - shaolinfry

6
doc/man/Makefile.am

@ -1,13 +1,13 @@
dist_man1_MANS= dist_man1_MANS=
if BUILD_BITCOIND if BUILD_BITCOIND
dist_man1_MANS+=litecoind.1 dist_man1_MANS+=kevacoind.1
endif endif
if ENABLE_QT if ENABLE_QT
dist_man1_MANS+=litecoin-qt.1 dist_man1_MANS+=kevacoin-qt.1
endif endif
if BUILD_BITCOIN_UTILS if BUILD_BITCOIN_UTILS
dist_man1_MANS+=litecoin-cli.1 litecoin-tx.1 dist_man1_MANS+=kevacoin-cli.1 kevacoin-tx.1
endif endif

28
doc/man/litecoin-cli.1 → doc/man/kevacoin-cli.1

@ -1,17 +1,17 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH LITECOIN-CLI "1" "September 2018" "litecoin-cli v0.16.3.0" "User Commands" .TH LITECOIN-CLI "1" "September 2018" "kevacoin-cli v0.16.3.0" "User Commands"
.SH NAME .SH NAME
litecoin-cli \- manual page for litecoin-cli v0.16.3.0 kevacoin-cli \- manual page for kevacoin-cli v0.16.3.0
.SH DESCRIPTION .SH DESCRIPTION
Litecoin Core RPC client version v0.16.3.0 Kevacoin Core RPC client version v0.16.3.0
.SS "Usage:" .SS "Usage:"
.TP .TP
litecoin\-cli [options] <command> [params] kevacoin\-cli [options] <command> [params]
Send command to Litecoin Core Send command to Kevacoin Core
.IP .IP
litecoin\-cli [options] \fB\-named\fR <command> [name=value] ... Send command to Litecoin Core (with named arguments) kevacoin\-cli [options] \fB\-named\fR <command> [name=value] ... Send command to Kevacoin Core (with named arguments)
litecoin\-cli [options] help List commands kevacoin\-cli [options] help List commands
litecoin\-cli [options] help <command> Get help for a command kevacoin\-cli [options] help <command> Get help for a command
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?
@ -20,7 +20,7 @@ This help message
.HP .HP
\fB\-conf=\fR<file> \fB\-conf=\fR<file>
.IP .IP
Specify configuration file (default: litecoin.conf) Specify configuration file (default: kevacoin.conf)
.HP .HP
\fB\-datadir=\fR<dir> \fB\-datadir=\fR<dir>
.IP .IP
@ -93,16 +93,16 @@ input is used for the RPC password.
\fB\-rpcwallet=\fR<walletname> \fB\-rpcwallet=\fR<walletname>
.IP .IP
Send RPC for non\-default wallet on RPC server (argument is wallet Send RPC for non\-default wallet on RPC server (argument is wallet
filename in litecoind directory, required if litecoind/\-Qt runs filename in kevacoind directory, required if kevacoind/\-Qt runs
with multiple wallets) with multiple wallets)
.SH COPYRIGHT .SH COPYRIGHT
Copyright (C) 2011-2018 The Litecoin Core developers Copyright (C) 2011-2018 The Kevacoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Litecoin Core useful. Visit Please contribute if you find Kevacoin Core useful. Visit
<https://litecoin.org> for further information about the software. <https://kevacoin.org> for further information about the software.
The source code is available from The source code is available from
<https://github.com/litecoin-project/litecoin>. <https://github.com/kevacoin-project/kevacoin>.
This is experimental software. This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING Distributed under the MIT software license, see the accompanying file COPYING

20
doc/man/litecoin-qt.1 → doc/man/kevacoin-qt.1

@ -1,12 +1,12 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH LITECOIN-QT "1" "September 2018" "litecoin-qt v0.16.3.0" "User Commands" .TH LITECOIN-QT "1" "September 2018" "kevacoin-qt v0.16.3.0" "User Commands"
.SH NAME .SH NAME
litecoin-qt \- manual page for litecoin-qt v0.16.3.0 kevacoin-qt \- manual page for kevacoin-qt v0.16.3.0
.SH DESCRIPTION .SH DESCRIPTION
Litecoin Core version v0.16.3.0 (64\-bit) Kevacoin Core version v0.16.3.0 (64\-bit)
Usage: Usage:
.IP .IP
litecoin\-qt [command\-line options] kevacoin\-qt [command\-line options]
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?
@ -38,7 +38,7 @@ testnet:
.HP .HP
\fB\-conf=\fR<file> \fB\-conf=\fR<file>
.IP .IP
Specify configuration file (default: litecoin.conf) Specify configuration file (default: kevacoin.conf)
.HP .HP
\fB\-datadir=\fR<dir> \fB\-datadir=\fR<dir>
.IP .IP
@ -86,7 +86,7 @@ leave that many cores free, default: 0)
.HP .HP
\fB\-pid=\fR<file> \fB\-pid=\fR<file>
.IP .IP
Specify pid file (default: litecoind.pid) Specify pid file (default: kevacoind.pid)
.HP .HP
\fB\-prune=\fR<n> \fB\-prune=\fR<n>
.IP .IP
@ -561,13 +561,13 @@ Show splash screen on startup (default: 1)
.IP .IP
Reset all settings changed in the GUI Reset all settings changed in the GUI
.SH COPYRIGHT .SH COPYRIGHT
Copyright (C) 2011-2018 The Litecoin Core developers Copyright (C) 2011-2018 The Kevacoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Litecoin Core useful. Visit Please contribute if you find Kevacoin Core useful. Visit
<https://litecoin.org> for further information about the software. <https://kevacoin.org> for further information about the software.
The source code is available from The source code is available from
<https://github.com/litecoin-project/litecoin>. <https://github.com/kevacoin-project/kevacoin>.
This is experimental software. This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING Distributed under the MIT software license, see the accompanying file COPYING

22
doc/man/litecoin-tx.1 → doc/man/kevacoin-tx.1

@ -1,16 +1,16 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH LITECOIN-TX "1" "September 2018" "litecoin-tx v0.16.3.0" "User Commands" .TH LITECOIN-TX "1" "September 2018" "kevacoin-tx v0.16.3.0" "User Commands"
.SH NAME .SH NAME
litecoin-tx \- manual page for litecoin-tx v0.16.3.0 kevacoin-tx \- manual page for kevacoin-tx v0.16.3.0
.SH DESCRIPTION .SH DESCRIPTION
Litecoin Core litecoin\-tx utility version v0.16.3.0 Kevacoin Core kevacoin\-tx utility version v0.16.3.0
.SS "Usage:" .SS "Usage:"
.TP .TP
litecoin\-tx [options] <hex\-tx> [commands] kevacoin\-tx [options] <hex\-tx> [commands]
Update hex\-encoded litecoin transaction Update hex\-encoded kevacoin transaction
.TP .TP
litecoin\-tx [options] \fB\-create\fR [commands] kevacoin\-tx [options] \fB\-create\fR [commands]
Create hex\-encoded litecoin transaction Create hex\-encoded kevacoin transaction
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?
@ -112,13 +112,13 @@ set=NAME:JSON\-STRING
.IP .IP
Set register NAME to given JSON\-STRING Set register NAME to given JSON\-STRING
.SH COPYRIGHT .SH COPYRIGHT
Copyright (C) 2011-2018 The Litecoin Core developers Copyright (C) 2011-2018 The Kevacoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Litecoin Core useful. Visit Please contribute if you find Kevacoin Core useful. Visit
<https://litecoin.org> for further information about the software. <https://kevacoin.org> for further information about the software.
The source code is available from The source code is available from
<https://github.com/litecoin-project/litecoin>. <https://github.com/kevacoin-project/kevacoin>.
This is experimental software. This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING Distributed under the MIT software license, see the accompanying file COPYING

22
doc/man/litecoind.1 → doc/man/kevacoind.1

@ -1,13 +1,13 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
.TH LITECOIND "1" "September 2018" "litecoind v0.16.3.0" "User Commands" .TH LITECOIND "1" "September 2018" "kevacoind v0.16.3.0" "User Commands"
.SH NAME .SH NAME
litecoind \- manual page for litecoind v0.16.3.0 kevacoind \- manual page for kevacoind v0.16.3.0
.SH DESCRIPTION .SH DESCRIPTION
Litecoin Core Daemon version v0.16.3.0 Kevacoin Core Daemon version v0.16.3.0
.SS "Usage:" .SS "Usage:"
.TP .TP
litecoind [options] kevacoind [options]
Start Litecoin Core Daemon Start Kevacoin Core Daemon
.SH OPTIONS .SH OPTIONS
.HP .HP
\-? \-?
@ -39,7 +39,7 @@ testnet:
.HP .HP
\fB\-conf=\fR<file> \fB\-conf=\fR<file>
.IP .IP
Specify configuration file (default: litecoin.conf) Specify configuration file (default: kevacoin.conf)
.HP .HP
\fB\-daemon\fR \fB\-daemon\fR
.IP .IP
@ -91,7 +91,7 @@ leave that many cores free, default: 0)
.HP .HP
\fB\-pid=\fR<file> \fB\-pid=\fR<file>
.IP .IP
Specify pid file (default: litecoind.pid) Specify pid file (default: kevacoind.pid)
.HP .HP
\fB\-prune=\fR<n> \fB\-prune=\fR<n>
.IP .IP
@ -540,13 +540,13 @@ non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
.IP .IP
Set the number of threads to service RPC calls (default: 4) Set the number of threads to service RPC calls (default: 4)
.SH COPYRIGHT .SH COPYRIGHT
Copyright (C) 2011-2018 The Litecoin Core developers Copyright (C) 2011-2018 The Kevacoin Core developers
Copyright (C) 2009-2018 The Bitcoin Core developers Copyright (C) 2009-2018 The Bitcoin Core developers
Please contribute if you find Litecoin Core useful. Visit Please contribute if you find Kevacoin Core useful. Visit
<https://litecoin.org> for further information about the software. <https://kevacoin.org> for further information about the software.
The source code is available from The source code is available from
<https://github.com/litecoin-project/litecoin>. <https://github.com/kevacoin-project/kevacoin>.
This is experimental software. This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING Distributed under the MIT software license, see the accompanying file COPYING

4
doc/reduce-traffic.md

@ -3,7 +3,7 @@ Reduce Traffic
Some node operators need to deal with bandwidth caps imposed by their ISPs. Some node operators need to deal with bandwidth caps imposed by their ISPs.
By default, litecoin-core allows up to 125 connections to different peers, 8 of By default, kevacoin-core allows up to 125 connections to different peers, 8 of
which are outbound. You can therefore, have at most 117 inbound connections. which are outbound. You can therefore, have at most 117 inbound connections.
The default settings can result in relatively significant traffic consumption. The default settings can result in relatively significant traffic consumption.
@ -33,5 +33,5 @@ blocks and transactions to fewer nodes.
## 3. Reduce maximum connections (`-maxconnections=<num>`) ## 3. Reduce maximum connections (`-maxconnections=<num>`)
Reducing the maximum connected nodes to a minimum could be desirable if traffic Reducing the maximum connected nodes to a minimum could be desirable if traffic
limits are tiny. Keep in mind that litecoin's trustless model works best if you are limits are tiny. Keep in mind that kevacoin's trustless model works best if you are
connected to a handful of nodes. connected to a handful of nodes.

18
doc/release-notes-litecoin.md

@ -1,25 +1,25 @@
Litecoin Core version 0.16.3 is now available from: Kevacoin Core version 0.16.3 is now available from:
<https://download.litecoin.org/litecoin-0.16.3/> <https://download.kevacoin.org/kevacoin-0.16.3/>
This is a new minor version release, with various bugfixes This is a new minor version release, with various bugfixes
as well as updated translations. as well as updated translations.
Please report bugs using the issue tracker at GitHub: Please report bugs using the issue tracker at GitHub:
<https://github.com/litecoin-project/litecoin/issues> <https://github.com/kevacoin-project/kevacoin/issues>
To receive security and update notifications, please subscribe to: To receive security and update notifications, please subscribe to:
<https://groups.google.com/forum/#!forum/litecoin-dev> <https://groups.google.com/forum/#!forum/kevacoin-dev>
How to Upgrade How to Upgrade
============== ==============
If you are running an older version, shut it down. Wait until it has completely If you are running an older version, shut it down. Wait until it has completely
shut down (which might take a few minutes for older versions), then run the shut down (which might take a few minutes for older versions), then run the
installer (on Windows) or just copy over `/Applications/Litecoin-Qt` (on Mac) installer (on Windows) or just copy over `/Applications/Kevacoin-Qt` (on Mac)
or `litecoind`/`litecoin-qt` (on Linux). or `kevacoind`/`kevacoin-qt` (on Linux).
The first time you run version 0.15.0 or newer, your chainstate database will be converted to a The first time you run version 0.15.0 or newer, your chainstate database will be converted to a
new format, which will take anywhere from a few minutes to half an hour, new format, which will take anywhere from a few minutes to half an hour,
@ -40,10 +40,10 @@ wallets that were created with older versions are not affected by this.
Compatibility Compatibility
============== ==============
Litecoin Core is extensively tested on multiple operating systems using Kevacoin Core is extensively tested on multiple operating systems using
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported. the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
Litecoin Core should also work on most other Unix-like systems but is not Kevacoin Core should also work on most other Unix-like systems but is not
frequently tested on them. frequently tested on them.
Notable changes Notable changes
@ -53,7 +53,7 @@ Denial-of-Service vulnerability
------------------------------- -------------------------------
A denial-of-service vulnerability exploitable by miners has been discovered in A denial-of-service vulnerability exploitable by miners has been discovered in
Litecoin Core versions 0.14.0 up to 0.16.2. It is recommended to upgrade any of Kevacoin Core versions 0.14.0 up to 0.16.2. It is recommended to upgrade any of
the vulnerable versions to 0.16.3 as soon as possible. the vulnerable versions to 0.16.3 as soon as possible.
0.16.3 change log 0.16.3 change log

126
doc/release-process.md

@ -5,7 +5,7 @@ Before every release candidate:
* Update translations (ping wumpus on IRC) see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#synchronising-translations). * Update translations (ping wumpus on IRC) see [translation_process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/translation_process.md#synchronising-translations).
* Update manpages, see [gen-manpages.sh](https://github.com/litecoin-project/litecoin/blob/master/contrib/devtools/README.md#gen-manpagessh). * Update manpages, see [gen-manpages.sh](https://github.com/kevacoin-project/kevacoin/blob/master/contrib/devtools/README.md#gen-manpagessh).
Before every minor and major release: Before every minor and major release:
@ -33,12 +33,12 @@ If you're using the automated script (found in [contrib/gitian-build.sh](/contri
Check out the source code in the following directory hierarchy. Check out the source code in the following directory hierarchy.
cd /path/to/your/toplevel/build cd /path/to/your/toplevel/build
git clone https://github.com/litecoin-project/gitian.sigs.ltc.git git clone https://github.com/kevacoin-project/gitian.sigs.ltc.git
git clone https://github.com/litecoin-project/litecoin-detached-sigs.git git clone https://github.com/kevacoin-project/kevacoin-detached-sigs.git
git clone https://github.com/devrandom/gitian-builder.git git clone https://github.com/devrandom/gitian-builder.git
git clone https://github.com/litecoin-project/litecoin.git git clone https://github.com/kevacoin-project/kevacoin.git
### Litecoin maintainers/release engineers, suggestion for writing release notes ### Kevacoin maintainers/release engineers, suggestion for writing release notes
Write release notes. git shortlog helps a lot, for example: Write release notes. git shortlog helps a lot, for example:
@ -61,7 +61,7 @@ If you're using the automated script (found in [contrib/gitian-build.sh](/contri
Setup Gitian descriptors: Setup Gitian descriptors:
pushd ./litecoin pushd ./kevacoin
export SIGNER=(your Gitian key, ie bluematt, sipa, etc) export SIGNER=(your Gitian key, ie bluematt, sipa, etc)
export VERSION=(new version, e.g. 0.8.0) export VERSION=(new version, e.g. 0.8.0)
git fetch git fetch
@ -95,7 +95,7 @@ Create the OS X SDK tarball, see the [OS X readme](README_osx.md) for details, a
By default, Gitian will fetch source files as needed. To cache them ahead of time: By default, Gitian will fetch source files as needed. To cache them ahead of time:
pushd ./gitian-builder pushd ./gitian-builder
make -C ../litecoin/depends download SOURCES_PATH=`pwd`/cache/common make -C ../kevacoin/depends download SOURCES_PATH=`pwd`/cache/common
popd popd
Only missing files will be fetched, so this is safe to re-run for each build. Only missing files will be fetched, so this is safe to re-run for each build.
@ -103,50 +103,50 @@ Only missing files will be fetched, so this is safe to re-run for each build.
NOTE: Offline builds must use the --url flag to ensure Gitian fetches only from local URLs. For example: NOTE: Offline builds must use the --url flag to ensure Gitian fetches only from local URLs. For example:
pushd ./gitian-builder pushd ./gitian-builder
./bin/gbuild --url litecoin=/path/to/litecoin,signature=/path/to/sigs {rest of arguments} ./bin/gbuild --url kevacoin=/path/to/kevacoin,signature=/path/to/sigs {rest of arguments}
popd popd
The gbuild invocations below <b>DO NOT DO THIS</b> by default. The gbuild invocations below <b>DO NOT DO THIS</b> by default.
### Build and sign Litecoin Core for Linux, Windows, and OS X: ### Build and sign Kevacoin Core for Linux, Windows, and OS X:
pushd ./gitian-builder pushd ./gitian-builder
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gbuild --num-make 2 --memory 3000 --commit kevacoin=v${VERSION} ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
mv build/out/litecoin-*.tar.gz build/out/src/litecoin-*.tar.gz ../ mv build/out/kevacoin-*.tar.gz build/out/src/kevacoin-*.tar.gz ../
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gbuild --num-make 2 --memory 3000 --commit kevacoin=v${VERSION} ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
./bin/gsign --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-win-unsigned --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
mv build/out/litecoin-*-win-unsigned.tar.gz inputs/litecoin-win-unsigned.tar.gz mv build/out/kevacoin-*-win-unsigned.tar.gz inputs/kevacoin-win-unsigned.tar.gz
mv build/out/litecoin-*.zip build/out/litecoin-*.exe ../ mv build/out/kevacoin-*.zip build/out/kevacoin-*.exe ../
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gbuild --num-make 2 --memory 3000 --commit kevacoin=v${VERSION} ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
./bin/gsign --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-osx-unsigned --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
mv build/out/litecoin-*-osx-unsigned.tar.gz inputs/litecoin-osx-unsigned.tar.gz mv build/out/kevacoin-*-osx-unsigned.tar.gz inputs/kevacoin-osx-unsigned.tar.gz
mv build/out/litecoin-*.tar.gz build/out/litecoin-*.dmg ../ mv build/out/kevacoin-*.tar.gz build/out/kevacoin-*.dmg ../
popd popd
Build output expected: Build output expected:
1. source tarball (`litecoin-${VERSION}.tar.gz`) 1. source tarball (`kevacoin-${VERSION}.tar.gz`)
2. linux 32-bit and 64-bit dist tarballs (`litecoin-${VERSION}-linux[32|64].tar.gz`) 2. linux 32-bit and 64-bit dist tarballs (`kevacoin-${VERSION}-linux[32|64].tar.gz`)
3. windows 32-bit and 64-bit unsigned installers and dist zips (`litecoin-${VERSION}-win[32|64]-setup-unsigned.exe`, `litecoin-${VERSION}-win[32|64].zip`) 3. windows 32-bit and 64-bit unsigned installers and dist zips (`kevacoin-${VERSION}-win[32|64]-setup-unsigned.exe`, `kevacoin-${VERSION}-win[32|64].zip`)
4. OS X unsigned installer and dist tarball (`litecoin-${VERSION}-osx-unsigned.dmg`, `litecoin-${VERSION}-osx64.tar.gz`) 4. OS X unsigned installer and dist tarball (`kevacoin-${VERSION}-osx-unsigned.dmg`, `kevacoin-${VERSION}-osx64.tar.gz`)
5. Gitian signatures (in `gitian.sigs.ltc/${VERSION}-<linux|{win,osx}-unsigned>/(your Gitian key)/`) 5. Gitian signatures (in `gitian.sigs.ltc/${VERSION}-<linux|{win,osx}-unsigned>/(your Gitian key)/`)
### Verify other gitian builders signatures to your own. (Optional) ### Verify other gitian builders signatures to your own. (Optional)
Add other gitian builders keys to your gpg keyring, and/or refresh keys. Add other gitian builders keys to your gpg keyring, and/or refresh keys.
gpg --import litecoin/contrib/gitian-keys/*.pgp gpg --import kevacoin/contrib/gitian-keys/*.pgp
gpg --refresh-keys gpg --refresh-keys
Verify the signatures Verify the signatures
pushd ./gitian-builder pushd ./gitian-builder
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-linux ../litecoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-linux ../kevacoin/contrib/gitian-descriptors/gitian-linux.yml
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-unsigned ../litecoin/contrib/gitian-descriptors/gitian-win.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-unsigned ../kevacoin/contrib/gitian-descriptors/gitian-win.yml
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-unsigned ../litecoin/contrib/gitian-descriptors/gitian-osx.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-unsigned ../kevacoin/contrib/gitian-descriptors/gitian-osx.yml
popd popd
### Next steps: ### Next steps:
@ -167,22 +167,22 @@ Codesigner only: Create Windows/OS X detached signatures:
Codesigner only: Sign the osx binary: Codesigner only: Sign the osx binary:
transfer litecoin-osx-unsigned.tar.gz to osx for signing transfer kevacoin-osx-unsigned.tar.gz to osx for signing
tar xf litecoin-osx-unsigned.tar.gz tar xf kevacoin-osx-unsigned.tar.gz
./detached-sig-create.sh -s "Key ID" ./detached-sig-create.sh -s "Key ID"
Enter the keychain password and authorize the signature Enter the keychain password and authorize the signature
Move signature-osx.tar.gz back to the gitian host Move signature-osx.tar.gz back to the gitian host
Codesigner only: Sign the windows binaries: Codesigner only: Sign the windows binaries:
tar xf litecoin-win-unsigned.tar.gz tar xf kevacoin-win-unsigned.tar.gz
./detached-sig-create.sh -key /path/to/codesign.key ./detached-sig-create.sh -key /path/to/codesign.key
Enter the passphrase for the key when prompted Enter the passphrase for the key when prompted
signature-win.tar.gz will be created signature-win.tar.gz will be created
Codesigner only: Commit the detached codesign payloads: Codesigner only: Commit the detached codesign payloads:
cd ~/litecoin-detached-sigs cd ~/kevacoin-detached-sigs
checkout the appropriate branch for this release series checkout the appropriate branch for this release series
rm -rf * rm -rf *
tar xf signature-osx.tar.gz tar xf signature-osx.tar.gz
@ -195,25 +195,25 @@ Codesigner only: Commit the detached codesign payloads:
Non-codesigners: wait for Windows/OS X detached signatures: Non-codesigners: wait for Windows/OS X detached signatures:
- Once the Windows/OS X builds each have 3 matching signatures, they will be signed with their respective release keys. - Once the Windows/OS X builds each have 3 matching signatures, they will be signed with their respective release keys.
- Detached signatures will then be committed to the [litecoin-detached-sigs](https://github.com/litecoin-project/litecoin-detached-sigs) repository, which can be combined with the unsigned apps to create signed binaries. - Detached signatures will then be committed to the [kevacoin-detached-sigs](https://github.com/kevacoin-project/kevacoin-detached-sigs) repository, which can be combined with the unsigned apps to create signed binaries.
Create (and optionally verify) the signed OS X binary: Create (and optionally verify) the signed OS X binary:
pushd ./gitian-builder pushd ./gitian-builder
./bin/gbuild -i --commit signature=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gbuild -i --commit signature=v${VERSION} ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
./bin/gsign --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-osx-signed --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-signed ../kevacoin/contrib/gitian-descriptors/gitian-osx-signer.yml
mv build/out/litecoin-osx-signed.dmg ../litecoin-${VERSION}-osx.dmg mv build/out/kevacoin-osx-signed.dmg ../kevacoin-${VERSION}-osx.dmg
popd popd
Create (and optionally verify) the signed Windows binaries: Create (and optionally verify) the signed Windows binaries:
pushd ./gitian-builder pushd ./gitian-builder
./bin/gbuild -i --commit signature=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gbuild -i --commit signature=v${VERSION} ../kevacoin/contrib/gitian-descriptors/gitian-win-signer.yml
./bin/gsign --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-win-signed --destination ../gitian.sigs.ltc/ ../kevacoin/contrib/gitian-descriptors/gitian-win-signer.yml
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-signed ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-win-signed ../kevacoin/contrib/gitian-descriptors/gitian-win-signer.yml
mv build/out/litecoin-*win64-setup.exe ../litecoin-${VERSION}-win64-setup.exe mv build/out/kevacoin-*win64-setup.exe ../kevacoin-${VERSION}-win64-setup.exe
mv build/out/litecoin-*win32-setup.exe ../litecoin-${VERSION}-win32-setup.exe mv build/out/kevacoin-*win32-setup.exe ../kevacoin-${VERSION}-win32-setup.exe
popd popd
Commit your signature for the signed OS X/Windows binaries: Commit your signature for the signed OS X/Windows binaries:
@ -235,23 +235,23 @@ sha256sum * > SHA256SUMS
The list of files should be: The list of files should be:
``` ```
litecoin-${VERSION}-aarch64-linux-gnu.tar.gz kevacoin-${VERSION}-aarch64-linux-gnu.tar.gz
litecoin-${VERSION}-arm-linux-gnueabihf.tar.gz kevacoin-${VERSION}-arm-linux-gnueabihf.tar.gz
litecoin-${VERSION}-i686-pc-linux-gnu.tar.gz kevacoin-${VERSION}-i686-pc-linux-gnu.tar.gz
litecoin-${VERSION}-x86_64-linux-gnu.tar.gz kevacoin-${VERSION}-x86_64-linux-gnu.tar.gz
litecoin-${VERSION}-osx64.tar.gz kevacoin-${VERSION}-osx64.tar.gz
litecoin-${VERSION}-osx.dmg kevacoin-${VERSION}-osx.dmg
litecoin-${VERSION}.tar.gz kevacoin-${VERSION}.tar.gz
litecoin-${VERSION}-win32-setup.exe kevacoin-${VERSION}-win32-setup.exe
litecoin-${VERSION}-win32.zip kevacoin-${VERSION}-win32.zip
litecoin-${VERSION}-win64-setup.exe kevacoin-${VERSION}-win64-setup.exe
litecoin-${VERSION}-win64.zip kevacoin-${VERSION}-win64.zip
``` ```
The `*-debug*` files generated by the gitian build contain debug symbols The `*-debug*` files generated by the gitian build contain debug symbols
for troubleshooting by developers. It is assumed that anyone that is interested for troubleshooting by developers. It is assumed that anyone that is interested
in debugging can run gitian to generate the files for themselves. To avoid in debugging can run gitian to generate the files for themselves. To avoid
end-user confusion about which file to pick, as well as save storage end-user confusion about which file to pick, as well as save storage
space *do not upload these to the litecoin.org server, nor put them in the torrent*. space *do not upload these to the kevacoin.org server, nor put them in the torrent*.
- GPG-sign it, delete the unsigned file: - GPG-sign it, delete the unsigned file:
``` ```
@ -261,24 +261,24 @@ rm SHA256SUMS
(the digest algorithm is forced to sha256 to avoid confusion of the `Hash:` header that GPG adds with the SHA256 used for the files) (the digest algorithm is forced to sha256 to avoid confusion of the `Hash:` header that GPG adds with the SHA256 used for the files)
Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spurious/nonsensical entry. Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spurious/nonsensical entry.
- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the litecoin.org server. - Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the kevacoin.org server.
``` ```
- Update litecoin.org version - Update kevacoin.org version
- Announce the release: - Announce the release:
- litecoin-dev and litecoin-dev mailing list - kevacoin-dev and kevacoin-dev mailing list
- blog.litecoin.org blog post - blog.kevacoin.org blog post
- Update title of #litecoin and #litecoin-dev on Freenode IRC - Update title of #kevacoin and #kevacoin-dev on Freenode IRC
- Optionally twitter, reddit /r/Litecoin, ... but this will usually sort out itself - Optionally twitter, reddit /r/Kevacoin, ... but this will usually sort out itself
- Archive release notes for the new version to `doc/release-notes/` (branch `master` and branch of the release) - Archive release notes for the new version to `doc/release-notes/` (branch `master` and branch of the release)
- Create a [new GitHub release](https://github.com/litecoin-project/litecoin/releases/new) with a link to the archived release notes. - Create a [new GitHub release](https://github.com/kevacoin-project/kevacoin/releases/new) with a link to the archived release notes.
- Celebrate - Celebrate

52
doc/tor.md

@ -1,16 +1,16 @@
TOR SUPPORT IN LITECOIN TOR SUPPORT IN LITECOIN
====================== ======================
It is possible to run Litecoin as a Tor hidden service, and connect to such services. It is possible to run Kevacoin as a Tor hidden service, and connect to such services.
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly
configure Tor. configure Tor.
1. Run litecoin behind a Tor proxy 1. Run kevacoin behind a Tor proxy
--------------------------------- ---------------------------------
The first step is running Litecoin behind a Tor proxy. This will already make all The first step is running Kevacoin behind a Tor proxy. This will already make all
outgoing connections be anonymized, but more is possible. outgoing connections be anonymized, but more is possible.
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy -proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy
@ -31,27 +31,27 @@ outgoing connections be anonymized, but more is possible.
In a typical situation, this suffices to run behind a Tor proxy: In a typical situation, this suffices to run behind a Tor proxy:
./litecoin -proxy=127.0.0.1:9050 ./kevacoin -proxy=127.0.0.1:9050
2. Run a litecoin hidden server 2. Run a kevacoin hidden server
------------------------------ ------------------------------
If you configure your Tor system accordingly, it is possible to make your node also If you configure your Tor system accordingly, it is possible to make your node also
reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent
config file): config file):
HiddenServiceDir /var/lib/tor/litecoin-service/ HiddenServiceDir /var/lib/tor/kevacoin-service/
HiddenServicePort 9333 127.0.0.1:9333 HiddenServicePort 9333 127.0.0.1:9333
HiddenServicePort 19335 127.0.0.1:19335 HiddenServicePort 19335 127.0.0.1:19335
The directory can be different of course, but (both) port numbers should be equal to The directory can be different of course, but (both) port numbers should be equal to
your litecoind's P2P listen port (9333 by default). your kevacoind's P2P listen port (9333 by default).
-externalip=X You can tell litecoin about its publicly reachable address using -externalip=X You can tell kevacoin about its publicly reachable address using
this option, and this can be a .onion address. Given the above this option, and this can be a .onion address. Given the above
configuration, you can find your onion address in configuration, you can find your onion address in
/var/lib/tor/litecoin-service/hostname. Onion addresses are given /var/lib/tor/kevacoin-service/hostname. Onion addresses are given
preference for your node to advertise itself with, for connections preference for your node to advertise itself with, for connections
coming from unroutable addresses (such as 127.0.0.1, where the coming from unroutable addresses (such as 127.0.0.1, where the
Tor proxy typically runs). Tor proxy typically runs).
@ -68,57 +68,57 @@ your litecoind's P2P listen port (9333 by default).
In a typical situation, where you're only reachable via Tor, this should suffice: In a typical situation, where you're only reachable via Tor, this should suffice:
./litecoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen ./kevacoind -proxy=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -listen
(obviously, replace the Onion address with your own). It should be noted that you still (obviously, replace the Onion address with your own). It should be noted that you still
listen on all devices and another node could establish a clearnet connection, when knowing listen on all devices and another node could establish a clearnet connection, when knowing
your address. To mitigate this, additionally bind the address of your Tor proxy: your address. To mitigate this, additionally bind the address of your Tor proxy:
./litecoind ... -bind=127.0.0.1 ./kevacoind ... -bind=127.0.0.1
If you don't care too much about hiding your node, and want to be reachable on IPv4 If you don't care too much about hiding your node, and want to be reachable on IPv4
as well, use `discover` instead: as well, use `discover` instead:
./litecoind ... -discover ./kevacoind ... -discover
and open port 9333 on your firewall (or use -upnp). and open port 9333 on your firewall (or use -upnp).
If you only want to use Tor to reach onion addresses, but not use it as a proxy If you only want to use Tor to reach onion addresses, but not use it as a proxy
for normal IPv4/IPv6 communication, use: for normal IPv4/IPv6 communication, use:
./litecoin -onion=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover ./kevacoin -onion=127.0.0.1:9050 -externalip=57qr3yd1nyntf5k.onion -discover
3. Automatically listen on Tor 3. Automatically listen on Tor
-------------------------------- --------------------------------
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
API, to create and destroy 'ephemeral' hidden services programmatically. API, to create and destroy 'ephemeral' hidden services programmatically.
Litecoin Core has been updated to make use of this. Kevacoin Core has been updated to make use of this.
This means that if Tor is running (and proper authentication has been configured), This means that if Tor is running (and proper authentication has been configured),
Litecoin Core automatically creates a hidden service to listen on. This will positively Kevacoin Core automatically creates a hidden service to listen on. This will positively
affect the number of available .onion nodes. affect the number of available .onion nodes.
This new feature is enabled by default if Litecoin Core is listening (`-listen`), and This new feature is enabled by default if Kevacoin Core is listening (`-listen`), and
requires a Tor connection to work. It can be explicitly disabled with `-listenonion=0` requires a Tor connection to work. It can be explicitly disabled with `-listenonion=0`
and, if not disabled, configured using the `-torcontrol` and `-torpassword` settings. and, if not disabled, configured using the `-torcontrol` and `-torpassword` settings.
To show verbose debugging information, pass `-debug=tor`. To show verbose debugging information, pass `-debug=tor`.
Connecting to Tor's control socket API requires one of two authentication methods to be Connecting to Tor's control socket API requires one of two authentication methods to be
configured. For cookie authentication the user running litecoind must have write access configured. For cookie authentication the user running kevacoind must have write access
to the `CookieAuthFile` specified in Tor configuration. In some cases this is to the `CookieAuthFile` specified in Tor configuration. In some cases this is
preconfigured and the creation of a hidden service is automatic. If permission problems preconfigured and the creation of a hidden service is automatic. If permission problems
are seen with `-debug=tor` they can be resolved by adding both the user running tor and are seen with `-debug=tor` they can be resolved by adding both the user running tor and
the user running litecoind to the same group and setting permissions appropriately. On the user running kevacoind to the same group and setting permissions appropriately. On
Debian-based systems the user running litecoind can be added to the debian-tor group, Debian-based systems the user running kevacoind can be added to the debian-tor group,
which has the appropriate permissions. An alternative authentication method is the use which has the appropriate permissions. An alternative authentication method is the use
of the `-torpassword` flag and a `hash-password` which can be enabled and specified in of the `-torpassword` flag and a `hash-password` which can be enabled and specified in
Tor configuration. Tor configuration.
4. Privacy recommendations 4. Privacy recommendations
--------------------------- ---------------------------
- Do not add anything but litecoin ports to the hidden service created in section 2. - Do not add anything but kevacoin ports to the hidden service created in section 2.
If you run a web service too, create a new hidden service for that. If you run a web service too, create a new hidden service for that.
Otherwise it is trivial to link them, which may reduce privacy. Hidden Otherwise it is trivial to link them, which may reduce privacy. Hidden
services created automatically (as in section 3) always have only one port services created automatically (as in section 3) always have only one port

2
doc/travis-ci.md

@ -32,7 +32,7 @@ trigger cache-invalidation and rebuilds as necessary.
These caches can be manually removed if necessary. This is one of the very few These caches can be manually removed if necessary. This is one of the very few
manual operations that is possible with Travis, and it can be done by the manual operations that is possible with Travis, and it can be done by the
Litecoin Core committer via the Travis web interface. Kevacoin Core committer via the Travis web interface.
In some cases, secure strings may be needed for hiding sensitive info such as In some cases, secure strings may be needed for hiding sensitive info such as
private keys or URLs. The travis client may be used to create these strings: private keys or URLs. The travis client may be used to create these strings:

2
doc/zmq.md

@ -102,5 +102,5 @@ retrieve the chain from the last known block to the new tip.
There are several possibilities that ZMQ notification can get lost There are several possibilities that ZMQ notification can get lost
during transmission depending on the communication type your are during transmission depending on the communication type your are
using. Kevacoind appends an up-counting sequence number to each using. kevacoind appends an up-counting sequence number to each
notification which allows listeners to detect lost notifications. notification which allows listeners to detect lost notifications.

22
share/qt/Info.plist.in

@ -29,16 +29,16 @@
<string>????</string> <string>????</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>Litecoin-Qt</string> <string>Kevacoin-Qt</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>Litecoin-Qt</string> <string>Kevacoin-Qt</string>
<key>LSHasLocalizedDisplayName</key> <key>LSHasLocalizedDisplayName</key>
<true/> <true/>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>org.litecoin.Litecoin-Qt</string> <string>org.kevacoin.Kevacoin-Qt</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
@ -46,10 +46,10 @@
<key>CFBundleTypeRole</key> <key>CFBundleTypeRole</key>
<string>Editor</string> <string>Editor</string>
<key>CFBundleURLName</key> <key>CFBundleURLName</key>
<string>org.litecoin.LitecoinPayment</string> <string>org.kevacoin.LitecoinPayment</string>
<key>CFBundleURLSchemes</key> <key>CFBundleURLSchemes</key>
<array> <array>
<string>litecoin</string> <string>kevacoin</string>
</array> </array>
</dict> </dict>
</array> </array>
@ -58,9 +58,9 @@
<array> <array>
<dict> <dict>
<key>UTTypeIdentifier</key> <key>UTTypeIdentifier</key>
<string>org.litecoin.paymentrequest</string> <string>org.kevacoin.paymentrequest</string>
<key>UTTypeDescription</key> <key>UTTypeDescription</key>
<string>Litecoin payment request</string> <string>Kevacoin payment request</string>
<key>UTTypeConformsTo</key> <key>UTTypeConformsTo</key>
<array> <array>
<string>public.data</string> <string>public.data</string>
@ -68,7 +68,7 @@
<key>UTTypeTagSpecification</key> <key>UTTypeTagSpecification</key>
<dict> <dict>
<key>public.mime-type</key> <key>public.mime-type</key>
<string>application/x-litecoin-payment-request</string> <string>application/x-kevacoin-payment-request</string>
<key>public.filename-extension</key> <key>public.filename-extension</key>
<array> <array>
<string>litecoinpaymentrequest</string> <string>litecoinpaymentrequest</string>
@ -84,7 +84,7 @@
<string>Editor</string> <string>Editor</string>
<key>LSItemContentTypes</key> <key>LSItemContentTypes</key>
<array> <array>
<string>org.litecoin.paymentrequest</string> <string>org.kevacoin.paymentrequest</string>
</array> </array>
<key>LSHandlerRank</key> <key>LSHandlerRank</key>
<string>Owner</string> <string>Owner</string>
@ -99,7 +99,7 @@
<key>LSAppNapIsDisabled</key> <key>LSAppNapIsDisabled</key>
<string>True</string> <string>True</string>
<key>LSApplicationCategoryType</key> <key>LSApplicationCategoryType</key>
<string>public.app-category.finance</string> <string>public.app-category.finance</string>
</dict> </dict>

6
share/rpcauth/rpcauth.py

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# Copyright (c) 2015-2017 The Bitcoin Core developers # Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
import hashlib import hashlib
@ -32,10 +32,10 @@ digestmod = hashlib.sha256
if sys.version_info.major >= 3: if sys.version_info.major >= 3:
password = password.decode('utf-8') password = password.decode('utf-8')
digestmod = 'SHA256' digestmod = 'SHA256'
m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), digestmod) m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), digestmod)
result = m.hexdigest() result = m.hexdigest()
print("String to be appended to litecoin.conf:") print("String to be appended to kevacoin.conf:")
print("rpcauth="+username+":"+salt+"$"+result) print("rpcauth="+username+":"+salt+"$"+result)
print("Your password:\n"+password) print("Your password:\n"+password)

8
share/setup.nsi.in

@ -51,9 +51,9 @@ Var StartMenuGroup
# Installer attributes # Installer attributes
OutFile @abs_top_srcdir@/@PACKAGE_TARNAME@-${VERSION}-win@WINDOWS_BITS@-setup.exe OutFile @abs_top_srcdir@/@PACKAGE_TARNAME@-${VERSION}-win@WINDOWS_BITS@-setup.exe
!if "@WINDOWS_BITS@" == "64" !if "@WINDOWS_BITS@" == "64"
InstallDir $PROGRAMFILES64\Litecoin InstallDir $PROGRAMFILES64\Kevacoin
!else !else
InstallDir $PROGRAMFILES\Litecoin InstallDir $PROGRAMFILES\Kevacoin
!endif !endif
CRCCheck on CRCCheck on
XPStyle on XPStyle on
@ -105,7 +105,7 @@ Section -post SEC0001
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 WriteRegDWORD HKCU "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
WriteRegStr HKCR "@PACKAGE_TARNAME@" "URL Protocol" "" WriteRegStr HKCR "@PACKAGE_TARNAME@" "URL Protocol" ""
WriteRegStr HKCR "@PACKAGE_TARNAME@" "" "URL:Litecoin" WriteRegStr HKCR "@PACKAGE_TARNAME@" "" "URL:Kevacoin"
WriteRegStr HKCR "@PACKAGE_TARNAME@\DefaultIcon" "" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@ WriteRegStr HKCR "@PACKAGE_TARNAME@\DefaultIcon" "" $INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@
WriteRegStr HKCR "@PACKAGE_TARNAME@\shell\open\command" "" '"$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "%1"' WriteRegStr HKCR "@PACKAGE_TARNAME@\shell\open\command" "" '"$INSTDIR\@BITCOIN_GUI_NAME@@EXEEXT@" "%1"'
SectionEnd SectionEnd
@ -138,7 +138,7 @@ Section -un.post UNSEC0001
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (testnet, @WINDOWS_BITS@-bit).lnk" Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\@PACKAGE_NAME@ (testnet, @WINDOWS_BITS@-bit).lnk"
Delete /REBOOTOK "$SMSTARTUP\Litecoin.lnk" Delete /REBOOTOK "$SMSTARTUP\Kevacoin.lnk"
Delete /REBOOTOK $INSTDIR\uninstall.exe Delete /REBOOTOK $INSTDIR\uninstall.exe
Delete /REBOOTOK $INSTDIR\debug.log Delete /REBOOTOK $INSTDIR\debug.log
Delete /REBOOTOK $INSTDIR\db.log Delete /REBOOTOK $INSTDIR\db.log

2
src/chainparamsseeds.h

@ -1,7 +1,7 @@
#ifndef BITCOIN_CHAINPARAMSSEEDS_H #ifndef BITCOIN_CHAINPARAMSSEEDS_H
#define BITCOIN_CHAINPARAMSSEEDS_H #define BITCOIN_CHAINPARAMSSEEDS_H
/** /**
* List of fixed seed nodes for the litecoin network * List of fixed seed nodes for the kevacoin network
* AUTOGENERATED by contrib/seeds/generate-seeds.py * AUTOGENERATED by contrib/seeds/generate-seeds.py
* *
* Each line contains a 16-byte IPv6 address and a port. * Each line contains a 16-byte IPv6 address and a port.

2
src/pow.cpp

@ -52,7 +52,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
{ {
assert(pindexLast != nullptr); assert(pindexLast != nullptr);
// Go back by what we want to be 14 days worth of blocks // Go back by what we want to be 14 days worth of blocks
// Litecoin: This fixes an issue where a 51% attack can change difficulty at will. // Kevacoin: This fixes an issue where a 51% attack can change difficulty at will.
// Go back the full period unless it's the first retarget after genesis. Code courtesy of Art Forz // Go back the full period unless it's the first retarget after genesis. Code courtesy of Art Forz
int blockstogoback = params.DifficultyAdjustmentInterval()-1; int blockstogoback = params.DifficultyAdjustmentInterval()-1;
if ((pindexLast->nHeight+1) != params.DifficultyAdjustmentInterval()) if ((pindexLast->nHeight+1) != params.DifficultyAdjustmentInterval())

4
src/rpc/mining.cpp

@ -201,7 +201,7 @@ UniValue getmininginfo(const JSONRPCRequest& request)
" \"pooledtx\": n (numeric) The size of the mempool\n" " \"pooledtx\": n (numeric) The size of the mempool\n"
" \"chain\": \"xxxx\", (string) current network name as defined in BIP70 (main, test, regtest)\n" " \"chain\": \"xxxx\", (string) current network name as defined in BIP70 (main, test, regtest)\n"
" \"warnings\": \"...\" (string) any network and blockchain warnings\n" " \"warnings\": \"...\" (string) any network and blockchain warnings\n"
" \"errors\": \"...\" (string) DEPRECATED. Same as warnings. Only shown when litecoind is started with -deprecatedrpc=getmininginfo\n" " \"errors\": \"...\" (string) DEPRECATED. Same as warnings. Only shown when kevacoind is started with -deprecatedrpc=getmininginfo\n"
"}\n" "}\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getmininginfo", "") + HelpExampleCli("getmininginfo", "")
@ -794,7 +794,7 @@ UniValue estimatefee(const JSONRPCRequest& request)
if (!IsDeprecatedRPCEnabled("estimatefee")) { if (!IsDeprecatedRPCEnabled("estimatefee")) {
throw JSONRPCError(RPC_METHOD_DEPRECATED, "estimatefee is deprecated and will be fully removed in v0.17. " throw JSONRPCError(RPC_METHOD_DEPRECATED, "estimatefee is deprecated and will be fully removed in v0.17. "
"To use estimatefee in v0.16, restart litecoind with -deprecatedrpc=estimatefee.\n" "To use estimatefee in v0.16, restart kevacoind with -deprecatedrpc=estimatefee.\n"
"Projects should transition to using estimatesmartfee before upgrading to v0.17"); "Projects should transition to using estimatesmartfee before upgrading to v0.17");
} }

4
src/rpc/misc.cpp

@ -264,7 +264,7 @@ UniValue createmultisig(const JSONRPCRequest& request)
"It returns a json object with the address and redeemScript.\n" "It returns a json object with the address and redeemScript.\n"
"DEPRECATION WARNING: Using addresses with createmultisig is deprecated. Clients must\n" "DEPRECATION WARNING: Using addresses with createmultisig is deprecated. Clients must\n"
"transition to using addmultisigaddress to create multisig addresses with addresses known\n" "transition to using addmultisigaddress to create multisig addresses with addresses known\n"
"to the wallet before upgrading to v0.17. To use the deprecated functionality, start litecoind with -deprecatedrpc=createmultisig\n" "to the wallet before upgrading to v0.17. To use the deprecated functionality, start kevacoind with -deprecatedrpc=createmultisig\n"
"\nArguments:\n" "\nArguments:\n"
"1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses.\n" "1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses.\n"
"2. \"keys\" (string, required) A json array of hex-encoded public keys\n" "2. \"keys\" (string, required) A json array of hex-encoded public keys\n"
@ -305,7 +305,7 @@ UniValue createmultisig(const JSONRPCRequest& request)
#endif #endif
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("Invalid public key: %s\nNote that from v0.16, createmultisig no longer accepts addresses." throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, strprintf("Invalid public key: %s\nNote that from v0.16, createmultisig no longer accepts addresses."
" Clients must transition to using addmultisigaddress to create multisig addresses with addresses known to the wallet before upgrading to v0.17." " Clients must transition to using addmultisigaddress to create multisig addresses with addresses known to the wallet before upgrading to v0.17."
" To use the deprecated functionality, start litecoind with -deprecatedrpc=createmultisig", keys[i].get_str())); " To use the deprecated functionality, start kevacoind with -deprecatedrpc=createmultisig", keys[i].get_str()));
} }
} }

4
src/wallet/rpcdump.cpp

@ -678,7 +678,7 @@ UniValue dumpwallet(const JSONRPCRequest& request)
"Note that if your wallet contains keys which are not derived from your HD seed (e.g. imported keys), these are not covered by\n" "Note that if your wallet contains keys which are not derived from your HD seed (e.g. imported keys), these are not covered by\n"
"only backing up the seed itself, and must be backed up too (e.g. ensure you back up the whole dumpfile).\n" "only backing up the seed itself, and must be backed up too (e.g. ensure you back up the whole dumpfile).\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"filename\" (string, required) The filename with path (either absolute or relative to litecoind)\n" "1. \"filename\" (string, required) The filename with path (either absolute or relative to kevacoind)\n"
"\nResult:\n" "\nResult:\n"
"{ (json object)\n" "{ (json object)\n"
" \"filename\" : { (string) The filename with full absolute path\n" " \"filename\" : { (string) The filename with full absolute path\n"
@ -1260,7 +1260,7 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)
"block from time %d, which is after or within %d seconds of key creation, and " "block from time %d, which is after or within %d seconds of key creation, and "
"could contain transactions pertaining to the key. As a result, transactions " "could contain transactions pertaining to the key. As a result, transactions "
"and coins using this key may not appear in the wallet. This error could be " "and coins using this key may not appear in the wallet. This error could be "
"caused by pruning or data corruption (see litecoind log for details) and could " "caused by pruning or data corruption (see kevacoind log for details) and could "
"be dealt with by downloading and rescanning the relevant blocks (see -reindex " "be dealt with by downloading and rescanning the relevant blocks (see -reindex "
"and -rescan options).", "and -rescan options).",
GetImportTimestamp(request, now), scannedTime - TIMESTAMP_WINDOW - 1, TIMESTAMP_WINDOW))); GetImportTimestamp(request, now), scannedTime - TIMESTAMP_WINDOW - 1, TIMESTAMP_WINDOW)));

4
src/wallet/rpcwallet.cpp

@ -1249,7 +1249,7 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
" \"address\":\"multisigaddress\", (string) The value of the new multisig address.\n" " \"address\":\"multisigaddress\", (string) The value of the new multisig address.\n"
" \"redeemScript\":\"script\" (string) The string value of the hex-encoded redemption script.\n" " \"redeemScript\":\"script\" (string) The string value of the hex-encoded redemption script.\n"
"}\n" "}\n"
"\nResult (DEPRECATED. To see this result in v0.16 instead, please start litecoind with -deprecatedrpc=addmultisigaddress).\n" "\nResult (DEPRECATED. To see this result in v0.16 instead, please start kevacoind with -deprecatedrpc=addmultisigaddress).\n"
" clients should transition to the new output api before upgrading to v0.17.\n" " clients should transition to the new output api before upgrading to v0.17.\n"
"\"address\" (string) A kevacoin address associated with the keys.\n" "\"address\" (string) A kevacoin address associated with the keys.\n"
@ -1391,7 +1391,7 @@ UniValue addwitnessaddress(const JSONRPCRequest& request)
if (!IsDeprecatedRPCEnabled("addwitnessaddress")) { if (!IsDeprecatedRPCEnabled("addwitnessaddress")) {
throw JSONRPCError(RPC_METHOD_DEPRECATED, "addwitnessaddress is deprecated and will be fully removed in v0.17. " throw JSONRPCError(RPC_METHOD_DEPRECATED, "addwitnessaddress is deprecated and will be fully removed in v0.17. "
"To use addwitnessaddress in v0.16, restart litecoind with -deprecatedrpc=addwitnessaddress.\n" "To use addwitnessaddress in v0.16, restart kevacoind with -deprecatedrpc=addwitnessaddress.\n"
"Projects should transition to using the address_type argument of getnewaddress, or option -addresstype=[bech32|p2sh-segwit] instead.\n"); "Projects should transition to using the address_type argument of getnewaddress, or option -addresstype=[bech32|p2sh-segwit] instead.\n");
} }

2
src/wallet/test/wallet_tests.cpp

@ -438,7 +438,7 @@ BOOST_FIXTURE_TEST_CASE(rescan, TestChain100Setup)
"timestamp %d. There was an error reading a block from time %d, which is after or within %d " "timestamp %d. There was an error reading a block from time %d, which is after or within %d "
"seconds of key creation, and could contain transactions pertaining to the key. As a result, " "seconds of key creation, and could contain transactions pertaining to the key. As a result, "
"transactions and coins using this key may not appear in the wallet. This error could be caused " "transactions and coins using this key may not appear in the wallet. This error could be caused "
"by pruning or data corruption (see litecoind log for details) and could be dealt with by " "by pruning or data corruption (see kevacoind log for details) and could be dealt with by "
"downloading and rescanning the relevant blocks (see -reindex and -rescan " "downloading and rescanning the relevant blocks (see -reindex and -rescan "
"options).\"}},{\"success\":true}]", "options).\"}},{\"success\":true}]",
0, oldTip->GetBlockTimeMax(), TIMESTAMP_WINDOW)); 0, oldTip->GetBlockTimeMax(), TIMESTAMP_WINDOW));

50
test/README.md

@ -1,15 +1,15 @@
This directory contains integration tests that test litecoind and its This directory contains integration tests that test kevacoind and its
utilities in their entirety. It does not contain unit tests, which utilities in their entirety. It does not contain unit tests, which
can be found in [/src/test](/src/test), [/src/wallet/test](/src/wallet/test), can be found in [/src/test](/src/test), [/src/wallet/test](/src/wallet/test),
etc. etc.
There are currently two sets of tests in this directory: There are currently two sets of tests in this directory:
- [functional](/test/functional) which test the functionality of - [functional](/test/functional) which test the functionality of
litecoind and litecoin-qt by interacting with them through the RPC and P2P kevacoind and kevacoin-qt by interacting with them through the RPC and P2P
interfaces. interfaces.
- [util](/test/util) which tests the litecoin utilities, currently only - [util](/test/util) which tests the kevacoin utilities, currently only
litecoin-tx. kevacoin-tx.
The util tests are run as part of `make check` target. The functional The util tests are run as part of `make check` target. The functional
tests are run by the travis continuous build process whenever a pull tests are run by the travis continuous build process whenever a pull
@ -70,29 +70,29 @@ options. Run `test_runner.py -h` to see them all.
##### Resource contention ##### Resource contention
The P2P and RPC ports used by the litecoind nodes-under-test are chosen to make The P2P and RPC ports used by the kevacoind nodes-under-test are chosen to make
conflicts with other processes unlikely. However, if there is another litecoind conflicts with other processes unlikely. However, if there is another kevacoind
process running on the system (perhaps from a previous test which hasn't successfully process running on the system (perhaps from a previous test which hasn't successfully
killed all its litecoind nodes), then there may be a port conflict which will killed all its kevacoind nodes), then there may be a port conflict which will
cause the test to fail. It is recommended that you run the tests on a system cause the test to fail. It is recommended that you run the tests on a system
where no other litecoind processes are running. where no other kevacoind processes are running.
On linux, the test_framework will warn if there is another On linux, the test_framework will warn if there is another
litecoind process running when the tests are started. kevacoind process running when the tests are started.
If there are zombie litecoind processes after test failure, you can kill them If there are zombie kevacoind processes after test failure, you can kill them
by running the following commands. **Note that these commands will kill all by running the following commands. **Note that these commands will kill all
litecoind processes running on the system, so should not be used if any non-test kevacoind processes running on the system, so should not be used if any non-test
litecoind processes are being run.** kevacoind processes are being run.**
```bash ```bash
killall litecoind killall kevacoind
``` ```
or or
```bash ```bash
pkill -9 litecoind pkill -9 kevacoind
``` ```
@ -103,11 +103,11 @@ functional test is run and is stored in test/cache. This speeds up
test startup times since new blockchains don't need to be generated for test startup times since new blockchains don't need to be generated for
each test. However, the cache may get into a bad state, in which case each test. However, the cache may get into a bad state, in which case
tests will fail. If this happens, remove the cache directory (and make tests will fail. If this happens, remove the cache directory (and make
sure litecoind processes are stopped as above): sure kevacoind processes are stopped as above):
```bash ```bash
rm -rf cache rm -rf cache
killall litecoind killall kevacoind
``` ```
##### Test logging ##### Test logging
@ -120,13 +120,13 @@ default:
- when run directly, *all* logs are written to `test_framework.log` and INFO - when run directly, *all* logs are written to `test_framework.log` and INFO
level and above are output to the console. level and above are output to the console.
- when run on Travis, no logs are output to the console. However, if a test - when run on Travis, no logs are output to the console. However, if a test
fails, the `test_framework.log` and litecoind `debug.log`s will all be dumped fails, the `test_framework.log` and kevacoind `debug.log`s will all be dumped
to the console to help troubleshooting. to the console to help troubleshooting.
To change the level of logs output to the console, use the `-l` command line To change the level of logs output to the console, use the `-l` command line
argument. argument.
`test_framework.log` and litecoind `debug.log`s can be combined into a single `test_framework.log` and kevacoind `debug.log`s can be combined into a single
aggregate log by running the `combine_logs.py` script. The output can be plain aggregate log by running the `combine_logs.py` script. The output can be plain
text, colorized text or html. For example: text, colorized text or html. For example:
@ -153,9 +153,9 @@ import pdb; pdb.set_trace()
``` ```
anywhere in the test. You will then be able to inspect variables, as well as anywhere in the test. You will then be able to inspect variables, as well as
call methods that interact with the litecoind nodes-under-test. call methods that interact with the kevacoind nodes-under-test.
If further introspection of the litecoind instances themselves becomes If further introspection of the kevacoind instances themselves becomes
necessary, this can be accomplished by first setting a pdb breakpoint necessary, this can be accomplished by first setting a pdb breakpoint
at an appropriate location, running the test to that point, then using at an appropriate location, running the test to that point, then using
`gdb` to attach to the process and debug. `gdb` to attach to the process and debug.
@ -169,19 +169,19 @@ For instance, to attach to `self.node[1]` during a run:
use the directory path to get the pid from the pid file: use the directory path to get the pid from the pid file:
```bash ```bash
cat /tmp/user/1000/testo9vsdjo3/node1/regtest/litecoind.pid cat /tmp/user/1000/testo9vsdjo3/node1/regtest/kevacoind.pid
gdb /home/example/litecoind <pid> gdb /home/example/kevacoind <pid>
``` ```
Note: gdb attach step may require `sudo` Note: gdb attach step may require `sudo`
### Util tests ### Util tests
Util tests can be run locally by running `test/util/bitcoin-util-test.py`. Util tests can be run locally by running `test/util/bitcoin-util-test.py`.
Use the `-v` option for verbose output. Use the `-v` option for verbose output.
# Writing functional tests # Writing functional tests
You are encouraged to write functional tests for new or existing features. You are encouraged to write functional tests for new or existing features.
Further information about the functional test framework and individual Further information about the functional test framework and individual
tests is found in [test/functional](/test/functional). tests is found in [test/functional](/test/functional).

22
test/functional/README.md

@ -74,12 +74,12 @@ over the network (`CBlock`, `CTransaction`, etc, along with the network-level
wrappers for them, `msg_block`, `msg_tx`, etc). wrappers for them, `msg_block`, `msg_tx`, etc).
- P2P tests have two threads. One thread handles all network communication - P2P tests have two threads. One thread handles all network communication
with the litecoind(s) being tested (using python's asyncore package); the other with the kevacoind(s) being tested (using python's asyncore package); the other
implements the test logic. implements the test logic.
- `P2PConnection` is the class used to connect to a litecoind. `P2PInterface` - `P2PConnection` is the class used to connect to a kevacoind. `P2PInterface`
contains the higher level logic for processing P2P payloads and connecting to contains the higher level logic for processing P2P payloads and connecting to
the Litecoin Core node application logic. For custom behaviour, subclass the the Kevacoin Core node application logic. For custom behaviour, subclass the
P2PInterface object and override the callback methods. P2PInterface object and override the callback methods.
- Call `network_thread_start()` after all `P2PInterface` objects are created to - Call `network_thread_start()` after all `P2PInterface` objects are created to
@ -92,14 +92,14 @@ Examples tests are `p2p_unrequested_blocks.py`, `p2p_compactblocks.py`.
#### Comptool #### Comptool
- Comptool is a Testing framework for writing tests that compare the block/tx acceptance - Comptool is a Testing framework for writing tests that compare the block/tx acceptance
behavior of a litecoind against 1 or more other litecoind instances. It should not be used behavior of a kevacoind against 1 or more other kevacoind instances. It should not be used
to write static tests with known outcomes, since that type of test is easier to write and to write static tests with known outcomes, since that type of test is easier to write and
maintain using the standard BitcoinTestFramework. maintain using the standard BitcoinTestFramework.
- Set the `num_nodes` variable (defined in `ComparisonTestFramework`) to start up - Set the `num_nodes` variable (defined in `ComparisonTestFramework`) to start up
1 or more nodes. If using 1 node, then `--testbinary` can be used as a command line 1 or more nodes. If using 1 node, then `--testbinary` can be used as a command line
option to change the litecoind binary used by the test. If using 2 or more nodes, option to change the kevacoind binary used by the test. If using 2 or more nodes,
then `--refbinary` can be optionally used to change the litecoind that will be used then `--refbinary` can be optionally used to change the kevacoind that will be used
on nodes 2 and up. on nodes 2 and up.
- Implement a (generator) function called `get_tests()` which yields `TestInstance`s. - Implement a (generator) function called `get_tests()` which yields `TestInstance`s.
@ -108,13 +108,13 @@ Each `TestInstance` consists of:
* `object` is a `CBlock`, `CTransaction`, or * `object` is a `CBlock`, `CTransaction`, or
`CBlockHeader`. `CBlock`'s and `CTransaction`'s are tested for `CBlockHeader`. `CBlock`'s and `CTransaction`'s are tested for
acceptance. `CBlockHeader`s can be used so that the test runner can deliver acceptance. `CBlockHeader`s can be used so that the test runner can deliver
complete headers-chains when requested from the litecoind, to allow writing complete headers-chains when requested from the kevacoind, to allow writing
tests where blocks can be delivered out of order but still processed by tests where blocks can be delivered out of order but still processed by
headers-first litecoind's. headers-first kevacoind's.
* `outcome` is `True`, `False`, or `None`. If `True` * `outcome` is `True`, `False`, or `None`. If `True`
or `False`, the tip is compared with the expected tip -- either the or `False`, the tip is compared with the expected tip -- either the
block passed in, or the hash specified as the optional 3rd entry. If block passed in, or the hash specified as the optional 3rd entry. If
`None` is specified, then the test will compare all the litecoind's `None` is specified, then the test will compare all the kevacoind's
being tested to see if they all agree on what the best tip is. being tested to see if they all agree on what the best tip is.
* `hash` is the block hash of the tip to compare against. Optional to * `hash` is the block hash of the tip to compare against. Optional to
specify; if left out then the hash of the block passed in will be used as specify; if left out then the hash of the block passed in will be used as
@ -128,7 +128,7 @@ Each `TestInstance` consists of:
sequence and synced (this is slower when processing many blocks). sequence and synced (this is slower when processing many blocks).
- `sync_every_transaction`: `True/False`. Analogous to - `sync_every_transaction`: `True/False`. Analogous to
`sync_every_block`, except if the outcome on the last tx is "None", `sync_every_block`, except if the outcome on the last tx is "None",
then the contents of the entire mempool are compared across all litecoind then the contents of the entire mempool are compared across all kevacoind
connections. If `True` or `False`, then only the last tx's connections. If `True` or `False`, then only the last tx's
acceptance is tested against the given outcome. acceptance is tested against the given outcome.
@ -147,7 +147,7 @@ Base class for functional tests.
Generally useful functions. Generally useful functions.
#### [test_framework/mininode.py](test_framework/mininode.py) #### [test_framework/mininode.py](test_framework/mininode.py)
Basic code to support P2P connectivity to a litecoind. Basic code to support P2P connectivity to a kevacoind.
#### [test_framework/comptool.py](test_framework/comptool.py) #### [test_framework/comptool.py](test_framework/comptool.py)
Framework for comparison-tool style, P2P tests. Framework for comparison-tool style, P2P tests.

4
test/functional/feature_block.py

@ -666,7 +666,7 @@ class FullBlockTest(ComparisonTestFramework):
s = ser_uint256(b46.hashMerkleRoot) s = ser_uint256(b46.hashMerkleRoot)
yield rejected(RejectResult(16, b'bad-blk-length')) yield rejected(RejectResult(16, b'bad-blk-length'))
# Litecoin: Temporarily disable test # Kevacoin: Temporarily disable test
# A block with invalid work # A block with invalid work
#tip(44) #tip(44)
#b47 = block(47, solve=False) #b47 = block(47, solve=False)
@ -743,7 +743,7 @@ class FullBlockTest(ComparisonTestFramework):
# \-> b56p2 (16) # \-> b56p2 (16)
# \-> b56 (16) # \-> b56 (16)
# #
# Merkle tree malleability (CVE-2012-2459): repeating sequences of transactions in a block without # Merkle tree malleability (CVE-2012-2459): repeating sequences of transactions in a block without
# affecting the merkle root of a block, while still invalidating it. # affecting the merkle root of a block, while still invalidating it.
# See: src/consensus/merkle.h # See: src/consensus/merkle.h
# #

2
test/functional/feature_config_args.py

@ -28,7 +28,7 @@ class ConfArgsTest(BitcoinTestFramework):
self.assert_start_raises_init_error(0, ['-datadir='+new_data_dir], 'Error: Specified data directory "' + new_data_dir + '" does not exist.') self.assert_start_raises_init_error(0, ['-datadir='+new_data_dir], 'Error: Specified data directory "' + new_data_dir + '" does not exist.')
# Check that using non-existent datadir in conf file fails # Check that using non-existent datadir in conf file fails
conf_file = os.path.join(default_data_dir, "litecoin.conf") conf_file = os.path.join(default_data_dir, "kevacoin.conf")
with open(conf_file, 'a', encoding='utf8') as f: with open(conf_file, 'a', encoding='utf8') as f:
f.write("datadir=" + new_data_dir + "\n") f.write("datadir=" + new_data_dir + "\n")
self.assert_start_raises_init_error(0, ['-conf='+conf_file], 'Error reading configuration file: specified data directory "' + new_data_dir + '" does not exist.') self.assert_start_raises_init_error(0, ['-conf='+conf_file], 'Error reading configuration file: specified data directory "' + new_data_dir + '" does not exist.')

6
test/functional/feature_help.py

@ -2,7 +2,7 @@
# Copyright (c) 2018 The Bitcoin Core developers # Copyright (c) 2018 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Verify that starting litecoin with -h works as expected.""" """Verify that starting kevacoin with -h works as expected."""
import subprocess import subprocess
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
@ -18,7 +18,7 @@ class HelpTest(BitcoinTestFramework):
# Don't start the node # Don't start the node
def run_test(self): def run_test(self):
self.log.info("Start litecoin with -h for help text") self.log.info("Start kevacoin with -h for help text")
self.nodes[0].start(extra_args=['-h'], stderr=subprocess.PIPE, stdout=subprocess.PIPE) self.nodes[0].start(extra_args=['-h'], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
# Node should exit immediately and output help to stdout. # Node should exit immediately and output help to stdout.
ret_code = self.nodes[0].process.wait(timeout=1) ret_code = self.nodes[0].process.wait(timeout=1)
@ -28,7 +28,7 @@ class HelpTest(BitcoinTestFramework):
self.log.info("Help text received: {} (...)".format(output[0:60])) self.log.info("Help text received: {} (...)".format(output[0:60]))
self.nodes[0].running = False self.nodes[0].running = False
self.log.info("Start litecoin with -version for version information") self.log.info("Start kevacoin with -version for version information")
self.nodes[0].start(extra_args=['-version'], stderr=subprocess.PIPE, stdout=subprocess.PIPE) self.nodes[0].start(extra_args=['-version'], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
# Node should exit immediately and output version to stdout. # Node should exit immediately and output version to stdout.
ret_code = self.nodes[0].process.wait(timeout=1) ret_code = self.nodes[0].process.wait(timeout=1)

14
test/functional/feature_proxy.py

@ -2,13 +2,13 @@
# Copyright (c) 2015-2017 The Bitcoin Core developers # Copyright (c) 2015-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test litecoind with different proxy configuration. """Test kevacoind with different proxy configuration.
Test plan: Test plan:
- Start litecoind's with different proxy configurations - Start kevacoind's with different proxy configurations
- Use addnode to initiate connections - Use addnode to initiate connections
- Verify that proxies are connected to, and the right connection command is given - Verify that proxies are connected to, and the right connection command is given
- Proxy configurations to test on litecoind side: - Proxy configurations to test on kevacoind side:
- `-proxy` (proxy everything) - `-proxy` (proxy everything)
- `-onion` (proxy just onions) - `-onion` (proxy just onions)
- `-proxyrandomize` Circuit randomization - `-proxyrandomize` Circuit randomization
@ -79,9 +79,9 @@ class ProxyTest(BitcoinTestFramework):
# Note: proxies are not used to connect to local nodes # Note: proxies are not used to connect to local nodes
# this is because the proxy to use is based on CService.GetNetwork(), which return NET_UNROUTABLE for localhost # this is because the proxy to use is based on CService.GetNetwork(), which return NET_UNROUTABLE for localhost
args = [ args = [
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'], ['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'],
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'], ['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'],
['-listen', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'], ['-listen', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'],
[] []
] ]
if self.have_ipv6: if self.have_ipv6:
@ -182,7 +182,7 @@ class ProxyTest(BitcoinTestFramework):
assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr)) assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr))
assert_equal(n1['onion']['proxy_randomize_credentials'], False) assert_equal(n1['onion']['proxy_randomize_credentials'], False)
assert_equal(n1['onion']['reachable'], True) assert_equal(n1['onion']['reachable'], True)
n2 = networks_dict(self.nodes[2].getnetworkinfo()) n2 = networks_dict(self.nodes[2].getnetworkinfo())
for net in ['ipv4','ipv6','onion']: for net in ['ipv4','ipv6','onion']:
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr)) assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr))

8
test/functional/interface_bitcoin_cli.py

@ -2,7 +2,7 @@
# Copyright (c) 2017 The Bitcoin Core developers # Copyright (c) 2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test litecoin-cli""" """Test kevacoin-cli"""
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, assert_raises_process_error, get_auth_cookie from test_framework.util import assert_equal, assert_raises_process_error, get_auth_cookie
@ -15,12 +15,12 @@ class TestBitcoinCli(BitcoinTestFramework):
def run_test(self): def run_test(self):
"""Main test logic""" """Main test logic"""
self.log.info("Compare responses from gewalletinfo RPC and `litecoin-cli getwalletinfo`") self.log.info("Compare responses from gewalletinfo RPC and `kevacoin-cli getwalletinfo`")
cli_response = self.nodes[0].cli.getwalletinfo() cli_response = self.nodes[0].cli.getwalletinfo()
rpc_response = self.nodes[0].getwalletinfo() rpc_response = self.nodes[0].getwalletinfo()
assert_equal(cli_response, rpc_response) assert_equal(cli_response, rpc_response)
self.log.info("Compare responses from getblockchaininfo RPC and `litecoin-cli getblockchaininfo`") self.log.info("Compare responses from getblockchaininfo RPC and `kevacoin-cli getblockchaininfo`")
cli_response = self.nodes[0].cli.getblockchaininfo() cli_response = self.nodes[0].cli.getblockchaininfo()
rpc_response = self.nodes[0].getblockchaininfo() rpc_response = self.nodes[0].getblockchaininfo()
assert_equal(cli_response, rpc_response) assert_equal(cli_response, rpc_response)
@ -38,7 +38,7 @@ class TestBitcoinCli(BitcoinTestFramework):
self.log.info("Make sure that -getinfo with arguments fails") self.log.info("Make sure that -getinfo with arguments fails")
assert_raises_process_error(1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help) assert_raises_process_error(1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help)
self.log.info("Compare responses from `litecoin-cli -getinfo` and the RPCs data is retrieved from.") self.log.info("Compare responses from `kevacoin-cli -getinfo` and the RPCs data is retrieved from.")
cli_get_info = self.nodes[0].cli('-getinfo').send_cli() cli_get_info = self.nodes[0].cli('-getinfo').send_cli()
wallet_info = self.nodes[0].getwalletinfo() wallet_info = self.nodes[0].getwalletinfo()
network_info = self.nodes[0].getnetworkinfo() network_info = self.nodes[0].getnetworkinfo()

2
test/functional/interface_zmq.py

@ -52,7 +52,7 @@ class ZMQTest (BitcoinTestFramework):
config.read_file(open(self.options.configfile)) config.read_file(open(self.options.configfile))
if not config["components"].getboolean("ENABLE_ZMQ"): if not config["components"].getboolean("ENABLE_ZMQ"):
raise SkipTest("litecoind has not been built with zmq enabled.") raise SkipTest("kevacoind has not been built with zmq enabled.")
# Initialize ZMQ context and socket. # Initialize ZMQ context and socket.
# All messages are received in the same socket which means # All messages are received in the same socket which means

2
test/functional/mempool_persist.py

@ -104,7 +104,7 @@ class MempoolPersistTest(BitcoinTestFramework):
self.start_node(1, extra_args=[]) self.start_node(1, extra_args=[])
wait_until(lambda: len(self.nodes[1].getrawmempool()) == 5) wait_until(lambda: len(self.nodes[1].getrawmempool()) == 5)
self.log.debug("Prevent litecoind from writing mempool.dat to disk. Verify that `savemempool` fails") self.log.debug("Prevent kevacoind from writing mempool.dat to disk. Verify that `savemempool` fails")
# to test the exception we are setting bad permissions on a tmp file called mempool.dat.new # to test the exception we are setting bad permissions on a tmp file called mempool.dat.new
# which is an implementation detail that could change and break this test # which is an implementation detail that could change and break this test
mempooldotnew1 = mempooldat1 + '.new' mempooldotnew1 = mempooldat1 + '.new'

12
test/functional/p2p_segwit.py

@ -450,7 +450,7 @@ class SegWitTest(BitcoinTestFramework):
block = self.build_next_block() block = self.build_next_block()
assert(len(self.utxo) > 0) assert(len(self.utxo) > 0)
# Create a P2WSH transaction. # Create a P2WSH transaction.
# The witness program will be a bunch of OP_2DROP's, followed by OP_TRUE. # The witness program will be a bunch of OP_2DROP's, followed by OP_TRUE.
# This should give us plenty of room to tweak the spending tx's # This should give us plenty of room to tweak the spending tx's
@ -562,7 +562,7 @@ class SegWitTest(BitcoinTestFramework):
self.log.info("Testing extra witness data in tx") self.log.info("Testing extra witness data in tx")
assert(len(self.utxo) > 0) assert(len(self.utxo) > 0)
block = self.build_next_block() block = self.build_next_block()
witness_program = CScript([OP_DROP, OP_TRUE]) witness_program = CScript([OP_DROP, OP_TRUE])
@ -730,7 +730,7 @@ class SegWitTest(BitcoinTestFramework):
witness_program = CScript([OP_DROP, OP_TRUE]) witness_program = CScript([OP_DROP, OP_TRUE])
witness_hash = sha256(witness_program) witness_hash = sha256(witness_program)
scriptPubKey = CScript([OP_0, witness_hash]) scriptPubKey = CScript([OP_0, witness_hash])
# Create a transaction that splits our utxo into many outputs # Create a transaction that splits our utxo into many outputs
tx = CTransaction() tx = CTransaction()
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b"")) tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
@ -963,7 +963,7 @@ class SegWitTest(BitcoinTestFramework):
assert(self.test_node.last_message["getdata"].inv[0].type == blocktype) assert(self.test_node.last_message["getdata"].inv[0].type == blocktype)
test_witness_block(self.nodes[0].rpc, self.test_node, block1, True) test_witness_block(self.nodes[0].rpc, self.test_node, block1, True)
# Litecoin: Blocks with nVersion < VB_TOP_BITS are rejected # Kevacoin: Blocks with nVersion < VB_TOP_BITS are rejected
# self.test_node.announce_block_and_wait_for_getdata(block2, use_header=True) # self.test_node.announce_block_and_wait_for_getdata(block2, use_header=True)
# assert(self.test_node.last_message["getdata"].inv[0].type == blocktype) # assert(self.test_node.last_message["getdata"].inv[0].type == blocktype)
@ -1020,7 +1020,7 @@ class SegWitTest(BitcoinTestFramework):
assert_equal(rpc_details["weight"], weight) assert_equal(rpc_details["weight"], weight)
# Upgraded node should not ask for blocks from unupgraded # Upgraded node should not ask for blocks from unupgraded
# Litecoin: Blocks with nVersion < VB_TOP_BITS are rejected # Kevacoin: Blocks with nVersion < VB_TOP_BITS are rejected
block4 = self.build_next_block(nVersion=(VB_TOP_BITS | (1<<15))) block4 = self.build_next_block(nVersion=(VB_TOP_BITS | (1<<15)))
block4.solve() block4.solve()
self.old_node.getdataset = set() self.old_node.getdataset = set()
@ -1577,7 +1577,7 @@ class SegWitTest(BitcoinTestFramework):
tx2.wit.vtxinwit.append(CTxInWitness()) tx2.wit.vtxinwit.append(CTxInWitness())
tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program ] tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program ]
total_value += tx.vout[i].nValue total_value += tx.vout[i].nValue
tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program_toomany ] tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program_toomany ]
tx2.vout.append(CTxOut(total_value, CScript([OP_TRUE]))) tx2.vout.append(CTxOut(total_value, CScript([OP_TRUE])))
tx2.rehash() tx2.rehash()

4
test/functional/p2p_unrequested_blocks.py

@ -60,8 +60,8 @@ from test_framework.blocktools import create_block, create_coinbase, create_tran
class AcceptBlockTest(BitcoinTestFramework): class AcceptBlockTest(BitcoinTestFramework):
def add_options(self, parser): def add_options(self, parser):
parser.add_option("--testbinary", dest="testbinary", parser.add_option("--testbinary", dest="testbinary",
default=os.getenv("LITECOIND", "litecoind"), default=os.getenv("LITECOIND", "kevacoind"),
help="litecoind binary to test") help="kevacoind binary to test")
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True

2
test/functional/rpc_bind.py

@ -2,7 +2,7 @@
# Copyright (c) 2014-2017 The Bitcoin Core developers # Copyright (c) 2014-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test running litecoind with the -rpcbind and -rpcallowip options.""" """Test running kevacoind with the -rpcbind and -rpcallowip options."""
import socket import socket
import sys import sys

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 litecoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'}) assert_raises_rpc_error(-5, "changeAddress must be a valid kevacoin address", self.nodes[2].fundrawtransaction, rawtx, {'changeAddress':'foobar'})
############################################################ ############################################################
# test a fundrawtransaction with a provided change address # # test a fundrawtransaction with a provided change address #

2
test/functional/rpc_listtransactions.py

@ -91,7 +91,7 @@ class ListTransactionsTest(BitcoinTestFramework):
assert_array_result(self.nodes[0].listtransactions("watchonly", 100, 0, True), assert_array_result(self.nodes[0].listtransactions("watchonly", 100, 0, True),
{"category":"receive","amount":Decimal("0.1")}, {"category":"receive","amount":Decimal("0.1")},
{"txid":txid, "account" : "watchonly"} ) {"txid":txid, "account" : "watchonly"} )
# Litecoin has RBF disabled # Kevacoin has RBF disabled
# self.run_rbf_opt_in_test() # self.run_rbf_opt_in_test()
# Check that the opt-in-rbf flag works properly, for sent and received # Check that the opt-in-rbf flag works properly, for sent and received

4
test/functional/rpc_rawtransaction.py

@ -85,7 +85,7 @@ class RawTransactionsTest(BitcoinTestFramework):
address = self.nodes[0].getnewaddress() address = self.nodes[0].getnewaddress()
assert_raises_rpc_error(-3, "Expected type object", self.nodes[0].createrawtransaction, [], 'foo') assert_raises_rpc_error(-3, "Expected type object", self.nodes[0].createrawtransaction, [], 'foo')
assert_raises_rpc_error(-8, "Data must be hexadecimal string", self.nodes[0].createrawtransaction, [], {'data': 'foo'}) assert_raises_rpc_error(-8, "Data must be hexadecimal string", self.nodes[0].createrawtransaction, [], {'data': 'foo'})
assert_raises_rpc_error(-5, "Invalid Litecoin address", self.nodes[0].createrawtransaction, [], {'foo': 0}) assert_raises_rpc_error(-5, "Invalid Kevacoin address", self.nodes[0].createrawtransaction, [], {'foo': 0})
assert_raises_rpc_error(-3, "Invalid amount", self.nodes[0].createrawtransaction, [], {address: 'foo'}) assert_raises_rpc_error(-3, "Invalid amount", self.nodes[0].createrawtransaction, [], {address: 'foo'})
assert_raises_rpc_error(-3, "Amount out of range", self.nodes[0].createrawtransaction, [], {address: -1}) assert_raises_rpc_error(-3, "Amount out of range", self.nodes[0].createrawtransaction, [], {address: -1})
assert_raises_rpc_error(-8, "Invalid parameter, duplicated address: %s" % address, self.nodes[0].createrawtransaction, [], multidict([(address, 1), (address, 1)])) assert_raises_rpc_error(-8, "Invalid parameter, duplicated address: %s" % address, self.nodes[0].createrawtransaction, [], multidict([(address, 1), (address, 1)]))
@ -324,7 +324,7 @@ class RawTransactionsTest(BitcoinTestFramework):
encrawtx = "01000000010000000000000072c1a6a246ae63f74f931e8365e15a089c68d61900000000000000000000ffffffff0100e1f505000000000000000000" encrawtx = "01000000010000000000000072c1a6a246ae63f74f931e8365e15a089c68d61900000000000000000000ffffffff0100e1f505000000000000000000"
decrawtx = self.nodes[0].decoderawtransaction(encrawtx, False) # decode as non-witness transaction decrawtx = self.nodes[0].decoderawtransaction(encrawtx, False) # decode as non-witness transaction
assert_equal(decrawtx['vout'][0]['value'], Decimal('1.00000000')) assert_equal(decrawtx['vout'][0]['value'], Decimal('1.00000000'))
# getrawtransaction tests # getrawtransaction tests
# 1. valid parameters - only supply txid # 1. valid parameters - only supply txid
txHash = rawTx["hash"] txHash = rawTx["hash"]

6
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", "litecoin.conf"), 'a', encoding='utf8') as f: with open(os.path.join(self.options.tmpdir+"/node0", "kevacoin.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", "litecoin.conf"), 'a', encoding='utf8') as f: with open(os.path.join(self.options.tmpdir+"/node1", "kevacoin.conf"), 'a', encoding='utf8') as f:
f.write(rpcuser+"\n") f.write(rpcuser+"\n")
f.write(rpcpassword+"\n") f.write(rpcpassword+"\n")
@ -54,7 +54,7 @@ class HTTPBasicsTest (BitcoinTestFramework):
resp = conn.getresponse() resp = conn.getresponse()
assert_equal(resp.status, 200) assert_equal(resp.status, 200)
conn.close() conn.close()
#Use new authpair to confirm both work #Use new authpair to confirm both work
headers = {"Authorization": "Basic " + str_to_b64str(authpairnew)} headers = {"Authorization": "Basic " + str_to_b64str(authpairnew)}

2
test/functional/test_framework/coverage.py

@ -76,7 +76,7 @@ def get_filename(dirname, n_node):
def write_all_rpc_commands(dirname, node): def write_all_rpc_commands(dirname, node):
""" """
Write out a list of all RPC functions available in `litecoin-cli` for Write out a list of all RPC functions available in `kevacoin-cli` for
coverage comparison. This will only happen once per coverage coverage comparison. This will only happen once per coverage
directory. directory.

6
test/functional/test_framework/mininode.py

@ -4,7 +4,7 @@
# Copyright (c) 2010-2017 The Bitcoin Core developers # Copyright (c) 2010-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Litecoin P2P network half-a-node. """Kevacoin P2P network half-a-node.
This python code was modified from ArtForz' public domain half-a-node, as This python code was modified from ArtForz' public domain half-a-node, as
found in the mini-node branch of http://github.com/jgarzik/pynode. found in the mini-node branch of http://github.com/jgarzik/pynode.
@ -86,7 +86,7 @@ class P2PConnection(asyncore.dispatcher):
self.network = net self.network = net
self.disconnect = False self.disconnect = False
logger.info('Connecting to Litecoin Node: %s:%d' % (self.dstaddr, self.dstport)) logger.info('Connecting to Kevacoin Node: %s:%d' % (self.dstaddr, self.dstport))
try: try:
self.connect((dstaddr, dstport)) self.connect((dstaddr, dstport))
@ -245,7 +245,7 @@ class P2PConnection(asyncore.dispatcher):
class P2PInterface(P2PConnection): class P2PInterface(P2PConnection):
"""A high-level P2P interface class for communicating with a Litecoin node. """A high-level P2P interface class for communicating with a Kevacoin node.
This class provides high-level callbacks for processing P2P message This class provides high-level callbacks for processing P2P message
payloads, as well as convenience methods for interacting with the payloads, as well as convenience methods for interacting with the

32
test/functional/test_framework/test_framework.py

@ -42,9 +42,9 @@ TEST_EXIT_FAILED = 1
TEST_EXIT_SKIPPED = 77 TEST_EXIT_SKIPPED = 77
class BitcoinTestFramework(): class BitcoinTestFramework():
"""Base class for a litecoin test script. """Base class for a kevacoin test script.
Individual litecoin test scripts should subclass this class and override the set_test_params() and run_test() methods. Individual kevacoin test scripts should subclass this class and override the set_test_params() and run_test() methods.
Individual tests can also override the following methods to customize the test setup: Individual tests can also override the following methods to customize the test setup:
@ -76,7 +76,7 @@ class BitcoinTestFramework():
parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true", parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true",
help="Don't stop litecoinds after the test execution") help="Don't stop litecoinds after the test execution")
parser.add_option("--srcdir", dest="srcdir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../../src"), parser.add_option("--srcdir", dest="srcdir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../../src"),
help="Source directory containing litecoind/litecoin-cli (default: %default)") help="Source directory containing kevacoind/kevacoin-cli (default: %default)")
parser.add_option("--cachedir", dest="cachedir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../cache"), parser.add_option("--cachedir", dest="cachedir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../cache"),
help="Directory for caching pregenerated datadirs") help="Directory for caching pregenerated datadirs")
parser.add_option("--tmpdir", dest="tmpdir", help="Root directory for datadirs") parser.add_option("--tmpdir", dest="tmpdir", help="Root directory for datadirs")
@ -93,7 +93,7 @@ class BitcoinTestFramework():
parser.add_option("--pdbonfailure", dest="pdbonfailure", default=False, action="store_true", parser.add_option("--pdbonfailure", dest="pdbonfailure", default=False, action="store_true",
help="Attach a python debugger if test fails") help="Attach a python debugger if test fails")
parser.add_option("--usecli", dest="usecli", default=False, action="store_true", parser.add_option("--usecli", dest="usecli", default=False, action="store_true",
help="use litecoin-cli instead of RPC for all commands") help="use kevacoin-cli instead of RPC for all commands")
self.add_options(parser) self.add_options(parser)
(self.options, self.args) = parser.parse_args() (self.options, self.args) = parser.parse_args()
@ -223,7 +223,7 @@ class BitcoinTestFramework():
self.nodes.append(TestNode(i, self.options.tmpdir, extra_args[i], rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, use_cli=self.options.usecli)) self.nodes.append(TestNode(i, self.options.tmpdir, extra_args[i], rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, use_cli=self.options.usecli))
def start_node(self, i, *args, **kwargs): def start_node(self, i, *args, **kwargs):
"""Start a litecoind""" """Start a kevacoind"""
node = self.nodes[i] node = self.nodes[i]
@ -254,12 +254,12 @@ class BitcoinTestFramework():
coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc) coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc)
def stop_node(self, i): def stop_node(self, i):
"""Stop a litecoind test node""" """Stop a kevacoind test node"""
self.nodes[i].stop_node() self.nodes[i].stop_node()
self.nodes[i].wait_until_stopped() self.nodes[i].wait_until_stopped()
def stop_nodes(self): def stop_nodes(self):
"""Stop multiple litecoind test nodes""" """Stop multiple kevacoind test nodes"""
for node in self.nodes: for node in self.nodes:
# Issue RPC to stop nodes # Issue RPC to stop nodes
node.stop_node() node.stop_node()
@ -279,7 +279,7 @@ class BitcoinTestFramework():
self.start_node(i, extra_args, stderr=log_stderr, *args, **kwargs) self.start_node(i, extra_args, stderr=log_stderr, *args, **kwargs)
self.stop_node(i) self.stop_node(i)
except Exception as e: except Exception as e:
assert 'litecoind exited' in str(e) # node must have shutdown assert 'kevacoind exited' in str(e) # node must have shutdown
self.nodes[i].running = False self.nodes[i].running = False
self.nodes[i].process = None self.nodes[i].process = None
if expected_msg is not None: if expected_msg is not None:
@ -289,9 +289,9 @@ class BitcoinTestFramework():
raise AssertionError("Expected error \"" + expected_msg + "\" not found in:\n" + stderr) raise AssertionError("Expected error \"" + expected_msg + "\" not found in:\n" + stderr)
else: else:
if expected_msg is None: if expected_msg is None:
assert_msg = "litecoind should have exited with an error" assert_msg = "kevacoind should have exited with an error"
else: else:
assert_msg = "litecoind should have exited with expected error " + expected_msg assert_msg = "kevacoind should have exited with expected error " + expected_msg
raise AssertionError(assert_msg) raise AssertionError(assert_msg)
def wait_for_node_exit(self, i, timeout): def wait_for_node_exit(self, i, timeout):
@ -389,7 +389,7 @@ class BitcoinTestFramework():
# Create cache directories, run bitcoinds: # Create cache directories, run bitcoinds:
for i in range(MAX_NODES): for i in range(MAX_NODES):
datadir = initialize_datadir(self.options.cachedir, i) datadir = initialize_datadir(self.options.cachedir, i)
args = [os.getenv("LITECOIND", "litecoind"), "-server", "-keypool=1", "-datadir=" + datadir, "-discover=0"] args = [os.getenv("LITECOIND", "kevacoind"), "-server", "-keypool=1", "-datadir=" + datadir, "-discover=0"]
if i > 0: if i > 0:
args.append("-connect=127.0.0.1:" + str(p2p_port(0))) args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
self.nodes.append(TestNode(i, self.options.cachedir, extra_args=[], rpchost=None, timewait=None, binary=None, stderr=None, mocktime=self.mocktime, coverage_dir=None)) self.nodes.append(TestNode(i, self.options.cachedir, extra_args=[], rpchost=None, timewait=None, binary=None, stderr=None, mocktime=self.mocktime, coverage_dir=None))
@ -448,7 +448,7 @@ class BitcoinTestFramework():
class ComparisonTestFramework(BitcoinTestFramework): class ComparisonTestFramework(BitcoinTestFramework):
"""Test framework for doing p2p comparison testing """Test framework for doing p2p comparison testing
Sets up some litecoind binaries: Sets up some kevacoind binaries:
- 1 binary: test binary - 1 binary: test binary
- 2 binaries: 1 test binary, 1 ref binary - 2 binaries: 1 test binary, 1 ref binary
- n>2 binaries: 1 test binary, n-1 ref binaries""" - n>2 binaries: 1 test binary, n-1 ref binaries"""
@ -459,11 +459,11 @@ class ComparisonTestFramework(BitcoinTestFramework):
def add_options(self, parser): def add_options(self, parser):
parser.add_option("--testbinary", dest="testbinary", parser.add_option("--testbinary", dest="testbinary",
default=os.getenv("LITECOIND", "litecoind"), default=os.getenv("LITECOIND", "kevacoind"),
help="litecoind binary to test") help="kevacoind binary to test")
parser.add_option("--refbinary", dest="refbinary", parser.add_option("--refbinary", dest="refbinary",
default=os.getenv("LITECOIND", "litecoind"), default=os.getenv("LITECOIND", "kevacoind"),
help="litecoind binary to use for reference nodes (if any)") help="kevacoind binary to use for reference nodes (if any)")
def setup_network(self): def setup_network(self):
extra_args = [['-whitelist=127.0.0.1']] * self.num_nodes extra_args = [['-whitelist=127.0.0.1']] * self.num_nodes

12
test/functional/test_framework/test_node.py

@ -53,7 +53,7 @@ class TestNode():
# Wait for up to 60 seconds for the RPC server to respond # Wait for up to 60 seconds for the RPC server to respond
self.rpc_timeout = 60 self.rpc_timeout = 60
if binary is None: if binary is None:
self.binary = os.getenv("LITECOIND", "litecoind") self.binary = os.getenv("LITECOIND", "kevacoind")
else: else:
self.binary = binary self.binary = binary
self.stderr = stderr self.stderr = stderr
@ -62,7 +62,7 @@ class TestNode():
self.extra_args = extra_args self.extra_args = extra_args
self.args = [self.binary, "-datadir=" + self.datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(mocktime), "-uacomment=testnode%d" % i] self.args = [self.binary, "-datadir=" + self.datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(mocktime), "-uacomment=testnode%d" % i]
self.cli = TestNodeCLI(os.getenv("LITECOINCLI", "litecoin-cli"), self.datadir) self.cli = TestNodeCLI(os.getenv("LITECOINCLI", "kevacoin-cli"), self.datadir)
self.use_cli = use_cli self.use_cli = use_cli
self.running = False self.running = False
@ -105,14 +105,14 @@ class TestNode():
delete_cookie_file(self.datadir) delete_cookie_file(self.datadir)
self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs) self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs)
self.running = True self.running = True
self.log.debug("litecoind started, waiting for RPC to come up") self.log.debug("kevacoind started, waiting for RPC to come up")
def wait_for_rpc_connection(self): def wait_for_rpc_connection(self):
"""Sets up an RPC connection to the bitcoind process. Returns False if unable to connect.""" """Sets up an RPC connection to the bitcoind process. Returns False if unable to connect."""
# Poll at a rate of four times per second # Poll at a rate of four times per second
poll_per_s = 4 poll_per_s = 4
for _ in range(poll_per_s * self.rpc_timeout): for _ in range(poll_per_s * self.rpc_timeout):
assert self.process.poll() is None, "litecoind exited with status %i during initialization" % self.process.returncode assert self.process.poll() is None, "kevacoind exited with status %i during initialization" % self.process.returncode
try: try:
self.rpc = get_rpc_proxy(rpc_url(self.datadir, self.index, self.rpchost), self.index, timeout=self.rpc_timeout, coveragedir=self.coverage_dir) self.rpc = get_rpc_proxy(rpc_url(self.datadir, self.index, self.rpchost), self.index, timeout=self.rpc_timeout, coveragedir=self.coverage_dir)
self.rpc.getblockcount() self.rpc.getblockcount()
@ -131,7 +131,7 @@ class TestNode():
if "No RPC credentials" not in str(e): if "No RPC credentials" not in str(e):
raise raise
time.sleep(1.0 / poll_per_s) time.sleep(1.0 / poll_per_s)
raise AssertionError("Unable to connect to litecoind") raise AssertionError("Unable to connect to kevacoind")
def get_wallet_rpc(self, wallet_name): def get_wallet_rpc(self, wallet_name):
if self.use_cli: if self.use_cli:
@ -266,7 +266,7 @@ class TestNodeCLI():
if command is not None: if command is not None:
p_args += [command] p_args += [command]
p_args += pos_args + named_args p_args += pos_args + named_args
self.log.debug("Running litecoin-cli command: %s" % command) self.log.debug("Running kevacoin-cli command: %s" % command)
process = subprocess.Popen(p_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) process = subprocess.Popen(p_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
cli_stdout, cli_stderr = process.communicate(input=self.input) cli_stdout, cli_stderr = process.communicate(input=self.input)
returncode = process.poll() returncode = process.poll()

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, "litecoin.conf"), 'w', encoding='utf8') as f: with open(os.path.join(datadir, "kevacoin.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, "litecoin.conf")): if os.path.isfile(os.path.join(datadir, "kevacoin.conf")):
with open(os.path.join(datadir, "litecoin.conf"), 'r', encoding='utf8') as f: with open(os.path.join(datadir, "kevacoin.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

12
test/functional/test_runner.py

@ -229,7 +229,7 @@ def main():
sys.exit(0) sys.exit(0)
if not (enable_wallet and enable_utils and enable_bitcoind): if not (enable_wallet and enable_utils and enable_bitcoind):
print("No functional tests to run. Wallet, utils, and litecoind must all be enabled") print("No functional tests to run. Wallet, utils, and kevacoind must all be enabled")
print("Rerun `configure` with -enable-wallet, -with-utils and -with-daemon and rerun make") print("Rerun `configure` with -enable-wallet, -with-utils and -with-daemon and rerun make")
sys.exit(0) sys.exit(0)
@ -284,8 +284,8 @@ def main():
def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_coverage=False, args=[], combined_logs_len=0): def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_coverage=False, args=[], combined_logs_len=0):
# Warn if bitcoind is already running (unix only) # Warn if bitcoind is already running (unix only)
try: try:
if subprocess.check_output(["pidof", "litecoind"]) is not None: if subprocess.check_output(["pidof", "kevacoind"]) is not None:
print("%sWARNING!%s There is already a litecoind process running on this system. Tests may fail unexpectedly due to resource contention!" % (BOLD[1], BOLD[0])) print("%sWARNING!%s There is already a kevacoind process running on this system. Tests may fail unexpectedly due to resource contention!" % (BOLD[1], BOLD[0]))
except (OSError, subprocess.SubprocessError): except (OSError, subprocess.SubprocessError):
pass pass
@ -296,8 +296,8 @@ def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_cove
#Set env vars #Set env vars
if "LITECOIND" not in os.environ: if "LITECOIND" not in os.environ:
os.environ["LITECOIND"] = build_dir + '/src/litecoind' + exeext os.environ["LITECOIND"] = build_dir + '/src/kevacoind' + exeext
os.environ["LITECOINCLI"] = build_dir + '/src/litecoin-cli' + exeext os.environ["LITECOINCLI"] = build_dir + '/src/kevacoin-cli' + exeext
tests_dir = src_dir + '/test/functional/' tests_dir = src_dir + '/test/functional/'
@ -512,7 +512,7 @@ class RPCCoverage():
Coverage calculation works by having each test script subprocess write Coverage calculation works by having each test script subprocess write
coverage files into a particular directory. These files contain the RPC coverage files into a particular directory. These files contain the RPC
commands invoked during testing, as well as a complete listing of RPC commands invoked during testing, as well as a complete listing of RPC
commands per `litecoin-cli help` (`rpc_interface.txt`). commands per `kevacoin-cli help` (`rpc_interface.txt`).
After all tests complete, the commands run are combined and diff'd against After all tests complete, the commands run are combined and diff'd against
the complete list to calculate uncovered RPC commands. the complete list to calculate uncovered RPC commands.

2
test/functional/wallet_bumpfee.py

@ -37,7 +37,7 @@ class BumpFeeTest(BitcoinTestFramework):
for i in range(self.num_nodes)] for i in range(self.num_nodes)]
def run_test(self): def run_test(self):
raise SkipTest("Litecoin doesn't support RBF.") raise SkipTest("Kevacoin doesn't support RBF.")
# Encrypt wallet for test_locked_wallet_fails test # Encrypt wallet for test_locked_wallet_fails test
self.nodes[1].node_encrypt_wallet(WALLET_PASSPHRASE) self.nodes[1].node_encrypt_wallet(WALLET_PASSPHRASE)

4
test/functional/wallet_scriptaddress2.py

@ -4,7 +4,7 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
# #
# Test new Litecoin multisig prefix functionality. # Test new Kevacoin multisig prefix functionality.
# #
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
@ -70,7 +70,7 @@ class ScriptAddress2Test(BitcoinTestFramework):
multisig_addr_new = self.nodes[0].addmultisigaddress(2, addrs, "multisigaccount2")['address'] multisig_addr_new = self.nodes[0].addmultisigaddress(2, addrs, "multisigaccount2")['address']
assert_equal(multisig_addr_new, 'QZ974ZrPrmqMmm1PSVp4m8YEgo3bCQZBbe') assert_equal(multisig_addr_new, 'QZ974ZrPrmqMmm1PSVp4m8YEgo3bCQZBbe')
multisig_addr_old = "2N5nLwYz9qfnGdaFLpPn3gS6oYQbmLTWPjq" multisig_addr_old = "2N5nLwYz9qfnGdaFLpPn3gS6oYQbmLTWPjq"
## Let's send to the old address. We can then find it in the ## Let's send to the old address. We can then find it in the
## new address with the new client. So basically the old ## new address with the new client. So basically the old
## address and the new one are the same thing. ## address and the new one are the same thing.

2
test/util/bitcoin-util-test.py

@ -3,7 +3,7 @@
# Copyright 2016-2017 The Bitcoin Core developers # Copyright 2016-2017 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying # Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test framework for litecoin utils. """Test framework for kevacoin utils.
Runs automatically during `make check`. Runs automatically during `make check`.

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

@ -1,82 +1,82 @@
[ [
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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 litecoin-tx" "description": "Creates a blank transaction when nothing is piped into kevacoin-tx"
}, },
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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 litecoin-tx (output in json)" "description": "Creates a blank transaction when nothing is piped into kevacoin-tx (output in json)"
}, },
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"], "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"],
@ -108,7 +108,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 (too many separators). Expected to fail." "description": "Malformed outpubkey argument (too many separators). Expected to fail."
}, },
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=5ee62e3f7757f5fd995b2fa1bdb5b744298146098d5de92959ec4b52dc77191e:1", "in=5ee62e3f7757f5fd995b2fa1bdb5b744298146098d5de92959ec4b52dc77191e:1",
@ -119,7 +119,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
@ -131,67 +131,67 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", "nversion=1", ["-create", "nversion=1",
"in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0", "in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
@ -202,7 +202,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"-create", "nversion=1", "-create", "nversion=1",
@ -214,7 +214,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0", "in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
@ -225,50 +225,50 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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,
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs", "error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
@ -277,7 +277,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
@ -286,7 +286,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
@ -295,7 +295,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"-create", "nversion=1", "-create", "nversion=1",
@ -305,7 +305,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
@ -314,7 +314,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
@ -324,7 +324,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-create", ["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:4294967293", "in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0:4294967293",
@ -332,7 +332,7 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"-create", "-create",
@ -341,14 +341,14 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000", ["01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef: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": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": "args":
["-json", ["-json",
"01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000", "01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
@ -356,52 +356,52 @@
"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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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": "./litecoin-tx", { "exec": "./kevacoin-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)"
}, },
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:S"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:S"],
"output_cmp": "txcreatemultisig5.json", "output_cmp": "txcreatemultisig5.json",
"description": "Uncompressed pubkeys should work just fine for non-witness outputs" "description": "Uncompressed pubkeys should work just fine for non-witness outputs"
}, },
{ "exec": "./litecoin-tx", { "exec": "./kevacoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS"], "args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS"],
"return_code": 1, "return_code": 1,
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs", "error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",

Loading…
Cancel
Save