Litecoin: Branding
This commit is contained in:
parent
a26e75eb54
commit
86b0e12da3
8
.github/ISSUE_TEMPLATE.md
vendored
8
.github/ISSUE_TEMPLATE.md
vendored
@ -1,8 +1,8 @@
|
|||||||
<!-- This issue tracker is only for technical issues related to Bitcoin Core.
|
<!-- This issue tracker is only for technical issues related to Litecoin Core.
|
||||||
|
|
||||||
General bitcoin questions and/or support requests are best directed to the Bitcoin StackExchange at https://bitcoin.stackexchange.com.
|
General litecoin questions and/or support requests and are best directed to the [litecointalk.io forums](https://litecointalk.io/).
|
||||||
|
|
||||||
For reporting security issues, please read instructions at https://bitcoincore.org/en/contact/.
|
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.
|
||||||
|
|
||||||
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!
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ https://github.com/bitcoin-core/gui/issues/
|
|||||||
|
|
||||||
<!--- 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 Bitcoin Core are you using, where did you get it (website, self-compiled, etc)? -->
|
<!-- What version of Litecoin 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)? -->
|
||||||
|
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@ -60,6 +60,7 @@ src/qt/bitcoin-qt.includes
|
|||||||
.deps
|
.deps
|
||||||
.dirstamp
|
.dirstamp
|
||||||
.libs
|
.libs
|
||||||
|
.vscode
|
||||||
.*.swp
|
.*.swp
|
||||||
*.*~*
|
*.*~*
|
||||||
*.bak
|
*.bak
|
||||||
@ -105,7 +106,6 @@ litecoin-qt_test
|
|||||||
|
|
||||||
# Resources cpp
|
# Resources cpp
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
|
|
||||||
# Mac specific
|
# Mac specific
|
||||||
.DS_Store
|
.DS_Store
|
||||||
build
|
build
|
||||||
@ -117,7 +117,7 @@ releases
|
|||||||
*.gcno
|
*.gcno
|
||||||
*.gcda
|
*.gcda
|
||||||
/*.info
|
/*.info
|
||||||
test_bitcoin.coverage/
|
test_litecoin.coverage/
|
||||||
total.coverage/
|
total.coverage/
|
||||||
fuzz.coverage/
|
fuzz.coverage/
|
||||||
coverage_percent.txt
|
coverage_percent.txt
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Contributing to Bitcoin Core
|
Contributing to Litecoin Core
|
||||||
============================
|
============================
|
||||||
|
|
||||||
The Bitcoin Core project operates an open contributor model where anyone is
|
The Litecoin 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.
|
||||||
@ -25,7 +25,7 @@ as a new contributor. It also will teach you much more about the code and
|
|||||||
process than opening pull requests. Please refer to the [peer review](#peer-review)
|
process than opening pull requests. Please refer to the [peer review](#peer-review)
|
||||||
section below.
|
section below.
|
||||||
|
|
||||||
Before you start contributing, familiarize yourself with the Bitcoin Core build
|
Before you start contributing, familiarize yourself with the Litecoin Core build
|
||||||
system and tests. Refer to the documentation in the repository on how to build
|
system and tests. Refer to the documentation in the repository on how to build
|
||||||
Bitcoin Core and how to run the unit tests, functional tests, and fuzz tests.
|
Bitcoin Core and how to run the unit tests, functional tests, and fuzz tests.
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Discussion about codebase improvements happens in GitHub issues and pull
|
|||||||
requests.
|
requests.
|
||||||
|
|
||||||
The developer
|
The developer
|
||||||
[mailing list](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev)
|
[mailing list](https://groups.google.com/forum/#!forum/litecoin-dev)
|
||||||
should be used to discuss complicated or controversial consensus or P2P protocol changes before working on
|
should be used to discuss complicated or controversial consensus or P2P protocol changes before working on
|
||||||
a patch set.
|
a patch set.
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ the pull request affects. Valid areas as:
|
|||||||
|
|
||||||
- `consensus` for changes to consensus critical code
|
- `consensus` for changes to consensus critical code
|
||||||
- `doc` for changes to the documentation
|
- `doc` for changes to the documentation
|
||||||
- `qt` or `gui` for changes to bitcoin-qt
|
- `qt` or `gui` for changes to litecoin-qt
|
||||||
- `log` for changes to log messages
|
- `log` for changes to log messages
|
||||||
- `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
|
||||||
@ -282,11 +282,11 @@ workload on reviewing.
|
|||||||
"Decision Making" Process
|
"Decision Making" Process
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
The following applies to code changes to the Bitcoin Core project (and related
|
The following applies to code changes to the Litecoin Core project (and related
|
||||||
projects such as libsecp256k1), and is not to be confused with overall Bitcoin
|
projects such as libsecp256k1), and is not to be confused with overall Litecoin
|
||||||
Network Protocol consensus changes.
|
Network Protocol consensus changes.
|
||||||
|
|
||||||
Whether a pull request is merged into Bitcoin Core rests with the project merge
|
Whether a pull request is merged into Litecoin 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
|
||||||
@ -305,7 +305,7 @@ In general, all pull requests must:
|
|||||||
demonstrating the bug and also proving the fix. This helps prevent regression.
|
demonstrating the bug and also proving the fix. This helps prevent regression.
|
||||||
- Change relevant comments and documentation when behaviour of code changes.
|
- Change relevant comments and documentation when behaviour of code changes.
|
||||||
|
|
||||||
Patches that change Bitcoin consensus rules are considerably more involved than
|
Patches that change Litecoin 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
|
||||||
@ -358,7 +358,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 Bitcoin consensus, it must have been
|
Where a patch set proposes to change the Litecoin 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.
|
||||||
@ -425,7 +425,7 @@ https://github.com/bitcoin-core/bitcoin-maintainer-tools#backport).
|
|||||||
Release Policy
|
Release Policy
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
The project leader is the release manager for each Bitcoin Core release.
|
The project leader is the release manager for each Litecoin Core release.
|
||||||
|
|
||||||
Copyright
|
Copyright
|
||||||
---------
|
---------
|
||||||
|
|||||||
1
COPYING
1
COPYING
@ -2,6 +2,7 @@ The MIT License (MIT)
|
|||||||
|
|
||||||
Copyright (c) 2009-2020 The Bitcoin Core developers
|
Copyright (c) 2009-2020 The Bitcoin Core developers
|
||||||
Copyright (c) 2009-2020 Bitcoin Developers
|
Copyright (c) 2009-2020 Bitcoin Developers
|
||||||
|
Copyright (c) 2011-2020 The Litecoin 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
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
Building Bitcoin
|
Building Litecoin
|
||||||
================
|
================
|
||||||
|
|
||||||
See doc/build-*.md for instructions on building the various
|
See doc/build-*.md for instructions on building the various
|
||||||
elements of the Bitcoin Core reference implementation of Bitcoin.
|
elements of the Litecoin Core reference implementation of Litecoin.
|
||||||
|
|||||||
@ -1475,7 +1475,7 @@ if test x$build_multiprocess != xno; then
|
|||||||
AC_SUBST(MPGEN_PREFIX)
|
AC_SUBST(MPGEN_PREFIX)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build bitcoind])
|
AC_MSG_CHECKING([whether to build litecoind])
|
||||||
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
|
||||||
AC_MSG_RESULT($build_bitcoind)
|
AC_MSG_RESULT($build_bitcoind)
|
||||||
|
|
||||||
|
|||||||
@ -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 Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-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 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.
|
||||||
|
|
||||||
### [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.
|
||||||
@ -30,7 +30,7 @@ All other packaging related files can be found in the [bitcoin-core/packaging](h
|
|||||||
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 Bitcoin Core [Gitian release](/doc/release-process.md) results.
|
PGP keys used for signing Litecoin 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.
|
||||||
@ -42,7 +42,7 @@ Test and Verify Tools
|
|||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
### [TestGen](/contrib/testgen) ###
|
### [TestGen](/contrib/testgen) ###
|
||||||
Utilities to generate test vectors for the data-driven Bitcoin tests.
|
Utilities to generate test vectors for the data-driven Litecoin tests.
|
||||||
|
|
||||||
### [Verify Binaries](/contrib/verifybinaries) ###
|
### [Verify Binaries](/contrib/verifybinaries) ###
|
||||||
This script attempts to download and verify the signature file SHA256SUMS.asc from bitcoin.org.
|
This script attempts to download and verify the signature file SHA256SUMS.asc from litecoin.org.
|
||||||
|
|||||||
@ -25,7 +25,7 @@ read -r -a BTCVER <<< "$($BITCOINCLI --version | head -n1 | awk -F'[ -]' '{ prin
|
|||||||
# This gets autodetected fine for bitcoind if --version-string is not set,
|
# This gets autodetected fine for bitcoind if --version-string is not set,
|
||||||
# but has different outcomes for bitcoin-qt and bitcoin-cli.
|
# but has different outcomes for bitcoin-qt and bitcoin-cli.
|
||||||
echo "[COPYRIGHT]" > footer.h2m
|
echo "[COPYRIGHT]" > footer.h2m
|
||||||
$BITCOIND --version | sed -n '1!p' >> footer.h2m
|
$LITECOIND --version | sed -n '1!p' >> footer.h2m
|
||||||
|
|
||||||
for cmd in $BITCOIND $BITCOINCLI $BITCOINTX $WALLET_TOOL $BITCOINQT; do
|
for cmd in $BITCOIND $BITCOINCLI $BITCOINTX $WALLET_TOOL $BITCOINQT; do
|
||||||
cmdname="${cmd##*/}"
|
cmdname="${cmd##*/}"
|
||||||
|
|||||||
@ -24,4 +24,4 @@ while read fingerprint keyholder_name; do gpg --keyserver hkp://subset.pool.sks-
|
|||||||
```
|
```
|
||||||
|
|
||||||
Add your key to the list if you provided Gitian signatures for two major or
|
Add your key to the list if you provided Gitian signatures for two major or
|
||||||
minor releases of Bitcoin Core.
|
minor releases of Litecoin Core.
|
||||||
|
|||||||
@ -12,7 +12,7 @@ if [ -z "${1}" ]; then
|
|||||||
echo "Usage: $0 <base-dir> [<extra-bdb-configure-flag> ...]"
|
echo "Usage: $0 <base-dir> [<extra-bdb-configure-flag> ...]"
|
||||||
echo
|
echo
|
||||||
echo "Must specify a single argument: the directory in which db4 will be built."
|
echo "Must specify a single argument: the directory in which db4 will be built."
|
||||||
echo "This is probably \`pwd\` if you're at the root of the Litecoin repository."
|
echo "This is probably \`pwd\` if you're at the root of the litecoin repository."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# Linearize
|
# Linearize
|
||||||
Construct a linear, no-fork, best version of the Bitcoin blockchain.
|
Construct a linear, no-fork, best version of the Litecoin blockchain.
|
||||||
|
|
||||||
## Step 1: Download hash list
|
## Step 1: Download hash list
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ Required configuration file settings for linearize-hashes:
|
|||||||
|
|
||||||
Optional config file setting for linearize-hashes:
|
Optional config file setting for linearize-hashes:
|
||||||
* RPC: `host` (Default: `127.0.0.1`)
|
* RPC: `host` (Default: `127.0.0.1`)
|
||||||
* RPC: `port` (Default: `8332`)
|
* RPC: `port` (Default: `9332`)
|
||||||
* Blockchain: `min_height`, `max_height`
|
* Blockchain: `min_height`, `max_height`
|
||||||
* `rev_hash_bytes`: If true, the written block hash list will be
|
* `rev_hash_bytes`: If true, the written block hash list will be
|
||||||
byte-reversed. (In other words, the hash returned by getblockhash will have its
|
byte-reversed. (In other words, the hash returned by getblockhash will have its
|
||||||
@ -20,7 +20,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 `bitcoind` or `bitcoin-qt -server` will be sufficient.
|
JSON-RPC server. Running `litecoind` or `litecoin-qt -server` will be sufficient.
|
||||||
|
|
||||||
## Step 2: Copy local block data
|
## Step 2: Copy local block data
|
||||||
|
|
||||||
@ -38,7 +38,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`: bitcoind blocks/ directory containing blkNNNNN.dat
|
* `input`: litecoind 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.
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# bitcoind RPC settings (linearize-hashes)
|
# litecoind RPC settings (linearize-hashes)
|
||||||
rpcuser=someuser
|
rpcuser=someuser
|
||||||
rpcpassword=somepassword
|
rpcpassword=somepassword
|
||||||
#datadir=~/.bitcoin
|
#datadir=~/.litecoin
|
||||||
host=127.0.0.1
|
host=127.0.0.1
|
||||||
|
|
||||||
#mainnet default
|
#mainnet default
|
||||||
@ -22,14 +22,14 @@ max_height=313000
|
|||||||
# bootstrap.dat input/output settings (linearize-data)
|
# bootstrap.dat input/output settings (linearize-data)
|
||||||
|
|
||||||
# mainnet
|
# mainnet
|
||||||
netmagic=f9beb4d9
|
netmagic=fbc0b6db
|
||||||
genesis=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
genesis=12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2
|
||||||
input=/home/example/.bitcoin/blocks
|
input=/home/example/.litecoin/blocks
|
||||||
|
|
||||||
# testnet
|
# testnet
|
||||||
#netmagic=0b110907
|
#netmagic=fdd2c8f1
|
||||||
#genesis=000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943
|
#genesis=4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0
|
||||||
#input=/home/example/.bitcoin/testnet3/blocks
|
#input=/home/example/.litecoin/testnet3/blocks
|
||||||
|
|
||||||
# regtest
|
# regtest
|
||||||
#netmagic=fabfb5da
|
#netmagic=fabfb5da
|
||||||
|
|||||||
@ -120,7 +120,7 @@ if __name__ == '__main__':
|
|||||||
if 'host' not in settings:
|
if 'host' not in settings:
|
||||||
settings['host'] = '127.0.0.1'
|
settings['host'] = '127.0.0.1'
|
||||||
if 'port' not in settings:
|
if 'port' not in settings:
|
||||||
settings['port'] = 8332
|
settings['port'] = 9332
|
||||||
if 'min_height' not in settings:
|
if 'min_height' not in settings:
|
||||||
settings['min_height'] = 0
|
settings['min_height'] = 0
|
||||||
if 'max_height' not in settings:
|
if 'max_height' not in settings:
|
||||||
|
|||||||
@ -10,7 +10,7 @@ During the deployment process, the disk image window will pop up briefly
|
|||||||
when the fancy settings are applied. This is normal, please do not interfere,
|
when the fancy settings are applied. This is normal, please do not interfere,
|
||||||
the process will unmount the DMG and cleanup before finishing.
|
the process will unmount the DMG and cleanup before finishing.
|
||||||
|
|
||||||
When complete, it will have produced `Bitcoin-Qt.dmg`.
|
When complete, it will have produced `Litecoin-Qt.dmg`.
|
||||||
|
|
||||||
## SDK Extraction
|
## SDK Extraction
|
||||||
|
|
||||||
|
|||||||
@ -44,8 +44,8 @@ alias = Alias.from_bytes(icvp['backgroundImageAlias'])
|
|||||||
alias.volume.name = package_name_ns
|
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:\x00bitcoinuser:\x00Documents:\x00bitcoin:\x00bitcoin:\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/bitcoinuser/Documents/bitcoin/bitcoin/' + package_name_ns + '.temp.dmg'
|
alias.volume.disk_image_alias.target.posix_path = 'Users/litecoinuser/Documents/litecoin/litecoin/' + 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
|
||||||
@ -53,7 +53,7 @@ ds['.']['icvp'] = icvp
|
|||||||
ds['.']['vSrn'] = ('long', 1)
|
ds['.']['vSrn'] = ('long', 1)
|
||||||
|
|
||||||
ds['Applications']['Iloc'] = (370, 156)
|
ds['Applications']['Iloc'] = (370, 156)
|
||||||
ds['Bitcoin-Qt.app']['Iloc'] = (128, 156)
|
ds['Litecoin-Qt.app']['Iloc'] = (128, 156)
|
||||||
|
|
||||||
ds.flush()
|
ds.flush()
|
||||||
ds.close()
|
ds.close()
|
||||||
|
|||||||
@ -8,9 +8,9 @@ and remove old versions as necessary (at a minimum when GetDesirableServiceFlags
|
|||||||
changes its default return value, as those are the services which seeds are added
|
changes its default return value, as those are the services which seeds are added
|
||||||
to addrman with).
|
to addrman with).
|
||||||
|
|
||||||
The seeds compiled into the release are created from sipa's DNS seed data, like this:
|
The seeds compiled into the release are created from poolers's DNS seed data, like this:
|
||||||
|
|
||||||
curl -s http://bitcoin.sipa.be/seeds.txt.gz | gzip -dc > seeds_main.txt
|
curl -s https://www.litecoinpool.org/seeds.txt > seeds_main.txt
|
||||||
python3 makeseeds.py < seeds_main.txt > nodes_main.txt
|
python3 makeseeds.py < seeds_main.txt > nodes_main.txt
|
||||||
python3 generate-seeds.py . > ../../src/chainparamsseeds.h
|
python3 generate-seeds.py . > ../../src/chainparamsseeds.h
|
||||||
|
|
||||||
|
|||||||
@ -121,7 +121,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 bitcoin network\n')
|
g.write(' * List of fixed seed nodes for the litecoin 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')
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
### TestGen ###
|
### TestGen ###
|
||||||
|
|
||||||
Utilities to generate test vectors for the data-driven Bitcoin tests.
|
Utilities to generate test vectors for the data-driven Litecoin tests.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
|
|||||||
@ -6,8 +6,8 @@
|
|||||||
"""
|
"""
|
||||||
ZMQ example using python3's asyncio
|
ZMQ example using python3's asyncio
|
||||||
|
|
||||||
Bitcoin should be started with the command line arguments:
|
Litecoind should be started with the command line arguments:
|
||||||
bitcoind -testnet -daemon \
|
litecoind -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 \
|
||||||
|
|||||||
@ -12,11 +12,11 @@ For example:
|
|||||||
|
|
||||||
make HOST=x86_64-w64-mingw32 -j4
|
make HOST=x86_64-w64-mingw32 -j4
|
||||||
|
|
||||||
**Bitcoin Core's configure script by default will ignore the depends output.** In
|
**Litecoin Core's configure script by default will ignore the depends output.** In
|
||||||
order for it to pick up libraries, tools, and settings from the depends build,
|
order for it to pick up libraries, tools, and settings from the depends build,
|
||||||
you must point it at the appropriate `--prefix` directory generated by the
|
you must point it at the appropriate `--prefix` directory generated by the
|
||||||
build. In the above example, a prefix dir named x86_64-w64-mingw32 will be
|
build. In the above example, a prefix dir named x86_64-w64-mingw32 will be
|
||||||
created. To use it for Bitcoin:
|
created. To use it for Litecoin:
|
||||||
|
|
||||||
./configure --prefix=$PWD/depends/x86_64-w64-mingw32
|
./configure --prefix=$PWD/depends/x86_64-w64-mingw32
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ from llvm.org. Clang 8 or later is required.</dd>
|
|||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
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 bitcoin's configure. In this case, `--disable-wallet`.
|
options will be passed to litecoin's configure. In this case, `--disable-wallet`.
|
||||||
|
|
||||||
### Additional targets
|
### Additional targets
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
This is a system of building and caching dependencies necessary for building Bitcoin.
|
This is a system of building and caching dependencies necessary for building Litecoin.
|
||||||
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
|
||||||
|
|||||||
@ -1,41 +1,40 @@
|
|||||||
Bitcoin Core
|
Litecoin Core
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Setup
|
Setup
|
||||||
---------------------
|
---------------------
|
||||||
Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Bitcoin transactions, which requires a few hundred gigabytes of disk space. 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.
|
Litecoin Core is the original Litecoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Litecoin transactions, which requires approximately 22 gigabytes of disk space. 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.
|
||||||
|
|
||||||
To download Bitcoin Core, visit [bitcoincore.org](https://bitcoincore.org/en/download/).
|
To download Litecoin Core, visit [litecoin.org](https://litecoin.org/).
|
||||||
|
|
||||||
Running
|
Running
|
||||||
---------------------
|
---------------------
|
||||||
The following are some helpful notes on how to run Bitcoin Core on your native platform.
|
The following are some helpful notes on how to run Litecoin Core on your native platform.
|
||||||
|
|
||||||
### Unix
|
### Unix
|
||||||
|
|
||||||
Unpack the files into a directory and run:
|
Unpack the files into a directory and run:
|
||||||
|
|
||||||
- `bin/bitcoin-qt` (GUI) or
|
- `bin/litecoin-qt` (GUI) or
|
||||||
- `bin/bitcoind` (headless)
|
- `bin/litecoind` (headless)
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
Unpack the files into a directory, and then run bitcoin-qt.exe.
|
Unpack the files into a directory, and then run litecoin-qt.exe.
|
||||||
|
|
||||||
### macOS
|
### macOS
|
||||||
|
|
||||||
Drag Bitcoin Core to your applications folder, and then run Bitcoin Core.
|
Drag Litecoin Core to your applications folder, and then run Litecoin Core.
|
||||||
|
|
||||||
### Need Help?
|
### Need Help?
|
||||||
|
|
||||||
* See the documentation at the [Bitcoin Wiki](https://en.bitcoin.it/wiki/Main_Page)
|
* See the documentation at the [Litecoin Wiki](https://litecoin.info/) for help and more information.
|
||||||
for help and more information.
|
* Ask for help on [#litecoin](https://webchat.freenode.net/#litecoin) on Freenode. If you don't have an IRC client, use [webchat here](https://webchat.freenode.net/#litecoin).
|
||||||
* Ask for help on [#bitcoin](https://webchat.freenode.net/#bitcoin) on Freenode. If you don't have an IRC client, use [webchat here](https://webchat.freenode.net/#bitcoin).
|
* Ask for help on the [LitecoinTalk](https://litecointalk.io/) forums, in the [Technical Support board](https://litecointalk.io/c/technical-support).
|
||||||
* Ask for help on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Technical Support board](https://bitcointalk.org/index.php?board=4.0).
|
|
||||||
|
|
||||||
Building
|
Building
|
||||||
---------------------
|
---------------------
|
||||||
The following are developer notes on how to build Bitcoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
The following are developer notes on how to build Litecoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
||||||
|
|
||||||
- [Dependencies](dependencies.md)
|
- [Dependencies](dependencies.md)
|
||||||
- [macOS Build Notes](build-osx.md)
|
- [macOS Build Notes](build-osx.md)
|
||||||
@ -48,7 +47,7 @@ The following are developer notes on how to build Bitcoin Core on your native pl
|
|||||||
|
|
||||||
Development
|
Development
|
||||||
---------------------
|
---------------------
|
||||||
The Bitcoin repo's [root README](/README.md) contains relevant information on the development process and automated testing.
|
The Litecoin repo's [root README](/README.md) contains relevant information on the development process and automated testing.
|
||||||
|
|
||||||
- [Developer Notes](developer-notes.md)
|
- [Developer Notes](developer-notes.md)
|
||||||
- [Productivity Notes](productivity.md)
|
- [Productivity Notes](productivity.md)
|
||||||
@ -65,9 +64,8 @@ The Bitcoin repo's [root README](/README.md) contains relevant information on th
|
|||||||
- [Benchmarking](benchmarking.md)
|
- [Benchmarking](benchmarking.md)
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
* Discuss on the [BitcoinTalk](https://bitcointalk.org/) forums, in the [Development & Technical Discussion board](https://bitcointalk.org/index.php?board=6.0).
|
* Discuss on the [LitecoinTalk](https://litecointalk.io/) forums.
|
||||||
* Discuss project-specific development on #bitcoin-core-dev on Freenode. If you don't have an IRC client, use [webchat here](https://webchat.freenode.net/#bitcoin-core-dev).
|
* Discuss general Litecoin development on #litecoin-dev on Freenode. If you don't have an IRC client, use [webchat here](https://webchat.freenode.net/#litecoin-dev).
|
||||||
* Discuss general Bitcoin development on #bitcoin-dev on Freenode. If you don't have an IRC client, use [webchat here](https://webchat.freenode.net/#bitcoin-dev).
|
|
||||||
|
|
||||||
### Miscellaneous
|
### Miscellaneous
|
||||||
- [Assets Attribution](assets-attribution.md)
|
- [Assets Attribution](assets-attribution.md)
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
Bitcoin Core
|
Litecoin Core
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Intro
|
Intro
|
||||||
-----
|
-----
|
||||||
Bitcoin is a free open source peer-to-peer electronic cash system that is
|
Litecoin 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 bitcoin-qt.exe.
|
Unpack the files into a directory and run litecoin-qt.exe.
|
||||||
|
|
||||||
Bitcoin Core is the original Bitcoin client and it builds the backbone of the network.
|
Litecoin Core is the original Litecoin client and it builds the backbone of the network.
|
||||||
However, it downloads and stores the entire history of Bitcoin transactions;
|
However, it downloads and stores the entire history of Litecoin 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 bitcoin wiki at:
|
See the litecoin wiki at:
|
||||||
https://en.bitcoin.it/wiki/Main_Page
|
https://litecoin.info/
|
||||||
for more help and information.
|
for more help and information.
|
||||||
|
|||||||
@ -3,8 +3,8 @@ Unauthenticated REST Interface
|
|||||||
|
|
||||||
The REST API can be enabled with the `-rest` option.
|
The REST API can be enabled with the `-rest` option.
|
||||||
|
|
||||||
The interface runs on the same port as the JSON-RPC interface, by default port 8332 for mainnet, port 18332 for testnet,
|
The interface runs on the same port as the JSON-RPC interface, by default port 9332 for mainnet, port 19332 for testnet,
|
||||||
and port 18443 for regtest.
|
and port 19443 for regtest.
|
||||||
|
|
||||||
REST Interface consistency guarantees
|
REST Interface consistency guarantees
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
@ -116,7 +116,7 @@ Only supports JSON as output format.
|
|||||||
* bytes : (numeric) size of the TX mempool in bytes
|
* bytes : (numeric) size of the TX mempool in bytes
|
||||||
* usage : (numeric) total TX mempool memory usage
|
* usage : (numeric) total TX mempool memory usage
|
||||||
* maxmempool : (numeric) maximum memory usage for the mempool in bytes
|
* maxmempool : (numeric) maximum memory usage for the mempool in bytes
|
||||||
* mempoolminfee : (numeric) minimum feerate (BTC per KB) for tx to be accepted
|
* mempoolminfee : (numeric) minimum feerate (LTC per KB) for tx to be accepted
|
||||||
|
|
||||||
`GET /rest/mempool/contents.json`
|
`GET /rest/mempool/contents.json`
|
||||||
|
|
||||||
@ -125,4 +125,4 @@ Only supports JSON as output format.
|
|||||||
|
|
||||||
Risks
|
Risks
|
||||||
-------------
|
-------------
|
||||||
Running a web browser on the same node with a REST enabled bitcoind 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 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.
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
The list of assets used in the bitcoin source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright).
|
The list of assets used in the litecoin source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright).
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
Benchmarking
|
Benchmarking
|
||||||
============
|
============
|
||||||
|
|
||||||
Bitcoin Core has an internal benchmarking framework, with benchmarks
|
Litecoin Core has an internal benchmarking framework, with benchmarks
|
||||||
for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), rolling bloom filter, coins selection,
|
for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), rolling bloom filter, coins selection,
|
||||||
thread queue, wallet balance.
|
thread queue, wallet balance.
|
||||||
|
|
||||||
Running
|
Running
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
For benchmarks purposes you only need to compile `bitcoin_bench`. Beware of configuring without `--enable-debug` as this would impact
|
For benchmarks purposes you only need to compile `litecoin_bench`. Beware of configuring without `--enable-debug` as this would impact
|
||||||
benchmarking by unlatching log printers and lock analysis.
|
benchmarking by unlatching log printers and lock analysis.
|
||||||
|
|
||||||
make -C src bitcoin_bench
|
make -C src litecoin_bench
|
||||||
|
|
||||||
After compiling bitcoin-core, the benchmarks can be run with:
|
After compiling litecoin-core, the benchmarks can be run with:
|
||||||
|
|
||||||
src/bench/bench_bitcoin
|
src/bench/bench_litecoin
|
||||||
|
|
||||||
The output will look similar to:
|
The output will look similar to:
|
||||||
```
|
```
|
||||||
@ -29,7 +29,7 @@ The output will look similar to:
|
|||||||
Help
|
Help
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
src/bench/bench_bitcoin --help
|
src/bench/bench_litcoin --help
|
||||||
|
|
||||||
To print options like scaling factor or per-benchmark filter.
|
To print options like scaling factor or per-benchmark filter.
|
||||||
|
|
||||||
@ -45,6 +45,6 @@ More benchmarks are needed for, in no particular order:
|
|||||||
Going Further
|
Going Further
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
To monitor Bitcoin Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/bitcoinperf
|
To monitor Litecoin Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/bitcoinperf
|
||||||
|
|
||||||
To generate Flame Graphs for Bitcoin Core: https://github.com/eklitzke/bitcoin/blob/flamegraphs/doc/flamegraphs.md
|
To generate Flame Graphs for Litecoin Core: https://github.com/eklitzke/bitcoin/blob/flamegraphs/doc/flamegraphs.md
|
||||||
|
|||||||
@ -2,7 +2,7 @@ FreeBSD build guide
|
|||||||
======================
|
======================
|
||||||
(updated for FreeBSD 12.0)
|
(updated for FreeBSD 12.0)
|
||||||
|
|
||||||
This guide describes how to build bitcoind and command-line utilities on FreeBSD.
|
This guide describes how to build litecoind and command-line utilities on FreeBSD.
|
||||||
|
|
||||||
This guide does not contain instructions for building the GUI.
|
This guide does not contain instructions for building the GUI.
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ You will need the following dependencies, which can be installed as root via pkg
|
|||||||
```bash
|
```bash
|
||||||
pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
|
pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
|
||||||
|
|
||||||
git clone https://github.com/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
```
|
```
|
||||||
|
|
||||||
In order to run the test suite (recommended), you will need to have Python 3 installed:
|
In order to run the test suite (recommended), you will need to have Python 3 installed:
|
||||||
@ -34,7 +34,7 @@ BerkeleyDB is only necessary for the wallet functionality. To skip this, pass
|
|||||||
export BDB_PREFIX="$PWD/db4"
|
export BDB_PREFIX="$PWD/db4"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building Bitcoin Core
|
## Building Litecoin Core
|
||||||
|
|
||||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ NetBSD build guide
|
|||||||
======================
|
======================
|
||||||
(updated for NetBSD 8.0)
|
(updated for NetBSD 8.0)
|
||||||
|
|
||||||
This guide describes how to build bitcoind and command-line utilities on NetBSD.
|
This guide describes how to build litecoind and command-line utilities on NetBSD.
|
||||||
|
|
||||||
This guide does not contain instructions for building the GUI.
|
This guide does not contain instructions for building the GUI.
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ libtool
|
|||||||
pkg-config
|
pkg-config
|
||||||
python37
|
python37
|
||||||
|
|
||||||
git clone https://github.com/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
```
|
```
|
||||||
|
|
||||||
See [dependencies.md](dependencies.md) for a complete overview.
|
See [dependencies.md](dependencies.md) for a complete overview.
|
||||||
@ -47,7 +47,7 @@ from the root of the repository. Then set `BDB_PREFIX` for the next section:
|
|||||||
export BDB_PREFIX="$PWD/db4"
|
export BDB_PREFIX="$PWD/db4"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Building Bitcoin Core
|
### Building Litecoin Core
|
||||||
|
|
||||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ OpenBSD build guide
|
|||||||
======================
|
======================
|
||||||
(updated for OpenBSD 6.7)
|
(updated for OpenBSD 6.7)
|
||||||
|
|
||||||
This guide describes how to build bitcoind, bitcoin-qt, and command-line utilities on OpenBSD.
|
This guide describes how to build litecoind, litecoin-qt, and command-line utilities on OpenBSD.
|
||||||
|
|
||||||
Preparation
|
Preparation
|
||||||
-------------
|
-------------
|
||||||
@ -16,7 +16,7 @@ pkg_add autoconf # (select highest version, e.g. 2.69)
|
|||||||
pkg_add automake # (select highest version, e.g. 1.16)
|
pkg_add automake # (select highest version, e.g. 1.16)
|
||||||
pkg_add python # (select highest version, e.g. 3.8)
|
pkg_add python # (select highest version, e.g. 3.8)
|
||||||
|
|
||||||
git clone https://github.com/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
```
|
```
|
||||||
|
|
||||||
See [dependencies.md](dependencies.md) for a complete overview.
|
See [dependencies.md](dependencies.md) for a complete overview.
|
||||||
@ -47,7 +47,7 @@ from the root of the repository. Then set `BDB_PREFIX` for the next section:
|
|||||||
export BDB_PREFIX="$PWD/db4"
|
export BDB_PREFIX="$PWD/db4"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Building Bitcoin Core
|
### Building Litecoin Core
|
||||||
|
|
||||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||||
|
|
||||||
|
|||||||
@ -62,17 +62,17 @@ Also, the Homebrew package could be installed:
|
|||||||
brew install berkeley-db4
|
brew install berkeley-db4
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build Bitcoin Core
|
## Build Litecoin Core
|
||||||
|
|
||||||
1. Clone the Bitcoin Core source code:
|
1. Clone the Litecoin Core source code:
|
||||||
```shell
|
```shell
|
||||||
git clone https://github.com/bitcoin/bitcoin
|
git clone https://github.com/litecoin-project/litecoin
|
||||||
cd bitcoin
|
cd litecoin
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Build Bitcoin Core:
|
2. Build Litecoin Core:
|
||||||
|
|
||||||
Configure and build the headless Bitcoin Core binaries as well as the GUI (if Qt is found).
|
Configure and build the headless Litecoin Core binaries as well as the GUI (if Qt is found).
|
||||||
|
|
||||||
You can disable the GUI build by passing `--without-gui` to configure.
|
You can disable the GUI build by passing `--without-gui` to configure.
|
||||||
```shell
|
```shell
|
||||||
@ -92,7 +92,7 @@ brew install berkeley-db4
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Disable-wallet mode
|
## Disable-wallet mode
|
||||||
When the intention is to run only a P2P node without a wallet, Bitcoin Core may be
|
When the intention is to run only a P2P node without a wallet, Litecoin Core may be
|
||||||
compiled in disable-wallet mode with:
|
compiled in disable-wallet mode with:
|
||||||
```shell
|
```shell
|
||||||
./configure --disable-wallet
|
./configure --disable-wallet
|
||||||
@ -103,30 +103,30 @@ In this case there is no dependency on [*Berkeley DB*](#berkeley-db) and [*SQLit
|
|||||||
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.
|
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
Bitcoin Core is now available at `./src/bitcoind`
|
Litecoin Core is now available at `./src/litecoind`
|
||||||
|
|
||||||
Before running, you may create an empty configuration file:
|
Before running, you may create an empty configuration file:
|
||||||
```shell
|
```shell
|
||||||
mkdir -p "/Users/${USER}/Library/Application Support/Bitcoin"
|
mkdir -p "/Users/${USER}/Library/Application Support/Litecoin"
|
||||||
|
|
||||||
touch "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
touch "/Users/${USER}/Library/Application Support/Litecoin/litecoin.conf"
|
||||||
|
|
||||||
chmod 600 "/Users/${USER}/Library/Application Support/Bitcoin/bitcoin.conf"
|
chmod 600 "/Users/${USER}/Library/Application Support/Litecoin/litecoin.conf"
|
||||||
```
|
```
|
||||||
|
|
||||||
The first time you run bitcoind, it will start downloading the blockchain. This process could
|
The first time you run litecoind, it will start downloading the blockchain. This process could
|
||||||
take many hours, or even days on slower than average systems.
|
take many hours, or even days on slower than average systems.
|
||||||
|
|
||||||
You can monitor the download process by looking at the debug.log file:
|
You can monitor the download process by looking at the debug.log file:
|
||||||
```shell
|
```shell
|
||||||
tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
|
tail -f $HOME/Library/Application\ Support/Litecoin/debug.log
|
||||||
```
|
```
|
||||||
|
|
||||||
## Other commands:
|
## Other commands:
|
||||||
```shell
|
```shell
|
||||||
./src/bitcoind -daemon # Starts the bitcoin daemon.
|
./src/litecoind -daemon # Starts the litecoin daemon.
|
||||||
./src/bitcoin-cli --help # Outputs a list of command-line options.
|
./src/litecoin-cli --help # Outputs a list of command-line options.
|
||||||
./src/bitcoin-cli help # Outputs a list of RPC commands when the daemon is running.
|
./src/litecoin-cli help # Outputs a list of RPC commands when the daemon is running.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
UNIX BUILD NOTES
|
UNIX BUILD NOTES
|
||||||
====================
|
====================
|
||||||
Some notes on how to build Bitcoin Core in Unix.
|
Some notes on how to build Litecoin Core in Unix.
|
||||||
|
|
||||||
(For BSD specific instructions, see `build-*bsd.md` in this directory.)
|
(For BSD specific instructions, see `build-*bsd.md` in this directory.)
|
||||||
|
|
||||||
Note
|
Note
|
||||||
---------------------
|
---------------------
|
||||||
Always use absolute paths to configure and compile Bitcoin Core and the dependencies.
|
Always use absolute paths to configure and compile Litecoin Core and the dependencies.
|
||||||
For example, when specifying the path of the dependency:
|
For example, when specifying the path of the dependency:
|
||||||
|
|
||||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||||
@ -24,7 +24,7 @@ make
|
|||||||
make install # optional
|
make install # optional
|
||||||
```
|
```
|
||||||
|
|
||||||
This will build bitcoin-qt as well, if the dependencies are met.
|
This will build litecoin-qt as well, if the dependencies are met.
|
||||||
|
|
||||||
Dependencies
|
Dependencies
|
||||||
---------------------
|
---------------------
|
||||||
@ -54,7 +54,7 @@ Memory Requirements
|
|||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
|
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
|
||||||
memory available when compiling Bitcoin Core. On systems with less, gcc can be
|
memory available when compiling Litecoin Core. On systems with less, gcc can be
|
||||||
tuned to conserve memory with additional CXXFLAGS:
|
tuned to conserve memory with additional CXXFLAGS:
|
||||||
|
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ SQLite is required for the wallet:
|
|||||||
|
|
||||||
sudo apt install libsqlite3-dev
|
sudo apt install libsqlite3-dev
|
||||||
|
|
||||||
To build Bitcoin Core without wallet, see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode)
|
To build Litecoin Core without wallet, see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode)
|
||||||
|
|
||||||
|
|
||||||
Optional (see `--with-miniupnpc` and `--enable-upnp-default`):
|
Optional (see `--with-miniupnpc` and `--enable-upnp-default`):
|
||||||
@ -109,7 +109,7 @@ ZMQ dependencies (provides ZMQ API):
|
|||||||
|
|
||||||
GUI dependencies:
|
GUI dependencies:
|
||||||
|
|
||||||
If you want to build bitcoin-qt, make sure that the required packages for Qt development
|
If you want to build litecoin-qt, make sure that the required packages for Qt development
|
||||||
are installed. Qt 5 is necessary to build the GUI.
|
are installed. Qt 5 is necessary to build the GUI.
|
||||||
To build without GUI pass `--without-gui`.
|
To build without GUI pass `--without-gui`.
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ libqrencode (optional) can be installed with:
|
|||||||
|
|
||||||
sudo apt-get install libqrencode-dev
|
sudo apt-get install libqrencode-dev
|
||||||
|
|
||||||
Once these are installed, they will be found by configure and a bitcoin-qt executable will be
|
Once these are installed, they will be found by configure and a litecoin-qt executable will be
|
||||||
built by default.
|
built by default.
|
||||||
|
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ SQLite can be installed with:
|
|||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
The release is built with GCC and then "strip bitcoind" to strip the debug
|
The release is built with GCC and then "strip litecoind" to strip the debug
|
||||||
symbols, which reduces the executable size by about 90%.
|
symbols, which reduces the executable size by about 90%.
|
||||||
|
|
||||||
|
|
||||||
@ -196,7 +196,7 @@ If you need to build Boost yourself:
|
|||||||
|
|
||||||
Security
|
Security
|
||||||
--------
|
--------
|
||||||
To help make your Bitcoin Core installation more secure by making certain attacks impossible to
|
To help make your Litecoin Core installation more secure by making certain attacks impossible to
|
||||||
exploit even if a vulnerability is found, binaries are hardened by default.
|
exploit even if a vulnerability is found, binaries are hardened by default.
|
||||||
This can be disabled with:
|
This can be disabled with:
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ Hardening enables the following features:
|
|||||||
|
|
||||||
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
||||||
|
|
||||||
scanelf -e ./bitcoin
|
scanelf -e ./litecoin
|
||||||
|
|
||||||
The output should contain:
|
The output should contain:
|
||||||
|
|
||||||
@ -226,13 +226,13 @@ Hardening enables the following features:
|
|||||||
ET_DYN
|
ET_DYN
|
||||||
|
|
||||||
* _Non-executable Stack_: If the stack is executable then trivial stack-based buffer overflow exploits are possible if
|
* _Non-executable Stack_: If the stack is executable then trivial stack-based buffer overflow exploits are possible if
|
||||||
vulnerable buffers are found. By default, Bitcoin Core should be built with a non-executable stack,
|
vulnerable buffers are found. By default, Litecoin Core should be built with a non-executable stack,
|
||||||
but if one of the libraries it uses asks for an executable stack or someone makes a mistake
|
but if one of the libraries it uses asks for an executable stack or someone makes a mistake
|
||||||
and uses a compiler extension which requires an executable stack, it will silently build an
|
and uses a compiler extension which requires an executable stack, it will silently build an
|
||||||
executable without the non-executable stack protection.
|
executable without the non-executable stack protection.
|
||||||
|
|
||||||
To verify that the stack is non-executable after compiling use:
|
To verify that the stack is non-executable after compiling use:
|
||||||
`scanelf -e ./bitcoin`
|
`scanelf -e ./litecoin`
|
||||||
|
|
||||||
The output should contain:
|
The output should contain:
|
||||||
STK/REL/PTL
|
STK/REL/PTL
|
||||||
@ -242,7 +242,7 @@ Hardening enables the following features:
|
|||||||
|
|
||||||
Disable-wallet mode
|
Disable-wallet mode
|
||||||
--------------------
|
--------------------
|
||||||
When the intention is to run only a P2P node without a wallet, Bitcoin Core may be compiled in
|
When the intention is to run only a P2P node without a wallet, Litecoin Core may be compiled in
|
||||||
disable-wallet mode with:
|
disable-wallet mode with:
|
||||||
|
|
||||||
./configure --disable-wallet
|
./configure --disable-wallet
|
||||||
@ -263,8 +263,8 @@ Setup and Build Example: Arch Linux
|
|||||||
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
|
This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:
|
||||||
|
|
||||||
pacman -S git base-devel boost libevent python
|
pacman -S git base-devel boost libevent python
|
||||||
git clone https://github.com/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
cd bitcoin/
|
cd litecoin/
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --disable-wallet --without-gui --without-miniupnpc
|
./configure --disable-wallet --without-gui --without-miniupnpc
|
||||||
make check
|
make check
|
||||||
@ -273,7 +273,7 @@ Note:
|
|||||||
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
|
Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package `db`) using `--with-incompatible-bdb`,
|
||||||
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
|
or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using
|
||||||
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
|
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/bitcoin/trunk/PKGBUILD).
|
||||||
As mentioned above, when maintaining portability of the wallet between the standard Bitcoin Core distributions and independently built
|
As mentioned above, when maintaining portability of the wallet between the standard Litecoin Core distributions and independently built
|
||||||
node software is desired, Berkeley DB 4.8 must be used.
|
node software is desired, Berkeley DB 4.8 must be used.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
WINDOWS BUILD NOTES
|
WINDOWS BUILD NOTES
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Below are some notes on how to build Bitcoin Core for Windows.
|
Below are some notes on how to build Litecoin Core for Windows.
|
||||||
|
|
||||||
The options known to work for building Bitcoin Core on Windows are:
|
The options known to work for building Litecoin Core on Windows are:
|
||||||
|
|
||||||
* On Linux, using the [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu Bionic 18.04 is required
|
* On Linux, using the [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu Bionic 18.04 is required
|
||||||
and is the platform used to build the Bitcoin Core Windows release binaries.
|
and is the platform used to build the Litecoin Core Windows release binaries.
|
||||||
* On Windows, using [Windows
|
* On Windows, using [Windows
|
||||||
Subsystem for Linux (WSL)](https://docs.microsoft.com/windows/wsl/about) and the Mingw-w64 cross compiler tool chain.
|
Subsystem for Linux (WSL)](https://docs.microsoft.com/windows/wsl/about) and the Mingw-w64 cross compiler tool chain.
|
||||||
* On Windows, using a native compiler tool chain such as [Visual Studio](https://www.visualstudio.com). See [README.md](/build_msvc/README.md).
|
* On Windows, using a native compiler tool chain such as [Visual Studio](https://www.visualstudio.com). See [README.md](/build_msvc/README.md).
|
||||||
@ -72,8 +72,8 @@ If you want to build the windows installer with `make deploy` you need [NSIS](ht
|
|||||||
|
|
||||||
Acquire the source in the usual way:
|
Acquire the source in the usual way:
|
||||||
|
|
||||||
git clone https://github.com/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
cd bitcoin
|
cd litecoin
|
||||||
|
|
||||||
## Building for 64-bit Windows
|
## Building for 64-bit Windows
|
||||||
|
|
||||||
@ -87,8 +87,8 @@ Ubuntu Bionic 18.04 <sup>[1](#footnote1)</sup>:
|
|||||||
|
|
||||||
Once the toolchain is installed the build steps are common:
|
Once the toolchain is installed the build steps are common:
|
||||||
|
|
||||||
Note that for WSL the Bitcoin Core source path MUST be somewhere in the default mount file system, for
|
Note that for WSL the Litecoin Core source path MUST be somewhere in the default mount file system, for
|
||||||
example /usr/src/bitcoin, AND not under /mnt/d/. If this is not the case the dependency autoconf scripts will fail.
|
example /usr/src/litecoin, AND not under /mnt/d/. If this is not the case the dependency autoconf scripts will fail.
|
||||||
This means you cannot use a directory that is located directly on the host Windows file system to perform the build.
|
This means you cannot use a directory that is located directly on the host Windows file system to perform the build.
|
||||||
|
|
||||||
Additional WSL Note: WSL support for [launching Win32 applications](https://docs.microsoft.com/en-us/archive/blogs/wsl/windows-and-ubuntu-interoperability#launching-win32-applications-from-within-wsl)
|
Additional WSL Note: WSL support for [launching Win32 applications](https://docs.microsoft.com/en-us/archive/blogs/wsl/windows-and-ubuntu-interoperability#launching-win32-applications-from-within-wsl)
|
||||||
@ -118,9 +118,9 @@ Installation
|
|||||||
After building using the Windows subsystem it can be useful to copy the compiled
|
After building using the Windows subsystem it can be useful to copy the compiled
|
||||||
executables to a directory on the Windows drive in the same directory structure
|
executables to a directory on the Windows drive in the same directory structure
|
||||||
as they appear in the release `.zip` archive. This can be done in the following
|
as they appear in the release `.zip` archive. This can be done in the following
|
||||||
way. This will install to `c:\workspace\bitcoin`, for example:
|
way. This will install to `c:\workspace\litecoin`, for example:
|
||||||
|
|
||||||
make install DESTDIR=/mnt/c/workspace/bitcoin
|
make install DESTDIR=/mnt/c/workspace/litecoin
|
||||||
|
|
||||||
You can also create an installer using:
|
You can also create an installer using:
|
||||||
|
|
||||||
@ -133,5 +133,5 @@ Footnotes
|
|||||||
compiler options to allow a choice between either posix or win32 threads. The default option is win32 threads which is the more
|
compiler options to allow a choice between either posix or win32 threads. The default option is win32 threads which is the more
|
||||||
efficient since it will result in binary code that links directly with the Windows kernel32.lib. Unfortunately, the headers
|
efficient since it will result in binary code that links directly with the Windows kernel32.lib. Unfortunately, the headers
|
||||||
required to support win32 threads conflict with some of the classes in the C++11 standard library, in particular std::mutex.
|
required to support win32 threads conflict with some of the classes in the C++11 standard library, in particular std::mutex.
|
||||||
It's not possible to build the Bitcoin Core code using the win32 version of the Mingw-w64 cross compilers (at least not without
|
It's not possible to build the Litecoin Core code using the win32 version of the Mingw-w64 cross compilers (at least not without
|
||||||
modifying headers in the Bitcoin Core source code).
|
modifying headers in the Litecoin Core source code).
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Dependencies
|
Dependencies
|
||||||
============
|
============
|
||||||
|
|
||||||
These are the dependencies currently used by Bitcoin Core. You can find instructions for installing them in the `build-*.md` file for your platform.
|
These are the dependencies currently used by Litecoin 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#third-party-libraries) |
|
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
|
||||||
| --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- |
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# Support for Output Descriptors in Bitcoin Core
|
# Support for Output Descriptors in Litecoin Core
|
||||||
|
|
||||||
Since Bitcoin Core v0.17, there is support for Output Descriptors. This is a
|
Since Litecoin Core v0.17, there is support for Output Descriptors. This is a
|
||||||
simple language which can be used to describe collections of output scripts.
|
simple language which can be used to describe collections of output scripts.
|
||||||
Supporting RPCs are:
|
Supporting RPCs are:
|
||||||
- `scantxoutset` takes as input descriptors to scan for, and also reports
|
- `scantxoutset` takes as input descriptors to scan for, and also reports
|
||||||
@ -89,9 +89,9 @@ Descriptors consist of several types of expressions. The top level expression is
|
|||||||
(Anywhere a `'` suffix is permitted to denote hardened derivation, the suffix `h` can be used instead.)
|
(Anywhere a `'` suffix is permitted to denote hardened derivation, the suffix `h` can be used instead.)
|
||||||
|
|
||||||
`ADDR` expressions are any type of supported address:
|
`ADDR` expressions are any type of supported address:
|
||||||
- P2PKH addresses (base58, of the form `1...` for mainnet or `[nm]...` for testnet). Note that P2PKH addresses in descriptors cannot be used for P2PK outputs (use the `pk` function instead).
|
- P2PKH addresses (base58, of the form `L...` for mainnet or `[nm]...` for testnet). Note that P2PKH addresses in descriptors cannot be used for P2PK outputs (use the `pk` function instead).
|
||||||
- P2SH addresses (base58, of the form `3...` for mainnet or `2...` for testnet, defined in [BIP 13](https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki)).
|
- P2SH addresses (base58, of the form `3...` for mainnet or `2...` for testnet, defined in [BIP 13](https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki)).
|
||||||
- Segwit addresses (bech32, of the form `bc1...` for mainnet or `tb1...` for testnet, defined in [BIP 173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)).
|
- Segwit addresses (bech32, of the form `ltc1...` for mainnet or `tltc1...` for testnet, defined in [BIP 173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)).
|
||||||
|
|
||||||
## Explanation
|
## Explanation
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ steps, or for dumping wallet descriptors including private key material.
|
|||||||
### Compatibility with old wallets
|
### Compatibility with old wallets
|
||||||
|
|
||||||
In order to easily represent the sets of scripts currently supported by
|
In order to easily represent the sets of scripts currently supported by
|
||||||
existing Bitcoin Core wallets, a convenience function `combo` is
|
existing Litecoin Core wallets, a convenience function `combo` is
|
||||||
provided, which takes as input a public key, and describes a set of P2PK,
|
provided, which takes as input a public key, and describes a set of P2PK,
|
||||||
P2PKH, P2WPKH, and P2SH-P2WPH scripts for that key. In case the key is
|
P2PKH, P2WPKH, and P2SH-P2WPH scripts for that key. In case the key is
|
||||||
uncompressed, the set only includes P2PK and P2PKH scripts.
|
uncompressed, the set only includes P2PK and P2PKH scripts.
|
||||||
|
|||||||
@ -24,7 +24,7 @@ Developer Notes
|
|||||||
- [Threads](#threads)
|
- [Threads](#threads)
|
||||||
- [Ignoring IDE/editor files](#ignoring-ideeditor-files)
|
- [Ignoring IDE/editor files](#ignoring-ideeditor-files)
|
||||||
- [Development guidelines](#development-guidelines)
|
- [Development guidelines](#development-guidelines)
|
||||||
- [General Bitcoin Core](#general-bitcoin-core)
|
- [General Litecoin Core](#general-litecoin-core)
|
||||||
- [Wallet](#wallet)
|
- [Wallet](#wallet)
|
||||||
- [General C++](#general-c)
|
- [General C++](#general-c)
|
||||||
- [C++ data structures](#c-data-structures)
|
- [C++ data structures](#c-data-structures)
|
||||||
@ -135,7 +135,7 @@ Refer to [/test/functional/README.md#style-guidelines](/test/functional/README.m
|
|||||||
Coding Style (Doxygen-compatible comments)
|
Coding Style (Doxygen-compatible comments)
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
|
|
||||||
Bitcoin Core uses [Doxygen](http://www.doxygen.nl/) to generate its official documentation.
|
Litecoin Core uses [Doxygen](http://www.doxygen.nl/) to generate its official documentation.
|
||||||
|
|
||||||
Use Doxygen-compatible comment blocks for functions, methods, and fields.
|
Use Doxygen-compatible comment blocks for functions, methods, and fields.
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ to see it.
|
|||||||
|
|
||||||
### Testnet and Regtest modes
|
### Testnet and Regtest modes
|
||||||
|
|
||||||
Run with the `-testnet` option to run with "play bitcoins" on the test network, if you
|
Run with the `-testnet` option to run with "play litecoins" on the test network, if you
|
||||||
are testing multi-machine code that needs to operate across the internet.
|
are testing multi-machine code that needs to operate across the internet.
|
||||||
|
|
||||||
If you are testing something that can run on one machine, run with the `-regtest` option.
|
If you are testing something that can run on one machine, run with the `-regtest` option.
|
||||||
@ -270,7 +270,7 @@ that run in `-regtest` mode.
|
|||||||
|
|
||||||
### DEBUG_LOCKORDER
|
### DEBUG_LOCKORDER
|
||||||
|
|
||||||
Bitcoin Core is a multi-threaded application, and deadlocks or other
|
Litecoin Core is a multi-threaded application, and deadlocks or other
|
||||||
multi-threading bugs can be very difficult to track down. The `--enable-debug`
|
multi-threading bugs can be very difficult to track down. The `--enable-debug`
|
||||||
configure option adds `-DDEBUG_LOCKORDER` to the compiler flags. This inserts
|
configure option adds `-DDEBUG_LOCKORDER` to the compiler flags. This inserts
|
||||||
run-time checks to keep track of which locks are held and adds warnings to the
|
run-time checks to keep track of which locks are held and adds warnings to the
|
||||||
@ -280,15 +280,15 @@ run-time checks to keep track of which locks are held and adds warnings to the
|
|||||||
|
|
||||||
Valgrind is a programming tool for memory debugging, memory leak detection, and
|
Valgrind is a programming tool for memory debugging, memory leak detection, and
|
||||||
profiling. The repo contains a Valgrind suppressions file
|
profiling. The repo contains a Valgrind suppressions file
|
||||||
([`valgrind.supp`](https://github.com/bitcoin/bitcoin/blob/master/contrib/valgrind.supp))
|
([`valgrind.supp`](https://github.com/litecoin-project/litecoin/blob/master/contrib/valgrind.supp))
|
||||||
which includes known Valgrind warnings in our dependencies that cannot be fixed
|
which includes known Valgrind warnings in our dependencies that cannot be fixed
|
||||||
in-tree. Example use:
|
in-tree. Example use:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ valgrind --suppressions=contrib/valgrind.supp src/test/test_bitcoin
|
$ 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_bitcoin --log_level=test_suite
|
--show-leak-kinds=all src/test/test_litecoin --log_level=test_suite
|
||||||
$ valgrind -v --leak-check=full src/bitcoind -printtoconsole
|
$ valgrind -v --leak-check=full src/litecoind -printtoconsole
|
||||||
$ ./test/functional/test_runner.py --valgrind
|
$ ./test/functional/test_runner.py --valgrind
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -305,7 +305,7 @@ To enable LCOV report generation during test runs:
|
|||||||
make
|
make
|
||||||
make cov
|
make cov
|
||||||
|
|
||||||
# A coverage report will now be accessible at `./test_bitcoin.coverage/index.html`.
|
# A coverage report will now be accessible at `./test_litecoin.coverage/index.html`.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Performance profiling with perf
|
### Performance profiling with perf
|
||||||
@ -332,13 +332,13 @@ Make sure you [understand the security
|
|||||||
trade-offs](https://lwn.net/Articles/420403/) of setting these kernel
|
trade-offs](https://lwn.net/Articles/420403/) of setting these kernel
|
||||||
parameters.
|
parameters.
|
||||||
|
|
||||||
To profile a running bitcoind process for 60 seconds, you could use an
|
To profile a running litecoind process for 60 seconds, you could use an
|
||||||
invocation of `perf record` like this:
|
invocation of `perf record` like this:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ perf record \
|
$ perf record \
|
||||||
-g --call-graph dwarf --per-thread -F 140 \
|
-g --call-graph dwarf --per-thread -F 140 \
|
||||||
-p `pgrep bitcoind` -- sleep 60
|
-p `pgrep litecoind` -- sleep 60
|
||||||
```
|
```
|
||||||
|
|
||||||
You could then analyze the results by running:
|
You could then analyze the results by running:
|
||||||
@ -354,7 +354,7 @@ See the functional test documentation for how to invoke perf within tests.
|
|||||||
|
|
||||||
### Sanitizers
|
### Sanitizers
|
||||||
|
|
||||||
Bitcoin Core can be compiled with various "sanitizers" enabled, which add
|
Litecoin Core can be compiled with various "sanitizers" enabled, which add
|
||||||
instrumentation for issues regarding things like memory safety, thread race
|
instrumentation for issues regarding things like memory safety, thread race
|
||||||
conditions, or undefined behavior. This is controlled with the
|
conditions, or undefined behavior. This is controlled with the
|
||||||
`--with-sanitizers` configure flag, which should be a comma separated list of
|
`--with-sanitizers` configure flag, which should be a comma separated list of
|
||||||
@ -476,7 +476,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 Bitcoin Core, where everyone uses
|
However, in open source software such as Litecoin 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`:
|
||||||
@ -506,9 +506,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 Bitcoin Core code.
|
pay attention to for reviewers of Litecoin Core code.
|
||||||
|
|
||||||
General Bitcoin Core
|
General Litecoin 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.
|
||||||
@ -709,7 +709,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*: Bitcoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion.
|
- *Rationale*: Litecoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion.
|
||||||
|
|
||||||
- Use `.c_str()` sparingly. Its only valid use is to pass C++ strings to C functions that take NULL-terminated
|
- Use `.c_str()` sparingly. Its only valid use is to pass C++ strings to C functions that take NULL-terminated
|
||||||
strings.
|
strings.
|
||||||
@ -926,12 +926,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 Bitcoin Core, in which case changes should probably go
|
Some of these are maintained by active developers of Litecoin 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 Bitcoin Core so that they can be integrated
|
be sent upstream, but bugfixes may also be prudent to PR against Litecoin 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 `test/lint/git-subtree-check.sh` ([instructions](../test/lint#git-subtree-checksh)) to check a subtree directory for consistency with
|
There is a tool in `test/lint/git-subtree-check.sh` ([instructions](../test/lint#git-subtree-checksh)) to check a subtree directory for consistency with
|
||||||
@ -968,7 +968,7 @@ you must be aware of.
|
|||||||
|
|
||||||
In most configurations, we use the default LevelDB value for `max_open_files`,
|
In most configurations, we use the default LevelDB value for `max_open_files`,
|
||||||
which is 1000 at the time of this writing. If LevelDB actually uses this many
|
which is 1000 at the time of this writing. If LevelDB actually uses this many
|
||||||
file descriptors, it will cause problems with Bitcoin's `select()` loop, because
|
file descriptors, it will cause problems with Litecoin's `select()` loop, because
|
||||||
it may cause new sockets to be created where the fd value is >= 1024. For this
|
it may cause new sockets to be created where the fd value is >= 1024. For this
|
||||||
reason, on 64-bit Unix systems, we rely on an internal LevelDB optimization that
|
reason, on 64-bit Unix systems, we rely on an internal LevelDB optimization that
|
||||||
uses `mmap()` + `close()` to open table files without actually retaining
|
uses `mmap()` + `close()` to open table files without actually retaining
|
||||||
@ -979,7 +979,7 @@ In addition to reviewing the upstream changes in `env_posix.cc`, you can use `ls
|
|||||||
check this. For example, on Linux this command will show open `.ldb` file counts:
|
check this. For example, on Linux this command will show open `.ldb` file counts:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ lsof -p $(pidof bitcoind) |\
|
$ lsof -p $(pidof litecoind) |\
|
||||||
awk 'BEGIN { fd=0; mem=0; } /ldb$/ { if ($4 == "mem") mem++; else fd++ } END { printf "mem = %s, fd = %s\n", mem, fd}'
|
awk 'BEGIN { fd=0; mem=0; } /ldb$/ { if ($4 == "mem") mem++; else fd++ } END { printf "mem = %s, fd = %s\n", mem, fd}'
|
||||||
mem = 119, fd = 0
|
mem = 119, fd = 0
|
||||||
```
|
```
|
||||||
@ -994,14 +994,14 @@ details.
|
|||||||
### Consensus Compatibility
|
### Consensus Compatibility
|
||||||
|
|
||||||
It is possible for LevelDB changes to inadvertently change consensus
|
It is possible for LevelDB changes to inadvertently change consensus
|
||||||
compatibility between nodes. This happened in Bitcoin 0.8 (when LevelDB was
|
compatibility between nodes. This happened in Litecoin 0.8 (when LevelDB was
|
||||||
first introduced). When upgrading LevelDB, you should review the upstream changes
|
first introduced). When upgrading LevelDB, you should review the upstream changes
|
||||||
to check for issues affecting consensus compatibility.
|
to check for issues affecting consensus compatibility.
|
||||||
|
|
||||||
For example, if LevelDB had a bug that accidentally prevented a key from being
|
For example, if LevelDB had a bug that accidentally prevented a key from being
|
||||||
returned in an edge case, and that bug was fixed upstream, the bug "fix" would
|
returned in an edge case, and that bug was fixed upstream, the bug "fix" would
|
||||||
be an incompatible consensus change. In this situation, the correct behavior
|
be an incompatible consensus change. In this situation, the correct behavior
|
||||||
would be to revert the upstream fix before applying the updates to Bitcoin's
|
would be to revert the upstream fix before applying the updates to Litecoin's
|
||||||
copy of LevelDB. In general, you should be wary of any upstream changes affecting
|
copy of LevelDB. In general, you should be wary of any upstream changes affecting
|
||||||
what data is returned from LevelDB queries.
|
what data is returned from LevelDB queries.
|
||||||
|
|
||||||
@ -1117,7 +1117,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 `bitcoin-cli`, and can be surprising to users.
|
- *Rationale*: This is impossible to use with `litecoin-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
|
||||||
@ -1136,7 +1136,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*: `bitcoin-cli` and the GUI debug console use this table to determine how to
|
- *Rationale*: `litecoin-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.
|
||||||
|
|
||||||
@ -1157,7 +1157,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 Bitcoin Core, the wallet was always
|
- *Rationale*: In previous versions of Litecoin 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
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
Expectations for DNS Seed operators
|
Expectations for DNS Seed operators
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Bitcoin Core attempts to minimize the level of trust in DNS seeds,
|
Litecoin 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 Bitcoin community.
|
level of trust within the Litecoin community.
|
||||||
|
|
||||||
Other implementations of Bitcoin software may also use the same
|
Other implementations of Litecoin 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 Bitcoin nodes from the public network to the best of the
|
functioning Litecoin 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 Bitcoin
|
for the operation of the service or urgent health of the Litecoin
|
||||||
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 Bitcoin
|
discontinue providing services and contact the active Litecoin
|
||||||
Core development team as well as posting on
|
Core development team as well as posting on
|
||||||
[bitcoin-dev](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev).
|
[litecoin-dev](https://groups.google.com/forum/#!forum/litecoin-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
|
||||||
----------
|
----------
|
||||||
- [bitcoin-seeder](https://github.com/sipa/bitcoin-seeder) is a reference implementation of a DNS seed.
|
- [litecoin-seeder](https://github.com/pooler/litecoin-seeder) is a reference implementation of a DNS seed.
|
||||||
|
|||||||
26
doc/files.md
26
doc/files.md
@ -20,19 +20,19 @@
|
|||||||
|
|
||||||
## Data directory location
|
## Data directory location
|
||||||
|
|
||||||
The data directory is the default location where the Bitcoin Core files are stored.
|
The data directory is the default location where the Litecoin Core files are stored.
|
||||||
|
|
||||||
1. The default data directory paths for supported platforms are:
|
1. The default data directory paths for supported platforms are:
|
||||||
|
|
||||||
Platform | Data directory path
|
Platform | Data directory path
|
||||||
---------|--------------------
|
---------|--------------------
|
||||||
Linux | `$HOME/.bitcoin/`
|
Linux | `$HOME/.litecoin/`
|
||||||
macOS | `$HOME/Library/Application Support/Bitcoin/`
|
macOS | `$HOME/Library/Application Support/Litecoin/`
|
||||||
Windows | `%APPDATA%\Bitcoin\` <sup>[\[1\]](#note1)</sup>
|
Windows | `%APPDATA%\Litecoin\` <sup>[\[1\]](#note1)</sup>
|
||||||
|
|
||||||
2. A custom data directory path can be specified with the `-datadir` option.
|
2. A custom data directory path can be specified with the `-datadir` option.
|
||||||
|
|
||||||
3. All content of the data directory, except for `bitcoin.conf` file, is chain-specific. This means the actual data directory paths for non-mainnet cases differ:
|
3. All content of the data directory, except for `litecoin.conf` file, is chain-specific. This means the actual data directory paths for non-mainnet cases differ:
|
||||||
|
|
||||||
Chain option | Data directory path
|
Chain option | Data directory path
|
||||||
-------------------------------|------------------------------
|
-------------------------------|------------------------------
|
||||||
@ -47,7 +47,7 @@ Subdirectory | File(s) | Description
|
|||||||
-------------------|-----------------------|------------
|
-------------------|-----------------------|------------
|
||||||
`blocks/` | | Blocks directory; can be specified by `-blocksdir` option (except for `blocks/index/`)
|
`blocks/` | | Blocks directory; can be specified by `-blocksdir` option (except for `blocks/index/`)
|
||||||
`blocks/index/` | LevelDB database | Block index; `-blocksdir` option does not affect this path
|
`blocks/index/` | LevelDB database | Block index; `-blocksdir` option does not affect this path
|
||||||
`blocks/` | `blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Actual Bitcoin blocks (in network format, dumped in raw on disk, 128 MiB per file)
|
`blocks/` | `blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Actual Litecoin blocks (in network format, dumped in raw on disk, 128 MiB per file)
|
||||||
`blocks/` | `revNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Block undo data (custom format)
|
`blocks/` | `revNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Block undo data (custom format)
|
||||||
`chainstate/` | LevelDB database | Blockchain state (a compact representation of all currently unspent transaction outputs (UTXOs) and metadata about the transactions they are from)
|
`chainstate/` | LevelDB database | Blockchain state (a compact representation of all currently unspent transaction outputs (UTXOs) and metadata about the transactions they are from)
|
||||||
`indexes/txindex/` | LevelDB database | Transaction index; *optional*, used if `-txindex=1`
|
`indexes/txindex/` | LevelDB database | Transaction index; *optional*, used if `-txindex=1`
|
||||||
@ -56,9 +56,9 @@ Subdirectory | File(s) | Description
|
|||||||
`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
|
`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
|
||||||
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
|
||||||
`./` | `banlist.dat` | Stores the IPs/subnets of banned nodes
|
`./` | `banlist.dat` | Stores the IPs/subnets of banned nodes
|
||||||
`./` | `bitcoin.conf` | User-defined [configuration settings](bitcoin-conf.md) for `bitcoind` or `bitcoin-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
|
`./` | `litecoin.conf` | User-defined [configuration settings](bitcoin-conf.md) for `litecoind` or `litecoin-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
|
||||||
`./` | `bitcoind.pid` | Stores the process ID (PID) of `bitcoind` or `bitcoin-qt` while running; created at start and deleted on shutdown; can be specified by `-pid` option
|
`./` | `litecoind.pid` | Stores the process ID (PID) of `litecoind` or `litecoin-qt` while running; created at start and deleted on shutdown; can be specified by `-pid` option
|
||||||
`./` | `debug.log` | Contains debug information and general logging generated by `bitcoind` or `bitcoin-qt`; can be specified by `-debuglogfile` option
|
`./` | `debug.log` | Contains debug information and general logging generated by `litecoind` or `litecoin-qt`; can be specified by `-debuglogfile` option
|
||||||
`./` | `fee_estimates.dat` | Stores statistics used to estimate minimum transaction fees and priorities required for confirmation
|
`./` | `fee_estimates.dat` | Stores statistics used to estimate minimum transaction fees and priorities required for confirmation
|
||||||
`./` | `guisettings.ini.bak` | Backup of former [GUI settings](#gui-settings) after `-resetguisettings` option is used
|
`./` | `guisettings.ini.bak` | Backup of former [GUI settings](#gui-settings) after `-resetguisettings` option is used
|
||||||
`./` | `ip_asn.map` | IP addresses to Autonomous System Numbers (ASNs) mapping used for bucketing of the peers; path can be specified with the `-asmap` option
|
`./` | `ip_asn.map` | IP addresses to Autonomous System Numbers (ASNs) mapping used for bucketing of the peers; path can be specified with the `-asmap` option
|
||||||
@ -103,16 +103,16 @@ Subdirectory | File | Description
|
|||||||
|
|
||||||
## GUI settings
|
## GUI settings
|
||||||
|
|
||||||
`bitcoin-qt` uses [`QSettings`](https://doc.qt.io/qt-5/qsettings.html) class; this implies platform-specific [locations where application settings are stored](https://doc.qt.io/qt-5/qsettings.html#locations-where-application-settings-are-stored).
|
`litecoin-qt` uses [`QSettings`](https://doc.qt.io/qt-5/qsettings.html) class; this implies platform-specific [locations where application settings are stored](https://doc.qt.io/qt-5/qsettings.html#locations-where-application-settings-are-stored).
|
||||||
|
|
||||||
## Legacy subdirectories and files
|
## Legacy subdirectories and files
|
||||||
|
|
||||||
These subdirectories and files are no longer used by the Bitcoin Core:
|
These subdirectories and files are no longer used by the Litecoin Core:
|
||||||
|
|
||||||
Path | Description | Repository notes
|
Path | Description | Repository notes
|
||||||
---------------|-------------|-----------------
|
---------------|-------------|-----------------
|
||||||
`blktree/` | Blockchain index; replaced by `blocks/index/` in [0.8.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.8.0.md#improvements) | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
`blktree/` | Blockchain index; replaced by `blocks/index/` in [0.8.0](https://github.com/litecoin-project/litecoin/blob/master/doc/release-notes/release-notes-0.8.0.md#improvements) | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/litecoin-project/litecoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
||||||
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 0.8.0 | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/bitcoin/bitcoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 0.8.0 | [PR #2231](https://github.com/bitcoin/bitcoin/pull/2231), [`8fdc94cc`](https://github.com/litecoin-project/litecoin/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
||||||
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`<sup>[\[2\]](#note2)</sup>} in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`<sup>[\[2\]](#note2)</sup>} in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
||||||
`blk000?.dat` | Block data (custom format, 2 GiB per file); replaced by `blocks/blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
`blk000?.dat` | Block data (custom format, 2 GiB per file); replaced by `blocks/blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
|
||||||
`addr.dat` | Peer IP address BDB database; replaced by `peers.dat` in [0.7.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.7.0.md) | [PR #1198](https://github.com/bitcoin/bitcoin/pull/1198), [`928d3a01`](https://github.com/bitcoin/bitcoin/commit/928d3a011cc66c7f907c4d053f674ea77dc611cc)
|
`addr.dat` | Peer IP address BDB database; replaced by `peers.dat` in [0.7.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.7.0.md) | [PR #1198](https://github.com/bitcoin/bitcoin/pull/1198), [`928d3a01`](https://github.com/bitcoin/bitcoin/commit/928d3a011cc66c7f907c4d053f674ea77dc611cc)
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
# Fuzzing Bitcoin Core using libFuzzer
|
# Fuzzing Litecoin Core using libFuzzer
|
||||||
|
|
||||||
## Quickstart guide
|
## Quickstart guide
|
||||||
|
|
||||||
To quickly get started fuzzing Bitcoin Core using [libFuzzer](https://llvm.org/docs/LibFuzzer.html):
|
To quickly get started fuzzing Litecoin Core using [libFuzzer](https://llvm.org/docs/LibFuzzer.html):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://github.com/bitcoin/bitcoin
|
$ git clone https://github.com/litecoin-project/litecoin
|
||||||
$ cd bitcoin/
|
$ cd litecoin/
|
||||||
$ ./autogen.sh
|
$ ./autogen.sh
|
||||||
$ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined
|
$ CC=clang CXX=clang++ ./configure --enable-fuzz --with-sanitizers=address,fuzzer,undefined
|
||||||
# macOS users: If you have problem with this step then make sure to read "macOS hints for
|
# macOS users: If you have problem with this step then make sure to read "macOS hints for
|
||||||
@ -18,7 +18,7 @@ $ src/test/fuzz/process_message
|
|||||||
|
|
||||||
## Fuzzing harnesses, fuzzing output and fuzzing corpora
|
## Fuzzing harnesses, fuzzing output and fuzzing corpora
|
||||||
|
|
||||||
[`process_message`](https://github.com/bitcoin/bitcoin/blob/master/src/test/fuzz/process_message.cpp) is a fuzzing harness for the [`ProcessMessage(...)` function (`net_processing`)](https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp). The available fuzzing harnesses are found in [`src/test/fuzz/`](https://github.com/bitcoin/bitcoin/tree/master/src/test/fuzz).
|
[`process_message`](https://github.com/litecoin-project/litecoin/blob/master/src/test/fuzz/process_message.cpp) is a fuzzing harness for the [`ProcessMessage(...)` function (`net_processing`)](https://github.com/litecoin-project/litecoin/blob/master/src/net_processing.cpp). The available fuzzing harnesses are found in [`src/test/fuzz/`](https://github.com/litecoin-project/litecoin/tree/master/src/test/fuzz).
|
||||||
|
|
||||||
The fuzzer will output `NEW` every time it has created a test input that covers new areas of the code under test. For more information on how to interpret the fuzzer output, see the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html).
|
The fuzzer will output `NEW` every time it has created a test input that covers new areas of the code under test. For more information on how to interpret the fuzzer output, see the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html).
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ INFO: seed corpus: files: 991 min: 1b max: 1858b total: 288291b rss: 150Mb
|
|||||||
|
|
||||||
If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
||||||
|
|
||||||
Every single pull request submitted against the Bitcoin Core repo is automatically tested against all inputs in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Bitcoin Core more robust.
|
Every single pull request submitted against the Litecoin Core repo is automatically tested against all inputs in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Litecoin Core more robust.
|
||||||
|
|
||||||
## macOS hints for libFuzzer
|
## macOS hints for libFuzzer
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ example using `brew install llvm`.
|
|||||||
|
|
||||||
Should you run into problems with the address sanitizer, it is possible you
|
Should you run into problems with the address sanitizer, it is possible you
|
||||||
may need to run `./configure` with `--disable-asm` to avoid errors
|
may need to run `./configure` with `--disable-asm` to avoid errors
|
||||||
with certain assembly code from Bitcoin Core's code. See [developer notes on sanitizers](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#sanitizers)
|
with certain assembly code from Litecoin Core's code. See [developer notes on sanitizers](https://github.com/litecoin-project/litecoin/blob/master/doc/developer-notes.md#sanitizers)
|
||||||
for more information.
|
for more information.
|
||||||
|
|
||||||
You may also need to take care of giving the correct path for `clang` and
|
You may also need to take care of giving the correct path for `clang` and
|
||||||
@ -108,15 +108,15 @@ Full configure that was tested on macOS Catalina with `brew` installed `llvm`:
|
|||||||
|
|
||||||
Read the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html) for more information. This [libFuzzer tutorial](https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md) might also be of interest.
|
Read the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html) for more information. This [libFuzzer tutorial](https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md) might also be of interest.
|
||||||
|
|
||||||
# Fuzzing Bitcoin Core using american fuzzy lop (`afl-fuzz`)
|
# Fuzzing Litecoin Core using american fuzzy lop (`afl-fuzz`)
|
||||||
|
|
||||||
## Quickstart guide
|
## Quickstart guide
|
||||||
|
|
||||||
To quickly get started fuzzing Bitcoin Core using [`afl-fuzz`](https://github.com/google/afl):
|
To quickly get started fuzzing Litecoin Core using [`afl-fuzz`](https://github.com/google/afl):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ git clone https://github.com/bitcoin/bitcoin
|
$ git clone https://github.com/litecoin-project/litecoin
|
||||||
$ cd bitcoin/
|
$ cd litecoin/
|
||||||
$ git clone https://github.com/google/afl
|
$ git clone https://github.com/google/afl
|
||||||
$ make -C afl/
|
$ make -C afl/
|
||||||
$ make -C afl/llvm_mode/
|
$ make -C afl/llvm_mode/
|
||||||
|
|||||||
@ -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, Bitcoin Core allows up to 125 connections to different peers, 10 of
|
By default, Litecoin Core allows up to 125 connections to different peers, 10 of
|
||||||
which are outbound. You can therefore, have at most 115 inbound connections.
|
which are outbound. You can therefore, have at most 115 inbound connections.
|
||||||
Of the 10 outbound peers, there can be 8 full-relay connections and 2
|
Of the 10 outbound peers, there can be 8 full-relay connections and 2
|
||||||
block-relay-only ones.
|
block-relay-only ones.
|
||||||
@ -35,7 +35,7 @@ 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 bitcoin's trustless model works best if you are
|
limits are tiny. Keep in mind that litecoin's trustless model works best if you are
|
||||||
connected to a handful of nodes.
|
connected to a handful of nodes.
|
||||||
|
|
||||||
## 4. Turn off transaction relay (`-blocksonly`)
|
## 4. Turn off transaction relay (`-blocksonly`)
|
||||||
|
|||||||
@ -61,16 +61,12 @@ If you're using the automated script (found in [contrib/gitian-build.py](/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/bitcoin-core/gitian.sigs.git
|
git clone https://github.com/litecoin-project/gitian.sigs.ltc.git
|
||||||
git clone https://github.com/bitcoin-core/bitcoin-detached-sigs.git
|
git clone https://github.com/litecoin-project/litecoin-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/bitcoin/bitcoin.git
|
git clone https://github.com/litecoin-project/litecoin.git
|
||||||
|
|
||||||
### Write the release notes
|
### Litecoin maintainers/release engineers, suggestion for writing release notes
|
||||||
|
|
||||||
Open a draft of the release notes for collaborative editing at https://github.com/bitcoin-core/bitcoin-devwiki/wiki.
|
|
||||||
|
|
||||||
For the period during which the notes are being edited on the wiki, the version on the branch should be wiped and replaced with a link to the wiki which should be used for all announcements until `-final`.
|
|
||||||
|
|
||||||
Write the release notes. `git shortlog` helps a lot, for example:
|
Write the release notes. `git shortlog` helps a lot, for example:
|
||||||
|
|
||||||
@ -93,16 +89,16 @@ If you're using the automated script (found in [contrib/gitian-build.py](/contri
|
|||||||
|
|
||||||
Setup Gitian descriptors:
|
Setup Gitian descriptors:
|
||||||
|
|
||||||
pushd ./bitcoin
|
pushd ./litecoin
|
||||||
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.20.0)
|
export VERSION=(new version, e.g. 0.20.0)
|
||||||
git fetch
|
git fetch
|
||||||
git checkout v${VERSION}
|
git checkout v${VERSION}
|
||||||
popd
|
popd
|
||||||
|
|
||||||
Ensure your gitian.sigs are up-to-date if you wish to gverify your builds against other Gitian signatures.
|
Ensure your gitian.sigs.ltc are up-to-date if you wish to gverify your builds against other Gitian signatures.
|
||||||
|
|
||||||
pushd ./gitian.sigs
|
pushd ./gitian.sigs.ltc
|
||||||
git pull
|
git pull
|
||||||
popd
|
popd
|
||||||
|
|
||||||
@ -126,10 +122,10 @@ Create the macOS SDK tarball, see the [macdeploy instructions](/contrib/macdeplo
|
|||||||
|
|
||||||
NOTE: Gitian is sometimes unable to download files. If you have errors, try the step below.
|
NOTE: Gitian is sometimes unable to download files. If you have errors, try the step below.
|
||||||
|
|
||||||
By default, Gitian will fetch source files as needed. To cache them ahead of time, make sure you have checked out the tag you want to build in bitcoin, then:
|
By default, Gitian will fetch source files as needed. To cache them ahead of time, make sure you have checked out the tag you want to build in litecoin, then:
|
||||||
|
|
||||||
pushd ./gitian-builder
|
pushd ./gitian-builder
|
||||||
make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common
|
make -C ../litecoin/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.
|
||||||
@ -137,54 +133,54 @@ 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 bitcoin=/path/to/bitcoin,signature=/path/to/sigs {rest of arguments}
|
./bin/gbuild --url litecoin=/path/to/litecoin,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 Bitcoin Core for Linux, Windows, and macOS:
|
### Build and sign Litecoin Core for Linux, Windows, and macOS:
|
||||||
|
|
||||||
pushd ./gitian-builder
|
pushd ./gitian-builder
|
||||||
./bin/gbuild --num-make 2 --memory 3000 --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||||
./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs.ltc/ ../litecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||||
mv build/out/bitcoin-*.tar.gz build/out/src/bitcoin-*.tar.gz ../
|
mv build/out/litecoin-*.tar.gz build/out/src/litecoin-*.tar.gz ../
|
||||||
|
|
||||||
./bin/gbuild --num-make 2 --memory 3000 --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-win.yml
|
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-win.yml
|
||||||
./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../bitcoin/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
|
||||||
mv build/out/bitcoin-*-win-unsigned.tar.gz inputs/bitcoin-win-unsigned.tar.gz
|
mv build/out/litecoin-*-win-unsigned.tar.gz inputs/litecoin-win-unsigned.tar.gz
|
||||||
mv build/out/bitcoin-*.zip build/out/bitcoin-*.exe ../
|
mv build/out/litecoin-*.zip build/out/litecoin-*.exe ../
|
||||||
|
|
||||||
./bin/gbuild --num-make 2 --memory 3000 --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
./bin/gbuild --num-make 2 --memory 3000 --commit litecoin=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||||
./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../bitcoin/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
|
||||||
mv build/out/bitcoin-*-osx-unsigned.tar.gz inputs/bitcoin-osx-unsigned.tar.gz
|
mv build/out/litecoin-*-osx-unsigned.tar.gz inputs/litecoin-osx-unsigned.tar.gz
|
||||||
mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../
|
mv build/out/litecoin-*.tar.gz build/out/litecoin-*.dmg ../
|
||||||
popd
|
popd
|
||||||
|
|
||||||
Build output expected:
|
Build output expected:
|
||||||
|
|
||||||
1. source tarball (`bitcoin-${VERSION}.tar.gz`)
|
1. source tarball (`litecoin-${VERSION}.tar.gz`)
|
||||||
2. linux 32-bit and 64-bit dist tarballs (`bitcoin-${VERSION}-linux[32|64].tar.gz`)
|
2. linux 32-bit and 64-bit dist tarballs (`litecoin-${VERSION}-linux[32|64].tar.gz`)
|
||||||
3. windows 32-bit and 64-bit unsigned installers and dist zips (`bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe`, `bitcoin-${VERSION}-win[32|64].zip`)
|
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`)
|
||||||
4. macOS unsigned installer and dist tarball (`bitcoin-${VERSION}-osx-unsigned.dmg`, `bitcoin-${VERSION}-osx64.tar.gz`)
|
4. macOS unsigned installer and dist tarball (`litecoin-${VERSION}-osx-unsigned.dmg`, `litecoin-${VERSION}-osx64.tar.gz`)
|
||||||
5. Gitian signatures (in `gitian.sigs/${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: See `../bitcoin/contrib/gitian-keys/README.md`.
|
Add other gitian builders keys to your gpg keyring, and/or refresh keys: See `../litecoin/contrib/gitian-keys/README.md`.
|
||||||
|
|
||||||
Verify the signatures
|
Verify the signatures
|
||||||
|
|
||||||
pushd ./gitian-builder
|
pushd ./gitian-builder
|
||||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-linux ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml
|
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-linux ../litecoin/contrib/gitian-descriptors/gitian-linux.yml
|
||||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-win.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/ -r ${VERSION}-osx-unsigned ../bitcoin/contrib/gitian-descriptors/gitian-osx.yml
|
./bin/gverify -v -d ../gitian.sigs.ltc/ -r ${VERSION}-osx-unsigned ../litecoin/contrib/gitian-descriptors/gitian-osx.yml
|
||||||
popd
|
popd
|
||||||
|
|
||||||
### Next steps:
|
### Next steps:
|
||||||
|
|
||||||
Commit your signature to gitian.sigs:
|
Commit your signature to gitian.sigs.ltc:
|
||||||
|
|
||||||
pushd gitian.sigs
|
pushd gitian.sigs.ltc
|
||||||
git add ${VERSION}-linux/"${SIGNER}"
|
git add ${VERSION}-linux/"${SIGNER}"
|
||||||
git add ${VERSION}-win-unsigned/"${SIGNER}"
|
git add ${VERSION}-win-unsigned/"${SIGNER}"
|
||||||
git add ${VERSION}-osx-unsigned/"${SIGNER}"
|
git add ${VERSION}-osx-unsigned/"${SIGNER}"
|
||||||
@ -198,22 +194,22 @@ Codesigner only: Create Windows/macOS detached signatures:
|
|||||||
|
|
||||||
Codesigner only: Sign the macOS binary:
|
Codesigner only: Sign the macOS binary:
|
||||||
|
|
||||||
transfer bitcoin-osx-unsigned.tar.gz to macOS for signing
|
transfer litecoin-osx-unsigned.tar.gz to macOS for signing
|
||||||
tar xf bitcoin-osx-unsigned.tar.gz
|
tar xf litecoin-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 bitcoin-win-unsigned.tar.gz
|
tar xf litecoin-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 ~/bitcoin-detached-sigs
|
cd ~/litecoin-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
|
||||||
@ -226,33 +222,33 @@ Codesigner only: Commit the detached codesign payloads:
|
|||||||
Non-codesigners: wait for Windows/macOS detached signatures:
|
Non-codesigners: wait for Windows/macOS detached signatures:
|
||||||
|
|
||||||
- Once the Windows/macOS builds each have 3 matching signatures, they will be signed with their respective release keys.
|
- Once the Windows/macOS builds each have 3 matching signatures, they will be signed with their respective release keys.
|
||||||
- Detached signatures will then be committed to the [bitcoin-detached-sigs](https://github.com/bitcoin-core/bitcoin-detached-sigs) repository, which can be combined with the unsigned apps to create signed binaries.
|
- 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.
|
||||||
|
|
||||||
Create (and optionally verify) the signed macOS binary:
|
Create (and optionally verify) the signed macOS binary:
|
||||||
|
|
||||||
pushd ./gitian-builder
|
pushd ./gitian-builder
|
||||||
./bin/gbuild -i --commit signature=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
./bin/gbuild -i --commit signature=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-osx-signer.yml
|
||||||
./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-signed --destination ../gitian.sigs/ ../bitcoin/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/gverify -v -d ../gitian.sigs/ -r ${VERSION}-osx-signed ../bitcoin/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
|
||||||
mv build/out/bitcoin-osx-signed.dmg ../bitcoin-${VERSION}-osx.dmg
|
mv build/out/litecoin-osx-signed.dmg ../litecoin-${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} ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
./bin/gbuild -i --commit signature=v${VERSION} ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||||
./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||||
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-signed ../bitcoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-signed ../litecoin/contrib/gitian-descriptors/gitian-win-signer.yml
|
||||||
mv build/out/bitcoin-*win64-setup.exe ../bitcoin-${VERSION}-win64-setup.exe
|
mv build/out/litecoin-*win64-setup.exe ../litecoin-${VERSION}-win64-setup.exe
|
||||||
popd
|
popd
|
||||||
|
|
||||||
Commit your signature for the signed macOS/Windows binaries:
|
Commit your signature for the signed macOS/Windows binaries:
|
||||||
|
|
||||||
pushd gitian.sigs
|
pushd gitian.sigs.ltc
|
||||||
git add ${VERSION}-osx-signed/"${SIGNER}"
|
git add ${VERSION}-osx-signed/"${SIGNER}"
|
||||||
git add ${VERSION}-win-signed/"${SIGNER}"
|
git add ${VERSION}-win-signed/"${SIGNER}"
|
||||||
git commit -m "Add ${SIGNER} ${VERSION} signed binaries signatures"
|
git commit -m "Add ${SIGNER} ${VERSION} signed binaries signatures"
|
||||||
git push # Assuming you can push to the gitian.sigs tree
|
git push # Assuming you can push to the gitian.sigs.ltc tree
|
||||||
popd
|
popd
|
||||||
|
|
||||||
### After 3 or more people have gitian-built and their results match:
|
### After 3 or more people have gitian-built and their results match:
|
||||||
@ -265,21 +261,21 @@ sha256sum * > SHA256SUMS
|
|||||||
|
|
||||||
The list of files should be:
|
The list of files should be:
|
||||||
```
|
```
|
||||||
bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz
|
litecoin-${VERSION}-aarch64-linux-gnu.tar.gz
|
||||||
bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz
|
litecoin-${VERSION}-arm-linux-gnueabihf.tar.gz
|
||||||
bitcoin-${VERSION}-riscv64-linux-gnu.tar.gz
|
litecoin-${VERSION}-riscv64-linux-gnu.tar.gz
|
||||||
bitcoin-${VERSION}-x86_64-linux-gnu.tar.gz
|
litecoin-${VERSION}-x86_64-linux-gnu.tar.gz
|
||||||
bitcoin-${VERSION}-osx64.tar.gz
|
litecoin-${VERSION}-osx64.tar.gz
|
||||||
bitcoin-${VERSION}-osx.dmg
|
litecoin-${VERSION}-osx.dmg
|
||||||
bitcoin-${VERSION}.tar.gz
|
litecoin-${VERSION}.tar.gz
|
||||||
bitcoin-${VERSION}-win64-setup.exe
|
litecoin-${VERSION}-win64-setup.exe
|
||||||
bitcoin-${VERSION}-win64.zip
|
litecoin-${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 bitcoin.org server, nor put them in the torrent*.
|
space *do not upload these to the litecoin.org server, nor put them in the torrent*.
|
||||||
|
|
||||||
- GPG-sign it, delete the unsigned file:
|
- GPG-sign it, delete the unsigned file:
|
||||||
```
|
```
|
||||||
@ -289,32 +285,10 @@ 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 bitcoin.org server
|
- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the litecoin.org server.
|
||||||
into `/var/www/bin/bitcoin-core-${VERSION}`
|
|
||||||
|
|
||||||
- A `.torrent` will appear in the directory after a few minutes. Optionally help seed this torrent. To get the `magnet:` URI use:
|
|
||||||
```bash
|
|
||||||
transmission-show -m <torrent file>
|
|
||||||
```
|
```
|
||||||
Insert the magnet URI into the announcement sent to mailing lists. This permits
|
- Update litecoin.org version
|
||||||
people without access to `bitcoin.org` to download the binary distribution.
|
|
||||||
Also put it into the `optional_magnetlink:` slot in the YAML file for
|
|
||||||
bitcoin.org (see below for bitcoin.org update instructions).
|
|
||||||
|
|
||||||
- Update bitcoin.org version
|
|
||||||
|
|
||||||
- First, check to see if the Bitcoin.org maintainers have prepared a
|
|
||||||
release: https://github.com/bitcoin-dot-org/bitcoin.org/labels/Core
|
|
||||||
|
|
||||||
- If they have, it will have previously failed their Travis CI
|
|
||||||
checks because the final release files weren't uploaded.
|
|
||||||
Trigger a Travis CI rebuild---if it passes, merge.
|
|
||||||
|
|
||||||
- If they have not prepared a release, follow the Bitcoin.org release
|
|
||||||
instructions: https://github.com/bitcoin-dot-org/bitcoin.org/blob/master/docs/adding-events-release-notes-and-alerts.md#release-notes
|
|
||||||
|
|
||||||
- After the pull request is merged, the website will automatically show the newest version within 15 minutes, as well
|
|
||||||
as update the OS download links.
|
|
||||||
|
|
||||||
- Update other repositories and websites for new version
|
- Update other repositories and websites for new version
|
||||||
|
|
||||||
@ -350,21 +324,19 @@ bitcoin.org (see below for bitcoin.org update instructions).
|
|||||||
- Click "Request builds" for every new release on this branch (after updating the snapcraft.yml in the branch to reflect the latest gitian results)
|
- Click "Request builds" for every new release on this branch (after updating the snapcraft.yml in the branch to reflect the latest gitian results)
|
||||||
- Promote release on https://snapcraft.io/bitcoin-core/releases if it passes sanity checks
|
- Promote release on https://snapcraft.io/bitcoin-core/releases if it passes sanity checks
|
||||||
|
|
||||||
- This repo
|
|
||||||
|
|
||||||
- Archive the 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/bitcoin/bitcoin/releases/new) with a link to the archived release notes
|
|
||||||
|
|
||||||
- Announce the release:
|
- Announce the release:
|
||||||
|
|
||||||
- bitcoin-dev and bitcoin-core-dev mailing list
|
- litecoin-dev mailing list
|
||||||
|
|
||||||
- Bitcoin Core announcements list https://bitcoincore.org/en/list/announcements/join/
|
- blog.litecoin.org blog post
|
||||||
|
|
||||||
- Update title of #bitcoin on Freenode IRC
|
- Update title of #litecoin and #litecoin-dev on Freenode IRC
|
||||||
|
|
||||||
- Optionally twitter, reddit /r/Bitcoin, ... but this will usually sort out itself
|
- Optionally twitter, reddit /r/Litecoin, ... 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)
|
||||||
|
|
||||||
|
- Create a [new GitHub release](https://github.com/litecoin-project/litecoin/releases/new) with a link to the archived release notes.
|
||||||
|
|
||||||
- Celebrate
|
- Celebrate
|
||||||
|
|
||||||
|
|||||||
46
doc/tor.md
46
doc/tor.md
@ -1,6 +1,6 @@
|
|||||||
# TOR SUPPORT IN BITCOIN
|
# TOR SUPPORT IN LITECOIN
|
||||||
|
|
||||||
It is possible to run Bitcoin Core as a Tor onion service, and connect to such services.
|
It is possible to run Litecoin Core as a Tor onion 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.
|
||||||
@ -16,9 +16,9 @@ You may set the `-debug=tor` config logging option to have additional
|
|||||||
information in the debug log about your Tor configuration.
|
information in the debug log about your Tor configuration.
|
||||||
|
|
||||||
|
|
||||||
## 1. Run Bitcoin Core behind a Tor proxy
|
## 1. Run Litecoin Core behind a Tor proxy
|
||||||
|
|
||||||
The first step is running Bitcoin Core behind a Tor proxy. This will already anonymize all
|
The first step is running Litecoin Core behind a Tor proxy. This will already anonymize all
|
||||||
outgoing connections, but more is possible.
|
outgoing connections, 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
|
||||||
@ -44,28 +44,28 @@ outgoing connections, 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:
|
||||||
|
|
||||||
./bitcoind -proxy=127.0.0.1:9050
|
./litecoind -proxy=127.0.0.1:9050
|
||||||
|
|
||||||
|
|
||||||
## 2. Run a Bitcoin Core hidden server
|
## 2. Run a Litecoin Core 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): *Needed for Tor version 0.2.7.0 and older versions of Tor only. For newer
|
config file): *Needed for Tor version 0.2.7.0 and older versions of Tor only. For newer
|
||||||
versions of Tor see [Section 3](#3-automatically-listen-on-tor).*
|
versions of Tor see [Section 3](#3-automatically-listen-on-tor).*
|
||||||
|
|
||||||
HiddenServiceDir /var/lib/tor/bitcoin-service/
|
HiddenServiceDir /var/lib/tor/litecoin-service/
|
||||||
HiddenServicePort 9333 127.0.0.1:9334
|
HiddenServicePort 9333 127.0.0.1:9333
|
||||||
HiddenServicePort 19333 127.0.0.1:19334
|
HiddenServicePort 19335 127.0.0.1:19335
|
||||||
|
|
||||||
The directory can be different of course, but virtual port numbers should be equal to
|
The directory can be different of course, but virtual port numbers should be equal to
|
||||||
your litecoind's P2P listen port (9333 by default), and target addresses and ports
|
your litecoind's P2P listen port (9333 by default), and target addresses and ports
|
||||||
should be equal to binding address and port for inbound Tor connections (127.0.0.1:9334 by default).
|
should be equal to binding address and port for inbound Tor connections (127.0.0.1:9334 by default).
|
||||||
|
|
||||||
-externalip=X You can tell bitcoin about its publicly reachable addresses using
|
-externalip=X You can tell litecoin about its publicly reachable addresses using
|
||||||
this option, and this can be an onion address. Given the above
|
this option, and this can be an onion address. Given the above
|
||||||
configuration, you can find your onion address in
|
configuration, you can find your onion address in
|
||||||
/var/lib/tor/bitcoin-service/hostname. For connections
|
/var/lib/tor/litecoin-service/hostname. 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), onion addresses are given
|
Tor proxy typically runs), onion addresses are given
|
||||||
preference for your node to advertise itself with.
|
preference for your node to advertise itself with.
|
||||||
@ -87,50 +87,50 @@ should be equal to binding address and port for inbound Tor connections (127.0.0
|
|||||||
|
|
||||||
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:
|
||||||
|
|
||||||
./bitcoind -proxy=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -listen
|
./litecoind -proxy=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.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:
|
||||||
|
|
||||||
./bitcoind ... -bind=127.0.0.1
|
./litecoind ... -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:
|
||||||
|
|
||||||
./bitcoind ... -discover
|
./litecoind ... -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:
|
||||||
|
|
||||||
./bitcoind -onion=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -discover
|
./litecoind -onion=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.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' onion services programmatically.
|
API, to create and destroy 'ephemeral' onion services programmatically.
|
||||||
Bitcoin Core has been updated to make use of this.
|
Litecoin 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),
|
||||||
Bitcoin Core automatically creates an onion service to listen on. This will positively
|
Litecoin Core automatically creates an onion 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 Bitcoin Core is listening (`-listen`), and
|
This new feature is enabled by default if Litecoin 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. It also requires the control socket to be enabled, e.g. put `ControlPort 9051`
|
configured. It also requires the control socket to be enabled, e.g. put `ControlPort 9051`
|
||||||
in `torrc` config file. For cookie authentication the user running bitcoind must have read
|
in `torrc` config file. For cookie authentication the user running litecoind must have read
|
||||||
access to the `CookieAuthFile` specified in Tor configuration. In some cases this is
|
access to the `CookieAuthFile` specified in Tor configuration. In some cases this is
|
||||||
preconfigured and the creation of an onion service is automatic. If permission problems
|
preconfigured and the creation of an onion 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 bitcoind to the same group and setting permissions appropriately. On
|
the user running litecoind to the same group and setting permissions appropriately. On
|
||||||
Debian-based systems the user running bitcoind can be added to the debian-tor group,
|
Debian-based systems the user running litecoind can be added to the debian-tor group,
|
||||||
which has the appropriate permissions. Before starting bitcoind you will need to re-login
|
which has the appropriate permissions. Before starting litecoind you will need to re-login
|
||||||
to allow debian-tor group to be applied. Otherwise you will see the following notice: "tor:
|
to allow debian-tor group to be applied. Otherwise you will see the following notice: "tor:
|
||||||
Authentication cookie /run/tor/control.authcookie could not be opened (check permissions)"
|
Authentication cookie /run/tor/control.authcookie could not be opened (check permissions)"
|
||||||
on debug.log.
|
on debug.log.
|
||||||
@ -143,7 +143,7 @@ in the tor configuration file. The hashed password can be obtained with the comm
|
|||||||
|
|
||||||
## 4. Privacy recommendations
|
## 4. Privacy recommendations
|
||||||
|
|
||||||
- Do not add anything but Bitcoin Core ports to the onion service created in section 2.
|
- Do not add anything but Litecoin Core ports to the onion service created in section 2.
|
||||||
If you run a web service too, create a new onion service for that.
|
If you run a web service too, create a new onion 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
|
||||||
|
|||||||
20
doc/zmq.md
20
doc/zmq.md
@ -5,8 +5,8 @@ connections, inter-process communication, and shared-memory,
|
|||||||
providing various message-oriented semantics such as publish/subscribe,
|
providing various message-oriented semantics such as publish/subscribe,
|
||||||
request/reply, and push/pull.
|
request/reply, and push/pull.
|
||||||
|
|
||||||
The Bitcoin Core daemon can be configured to act as a trusted "border
|
The Litecoin Core daemon can be configured to act as a trusted "border
|
||||||
router", implementing the bitcoin wire protocol and relay, making
|
router", implementing the litecoin wire protocol and relay, making
|
||||||
consensus decisions, maintaining the local blockchain database,
|
consensus decisions, maintaining the local blockchain database,
|
||||||
broadcasting locally generated transactions into the network, and
|
broadcasting locally generated transactions into the network, and
|
||||||
providing a queryable RPC interface to interact on a polled basis for
|
providing a queryable RPC interface to interact on a polled basis for
|
||||||
@ -33,7 +33,7 @@ buffering or reassembly.
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
The ZeroMQ feature in Bitcoin Core requires the ZeroMQ API >= 4.0.0
|
The ZeroMQ feature in Litecoin Core requires the ZeroMQ API >= 4.0.0
|
||||||
[libzmq](https://github.com/zeromq/libzmq/releases).
|
[libzmq](https://github.com/zeromq/libzmq/releases).
|
||||||
For version information, see [dependencies.md](dependencies.md).
|
For version information, see [dependencies.md](dependencies.md).
|
||||||
Typically, it is packaged by distributions as something like
|
Typically, it is packaged by distributions as something like
|
||||||
@ -48,7 +48,7 @@ operation.
|
|||||||
|
|
||||||
By default, the ZeroMQ feature is automatically compiled in if the
|
By default, the ZeroMQ feature is automatically compiled in if the
|
||||||
necessary prerequisites are found. To disable, use --disable-zmq
|
necessary prerequisites are found. To disable, use --disable-zmq
|
||||||
during the *configure* step of building bitcoind:
|
during the *configure* step of building litecoind:
|
||||||
|
|
||||||
$ ./configure --disable-zmq (other options)
|
$ ./configure --disable-zmq (other options)
|
||||||
|
|
||||||
@ -82,9 +82,9 @@ The high water mark value must be an integer greater than or equal to 0.
|
|||||||
|
|
||||||
For instance:
|
For instance:
|
||||||
|
|
||||||
$ bitcoind -zmqpubhashtx=tcp://127.0.0.1:28332 \
|
$ litecoind -zmqpubhashtx=tcp://127.0.0.1:28332 \
|
||||||
-zmqpubhashtx=tcp://192.168.1.2:28332 \
|
-zmqpubhashtx=tcp://192.168.1.2:28332 \
|
||||||
-zmqpubrawtx=ipc:///tmp/bitcoind.tx.raw \
|
-zmqpubrawtx=ipc:///tmp/litecoind.tx.raw \
|
||||||
-zmqpubhashtxhwm=10000
|
-zmqpubhashtxhwm=10000
|
||||||
|
|
||||||
Each PUB notification has a topic and body, where the header
|
Each PUB notification has a topic and body, where the header
|
||||||
@ -101,7 +101,7 @@ is structured as the following based on the type of message:
|
|||||||
|
|
||||||
Where the 8-byte uints correspond to the mempool sequence number.
|
Where the 8-byte uints correspond to the mempool sequence number.
|
||||||
|
|
||||||
These options can also be provided in bitcoin.conf.
|
These options can also be provided in litecoin.conf.
|
||||||
|
|
||||||
ZeroMQ endpoint specifiers for TCP (and others) are documented in the
|
ZeroMQ endpoint specifiers for TCP (and others) are documented in the
|
||||||
[ZeroMQ API](http://api.zeromq.org/4-0:_start).
|
[ZeroMQ API](http://api.zeromq.org/4-0:_start).
|
||||||
@ -127,9 +127,9 @@ dropped by network middle boxes.
|
|||||||
|
|
||||||
## Remarks
|
## Remarks
|
||||||
|
|
||||||
From the perspective of bitcoind, the ZeroMQ socket is write-only; PUB
|
From the perspective of litecoind, the ZeroMQ socket is write-only; PUB
|
||||||
sockets don't even have a read function. Thus, there is no state
|
sockets don't even have a read function. Thus, there is no state
|
||||||
introduced into bitcoind directly. Furthermore, no information is
|
introduced into litecoind directly. Furthermore, no information is
|
||||||
broadcast that wasn't already received from the public P2P network.
|
broadcast that wasn't already received from the public P2P network.
|
||||||
|
|
||||||
No authentication or authorization is done on connecting clients; it
|
No authentication or authorization is done on connecting clients; it
|
||||||
@ -146,7 +146,7 @@ disconnections.
|
|||||||
|
|
||||||
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 you are
|
during transmission depending on the communication type you are
|
||||||
using. Bitcoind appends an up-counting sequence number to each
|
using. Litecoind appends an up-counting sequence number to each
|
||||||
notification which allows listeners to detect lost notifications.
|
notification which allows listeners to detect lost notifications.
|
||||||
|
|
||||||
The `sequence` topic refers specifically to the mempool sequence
|
The `sequence` topic refers specifically to the mempool sequence
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
##
|
##
|
||||||
## bitcoin.conf configuration file. Lines beginning with # are comments.
|
## litecoin.conf configuration file. Lines beginning with # are comments.
|
||||||
##
|
##
|
||||||
|
|
||||||
# Network-related settings:
|
# Network-related settings:
|
||||||
@ -67,18 +67,18 @@
|
|||||||
#maxconnections=
|
#maxconnections=
|
||||||
|
|
||||||
#
|
#
|
||||||
# JSON-RPC options (for controlling a running Bitcoin/bitcoind process)
|
# JSON-RPC options (for controlling a running Litecoin/litecoind process)
|
||||||
#
|
#
|
||||||
|
|
||||||
# server=1 tells Bitcoin-Qt and bitcoind to accept JSON-RPC commands
|
# server=1 tells Litecoin-Qt and litecoind to accept JSON-RPC commands
|
||||||
#server=0
|
#server=0
|
||||||
|
|
||||||
# Bind to given address to listen for JSON-RPC connections.
|
# Bind to given address to listen for JSON-RPC connections.
|
||||||
# Refer to the manpage or bitcoind -help for further details.
|
# Refer to the manpage or litecoind -help for further details.
|
||||||
#rpcbind=<addr>
|
#rpcbind=<addr>
|
||||||
|
|
||||||
# If no rpcpassword is set, rpc cookie auth is sought. The default `-rpccookiefile` name
|
# If no rpcpassword is set, rpc cookie auth is sought. The default `-rpccookiefile` name
|
||||||
# is .cookie and found in the `-datadir` being used for bitcoind. This option is typically used
|
# is .cookie and found in the `-datadir` being used for litecoind. This option is typically used
|
||||||
# when the server and client are run as the same user.
|
# when the server and client are run as the same user.
|
||||||
#
|
#
|
||||||
# If not, you must set rpcuser and rpcpassword to secure the JSON-RPC API.
|
# If not, you must set rpcuser and rpcpassword to secure the JSON-RPC API.
|
||||||
@ -87,7 +87,7 @@
|
|||||||
# using the output from the script in share/rpcauth/rpcauth.py after providing a username:
|
# using the output from the script in share/rpcauth/rpcauth.py after providing a username:
|
||||||
#
|
#
|
||||||
# ./share/rpcauth/rpcauth.py alice
|
# ./share/rpcauth/rpcauth.py alice
|
||||||
# String to be appended to bitcoin.conf:
|
# String to be appended to litecoin.conf:
|
||||||
# rpcauth=alice:f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae
|
# rpcauth=alice:f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae
|
||||||
# Your password:
|
# Your password:
|
||||||
# DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=
|
# DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=
|
||||||
@ -99,7 +99,7 @@
|
|||||||
# You can even add multiple entries of these to the server conf file, and client can use any of them:
|
# You can even add multiple entries of these to the server conf file, and client can use any of them:
|
||||||
# rpcauth=bob:b2dd077cb54591a2f3139e69a897ac$4e71f08d48b4347cf8eff3815c0e25ae2e9a4340474079f55705f40574f4ec99
|
# rpcauth=bob:b2dd077cb54591a2f3139e69a897ac$4e71f08d48b4347cf8eff3815c0e25ae2e9a4340474079f55705f40574f4ec99
|
||||||
|
|
||||||
# How many seconds bitcoin will wait for a complete RPC HTTP request.
|
# How many seconds litecoin will wait for a complete RPC HTTP request.
|
||||||
# after the HTTP connection is established.
|
# after the HTTP connection is established.
|
||||||
#rpcclienttimeout=30
|
#rpcclienttimeout=30
|
||||||
|
|
||||||
@ -110,8 +110,8 @@
|
|||||||
# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
|
# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
|
||||||
# because the rpcpassword is transmitted over the network unencrypted.
|
# because the rpcpassword is transmitted over the network unencrypted.
|
||||||
|
|
||||||
# server=1 tells Bitcoin-Qt to accept JSON-RPC commands.
|
# server=1 tells Litecoin-Qt to accept JSON-RPC commands.
|
||||||
# it is also read by bitcoind to determine if RPC should be enabled
|
# it is also read by litecoind to determine if RPC should be enabled
|
||||||
#rpcallowip=10.1.1.34/255.255.255.0
|
#rpcallowip=10.1.1.34/255.255.255.0
|
||||||
#rpcallowip=1.2.3.4/24
|
#rpcallowip=1.2.3.4/24
|
||||||
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
|
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
|
||||||
@ -119,7 +119,7 @@
|
|||||||
# Listen for RPC connections on this TCP port:
|
# Listen for RPC connections on this TCP port:
|
||||||
#rpcport=9332
|
#rpcport=9332
|
||||||
|
|
||||||
# You can use Bitcoin or bitcoind to send commands to Bitcoin/bitcoind
|
# You can use Litecoin or litecoind to send commands to Litecoin/litecoind
|
||||||
# running on another host using this option:
|
# running on another host using this option:
|
||||||
#rpcconnect=127.0.0.1
|
#rpcconnect=127.0.0.1
|
||||||
|
|
||||||
@ -133,7 +133,7 @@
|
|||||||
# This setting is over-ridden by the -paytxfee option.
|
# This setting is over-ridden by the -paytxfee option.
|
||||||
#txconfirmtarget=n
|
#txconfirmtarget=n
|
||||||
|
|
||||||
# Pay a transaction fee every time you send bitcoins.
|
# Pay a transaction fee every time you send litecoins.
|
||||||
#paytxfee=0.000x
|
#paytxfee=0.000x
|
||||||
|
|
||||||
# Miscellaneous options
|
# Miscellaneous options
|
||||||
@ -151,7 +151,7 @@
|
|||||||
|
|
||||||
# User interface options
|
# User interface options
|
||||||
|
|
||||||
# Start Bitcoin minimized
|
# Start Litecoin minimized
|
||||||
#min=1
|
#min=1
|
||||||
|
|
||||||
# Minimize to the system tray
|
# Minimize to the system tray
|
||||||
@ -29,16 +29,16 @@
|
|||||||
<string>????</string>
|
<string>????</string>
|
||||||
|
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>Bitcoin-Qt</string>
|
<string>Litecoin-Qt</string>
|
||||||
|
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Bitcoin-Qt</string>
|
<string>Litecoin-Qt</string>
|
||||||
|
|
||||||
<key>LSHasLocalizedDisplayName</key>
|
<key>LSHasLocalizedDisplayName</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.bitcoinfoundation.Bitcoin-Qt</string>
|
<string>org.litecoin.Litecoin-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.bitcoin.BitcoinPayment</string>
|
<string>org.litecoin.LitecoinPayment</string>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>bitcoin</string>
|
<string>litecoin</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|||||||
@ -38,7 +38,7 @@ def main():
|
|||||||
salt = generate_salt(16)
|
salt = generate_salt(16)
|
||||||
password_hmac = password_to_hmac(salt, args.password)
|
password_hmac = password_to_hmac(salt, args.password)
|
||||||
|
|
||||||
print('String to be appended to bitcoin.conf:')
|
print('String to be appended to litecoin.conf:')
|
||||||
print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac))
|
print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac))
|
||||||
print('Your password:\n{0}'.format(args.password))
|
print('Your password:\n{0}'.format(args.password))
|
||||||
|
|
||||||
|
|||||||
@ -89,7 +89,7 @@ bench: $(BENCH_BINARY) FORCE
|
|||||||
$(BENCH_BINARY)
|
$(BENCH_BINARY)
|
||||||
|
|
||||||
bitcoin_bench_clean : FORCE
|
bitcoin_bench_clean : FORCE
|
||||||
rm -f $(CLEAN_BITCOIN_BENCH) $(bench_bench_bitcoin_OBJECTS) $(BENCH_BINARY)
|
rm -f $(CLEAN_BITCOIN_BENCH) $(bench_bench_litecoin_OBJECTS) $(BENCH_BINARY)
|
||||||
|
|
||||||
%.raw.h: %.raw
|
%.raw.h: %.raw
|
||||||
@$(MKDIR_P) $(@D)
|
@$(MKDIR_P) $(@D)
|
||||||
|
|||||||
@ -372,9 +372,9 @@ CLEAN_QT = $(nodist_qt_libbitcoinqt_a_SOURCES) $(QT_QM) $(QT_FORMS_H) qt/*.gcda
|
|||||||
CLEANFILES += $(CLEAN_QT)
|
CLEANFILES += $(CLEAN_QT)
|
||||||
|
|
||||||
bitcoin_qt_clean: FORCE
|
bitcoin_qt_clean: FORCE
|
||||||
rm -f $(CLEAN_QT) $(qt_libbitcoinqt_a_OBJECTS) $(qt_bitcoin_qt_OBJECTS) qt/bitcoin-qt$(EXEEXT) $(LIBBITCOINQT)
|
rm -f $(CLEAN_QT) $(qt_libbitcoinqt_a_OBJECTS) $(qt_litecoin_qt_OBJECTS) qt/litecoin-qt$(EXEEXT) $(LIBBITCOINQT)
|
||||||
|
|
||||||
bitcoin_qt : qt/bitcoin-qt$(EXEEXT)
|
bitcoin_qt : qt/litecoin-qt$(EXEEXT)
|
||||||
|
|
||||||
ui_%.h: %.ui
|
ui_%.h: %.ui
|
||||||
@test -f $(UIC)
|
@test -f $(UIC)
|
||||||
|
|||||||
@ -57,7 +57,7 @@ static void SetupCliArgs(ArgsManager& argsman)
|
|||||||
argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-version", "Print version and exit", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-conf=<file>", strprintf("Specify configuration file. Relative paths will be prefixed by datadir location. (default: %s)", BITCOIN_CONF_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-conf=<file>", strprintf("Specify configuration file. Relative paths will be prefixed by datadir location. (default: %s)", BITCOIN_CONF_FILENAME), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-datadir=<dir>", "Specify data directory", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-datadir=<dir>", "Specify data directory", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-generate", strprintf("Generate blocks immediately, equivalent to RPC generatenewaddress followed by RPC generatetoaddress. Optional positional integer arguments are number of blocks to generate (default: %s) and maximum iterations to try (default: %s), equivalent to RPC generatetoaddress nblocks and maxtries arguments. Example: bitcoin-cli -generate 4 1000", DEFAULT_NBLOCKS, DEFAULT_MAX_TRIES), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-generate", strprintf("Generate blocks immediately, equivalent to RPC generatenewaddress followed by RPC generatetoaddress. Optional positional integer arguments are number of blocks to generate (default: %s) and maximum iterations to try (default: %s), equivalent to RPC generatetoaddress nblocks and maxtries arguments. Example: litecoin-cli -generate 4 1000", DEFAULT_NBLOCKS, DEFAULT_MAX_TRIES), ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-getinfo", "Get general information from the remote server. Note that unlike server-side RPC calls, the results of -getinfo is the result of multiple non-atomic requests. Some entries in the result may represent results from different states (e.g. wallet balance may be as of a different block from the chain state reported)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-getinfo", "Get general information from the remote server. Note that unlike server-side RPC calls, the results of -getinfo is the result of multiple non-atomic requests. Some entries in the result may represent results from different states (e.g. wallet balance may be as of a different block from the chain state reported)", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0).", ArgsManager::ALLOW_INT, OptionsCategory::OPTIONS);
|
argsman.AddArg("-netinfo", "Get network peer connection information from the remote server. An optional integer argument from 0 to 4 can be passed for different peers listings (default: 0).", ArgsManager::ALLOW_INT, OptionsCategory::OPTIONS);
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ static void SetupCliArgs(ArgsManager& argsman)
|
|||||||
argsman.AddArg("-rpcport=<port>", strprintf("Connect to JSON-RPC on <port> (default: %u, testnet: %u, signet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), signetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-rpcport=<port>", strprintf("Connect to JSON-RPC on <port> (default: %u, testnet: %u, signet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), signetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-rpcuser=<user>", "Username for JSON-RPC connections", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-rpcuser=<user>", "Username for JSON-RPC connections", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-rpcwait", "Wait for RPC server to start", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-rpcwait", "Wait for RPC server to start", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-rpcwallet=<walletname>", "Send RPC for non-default wallet on RPC server (needs to exactly match corresponding -wallet option passed to bitcoind). This changes the RPC endpoint used, e.g. http://127.0.0.1:8332/wallet/<walletname>", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-rpcwallet=<walletname>", "Send RPC for non-default wallet on RPC server (needs to exactly match corresponding -wallet option passed to litecoind). This changes the RPC endpoint used, e.g. http://127.0.0.1:8332/wallet/<walletname>", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-stdin", "Read extra arguments from standard input, one per line until EOF/Ctrl-D (recommended for sensitive information such as passphrases). When combined with -stdinrpcpass, the first line from standard input is used for the RPC password.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-stdin", "Read extra arguments from standard input, one per line until EOF/Ctrl-D (recommended for sensitive information such as passphrases). When combined with -stdinrpcpass, the first line from standard input is used for the RPC password.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-stdinrpcpass", "Read RPC password from standard input as a single line. When combined with -stdin, the first line from standard input is used for the RPC password. When combined with -stdinwalletpassphrase, -stdinrpcpass consumes the first line, and -stdinwalletpassphrase consumes the second.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-stdinrpcpass", "Read RPC password from standard input as a single line. When combined with -stdin, the first line from standard input is used for the RPC password. When combined with -stdinwalletpassphrase, -stdinrpcpass consumes the first line, and -stdinwalletpassphrase consumes the second.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
argsman.AddArg("-stdinwalletpassphrase", "Read wallet passphrase from standard input as a single line. When combined with -stdin, the first line from standard input is used for the wallet passphrase.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
argsman.AddArg("-stdinwalletpassphrase", "Read wallet passphrase from standard input as a single line. When combined with -stdin, the first line from standard input is used for the wallet passphrase.", ArgsManager::ALLOW_ANY, OptionsCategory::OPTIONS);
|
||||||
@ -118,10 +118,10 @@ static int AppInitRPC(int argc, char* argv[])
|
|||||||
std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n";
|
std::string strUsage = PACKAGE_NAME " RPC client version " + FormatFullVersion() + "\n";
|
||||||
if (!gArgs.IsArgSet("-version")) {
|
if (!gArgs.IsArgSet("-version")) {
|
||||||
strUsage += "\n"
|
strUsage += "\n"
|
||||||
"Usage: bitcoin-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n"
|
"Usage: litecoin-cli [options] <command> [params] Send command to " PACKAGE_NAME "\n"
|
||||||
"or: bitcoin-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n"
|
"or: litecoin-cli [options] -named <command> [name=value]... Send command to " PACKAGE_NAME " (with named arguments)\n"
|
||||||
"or: bitcoin-cli [options] help List commands\n"
|
"or: litecoin-cli [options] help List commands\n"
|
||||||
"or: bitcoin-cli [options] help <command> Get help for a command\n";
|
"or: litecoin-cli [options] help <command> Get help for a command\n";
|
||||||
strUsage += "\n" + gArgs.GetHelpMessage();
|
strUsage += "\n" + gArgs.GetHelpMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,7 +377,7 @@ public:
|
|||||||
|
|
||||||
const UniValue& networkinfo{batch[ID_NETWORKINFO]["result"]};
|
const UniValue& networkinfo{batch[ID_NETWORKINFO]["result"]};
|
||||||
if (networkinfo["version"].get_int() < 209900) {
|
if (networkinfo["version"].get_int() < 209900) {
|
||||||
throw std::runtime_error("-netinfo requires bitcoind server to be running v0.21.0 and up");
|
throw std::runtime_error("-netinfo requires litecoind server to be running v0.21.0 and up");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count peer connection totals, and if DetailsRequested(), store peer data in a vector of structs.
|
// Count peer connection totals, and if DetailsRequested(), store peer data in a vector of structs.
|
||||||
@ -609,7 +609,7 @@ static UniValue CallRPC(BaseRequestHandler* rh, const std::string& strMethod, co
|
|||||||
if (response.error != -1) {
|
if (response.error != -1) {
|
||||||
responseErrorMessage = strprintf(" (error code %d - \"%s\")", response.error, http_errorstring(response.error));
|
responseErrorMessage = strprintf(" (error code %d - \"%s\")", response.error, http_errorstring(response.error));
|
||||||
}
|
}
|
||||||
throw CConnectionFailed(strprintf("Could not connect to the server %s:%d%s\n\nMake sure the bitcoind server is running and that you are connecting to the correct RPC port.", host, port, responseErrorMessage));
|
throw CConnectionFailed(strprintf("Could not connect to the server %s:%d%s\n\nMake sure the litecoind server is running and that you are connecting to the correct RPC port.", host, port, responseErrorMessage));
|
||||||
} else if (response.status == HTTP_UNAUTHORIZED) {
|
} else if (response.status == HTTP_UNAUTHORIZED) {
|
||||||
if (failedToGetAuthCookie) {
|
if (failedToGetAuthCookie) {
|
||||||
throw std::runtime_error(strprintf(
|
throw std::runtime_error(strprintf(
|
||||||
@ -689,7 +689,7 @@ static void ParseError(const UniValue& error, std::string& strPrint, int& nRet)
|
|||||||
strPrint += ("error message:\n" + err_msg.get_str());
|
strPrint += ("error message:\n" + err_msg.get_str());
|
||||||
}
|
}
|
||||||
if (err_code.isNum() && err_code.get_int() == RPC_WALLET_NOT_SPECIFIED) {
|
if (err_code.isNum() && err_code.get_int() == RPC_WALLET_NOT_SPECIFIED) {
|
||||||
strPrint += "\nTry adding \"-rpcwallet=<filename>\" option to bitcoin-cli command line.";
|
strPrint += "\nTry adding \"-rpcwallet=<filename>\" option to litecoin-cli command line.";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
strPrint = "error: " + error.write();
|
strPrint = "error: " + error.write();
|
||||||
|
|||||||
@ -97,9 +97,9 @@ static int AppInitRawTx(int argc, char* argv[])
|
|||||||
|
|
||||||
if (argc < 2 || HelpRequested(gArgs)) {
|
if (argc < 2 || HelpRequested(gArgs)) {
|
||||||
// First part of help message is specific to this utility
|
// First part of help message is specific to this utility
|
||||||
std::string strUsage = PACKAGE_NAME " bitcoin-tx utility version " + FormatFullVersion() + "\n\n" +
|
std::string strUsage = PACKAGE_NAME " litecoin-tx utility version " + FormatFullVersion() + "\n\n" +
|
||||||
"Usage: bitcoin-tx [options] <hex-tx> [commands] Update hex-encoded bitcoin transaction\n" +
|
"Usage: litecoin-tx [options] <hex-tx> [commands] Update hex-encoded litecoin transaction\n" +
|
||||||
"or: bitcoin-tx [options] -create [commands] Create hex-encoded bitcoin transaction\n" +
|
"or: litecoin-tx [options] -create [commands] Create hex-encoded litecoin transaction\n" +
|
||||||
"\n";
|
"\n";
|
||||||
strUsage += gArgs.GetHelpMessage();
|
strUsage += gArgs.GetHelpMessage();
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,7 @@ static bool AppInit(int argc, char* argv[])
|
|||||||
if (args.IsArgSet("-version")) {
|
if (args.IsArgSet("-version")) {
|
||||||
strUsage += FormatParagraph(LicenseInfo()) + "\n";
|
strUsage += FormatParagraph(LicenseInfo()) + "\n";
|
||||||
} else {
|
} else {
|
||||||
strUsage += "\nUsage: bitcoind [options] Start " PACKAGE_NAME "\n";
|
strUsage += "\nUsage: litecoind [options] Start " PACKAGE_NAME "\n";
|
||||||
strUsage += "\n" + args.GetHelpMessage();
|
strUsage += "\n" + args.GetHelpMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ static bool AppInit(int argc, char* argv[])
|
|||||||
// Error out when loose non-argument tokens are encountered on command line
|
// Error out when loose non-argument tokens are encountered on command line
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (!IsSwitchChar(argv[i][0])) {
|
if (!IsSwitchChar(argv[i][0])) {
|
||||||
return InitError(Untranslated(strprintf("Command line contains unexpected token '%s', see bitcoind -h for a list of options.\n", argv[i])));
|
return InitError(Untranslated(strprintf("Command line contains unexpected token '%s', see litecoind -h for a list of options.\n", argv[i])));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
* for both bitcoind and bitcoin-qt, to make it harder for attackers to
|
* for both bitcoind and bitcoin-qt, to make it harder for attackers to
|
||||||
* target servers or GUI users specifically.
|
* target servers or GUI users specifically.
|
||||||
*/
|
*/
|
||||||
const std::string CLIENT_NAME("Satoshi");
|
const std::string CLIENT_NAME("LitecoinCore");
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_BUILD_INFO
|
#ifdef HAVE_BUILD_INFO
|
||||||
|
|||||||
@ -1310,9 +1310,9 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
|
|||||||
// Warn about relative -datadir path.
|
// Warn about relative -datadir path.
|
||||||
if (args.IsArgSet("-datadir") && !fs::path(args.GetArg("-datadir", "")).is_absolute()) {
|
if (args.IsArgSet("-datadir") && !fs::path(args.GetArg("-datadir", "")).is_absolute()) {
|
||||||
LogPrintf("Warning: relative datadir option '%s' specified, which will be interpreted relative to the " /* Continued */
|
LogPrintf("Warning: relative datadir option '%s' specified, which will be interpreted relative to the " /* Continued */
|
||||||
"current working directory '%s'. This is fragile, because if bitcoin is started in the future "
|
"current working directory '%s'. This is fragile, because if litecoin is started in the future "
|
||||||
"from a different location, it will be unable to locate the current data files. There could "
|
"from a different location, it will be unable to locate the current data files. There could "
|
||||||
"also be data loss if bitcoin is started while in a temporary directory.\n",
|
"also be data loss if litecoin is started while in a temporary directory.\n",
|
||||||
args.GetArg("-datadir", ""), fs::current_path().string());
|
args.GetArg("-datadir", ""), fs::current_path().string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
This directory contains the BitcoinQT graphical user interface (GUI). It uses the cross-platform framework [Qt](https://www1.qt.io/developers/).
|
This directory contains the LitecoinQT graphical user interface (GUI). It uses the cross-platform framework [Qt](https://www1.qt.io/developers/).
|
||||||
|
|
||||||
The current precise version for Qt 5 is specified in [qt.mk](/depends/packages/qt.mk).
|
The current precise version for Qt 5 is specified in [qt.mk](/depends/packages/qt.mk).
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ See build instructions ([macOS](/doc/build-osx.md), [Windows](/doc/build-windows
|
|||||||
To run:
|
To run:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
./src/qt/bitcoin-qt
|
./src/qt/litecoin-qt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Files and directories
|
## Files and directories
|
||||||
@ -32,7 +32,7 @@ Tests.
|
|||||||
|
|
||||||
### bitcoingui.(h/cpp)
|
### bitcoingui.(h/cpp)
|
||||||
|
|
||||||
Represents the main window of the Bitcoin UI.
|
Represents the main window of the Litecoin UI.
|
||||||
|
|
||||||
### \*model.(h/cpp)
|
### \*model.(h/cpp)
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ Various dialogs, e.g. to open a URL. Inherit from [QDialog](https://doc.qt.io/qt
|
|||||||
|
|
||||||
### paymentserver.(h/cpp)
|
### paymentserver.(h/cpp)
|
||||||
|
|
||||||
Used to process BIP21 payment URI requests. Also handles URI based application switching (e.g. when following a bitcoin:... link from a browser).
|
Used to process BIP21 payment URI requests. Also handles URI based application switching (e.g. when following a litecoin:... link from a browser).
|
||||||
|
|
||||||
### walletview.(h/cpp)
|
### walletview.(h/cpp)
|
||||||
|
|
||||||
@ -86,10 +86,10 @@ Instructions for macOS:
|
|||||||
1. Make sure you installed everything through Homebrew mentioned in the [macOS build instructions](/doc/build-osx.md)
|
1. Make sure you installed everything through Homebrew mentioned in the [macOS build instructions](/doc/build-osx.md)
|
||||||
2. Use `./configure` with the `--enable-debug` flag
|
2. Use `./configure` with the `--enable-debug` flag
|
||||||
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
|
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
|
||||||
4. Enter "bitcoin-qt" as project name, enter src/qt as location
|
4. Enter "litecoin-qt" as project name, enter src/qt as location
|
||||||
5. Leave the file selection as it is
|
5. Leave the file selection as it is
|
||||||
6. Confirm the "summary page"
|
6. Confirm the "summary page"
|
||||||
7. In the "Projects" tab select "Manage Kits..."
|
7. In the "Projects" tab select "Manage Kits..."
|
||||||
8. Select the default "Desktop" kit and select "Clang (x86 64bit in /usr/bin)" as compiler
|
8. Select the default "Desktop" kit and select "Clang (x86 64bit in /usr/bin)" as compiler
|
||||||
9. Select LLDB as debugger (you might need to set the path to your installation)
|
9. Select LLDB as debugger (you might need to set the path to your installation)
|
||||||
10. Start debugging with Qt Creator (you might need to the executable to "bitcoin-qt" under "Run", which is where you can also add command line arguments)
|
10. Start debugging with Qt Creator (you might need to the executable to "litecoin-qt" under "Run", which is where you can also add command line arguments)
|
||||||
|
|||||||
@ -101,12 +101,12 @@ AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode,
|
|||||||
switch(tab)
|
switch(tab)
|
||||||
{
|
{
|
||||||
case SendingTab:
|
case SendingTab:
|
||||||
ui->labelExplanation->setText(tr("These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins."));
|
ui->labelExplanation->setText(tr("These are your Litecoin addresses for sending payments. Always check the amount and the receiving address before sending coins."));
|
||||||
ui->deleteAddress->setVisible(true);
|
ui->deleteAddress->setVisible(true);
|
||||||
ui->newAddress->setVisible(true);
|
ui->newAddress->setVisible(true);
|
||||||
break;
|
break;
|
||||||
case ReceivingTab:
|
case ReceivingTab:
|
||||||
ui->labelExplanation->setText(tr("These are your Bitcoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.\nSigning is only possible with addresses of the type 'legacy'."));
|
ui->labelExplanation->setText(tr("These are your Litecoin addresses for receiving payments. Use the 'Create new receiving address' button in the receive tab to create new addresses.\nSigning is only possible with addresses of the type 'legacy'."));
|
||||||
ui->deleteAddress->setVisible(false);
|
ui->deleteAddress->setVisible(false);
|
||||||
ui->newAddress->setVisible(false);
|
ui->newAddress->setVisible(false);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -116,7 +116,7 @@ void AskPassphraseDialog::accept()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm wallet encryption"),
|
QMessageBox::StandardButton retval = QMessageBox::question(this, tr("Confirm wallet encryption"),
|
||||||
tr("Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR BITCOINS</b>!") + "<br><br>" + tr("Are you sure you wish to encrypt your wallet?"),
|
tr("Warning: If you encrypt your wallet and lose your passphrase, you will <b>LOSE ALL OF YOUR LITECOINS</b>!") + "<br><br>" + tr("Are you sure you wish to encrypt your wallet?"),
|
||||||
QMessageBox::Yes|QMessageBox::Cancel,
|
QMessageBox::Yes|QMessageBox::Cancel,
|
||||||
QMessageBox::Cancel);
|
QMessageBox::Cancel);
|
||||||
if(retval == QMessageBox::Yes)
|
if(retval == QMessageBox::Yes)
|
||||||
@ -124,7 +124,7 @@ void AskPassphraseDialog::accept()
|
|||||||
if(newpass1 == newpass2)
|
if(newpass1 == newpass2)
|
||||||
{
|
{
|
||||||
QString encryption_reminder = tr("Remember that encrypting your wallet cannot fully protect "
|
QString encryption_reminder = tr("Remember that encrypting your wallet cannot fully protect "
|
||||||
"your bitcoins from being stolen by malware infecting your computer.");
|
"your litecoins from being stolen by malware infecting your computer.");
|
||||||
if (m_passphrase_out) {
|
if (m_passphrase_out) {
|
||||||
m_passphrase_out->assign(newpass1);
|
m_passphrase_out->assign(newpass1);
|
||||||
QMessageBox::warning(this, tr("Wallet to be encrypted"),
|
QMessageBox::warning(this, tr("Wallet to be encrypted"),
|
||||||
|
|||||||
@ -249,7 +249,7 @@ void BitcoinGUI::createActions()
|
|||||||
tabGroup->addAction(overviewAction);
|
tabGroup->addAction(overviewAction);
|
||||||
|
|
||||||
sendCoinsAction = new QAction(platformStyle->SingleColorIcon(":/icons/send"), tr("&Send"), this);
|
sendCoinsAction = new QAction(platformStyle->SingleColorIcon(":/icons/send"), tr("&Send"), this);
|
||||||
sendCoinsAction->setStatusTip(tr("Send coins to a Bitcoin address"));
|
sendCoinsAction->setStatusTip(tr("Send coins to a Litecoin address"));
|
||||||
sendCoinsAction->setToolTip(sendCoinsAction->statusTip());
|
sendCoinsAction->setToolTip(sendCoinsAction->statusTip());
|
||||||
sendCoinsAction->setCheckable(true);
|
sendCoinsAction->setCheckable(true);
|
||||||
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2));
|
sendCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_2));
|
||||||
@ -260,7 +260,7 @@ void BitcoinGUI::createActions()
|
|||||||
sendCoinsMenuAction->setToolTip(sendCoinsMenuAction->statusTip());
|
sendCoinsMenuAction->setToolTip(sendCoinsMenuAction->statusTip());
|
||||||
|
|
||||||
receiveCoinsAction = new QAction(platformStyle->SingleColorIcon(":/icons/receiving_addresses"), tr("&Receive"), this);
|
receiveCoinsAction = new QAction(platformStyle->SingleColorIcon(":/icons/receiving_addresses"), tr("&Receive"), this);
|
||||||
receiveCoinsAction->setStatusTip(tr("Request payments (generates QR codes and bitcoin: URIs)"));
|
receiveCoinsAction->setStatusTip(tr("Request payments (generates QR codes and litecoin: URIs)"));
|
||||||
receiveCoinsAction->setToolTip(receiveCoinsAction->statusTip());
|
receiveCoinsAction->setToolTip(receiveCoinsAction->statusTip());
|
||||||
receiveCoinsAction->setCheckable(true);
|
receiveCoinsAction->setCheckable(true);
|
||||||
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3));
|
receiveCoinsAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_3));
|
||||||
@ -320,13 +320,13 @@ void BitcoinGUI::createActions()
|
|||||||
changePassphraseAction = new QAction(tr("&Change Passphrase..."), this);
|
changePassphraseAction = new QAction(tr("&Change Passphrase..."), this);
|
||||||
changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption"));
|
changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption"));
|
||||||
signMessageAction = new QAction(tr("Sign &message..."), this);
|
signMessageAction = new QAction(tr("Sign &message..."), this);
|
||||||
signMessageAction->setStatusTip(tr("Sign messages with your Bitcoin addresses to prove you own them"));
|
signMessageAction->setStatusTip(tr("Sign messages with your Litecoin addresses to prove you own them"));
|
||||||
verifyMessageAction = new QAction(tr("&Verify message..."), this);
|
verifyMessageAction = new QAction(tr("&Verify message..."), this);
|
||||||
verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Bitcoin addresses"));
|
verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Litecoin addresses"));
|
||||||
m_load_psbt_action = new QAction(tr("&Load PSBT from file..."), this);
|
m_load_psbt_action = new QAction(tr("&Load PSBT from file..."), this);
|
||||||
m_load_psbt_action->setStatusTip(tr("Load Partially Signed Bitcoin Transaction"));
|
m_load_psbt_action->setStatusTip(tr("Load Partially Signed Litecoin Transaction"));
|
||||||
m_load_psbt_clipboard_action = new QAction(tr("Load PSBT from clipboard..."), this);
|
m_load_psbt_clipboard_action = new QAction(tr("Load PSBT from clipboard..."), this);
|
||||||
m_load_psbt_clipboard_action->setStatusTip(tr("Load Partially Signed Bitcoin Transaction from clipboard"));
|
m_load_psbt_clipboard_action->setStatusTip(tr("Load Partially Signed Litecoin Transaction from clipboard"));
|
||||||
|
|
||||||
openRPCConsoleAction = new QAction(tr("Node window"), this);
|
openRPCConsoleAction = new QAction(tr("Node window"), this);
|
||||||
openRPCConsoleAction->setStatusTip(tr("Open node debugging and diagnostic console"));
|
openRPCConsoleAction->setStatusTip(tr("Open node debugging and diagnostic console"));
|
||||||
@ -340,14 +340,9 @@ void BitcoinGUI::createActions()
|
|||||||
usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels"));
|
usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels"));
|
||||||
|
|
||||||
openAction = new QAction(tr("Open &URI..."), this);
|
openAction = new QAction(tr("Open &URI..."), this);
|
||||||
openAction->setStatusTip(tr("Open a bitcoin: URI"));
|
openAction->setStatusTip(tr("Open a litecoin: URI"));
|
||||||
|
|
||||||
m_open_wallet_action = new QAction(tr("Open Wallet"), this);
|
m_open_wallet_action = new QAction(tr("Open Wallet"), this);
|
||||||
m_open_wallet_action->setEnabled(false);
|
m_open_wallet_action->setEnabled(false);
|
||||||
m_open_wallet_action->setStatusTip(tr("Open a wallet"));
|
|
||||||
m_open_wallet_menu = new QMenu(this);
|
|
||||||
|
|
||||||
m_close_wallet_action = new QAction(tr("Close Wallet..."), this);
|
|
||||||
m_close_wallet_action->setStatusTip(tr("Close wallet"));
|
m_close_wallet_action->setStatusTip(tr("Close wallet"));
|
||||||
|
|
||||||
m_create_wallet_action = new QAction(tr("Create Wallet..."), this);
|
m_create_wallet_action = new QAction(tr("Create Wallet..."), this);
|
||||||
@ -359,7 +354,7 @@ void BitcoinGUI::createActions()
|
|||||||
|
|
||||||
showHelpMessageAction = new QAction(tr("&Command-line options"), this);
|
showHelpMessageAction = new QAction(tr("&Command-line options"), this);
|
||||||
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
showHelpMessageAction->setMenuRole(QAction::NoRole);
|
||||||
showHelpMessageAction->setStatusTip(tr("Show the %1 help message to get a list with possible Bitcoin command-line options").arg(PACKAGE_NAME));
|
showHelpMessageAction->setStatusTip(tr("Show the %1 help message to get a list with possible Litecoin command-line options").arg(PACKAGE_NAME));
|
||||||
|
|
||||||
m_mask_values_action = new QAction(tr("&Mask values"), this);
|
m_mask_values_action = new QAction(tr("&Mask values"), this);
|
||||||
m_mask_values_action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_M));
|
m_mask_values_action->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_M));
|
||||||
@ -913,7 +908,7 @@ void BitcoinGUI::updateNetworkState()
|
|||||||
QString tooltip;
|
QString tooltip;
|
||||||
|
|
||||||
if (m_node.getNetworkActive()) {
|
if (m_node.getNetworkActive()) {
|
||||||
tooltip = tr("%n active connection(s) to Bitcoin network", "", count) + QString(".<br>") + tr("Click to disable network activity.");
|
tooltip = tr("%n active connection(s) to Litecoin network", "", count) + QString(".<br>") + tr("Click to disable network activity.");
|
||||||
} else {
|
} else {
|
||||||
tooltip = tr("Network activity disabled.") + QString("<br>") + tr("Click to enable network activity again.");
|
tooltip = tr("Network activity disabled.") + QString("<br>") + tr("Click to enable network activity again.");
|
||||||
icon = ":/icons/network_disabled";
|
icon = ":/icons/network_disabled";
|
||||||
|
|||||||
@ -42,10 +42,10 @@ QString BitcoinUnits::longName(int unit)
|
|||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return QString("BTC");
|
case BTC: return QString("LTC");
|
||||||
case mBTC: return QString("mBTC");
|
case mBTC: return QString("lites");
|
||||||
case uBTC: return QString::fromUtf8("µBTC (bits)");
|
case uBTC: return QString("photons");
|
||||||
case SAT: return QString("Satoshi (sat)");
|
case SAT: return QString("liteoshi");
|
||||||
default: return QString("???");
|
default: return QString("???");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -64,10 +64,10 @@ QString BitcoinUnits::description(int unit)
|
|||||||
{
|
{
|
||||||
switch(unit)
|
switch(unit)
|
||||||
{
|
{
|
||||||
case BTC: return QString("Bitcoins");
|
case BTC: return QString("Litecoins");
|
||||||
case mBTC: return QString("Milli-Bitcoins (1 / 1" THIN_SP_UTF8 "000)");
|
case mBTC: return QString("Lites (1 / 1" THIN_SP_UTF8 "000)");
|
||||||
case uBTC: return QString("Micro-Bitcoins (bits) (1 / 1" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
case uBTC: return QString("Photons (1 / 1" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
||||||
case SAT: return QString("Satoshi (sat) (1 / 100" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
case SAT: return QString("Liteoshis (sat) (1 / 100" THIN_SP_UTF8 "000" THIN_SP_UTF8 "000)");
|
||||||
default: return QString("???");
|
default: return QString("???");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,7 +110,7 @@ void EditAddressDialog::accept()
|
|||||||
break;
|
break;
|
||||||
case AddressTableModel::INVALID_ADDRESS:
|
case AddressTableModel::INVALID_ADDRESS:
|
||||||
QMessageBox::warning(this, windowTitle(),
|
QMessageBox::warning(this, windowTitle(),
|
||||||
tr("The entered address \"%1\" is not a valid Bitcoin address.").arg(ui->addressEdit->text()),
|
tr("The entered address \"%1\" is not a valid Litecoin address.").arg(ui->addressEdit->text()),
|
||||||
QMessageBox::Ok, QMessageBox::Ok);
|
QMessageBox::Ok, QMessageBox::Ok);
|
||||||
break;
|
break;
|
||||||
case AddressTableModel::DUPLICATE_ADDRESS:
|
case AddressTableModel::DUPLICATE_ADDRESS:
|
||||||
|
|||||||
@ -132,7 +132,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -212,7 +212,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -257,7 +257,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -292,7 +292,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
|
|||||||
@ -130,7 +130,7 @@ QLabel { color: rgb(40,40,40); }</string>
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="infoText">
|
<widget class="QLabel" name="infoText">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the bitcoin network, as detailed below.</string>
|
<string>Recent transactions may not yet be visible, and therefore your wallet's balance might be incorrect. This information will be correct once your wallet has finished synchronizing with the litecoin network, as detailed below.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::RichText</enum>
|
<enum>Qt::RichText</enum>
|
||||||
@ -149,7 +149,7 @@ QLabel { color: rgb(40,40,40); }</string>
|
|||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Attempting to spend bitcoins that are affected by not-yet-displayed transactions will not be accepted by the network.</string>
|
<string>Attempting to spend litecoins that are affected by not-yet-displayed transactions will not be accepted by the network.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::RichText</enum>
|
<enum>Qt::RichText</enum>
|
||||||
|
|||||||
@ -252,7 +252,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="mapPortUpnp">
|
<widget class="QCheckBox" name="mapPortUpnp">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled.</string>
|
<string>Automatically open the Litecoin client port on the router. This only works when your router supports UPnP and it is enabled.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Map port using &UPnP</string>
|
<string>Map port using &UPnP</string>
|
||||||
@ -272,7 +272,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="connectSocks">
|
<widget class="QCheckBox" name="connectSocks">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Connect to the Bitcoin network through a SOCKS5 proxy.</string>
|
<string>Connect to the Litecoin network through a SOCKS5 proxy.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Connect through SOCKS5 proxy (default proxy):</string>
|
<string>&Connect through SOCKS5 proxy (default proxy):</string>
|
||||||
@ -459,7 +459,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="connectSocksTor">
|
<widget class="QCheckBox" name="connectSocksTor">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Connect to the Bitcoin network through a separate SOCKS5 proxy for Tor onion services.</string>
|
<string>Connect to the Litecoin network through a separate SOCKS5 proxy for Tor onion services.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use separate SOCKS&5 proxy to reach peers via Tor onion services:</string>
|
<string>Use separate SOCKS&5 proxy to reach peers via Tor onion services:</string>
|
||||||
|
|||||||
@ -73,7 +73,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</string>
|
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the Litecoin network after a connection is established, but this process has not completed yet.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<string>Unconfirmed transactions to watch-only addresses</string>
|
<string>Unconfirmed transactions to watch-only addresses</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00000000 BTC</string>
|
<string notr="true">0.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<string>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</string>
|
<string>Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00000000 BTC</string>
|
<string notr="true">0.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -182,7 +182,7 @@
|
|||||||
<string>Mined balance in watch-only addresses that has not yet matured</string>
|
<string>Mined balance in watch-only addresses that has not yet matured</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00000000 BTC</string>
|
<string notr="true">0.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -241,7 +241,7 @@
|
|||||||
<string>Mined balance that has not yet matured</string>
|
<string>Mined balance that has not yet matured</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00000000 BTC</string>
|
<string notr="true">0.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -287,7 +287,7 @@
|
|||||||
<string>Your current total balance</string>
|
<string>Your current total balance</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">21 000 000.00000000 BTC</string>
|
<string notr="true">84 000 000.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -313,7 +313,7 @@
|
|||||||
<string>Current total balance in watch-only addresses</string>
|
<string>Current total balance in watch-only addresses</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">21 000 000.00000000 BTC</string>
|
<string notr="true">84 000 000.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -356,7 +356,7 @@
|
|||||||
<string>Your current spendable balance</string>
|
<string>Your current spendable balance</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">21 000 000.00000000 BTC</string>
|
<string notr="true">84 000 000.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -382,7 +382,7 @@
|
|||||||
<string>Your current balance in watch-only addresses</string>
|
<string>Your current balance in watch-only addresses</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">21 000 000.00000000 BTC</string>
|
<string notr="true">84 000 000.00000000 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
@ -467,7 +467,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</string>
|
<string>The displayed information may be out of date. Your wallet automatically synchronizes with the Litecoin network after a connection is established, but this process has not completed yet.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
|
|||||||
@ -47,7 +47,7 @@
|
|||||||
<item row="6" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Bitcoin network.</string>
|
<string>An optional message to attach to the payment request, which will be displayed when the request is opened. Note: The message will not be sent with the payment over the Litecoin network.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Message:</string>
|
<string>&Message:</string>
|
||||||
|
|||||||
@ -324,7 +324,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -404,7 +404,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -455,7 +455,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -484,7 +484,7 @@
|
|||||||
<enum>Qt::ActionsContextMenu</enum>
|
<enum>Qt::ActionsContextMenu</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">0.00 BTC</string>
|
<string notr="true">0.00 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
@ -883,7 +883,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for bitcoin transactions than the network can process.</string>
|
<string>When there is less transaction volume than space in the blocks, miners as well as relaying nodes may enforce a minimum fee. Paying only this minimum fee is just fine, but be aware that this can result in a never confirming transaction once there is more demand for litecoin transactions than the network can process.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>A too low fee might result in a never confirming transaction (read the tooltip)</string>
|
<string>A too low fee might result in a never confirming transaction (read the tooltip)</string>
|
||||||
@ -1214,7 +1214,7 @@ Note: Since the fee is calculated on a per-byte basis, a fee of "100 satoshis p
|
|||||||
<cursorShape>IBeamCursor</cursorShape>
|
<cursorShape>IBeamCursor</cursorShape>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">123.456 BTC</string>
|
<string notr="true">123.456 LTC</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textInteractionFlags">
|
<property name="textInteractionFlags">
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QValidatedLineEdit" name="payTo">
|
<widget class="QValidatedLineEdit" name="payTo">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The Bitcoin address to send the payment to</string>
|
<string>The Litecoin address to send the payment to</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -174,7 +174,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkboxSubtractFeeFromAmount">
|
<widget class="QCheckBox" name="checkboxSubtractFeeFromAmount">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The fee will be deducted from the amount being sent. The recipient will receive less bitcoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</string>
|
<string>The fee will be deducted from the amount being sent. The recipient will receive less litecoins than you enter in the amount field. If multiple recipients are selected, the fee is split equally.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>S&ubtract fee from amount</string>
|
<string>S&ubtract fee from amount</string>
|
||||||
@ -203,7 +203,7 @@
|
|||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QLabel" name="messageTextLabel">
|
<widget class="QLabel" name="messageTextLabel">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>A message that was attached to the bitcoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Bitcoin network.</string>
|
<string>A message that was attached to the litecoin: URI which will be stored with the transaction for your reference. Note: This message will not be sent over the Litecoin network.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::PlainText</enum>
|
<enum>Qt::PlainText</enum>
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="infoLabel_SM">
|
<widget class="QLabel" name="infoLabel_SM">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>You can sign messages/agreements with your addresses to prove you can receive bitcoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to.</string>
|
<string>You can sign messages/agreements with your addresses to prove you can receive litecoins sent to them. Be careful not to sign anything vague or random, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::PlainText</enum>
|
<enum>Qt::PlainText</enum>
|
||||||
@ -48,7 +48,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QValidatedLineEdit" name="addressIn_SM">
|
<widget class="QValidatedLineEdit" name="addressIn_SM">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The Bitcoin address to sign the message with</string>
|
<string>The Litecoin address to sign the message with</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -158,7 +158,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="signMessageButton_SM">
|
<widget class="QPushButton" name="signMessageButton_SM">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Sign the message to prove you own this Bitcoin address</string>
|
<string>Sign the message to prove you own this Litecoin address</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Sign &Message</string>
|
<string>Sign &Message</string>
|
||||||
@ -264,7 +264,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QValidatedLineEdit" name="addressIn_VM">
|
<widget class="QValidatedLineEdit" name="addressIn_VM">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The Bitcoin address the message was signed with</string>
|
<string>The Litecoin address the message was signed with</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -315,7 +315,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="verifyMessageButton_VM">
|
<widget class="QPushButton" name="verifyMessageButton_VM">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Verify the message to ensure it was signed with the specified Bitcoin address</string>
|
<string>Verify the message to ensure it was signed with the specified Litecoin address</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Verify &Message</string>
|
<string>Verify &Message</string>
|
||||||
|
|||||||
@ -105,7 +105,7 @@ void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
|
|||||||
widget->setFont(fixedPitchFont());
|
widget->setFont(fixedPitchFont());
|
||||||
// We don't want translators to use own addresses in translations
|
// We don't want translators to use own addresses in translations
|
||||||
// and this is the only place, where this address is supplied.
|
// and this is the only place, where this address is supplied.
|
||||||
widget->setPlaceholderText(QObject::tr("Enter a Bitcoin address (e.g. %1)").arg(
|
widget->setPlaceholderText(QObject::tr("Enter a Litecoin address (e.g. %1)").arg(
|
||||||
QString::fromStdString(DummyAddress(Params()))));
|
QString::fromStdString(DummyAddress(Params()))));
|
||||||
widget->setValidator(new BitcoinAddressEntryValidator(parent));
|
widget->setValidator(new BitcoinAddressEntryValidator(parent));
|
||||||
widget->setCheckValidator(new BitcoinAddressCheckValidator(parent));
|
widget->setCheckValidator(new BitcoinAddressCheckValidator(parent));
|
||||||
@ -586,10 +586,10 @@ fs::path static StartupShortcutPath()
|
|||||||
{
|
{
|
||||||
std::string chain = gArgs.GetChainName();
|
std::string chain = gArgs.GetChainName();
|
||||||
if (chain == CBaseChainParams::MAIN)
|
if (chain == CBaseChainParams::MAIN)
|
||||||
return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin.lnk";
|
return GetSpecialFolderPath(CSIDL_STARTUP) / "Litecoin.lnk";
|
||||||
if (chain == CBaseChainParams::TESTNET) // Remove this special case when CBaseChainParams::TESTNET = "testnet4"
|
if (chain == CBaseChainParams::TESTNET) // Remove this special case when CBaseChainParams::TESTNET = "testnet4"
|
||||||
return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin (testnet).lnk";
|
return GetSpecialFolderPath(CSIDL_STARTUP) / "Litecoin (testnet).lnk";
|
||||||
return GetSpecialFolderPath(CSIDL_STARTUP) / strprintf("Bitcoin (%s).lnk", chain);
|
return GetSpecialFolderPath(CSIDL_STARTUP) / strprintf("Litecoin (%s).lnk", chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GetStartOnSystemStartup()
|
bool GetStartOnSystemStartup()
|
||||||
@ -669,8 +669,8 @@ fs::path static GetAutostartFilePath()
|
|||||||
{
|
{
|
||||||
std::string chain = gArgs.GetChainName();
|
std::string chain = gArgs.GetChainName();
|
||||||
if (chain == CBaseChainParams::MAIN)
|
if (chain == CBaseChainParams::MAIN)
|
||||||
return GetAutostartDir() / "bitcoin.desktop";
|
return GetAutostartDir() / "litecoin.desktop";
|
||||||
return GetAutostartDir() / strprintf("bitcoin-%s.desktop", chain);
|
return GetAutostartDir() / strprintf("litecoin-%s.desktop", chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GetStartOnSystemStartup()
|
bool GetStartOnSystemStartup()
|
||||||
@ -714,9 +714,9 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||||||
optionFile << "[Desktop Entry]\n";
|
optionFile << "[Desktop Entry]\n";
|
||||||
optionFile << "Type=Application\n";
|
optionFile << "Type=Application\n";
|
||||||
if (chain == CBaseChainParams::MAIN)
|
if (chain == CBaseChainParams::MAIN)
|
||||||
optionFile << "Name=Bitcoin\n";
|
optionFile << "Name=Litecoin\n";
|
||||||
else
|
else
|
||||||
optionFile << strprintf("Name=Bitcoin (%s)\n", chain);
|
optionFile << strprintf("Name=Litecoin (%s)\n", chain);
|
||||||
optionFile << "Exec=" << pszExePath << strprintf(" -min -chain=%s\n", chain);
|
optionFile << "Exec=" << pszExePath << strprintf(" -min -chain=%s\n", chain);
|
||||||
optionFile << "Terminal=false\n";
|
optionFile << "Terminal=false\n";
|
||||||
optionFile << "Hidden=false\n";
|
optionFile << "Hidden=false\n";
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
- (NSString *)__bundleIdentifier
|
- (NSString *)__bundleIdentifier
|
||||||
{
|
{
|
||||||
if (self == [NSBundle mainBundle]) {
|
if (self == [NSBundle mainBundle]) {
|
||||||
return @"org.bitcoinfoundation.Bitcoin-Qt";
|
return @"org.litecoin.Litecoin-Qt";
|
||||||
} else {
|
} else {
|
||||||
return [self __bundleIdentifier];
|
return [self __bundleIdentifier];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
#include <QUrlQuery>
|
#include <QUrlQuery>
|
||||||
|
|
||||||
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
|
const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds
|
||||||
const QString BITCOIN_IPC_PREFIX("bitcoin:");
|
const QString BITCOIN_IPC_PREFIX("litecoin:");
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create a name that is unique for:
|
// Create a name that is unique for:
|
||||||
@ -47,7 +47,7 @@ const QString BITCOIN_IPC_PREFIX("bitcoin:");
|
|||||||
//
|
//
|
||||||
static QString ipcServerName()
|
static QString ipcServerName()
|
||||||
{
|
{
|
||||||
QString name("BitcoinQt");
|
QString name("LitecoinQt");
|
||||||
|
|
||||||
// Append a simple hash of the datadir
|
// Append a simple hash of the datadir
|
||||||
// Note that GetDataDir(true) returns a different path
|
// Note that GetDataDir(true) returns a different path
|
||||||
@ -172,7 +172,7 @@ PaymentServer::PaymentServer(QObject* parent, bool startLocalServer) :
|
|||||||
if (!uriServer->listen(name)) {
|
if (!uriServer->listen(name)) {
|
||||||
// constructor is called early in init, so don't use "Q_EMIT message()" here
|
// constructor is called early in init, so don't use "Q_EMIT message()" here
|
||||||
QMessageBox::critical(nullptr, tr("Payment request error"),
|
QMessageBox::critical(nullptr, tr("Payment request error"),
|
||||||
tr("Cannot start bitcoin: click-to-pay handler"));
|
tr("Cannot start litecoin: click-to-pay handler"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
connect(uriServer, &QLocalServer::newConnection, this, &PaymentServer::handleURIConnection);
|
connect(uriServer, &QLocalServer::newConnection, this, &PaymentServer::handleURIConnection);
|
||||||
@ -220,9 +220,9 @@ void PaymentServer::handleURIOrFile(const QString& s)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s.startsWith("bitcoin://", Qt::CaseInsensitive))
|
if (s.startsWith("litecoin://", Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
Q_EMIT message(tr("URI handling"), tr("'bitcoin://' is not a valid URI. Use 'bitcoin:' instead."),
|
Q_EMIT message(tr("URI handling"), tr("'litecoin://' is not a valid URI. Use 'litecoin:' instead."),
|
||||||
CClientUIInterface::MSG_ERROR);
|
CClientUIInterface::MSG_ERROR);
|
||||||
}
|
}
|
||||||
else if (s.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI
|
else if (s.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI
|
||||||
@ -249,7 +249,7 @@ void PaymentServer::handleURIOrFile(const QString& s)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
Q_EMIT message(tr("URI handling"),
|
Q_EMIT message(tr("URI handling"),
|
||||||
tr("URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."),
|
tr("URI cannot be parsed! This can be caused by an invalid Litecoin address or malformed URI parameters."),
|
||||||
CClientUIInterface::ICON_WARNING);
|
CClientUIInterface::ICON_WARNING);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -876,7 +876,7 @@ void SendCoinsDialog::coinControlChangeEdited(const QString& text)
|
|||||||
}
|
}
|
||||||
else if (!IsValidDestination(dest)) // Invalid address
|
else if (!IsValidDestination(dest)) // Invalid address
|
||||||
{
|
{
|
||||||
ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Bitcoin address"));
|
ui->labelCoinControlChangeLabel->setText(tr("Warning: Invalid Litecoin address"));
|
||||||
}
|
}
|
||||||
else // Valid address
|
else // Valid address
|
||||||
{
|
{
|
||||||
|
|||||||
@ -70,7 +70,7 @@ int main(int argc, char* argv[])
|
|||||||
// QApplication:: and QCoreApplication:: in the tests
|
// QApplication:: and QCoreApplication:: in the tests
|
||||||
BitcoinApplication app;
|
BitcoinApplication app;
|
||||||
app.setNode(*node);
|
app.setNode(*node);
|
||||||
app.setApplicationName("Bitcoin-Qt-test");
|
app.setApplicationName("Litecoin-Qt-test");
|
||||||
|
|
||||||
app.node().context()->args = &gArgs; // Make gArgs available in the NodeContext
|
app.node().context()->args = &gArgs; // Make gArgs available in the NodeContext
|
||||||
AppTests app_tests(app);
|
AppTests app_tests(app);
|
||||||
|
|||||||
@ -58,7 +58,7 @@ HelpMessageDialog::HelpMessageDialog(QWidget *parent, bool about) :
|
|||||||
ui->helpMessage->setVisible(false);
|
ui->helpMessage->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
setWindowTitle(tr("Command-line options"));
|
setWindowTitle(tr("Command-line options"));
|
||||||
QString header = "Usage: bitcoin-qt [command-line options] \n";
|
QString header = "Usage: litecoin-qt [command-line options] \n";
|
||||||
QTextCursor cursor(ui->helpMessage->document());
|
QTextCursor cursor(ui->helpMessage->document());
|
||||||
cursor.insertText(version);
|
cursor.insertText(version);
|
||||||
cursor.insertBlock();
|
cursor.insertBlock();
|
||||||
|
|||||||
@ -813,8 +813,8 @@ static RPCHelpMan getblockheader()
|
|||||||
RPCResult::Type::STR_HEX, "", "A string that is serialized, hex-encoded data for block 'hash'"},
|
RPCResult::Type::STR_HEX, "", "A string that is serialized, hex-encoded data for block 'hash'"},
|
||||||
},
|
},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
HelpExampleCli("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
|
HelpExampleCli("getblockheader", "\"e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3\"")
|
||||||
+ HelpExampleRpc("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
|
+ HelpExampleRpc("getblockheader", "\"e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3\"")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -931,8 +931,8 @@ static RPCHelpMan getblock()
|
|||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
HelpExampleCli("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
|
HelpExampleCli("getblock", "\"e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3\"")
|
||||||
+ HelpExampleRpc("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
|
+ HelpExampleRpc("getblock", "\"e2acdf2dd19a702e5d12a925f1e984b01e47a933562ca893656d4afb38b44ee3\"")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -1106,8 +1106,8 @@ static RPCHelpMan gettxout()
|
|||||||
{RPCResult::Type::STR_HEX, "hex", ""},
|
{RPCResult::Type::STR_HEX, "hex", ""},
|
||||||
{RPCResult::Type::NUM, "reqSigs", "Number of required signatures"},
|
{RPCResult::Type::NUM, "reqSigs", "Number of required signatures"},
|
||||||
{RPCResult::Type::STR_HEX, "type", "The type, eg pubkeyhash"},
|
{RPCResult::Type::STR_HEX, "type", "The type, eg pubkeyhash"},
|
||||||
{RPCResult::Type::ARR, "addresses", "array of bitcoin addresses",
|
{RPCResult::Type::ARR, "addresses", "array of litecoin addresses",
|
||||||
{{RPCResult::Type::STR, "address", "bitcoin address"}}},
|
{{RPCResult::Type::STR, "address", "litecoin address"}}},
|
||||||
}},
|
}},
|
||||||
{RPCResult::Type::BOOL, "coinbase", "Coinbase or not"},
|
{RPCResult::Type::BOOL, "coinbase", "Coinbase or not"},
|
||||||
}},
|
}},
|
||||||
|
|||||||
@ -209,7 +209,7 @@ static RPCHelpMan generatetodescriptor()
|
|||||||
"\nMine blocks immediately to a specified descriptor (before the RPC call returns)\n",
|
"\nMine blocks immediately to a specified descriptor (before the RPC call returns)\n",
|
||||||
{
|
{
|
||||||
{"num_blocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."},
|
{"num_blocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."},
|
||||||
{"descriptor", RPCArg::Type::STR, RPCArg::Optional::NO, "The descriptor to send the newly generated bitcoin to."},
|
{"descriptor", RPCArg::Type::STR, RPCArg::Optional::NO, "The descriptor to send the newly generated litecoin to."},
|
||||||
{"maxtries", RPCArg::Type::NUM, /* default */ ToString(DEFAULT_MAX_TRIES), "How many iterations to try."},
|
{"maxtries", RPCArg::Type::NUM, /* default */ ToString(DEFAULT_MAX_TRIES), "How many iterations to try."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
@ -257,7 +257,7 @@ static RPCHelpMan generatetoaddress()
|
|||||||
"\nMine blocks immediately to a specified address (before the RPC call returns)\n",
|
"\nMine blocks immediately to a specified address (before the RPC call returns)\n",
|
||||||
{
|
{
|
||||||
{"nblocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."},
|
{"nblocks", RPCArg::Type::NUM, RPCArg::Optional::NO, "How many blocks are generated immediately."},
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The address to send the newly generated bitcoin to."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The address to send the newly generated litecoin to."},
|
||||||
{"maxtries", RPCArg::Type::NUM, /* default */ ToString(DEFAULT_MAX_TRIES), "How many iterations to try."},
|
{"maxtries", RPCArg::Type::NUM, /* default */ ToString(DEFAULT_MAX_TRIES), "How many iterations to try."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
@ -268,7 +268,7 @@ static RPCHelpMan generatetoaddress()
|
|||||||
RPCExamples{
|
RPCExamples{
|
||||||
"\nGenerate 11 blocks to myaddress\n"
|
"\nGenerate 11 blocks to myaddress\n"
|
||||||
+ HelpExampleCli("generatetoaddress", "11 \"myaddress\"")
|
+ HelpExampleCli("generatetoaddress", "11 \"myaddress\"")
|
||||||
+ "If you are using the " PACKAGE_NAME " wallet, you can get a new address to send the newly generated bitcoin to with:\n"
|
+ "If you are using the " PACKAGE_NAME " wallet, you can get a new address to send the newly generated litecoin to with:\n"
|
||||||
+ HelpExampleCli("getnewaddress", "")
|
+ HelpExampleCli("getnewaddress", "")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
@ -296,7 +296,7 @@ static RPCHelpMan generateblock()
|
|||||||
return RPCHelpMan{"generateblock",
|
return RPCHelpMan{"generateblock",
|
||||||
"\nMine a block with a set of ordered transactions immediately to a specified address or descriptor (before the RPC call returns)\n",
|
"\nMine a block with a set of ordered transactions immediately to a specified address or descriptor (before the RPC call returns)\n",
|
||||||
{
|
{
|
||||||
{"output", RPCArg::Type::STR, RPCArg::Optional::NO, "The address or descriptor to send the newly generated bitcoin to."},
|
{"output", RPCArg::Type::STR, RPCArg::Optional::NO, "The address or descriptor to send the newly generated litecoin to."},
|
||||||
{"transactions", RPCArg::Type::ARR, RPCArg::Optional::NO, "An array of hex strings which are either txids or raw transactions.\n"
|
{"transactions", RPCArg::Type::ARR, RPCArg::Optional::NO, "An array of hex strings which are either txids or raw transactions.\n"
|
||||||
"Txids must reference transactions currently in the mempool.\n"
|
"Txids must reference transactions currently in the mempool.\n"
|
||||||
"All transactions must be valid and in valid order, otherwise the block will be rejected.",
|
"All transactions must be valid and in valid order, otherwise the block will be rejected.",
|
||||||
|
|||||||
@ -32,15 +32,15 @@
|
|||||||
static RPCHelpMan validateaddress()
|
static RPCHelpMan validateaddress()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"validateaddress",
|
return RPCHelpMan{"validateaddress",
|
||||||
"\nReturn information about the given bitcoin address.\n",
|
"\nReturn information about the given litecoin address.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address to validate"},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address to validate"},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
RPCResult::Type::OBJ, "", "",
|
RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::BOOL, "isvalid", "If the address is valid or not. If not, this is the only property returned."},
|
{RPCResult::Type::BOOL, "isvalid", "If the address is valid or not. If not, this is the only property returned."},
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address validated"},
|
{RPCResult::Type::STR, "address", "The litecoin address validated"},
|
||||||
{RPCResult::Type::STR_HEX, "scriptPubKey", "The hex-encoded scriptPubKey generated by the address"},
|
{RPCResult::Type::STR_HEX, "scriptPubKey", "The hex-encoded scriptPubKey generated by the address"},
|
||||||
{RPCResult::Type::BOOL, "isscript", "If the key is a script"},
|
{RPCResult::Type::BOOL, "isscript", "If the key is a script"},
|
||||||
{RPCResult::Type::BOOL, "iswitness", "If the address is a witness address"},
|
{RPCResult::Type::BOOL, "iswitness", "If the address is a witness address"},
|
||||||
@ -273,7 +273,7 @@ static RPCHelpMan verifymessage()
|
|||||||
return RPCHelpMan{"verifymessage",
|
return RPCHelpMan{"verifymessage",
|
||||||
"\nVerify a signed message\n",
|
"\nVerify a signed message\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address to use for the signature."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address to use for the signature."},
|
||||||
{"signature", RPCArg::Type::STR, RPCArg::Optional::NO, "The signature provided by the signer in base 64 encoding (see signmessage)."},
|
{"signature", RPCArg::Type::STR, RPCArg::Optional::NO, "The signature provided by the signer in base 64 encoding (see signmessage)."},
|
||||||
{"message", RPCArg::Type::STR, RPCArg::Optional::NO, "The message that was signed."},
|
{"message", RPCArg::Type::STR, RPCArg::Optional::NO, "The message that was signed."},
|
||||||
},
|
},
|
||||||
@ -284,11 +284,11 @@ static RPCHelpMan verifymessage()
|
|||||||
"\nUnlock the wallet for 30 seconds\n"
|
"\nUnlock the wallet for 30 seconds\n"
|
||||||
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
|
+ HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") +
|
||||||
"\nCreate the signature\n"
|
"\nCreate the signature\n"
|
||||||
+ HelpExampleCli("signmessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"my message\"") +
|
+ HelpExampleCli("signmessage", "\"LEr4HnaefWYHbMGXcFp2Po1NPRUeIk8km2\" \"my message\"") +
|
||||||
"\nVerify the signature\n"
|
"\nVerify the signature\n"
|
||||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
|
+ HelpExampleCli("verifymessage", "\"LEr4HnaefWYHbMGXcFp2Po1NPRUeIk8km2\" \"signature\" \"my message\"") +
|
||||||
"\nAs a JSON-RPC call\n"
|
"\nAs a JSON-RPC call\n"
|
||||||
+ HelpExampleRpc("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\", \"signature\", \"my message\"")
|
+ HelpExampleRpc("verifymessage", "\"LEr4HnaefWYHbMGXcFp2Po1NPRUeIk8km2\", \"signature\", \"my message\"")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -332,7 +332,7 @@ static RPCHelpMan signmessagewithprivkey()
|
|||||||
"\nCreate the signature\n"
|
"\nCreate the signature\n"
|
||||||
+ HelpExampleCli("signmessagewithprivkey", "\"privkey\" \"my message\"") +
|
+ HelpExampleCli("signmessagewithprivkey", "\"privkey\" \"my message\"") +
|
||||||
"\nVerify the signature\n"
|
"\nVerify the signature\n"
|
||||||
+ HelpExampleCli("verifymessage", "\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XX\" \"signature\" \"my message\"") +
|
+ HelpExampleCli("verifymessage", "\"LEr4HnaefWYHbMGXcFp2Po1NPRUeIk8km2\" \"signature\" \"my message\"") +
|
||||||
"\nAs a JSON-RPC call\n"
|
"\nAs a JSON-RPC call\n"
|
||||||
+ HelpExampleRpc("signmessagewithprivkey", "\"privkey\", \"my message\"")
|
+ HelpExampleRpc("signmessagewithprivkey", "\"privkey\", \"my message\"")
|
||||||
},
|
},
|
||||||
@ -610,7 +610,7 @@ static RPCHelpMan echo(const std::string& name)
|
|||||||
"\nSimply echo back the input arguments. This command is for testing.\n"
|
"\nSimply echo back the input arguments. This command is for testing.\n"
|
||||||
"\nIt will return an internal bug report when arg9='trigger_internal_bug' is passed.\n"
|
"\nIt will return an internal bug report when arg9='trigger_internal_bug' is passed.\n"
|
||||||
"\nThe difference between echo and echojson is that echojson has argument conversion enabled in the client-side table in "
|
"\nThe difference between echo and echojson is that echojson has argument conversion enabled in the client-side table in "
|
||||||
"bitcoin-cli and the GUI. There is no server-side difference.",
|
"litecoin-cli and the GUI. There is no server-side difference.",
|
||||||
{
|
{
|
||||||
{"arg0", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, ""},
|
{"arg0", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, ""},
|
||||||
{"arg1", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, ""},
|
{"arg1", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, ""},
|
||||||
|
|||||||
@ -136,7 +136,7 @@ static RPCHelpMan getrawtransaction()
|
|||||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||||
{RPCResult::Type::ARR, "addresses", "",
|
{RPCResult::Type::ARR, "addresses", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "address", "bitcoin address"},
|
{RPCResult::Type::STR, "address", "litecoin address"},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
@ -395,7 +395,7 @@ static RPCHelpMan createrawtransaction()
|
|||||||
{
|
{
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the bitcoin address, the value (float or string) is the amount in " + CURRENCY_UNIT},
|
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the litecoin address, the value (float or string) is the amount in " + CURRENCY_UNIT},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
@ -495,7 +495,7 @@ static RPCHelpMan decoderawtransaction()
|
|||||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||||
{RPCResult::Type::ARR, "addresses", "",
|
{RPCResult::Type::ARR, "addresses", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "address", "bitcoin address"},
|
{RPCResult::Type::STR, "address", "litecoin address"},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
@ -552,7 +552,7 @@ static RPCHelpMan decodescript()
|
|||||||
{RPCResult::Type::NUM, "reqSigs", "The required signatures"},
|
{RPCResult::Type::NUM, "reqSigs", "The required signatures"},
|
||||||
{RPCResult::Type::ARR, "addresses", "",
|
{RPCResult::Type::ARR, "addresses", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "address", "bitcoin address"},
|
{RPCResult::Type::STR, "address", "litecoin address"},
|
||||||
}},
|
}},
|
||||||
{RPCResult::Type::STR, "p2sh", "address of P2SH script wrapping this redeem script (not returned if the script is already a P2SH)"},
|
{RPCResult::Type::STR, "p2sh", "address of P2SH script wrapping this redeem script (not returned if the script is already a P2SH)"},
|
||||||
{RPCResult::Type::OBJ, "segwit", "Result of a witness script public key wrapping this redeem script (not returned if the script is a P2SH or witness)",
|
{RPCResult::Type::OBJ, "segwit", "Result of a witness script public key wrapping this redeem script (not returned if the script is a P2SH or witness)",
|
||||||
@ -991,7 +991,7 @@ static RPCHelpMan testmempoolaccept()
|
|||||||
static RPCHelpMan decodepsbt()
|
static RPCHelpMan decodepsbt()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"decodepsbt",
|
return RPCHelpMan{"decodepsbt",
|
||||||
"\nReturn a JSON object representing the serialized, base64-encoded partially signed Bitcoin transaction.\n",
|
"\nReturn a JSON object representing the serialized, base64-encoded partially signed Litecoin transaction.\n",
|
||||||
{
|
{
|
||||||
{"psbt", RPCArg::Type::STR, RPCArg::Optional::NO, "The PSBT base64 string"},
|
{"psbt", RPCArg::Type::STR, RPCArg::Optional::NO, "The PSBT base64 string"},
|
||||||
},
|
},
|
||||||
@ -1022,7 +1022,7 @@ static RPCHelpMan decodepsbt()
|
|||||||
{RPCResult::Type::STR, "asm", "The asm"},
|
{RPCResult::Type::STR, "asm", "The asm"},
|
||||||
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
{RPCResult::Type::STR_HEX, "hex", "The hex"},
|
||||||
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
{RPCResult::Type::STR, "type", "The type, eg 'pubkeyhash'"},
|
||||||
{RPCResult::Type::STR, "address"," Bitcoin address if there is one"},
|
{RPCResult::Type::STR, "address"," Litecoin address if there is one"},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
{RPCResult::Type::OBJ_DYN, "partial_signatures", /* optional */ true, "",
|
{RPCResult::Type::OBJ_DYN, "partial_signatures", /* optional */ true, "",
|
||||||
@ -1302,7 +1302,7 @@ static RPCHelpMan decodepsbt()
|
|||||||
static RPCHelpMan combinepsbt()
|
static RPCHelpMan combinepsbt()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"combinepsbt",
|
return RPCHelpMan{"combinepsbt",
|
||||||
"\nCombine multiple partially signed Bitcoin transactions into one transaction.\n"
|
"\nCombine multiple partially signed Litecoin transactions into one transaction.\n"
|
||||||
"Implements the Combiner role.\n",
|
"Implements the Combiner role.\n",
|
||||||
{
|
{
|
||||||
{"txs", RPCArg::Type::ARR, RPCArg::Optional::NO, "The base64 strings of partially signed transactions",
|
{"txs", RPCArg::Type::ARR, RPCArg::Optional::NO, "The base64 strings of partially signed transactions",
|
||||||
@ -1432,7 +1432,7 @@ static RPCHelpMan createpsbt()
|
|||||||
{
|
{
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the bitcoin address, the value (float or string) is the amount in " + CURRENCY_UNIT},
|
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the litecoin address, the value (float or string) is the amount in " + CURRENCY_UNIT},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
# Unit tests
|
# Unit tests
|
||||||
|
|
||||||
The sources in this directory are unit test cases. Boost includes a
|
The sources in this directory are unit test cases. Boost includes a
|
||||||
unit testing framework, and since Bitcoin Core already uses Boost, it makes
|
unit testing framework, and since Litecoin Core already uses Boost, it makes
|
||||||
sense to simply use this framework rather than require developers to
|
sense to simply use this framework rather than require developers to
|
||||||
configure some other framework (we want as few impediments to creating
|
configure some other framework (we want as few impediments to creating
|
||||||
unit tests as possible).
|
unit tests as possible).
|
||||||
|
|
||||||
The build system is set up to compile an executable called `test_bitcoin`
|
The build system is set up to compile an executable called `test_litecoin`
|
||||||
that runs all of the unit tests. The main source file for the test library is found in
|
that runs all of the unit tests. The main source file for the test library is found in
|
||||||
`util/setup_common.cpp`.
|
`util/setup_common.cpp`.
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ and tests weren't explicitly disabled.
|
|||||||
|
|
||||||
After configuring, they can be run with `make check`.
|
After configuring, they can be run with `make check`.
|
||||||
|
|
||||||
To run the unit tests manually, launch `src/test/test_bitcoin`. To recompile
|
To run the unit tests manually, launch `src/test/test_litecoin`. To recompile
|
||||||
after a test file was modified, run `make` and then run the test again. If you
|
after a test file was modified, run `make` and then run the test again. If you
|
||||||
modify a non-test file, use `make -C src/test` to recompile only what's needed
|
modify a non-test file, use `make -C src/test` to recompile only what's needed
|
||||||
to run the unit tests.
|
to run the unit tests.
|
||||||
@ -26,17 +26,17 @@ To add more unit tests, add `BOOST_AUTO_TEST_CASE` functions to the existing
|
|||||||
.cpp files in the `test/` directory or add new .cpp files that
|
.cpp files in the `test/` directory or add new .cpp files that
|
||||||
implement new `BOOST_AUTO_TEST_SUITE` sections.
|
implement new `BOOST_AUTO_TEST_SUITE` sections.
|
||||||
|
|
||||||
To run the GUI unit tests manually, launch `src/qt/test/test_bitcoin-qt`
|
To run the GUI unit tests manually, launch `src/qt/test/test_litecoin-qt`
|
||||||
|
|
||||||
To add more GUI unit tests, add them to the `src/qt/test/` directory and
|
To add more GUI unit tests, add them to the `src/qt/test/` directory and
|
||||||
the `src/qt/test/test_main.cpp` file.
|
the `src/qt/test/test_main.cpp` file.
|
||||||
|
|
||||||
### Running individual tests
|
### Running individual tests
|
||||||
|
|
||||||
`test_bitcoin` has some built-in command-line arguments; for
|
`test_litecoin` has some built-in command-line arguments; for
|
||||||
example, to run just the `getarg_tests` verbosely:
|
example, to run just the `getarg_tests` verbosely:
|
||||||
|
|
||||||
test_bitcoin --log_level=all --run_test=getarg_tests -- DEBUG_LOG_OUT
|
test_litecoin --log_level=all --run_test=getarg_tests -- DEBUG_LOG_OUT
|
||||||
|
|
||||||
`log_level` controls the verbosity of the test framework, which logs when a
|
`log_level` controls the verbosity of the test framework, which logs when a
|
||||||
test case is entered, for example. The `DEBUG_LOG_OUT` after the two dashes
|
test case is entered, for example. The `DEBUG_LOG_OUT` after the two dashes
|
||||||
@ -45,9 +45,9 @@ redirects the debug log, which would normally go to a file in the test datadir
|
|||||||
|
|
||||||
... or to run just the doubledash test:
|
... or to run just the doubledash test:
|
||||||
|
|
||||||
test_bitcoin --run_test=getarg_tests/doubledash
|
test_litecoin --run_test=getarg_tests/doubledash
|
||||||
|
|
||||||
Run `test_bitcoin --help` for the full list.
|
Run `test_litecoin --help` for the full list.
|
||||||
|
|
||||||
### Adding test cases
|
### Adding test cases
|
||||||
|
|
||||||
@ -68,9 +68,9 @@ on failure. For running individual tests verbosely, refer to the section
|
|||||||
To write to logs from unit tests you need to use specific message methods
|
To write to logs from unit tests you need to use specific message methods
|
||||||
provided by Boost. The simplest is `BOOST_TEST_MESSAGE`.
|
provided by Boost. The simplest is `BOOST_TEST_MESSAGE`.
|
||||||
|
|
||||||
For debugging you can launch the `test_bitcoin` executable with `gdb`or `lldb` and
|
For debugging you can launch the `test_litecoin` executable with `gdb`or `lldb` and
|
||||||
start debugging, just like you would with any other program:
|
start debugging, just like you would with any other program:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gdb src/test/test_bitcoin
|
gdb src/test/test_litecoin
|
||||||
```
|
```
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
Description
|
Description
|
||||||
------------
|
------------
|
||||||
|
|
||||||
This directory contains data-driven tests for various aspects of Bitcoin.
|
This directory contains data-driven tests for various aspects of Litecoin.
|
||||||
|
|
||||||
License
|
License
|
||||||
--------
|
--------
|
||||||
|
|||||||
@ -31,7 +31,7 @@ void LocalTestingSetup :: ResetArgs(const std::string& strArg)
|
|||||||
boost::split(vecArg, strArg, IsSpace, boost::token_compress_on);
|
boost::split(vecArg, strArg, IsSpace, boost::token_compress_on);
|
||||||
|
|
||||||
// Insert dummy executable name:
|
// Insert dummy executable name:
|
||||||
vecArg.insert(vecArg.begin(), "testbitcoin");
|
vecArg.insert(vecArg.begin(), "testlitecoin");
|
||||||
|
|
||||||
// Convert to char*:
|
// Convert to char*:
|
||||||
std::vector<const char*> vecChar;
|
std::vector<const char*> vecChar;
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
// Application startup time (used for uptime calculation)
|
// Application startup time (used for uptime calculation)
|
||||||
const int64_t nStartupTime = GetTime();
|
const int64_t nStartupTime = GetTime();
|
||||||
|
|
||||||
const char * const BITCOIN_CONF_FILENAME = "bitcoin.conf";
|
const char * const BITCOIN_CONF_FILENAME = "litecoin.conf";
|
||||||
const char * const BITCOIN_SETTINGS_FILENAME = "settings.json";
|
const char * const BITCOIN_SETTINGS_FILENAME = "settings.json";
|
||||||
|
|
||||||
ArgsManager gArgs;
|
ArgsManager gArgs;
|
||||||
@ -631,7 +631,7 @@ static std::string FormatException(const std::exception* pex, const char* pszThr
|
|||||||
char pszModule[MAX_PATH] = "";
|
char pszModule[MAX_PATH] = "";
|
||||||
GetModuleFileNameA(nullptr, pszModule, sizeof(pszModule));
|
GetModuleFileNameA(nullptr, pszModule, sizeof(pszModule));
|
||||||
#else
|
#else
|
||||||
const char* pszModule = "bitcoin";
|
const char* pszModule = "litecoin";
|
||||||
#endif
|
#endif
|
||||||
if (pex)
|
if (pex)
|
||||||
return strprintf(
|
return strprintf(
|
||||||
@ -655,7 +655,7 @@ fs::path GetDefaultDataDir()
|
|||||||
// Unix-like: ~/.bitcoin
|
// Unix-like: ~/.bitcoin
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
// Windows
|
// Windows
|
||||||
return GetSpecialFolderPath(CSIDL_APPDATA) / "Bitcoin";
|
return GetSpecialFolderPath(CSIDL_APPDATA) / "Litecoin";
|
||||||
#else
|
#else
|
||||||
fs::path pathRet;
|
fs::path pathRet;
|
||||||
char* pszHome = getenv("HOME");
|
char* pszHome = getenv("HOME");
|
||||||
@ -665,10 +665,10 @@ fs::path GetDefaultDataDir()
|
|||||||
pathRet = fs::path(pszHome);
|
pathRet = fs::path(pszHome);
|
||||||
#ifdef MAC_OSX
|
#ifdef MAC_OSX
|
||||||
// macOS
|
// macOS
|
||||||
return pathRet / "Library/Application Support/Bitcoin";
|
return pathRet / "Library/Application Support/Litecoin";
|
||||||
#else
|
#else
|
||||||
// Unix-like
|
// Unix-like
|
||||||
return pathRet / ".bitcoin";
|
return pathRet / ".litecoin";
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,14 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
#include <boost/algorithm/string/replace.hpp>
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
#include <boost/thread.hpp>
|
||||||
|
|
||||||
|
#if defined(NDEBUG)
|
||||||
|
# error "Litecoin cannot be compiled without assertions."
|
||||||
|
#endif
|
||||||
|
>>>>>>> 5d6decbfe... Litecoin: Branding
|
||||||
|
|
||||||
#define MICRO 0.000001
|
#define MICRO 0.000001
|
||||||
#define MILLI 0.001
|
#define MILLI 0.001
|
||||||
|
|||||||
@ -233,7 +233,7 @@ RPCHelpMan importaddress()
|
|||||||
"as change, and not show up in many RPCs.\n"
|
"as change, and not show up in many RPCs.\n"
|
||||||
"Note: Use \"getwalletinfo\" to query the scanning progress.\n",
|
"Note: Use \"getwalletinfo\" to query the scanning progress.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The Bitcoin address (or hex-encoded script)"},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The Litecoin address (or hex-encoded script)"},
|
||||||
{"label", RPCArg::Type::STR, /* default */ "\"\"", "An optional label"},
|
{"label", RPCArg::Type::STR, /* default */ "\"\"", "An optional label"},
|
||||||
{"rescan", RPCArg::Type::BOOL, /* default */ "true", "Rescan the wallet for transactions"},
|
{"rescan", RPCArg::Type::BOOL, /* default */ "true", "Rescan the wallet for transactions"},
|
||||||
{"p2sh", RPCArg::Type::BOOL, /* default */ "false", "Add the P2SH version of the script as well"},
|
{"p2sh", RPCArg::Type::BOOL, /* default */ "false", "Add the P2SH version of the script as well"},
|
||||||
@ -306,7 +306,7 @@ RPCHelpMan importaddress()
|
|||||||
|
|
||||||
pwallet->ImportScriptPubKeys(strLabel, scripts, false /* have_solving_data */, true /* apply_label */, 1 /* timestamp */);
|
pwallet->ImportScriptPubKeys(strLabel, scripts, false /* have_solving_data */, true /* apply_label */, 1 /* timestamp */);
|
||||||
} else {
|
} else {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address or script");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Litecoin address or script");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fRescan)
|
if (fRescan)
|
||||||
@ -391,9 +391,9 @@ RPCHelpMan removeprunedfunds()
|
|||||||
},
|
},
|
||||||
RPCResult{RPCResult::Type::NONE, "", ""},
|
RPCResult{RPCResult::Type::NONE, "", ""},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
HelpExampleCli("removeprunedfunds", "\"a8d0c0184dde994a09ec054286f1ce581bebf46446a512166eae7628734ea0a5\"") +
|
HelpExampleCli("removeprunedfunds", "\"c54357a1ff9f4e792198e75c01fc633acc6d093abd67ec1849596637c3457bf2\"") +
|
||||||
"\nAs a JSON-RPC call\n"
|
"\nAs a JSON-RPC call\n"
|
||||||
+ HelpExampleRpc("removeprunedfunds", "\"a8d0c0184dde994a09ec054286f1ce581bebf46446a512166eae7628734ea0a5\"")
|
+ HelpExampleRpc("removeprunedfunds", "\"c54357a1ff9f4e792198e75c01fc633acc6d093abd67ec1849596637c3457bf2\"")
|
||||||
},
|
},
|
||||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||||
{
|
{
|
||||||
@ -672,7 +672,7 @@ RPCHelpMan dumpprivkey()
|
|||||||
"\nReveals the private key corresponding to 'address'.\n"
|
"\nReveals the private key corresponding to 'address'.\n"
|
||||||
"Then the importprivkey can be used with this output\n",
|
"Then the importprivkey can be used with this output\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address for the private key"},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address for the private key"},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
RPCResult::Type::STR, "key", "The private key"
|
RPCResult::Type::STR, "key", "The private key"
|
||||||
@ -697,7 +697,7 @@ RPCHelpMan dumpprivkey()
|
|||||||
std::string strAddress = request.params[0].get_str();
|
std::string strAddress = request.params[0].get_str();
|
||||||
CTxDestination dest = DecodeDestination(strAddress);
|
CTxDestination dest = DecodeDestination(strAddress);
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Litecoin address");
|
||||||
}
|
}
|
||||||
auto keyid = GetKeyForDestination(spk_man, dest);
|
auto keyid = GetKeyForDestination(spk_man, dest);
|
||||||
if (keyid.IsNull()) {
|
if (keyid.IsNull()) {
|
||||||
@ -781,7 +781,7 @@ RPCHelpMan dumpwallet()
|
|||||||
std::sort(vKeyBirth.begin(), vKeyBirth.end());
|
std::sort(vKeyBirth.begin(), vKeyBirth.end());
|
||||||
|
|
||||||
// produce output
|
// produce output
|
||||||
file << strprintf("# Wallet dump created by Bitcoin %s\n", CLIENT_BUILD);
|
file << strprintf("# Wallet dump created by Litecoin %s\n", CLIENT_BUILD);
|
||||||
file << strprintf("# * Created on %s\n", FormatISO8601DateTime(GetTime()));
|
file << strprintf("# * Created on %s\n", FormatISO8601DateTime(GetTime()));
|
||||||
file << strprintf("# * Best block at time of backup was %i (%s),\n", wallet.GetLastBlockHeight(), wallet.GetLastBlockHash().ToString());
|
file << strprintf("# * Best block at time of backup was %i (%s),\n", wallet.GetLastBlockHeight(), wallet.GetLastBlockHash().ToString());
|
||||||
int64_t block_time = 0;
|
int64_t block_time = 0;
|
||||||
@ -1431,7 +1431,7 @@ RPCHelpMan importmulti()
|
|||||||
"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 bitcoind log for details) and could "
|
"caused by pruning or data corruption (see litecoind 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)));
|
||||||
@ -1726,7 +1726,7 @@ RPCHelpMan importdescriptors()
|
|||||||
"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 desc. As a result, transactions "
|
"could contain transactions pertaining to the desc. As a result, transactions "
|
||||||
"and coins using this desc may not appear in the wallet. This error could be "
|
"and coins using this desc may not appear in the wallet. This error could be "
|
||||||
"caused by pruning or data corruption (see bitcoind log for details) and could "
|
"caused by pruning or data corruption (see litecoind 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), scanned_time - TIMESTAMP_WINDOW - 1, TIMESTAMP_WINDOW)));
|
GetImportTimestamp(request, now), scanned_time - TIMESTAMP_WINDOW - 1, TIMESTAMP_WINDOW)));
|
||||||
|
|||||||
@ -233,7 +233,7 @@ static void SetFeeEstimateMode(const CWallet& wallet, CCoinControl& cc, const Un
|
|||||||
static RPCHelpMan getnewaddress()
|
static RPCHelpMan getnewaddress()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"getnewaddress",
|
return RPCHelpMan{"getnewaddress",
|
||||||
"\nReturns a new Bitcoin address for receiving payments.\n"
|
"\nReturns a new Litecoin address for receiving payments.\n"
|
||||||
"If 'label' is specified, it is added to the address book \n"
|
"If 'label' is specified, it is added to the address book \n"
|
||||||
"so payments received with the address will be associated with 'label'.\n",
|
"so payments received with the address will be associated with 'label'.\n",
|
||||||
{
|
{
|
||||||
@ -241,7 +241,7 @@ static RPCHelpMan getnewaddress()
|
|||||||
{"address_type", RPCArg::Type::STR, /* default */ "set by -addresstype", "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
{"address_type", RPCArg::Type::STR, /* default */ "set by -addresstype", "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
RPCResult::Type::STR, "address", "The new bitcoin address"
|
RPCResult::Type::STR, "address", "The new litecoin address"
|
||||||
},
|
},
|
||||||
RPCExamples{
|
RPCExamples{
|
||||||
HelpExampleCli("getnewaddress", "")
|
HelpExampleCli("getnewaddress", "")
|
||||||
@ -285,7 +285,7 @@ static RPCHelpMan getnewaddress()
|
|||||||
static RPCHelpMan getrawchangeaddress()
|
static RPCHelpMan getrawchangeaddress()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"getrawchangeaddress",
|
return RPCHelpMan{"getrawchangeaddress",
|
||||||
"\nReturns a new Bitcoin address, for receiving change.\n"
|
"\nReturns a new Litecoin address, for receiving change.\n"
|
||||||
"This is for use with raw transactions, NOT normal use.\n",
|
"This is for use with raw transactions, NOT normal use.\n",
|
||||||
{
|
{
|
||||||
{"address_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
{"address_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The address type to use. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
||||||
@ -332,7 +332,7 @@ static RPCHelpMan setlabel()
|
|||||||
return RPCHelpMan{"setlabel",
|
return RPCHelpMan{"setlabel",
|
||||||
"\nSets the label associated with the given address.\n",
|
"\nSets the label associated with the given address.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address to be associated with a label."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address to be associated with a label."},
|
||||||
{"label", RPCArg::Type::STR, RPCArg::Optional::NO, "The label to assign to the address."},
|
{"label", RPCArg::Type::STR, RPCArg::Optional::NO, "The label to assign to the address."},
|
||||||
},
|
},
|
||||||
RPCResult{RPCResult::Type::NONE, "", ""},
|
RPCResult{RPCResult::Type::NONE, "", ""},
|
||||||
@ -350,7 +350,7 @@ static RPCHelpMan setlabel()
|
|||||||
|
|
||||||
CTxDestination dest = DecodeDestination(request.params[0].get_str());
|
CTxDestination dest = DecodeDestination(request.params[0].get_str());
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Litecoin address");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string label = LabelFromValue(request.params[1]);
|
std::string label = LabelFromValue(request.params[1]);
|
||||||
@ -372,7 +372,7 @@ void ParseRecipients(const UniValue& address_amounts, const UniValue& subtract_f
|
|||||||
for (const std::string& address: address_amounts.getKeys()) {
|
for (const std::string& address: address_amounts.getKeys()) {
|
||||||
CTxDestination dest = DecodeDestination(address);
|
CTxDestination dest = DecodeDestination(address);
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Bitcoin address: ") + address);
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Litecoin address: ") + address);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (destinations.count(dest)) {
|
if (destinations.count(dest)) {
|
||||||
@ -435,7 +435,7 @@ static RPCHelpMan sendtoaddress()
|
|||||||
"\nSend an amount to a given address." +
|
"\nSend an amount to a given address." +
|
||||||
HELP_REQUIRING_PASSPHRASE,
|
HELP_REQUIRING_PASSPHRASE,
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address to send to."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address to send to."},
|
||||||
{"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The amount in " + CURRENCY_UNIT + " to send. eg 0.1"},
|
{"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The amount in " + CURRENCY_UNIT + " to send. eg 0.1"},
|
||||||
{"comment", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "A comment used to store what the transaction is for.\n"
|
{"comment", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "A comment used to store what the transaction is for.\n"
|
||||||
"This is not part of the transaction, just kept in your wallet."},
|
"This is not part of the transaction, just kept in your wallet."},
|
||||||
@ -546,7 +546,7 @@ static RPCHelpMan listaddressgroupings()
|
|||||||
{
|
{
|
||||||
{RPCResult::Type::ARR, "", "",
|
{RPCResult::Type::ARR, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address"},
|
{RPCResult::Type::STR, "address", "The litecoin address"},
|
||||||
{RPCResult::Type::STR_AMOUNT, "amount", "The amount in " + CURRENCY_UNIT},
|
{RPCResult::Type::STR_AMOUNT, "amount", "The amount in " + CURRENCY_UNIT},
|
||||||
{RPCResult::Type::STR, "label", /* optional */ true, "The label"},
|
{RPCResult::Type::STR, "label", /* optional */ true, "The label"},
|
||||||
}},
|
}},
|
||||||
@ -599,7 +599,7 @@ static RPCHelpMan signmessage()
|
|||||||
"\nSign a message with the private key of an address" +
|
"\nSign a message with the private key of an address" +
|
||||||
HELP_REQUIRING_PASSPHRASE,
|
HELP_REQUIRING_PASSPHRASE,
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address to use for the private key."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address to use for the private key."},
|
||||||
{"message", RPCArg::Type::STR, RPCArg::Optional::NO, "The message to create a signature of."},
|
{"message", RPCArg::Type::STR, RPCArg::Optional::NO, "The message to create a signature of."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
@ -663,7 +663,7 @@ static CAmount GetReceived(const CWallet& wallet, const UniValue& params, bool b
|
|||||||
// Get the address
|
// Get the address
|
||||||
CTxDestination dest = DecodeDestination(params[0].get_str());
|
CTxDestination dest = DecodeDestination(params[0].get_str());
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Litecoin address");
|
||||||
}
|
}
|
||||||
CScript script_pub_key = GetScriptForDestination(dest);
|
CScript script_pub_key = GetScriptForDestination(dest);
|
||||||
if (!wallet.IsMine(script_pub_key)) {
|
if (!wallet.IsMine(script_pub_key)) {
|
||||||
@ -702,7 +702,7 @@ static RPCHelpMan getreceivedbyaddress()
|
|||||||
return RPCHelpMan{"getreceivedbyaddress",
|
return RPCHelpMan{"getreceivedbyaddress",
|
||||||
"\nReturns the total amount received by the given address in transactions with at least minconf confirmations.\n",
|
"\nReturns the total amount received by the given address in transactions with at least minconf confirmations.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address for transactions."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address for transactions."},
|
||||||
{"minconf", RPCArg::Type::NUM, /* default */ "1", "Only include transactions confirmed at least this many times."},
|
{"minconf", RPCArg::Type::NUM, /* default */ "1", "Only include transactions confirmed at least this many times."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
@ -865,7 +865,7 @@ static RPCHelpMan sendmany()
|
|||||||
{"dummy", RPCArg::Type::STR, RPCArg::Optional::NO, "Must be set to \"\" for backwards compatibility.", "\"\""},
|
{"dummy", RPCArg::Type::STR, RPCArg::Optional::NO, "Must be set to \"\" for backwards compatibility.", "\"\""},
|
||||||
{"amounts", RPCArg::Type::OBJ, RPCArg::Optional::NO, "The addresses and amounts",
|
{"amounts", RPCArg::Type::OBJ, RPCArg::Optional::NO, "The addresses and amounts",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The bitcoin address is the key, the numeric amount (can be string) in " + CURRENCY_UNIT + " is the value"},
|
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The litecoin address is the key, the numeric amount (can be string) in " + CURRENCY_UNIT + " is the value"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"minconf", RPCArg::Type::NUM, RPCArg::Optional::OMITTED_NAMED_ARG, "Ignored dummy value"},
|
{"minconf", RPCArg::Type::NUM, RPCArg::Optional::OMITTED_NAMED_ARG, "Ignored dummy value"},
|
||||||
@ -955,15 +955,15 @@ static RPCHelpMan addmultisigaddress()
|
|||||||
{
|
{
|
||||||
return RPCHelpMan{"addmultisigaddress",
|
return RPCHelpMan{"addmultisigaddress",
|
||||||
"\nAdd an nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup.\n"
|
"\nAdd an nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup.\n"
|
||||||
"Each key is a Bitcoin address or hex-encoded public key.\n"
|
"Each key is a Litecoin address or hex-encoded public key.\n"
|
||||||
"This functionality is only intended for use with non-watchonly addresses.\n"
|
"This functionality is only intended for use with non-watchonly addresses.\n"
|
||||||
"See `importaddress` for watchonly p2sh address support.\n"
|
"See `importaddress` for watchonly p2sh address support.\n"
|
||||||
"If 'label' is specified, assign address to that label.\n",
|
"If 'label' is specified, assign address to that label.\n",
|
||||||
{
|
{
|
||||||
{"nrequired", RPCArg::Type::NUM, RPCArg::Optional::NO, "The number of required signatures out of the n keys or addresses."},
|
{"nrequired", RPCArg::Type::NUM, RPCArg::Optional::NO, "The number of required signatures out of the n keys or addresses."},
|
||||||
{"keys", RPCArg::Type::ARR, RPCArg::Optional::NO, "The bitcoin addresses or hex-encoded public keys",
|
{"keys", RPCArg::Type::ARR, RPCArg::Optional::NO, "The litecoin addresses or hex-encoded public keys",
|
||||||
{
|
{
|
||||||
{"key", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "bitcoin address or hex-encoded public key"},
|
{"key", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "litecoin address or hex-encoded public key"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"label", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "A label to assign the addresses to."},
|
{"label", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG, "A label to assign the addresses to."},
|
||||||
@ -1420,7 +1420,7 @@ static RPCHelpMan listtransactions()
|
|||||||
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
|
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
|
||||||
{
|
{
|
||||||
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address of the transaction."},
|
{RPCResult::Type::STR, "address", "The litecoin address of the transaction."},
|
||||||
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
||||||
"\"send\" Transactions sent.\n"
|
"\"send\" Transactions sent.\n"
|
||||||
"\"receive\" Non-coinbase transactions received.\n"
|
"\"receive\" Non-coinbase transactions received.\n"
|
||||||
@ -1535,7 +1535,7 @@ static RPCHelpMan listsinceblock()
|
|||||||
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
|
{RPCResult::Type::OBJ, "", "", Cat(Cat<std::vector<RPCResult>>(
|
||||||
{
|
{
|
||||||
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address of the transaction."},
|
{RPCResult::Type::STR, "address", "The litecoin address of the transaction."},
|
||||||
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
||||||
"\"send\" Transactions sent.\n"
|
"\"send\" Transactions sent.\n"
|
||||||
"\"receive\" Non-coinbase transactions received.\n"
|
"\"receive\" Non-coinbase transactions received.\n"
|
||||||
@ -1680,7 +1680,7 @@ static RPCHelpMan gettransaction()
|
|||||||
{RPCResult::Type::OBJ, "", "",
|
{RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
{RPCResult::Type::BOOL, "involvesWatchonly", "Only returns true if imported addresses were involved in transaction."},
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address involved in the transaction."},
|
{RPCResult::Type::STR, "address", "The litecoin address involved in the transaction."},
|
||||||
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
{RPCResult::Type::STR, "category", "The transaction category.\n"
|
||||||
"\"send\" Transactions sent.\n"
|
"\"send\" Transactions sent.\n"
|
||||||
"\"receive\" Non-coinbase transactions received.\n"
|
"\"receive\" Non-coinbase transactions received.\n"
|
||||||
@ -1895,7 +1895,7 @@ static RPCHelpMan walletpassphrase()
|
|||||||
{
|
{
|
||||||
return RPCHelpMan{"walletpassphrase",
|
return RPCHelpMan{"walletpassphrase",
|
||||||
"\nStores the wallet decryption key in memory for 'timeout' seconds.\n"
|
"\nStores the wallet decryption key in memory for 'timeout' seconds.\n"
|
||||||
"This is needed prior to performing transactions related to private keys such as sending bitcoins\n"
|
"This is needed prior to performing transactions related to private keys such as sending litecoins\n"
|
||||||
"\nNote:\n"
|
"\nNote:\n"
|
||||||
"Issuing the walletpassphrase command while the wallet is already unlocked will set a new unlock\n"
|
"Issuing the walletpassphrase command while the wallet is already unlocked will set a new unlock\n"
|
||||||
"time that overrides the old one.\n",
|
"time that overrides the old one.\n",
|
||||||
@ -2090,7 +2090,7 @@ static RPCHelpMan encryptwallet()
|
|||||||
RPCExamples{
|
RPCExamples{
|
||||||
"\nEncrypt your wallet\n"
|
"\nEncrypt your wallet\n"
|
||||||
+ HelpExampleCli("encryptwallet", "\"my pass phrase\"") +
|
+ HelpExampleCli("encryptwallet", "\"my pass phrase\"") +
|
||||||
"\nNow set the passphrase to use the wallet, such as for signing or sending bitcoin\n"
|
"\nNow set the passphrase to use the wallet, such as for signing or sending litecoin\n"
|
||||||
+ HelpExampleCli("walletpassphrase", "\"my pass phrase\"") +
|
+ HelpExampleCli("walletpassphrase", "\"my pass phrase\"") +
|
||||||
"\nNow we can do something like sign\n"
|
"\nNow we can do something like sign\n"
|
||||||
+ HelpExampleCli("signmessage", "\"address\" \"test message\"") +
|
+ HelpExampleCli("signmessage", "\"address\" \"test message\"") +
|
||||||
@ -2140,7 +2140,7 @@ static RPCHelpMan lockunspent()
|
|||||||
"\nUpdates list of temporarily unspendable outputs.\n"
|
"\nUpdates list of temporarily unspendable outputs.\n"
|
||||||
"Temporarily lock (unlock=false) or unlock (unlock=true) specified transaction outputs.\n"
|
"Temporarily lock (unlock=false) or unlock (unlock=true) specified transaction outputs.\n"
|
||||||
"If no transaction outputs are specified when unlocking then all current locked transaction outputs are unlocked.\n"
|
"If no transaction outputs are specified when unlocking then all current locked transaction outputs are unlocked.\n"
|
||||||
"A locked transaction output will not be chosen by automatic coin selection, when spending bitcoins.\n"
|
"A locked transaction output will not be chosen by automatic coin selection, when spending litecoins.\n"
|
||||||
"Manually selected coins are automatically unlocked.\n"
|
"Manually selected coins are automatically unlocked.\n"
|
||||||
"Locks are stored in memory only. Nodes start with zero locked outputs, and the locked output list\n"
|
"Locks are stored in memory only. Nodes start with zero locked outputs, and the locked output list\n"
|
||||||
"is always cleared (by virtue of process exit) when a node stops or fails.\n"
|
"is always cleared (by virtue of process exit) when a node stops or fails.\n"
|
||||||
@ -2590,7 +2590,7 @@ static RPCHelpMan loadwallet()
|
|||||||
{
|
{
|
||||||
return RPCHelpMan{"loadwallet",
|
return RPCHelpMan{"loadwallet",
|
||||||
"\nLoads a wallet from a wallet file or directory."
|
"\nLoads a wallet from a wallet file or directory."
|
||||||
"\nNote that all wallet command-line options used when starting bitcoind will be"
|
"\nNote that all wallet command-line options used when starting litecoind will be"
|
||||||
"\napplied to the new wallet (eg -rescan, etc).\n",
|
"\napplied to the new wallet (eg -rescan, etc).\n",
|
||||||
{
|
{
|
||||||
{"filename", RPCArg::Type::STR, RPCArg::Optional::NO, "The wallet directory or .dat file."},
|
{"filename", RPCArg::Type::STR, RPCArg::Optional::NO, "The wallet directory or .dat file."},
|
||||||
@ -2843,9 +2843,9 @@ static RPCHelpMan listunspent()
|
|||||||
{
|
{
|
||||||
{"minconf", RPCArg::Type::NUM, /* default */ "1", "The minimum confirmations to filter"},
|
{"minconf", RPCArg::Type::NUM, /* default */ "1", "The minimum confirmations to filter"},
|
||||||
{"maxconf", RPCArg::Type::NUM, /* default */ "9999999", "The maximum confirmations to filter"},
|
{"maxconf", RPCArg::Type::NUM, /* default */ "9999999", "The maximum confirmations to filter"},
|
||||||
{"addresses", RPCArg::Type::ARR, /* default */ "empty array", "The bitcoin addresses to filter",
|
{"addresses", RPCArg::Type::ARR, /* default */ "empty array", "The litecoin addresses to filter",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "bitcoin address"},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "litecoin address"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"include_unsafe", RPCArg::Type::BOOL, /* default */ "true", "Include outputs that are not safe to spend\n"
|
{"include_unsafe", RPCArg::Type::BOOL, /* default */ "true", "Include outputs that are not safe to spend\n"
|
||||||
@ -2866,7 +2866,7 @@ static RPCHelpMan listunspent()
|
|||||||
{
|
{
|
||||||
{RPCResult::Type::STR_HEX, "txid", "the transaction id"},
|
{RPCResult::Type::STR_HEX, "txid", "the transaction id"},
|
||||||
{RPCResult::Type::NUM, "vout", "the vout value"},
|
{RPCResult::Type::NUM, "vout", "the vout value"},
|
||||||
{RPCResult::Type::STR, "address", "the bitcoin address"},
|
{RPCResult::Type::STR, "address", "the litecoin address"},
|
||||||
{RPCResult::Type::STR, "label", "The associated label, or \"\" for the default label"},
|
{RPCResult::Type::STR, "label", "The associated label, or \"\" for the default label"},
|
||||||
{RPCResult::Type::STR, "scriptPubKey", "the script key"},
|
{RPCResult::Type::STR, "scriptPubKey", "the script key"},
|
||||||
{RPCResult::Type::STR_AMOUNT, "amount", "the transaction output amount in " + CURRENCY_UNIT},
|
{RPCResult::Type::STR_AMOUNT, "amount", "the transaction output amount in " + CURRENCY_UNIT},
|
||||||
@ -2916,7 +2916,7 @@ static RPCHelpMan listunspent()
|
|||||||
const UniValue& input = inputs[idx];
|
const UniValue& input = inputs[idx];
|
||||||
CTxDestination dest = DecodeDestination(input.get_str());
|
CTxDestination dest = DecodeDestination(input.get_str());
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Bitcoin address: ") + input.get_str());
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Litecoin address: ") + input.get_str());
|
||||||
}
|
}
|
||||||
if (!destinations.insert(dest).second) {
|
if (!destinations.insert(dest).second) {
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, std::string("Invalid parameter, duplicated address: ") + input.get_str());
|
throw JSONRPCError(RPC_INVALID_PARAMETER, std::string("Invalid parameter, duplicated address: ") + input.get_str());
|
||||||
@ -3109,7 +3109,7 @@ void FundTransaction(CWallet* const pwallet, CMutableTransaction& tx, CAmount& f
|
|||||||
CTxDestination dest = DecodeDestination(change_address_str);
|
CTxDestination dest = DecodeDestination(change_address_str);
|
||||||
|
|
||||||
if (!IsValidDestination(dest)) {
|
if (!IsValidDestination(dest)) {
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Change address must be a valid bitcoin address");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Change address must be a valid litecoin address");
|
||||||
}
|
}
|
||||||
|
|
||||||
coinControl.destChange = dest;
|
coinControl.destChange = dest;
|
||||||
@ -3207,7 +3207,7 @@ static RPCHelpMan fundrawtransaction()
|
|||||||
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "for backward compatibility: passing in a true instead of an object will result in {\"includeWatching\":true}",
|
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "for backward compatibility: passing in a true instead of an object will result in {\"includeWatching\":true}",
|
||||||
{
|
{
|
||||||
{"add_inputs", RPCArg::Type::BOOL, /* default */ "true", "For a transaction with existing inputs, automatically include more if they are not enough."},
|
{"add_inputs", RPCArg::Type::BOOL, /* default */ "true", "For a transaction with existing inputs, automatically include more if they are not enough."},
|
||||||
{"changeAddress", RPCArg::Type::STR, /* default */ "pool address", "The bitcoin address to receive the change"},
|
{"changeAddress", RPCArg::Type::STR, /* default */ "pool address", "The litecoin address to receive the change"},
|
||||||
{"changePosition", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
{"changePosition", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
||||||
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
||||||
{"includeWatching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only.\n"
|
{"includeWatching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only.\n"
|
||||||
@ -3218,7 +3218,7 @@ static RPCHelpMan fundrawtransaction()
|
|||||||
{"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
|
{"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
|
||||||
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The integers.\n"
|
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The integers.\n"
|
||||||
"The fee will be equally deducted from the amount of each specified output.\n"
|
"The fee will be equally deducted from the amount of each specified output.\n"
|
||||||
"Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
|
"Those recipients will receive less litecoins than you enter in their corresponding amount field.\n"
|
||||||
"If no outputs are specified here, the sender pays the fee.",
|
"If no outputs are specified here, the sender pays the fee.",
|
||||||
{
|
{
|
||||||
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
||||||
@ -3451,7 +3451,7 @@ static RPCHelpMan bumpfee_helper(std::string method_name)
|
|||||||
|
|
||||||
if (pwallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS) && !want_psbt) {
|
if (pwallet->IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS) && !want_psbt) {
|
||||||
if (!pwallet->chain().rpcEnableDeprecated("bumpfee")) {
|
if (!pwallet->chain().rpcEnableDeprecated("bumpfee")) {
|
||||||
throw JSONRPCError(RPC_METHOD_DEPRECATED, "Using bumpfee with wallets that have private keys disabled is deprecated. Use psbtbumpfee instead or restart bitcoind with -deprecatedrpc=bumpfee. This functionality will be removed in 0.22");
|
throw JSONRPCError(RPC_METHOD_DEPRECATED, "Using bumpfee with wallets that have private keys disabled is deprecated. Use psbtbumpfee instead or restart litecoind with -deprecatedrpc=bumpfee. This functionality will be removed in 0.22");
|
||||||
}
|
}
|
||||||
want_psbt = true;
|
want_psbt = true;
|
||||||
}
|
}
|
||||||
@ -3766,15 +3766,15 @@ static UniValue AddressBookDataToJSON(const CAddressBookData& data, const bool v
|
|||||||
RPCHelpMan getaddressinfo()
|
RPCHelpMan getaddressinfo()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"getaddressinfo",
|
return RPCHelpMan{"getaddressinfo",
|
||||||
"\nReturn information about the given bitcoin address.\n"
|
"\nReturn information about the given litecoin address.\n"
|
||||||
"Some of the information will only be present if the address is in the active wallet.\n",
|
"Some of the information will only be present if the address is in the active wallet.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The bitcoin address for which to get information."},
|
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The litecoin address for which to get information."},
|
||||||
},
|
},
|
||||||
RPCResult{
|
RPCResult{
|
||||||
RPCResult::Type::OBJ, "", "",
|
RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "address", "The bitcoin address validated."},
|
{RPCResult::Type::STR, "address", "The litecoin address validated."},
|
||||||
{RPCResult::Type::STR_HEX, "scriptPubKey", "The hex-encoded scriptPubKey generated by the address."},
|
{RPCResult::Type::STR_HEX, "scriptPubKey", "The hex-encoded scriptPubKey generated by the address."},
|
||||||
{RPCResult::Type::BOOL, "ismine", "If the address is yours."},
|
{RPCResult::Type::BOOL, "ismine", "If the address is yours."},
|
||||||
{RPCResult::Type::BOOL, "iswatchonly", "If the address is watchonly."},
|
{RPCResult::Type::BOOL, "iswatchonly", "If the address is watchonly."},
|
||||||
@ -4011,7 +4011,7 @@ static RPCHelpMan send()
|
|||||||
{
|
{
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the bitcoin address, the value (float or string) is the amount in " + CURRENCY_UNIT + ""},
|
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the litecoin address, the value (float or string) is the amount in " + CURRENCY_UNIT + ""},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
@ -4029,7 +4029,7 @@ static RPCHelpMan send()
|
|||||||
{
|
{
|
||||||
{"add_inputs", RPCArg::Type::BOOL, /* default */ "false", "If inputs are specified, automatically include more if they are not enough."},
|
{"add_inputs", RPCArg::Type::BOOL, /* default */ "false", "If inputs are specified, automatically include more if they are not enough."},
|
||||||
{"add_to_wallet", RPCArg::Type::BOOL, /* default */ "true", "When false, returns a serialized transaction which will not be added to the wallet or broadcast"},
|
{"add_to_wallet", RPCArg::Type::BOOL, /* default */ "true", "When false, returns a serialized transaction which will not be added to the wallet or broadcast"},
|
||||||
{"change_address", RPCArg::Type::STR_HEX, /* default */ "pool address", "The bitcoin address to receive the change"},
|
{"change_address", RPCArg::Type::STR_HEX, /* default */ "pool address", "The litecoin address to receive the change"},
|
||||||
{"change_position", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
{"change_position", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
||||||
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if change_address is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if change_address is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
||||||
{"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
|
{"conf_target", RPCArg::Type::NUM, /* default */ "wallet -txconfirmtarget", "Confirmation target in blocks"},
|
||||||
@ -4051,7 +4051,7 @@ static RPCHelpMan send()
|
|||||||
{"psbt", RPCArg::Type::BOOL, /* default */ "automatic", "Always return a PSBT, implies add_to_wallet=false."},
|
{"psbt", RPCArg::Type::BOOL, /* default */ "automatic", "Always return a PSBT, implies add_to_wallet=false."},
|
||||||
{"subtract_fee_from_outputs", RPCArg::Type::ARR, /* default */ "empty array", "Outputs to subtract the fee from, specified as integer indices.\n"
|
{"subtract_fee_from_outputs", RPCArg::Type::ARR, /* default */ "empty array", "Outputs to subtract the fee from, specified as integer indices.\n"
|
||||||
"The fee will be equally deducted from the amount of each specified output.\n"
|
"The fee will be equally deducted from the amount of each specified output.\n"
|
||||||
"Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
|
"Those recipients will receive less litecoins than you enter in their corresponding amount field.\n"
|
||||||
"If no outputs are specified here, the sender pays the fee.",
|
"If no outputs are specified here, the sender pays the fee.",
|
||||||
{
|
{
|
||||||
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
||||||
@ -4358,7 +4358,7 @@ static RPCHelpMan walletcreatefundedpsbt()
|
|||||||
{
|
{
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the bitcoin address, the value (float or string) is the amount in " + CURRENCY_UNIT + ""},
|
{"address", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "A key-value pair. The key (string) is the litecoin address, the value (float or string) is the amount in " + CURRENCY_UNIT + ""},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
{"", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED, "",
|
||||||
@ -4372,7 +4372,7 @@ static RPCHelpMan walletcreatefundedpsbt()
|
|||||||
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "",
|
{"options", RPCArg::Type::OBJ, RPCArg::Optional::OMITTED_NAMED_ARG, "",
|
||||||
{
|
{
|
||||||
{"add_inputs", RPCArg::Type::BOOL, /* default */ "false", "If inputs are specified, automatically include more if they are not enough."},
|
{"add_inputs", RPCArg::Type::BOOL, /* default */ "false", "If inputs are specified, automatically include more if they are not enough."},
|
||||||
{"changeAddress", RPCArg::Type::STR_HEX, /* default */ "pool address", "The bitcoin address to receive the change"},
|
{"changeAddress", RPCArg::Type::STR_HEX, /* default */ "pool address", "The litecoin address to receive the change"},
|
||||||
{"changePosition", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
{"changePosition", RPCArg::Type::NUM, /* default */ "random", "The index of the change output"},
|
||||||
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
{"change_type", RPCArg::Type::STR, /* default */ "set by -changetype", "The output type to use. Only valid if changeAddress is not specified. Options are \"legacy\", \"p2sh-segwit\", and \"bech32\"."},
|
||||||
{"includeWatching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only"},
|
{"includeWatching", RPCArg::Type::BOOL, /* default */ "true for watch-only wallets, otherwise false", "Also select inputs which are watch only"},
|
||||||
@ -4381,7 +4381,7 @@ static RPCHelpMan walletcreatefundedpsbt()
|
|||||||
{"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
|
{"feeRate", RPCArg::Type::AMOUNT, /* default */ "not set, fall back to wallet fee estimation", "Specify a fee rate in " + CURRENCY_UNIT + "/kvB."},
|
||||||
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The outputs to subtract the fee from.\n"
|
{"subtractFeeFromOutputs", RPCArg::Type::ARR, /* default */ "empty array", "The outputs to subtract the fee from.\n"
|
||||||
"The fee will be equally deducted from the amount of each specified output.\n"
|
"The fee will be equally deducted from the amount of each specified output.\n"
|
||||||
"Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
|
"Those recipients will receive less litecoins than you enter in their corresponding amount field.\n"
|
||||||
"If no outputs are specified here, the sender pays the fee.",
|
"If no outputs are specified here, the sender pays the fee.",
|
||||||
{
|
{
|
||||||
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
{"vout_index", RPCArg::Type::NUM, RPCArg::Optional::OMITTED, "The zero-based output index, before a change output is added."},
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
This directory contains integration tests that test bitcoind and its
|
This directory contains integration tests that test litecoind 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.
|
||||||
@ -6,10 +6,10 @@ etc.
|
|||||||
This directory contains the following sets of tests:
|
This directory contains the following sets of tests:
|
||||||
|
|
||||||
- [functional](/test/functional) which test the functionality of
|
- [functional](/test/functional) which test the functionality of
|
||||||
bitcoind and bitcoin-qt by interacting with them through the RPC and P2P
|
litecoind and litecoin-qt by interacting with them through the RPC and P2P
|
||||||
interfaces.
|
interfaces.
|
||||||
- [util](/test/util) which tests the bitcoin utilities, currently only
|
- [util](/test/util) which tests the litecoin utilities, currently only
|
||||||
bitcoin-tx.
|
litecoin-tx.
|
||||||
- [lint](/test/lint/) which perform various static analysis checks.
|
- [lint](/test/lint/) which perform various static analysis checks.
|
||||||
|
|
||||||
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
|
||||||
@ -17,7 +17,7 @@ tests and lint scripts can be run as explained in the sections below.
|
|||||||
|
|
||||||
# Running tests locally
|
# Running tests locally
|
||||||
|
|
||||||
Before tests can be run locally, Bitcoin Core must be built. See the [building instructions](/doc#building) for help.
|
Before tests can be run locally, Litecoin Core must be built. See the [building instructions](/doc#building) for help.
|
||||||
|
|
||||||
|
|
||||||
### Functional tests
|
### Functional tests
|
||||||
@ -94,29 +94,29 @@ options. Run `test/functional/test_runner.py -h` to see them all.
|
|||||||
|
|
||||||
##### Resource contention
|
##### Resource contention
|
||||||
|
|
||||||
The P2P and RPC ports used by the bitcoind nodes-under-test are chosen to make
|
The P2P and RPC ports used by the litecoind nodes-under-test are chosen to make
|
||||||
conflicts with other processes unlikely. However, if there is another bitcoind
|
conflicts with other processes unlikely. However, if there is another litecoind
|
||||||
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 bitcoind nodes), then there may be a port conflict which will
|
killed all its litecoind 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 bitcoind processes are running.
|
where no other litecoind 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
|
||||||
bitcoind process running when the tests are started.
|
litecoind process running when the tests are started.
|
||||||
|
|
||||||
If there are zombie bitcoind processes after test failure, you can kill them
|
If there are zombie litecoind 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
|
||||||
bitcoind processes running on the system, so should not be used if any non-test
|
litecoind processes running on the system, so should not be used if any non-test
|
||||||
bitcoind processes are being run.**
|
litecoind processes are being run.**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
killall bitcoind
|
killall litecoind
|
||||||
```
|
```
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pkill -9 bitcoind
|
pkill -9 litecoind
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -127,11 +127,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 bitcoind processes are stopped as above):
|
sure litecoind processes are stopped as above):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
rm -rf test/cache
|
rm -rf test/cache
|
||||||
killall bitcoind
|
killall litecoind
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Test logging
|
##### Test logging
|
||||||
@ -146,7 +146,7 @@ levels using the logger included in the test_framework, e.g.
|
|||||||
- 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 by [our CI (Continuous Integration)](/ci/README.md), no logs are output to the console. However, if a test
|
- when run by [our CI (Continuous Integration)](/ci/README.md), no logs are output to the console. However, if a test
|
||||||
fails, the `test_framework.log` and bitcoind `debug.log`s will all be dumped
|
fails, the `test_framework.log` and litecoind `debug.log`s will all be dumped
|
||||||
to the console to help troubleshooting.
|
to the console to help troubleshooting.
|
||||||
|
|
||||||
These log files can be located under the test data directory (which is always
|
These log files can be located under the test data directory (which is always
|
||||||
@ -161,7 +161,7 @@ e.g. `self.nodes[0]`.
|
|||||||
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 bitcoind `debug.log`s can be combined into a single
|
`test_framework.log` and litecoind `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:
|
||||||
|
|
||||||
@ -188,9 +188,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 bitcoind nodes-under-test.
|
call methods that interact with the litecoind nodes-under-test.
|
||||||
|
|
||||||
If further introspection of the bitcoind instances themselves becomes
|
If further introspection of the litecoind 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` (or `lldb` on macOS) to attach to the process and debug.
|
`gdb` (or `lldb` on macOS) to attach to the process and debug.
|
||||||
@ -213,13 +213,13 @@ test run:
|
|||||||
Use the path to find the pid file in the temp folder:
|
Use the path to find the pid file in the temp folder:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat /tmp/user/1000/testo9vsdjo3/node1/regtest/bitcoind.pid
|
cat /tmp/user/1000/testo9vsdjo3/node1/regtest/litecoind.pid
|
||||||
```
|
```
|
||||||
|
|
||||||
Then you can use the pid to start `gdb`:
|
Then you can use the pid to start `gdb`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gdb /home/example/bitcoind <pid>
|
gdb /home/example/litecoind <pid>
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: gdb attach step may require ptrace_scope to be modified, or `sudo` preceding the `gdb`.
|
Note: gdb attach step may require ptrace_scope to be modified, or `sudo` preceding the `gdb`.
|
||||||
|
|||||||
@ -94,12 +94,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 bitcoind(s) being tested in a callback-based event loop; the other
|
with the litecoind(s) being tested in a callback-based event loop; the other
|
||||||
implements the test logic.
|
implements the test logic.
|
||||||
|
|
||||||
- `P2PConnection` is the class used to connect to a bitcoind. `P2PInterface`
|
- `P2PConnection` is the class used to connect to a litecoind. `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 Bitcoin Core node application logic. For custom behaviour, subclass the
|
the Litecoin Core node application logic. For custom behaviour, subclass the
|
||||||
P2PInterface object and override the callback methods.
|
P2PInterface object and override the callback methods.
|
||||||
|
|
||||||
`P2PConnection`s can be used as such:
|
`P2PConnection`s can be used as such:
|
||||||
@ -144,7 +144,7 @@ Base class for functional tests.
|
|||||||
Generally useful functions.
|
Generally useful functions.
|
||||||
|
|
||||||
#### [p2p.py](test_framework/p2p.py)
|
#### [p2p.py](test_framework/p2p.py)
|
||||||
Test objects for interacting with a bitcoind node over the p2p interface.
|
Test objects for interacting with a litecoind node over the p2p interface.
|
||||||
|
|
||||||
#### [script.py](test_framework/script.py)
|
#### [script.py](test_framework/script.py)
|
||||||
Utilities for manipulating transaction scripts (originally from python-bitcoinlib)
|
Utilities for manipulating transaction scripts (originally from python-bitcoinlib)
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
# Copyright (c) 2018-2019 The Bitcoin Core developers
|
# Copyright (c) 2018-2019 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 bitcoin with -h works as expected."""
|
"""Verify that starting litecoin with -h works as expected."""
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal
|
from test_framework.util import assert_equal
|
||||||
@ -35,14 +35,14 @@ class HelpTest(BitcoinTestFramework):
|
|||||||
return out, err
|
return out, err
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.log.info("Start bitcoin with -h for help text")
|
self.log.info("Start litecoin with -h for help text")
|
||||||
self.nodes[0].start(extra_args=['-h'])
|
self.nodes[0].start(extra_args=['-h'])
|
||||||
# Node should exit immediately and output help to stdout.
|
# Node should exit immediately and output help to stdout.
|
||||||
output, _ = self.get_node_output(ret_code_expected=0)
|
output, _ = self.get_node_output(ret_code_expected=0)
|
||||||
assert b'Options' in output
|
assert b'Options' in output
|
||||||
self.log.info("Help text received: {} (...)".format(output[0:60]))
|
self.log.info("Help text received: {} (...)".format(output[0:60]))
|
||||||
|
|
||||||
self.log.info("Start bitcoin with -version for version information")
|
self.log.info("Start litecoin with -version for version information")
|
||||||
self.nodes[0].start(extra_args=['-version'])
|
self.nodes[0].start(extra_args=['-version'])
|
||||||
# Node should exit immediately and output version to stdout.
|
# Node should exit immediately and output version to stdout.
|
||||||
output, _ = self.get_node_output(ret_code_expected=0)
|
output, _ = self.get_node_output(ret_code_expected=0)
|
||||||
@ -50,7 +50,7 @@ class HelpTest(BitcoinTestFramework):
|
|||||||
self.log.info("Version text received: {} (...)".format(output[0:60]))
|
self.log.info("Version text received: {} (...)".format(output[0:60]))
|
||||||
|
|
||||||
# Test that arguments not in the help results in an error
|
# Test that arguments not in the help results in an error
|
||||||
self.log.info("Start bitcoind with -fakearg to make sure it does not start")
|
self.log.info("Start litecoind with -fakearg to make sure it does not start")
|
||||||
self.nodes[0].start(extra_args=['-fakearg'])
|
self.nodes[0].start(extra_args=['-fakearg'])
|
||||||
# Node should exit immediately and output an error to stderr
|
# Node should exit immediately and output an error to stderr
|
||||||
_, output = self.get_node_output(ret_code_expected=1)
|
_, output = self.get_node_output(ret_code_expected=1)
|
||||||
|
|||||||
@ -2,13 +2,13 @@
|
|||||||
# Copyright (c) 2015-2019 The Bitcoin Core developers
|
# Copyright (c) 2015-2019 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 bitcoind with different proxy configuration.
|
"""Test litecoind with different proxy configuration.
|
||||||
|
|
||||||
Test plan:
|
Test plan:
|
||||||
- Start bitcoind's with different proxy configurations
|
- Start litecoind'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 bitcoind side:
|
- Proxy configurations to test on litecoind side:
|
||||||
- `-proxy` (proxy everything)
|
- `-proxy` (proxy everything)
|
||||||
- `-onion` (proxy just onions)
|
- `-onion` (proxy just onions)
|
||||||
- `-proxyrandomize` Circuit randomization
|
- `-proxyrandomize` Circuit randomization
|
||||||
|
|||||||
@ -77,7 +77,7 @@ class RESTTest (BitcoinTestFramework):
|
|||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
self.url = urllib.parse.urlparse(self.nodes[0].url)
|
self.url = urllib.parse.urlparse(self.nodes[0].url)
|
||||||
self.log.info("Mine blocks and send Bitcoin to node 1")
|
self.log.info("Mine blocks and send Litecoin to node 1")
|
||||||
|
|
||||||
# Random address so node1's balance doesn't increase
|
# Random address so node1's balance doesn't increase
|
||||||
not_related_address = "2MxqoHEdNQTyYeX1mHcbrrpzgojbosTpCvJ"
|
not_related_address = "2MxqoHEdNQTyYeX1mHcbrrpzgojbosTpCvJ"
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
# Copyright (c) 2014-2019 The Bitcoin Core developers
|
# Copyright (c) 2014-2019 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 bitcoind with the -rpcbind and -rpcallowip options."""
|
"""Test running litecoind with the -rpcbind and -rpcallowip options."""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|||||||
@ -281,7 +281,7 @@ class P2PConnection(asyncio.Protocol):
|
|||||||
|
|
||||||
|
|
||||||
class P2PInterface(P2PConnection):
|
class P2PInterface(P2PConnection):
|
||||||
"""A high-level P2P interface class for communicating with a Bitcoin node.
|
"""A high-level P2P interface class for communicating with a Litecoin 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
|
||||||
|
|||||||
@ -609,14 +609,14 @@ class TestNodeCLI():
|
|||||||
"""Run bitcoin-cli command. Deserializes returned string as python object."""
|
"""Run bitcoin-cli command. Deserializes returned string as python object."""
|
||||||
pos_args = [arg_to_cli(arg) for arg in args]
|
pos_args = [arg_to_cli(arg) for arg in args]
|
||||||
named_args = [str(key) + "=" + arg_to_cli(value) for (key, value) in kwargs.items()]
|
named_args = [str(key) + "=" + arg_to_cli(value) for (key, value) in kwargs.items()]
|
||||||
assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same bitcoin-cli call"
|
assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same litecoin-cli call"
|
||||||
p_args = [self.binary, "-datadir=" + self.datadir] + self.options
|
p_args = [self.binary, "-datadir=" + self.datadir] + self.options
|
||||||
if named_args:
|
if named_args:
|
||||||
p_args += ["-named"]
|
p_args += ["-named"]
|
||||||
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 bitcoin-cli {}".format(p_args[2:]))
|
self.log.debug("Running litecoin-cli {}".format(p_args[2:]))
|
||||||
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()
|
||||||
|
|||||||
@ -39,10 +39,10 @@ def assert_fee_amount(fee, tx_size, fee_per_kB):
|
|||||||
"""Assert the fee was in range"""
|
"""Assert the fee was in range"""
|
||||||
target_fee = round(tx_size * fee_per_kB / 1000, 8)
|
target_fee = round(tx_size * fee_per_kB / 1000, 8)
|
||||||
if fee < target_fee:
|
if fee < target_fee:
|
||||||
raise AssertionError("Fee of %s BTC too low! (Should be %s BTC)" % (str(fee), str(target_fee)))
|
raise AssertionError("Fee of %s LTC too low! (Should be %s LTC)" % (str(fee), str(target_fee)))
|
||||||
# allow the wallet's estimation to be at most 2 bytes off
|
# allow the wallet's estimation to be at most 2 bytes off
|
||||||
if fee > (tx_size + 2) * fee_per_kB / 1000:
|
if fee > (tx_size + 2) * fee_per_kB / 1000:
|
||||||
raise AssertionError("Fee of %s BTC too high! (Should be %s BTC)" % (str(fee), str(target_fee)))
|
raise AssertionError("Fee of %s LTC too high! (Should be %s LTC)" % (str(fee), str(target_fee)))
|
||||||
|
|
||||||
|
|
||||||
def assert_equal(thing1, thing2, *args):
|
def assert_equal(thing1, thing2, *args):
|
||||||
@ -373,7 +373,7 @@ def get_datadir_path(dirname, n):
|
|||||||
|
|
||||||
|
|
||||||
def append_config(datadir, options):
|
def append_config(datadir, options):
|
||||||
with open(os.path.join(datadir, "bitcoin.conf"), 'a', encoding='utf8') as f:
|
with open(os.path.join(datadir, "litecoin.conf"), 'a', encoding='utf8') as f:
|
||||||
for option in options:
|
for option in options:
|
||||||
f.write(option + "\n")
|
f.write(option + "\n")
|
||||||
|
|
||||||
|
|||||||
@ -345,7 +345,7 @@ def main():
|
|||||||
logging.basicConfig(format='%(message)s', level=logging_level)
|
logging.basicConfig(format='%(message)s', level=logging_level)
|
||||||
|
|
||||||
# Create base test directory
|
# Create base test directory
|
||||||
tmpdir = "%s/test_runner_₿_🏃_%s" % (args.tmpdirprefix, datetime.datetime.now().strftime("%Y%m%d_%H%M%S"))
|
tmpdir = "%s/test_runner_Ł_🏃_%s" % (args.tmpdirprefix, datetime.datetime.now().strftime("%Y%m%d_%H%M%S"))
|
||||||
|
|
||||||
os.makedirs(tmpdir)
|
os.makedirs(tmpdir)
|
||||||
|
|
||||||
|
|||||||
@ -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 bitcoin utils.
|
"""Test framework for litecoin utils.
|
||||||
|
|
||||||
Runs automatically during `make check`.
|
Runs automatically during `make check`.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user