Initial Vexta Core v0.1.0 release
1
doc/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
Doxyfile
|
||||
2461
doc/Doxyfile.in
Normal file
141
doc/JSON-RPC-interface.md
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
# JSON-RPC Interface
|
||||
|
||||
The headless daemon `digibyted` has the JSON-RPC API enabled by default, the GUI
|
||||
`digibyte-qt` has it disabled by default. This can be changed with the `-server`
|
||||
option. In the GUI it is possible to execute RPC methods in the Debug Console
|
||||
Dialog.
|
||||
|
||||
## Versioning
|
||||
|
||||
The RPC interface might change from one major version of DigiByte Core to the
|
||||
next. This makes the RPC interface implicitly versioned on the major version.
|
||||
The version tuple can be retrieved by e.g. the `getnetworkinfo` RPC in
|
||||
`version`.
|
||||
|
||||
Usually deprecated features can be re-enabled during the grace-period of one
|
||||
major version via the `-deprecatedrpc=` command line option. The release notes
|
||||
of a new major release come with detailed instructions on what RPC features
|
||||
were deprecated and how to re-enable them temporarily.
|
||||
|
||||
## Security
|
||||
|
||||
The RPC interface allows other programs to control DigiByte Core,
|
||||
including the ability to spend funds from your wallets, affect consensus
|
||||
verification, read private data, and otherwise perform operations that
|
||||
can cause loss of money, data, or privacy. This section suggests how
|
||||
you should use and configure DigiByte Core to reduce the risk that its
|
||||
RPC interface will be abused.
|
||||
|
||||
- **Securing the executable:** Anyone with physical or remote access to
|
||||
the computer, container, or virtual machine running DigiByte Core can
|
||||
compromise either the whole program or just the RPC interface. This
|
||||
includes being able to record any passphrases you enter for unlocking
|
||||
your encrypted wallets or changing settings so that your DigiByte Core
|
||||
program tells you that certain transactions have multiple
|
||||
confirmations even when they aren't part of the best block chain. For
|
||||
this reason, you should not use DigiByte Core for security sensitive
|
||||
operations on systems you do not exclusively control, such as shared
|
||||
computers or virtual private servers.
|
||||
|
||||
- **Securing local network access:** By default, the RPC interface can
|
||||
only be accessed by a client running on the same computer and only
|
||||
after the client provides a valid authentication credential (username
|
||||
and passphrase). Any program on your computer with access to the file
|
||||
system and local network can obtain this level of access.
|
||||
Additionally, other programs on your computer can attempt to provide
|
||||
an RPC interface on the same port as used by DigiByte Core in order to
|
||||
trick you into revealing your authentication credentials. For this
|
||||
reason, it is important to only use DigiByte Core for
|
||||
security-sensitive operations on a computer whose other programs you
|
||||
trust.
|
||||
|
||||
- **Securing remote network access:** You may optionally allow other
|
||||
computers to remotely control DigiByte Core by setting the `rpcallowip`
|
||||
and `rpcbind` configuration parameters. These settings are only meant
|
||||
for enabling connections over secure private networks or connections
|
||||
that have been otherwise secured (e.g. using a VPN or port forwarding
|
||||
with SSH or stunnel). **Do not enable RPC connections over the public
|
||||
Internet.** Although DigiByte Core's RPC interface does use
|
||||
authentication, it does not use encryption, so your login credentials
|
||||
are sent as clear text that can be read by anyone on your network
|
||||
path. Additionally, the RPC interface has not been hardened to
|
||||
withstand arbitrary Internet traffic, so changing the above settings
|
||||
to expose it to the Internet (even using something like a Tor onion
|
||||
service) could expose you to unconsidered vulnerabilities. See
|
||||
`digibyted -help` for more information about these settings and other
|
||||
settings described in this document.
|
||||
|
||||
Related, if you use DigiByte Core inside a Docker container, you may
|
||||
need to expose the RPC port to the host system. The default way to
|
||||
do this in Docker also exposes the port to the public Internet.
|
||||
Instead, expose it only on the host system's localhost, for example:
|
||||
`-p 127.0.0.1:8332:8332`
|
||||
|
||||
- **Secure authentication:** By default, DigiByte Core generates unique
|
||||
login credentials each time it restarts and puts them into a file
|
||||
readable only by the user that started DigiByte Core, allowing any of
|
||||
that user's RPC clients with read access to the file to login
|
||||
automatically. The file is `.cookie` in the DigiByte Core
|
||||
configuration directory, and using these credentials is the preferred
|
||||
RPC authentication method. If you need to generate static login
|
||||
credentials for your programs, you can use the script in the
|
||||
`share/rpcauth` directory in the DigiByte Core source tree. As a final
|
||||
fallback, you can directly use manually-chosen `rpcuser` and
|
||||
`rpcpassword` configuration parameters---but you must ensure that you
|
||||
choose a strong and unique passphrase (and still don't use insecure
|
||||
networks, as mentioned above).
|
||||
|
||||
- **Secure string handling:** The RPC interface does not guarantee any
|
||||
escaping of data beyond what's necessary to encode it as JSON,
|
||||
although it does usually provide serialized data using a hex
|
||||
representation of the bytes. If you use RPC data in your programs or
|
||||
provide its data to other programs, you must ensure any problem strings
|
||||
are properly escaped. For example, the `createwallet` RPC accepts
|
||||
arguments such as `wallet_name` which is a string and could be used
|
||||
for a path traversal attack without application level checks. Multiple
|
||||
websites have been manipulated because they displayed decoded hex strings
|
||||
that included HTML `<script>` tags. For this reason, and others, it is
|
||||
recommended to display all serialized data in hex form only.
|
||||
|
||||
## RPC consistency guarantees
|
||||
|
||||
State that can be queried via RPCs is guaranteed to be at least up-to-date with
|
||||
the chain state immediately prior to the call's execution. However, the state
|
||||
returned by RPCs that reflect the mempool may not be up-to-date with the
|
||||
current mempool state.
|
||||
|
||||
### Transaction Pool
|
||||
|
||||
The mempool state returned via an RPC is consistent with itself and with the
|
||||
chain state at the time of the call. Thus, the mempool state only encompasses
|
||||
transactions that are considered mine-able by the node at the time of the RPC.
|
||||
|
||||
The mempool state returned via an RPC reflects all effects of mempool and chain
|
||||
state related RPCs that returned prior to this call.
|
||||
|
||||
### Wallet
|
||||
|
||||
The wallet state returned via an RPC is consistent with itself and with the
|
||||
chain state at the time of the call.
|
||||
|
||||
Wallet RPCs will return the latest chain state consistent with prior non-wallet
|
||||
RPCs. The effects of all blocks (and transactions in blocks) at the time of the
|
||||
call is reflected in the state of all wallet transactions. For example, if a
|
||||
block contains transactions that conflicted with mempool transactions, the
|
||||
wallet would reflect the removal of these mempool transactions in the state.
|
||||
|
||||
However, the wallet may not be up-to-date with the current state of the mempool
|
||||
or the state of the mempool by an RPC that returned before this RPC. For
|
||||
example, a wallet transaction that was BIP-125-replaced in the mempool prior to
|
||||
this RPC may not yet be reflected as such in this RPC response.
|
||||
|
||||
## Limitations
|
||||
|
||||
There is a known issue in the JSON-RPC interface that can cause a node to crash if
|
||||
too many http connections are being opened at the same time because the system runs
|
||||
out of available file descriptors. To prevent this from happening you might
|
||||
want to increase the number of maximum allowed file descriptors in your system
|
||||
and try to prevent opening too many connections to your JSON-RPC interface at the
|
||||
same time if this is under your control. It is hard to give general advice
|
||||
since this depends on your system but if you make several hundred requests at
|
||||
once you are definitely at risk of encountering this issue.
|
||||
90
doc/README.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
DigiByte Core
|
||||
=============
|
||||
|
||||
Setup
|
||||
---------------------
|
||||
DigiByte Core is the original DigiByte client and it builds the backbone of the network. It downloads and, by default, stores the entire history of DigiByte 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.
|
||||
|
||||
To download DigiByte Core, visit [digibyte.org](https://digibyte.org/en/download/).
|
||||
|
||||
Running
|
||||
---------------------
|
||||
The following are some helpful notes on how to run DigiByte Core on your native platform.
|
||||
|
||||
### Unix
|
||||
|
||||
Unpack the files into a directory and run:
|
||||
|
||||
- `bin/digibyte-qt` (GUI) or
|
||||
- `bin/digibyted` (headless)
|
||||
|
||||
### Windows
|
||||
|
||||
Unpack the files into a directory, and then run digibyte-qt.exe.
|
||||
|
||||
### macOS
|
||||
|
||||
Drag DigiByte Core to your applications folder, and then run DigiByte Core.
|
||||
|
||||
### Need Help?
|
||||
|
||||
* See the documentation at the [DigiByte Wiki](https://dgbwiki.com/)
|
||||
for help and more information.
|
||||
* Ask for help on [DigiByte-Core](https://gitter.im/DigiByte-Core) Gitter.
|
||||
* Ask for help on the [DigiByte Official Discussion](https://t.me/DigiByteCoin) Telegram channels.
|
||||
* Ask for help on #digibyte on Libera Chat. If you don't have an IRC client, you can use [web.libera.chat](https://web.libera.chat/#digibyte).
|
||||
|
||||
|
||||
Building
|
||||
---------------------
|
||||
The following are developer notes on how to build DigiByte Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.
|
||||
|
||||
- [Dependencies](dependencies.md)
|
||||
- [macOS Build Notes](build-osx.md)
|
||||
- [Unix Build Notes](build-unix.md)
|
||||
- [Windows Build Notes](build-windows.md)
|
||||
- [FreeBSD Build Notes](build-freebsd.md)
|
||||
- [OpenBSD Build Notes](build-openbsd.md)
|
||||
- [NetBSD Build Notes](build-netbsd.md)
|
||||
- [Android Build Notes](build-android.md)
|
||||
- [Gitian Building Guide (External Link)](https://github.com/digibyte-core/docs/blob/master/gitian-building.md)
|
||||
|
||||
Development
|
||||
---------------------
|
||||
The DigiByte repo's [root README](/README.md) contains relevant information on the development process and automated testing.
|
||||
|
||||
- [Developer Notes](developer-notes.md)
|
||||
- [Productivity Notes](productivity.md)
|
||||
- [Release Notes](release-notes.md)
|
||||
- [Release Process](release-process.md)
|
||||
- [Source Code Documentation (External Link)](https://doxygen.digibyte.org/)
|
||||
- [Translation Process](translation_process.md)
|
||||
- [Translation Strings Policy](translation_strings_policy.md)
|
||||
- [JSON-RPC Interface](JSON-RPC-interface.md)
|
||||
- [Unauthenticated REST Interface](REST-interface.md)
|
||||
- [Shared Libraries](shared-libraries.md)
|
||||
- [BIPS](bips.md)
|
||||
- [Dnsseed Policy](dnsseed-policy.md)
|
||||
- [Benchmarking](benchmarking.md)
|
||||
|
||||
### Resources
|
||||
* Discuss on the [DigiByteTalk](https://digibytetalk.org/) forums, in the [Development & Technical Discussion board](https://digibytetalk.org/index.php?board=6.0).
|
||||
* Discuss project-specific development on #digibyte-core-dev on Libera Chat. If you don't have an IRC client, you can use [web.libera.chat](https://web.libera.chat/#digibyte-core-dev).
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
- [Assets Attribution](assets-attribution.md)
|
||||
- [vexta.conf Configuration File](vexta.conf.md)
|
||||
- [Files](files.md)
|
||||
- [Fuzz-testing](fuzzing.md)
|
||||
- [I2P Support](i2p.md)
|
||||
- [Init Scripts (systemd/upstart/openrc)](init.md)
|
||||
- [PSBT support](psbt.md)
|
||||
- [Reduce Memory](reduce-memory.md)
|
||||
- [Reduce Traffic](reduce-traffic.md)
|
||||
- [Tor Support](tor.md)
|
||||
- [ZMQ](zmq.md)
|
||||
|
||||
License
|
||||
---------------------
|
||||
Distributed under the [MIT software license](/COPYING).
|
||||
15
doc/README_doxygen.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
\mainpage notitle
|
||||
|
||||
\section intro_sec Introduction
|
||||
|
||||
This is the developer documentation of the reference client for an experimental new digital currency called DigiByte,
|
||||
which enables instant payments to anyone, anywhere in the world. DigiByte uses peer-to-peer technology to operate
|
||||
with no central authority: managing transactions and issuing money are carried out collectively by the network.
|
||||
|
||||
The software is a community-driven open source project, released under the MIT license.
|
||||
|
||||
See https://github.com/digibyte/digibyte and https://digibyte.org/ for further information about the project.
|
||||
|
||||
\section Navigation
|
||||
Use <a href="modules.html"><code>Modules</code></a>, <a href="namespaces.html"><code>Namespaces</code></a>, <a href="classes.html"><code>Classes</code></a>, or <a href="files.html"><code>Files</code></a> at the top of the page to start navigating the code.
|
||||
|
||||
97
doc/README_osx.md
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
Deterministic macOS DMG Notes.
|
||||
|
||||
Working macOS DMGs are created in Linux by combining a recent clang,
|
||||
the Apple binutils (ld, ar, etc) and DMG authoring tools.
|
||||
|
||||
Apple uses clang extensively for development and has upstreamed the necessary
|
||||
functionality so that a vanilla clang can take advantage. It supports the use
|
||||
of -F, -target, -mmacosx-version-min, and --sysroot, which are all necessary
|
||||
when building for macOS.
|
||||
|
||||
Apple's version of binutils (called cctools) contains lots of functionality
|
||||
missing in the FSF's binutils. In addition to extra linker options for
|
||||
frameworks and sysroots, several other tools are needed as well such as
|
||||
install_name_tool, lipo, and nmedit. These do not build under linux, so they
|
||||
have been patched to do so. The work here was used as a starting point:
|
||||
[mingwandroid/toolchain4](https://github.com/mingwandroid/toolchain4).
|
||||
|
||||
In order to build a working toolchain, the following source packages are needed
|
||||
from Apple: cctools, dyld, and ld64.
|
||||
|
||||
These tools inject timestamps by default, which produce non-deterministic
|
||||
binaries. The ZERO_AR_DATE environment variable is used to disable that.
|
||||
|
||||
This version of cctools has been patched to use the current version of clang's
|
||||
headers and its libLTO.so rather than those from llvmgcc, as it was
|
||||
originally done in toolchain4.
|
||||
|
||||
To complicate things further, all builds must target an Apple SDK. These SDKs
|
||||
are free to download, but not redistributable.
|
||||
To obtain it, register for a developer account, then download the [Xcode 7.3.1 dmg](https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg).
|
||||
|
||||
This file is several gigabytes in size, but only a single directory inside is
|
||||
needed:
|
||||
```
|
||||
Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
|
||||
```
|
||||
|
||||
Unfortunately, the usual linux tools (7zip, hpmount, loopback mount) are incapable of opening this file.
|
||||
To create a tarball suitable for Gitian input, there are two options:
|
||||
|
||||
Using macOS, you can mount the dmg, and then create it with:
|
||||
```
|
||||
$ hdiutil attach Xcode_7.3.1.dmg
|
||||
$ tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.11.sdk.tar.gz MacOSX10.11.sdk
|
||||
```
|
||||
|
||||
Alternatively, you can use 7zip and SleuthKit to extract the files one by one.
|
||||
The script contrib/macdeploy/extract-osx-sdk.sh automates this. First ensure
|
||||
the dmg file is in the current directory, and then run the script. You may wish
|
||||
to delete the intermediate 5.hfs file and MacOSX10.11.sdk (the directory) when
|
||||
you've confirmed the extraction succeeded.
|
||||
|
||||
```bash
|
||||
apt-get install p7zip-full sleuthkit
|
||||
contrib/macdeploy/extract-osx-sdk.sh
|
||||
rm -rf 5.hfs MacOSX10.11.sdk
|
||||
```
|
||||
|
||||
The Gitian descriptors build 2 sets of files: Linux tools, then Apple binaries
|
||||
which are created using these tools. The build process has been designed to
|
||||
avoid including the SDK's files in Gitian's outputs. All interim tarballs are
|
||||
fully deterministic and may be freely redistributed.
|
||||
|
||||
genisoimage is used to create the initial DMG. It is not deterministic as-is,
|
||||
so it has been patched. A system genisoimage will work fine, but it will not
|
||||
be deterministic because the file-order will change between invocations.
|
||||
The patch can be seen here: [theuni/osx-cross-depends](https://raw.githubusercontent.com/theuni/osx-cross-depends/master/patches/cdrtools/genisoimage.diff).
|
||||
No effort was made to fix this cleanly, so it likely leaks memory badly. But
|
||||
it's only used for a single invocation, so that's no real concern.
|
||||
|
||||
genisoimage cannot compress DMGs, so afterwards, the 'dmg' tool from the
|
||||
libdmg-hfsplus project is used to compress it. There are several bugs in this
|
||||
tool and its maintainer has seemingly abandoned the project. It has been forked
|
||||
and is available (with fixes) here: [theuni/libdmg-hfsplus](https://github.com/theuni/libdmg-hfsplus).
|
||||
|
||||
The 'dmg' tool has the ability to create DMGs from scratch as well, but this
|
||||
functionality is broken. Only the compression feature is currently used.
|
||||
Ideally, the creation could be fixed and genisoimage would no longer be necessary.
|
||||
|
||||
Background images and other features can be added to DMG files by inserting a
|
||||
.DS_Store before creation. This is generated by the script
|
||||
contrib/macdeploy/custom_dsstore.py.
|
||||
|
||||
As of OS X 10.9 Mavericks, using an Apple-blessed key to sign binaries is a
|
||||
requirement in order to satisfy the new Gatekeeper requirements. Because this
|
||||
private key cannot be shared, we'll have to be a bit creative in order for the
|
||||
build process to remain somewhat deterministic. Here's how it works:
|
||||
|
||||
- Builders use Gitian to create an unsigned release. This outputs an unsigned
|
||||
dmg which users may choose to bless and run. It also outputs an unsigned app
|
||||
structure in the form of a tarball, which also contains all of the tools
|
||||
that have been previously (deterministically) built in order to create a
|
||||
final dmg.
|
||||
- The Apple keyholder uses this unsigned app to create a detached signature,
|
||||
using the script that is also included there. Detached signatures are available from this [repository](https://github.com/digibyte-core/digibyte-detached-sigs).
|
||||
- Builders feed the unsigned app + detached signature back into Gitian. It
|
||||
uses the pre-built tools to recombine the pieces into a deterministic dmg.
|
||||
24
doc/README_windows.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
=======
|
||||
DigiByte Core
|
||||
=============
|
||||
|
||||
Intro
|
||||
-----
|
||||
DigiByte is a free open source peer-to-peer electronic cash system that is
|
||||
completely decentralized, without the need for a central server or trusted
|
||||
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.
|
||||
|
||||
|
||||
Setup
|
||||
-----
|
||||
Unpack the files into a directory and run digibyte-qt.exe.
|
||||
|
||||
DigiByte Core is the original DigiByte client and it builds the backbone of the network.
|
||||
However, it downloads and stores the entire history of DigiByte transactions;
|
||||
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.
|
||||
|
||||
See the digibyte wiki at:
|
||||
https://dgbwiki.com/
|
||||
for more help and information.
|
||||
120
doc/REST-interface.md
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
Unauthenticated REST Interface
|
||||
==============================
|
||||
|
||||
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,
|
||||
port 38332 for signet, and port 18443 for regtest.
|
||||
|
||||
REST Interface consistency guarantees
|
||||
-------------------------------------
|
||||
|
||||
The [same guarantees as for the RPC Interface](/doc/JSON-RPC-interface.md#rpc-consistency-guarantees)
|
||||
apply.
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
There is a known issue in the REST interface that can cause a node to crash if
|
||||
too many http connections are being opened at the same time because the system runs
|
||||
out of available file descriptors. To prevent this from happening you might
|
||||
want to increase the number of maximum allowed file descriptors in your system
|
||||
and try to prevent opening too many connections to your rest interface at the
|
||||
same time if this is under your control. It is hard to give general advice
|
||||
since this depends on your system but if you make several hundred requests at
|
||||
once you are definitely at risk of encountering this issue.
|
||||
|
||||
Supported API
|
||||
-------------
|
||||
|
||||
#### Transactions
|
||||
`GET /rest/tx/<TX-HASH>.<bin|hex|json>`
|
||||
|
||||
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
|
||||
|
||||
By default, this endpoint will only search the mempool.
|
||||
To query for a confirmed transaction, enable the transaction index via "txindex=1" command line / configuration option.
|
||||
|
||||
#### Blocks
|
||||
`GET /rest/block/<BLOCK-HASH>.<bin|hex|json>`
|
||||
`GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>`
|
||||
|
||||
Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats.
|
||||
Responds with 404 if the block doesn't exist.
|
||||
|
||||
The HTTP request and response are both handled entirely in-memory.
|
||||
|
||||
With the /notxdetails/ option JSON response will only contain the transaction hash instead of the complete transaction details. The option only affects the JSON response.
|
||||
|
||||
#### Blockheaders
|
||||
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
|
||||
|
||||
Given a block hash: returns <COUNT> amount of blockheaders in upward direction.
|
||||
Returns empty if the block doesn't exist or it isn't in the active chain.
|
||||
|
||||
#### Blockhash by height
|
||||
`GET /rest/blockhashbyheight/<HEIGHT>.<bin|hex|json>`
|
||||
|
||||
Given a height: returns hash of block in best-block-chain at height provided.
|
||||
|
||||
#### Chaininfos
|
||||
`GET /rest/chaininfo.json`
|
||||
|
||||
Returns various state info regarding block chain processing.
|
||||
Only supports JSON as output format.
|
||||
* chain : (string) current network name (main, test, signet, regtest)
|
||||
* blocks : (numeric) the current number of blocks processed in the server
|
||||
* headers : (numeric) the current number of headers we have validated
|
||||
* bestblockhash : (string) the hash of the currently best block
|
||||
* difficulty : (numeric) the current difficulty
|
||||
* mediantime : (numeric) the median time of the 11 blocks before the most recent block on the blockchain
|
||||
* verificationprogress : (numeric) estimate of verification progress [0..1]
|
||||
* chainwork : (string) total amount of work in active chain, in hexadecimal
|
||||
* pruned : (boolean) if the blocks are subject to pruning
|
||||
* pruneheight : (numeric) highest block available
|
||||
* softforks : (array) status of softforks in progress
|
||||
|
||||
#### Query UTXO set
|
||||
`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>`
|
||||
|
||||
The getutxo command allows querying of the UTXO set given a set of outpoints.
|
||||
See BIP64 for input and output serialisation:
|
||||
https://github.com/digibyte-core/bips/blob/master/bip-0064.mediawiki
|
||||
|
||||
Example:
|
||||
```
|
||||
$ curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
|
||||
{
|
||||
"chainHeight" : 325347,
|
||||
"chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
|
||||
"bitmap": "1",
|
||||
"utxos" : [
|
||||
{
|
||||
"height" : 2147483647,
|
||||
"value" : 8.8687,
|
||||
"scriptPubKey" : {
|
||||
"asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
|
||||
"type" : "pubkeyhash",
|
||||
"address" : "mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### Memory pool
|
||||
`GET /rest/mempool/info.json`
|
||||
|
||||
Returns various information about the TX mempool.
|
||||
Only supports JSON as output format.
|
||||
Refer to the `getmempoolinfo` RPC for documentation of the fields.
|
||||
|
||||
`GET /rest/mempool/contents.json`
|
||||
|
||||
Returns transactions in the TX mempool.
|
||||
Only supports JSON as output format.
|
||||
|
||||
Risks
|
||||
-------------
|
||||
Running a web browser on the same node with a REST enabled digibyted 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:8332/rest/tx/1234567890.json">` which might break the nodes privacy.
|
||||
1
doc/assets-attribution.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
The list of assets used in the digibyte source and their attribution can now be found in [contrib/debian/copyright](../contrib/debian/copyright).
|
||||
61
doc/benchmarking.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
Benchmarking
|
||||
============
|
||||
|
||||
DigiByte Core has an internal benchmarking framework, with benchmarks
|
||||
for cryptographic algorithms (e.g. SHA1, SHA256, SHA512, RIPEMD160, Poly1305, ChaCha20), rolling bloom filter, coins selection,
|
||||
thread queue, wallet balance.
|
||||
|
||||
Running
|
||||
---------------------
|
||||
|
||||
For benchmarking, you only need to compile `digibyte_bench`. The bench runner
|
||||
warns if you configure with `--enable-debug`, but consider if building without
|
||||
it will impact the benchmark(s) you are interested in by unlatching log printers
|
||||
and lock analysis.
|
||||
|
||||
make -C src digibyte_bench
|
||||
|
||||
After compiling digibyte-core, the benchmarks can be run with:
|
||||
|
||||
src/bench/bench_digibyte
|
||||
|
||||
The output will look similar to:
|
||||
```
|
||||
| ns/op | op/s | err% | total | benchmark
|
||||
|--------------------:|--------------------:|--------:|----------:|:----------
|
||||
| 57,927,463.00 | 17.26 | 3.6% | 0.66 | `AddrManAdd`
|
||||
| 677,816.00 | 1,475.33 | 4.9% | 0.01 | `AddrManGetAddr`
|
||||
|
||||
...
|
||||
|
||||
| ns/byte | byte/s | err% | total | benchmark
|
||||
|--------------------:|--------------------:|--------:|----------:|:----------
|
||||
| 127.32 | 7,854,302.69 | 0.3% | 0.00 | `Base58CheckEncode`
|
||||
| 31.95 | 31,303,226.99 | 0.2% | 0.00 | `Base58Decode`
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
Help
|
||||
---------------------
|
||||
|
||||
src/bench/bench_digibyte -?
|
||||
|
||||
To print the various options, like listing the benchmarks without running them
|
||||
or using a regex filter to only run certain benchmarks.
|
||||
|
||||
Notes
|
||||
---------------------
|
||||
More benchmarks are needed for, in no particular order:
|
||||
- Script Validation
|
||||
- Coins database
|
||||
- Memory pool
|
||||
- Cuckoo Cache
|
||||
- P2P throughput
|
||||
|
||||
Going Further
|
||||
--------------------
|
||||
|
||||
To monitor DigiByte Core performance more in depth (like reindex or IBD): https://github.com/chaincodelabs/digibyteperf
|
||||
|
||||
To generate Flame Graphs for DigiByte Core: https://github.com/eklitzke/digibyte/blob/flamegraphs/doc/flamegraphs.md
|
||||
59
doc/bips.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
BIPs that are implemented by DigiByte Core (up-to-date up to **v8.22**):
|
||||
|
||||
* [`BIP 9`](https://github.com/digibyte-core/bips/blob/master/bip-0009.mediawiki): The changes allowing multiple soft-forks to be deployed in parallel have been implemented since **v0.12.1** ([PR #7575](https://github.com/digibyte-core/digibyte/pull/7575))
|
||||
* [`BIP 11`](https://github.com/digibyte-core/bips/blob/master/bip-0011.mediawiki): Multisig outputs are standard since **v0.6.0** ([PR #669](https://github.com/digibyte-core/digibyte/pull/669)).
|
||||
* [`BIP 13`](https://github.com/digibyte-core/bips/blob/master/bip-0013.mediawiki): The address format for P2SH addresses has been implemented since **v0.6.0** ([PR #669](https://github.com/digibyte-core/digibyte/pull/669)).
|
||||
* [`BIP 14`](https://github.com/digibyte-core/bips/blob/master/bip-0014.mediawiki): The subversion string is being used as User Agent since **v0.6.0** ([PR #669](https://github.com/digibyte-core/digibyte/pull/669)).
|
||||
* [`BIP 16`](https://github.com/digibyte-core/bips/blob/master/bip-0016.mediawiki): The pay-to-script-hash evaluation rules have been implemented since **v0.6.0**, and took effect on *April 1st 2012* ([PR #748](https://github.com/digibyte-core/digibyte/pull/748)).
|
||||
* [`BIP 21`](https://github.com/digibyte-core/bips/blob/master/bip-0021.mediawiki): The URI format for DigiByte payments has been implemented since **v0.6.0** ([PR #176](https://github.com/digibyte-core/digibyte/pull/176)).
|
||||
* [`BIP 22`](https://github.com/digibyte-core/bips/blob/master/bip-0022.mediawiki): The 'getblocktemplate' (GBT) RPC protocol for mining has been implemented since **v0.7.0** ([PR #936](https://github.com/digibyte-core/digibyte/pull/936)).
|
||||
* [`BIP 23`](https://github.com/digibyte-core/bips/blob/master/bip-0023.mediawiki): Some extensions to GBT have been implemented since **v0.10.0rc1**, including longpolling and block proposals ([PR #1816](https://github.com/digibyte-core/digibyte/pull/1816)).
|
||||
* [`BIP 30`](https://github.com/digibyte-core/bips/blob/master/bip-0030.mediawiki): The evaluation rules to forbid creating new transactions with the same txid as previous not-fully-spent transactions were implemented since **v0.6.0**, and the rule took effect on *March 15th 2012* ([PR #915](https://github.com/digibyte-core/digibyte/pull/915)).
|
||||
* [`BIP 31`](https://github.com/digibyte-core/bips/blob/master/bip-0031.mediawiki): The 'pong' protocol message (and the protocol version bump to 60001) has been implemented since **v0.6.1** ([PR #1081](https://github.com/digibyte-core/digibyte/pull/1081)).
|
||||
* [`BIP 32`](https://github.com/digibyte-core/bips/blob/master/bip-0032.mediawiki): Hierarchical Deterministic Wallets has been implemented since **v0.13.0** ([PR #8035](https://github.com/digibyte-core/digibyte/pull/8035)).
|
||||
* [`BIP 34`](https://github.com/digibyte-core/bips/blob/master/bip-0034.mediawiki): The rule that requires blocks to contain their height (number) in the coinbase input, and the introduction of version 2 blocks has been implemented since **v0.7.0**. The rule took effect for version 2 blocks as of *block 224413* (March 5th 2013), and version 1 blocks are no longer allowed since *block 227931* (March 25th 2013) ([PR #1526](https://github.com/digibyte-core/digibyte/pull/1526)).
|
||||
* [`BIP 35`](https://github.com/digibyte-core/bips/blob/master/bip-0035.mediawiki): The 'mempool' protocol message (and the protocol version bump to 60002) has been implemented since **v0.7.0** ([PR #1641](https://github.com/digibyte-core/digibyte/pull/1641)). As of **v0.13.0**, this is only available for `NODE_BLOOM` (BIP 111) peers.
|
||||
* [`BIP 37`](https://github.com/digibyte-core/bips/blob/master/bip-0037.mediawiki): The bloom filtering for transaction relaying, partial Merkle trees for blocks, and the protocol version bump to 70001 (enabling low-bandwidth SPV clients) has been implemented since **v0.8.0** ([PR #1795](https://github.com/digibyte-core/digibyte/pull/1795)). Disabled by default since **v0.19.0**, can be enabled by the `-peerbloomfilters` option.
|
||||
* [`BIP 42`](https://github.com/digibyte-core/bips/blob/master/bip-0042.mediawiki): The bug that would have caused the subsidy schedule to resume after block 13440000 was fixed in **v0.9.2** ([PR #3842](https://github.com/digibyte-core/digibyte/pull/3842)).
|
||||
* [`BIP 43`](https://github.com/digibyte-core/bips/blob/master/bip-0043.mediawiki): The experimental descriptor wallets introduced in **v0.21.0** by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 43. ([PR #16528](https://github.com/digibyte-core/digibyte/pull/16528))
|
||||
* [`BIP 44`](https://github.com/digibyte-core/bips/blob/master/bip-0044.mediawiki): The experimental descriptor wallets introduced in **v0.21.0** by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 44. ([PR #16528](https://github.com/digibyte-core/digibyte/pull/16528))
|
||||
* [`BIP 49`](https://github.com/digibyte-core/bips/blob/master/bip-0049.mediawiki): The experimental descriptor wallets introduced in **v0.21.0** by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 49. ([PR #16528](https://github.com/digibyte-core/digibyte/pull/16528))
|
||||
* [`BIP 61`](https://github.com/digibyte-core/bips/blob/master/bip-0061.mediawiki): The 'reject' protocol message (and the protocol version bump to 70002) was added in **v0.9.0** ([PR #3185](https://github.com/digibyte-core/digibyte/pull/3185)). Starting **v0.17.0**, whether to send reject messages can be configured with the `-enablebip61` option, and support is deprecated (disabled by default) as of **v0.18.0**. Support was removed in **v0.20.0** ([PR #15437](https://github.com/digibyte-core/digibyte/pull/15437)).
|
||||
* [`BIP 65`](https://github.com/digibyte-core/bips/blob/master/bip-0065.mediawiki): The CHECKLOCKTIMEVERIFY softfork was merged in **v0.12.0** ([PR #6351](https://github.com/digibyte-core/digibyte/pull/6351)), and backported to **v0.11.2** and **v0.10.4**. Mempool-only CLTV was added in [PR #6124](https://github.com/digibyte-core/digibyte/pull/6124).
|
||||
* [`BIP 66`](https://github.com/digibyte-core/bips/blob/master/bip-0066.mediawiki): The strict DER rules and associated version 3 blocks have been implemented since **v0.10.0** ([PR #5713](https://github.com/digibyte-core/digibyte/pull/5713)).
|
||||
* [`BIP 68`](https://github.com/digibyte-core/bips/blob/master/bip-0068.mediawiki): Sequence locks have been implemented as of **v0.12.1** ([PR #7184](https://github.com/digibyte-core/digibyte/pull/7184)), and have been *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 70`](https://github.com/digibyte-core/bips/blob/master/bip-0070.mediawiki) [`71`](https://github.com/digibyte-core/bips/blob/master/bip-0071.mediawiki) [`72`](https://github.com/digibyte-core/bips/blob/master/bip-0072.mediawiki):
|
||||
Payment Protocol support has been available in DigiByte Core GUI since **v0.9.0** ([PR #5216](https://github.com/digibyte-core/digibyte/pull/5216)).
|
||||
Support can be optionally disabled at build time since **v0.18.0** ([PR 14451](https://github.com/digibyte-core/digibyte/pull/14451)),
|
||||
and it is disabled by default at build time since **v0.19.0** ([PR #15584](https://github.com/digibyte-core/digibyte/pull/15584)).
|
||||
It has been removed as of **v0.20.0** ([PR 17165](https://github.com/digibyte-core/digibyte/pull/17165)).
|
||||
* [`BIP 84`](https://github.com/digibyte-core/bips/blob/master/bip-0084.mediawiki): The experimental descriptor wallets introduced in **v0.21.0** by default use the Hierarchical Deterministic Wallet derivation proposed by BIP 84. ([PR #16528](https://github.com/digibyte-core/digibyte/pull/16528))
|
||||
* [`BIP 90`](https://github.com/digibyte-core/bips/blob/master/bip-0090.mediawiki): Trigger mechanism for activation of BIPs 34, 65, and 66 has been simplified to block height checks since **v0.14.0** ([PR #8391](https://github.com/digibyte-core/digibyte/pull/8391)).
|
||||
* [`BIP 111`](https://github.com/digibyte-core/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, and enforced for all peer versions as of **v0.13.0** ([PR #6579](https://github.com/digibyte-core/digibyte/pull/6579) and [PR #6641](https://github.com/digibyte-core/digibyte/pull/6641)).
|
||||
* [`BIP 112`](https://github.com/digibyte-core/bips/blob/master/bip-0112.mediawiki): The CHECKSEQUENCEVERIFY opcode has been implemented since **v0.12.1** ([PR #7524](https://github.com/digibyte-core/digibyte/pull/7524)), and has been *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 113`](https://github.com/digibyte-core/bips/blob/master/bip-0113.mediawiki): Median time past lock-time calculations have been implemented since **v0.12.1** ([PR #6566](https://github.com/digibyte-core/digibyte/pull/6566)), and has been *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 125`](https://github.com/digibyte-core/bips/blob/master/bip-0125.mediawiki): Opt-in full replace-by-fee signaling honoured in mempool and mining as of **v0.12.0** ([PR 6871](https://github.com/digibyte-core/digibyte/pull/6871)). Enabled by default in the wallet GUI as of **v0.18.1** ([PR #11605](https://github.com/digibyte-core/digibyte/pull/11605))
|
||||
* [`BIP 130`](https://github.com/digibyte-core/bips/blob/master/bip-0130.mediawiki): direct headers announcement is negotiated with peer versions `>=70012` as of **v0.12.0** ([PR 6494](https://github.com/digibyte-core/digibyte/pull/6494)).
|
||||
* [`BIP 133`](https://github.com/digibyte-core/bips/blob/master/bip-0133.mediawiki): feefilter messages are respected and sent for peer versions `>=70013` as of **v0.13.0** ([PR 7542](https://github.com/digibyte-core/digibyte/pull/7542)).
|
||||
* [`BIP 141`](https://github.com/digibyte-core/bips/blob/master/bip-0141.mediawiki): Segregated Witness (Consensus Layer) as of **v0.13.0** ([PR 8149](https://github.com/digibyte-core/digibyte/pull/8149)), defined for mainnet as of **v0.13.1** ([PR 8937](https://github.com/digibyte-core/digibyte/pull/8937)), and *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 143`](https://github.com/digibyte-core/bips/blob/master/bip-0143.mediawiki): Transaction Signature Verification for Version 0 Witness Program as of **v0.13.0** ([PR 8149](https://github.com/digibyte-core/digibyte/pull/8149)), defined for mainnet as of **v0.13.1** ([PR 8937](https://github.com/digibyte-core/digibyte/pull/8937)), and *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 144`](https://github.com/digibyte-core/bips/blob/master/bip-0144.mediawiki): Segregated Witness as of **0.13.0** ([PR 8149](https://github.com/digibyte-core/digibyte/pull/8149)).
|
||||
* [`BIP 145`](https://github.com/digibyte-core/bips/blob/master/bip-0145.mediawiki): getblocktemplate updates for Segregated Witness as of **v0.13.0** ([PR 8149](https://github.com/digibyte-core/digibyte/pull/8149)).
|
||||
* [`BIP 147`](https://github.com/digibyte-core/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/digibyte-core/digibyte/pull/8636) and [PR 8937](https://github.com/digibyte-core/digibyte/pull/8937)), *buried* since **v0.19.0** ([PR #16060](https://github.com/digibyte-core/digibyte/pull/16060)).
|
||||
* [`BIP 152`](https://github.com/digibyte-core/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/digibyte-core/digibyte/pull/8068)).
|
||||
* [`BIP 155`](https://github.com/digibyte-core/bips/blob/master/bip-0155.mediawiki): The 'addrv2' and 'sendaddrv2' messages which enable relay of Tor V3 addresses (and other networks) are supported as of **v0.21.0** ([PR 19954](https://github.com/digibyte-core/digibyte/pull/19954)).
|
||||
* [`BIP 158`](https://github.com/digibyte-core/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/digibyte-core/digibyte/pull/14121)).
|
||||
* [`BIP 159`](https://github.com/digibyte-core/bips/blob/master/bip-0159.mediawiki): The `NODE_NETWORK_LIMITED` service bit is signalled as of **v0.16.0** ([PR 11740](https://github.com/digibyte-core/digibyte/pull/11740)), and such nodes are connected to as of **v0.17.0** ([PR 10387](https://github.com/digibyte-core/digibyte/pull/10387)).
|
||||
* [`BIP 173`](https://github.com/digibyte-core/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/digibyte-core/digibyte/pull/11167)). Bech32 addresses are generated by default as of **v0.20.0** ([PR 16884](https://github.com/digibyte-core/digibyte/pull/16884)).
|
||||
* [`BIP 174`](https://github.com/digibyte-core/bips/blob/master/bip-0174.mediawiki): RPCs to operate on Partially Signed DigiByte Transactions (PSBT) are present as of **v0.17.0** ([PR 13557](https://github.com/digibyte-core/digibyte/pull/13557)).
|
||||
* [`BIP 176`](https://github.com/digibyte-core/bips/blob/master/bip-0176.mediawiki): Bits Denomination [QT only] is supported as of **v0.16.0** ([PR 12035](https://github.com/digibyte-core/digibyte/pull/12035)).
|
||||
* [`BIP 325`](https://github.com/digibyte-core/bips/blob/master/bip-0325.mediawiki): Signet test network is supported as of **v0.21.0** ([PR 18267](https://github.com/digibyte-core/digibyte/pull/18267)).
|
||||
* [`BIP 339`](https://github.com/digibyte-core/bips/blob/master/bip-0339.mediawiki): Relay of transactions by wtxid is supported as of **v0.21.0** ([PR 18044](https://github.com/digibyte-core/digibyte/pull/18044)).
|
||||
* [`BIP 340`](https://github.com/digibyte-core/bips/blob/master/bip-0340.mediawiki)
|
||||
[`341`](https://github.com/digibyte-core/bips/blob/master/bip-0341.mediawiki)
|
||||
[`342`](https://github.com/digibyte-core/bips/blob/master/bip-0342.mediawiki):
|
||||
Validation rules for Taproot (including Schnorr signatures and Tapscript
|
||||
leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/digibyte-core/digibyte/pull/19953)),
|
||||
with mainnet activation as of **v0.21.1** ([PR 21377](https://github.com/digibyte-core/digibyte/pull/21377),
|
||||
[PR 21686](https://github.com/digibyte-core/digibyte/pull/21686)).
|
||||
* [`BIP 350`](https://github.com/digibyte-core/bips/blob/master/bip-0350.mediawiki): Addresses for native v1+ segregated Witness outputs use Bech32m instead of Bech32 as of **v22.0** ([PR 20861](https://github.com/digibyte-core/digibyte/pull/20861)).
|
||||
81
doc/btc-upstream-merge.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
Bitcoin Upstream Merge Guide
|
||||
====================================
|
||||
DigiByte was originally forked from the Bitcoin & Litecoin UTXO codebase. Since 2014 many unique changes have been made to DGB that separate it from the latest BTC codebase. However, there is a tremendous amount of improvements continually being made by talented open-source blockchain developers from around the world to the Bitcoin codebase that DigiByte can quite often benefit from.
|
||||
|
||||
Therefore it is important for us to routinely take a look at how some of these improvements can be integrated into the DigiByte codebase in a safe, auditable, reviewable manner. This document is an attempt to document how to best take advantage of those code improvements from Bitcoin with a clearly defined process the community can follow.
|
||||
|
||||
An upstream merge from Bitcoin to DigiByte can be a very complex undertaking for any one person to do alone. There have been several major merge events in DigiBytes history and in the past mistakes have been made during many of these upstream merge events and bugs inadvertently introduced into code. By following the process below many of these issues can be avoided, and the community united in the development process.
|
||||
|
||||
3 Approaches To Upstream BTC Merges
|
||||
------------------------------------
|
||||
There are roughly 3 different ways to keep DigiByte core up to date with the latest improvements and enhancements to Bitcoin core.
|
||||
|
||||
1. Cherry Pick Relelvent commits every 2-4 weeks. By setting a specific day each month, devs can come together and cherry-pick relevant commits that can benefit DGB. If this is done routinely it can prevent mass merge events that are needed after upstream merges are not done for several years.
|
||||
|
||||
2. The Bitcoin Rebase. A simple rebase of DGB specific changes onto a fresh Bitcoin clone. While this approach may have worked several years ago that is no longer the case and not recommended. There is a possibility of missing and breaking 100s of things and the only way to verify a release and commit is not breaking unknown and unseen parts of the code is to do a detailed diff comparison between the current stable DGB release and the new rebase, which pretty well leaves you at the third option anyways.
|
||||
|
||||
3. The complete Bitcoin/ DigiByte merge. This becomes necessary when routine cherry-pick updates have not been done for some time. This requires an all-hands-on-deck effort and a detailed process that is outlined below. However, this is necessary to provide a clear documented review process for all changes, merge conflicts, and issues that arise. So anyone can publicly verify all changes and the public at large has clear visibility into developer actions.
|
||||
|
||||
|
||||
Part 1: Pre-Merge Setup (Managed from Source Tree GUI to save time)
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
1. Completely build latest Bitcoin Core from source all the way to deployment to ensure you have the proper build environment configured. Follow latest BTC dev build environment changes & thoroughly read release notes.
|
||||
|
||||
git clone https://github.com/bitcoin/bitcoin.git
|
||||
cd bitcoin ./autogen.sh ./configure make
|
||||
|
||||
2. Make Clean directory & make sure no build files are present in clean directory.
|
||||
|
||||
make clean
|
||||
|
||||
3. Rename any text or code string containing: "BTC", "btc," "Bitcoin," "BITCOIN," "bitcoin" w "DGB," "dgb," "DigiByte," "DIGIBYTE," "digibyte" throughout entire codebase with case sensitivity. This is easily done with find & replace inside visual studio code. Should be about 20,000 changes or more. Save each separately and then commit while making sure case sensitivity is on.
|
||||
|
||||
4. Commit each separate name swap as its own commit. The idea is to break down the sheer # of name changes in a documented, easy-to-follow process. Not following a consistent naming convention throughout the code easily breaks things and can cause hours of compiler errors later on.
|
||||
|
||||
5. Rename all filenames including the text "bitcoin" to "digibyte." This is easily done with finder on Mac. Open folder, use option + over arrow button, then command A to select all. Do this 10 times to open all folders and select all files in the entire code base. Then rename and replace all files containing bitcoin -> digibyte. If all file names are not consistent and everything changed you will get compiler errors later on.
|
||||
|
||||
6. Commit all filename changes and save in 1 commit for future reference.
|
||||
|
||||
7. Test compile BTC core wallet from scratch with all DGB name changes.
|
||||
|
||||
8. Make Clean directory & make sure no build files are present in the clean directory. Will use this branch to merge into the current stable DGB release & devlop branch.
|
||||
|
||||
Part 2: The Merge & Merge Conflicts Resolution (The Fun Part)
|
||||
----------------------------------------------------------------
|
||||
|
||||
1. Select Current DigiByte version as default branch, merge the renamed bitcoin branch you just worked on into DGB core. There will be 1000's of merge conflicts to go through. This is where it is of utmost importance to take your time and go line by line and know what you are changing. Very easy to make a mistake here. Here will be the trouble areas to watch out for. It is important the entire merge with all merge conflicts is committed in 1 commit first so anyone can reflect back on it before any merge conflicts are resolved. The idea is to break down merge resolutions into specific commits in a detailed methodical manner.
|
||||
|
||||
2. Document & note every merge conflict of importance for future reference to look back on what has changed. Useful to learn updates, refactoring, and important changes that can be used to identify bugs when compiling or later on. There will be thousands of trivial name, date, documentation, and other non-essential merge conflicts. Go after these first.
|
||||
|
||||
3. Commit Title recommendations for organization of work. Idea is to leave a record easy for anyone to look back on later to see any potential merge issues that have been missed. Label commits starting with the 3 phases "PRE-MERGE:" "MERGE:" & and "COMPILER-FIX:" then include the names of files, the entire folder (if done folder by folder) or the type of functionality changing "Consensus, MultiAlgo, Subsidy, etc."
|
||||
|
||||
4. The main merge should be titled something like "MAIN MERGE W/ ALL MERGE CONFLICTS" as it will have to be 1 giant commit in order to document all merge conflicts for future reference.
|
||||
|
||||
5. Save all questionable merge conflicts till the end of this process, so everyone has a chance to review together. Typically this has only been a few hundred critical merge conflicts in past mass merges.
|
||||
|
||||
6. It is recommended to resolve merge conflicts file by file. So developers can take on a specific file, fix merge conflicts, make the commit, and have others review it. It gets many more people involved and many more eyes on to prevent bugs. Think of it as taking one bite out of the elephant at a time. Take things file by file, commit by commit, merge conflict by merge conflict. The more it is broken down, the easier it is for others to help and to reflect back on later when issues arise.
|
||||
|
||||
Key Areas to look out for Merge Conflict / Compiler Bugs:
|
||||
|
||||
* Anything to do with MultiAlgo
|
||||
* Ports, Testnet configs, Genesis block info
|
||||
* Protocol Versoning
|
||||
* DGB Custom QT GUI Files
|
||||
* Private key prefixes (make sure old & new version accepted)
|
||||
* DGB address specific prefixes, Bech 32 etc
|
||||
* DGB previous hard fork block heights
|
||||
* DGB seeds
|
||||
* Logos, Icons, and media files, css files.
|
||||
* Copyrights (Make sure Bitcoin devs still get all credit they deserve)
|
||||
* Dandelion Related Code
|
||||
|
||||
7. Once all merge conflicts are resolved it's time to get the codebase compiling. If the merge has been done methodically and precisely you might get things to compile first try. However, this has never happened in the past and you will inevitably have many compiler errors to fix.
|
||||
|
||||
8. Go error by error and fix each compiler bug and make a commit that clearly explains what was wrong and how it was fixed and how it was broken in the merge. This will help educate everyone else on what to look out for in the future and if there were any other major changes Bitcoin made that break other things in DGB.
|
||||
|
||||
9. Once the client is compiling from the command line, now try the GUI and test, test and test some more. Now it's time to get gitian building working.
|
||||
|
||||
10. Now that you have a compiling upgraded version of DGB core, pat everyone on the back and go enjoy an ice-cold beer and celebrate.
|
||||
|
||||
|
||||
12
doc/build-android.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
ANDROID BUILD NOTES
|
||||
======================
|
||||
|
||||
This guide describes how to build and package the `digibyte-qt` GUI for Android on Linux and macOS.
|
||||
|
||||
## Preparation
|
||||
|
||||
You will need to get the Android NDK and build dependencies for Android as described in [depends/README.md](../depends/README.md).
|
||||
|
||||
## Building and packaging
|
||||
|
||||
After the depends are built configure with one of the resulting prefixes and run `make && make apk` in `src/qt`.
|
||||
129
doc/build-freebsd.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# FreeBSD Build Guide
|
||||
|
||||
**Updated for FreeBSD [12.2](https://www.freebsd.org/releases/12.2R/announce.html)**
|
||||
|
||||
This guide describes how to build digibyted, command-line utilities, and GUI on FreeBSD.
|
||||
|
||||
## Dependencies
|
||||
|
||||
The following dependencies are **required**:
|
||||
|
||||
Library | Purpose | Description
|
||||
----------------------------------------------------------------------|------------|----------------------
|
||||
[autoconf](https://svnweb.freebsd.org/ports/head/devel/autoconf/) | Build | Automatically configure software source code
|
||||
[automake](https://svnweb.freebsd.org/ports/head/devel/automake/) | Build | Generate makefile (requires autoconf)
|
||||
[libtool](https://svnweb.freebsd.org/ports/head/devel/libtool/) | Build | Shared library support
|
||||
[pkgconf](https://svnweb.freebsd.org/ports/head/devel/pkgconf/) | Build | Configure compiler and linker flags
|
||||
[git](https://svnweb.freebsd.org/ports/head/devel/git/) | Clone | Version control system
|
||||
[gmake](https://svnweb.freebsd.org/ports/head/devel/gmake/) | Compile | Generate executables
|
||||
[boost-libs](https://svnweb.freebsd.org/ports/head/devel/boost-libs/) | Utility | Library for threading, data structures, etc
|
||||
[libevent](https://svnweb.freebsd.org/ports/head/devel/libevent/) | Networking | OS independent asynchronous networking
|
||||
|
||||
|
||||
The following dependencies are **optional**:
|
||||
|
||||
Library | Purpose | Description
|
||||
---------------------------------------------------------------------------|------------------|----------------------
|
||||
[db5](https://svnweb.freebsd.org/ports/head/databases/db5/) | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
[qt5](https://svnweb.freebsd.org/ports/head/devel/qt5/) | GUI | GUI toolkit (only needed when GUI enabled)
|
||||
[libqrencode](https://svnweb.freebsd.org/ports/head/graphics/libqrencode/) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
|
||||
[libzmq4](https://svnweb.freebsd.org/ports/head/net/libzmq4/) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
|
||||
[sqlite3](https://svnweb.freebsd.org/ports/head/databases/sqlite3/) | SQLite DB | Wallet storage (only needed when wallet enabled)
|
||||
[python3](https://svnweb.freebsd.org/ports/head/lang/python3/) | Testing | Python Interpreter (only needed when running the test suite)
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
## Preparation
|
||||
|
||||
### 1. Install Required Dependencies
|
||||
Install the required dependencies the usual way you [install software on FreeBSD](https://www.freebsd.org/doc/en/books/handbook/ports.html) - either with `pkg` or via the Ports collection. The example commands below use `pkg` which is usually run as `root` or via `sudo`. If you want to use `sudo`, and you haven't set it up: [use this guide](http://www.freebsdwiki.net/index.php/Sudo%2C_configuring) to setup `sudo` access on FreeBSD.
|
||||
|
||||
```bash
|
||||
pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
|
||||
|
||||
```
|
||||
|
||||
### 2. Clone DigiByte Repo
|
||||
Now that `git` and all the required dependencies are installed, let's clone the DigiByte Core repository to a directory. All build scripts and commands will run from this directory.
|
||||
``` bash
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
```
|
||||
|
||||
### 3. Install Optional Dependencies
|
||||
|
||||
#### Wallet Dependencies
|
||||
It is not necessary to build wallet functionality to run digibyted or the GUI. To enable legacy wallets, you must install `db5`. To enable [descriptor wallets](https://github.com/digibyte-core/digibyte/blob/master/doc/descriptors.md), `sqlite3` is required. Skip `db5` if you intend to *exclusively* use descriptor wallets
|
||||
|
||||
###### Legacy Wallet Support
|
||||
`db5` is required to enable support for legacy wallets. Skip if you don't intend to use legacy wallets
|
||||
|
||||
```bash
|
||||
pkg install db5
|
||||
```
|
||||
|
||||
###### Descriptor Wallet Support
|
||||
|
||||
`sqlite3` is required to enable support for descriptor wallets. Skip if you don't intend to use descriptor wallets.
|
||||
``` bash
|
||||
pkg install sqlite3
|
||||
```
|
||||
---
|
||||
|
||||
#### GUI Dependencies
|
||||
###### Qt5
|
||||
|
||||
DigiByte Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, we need to install `qt5`. Skip if you don't intend to use the GUI.
|
||||
```bash
|
||||
pkg install qt5
|
||||
```
|
||||
###### libqrencode
|
||||
|
||||
The GUI can encode addresses in a QR Code. To build in QR support for the GUI, install `libqrencode`. Skip if not using the GUI or don't want QR code functionality.
|
||||
```bash
|
||||
pkg install libqrencode
|
||||
```
|
||||
---
|
||||
|
||||
#### Test Suite Dependencies
|
||||
There is an included test suite that is useful for testing code changes when developing.
|
||||
To run the test suite (recommended), you will need to have Python 3 installed:
|
||||
|
||||
```bash
|
||||
pkg install python3
|
||||
```
|
||||
---
|
||||
|
||||
## Building DigiByte Core
|
||||
|
||||
### 1. Configuration
|
||||
|
||||
There are many ways to configure DigiByte Core, here are a few common examples:
|
||||
##### Wallet (BDB + SQlite) Support, No GUI:
|
||||
This explicitly enables legacy wallet support and disables the GUI. If `sqlite3` is installed, then descriptor wallet support will be built.
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure --with-gui=no --with-incompatible-bdb \
|
||||
BDB_LIBS="-ldb_cxx-5" \
|
||||
BDB_CFLAGS="-I/usr/local/include/db5" \
|
||||
MAKE=gmake
|
||||
```
|
||||
|
||||
##### Wallet (only SQlite) and GUI Support:
|
||||
This explicitly enables the GUI and disables legacy wallet support. If `qt5` is not installed, this will throw an error. If `sqlite3` is installed then descriptor wallet functionality will be built. If `sqlite3` is not installed, then wallet functionality will be disabled.
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure --without-bdb --with-gui=yes MAKE=gmake
|
||||
```
|
||||
##### No Wallet or GUI
|
||||
``` bash
|
||||
./autogen.sh
|
||||
./configure --without-wallet --with-gui=no MAKE=gmake
|
||||
```
|
||||
|
||||
### 2. Compile
|
||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||
|
||||
```bash
|
||||
gmake # use "-j N" for N parallel jobs
|
||||
gmake check # Run tests if Python 3 is available
|
||||
```
|
||||
81
doc/build-netbsd.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
NetBSD build guide
|
||||
======================
|
||||
(updated for NetBSD 8.0)
|
||||
|
||||
This guide describes how to build digibyted and command-line utilities on NetBSD.
|
||||
|
||||
This guide does not contain instructions for building the GUI.
|
||||
|
||||
Preparation
|
||||
-------------
|
||||
|
||||
You will need the following modules, which can be installed via pkgsrc or pkgin:
|
||||
|
||||
```
|
||||
autoconf
|
||||
automake
|
||||
boost
|
||||
git
|
||||
gmake
|
||||
libevent
|
||||
libtool
|
||||
pkg-config
|
||||
python37
|
||||
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
```
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
### Building BerkeleyDB
|
||||
|
||||
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass
|
||||
`--disable-wallet` to `./configure` and skip to the next section.
|
||||
|
||||
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
|
||||
from ports, for the same reason as boost above (g++/libstd++ incompatibility).
|
||||
If you have to build it yourself, you can use [the installation script included
|
||||
in contrib/](/contrib/install_db4.sh) like so:
|
||||
|
||||
```bash
|
||||
./contrib/install_db4.sh `pwd`
|
||||
```
|
||||
|
||||
from the root of the repository. Then set `BDB_PREFIX` for the next section:
|
||||
|
||||
```bash
|
||||
export BDB_PREFIX="$PWD/db4"
|
||||
```
|
||||
|
||||
### Building DigiByte Core
|
||||
|
||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||
|
||||
With wallet:
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure --with-gui=no CPPFLAGS="-I/usr/pkg/include" \
|
||||
LDFLAGS="-L/usr/pkg/lib" \
|
||||
BOOST_CPPFLAGS="-I/usr/pkg/include" \
|
||||
BOOST_LDFLAGS="-L/usr/pkg/lib" \
|
||||
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
|
||||
BDB_CFLAGS="-I${BDB_PREFIX}/include" \
|
||||
MAKE=gmake
|
||||
```
|
||||
|
||||
Without wallet:
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure --with-gui=no --disable-wallet \
|
||||
CPPFLAGS="-I/usr/pkg/include" \
|
||||
LDFLAGS="-L/usr/pkg/lib" \
|
||||
BOOST_CPPFLAGS="-I/usr/pkg/include" \
|
||||
BOOST_LDFLAGS="-L/usr/pkg/lib" \
|
||||
MAKE=gmake
|
||||
```
|
||||
|
||||
Build and run the tests:
|
||||
```bash
|
||||
gmake # use "-j N" here for N parallel jobs
|
||||
gmake check
|
||||
```
|
||||
123
doc/build-openbsd.md
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
OpenBSD build guide
|
||||
======================
|
||||
(updated for OpenBSD 6.9)
|
||||
|
||||
This guide describes how to build digibyted, digibyte-qt, and command-line utilities on OpenBSD.
|
||||
|
||||
Preparation
|
||||
-------------
|
||||
|
||||
Run the following as root to install the base dependencies for building:
|
||||
|
||||
```bash
|
||||
pkg_add git gmake libevent libtool boost
|
||||
pkg_add qt5 # (optional for enabling the GUI)
|
||||
pkg_add autoconf # (select highest version, e.g. 2.69)
|
||||
pkg_add automake # (select highest version, e.g. 1.16)
|
||||
pkg_add python # (select highest version, e.g. 3.8)
|
||||
pkg_add bash
|
||||
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
```
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
**Important**: From OpenBSD 6.2 onwards a C++11-supporting clang compiler is
|
||||
part of the base image, and while building it is necessary to make sure that
|
||||
this compiler is used and not ancient g++ 4.2.1. This is done by appending
|
||||
`CC=cc CC_FOR_BUILD=cc CXX=c++` to configuration commands. Mixing different
|
||||
compilers within the same executable will result in errors.
|
||||
|
||||
### Building BerkeleyDB
|
||||
|
||||
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass
|
||||
`--disable-wallet` to `./configure` and skip to the next section.
|
||||
|
||||
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
|
||||
from ports, for the same reason as boost above (g++/libstd++ incompatibility).
|
||||
If you have to build it yourself, you can use [the installation script included
|
||||
in contrib/](/contrib/install_db4.sh) like so:
|
||||
|
||||
```bash
|
||||
./contrib/install_db4.sh `pwd` CC=cc CXX=c++
|
||||
```
|
||||
|
||||
from the root of the repository. Then set `BDB_PREFIX` for the next section:
|
||||
|
||||
```bash
|
||||
export BDB_PREFIX="$PWD/db4"
|
||||
```
|
||||
|
||||
### Building DigiByte Core
|
||||
|
||||
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
|
||||
|
||||
Preparation:
|
||||
```bash
|
||||
|
||||
# Replace this with the autoconf version that you installed. Include only
|
||||
# the major and minor parts of the version: use "2.69" for "autoconf-2.69p2".
|
||||
export AUTOCONF_VERSION=2.69
|
||||
|
||||
# Replace this with the automake version that you installed. Include only
|
||||
# the major and minor parts of the version: use "1.16" for "automake-1.16.1".
|
||||
export AUTOMAKE_VERSION=1.16
|
||||
|
||||
./autogen.sh
|
||||
```
|
||||
Make sure `BDB_PREFIX` is set to the appropriate path from the above steps.
|
||||
|
||||
Note that building with external signer support currently fails on OpenBSD,
|
||||
hence you have to explicitely disable it by passing the parameter
|
||||
`--disable-external-signer` to the configure script.
|
||||
(Background: the feature requires the header-only library boost::process, which
|
||||
is available on OpenBSD 6.9 via Boost 1.72.0, but contains certain system calls
|
||||
and preprocessor defines like `waitid()` and `WEXITED` that are not available.)
|
||||
|
||||
To configure with wallet:
|
||||
```bash
|
||||
./configure --with-gui=no --disable-external-signer CC=cc CXX=c++ \
|
||||
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
|
||||
BDB_CFLAGS="-I${BDB_PREFIX}/include" \
|
||||
MAKE=gmake
|
||||
```
|
||||
|
||||
To configure without wallet:
|
||||
```bash
|
||||
./configure --disable-wallet --with-gui=no --disable-external-signer CC=cc CC_FOR_BUILD=cc CXX=c++ MAKE=gmake
|
||||
```
|
||||
|
||||
To configure with GUI:
|
||||
```bash
|
||||
./configure --with-gui=yes --disable-external-signer CC=cc CXX=c++ \
|
||||
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
|
||||
BDB_CFLAGS="-I${BDB_PREFIX}/include" \
|
||||
MAKE=gmake
|
||||
```
|
||||
|
||||
Build and run the tests:
|
||||
```bash
|
||||
gmake # use "-j N" here for N parallel jobs
|
||||
gmake check
|
||||
```
|
||||
|
||||
Resource limits
|
||||
-------------------
|
||||
|
||||
If the build runs into out-of-memory errors, the instructions in this section
|
||||
might help.
|
||||
|
||||
The standard ulimit restrictions in OpenBSD are very strict:
|
||||
|
||||
data(kbytes) 1572864
|
||||
|
||||
This is, unfortunately, in some cases not enough to compile some `.cpp` files in the project,
|
||||
(see issue [#6658](https://github.com/digibyte-core/digibyte/issues/6658)).
|
||||
If your user is in the `staff` group the limit can be raised with:
|
||||
|
||||
ulimit -d 3000000
|
||||
|
||||
The change will only affect the current shell and processes spawned by it. To
|
||||
make the change system-wide, change `datasize-cur` and `datasize-max` in
|
||||
`/etc/login.conf`, and reboot.
|
||||
|
||||
330
doc/build-osx.md
Normal file
|
|
@ -0,0 +1,330 @@
|
|||
# macOS Build Guide
|
||||
|
||||
**Updated for MacOS [11.2](https://www.apple.com/macos/big-sur/)**
|
||||
|
||||
This guide describes how to build digibyted, command-line utilities, and GUI on macOS
|
||||
|
||||
**Note:** The following is for Intel Macs only!
|
||||
|
||||
## Dependencies
|
||||
|
||||
The following dependencies are **required**:
|
||||
|
||||
Library | Purpose | Description
|
||||
-----------------------------------------------------------|------------|----------------------
|
||||
[automake](https://formulae.brew.sh/formula/automake) | Build | Generate makefile
|
||||
[libtool](https://formulae.brew.sh/formula/libtool) | Build | Shared library support
|
||||
[pkg-config](https://formulae.brew.sh/formula/pkg-config) | Build | Configure compiler and linker flags
|
||||
[boost](https://formulae.brew.sh/formula/boost) | Utility | Library for threading, data structures, etc
|
||||
[libevent](https://formulae.brew.sh/formula/libevent) | Networking | OS independent asynchronous networking
|
||||
|
||||
The following dependencies are **optional**:
|
||||
|
||||
Library | Purpose | Description
|
||||
--------------------------------------------------------------- |------------------|----------------------
|
||||
[berkeley-db@4](https://formulae.brew.sh/formula/berkeley-db@4) | Berkeley DB | Wallet storage (only needed when wallet enabled)
|
||||
[qt@5](https://formulae.brew.sh/formula/qt@5) | GUI | GUI toolkit (only needed when GUI enabled)
|
||||
[qrencode](https://formulae.brew.sh/formula/qrencode) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
|
||||
[zeromq](https://formulae.brew.sh/formula/zeromq) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
|
||||
[sqlite](https://formulae.brew.sh/formula/sqlite) | SQLite DB | Wallet storage (only needed when wallet enabled)
|
||||
[miniupnpc](https://formulae.brew.sh/formula/miniupnpc) | UPnP Support | Firewall-jumping support (needed for port mapping support)
|
||||
[libnatpmp](https://formulae.brew.sh/formula/libnatpmp) | NAT-PMP Support | Firewall-jumping support (needed for port mapping support)
|
||||
[python3](https://formulae.brew.sh/formula/python@3.9) | Testing | Python Interpreter (only needed when running the test suite)
|
||||
|
||||
The following dependencies are **optional** packages required for deploying:
|
||||
|
||||
Library | Purpose | Description
|
||||
----------------------------------------------------|------------------|----------------------
|
||||
[librsvg](https://formulae.brew.sh/formula/librsvg) | Deploy Dependency| Library to render SVG files
|
||||
[ds_store](https://pypi.org/project/ds-store/) | Deploy Dependency| Examine and modify .DS_Store files
|
||||
[mac_alias](https://pypi.org/project/mac-alias/) | Deploy Dependency| Generate/Read binary alias and bookmark records
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
## Preparation
|
||||
|
||||
The commands in this guide should be executed in a Terminal application.
|
||||
macOS comes with a built-in Terminal located in:
|
||||
|
||||
```
|
||||
/Applications/Utilities/Terminal.app
|
||||
```
|
||||
|
||||
### 1. Xcode Command Line Tools
|
||||
|
||||
The Xcode Command Line Tools are a collection of build tools for macOS.
|
||||
These tools must be installed in order to build DigiByte Core from source.
|
||||
|
||||
To install, run the following command from your terminal:
|
||||
|
||||
``` bash
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
Upon running the command, you should see a popup appear.
|
||||
Click on `Install` to continue the installation process.
|
||||
|
||||
### 2. Homebrew Package Manager
|
||||
|
||||
Homebrew is a package manager for macOS that allows one to install packages from the command line easily.
|
||||
While several package managers are available for macOS, this guide will focus on Homebrew as it is the most popular.
|
||||
Since the examples in this guide which walk through the installation of a package will use Homebrew, it is recommended that you install it to follow along.
|
||||
Otherwise, you can adapt the commands to your package manager of choice.
|
||||
|
||||
To install the Homebrew package manager, see: https://brew.sh
|
||||
|
||||
Note: If you run into issues while installing Homebrew or pulling packages, refer to [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting).
|
||||
|
||||
### 3. Install Required Dependencies
|
||||
|
||||
The first step is to download the required dependencies.
|
||||
These dependencies represent the packages required to get a barebones installation up and running.
|
||||
To install, run the following from your terminal:
|
||||
|
||||
``` bash
|
||||
brew install automake libtool boost pkg-config libevent
|
||||
```
|
||||
|
||||
### 4. Clone DigiByte repository
|
||||
|
||||
`git` should already be installed by default on your system.
|
||||
Now that all the required dependencies are installed, let's clone the DigiByte Core repository to a directory.
|
||||
All build scripts and commands will run from this directory.
|
||||
|
||||
``` bash
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
```
|
||||
|
||||
### 5. Install Optional Dependencies
|
||||
|
||||
#### Wallet Dependencies
|
||||
|
||||
It is not necessary to build wallet functionality to run `digibyted` or `digibyte-qt`.
|
||||
To enable legacy wallets, you must install `berkeley-db@4`.
|
||||
To enable [descriptor wallets](https://github.com/digibyte-core/digibyte/blob/master/doc/descriptors.md), `sqlite` is required.
|
||||
Skip `berkeley-db@4` if you intend to *exclusively* use descriptor wallets.
|
||||
|
||||
###### Legacy Wallet Support
|
||||
|
||||
`berkeley-db@4` is required to enable support for legacy wallets.
|
||||
Skip if you don't intend to use legacy wallets.
|
||||
|
||||
``` bash
|
||||
brew install berkeley-db@4
|
||||
```
|
||||
|
||||
###### Descriptor Wallet Support
|
||||
|
||||
Note: Apple has included a useable `sqlite` package since macOS 10.14.
|
||||
You may not need to install this package.
|
||||
|
||||
`sqlite` is required to enable support for descriptor wallets.
|
||||
Skip if you don't intend to use descriptor wallets.
|
||||
|
||||
``` bash
|
||||
brew install sqlite
|
||||
```
|
||||
---
|
||||
|
||||
#### GUI Dependencies
|
||||
|
||||
###### Qt
|
||||
|
||||
DigiByte Core includes a GUI built with the cross-platform Qt Framework.
|
||||
To compile the GUI, we need to install `qt@5`.
|
||||
Skip if you don't intend to use the GUI.
|
||||
|
||||
``` bash
|
||||
brew install qt@5
|
||||
```
|
||||
|
||||
Ensure that the `qt@5` package is installed, not the `qt` package.
|
||||
If 'qt' is installed, the build process will fail.
|
||||
if installed, remove the `qt` package with the following command:
|
||||
|
||||
``` bash
|
||||
brew uninstall qt
|
||||
```
|
||||
|
||||
Note: Building with Qt binaries downloaded from the Qt website is not officially supported.
|
||||
See the notes in [#7714](https://github.com/digibyte-core/digibyte/issues/7714).
|
||||
|
||||
###### qrencode
|
||||
|
||||
The GUI can encode addresses in a QR Code. To build in QR support for the GUI, install `qrencode`.
|
||||
Skip if not using the GUI or don't want QR code functionality.
|
||||
|
||||
``` bash
|
||||
brew install qrencode
|
||||
```
|
||||
---
|
||||
|
||||
#### Port Mapping Dependencies
|
||||
|
||||
###### miniupnpc
|
||||
|
||||
miniupnpc may be used for UPnP port mapping.
|
||||
Skip if you do not need this functionality.
|
||||
|
||||
``` bash
|
||||
brew install miniupnpc
|
||||
```
|
||||
|
||||
###### libnatpmp
|
||||
|
||||
libnatpmp may be used for NAT-PMP port mapping.
|
||||
Skip if you do not need this functionality.
|
||||
|
||||
``` bash
|
||||
brew install libnatpmp
|
||||
```
|
||||
|
||||
Note: UPnP and NAT-PMP support will be compiled in and disabled by default.
|
||||
Check out the [further configuration](#further-configuration) section for more information.
|
||||
|
||||
---
|
||||
|
||||
#### ZMQ Dependencies
|
||||
|
||||
Support for ZMQ notifications requires the following dependency.
|
||||
Skip if you do not need ZMQ functionality.
|
||||
|
||||
``` bash
|
||||
brew install zeromq
|
||||
```
|
||||
|
||||
ZMQ is automatically compiled in and enabled if the dependency is detected.
|
||||
Check out the [further configuration](#further-configuration) section for more information.
|
||||
|
||||
For more information on ZMQ, see: [zmq.md](zmq.md)
|
||||
|
||||
---
|
||||
|
||||
#### Test Suite Dependencies
|
||||
|
||||
There is an included test suite that is useful for testing code changes when developing.
|
||||
To run the test suite (recommended), you will need to have Python 3 installed:
|
||||
|
||||
``` bash
|
||||
brew install python
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Deploy Dependencies
|
||||
|
||||
You can deploy a `.dmg` containing the DigiByte Core application using `make deploy`.
|
||||
This command depends on a couple of python packages, so it is required that you have `python` installed.
|
||||
|
||||
Ensuring that `python` is installed, you can install the deploy dependencies by running the following commands in your terminal:
|
||||
|
||||
``` bash
|
||||
brew install librsvg
|
||||
```
|
||||
|
||||
``` bash
|
||||
pip3 install ds_store mac_alias
|
||||
```
|
||||
|
||||
## Building DigiByte Core
|
||||
|
||||
### 1. Configuration
|
||||
|
||||
There are many ways to configure DigiByte Core, here are a few common examples:
|
||||
|
||||
##### Wallet (BDB + SQlite) Support, No GUI:
|
||||
|
||||
If `berkeley-db@4` is installed, then legacy wallet support will be built.
|
||||
If `berkeley-db@4` is not installed, then this will throw an error.
|
||||
If `sqlite` is installed, then descriptor wallet support will also be built.
|
||||
Additionally, this explicitly disables the GUI.
|
||||
|
||||
``` bash
|
||||
./autogen.sh
|
||||
./configure --with-gui=no
|
||||
```
|
||||
|
||||
##### Wallet (only SQlite) and GUI Support:
|
||||
|
||||
This explicitly enables the GUI and disables legacy wallet support.
|
||||
If `qt` is not installed, this will throw an error.
|
||||
If `sqlite` is installed then descriptor wallet functionality will be built.
|
||||
If `sqlite` is not installed, then wallet functionality will be disabled.
|
||||
|
||||
``` bash
|
||||
./autogen.sh
|
||||
./configure --without-bdb --with-gui=yes
|
||||
```
|
||||
|
||||
##### No Wallet or GUI
|
||||
|
||||
``` bash
|
||||
./autogen.sh
|
||||
./configure --without-wallet --with-gui=no
|
||||
```
|
||||
|
||||
##### Further Configuration
|
||||
|
||||
You may want to dig deeper into the configuration options to achieve your desired behavior.
|
||||
Examine the output of the following command for a full list of configuration options:
|
||||
|
||||
``` bash
|
||||
./configure -help
|
||||
```
|
||||
|
||||
### 2. Compile
|
||||
|
||||
After configuration, you are ready to compile.
|
||||
Run the following in your terminal to compile DigiByte Core:
|
||||
|
||||
``` bash
|
||||
make # use "-j N" here for N parallel jobs
|
||||
make check # Run tests if Python 3 is available
|
||||
```
|
||||
|
||||
### 3. Deploy (optional)
|
||||
|
||||
You can also create a `.dmg` containing the `.app` bundle by running the following command:
|
||||
|
||||
``` bash
|
||||
make deploy
|
||||
```
|
||||
|
||||
## Running DigiByte Core
|
||||
|
||||
DigiByte Core should now be available at `./src/digibyted`.
|
||||
If you compiled support for the GUI, it should be available at `./src/qt/digibyte-qt`.
|
||||
|
||||
The first time you run `digibyted` or `digibyte-qt`, it will start downloading the blockchain.
|
||||
This process could take many hours, or even days on slower than average systems.
|
||||
|
||||
By default, blockchain and wallet data files will be stored in:
|
||||
|
||||
``` bash
|
||||
/Users/${USER}/Library/Application Support/DigiByte/
|
||||
```
|
||||
|
||||
Before running, you may create an empty configuration file:
|
||||
|
||||
```shell
|
||||
mkdir -p "/Users/${USER}/Library/Application Support/DigiByte"
|
||||
|
||||
touch "/Users/${USER}/Library/Application Support/DigiByte/digibyte.conf"
|
||||
|
||||
chmod 600 "/Users/${USER}/Library/Application Support/DigiByte/digibyte.conf"
|
||||
```
|
||||
|
||||
You can monitor the download process by looking at the debug.log file:
|
||||
|
||||
```shell
|
||||
tail -f $HOME/Library/Application\ Support/DigiByte/debug.log
|
||||
```
|
||||
|
||||
## Other commands:
|
||||
|
||||
```shell
|
||||
./src/digibyted -daemon # Starts the digibyte daemon.
|
||||
./src/digibyte-cli --help # Outputs a list of command-line options.
|
||||
./src/digibyte-cli help # Outputs a list of RPC commands when the daemon is running.
|
||||
./src/qt/digibyte-qt -server # Starts the digibyte-qt server mode, allows digibyte-cli control
|
||||
```
|
||||
327
doc/build-unix.md
Normal file
|
|
@ -0,0 +1,327 @@
|
|||
# UNIX BUILD NOTES
|
||||
|
||||
Some notes on how to build DigiByte Core in Unix.
|
||||
|
||||
(For BSD specific instructions, see `build-*bsd.md` in this directory.)
|
||||
|
||||
## Note
|
||||
|
||||
Always use absolute paths to configure and compile DigiByte Core and the dependencies.
|
||||
For example, when specifying the path of the dependency:
|
||||
|
||||
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=$BDB_PREFIX
|
||||
|
||||
Here BDB_PREFIX must be an absolute path - it is defined using $(pwd) which ensures
|
||||
the usage of the absolute path.
|
||||
|
||||
## To Build
|
||||
|
||||
```bash
|
||||
./autogen.sh
|
||||
./configure
|
||||
make # use "-j N" for N parallel jobs
|
||||
make install # optional
|
||||
```
|
||||
|
||||
This will build digibyte-qt as well, if the dependencies are met.
|
||||
|
||||
### Dependencies
|
||||
|
||||
These dependencies are required:
|
||||
|
||||
Library | Purpose | Description
|
||||
------------|------------------|----------------------
|
||||
libboost | Utility | Library for threading, data structures, etc
|
||||
libevent | Networking | OS independent asynchronous networking
|
||||
|
||||
Optional dependencies:
|
||||
|
||||
Library | Purpose | Description
|
||||
------------|------------------|----------------------
|
||||
miniupnpc | UPnP Support | Firewall-jumping support
|
||||
libnatpmp | NAT-PMP Support | Firewall-jumping support
|
||||
libdb4.8 | Berkeley DB | Optional, wallet storage (only needed when wallet enabled)
|
||||
qt | GUI | GUI toolkit (only needed when GUI enabled)
|
||||
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
|
||||
univalue | Utility | JSON parsing and encoding (bundled version will be used unless --with-system-univalue passed to configure)
|
||||
libzmq3 | ZMQ notification | Optional, allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
|
||||
sqlite3 | SQLite DB | Optional, wallet storage (only needed when wallet enabled)
|
||||
|
||||
For the versions used, see [dependencies.md](dependencies.md)
|
||||
|
||||
### Memory Requirements
|
||||
|
||||
C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of
|
||||
memory available when compiling DigiByte Core. On systems with less, gcc can be
|
||||
tuned to conserve memory with additional CXXFLAGS:
|
||||
|
||||
./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
|
||||
|
||||
Alternatively, or in addition, debugging information can be skipped for compilation. The default compile flags are
|
||||
`-g -O2`, and can be changed with:
|
||||
|
||||
./configure CXXFLAGS="-O2"
|
||||
|
||||
Finally, clang (often less resource hungry) can be used instead of gcc, which is used by default:
|
||||
|
||||
./configure CXX=clang++ CC=clang
|
||||
|
||||
## Linux Distribution Specific Instructions
|
||||
|
||||
### Ubuntu & Debian
|
||||
|
||||
#### Ubuntu & Debian Dependency Build Instructions
|
||||
|
||||
Build requirements:
|
||||
|
||||
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3
|
||||
|
||||
Now, you can either build from self-compiled [depends](/depends/README.md) or install the required dependencies:
|
||||
|
||||
sudo apt-get install libevent-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev
|
||||
|
||||
Berkeley DB is required for the wallet.
|
||||
|
||||
Ubuntu and Debian have their own `libdb-dev` and `libdb++-dev` packages, but these will install
|
||||
Berkeley DB 5.1 or later. This will break binary wallet compatibility with the distributed executables, which
|
||||
are based on BerkeleyDB 4.8. If you do not care about wallet compatibility,
|
||||
pass `--with-incompatible-bdb` to configure.
|
||||
|
||||
Otherwise, you can build Berkeley DB [yourself](#berkeley-db).
|
||||
|
||||
SQLite is required for the descriptor wallet:
|
||||
|
||||
sudo apt install libsqlite3-dev
|
||||
|
||||
To build DigiByte Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode)
|
||||
|
||||
Optional port mapping libraries (see: `--with-miniupnpc`, `--enable-upnp-default`, and `--with-natpmp`, `--enable-natpmp-default`):
|
||||
|
||||
sudo apt install libminiupnpc-dev libnatpmp-dev
|
||||
|
||||
ZMQ dependencies (provides ZMQ API):
|
||||
|
||||
sudo apt-get install libzmq3-dev
|
||||
|
||||
GUI dependencies:
|
||||
|
||||
If you want to build digibyte-qt, make sure that the required packages for Qt development
|
||||
are installed. Qt 5 is necessary to build the GUI.
|
||||
To build without GUI pass `--without-gui`.
|
||||
|
||||
To build with Qt 5 you need the following:
|
||||
|
||||
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
|
||||
sudo apt-get install libqrencode-dev
|
||||
|
||||
Once these are installed, they will be found by configure and a digibyte-qt executable will be
|
||||
built by default.
|
||||
|
||||
### Fedora
|
||||
|
||||
#### Fedora Dependency Build Instructions
|
||||
|
||||
Build requirements:
|
||||
|
||||
sudo dnf install gcc-c++ libtool make autoconf automake python3
|
||||
|
||||
Now, you can either build from self-compiled [depends](/depends/README.md) or install the required dependencies:
|
||||
|
||||
sudo dnf install libevent-devel boost-devel
|
||||
|
||||
Berkeley DB is required for the wallet:
|
||||
|
||||
sudo dnf install libdb4-devel libdb4-cxx-devel
|
||||
|
||||
Newer Fedora releases, since Fedora 33, have only `libdb-devel` and `libdb-cxx-devel` packages, but these will install
|
||||
Berkeley DB 5.3 or later. This will break binary wallet compatibility with the distributed executables, which
|
||||
are based on Berkeley DB 4.8. If you do not care about wallet compatibility,
|
||||
pass `--with-incompatible-bdb` to configure.
|
||||
|
||||
Otherwise, you can build Berkeley DB [yourself](#berkeley-db).
|
||||
|
||||
SQLite is required for the descriptor wallet:
|
||||
|
||||
sudo dnf install sqlite-devel
|
||||
|
||||
To build DigiByte Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode)
|
||||
|
||||
Optional port mapping libraries (see: `--with-miniupnpc`, `--enable-upnp-default`, and `--with-natpmp`, `--enable-natpmp-default`):
|
||||
|
||||
sudo dnf install miniupnpc-devel libnatpmp-devel
|
||||
|
||||
ZMQ dependencies (provides ZMQ API):
|
||||
|
||||
sudo dnf install zeromq-devel
|
||||
|
||||
GUI dependencies:
|
||||
|
||||
If you want to build digibyte-qt, make sure that the required packages for Qt development
|
||||
are installed. Qt 5 is necessary to build the GUI.
|
||||
To build without GUI pass `--without-gui`.
|
||||
|
||||
To build with Qt 5 you need the following:
|
||||
|
||||
sudo dnf install qt5-qttools-devel qt5-qtbase-devel
|
||||
|
||||
libqrencode (optional) can be installed with:
|
||||
|
||||
sudo dnf install qrencode-devel
|
||||
|
||||
Once these are installed, they will be found by configure and a digibyte-qt executable will be
|
||||
built by default.
|
||||
|
||||
## Notes
|
||||
|
||||
The release is built with GCC and then "strip digibyted" to strip the debug
|
||||
symbols, which reduces the executable size by about 90%.
|
||||
|
||||
## miniupnpc
|
||||
|
||||
[miniupnpc](https://miniupnp.tuxfamily.org) may be used for UPnP port mapping. It can be downloaded from [here](
|
||||
https://miniupnp.tuxfamily.org/files/). UPnP support is compiled in and
|
||||
turned off by default. See the configure options for UPnP behavior desired:
|
||||
|
||||
--without-miniupnpc No UPnP support, miniupnp not required
|
||||
--disable-upnp-default (the default) UPnP support turned off by default at runtime
|
||||
--enable-upnp-default UPnP support turned on by default at runtime
|
||||
|
||||
## libnatpmp
|
||||
|
||||
[libnatpmp](https://miniupnp.tuxfamily.org/libnatpmp.html) may be used for NAT-PMP port mapping. It can be downloaded
|
||||
from [here](https://miniupnp.tuxfamily.org/files/). NAT-PMP support is compiled in and
|
||||
turned off by default. See the configure options for NAT-PMP behavior desired:
|
||||
|
||||
--without-natpmp No NAT-PMP support, libnatpmp not required
|
||||
--disable-natpmp-default (the default) NAT-PMP support turned off by default at runtime
|
||||
--enable-natpmp-default NAT-PMP support turned on by default at runtime
|
||||
|
||||
## Berkeley DB
|
||||
|
||||
It is recommended to use Berkeley DB 4.8. If you have to build it yourself,
|
||||
you can use [the installation script included in contrib/](/contrib/install_db4.sh)
|
||||
like so:
|
||||
|
||||
```shell
|
||||
./contrib/install_db4.sh `pwd`
|
||||
```
|
||||
|
||||
from the root of the repository.
|
||||
|
||||
Otherwise, you can build DigiByte Core from self-compiled [depends](/depends/README.md).
|
||||
|
||||
**Note**: You only need Berkeley DB if the wallet is enabled (see [*Disable-wallet mode*](#disable-wallet-mode)).
|
||||
|
||||
## Boost
|
||||
|
||||
If you need to build Boost yourself:
|
||||
|
||||
sudo su
|
||||
./bootstrap.sh
|
||||
./bjam install
|
||||
|
||||
## Security
|
||||
|
||||
To help make your DigiByte Core installation more secure by making certain attacks impossible to
|
||||
exploit even if a vulnerability is found, binaries are hardened by default.
|
||||
This can be disabled with:
|
||||
|
||||
Hardening Flags:
|
||||
|
||||
./configure --enable-hardening
|
||||
./configure --disable-hardening
|
||||
|
||||
Hardening enables the following features:
|
||||
|
||||
* *Position Independent Executable*: Build position independent code to take advantage of Address Space Layout Randomization
|
||||
offered by some kernels. Attackers who can cause execution of code at an arbitrary memory
|
||||
location are thwarted if they don't know where anything useful is located.
|
||||
The stack and heap are randomly located by default, but this allows the code section to be
|
||||
randomly located as well.
|
||||
|
||||
On an AMD64 processor where a library was not compiled with -fPIC, this will cause an error
|
||||
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
||||
|
||||
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
||||
|
||||
scanelf -e ./digibyte
|
||||
|
||||
The output should contain:
|
||||
|
||||
TYPE
|
||||
ET_DYN
|
||||
|
||||
* *Non-executable Stack*: If the stack is executable then trivial stack-based buffer overflow exploits are possible if
|
||||
vulnerable buffers are found. By default, DigiByte 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
|
||||
and uses a compiler extension which requires an executable stack, it will silently build an
|
||||
executable without the non-executable stack protection.
|
||||
|
||||
To verify that the stack is non-executable after compiling use:
|
||||
`scanelf -e ./digibyte`
|
||||
|
||||
The output should contain:
|
||||
STK/REL/PTL
|
||||
RW- R-- RW-
|
||||
|
||||
The STK RW- means that the stack is readable and writeable but not executable.
|
||||
|
||||
## Disable-wallet mode
|
||||
|
||||
When the intention is to run only a P2P node without a wallet, DigiByte Core may be compiled in
|
||||
disable-wallet mode with:
|
||||
|
||||
./configure --disable-wallet
|
||||
|
||||
In this case there is no dependency on Berkeley DB 4.8 and SQLite.
|
||||
|
||||
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.
|
||||
|
||||
## Additional Configure Flags
|
||||
|
||||
A list of additional configure flags can be displayed with:
|
||||
|
||||
./configure --help
|
||||
|
||||
## 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:
|
||||
|
||||
pacman -S git base-devel boost libevent python
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
cd digibyte/
|
||||
./autogen.sh
|
||||
./configure --disable-wallet --without-gui --without-miniupnpc
|
||||
make check
|
||||
|
||||
Note:
|
||||
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
|
||||
`--with-incompatible-bdb` according to the [PKGBUILD](https://projects.archlinux.org/svntogit/community.git/tree/digibyte/trunk/PKGBUILD).
|
||||
As mentioned above, when maintaining portability of the wallet between the standard DigiByte Core distributions and independently built
|
||||
node software is desired, Berkeley DB 4.8 must be used.
|
||||
|
||||
## ARM Cross-compilation
|
||||
|
||||
These steps can be performed on, for example, an Ubuntu VM. The depends system
|
||||
will also work on other Linux distributions, however the commands for
|
||||
installing the toolchain will be different.
|
||||
|
||||
Make sure you install the build requirements mentioned above.
|
||||
Then, install the toolchain and curl:
|
||||
|
||||
sudo apt-get install g++-arm-linux-gnueabihf curl
|
||||
|
||||
To build executables for ARM:
|
||||
|
||||
cd depends
|
||||
make HOST=arm-linux-gnueabihf NO_QT=1
|
||||
cd ..
|
||||
./autogen.sh
|
||||
CONFIG_SITE=$PWD/depends/arm-linux-gnueabihf/share/config.site ./configure --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
|
||||
make
|
||||
|
||||
For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory.
|
||||
154
doc/build-windows.md
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
WINDOWS BUILD NOTES
|
||||
====================
|
||||
|
||||
Below are some notes on how to build DigiByte Core for Windows.
|
||||
|
||||
The options known to work for building DigiByte 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
|
||||
and is the platform used to build the DigiByte Core Windows release binaries.
|
||||
* On Windows, using [Windows
|
||||
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).
|
||||
|
||||
Other options which may work, but which have not been extensively tested are (please contribute instructions):
|
||||
|
||||
* On Windows, using a POSIX compatibility layer application such as [cygwin](https://www.cygwin.com/) or [msys2](https://www.msys2.org/).
|
||||
|
||||
Installing Windows Subsystem for Linux
|
||||
---------------------------------------
|
||||
|
||||
With Windows 10, Microsoft has released a new feature named the [Windows
|
||||
Subsystem for Linux (WSL)](https://docs.microsoft.com/windows/wsl/about). This
|
||||
feature allows you to run a bash shell directly on Windows in an Ubuntu-based
|
||||
environment. Within this environment you can cross compile for Windows without
|
||||
the need for a separate Linux VM or server. Note that while WSL can be installed with
|
||||
other Linux variants, such as OpenSUSE, the following instructions have only been
|
||||
tested with Ubuntu.
|
||||
|
||||
This feature is not supported in versions of Windows prior to Windows 10 or on
|
||||
Windows Server SKUs. In addition, it is available [only for 64-bit versions of
|
||||
Windows](https://docs.microsoft.com/windows/wsl/install-win10).
|
||||
|
||||
Full instructions to install WSL are available on the above link.
|
||||
To install WSL on Windows 10 with Fall Creators Update installed (version >= 16215.0) do the following:
|
||||
|
||||
1. Enable the Windows Subsystem for Linux feature
|
||||
* Open the Windows Features dialog (`OptionalFeatures.exe`)
|
||||
* Enable 'Windows Subsystem for Linux'
|
||||
* Click 'OK' and restart if necessary
|
||||
2. Install Ubuntu
|
||||
* Open Microsoft Store and search for "Ubuntu 18.04" or use [this link](https://www.microsoft.com/store/productId/9N9TNGVNDL3Q)
|
||||
* Click Install
|
||||
3. Complete Installation
|
||||
* Open a cmd prompt and type "Ubuntu1804"
|
||||
* Create a new UNIX user account (this is a separate account from your Windows account)
|
||||
|
||||
After the bash shell is active, you can follow the instructions below, starting
|
||||
with the "Cross-compilation" section. Compiling the 64-bit version is
|
||||
recommended, but it is possible to compile the 32-bit version.
|
||||
|
||||
Cross-compilation for Ubuntu and Windows Subsystem for Linux
|
||||
------------------------------------------------------------
|
||||
|
||||
The steps below can be performed on Ubuntu (including in a VM) or WSL. The depends system
|
||||
will also work on other Linux distributions, however the commands for
|
||||
installing the toolchain will be different.
|
||||
|
||||
First, install the general dependencies:
|
||||
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git
|
||||
|
||||
A host toolchain (`build-essential`) is necessary because some dependency
|
||||
packages need to build host utilities that are used in the build process.
|
||||
|
||||
See [dependencies.md](dependencies.md) for a complete overview.
|
||||
|
||||
If you want to build the windows installer with `make deploy` you need [NSIS](https://nsis.sourceforge.io/Main_Page):
|
||||
|
||||
sudo apt install nsis
|
||||
|
||||
Acquire the source in the usual way:
|
||||
|
||||
git clone https://github.com/digibyte-core/digibyte.git
|
||||
cd digibyte
|
||||
|
||||
## Building for 64-bit Windows
|
||||
|
||||
The first step is to install the mingw-w64 cross-compilation tool chain:
|
||||
|
||||
sudo apt install g++-mingw-w64-x86-64
|
||||
|
||||
Next, set the default `mingw32 g++` compiler option to POSIX<sup>[1](#footnote1)</sup>:
|
||||
|
||||
```
|
||||
sudo update-alternatives --config x86_64-w64-mingw32-g++
|
||||
```
|
||||
|
||||
After running the above command, you should see output similar to that below.
|
||||
Choose the option that ends with `posix`.
|
||||
|
||||
```
|
||||
There are 2 choices for the alternative x86_64-w64-mingw32-g++ (providing /usr/bin/x86_64-w64-mingw32-g++).
|
||||
|
||||
Selection Path Priority Status
|
||||
------------------------------------------------------------
|
||||
0 /usr/bin/x86_64-w64-mingw32-g++-win32 60 auto mode
|
||||
* 1 /usr/bin/x86_64-w64-mingw32-g++-posix 30 manual mode
|
||||
2 /usr/bin/x86_64-w64-mingw32-g++-win32 60 manual mode
|
||||
|
||||
Press <enter> to keep the current choice[*], or type selection number:
|
||||
```
|
||||
|
||||
Once the toolchain is installed the build steps are common:
|
||||
|
||||
Note that for WSL the DigiByte Core source path MUST be somewhere in the default mount file system, for
|
||||
example /usr/src/digibyte, 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.
|
||||
|
||||
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)
|
||||
results in `Autoconf` configure scripts being able to execute Windows Portable Executable files. This can cause
|
||||
unexpected behaviour during the build, such as Win32 error dialogs for missing libraries. The recommended approach
|
||||
is to temporarily disable WSL support for Win32 applications.
|
||||
|
||||
Build using:
|
||||
|
||||
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
|
||||
sudo bash -c "echo 0 > /proc/sys/fs/binfmt_misc/status" # Disable WSL support for Win32 applications.
|
||||
cd depends
|
||||
make HOST=x86_64-w64-mingw32
|
||||
cd ..
|
||||
./autogen.sh
|
||||
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
|
||||
make # use "-j N" for N parallel jobs
|
||||
sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Enable WSL support for Win32 applications.
|
||||
|
||||
## Depends system
|
||||
|
||||
For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory.
|
||||
|
||||
Installation
|
||||
-------------
|
||||
|
||||
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
|
||||
as they appear in the release `.zip` archive. This can be done in the following
|
||||
way. This will install to `c:\workspace\digibyte`, for example:
|
||||
|
||||
make install DESTDIR=/mnt/c/workspace/digibyte
|
||||
|
||||
You can also create an installer using:
|
||||
|
||||
make deploy
|
||||
|
||||
Footnotes
|
||||
---------
|
||||
|
||||
<a name="footnote1">1</a>: Starting from Ubuntu Xenial 16.04, both the 32 and 64 bit Mingw-w64 packages install two different
|
||||
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
|
||||
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 DigiByte Core code using the win32 version of the Mingw-w64 cross compilers (at least not without
|
||||
modifying headers in the DigiByte Core source code).
|
||||
48
doc/dependencies.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
Dependencies
|
||||
============
|
||||
|
||||
These are the dependencies currently used by DigiByte 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) |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
|
||||
| Boost | [1.71.0](https://www.boost.org/users/download/) | [1.64.0](https://github.com/digibyte-core/digibyte/pull/22320) | No | | |
|
||||
| Clang<sup>[ \* ](#note1)</sup> | | [5.0+](https://releases.llvm.org/download.html) (C++17 support) | | | |
|
||||
| Expat | [2.2.7](https://libexpat.github.io/) | | No | Yes | |
|
||||
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
|
||||
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) (Android only) |
|
||||
| GCC | | [7+](https://gcc.gnu.org/) (C++17 support) | | | |
|
||||
| HarfBuzz-NG | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) |
|
||||
| libevent | [2.1.12-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/digibyte-core/digibyte/pull/18676) | No | | |
|
||||
| libnatpmp | git commit [4536032...](https://github.com/miniupnp/libnatpmp/tree/4536032ae32268a45c073a4d5e91bbab4534773a) | | No | | |
|
||||
| libpng | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) |
|
||||
| librsvg | | | | | |
|
||||
| MiniUPnPc | [2.2.2](https://miniupnp.tuxfamily.org/files) | | No | | |
|
||||
| PCRE | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) |
|
||||
| Python (tests) | | [3.6](https://www.python.org/downloads) | | | |
|
||||
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
|
||||
| Qt | [5.12.11](https://download.qt.io/official_releases/qt/) | [5.9.5](https://github.com/digibyte-core/digibyte/issues/20104) | No | | |
|
||||
| SQLite | [3.32.1](https://sqlite.org/download.html) | [3.7.17](https://github.com/digibyte-core/digibyte/pull/19077) | | | |
|
||||
| XCB | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) (Linux only) |
|
||||
| xkbcommon | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) (Linux only) |
|
||||
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
|
||||
| zlib | | | | | [Yes](https://github.com/digibyte-core/digibyte/blob/master/depends/packages/qt.mk) |
|
||||
|
||||
<a name="note1">Note \*</a> : When compiling with `-stdlib=libc++`, the minimum supported libc++ version is 7.0.
|
||||
|
||||
Controlling dependencies
|
||||
------------------------
|
||||
Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.
|
||||
|
||||
#### Options passed to `./configure`
|
||||
* MiniUPnPc is not needed with `--without-miniupnpc`.
|
||||
* libnatpmp is not needed with `--without-natpmp`.
|
||||
* Berkeley DB is not needed with `--disable-wallet` or `--without-bdb`.
|
||||
* SQLite is not needed with `--disable-wallet` or `--without-sqlite`.
|
||||
* Qt is not needed with `--without-gui`.
|
||||
* If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass `--with-qrencode`.
|
||||
* ZeroMQ is needed only with the `--with-zmq` option.
|
||||
|
||||
#### Other
|
||||
* librsvg is only needed if you need to run `make deploy` on (cross-compilation to) macOS.
|
||||
* Not-Qt-bundled zlib is required to build the [DMG tool](../contrib/macdeploy/README.md#deterministic-macos-dmg-notes) from the libdmg-hfsplus project.
|
||||
220
doc/descriptors.md
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
# Support for Output Descriptors in DigiByte Core
|
||||
|
||||
Since DigiByte Core v0.17, there is support for Output Descriptors. This is a
|
||||
simple language which can be used to describe collections of output scripts.
|
||||
Supporting RPCs are:
|
||||
- `scantxoutset` takes as input descriptors to scan for, and also reports
|
||||
specialized descriptors for the matching UTXOs.
|
||||
- `getdescriptorinfo` analyzes a descriptor, and reports a canonicalized version
|
||||
with checksum added.
|
||||
- `deriveaddresses` takes as input a descriptor and computes the corresponding
|
||||
addresses.
|
||||
- `listunspent` outputs a specialized descriptor for the reported unspent outputs.
|
||||
- `getaddressinfo` outputs a descriptor for solvable addresses (since v0.18).
|
||||
- `importmulti` takes as input descriptors to import into the wallet
|
||||
(since v0.18).
|
||||
- `generatetodescriptor` takes as input a descriptor and generates coins to it
|
||||
(`regtest` only, since v0.19).
|
||||
- `utxoupdatepsbt` takes as input descriptors to add information to the psbt
|
||||
(since v0.19).
|
||||
- `createmultisig` and `addmultisigaddress` return descriptors as well (since v0.20)
|
||||
|
||||
This document describes the language. For the specifics on usage, see the RPC
|
||||
documentation for the functions mentioned above.
|
||||
|
||||
## Features
|
||||
|
||||
Output descriptors currently support:
|
||||
- Pay-to-pubkey scripts (P2PK), through the `pk` function.
|
||||
- Pay-to-pubkey-hash scripts (P2PKH), through the `pkh` function.
|
||||
- Pay-to-witness-pubkey-hash scripts (P2WPKH), through the `wpkh` function.
|
||||
- Pay-to-script-hash scripts (P2SH), through the `sh` function.
|
||||
- Pay-to-witness-script-hash scripts (P2WSH), through the `wsh` function.
|
||||
- Pay-to-taproot outputs (P2TR), through the `tr` function.
|
||||
- Multisig scripts, through the `multi` function.
|
||||
- Multisig scripts where the public keys are sorted lexicographically, through the `sortedmulti` function.
|
||||
- Any type of supported address through the `addr` function.
|
||||
- Raw hex scripts through the `raw` function.
|
||||
- Public keys (compressed and uncompressed) in hex notation, or BIP32 extended pubkeys with derivation paths.
|
||||
|
||||
## Examples
|
||||
|
||||
- `pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)` describes a P2PK output with the specified public key.
|
||||
- `pkh(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)` describes a P2PKH output with the specified public key.
|
||||
- `wpkh(02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9)` describes a P2WPKH output with the specified public key.
|
||||
- `sh(wpkh(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556))` describes a P2SH-P2WPKH output with the specified public key.
|
||||
- `combo(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)` describes any P2PK, P2PKH, P2WPKH, or P2SH-P2WPKH output with the specified public key.
|
||||
- `sh(wsh(pkh(02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13)))` describes an (overly complicated) P2SH-P2WSH-P2PKH output with the specified public key.
|
||||
- `multi(1,022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4,025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc)` describes a bare *1-of-2* multisig output with keys in the specified order.
|
||||
- `sh(multi(2,022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01,03acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe))` describes a P2SH *2-of-2* multisig output with keys in the specified order.
|
||||
- `sh(sortedmulti(2,03acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe,022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01))` describes a P2SH *2-of-2* multisig output with keys sorted lexicographically in the resulting redeemScript.
|
||||
- `wsh(multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))` describes a P2WSH *2-of-3* multisig output with keys in the specified order.
|
||||
- `sh(wsh(multi(1,03f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8,03499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4,02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e)))` describes a P2SH-P2WSH *1-of-3* multisig output with keys in the specified order.
|
||||
- `pk(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8)` describes a P2PK output with the public key of the specified xpub.
|
||||
- `pkh(xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw/1/2)` describes a P2PKH output with child key *1/2* of the specified xpub.
|
||||
- `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` describes a set of P2PKH outputs, but additionally specifies that the specified xpub is a child of a master with fingerprint `d34db33f`, and derived using path `44'/0'/0'`.
|
||||
- `wsh(multi(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where the first multisig key is the *1/0/`i`* child of the first specified xpub and the second multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default).
|
||||
- `wsh(sortedmulti(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where one multisig key is the *1/0/`i`* child of the first specified xpub and the other multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default). The order of public keys in the resulting witnessScripts is determined by the lexicographic order of the public keys at that index.
|
||||
- `tr(c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,{pk(fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),pk(e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13)})` describes a P2TR output with the `c6...` x-only pubkey as internal key, and two script paths.
|
||||
|
||||
## Reference
|
||||
|
||||
Descriptors consist of several types of expressions. The top level expression is either a `SCRIPT`, or `SCRIPT#CHECKSUM` where `CHECKSUM` is an 8-character alphanumeric descriptor checksum.
|
||||
|
||||
`SCRIPT` expressions:
|
||||
- `sh(SCRIPT)` (top level only): P2SH embed the argument.
|
||||
- `wsh(SCRIPT)` (top level or inside `sh` only): P2WSH embed the argument.
|
||||
- `pk(KEY)` (anywhere): P2PK output for the given public key.
|
||||
- `pkh(KEY)` (not inside `tr`): P2PKH output for the given public key (use `addr` if you only know the pubkey hash).
|
||||
- `wpkh(KEY)` (top level or inside `sh` only): P2WPKH output for the given compressed pubkey.
|
||||
- `combo(KEY)` (top level only): an alias for the collection of `pk(KEY)` and `pkh(KEY)`. If the key is compressed, it also includes `wpkh(KEY)` and `sh(wpkh(KEY))`.
|
||||
- `multi(k,KEY_1,KEY_2,...,KEY_n)` (not inside `tr`): k-of-n multisig script.
|
||||
- `sortedmulti(k,KEY_1,KEY_2,...,KEY_n)` (not inside `tr`): k-of-n multisig script with keys sorted lexicographically in the resulting script.
|
||||
- `tr(KEY)` or `tr(KEY,TREE)` (top level only): P2TR output with the specified key as internal key, and optionally a tree of script paths.
|
||||
- `addr(ADDR)` (top level only): the script which ADDR expands to.
|
||||
- `raw(HEX)` (top level only): the script whose hex encoding is HEX.
|
||||
|
||||
`KEY` expressions:
|
||||
- Optionally, key origin information, consisting of:
|
||||
- An open bracket `[`
|
||||
- Exactly 8 hex characters for the fingerprint of the key where the derivation starts (see BIP32 for details)
|
||||
- Followed by zero or more `/NUM` or `/NUM'` path elements to indicate unhardened or hardened derivation steps between the fingerprint and the key or xpub/xprv root that follows
|
||||
- A closing bracket `]`
|
||||
- Followed by the actual key, which is either:
|
||||
- Hex encoded public keys (either 66 characters starting with `02` or `03` for a compressed pubkey, or 130 characters starting with `04` for an uncompressed pubkey).
|
||||
- Inside `wpkh` and `wsh`, only compressed public keys are permitted.
|
||||
- Inside `tr`, x-only pubkeys are also permitted (64 hex characters).
|
||||
- [WIF](https://en.digibyte.it/wiki/Wallet_import_format) encoded private keys may be specified instead of the corresponding public key, with the same meaning.
|
||||
- `xpub` encoded extended public key or `xprv` encoded extended private key (as defined in [BIP 32](https://github.com/digibyte-core/bips/blob/master/bip-0032.mediawiki)).
|
||||
- Followed by zero or more `/NUM` unhardened and `/NUM'` hardened BIP32 derivation steps.
|
||||
- Optionally followed by a single `/*` or `/*'` final step to denote all (direct) unhardened or hardened children.
|
||||
- The usage of hardened derivation steps requires providing the private key.
|
||||
|
||||
`TREE` expressions:
|
||||
- any `SCRIPT` expression
|
||||
- An open brace `{`, a `TREE` expression, a comma `,`, a `TREE` expression, and a closing brace `}`
|
||||
|
||||
(Anywhere a `'` suffix is permitted to denote hardened derivation, the suffix `h` can be used instead.)
|
||||
|
||||
`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).
|
||||
- P2SH addresses (base58, of the form `3...` for mainnet or `2...` for testnet, defined in [BIP 13](https://github.com/digibyte-core/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/digibyte-core/bips/blob/master/bip-0173.mediawiki)).
|
||||
|
||||
## Explanation
|
||||
|
||||
### Single-key scripts
|
||||
|
||||
Many single-key constructions are used in practice, generally including
|
||||
P2PK, P2PKH, P2WPKH, and P2SH-P2WPKH. Many more combinations are
|
||||
imaginable, though they may not be optimal: P2SH-P2PK, P2SH-P2PKH,
|
||||
P2WSH-P2PK, P2WSH-P2PKH, P2SH-P2WSH-P2PK, P2SH-P2WSH-P2PKH.
|
||||
|
||||
To describe these, we model these as functions. The functions `pk`
|
||||
(P2PK), `pkh` (P2PKH) and `wpkh` (P2WPKH) take as input a `KEY` expression, and return the
|
||||
corresponding *scriptPubKey*. The functions `sh` (P2SH) and `wsh` (P2WSH)
|
||||
take as input a `SCRIPT` expression, and return the script describing P2SH and P2WSH
|
||||
outputs with the input as embedded script. The names of the functions do
|
||||
not contain "p2" for brevity.
|
||||
|
||||
### Multisig
|
||||
|
||||
Several pieces of software use multi-signature (multisig) scripts based
|
||||
on DigiByte's OP_CHECKMULTISIG opcode. To support these, we introduce the
|
||||
`multi(k,key_1,key_2,...,key_n)` and `sortedmulti(k,key_1,key_2,...,key_n)`
|
||||
functions. They represent a *k-of-n*
|
||||
multisig policy, where any *k* out of the *n* provided `KEY` expressions must
|
||||
sign.
|
||||
|
||||
Key order is significant for `multi()`. A `multi()` expression describes a multisig script
|
||||
with keys in the specified order, and in a search for TXOs, it will not match
|
||||
outputs with multisig scriptPubKeys that have the same keys in a different
|
||||
order. Also, to prevent a combinatorial explosion of the search space, if more
|
||||
than one of the `multi()` key arguments is a BIP32 wildcard path ending in `/*`
|
||||
or `*'`, the `multi()` expression only matches multisig scripts with the `i`th
|
||||
child key from each wildcard path in lockstep, rather than scripts with any
|
||||
combination of child keys from each wildcard path.
|
||||
|
||||
Key order does not matter for `sortedmulti()`. `sortedmulti()` behaves in the same way
|
||||
as `multi()` does but the keys are reordered in the resulting script such that they
|
||||
are lexicographically ordered as described in BIP67.
|
||||
|
||||
### BIP32 derived keys and chains
|
||||
|
||||
Most modern wallet software and hardware uses keys that are derived using
|
||||
BIP32 ("HD keys"). We support these directly by permitting strings
|
||||
consisting of an extended public key (commonly referred to as an *xpub*)
|
||||
plus derivation path anywhere a public key is expected. The derivation
|
||||
path consists of a sequence of 0 or more integers (in the range
|
||||
*0..2<sup>31</sup>-1*) each optionally followed by `'` or `h`, and
|
||||
separated by `/` characters. The string may optionally end with the
|
||||
literal `/*` or `/*'` (or `/*h`) to refer to all unhardened or hardened
|
||||
child keys in a configurable range (by default `0-1000`, inclusive).
|
||||
|
||||
Whenever a public key is described using a hardened derivation step, the
|
||||
script cannot be computed without access to the corresponding private
|
||||
key.
|
||||
|
||||
### Key origin identification
|
||||
|
||||
In order to describe scripts whose signing keys reside on another device,
|
||||
it may be necessary to identify the master key and derivation path an
|
||||
xpub was derived with.
|
||||
|
||||
For example, when following BIP44, it would be useful to describe a
|
||||
change chain directly as `xpub.../44'/0'/0'/1/*` where `xpub...`
|
||||
corresponds with the master key `m`. Unfortunately, since there are
|
||||
hardened derivation steps that follow the xpub, this descriptor does not
|
||||
let you compute scripts without access to the corresponding private keys.
|
||||
Instead, it should be written as `xpub.../1/*`, where xpub corresponds to
|
||||
`m/44'/0'/0'`.
|
||||
|
||||
When interacting with a hardware device, it may be necessary to include
|
||||
the entire path from the master down. [BIP174](https://github.com/digibyte-core/bips/blob/master/bip-0174.mediawiki) standardizes this by
|
||||
providing the master key *fingerprint* (first 32 bit of the Hash160 of
|
||||
the master pubkey), plus all derivation steps. To support constructing
|
||||
these, we permit providing this key origin information inside the
|
||||
descriptor language, even though it does not affect the actual
|
||||
scriptPubKeys it refers to.
|
||||
|
||||
Every public key can be prefixed by an 8-character hexadecimal
|
||||
fingerprint plus optional derivation steps (hardened and unhardened)
|
||||
surrounded by brackets, identifying the master and derivation path the key or xpub
|
||||
that follows was derived with.
|
||||
|
||||
Note that the fingerprint of the parent only serves as a fast way to detect
|
||||
parent and child nodes in software, and software must be willing to deal with
|
||||
collisions.
|
||||
|
||||
### Including private keys
|
||||
|
||||
Often it is useful to communicate a description of scripts along with the
|
||||
necessary private keys. For this reason, anywhere a public key or xpub is
|
||||
supported, a private key in WIF format or xprv may be provided instead.
|
||||
This is useful when private keys are necessary for hardened derivation
|
||||
steps, or for dumping wallet descriptors including private key material.
|
||||
|
||||
### Compatibility with old wallets
|
||||
|
||||
In order to easily represent the sets of scripts currently supported by
|
||||
existing DigiByte Core wallets, a convenience function `combo` is
|
||||
provided, which takes as input a public key, and describes a set of P2PK,
|
||||
P2PKH, P2WPKH, and P2SH-P2WPKH scripts for that key. In case the key is
|
||||
uncompressed, the set only includes P2PK and P2PKH scripts.
|
||||
|
||||
### Checksums
|
||||
|
||||
Descriptors can optionally be suffixed with a checksum to protect against
|
||||
typos or copy-paste errors.
|
||||
|
||||
These checksums consist of 8 alphanumeric characters. As long as errors are
|
||||
restricted to substituting characters in `0123456789()[],'/*abcdefgh@:$%{}`
|
||||
for others in that set and changes in letter case, up to 4 errors will always
|
||||
be detected in descriptors up to 501 characters, and up to 3 errors in longer
|
||||
ones. For larger numbers of errors, or other types of errors, there is a
|
||||
roughly 1 in a trillion chance of not detecting the errors.
|
||||
|
||||
All RPCs in DigiByte Core will include the checksum in their output. Only
|
||||
certain RPCs require checksums on input, including `deriveaddress` and
|
||||
`importmulti`. The checksum for a descriptor without one can be computed
|
||||
using the `getdescriptorinfo` RPC.
|
||||
1335
doc/developer-notes.md
Normal file
64
doc/digibyte-conf.md
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# `vexta.conf` Configuration File
|
||||
|
||||
The configuration file is used by `vextad`, `vexta-qt` and `vexta-cli`.
|
||||
|
||||
All command-line options (except for `-?`, `-help`, `-version` and `-conf`) may be specified in a configuration file, and all configuration file options (except for `includeconf`) may also be specified on the command line. Command-line options override values set in the configuration file and configuration file options override values set in the GUI.
|
||||
|
||||
Changes to the configuration file while `vextad` or `vexta-qt` is running only take effect after restarting.
|
||||
|
||||
## Configuration File Format
|
||||
|
||||
The configuration file is a plain text file and consists of `option=value` entries, one per line. Leading and trailing whitespaces are removed.
|
||||
|
||||
In contrast to the command-line usage:
|
||||
- an option must be specified without leading `-`;
|
||||
- a value of the given option is mandatory; e.g., `testnet=1` (for chain selection options), `noconnect=1` (for negated options).
|
||||
|
||||
### Blank lines
|
||||
|
||||
Blank lines are allowed and ignored by the parser.
|
||||
|
||||
### Comments
|
||||
|
||||
A comment starts with a number sign (`#`) and extends to the end of the line. All comments are ignored by the parser.
|
||||
|
||||
Comments may appear in two ways:
|
||||
- on their own on an otherwise empty line (_preferable_);
|
||||
- after an `option=value` entry.
|
||||
|
||||
### Network specific options
|
||||
|
||||
Network specific options can be:
|
||||
- placed into sections with headers `[main]` (not `[mainnet]`), `[test]` (not `[testnet]`), `[signet]` or `[regtest]`;
|
||||
- prefixed with a chain name; e.g., `regtest.maxmempool=100`.
|
||||
|
||||
Network specific options take precedence over non-network specific options.
|
||||
If multiple values for the same option are found with the same precedence, the
|
||||
first one is generally chosen.
|
||||
|
||||
This means that given the following configuration, `regtest.rpcport` is set to `3000`:
|
||||
|
||||
```
|
||||
regtest=1
|
||||
rpcport=2000
|
||||
regtest.rpcport=3000
|
||||
|
||||
[regtest]
|
||||
rpcport=4000
|
||||
```
|
||||
|
||||
## Configuration File Path
|
||||
|
||||
The configuration file is not automatically created; you can create it using your favorite text editor. By default, the configuration file name is `vexta.conf` and it is located in the Vexta data directory, but both the Vexta data directory and the configuration file path may be changed using the `-datadir` and `-conf` command-line options.
|
||||
|
||||
The `includeconf=<file>` option in the `vexta.conf` file can be used to include additional configuration files.
|
||||
|
||||
### Default configuration file locations
|
||||
|
||||
Operating System | Data Directory | Example Path
|
||||
-- | -- | --
|
||||
Windows | `%APPDATA%\Vexta\` | `C:\Users\username\AppData\Roaming\Vexta\vexta.conf`
|
||||
Linux | `$HOME/.vexta/` | `/home/username/.vexta/vexta.conf`
|
||||
macOS | `$HOME/Library/Application Support/Vexta/` | `/Users/username/Library/Application Support/Vexta/vexta.conf`
|
||||
|
||||
You can find an example vexta.conf file in [share/examples/vexta.conf](../share/examples/vexta.conf).
|
||||
BIN
doc/digibyte_logo_doxygen.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
54
doc/dnsseed-policy.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
Expectations for DNS Seed operators
|
||||
====================================
|
||||
|
||||
DigiByte Core attempts to minimize the level of trust in DNS seeds,
|
||||
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
|
||||
level of trust within the DigiByte community.
|
||||
|
||||
Other implementations of DigiByte software may also use the same
|
||||
seeds and may be more exposed. In light of this exposure, this
|
||||
document establishes some basic expectations for operating dnsseeds.
|
||||
|
||||
0. A DNS seed operating organization or person is expected to follow good
|
||||
host security practices, maintain control of applicable infrastructure,
|
||||
and not sell or transfer control of the DNS seed. Any hosting services
|
||||
contracted by the operator are equally expected to uphold these expectations.
|
||||
|
||||
1. The DNS seed results must consist exclusively of fairly selected and
|
||||
functioning DigiByte nodes from the public network to the best of the
|
||||
operator's understanding and capability.
|
||||
|
||||
2. For the avoidance of doubt, the results may be randomized but must not
|
||||
single-out any group of hosts to receive different results unless due to an
|
||||
urgent technical necessity and disclosed.
|
||||
|
||||
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
|
||||
for the operation of the service or urgent health of the DigiByte
|
||||
network and must not be retained longer than necessary nor disclosed
|
||||
to any third party.
|
||||
|
||||
5. Information gathered as a result of the operators node-spidering
|
||||
(not from DNS queries) may be freely published or retained, but only
|
||||
if this data was not made more complete by biasing node connectivity
|
||||
(a violation of expectation (1)).
|
||||
|
||||
6. Operators are encouraged, but not required, to publicly document the
|
||||
details of their operating practices.
|
||||
|
||||
7. A reachable email contact address must be published for inquiries
|
||||
related to the DNS seed operation.
|
||||
|
||||
If these expectations cannot be satisfied the operator should
|
||||
discontinue providing services and contact the active DigiByte
|
||||
Core development team as well as posting on
|
||||
[digibyte-dev](https://lists.linuxfoundation.org/mailman/listinfo/digibyte-dev).
|
||||
|
||||
Behavior outside of these expectations may be reasonable in some
|
||||
situations but should be discussed in public in advance.
|
||||
|
||||
See also
|
||||
----------
|
||||
- [digibyte-seeder](https://github.com/sipa/digibyte-seeder) is a reference implementation of a DNS seed.
|
||||
171
doc/external-signer.md
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
# Support for signing transactions outside of DigiByte Core
|
||||
|
||||
DigiByte Core can be launched with `-signer=<cmd>` where `<cmd>` is an external tool which can sign transactions and perform other functions. For example, it can be used to communicate with a hardware wallet.
|
||||
|
||||
## Example usage
|
||||
|
||||
The following example is based on the [HWI](https://github.com/digibyte-core/HWI) tool. Version 2.0 or newer is required. Although this tool is hosted under the DigiByte Core GitHub organization and maintained by DigiByte Core developers, it should be used with caution. It is considered experimental and has far less review than DigiByte Core itself. Be particularly careful when running tools such as these on a computer with private keys on it.
|
||||
|
||||
When using a hardware wallet, consult the manufacturer website for (alternative) software they recommend. As long as their software conforms to the standard below, it should be able to work with DigiByte Core.
|
||||
|
||||
Start DigiByte Core:
|
||||
|
||||
```sh
|
||||
$ digibyted -signer=../HWI/hwi.py
|
||||
```
|
||||
|
||||
### Device setup
|
||||
|
||||
Follow the hardware manufacturers instructions for the initial device setup, as well as their instructions for creating a backup. Alternatively, for some devices, you can use the `setup`, `restore` and `backup` commands provided by [HWI](https://github.com/digibyte-core/HWI).
|
||||
|
||||
### Create wallet and import keys
|
||||
|
||||
Get a list of signing devices / services:
|
||||
|
||||
```
|
||||
$ digibyte-cli enumeratesigners
|
||||
{
|
||||
"signers": [
|
||||
{
|
||||
"fingerprint": "c8df832a"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
The master key fingerprint is used to identify a device.
|
||||
|
||||
Create a wallet, this automatically imports the public keys:
|
||||
|
||||
```sh
|
||||
$ digibyte-cli createwallet "hww" true true "" true true true
|
||||
```
|
||||
|
||||
### Verify an address
|
||||
|
||||
Display an address on the device:
|
||||
|
||||
```sh
|
||||
$ digibyte-cli -rpcwallet=<wallet> getnewaddress
|
||||
$ digibyte-cli -rpcwallet=<wallet> walletdisplayaddress <address>
|
||||
```
|
||||
|
||||
Replace `<address>` with the result of `getnewaddress`.
|
||||
|
||||
### Spending
|
||||
|
||||
Under the hood this uses a [Partially Signed DigiByte Transaction](psbt.md).
|
||||
|
||||
```sh
|
||||
$ digibyte-cli -rpcwallet=<wallet> sendtoaddress <address> <amount>
|
||||
```
|
||||
|
||||
This prompts your hardware wallet to sign, and fail if it's not connected. If successful
|
||||
it automatically broadcasts the transaction.
|
||||
|
||||
```sh
|
||||
{"complete": true, "txid": <txid>}
|
||||
```
|
||||
|
||||
## Signer API
|
||||
|
||||
In order to be compatible with DigiByte Core any signer command should conform to the specification below. This specification is subject to change. Ideally a BIP should propose a standard so that other wallets can also make use of it.
|
||||
|
||||
Prerequisite knowledge:
|
||||
* [Output Descriptors](descriptors.md)
|
||||
* Partially Signed DigiByte Transaction ([PSBT](psbt.md))
|
||||
|
||||
### `enumerate` (required)
|
||||
|
||||
Usage:
|
||||
```
|
||||
$ <cmd> enumerate
|
||||
[
|
||||
{
|
||||
"fingerprint": "00000000"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
The command MUST return an (empty) array with at least a `fingerprint` field.
|
||||
|
||||
A future extension could add an optional return field with device capabilities. Perhaps a descriptor with wildcards. For example: `["pkh("44'/0'/$'/{0,1}/*"), sh(wpkh("49'/0'/$'/{0,1}/*")), wpkh("84'/0'/$'/{0,1}/*")]`. This would indicate the device supports legacy, wrapped SegWit and native SegWit. In addition it restricts the derivation paths that can used for those, to maintain compatibility with other wallet software. It also indicates the device, or the driver, doesn't support multisig.
|
||||
|
||||
A future extension could add an optional return field `reachable`, in case `<cmd>` knows a signer exists but can't currently reach it.
|
||||
|
||||
### `signtransaction` (required)
|
||||
|
||||
Usage:
|
||||
```
|
||||
$ <cmd> --fingerprint=<fingerprint> (--testnet) signtransaction <psbt>
|
||||
base64_encode_signed_psbt
|
||||
```
|
||||
|
||||
The command returns a psbt with any signatures.
|
||||
|
||||
The `psbt` SHOULD include bip32 derivations. The command SHOULD fail if none of the bip32 derivations match a key owned by the device.
|
||||
|
||||
The command SHOULD fail if the user cancels.
|
||||
|
||||
The command MAY complain if `--testnet` is set, but any of the BIP32 derivation paths contain a coin type other than `1h` (and vice versa).
|
||||
|
||||
### `getdescriptors` (optional)
|
||||
|
||||
Usage:
|
||||
|
||||
```
|
||||
$ <cmd> --fingerprint=<fingerprint> (--testnet) getdescriptors <account>
|
||||
<xpub>
|
||||
```
|
||||
|
||||
Returns descriptors supported by the device. Example:
|
||||
|
||||
```
|
||||
$ <cmd> --fingerprint=00000000 --testnet getdescriptors
|
||||
{
|
||||
"receive": [
|
||||
"pkh([00000000/44h/0h/0h]xpub6C.../0/*)#fn95jwmg",
|
||||
"sh(wpkh([00000000/49h/0h/0h]xpub6B..../0/*))#j4r9hntt",
|
||||
"wpkh([00000000/84h/0h/0h]xpub6C.../0/*)#qw72dxa9"
|
||||
],
|
||||
"internal": [
|
||||
"pkh([00000000/44h/0h/0h]xpub6C.../1/*)#c8q40mts",
|
||||
"sh(wpkh([00000000/49h/0h/0h]xpub6B..../1/*))#85dn0v75",
|
||||
"wpkh([00000000/84h/0h/0h]xpub6C..../1/*)#36mtsnda"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### `displayaddress` (optional)
|
||||
|
||||
Usage:
|
||||
```
|
||||
<cmd> --fingerprint=<fingerprint> (--testnet) displayaddress --desc descriptor
|
||||
```
|
||||
|
||||
Example, display the first native SegWit receive address on Testnet:
|
||||
|
||||
```
|
||||
<cmd> --fingerprint=00000000 --testnet displayaddress --desc "wpkh([00000000/84h/1h/0h]tpubDDUZ..../0/0)"
|
||||
```
|
||||
|
||||
The command MUST be able to figure out the address type from the descriptor.
|
||||
|
||||
If <descriptor> contains a master key fingerprint, the command MUST fail if it does not match the fingerprint known by the device.
|
||||
|
||||
If <descriptor> contains an xpub, the command MUST fail if it does not match the xpub known by the device.
|
||||
|
||||
The command MAY complain if `--testnet` is set, but the BIP32 coin type is not `1h` (and vice versa).
|
||||
|
||||
## How DigiByte Core uses the Signer API
|
||||
|
||||
The `enumeratesigners` RPC simply calls `<cmd> enumerate`.
|
||||
|
||||
The `createwallet` RPC calls:
|
||||
|
||||
* `<cmd> --fingerprint=00000000 getdescriptors 0`
|
||||
|
||||
It then imports descriptors for all support address types, in a BIP44/49/84 compatible manner.
|
||||
|
||||
The `walletdisplayaddress` RPC reuses some code from `getaddressinfo` on the provided address and obtains the inferred descriptor. It then calls `<cmd> --fingerprint=00000000 displayaddress --desc=<descriptor>`.
|
||||
|
||||
`sendtoaddress` and `sendmany` check `inputs->bip32_derivs` to see if any inputs have the same `master_fingerprint` as the signer. If so, it calls `<cmd> --fingerprint=00000000 signtransaction <psbt>`. It waits for the device to return a (partially) signed psbt, tries to finalize it and broadcasts the transaction.
|
||||
128
doc/files.md
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
# DigiByte Core file system
|
||||
|
||||
**Contents**
|
||||
|
||||
- [Data directory location](#data-directory-location)
|
||||
|
||||
- [Data directory layout](#data-directory-layout)
|
||||
|
||||
- [Multi-wallet environment](#multi-wallet-environment)
|
||||
|
||||
- [Berkeley DB database based wallets](#berkeley-db-database-based-wallets)
|
||||
|
||||
- [SQLite database based wallets](#sqlite-database-based-wallets)
|
||||
|
||||
- [GUI settings](#gui-settings)
|
||||
|
||||
- [Legacy subdirectories and files](#legacy-subdirectories-and-files)
|
||||
|
||||
- [Notes](#notes)
|
||||
|
||||
## Data directory location
|
||||
|
||||
The data directory is the default location where the DigiByte Core files are stored.
|
||||
|
||||
1. The default data directory paths for supported platforms are:
|
||||
|
||||
Platform | Data directory path
|
||||
---------|--------------------
|
||||
Linux | `$HOME/.digibyte/`
|
||||
macOS | `$HOME/Library/Application Support/DigiByte/`
|
||||
Windows | `%APPDATA%\DigiByte\` <sup>[\[1\]](#note1)</sup>
|
||||
|
||||
2. A custom data directory path can be specified with the `-datadir` option.
|
||||
|
||||
3. All content of the data directory, except for `digibyte.conf` file, is chain-specific. This means the actual data directory paths for non-mainnet cases differ:
|
||||
|
||||
Chain option | Data directory path
|
||||
-------------------------------|------------------------------
|
||||
`-chain=main` (default) | *path_to_datadir*`/`
|
||||
`-chain=test` or `-testnet` | *path_to_datadir*`/testnet3/`
|
||||
`-chain=signet` or `-signet` | *path_to_datadir*`/signet/`
|
||||
`-chain=regtest` or `-regtest` | *path_to_datadir*`/regtest/`
|
||||
|
||||
## Data directory layout
|
||||
|
||||
Subdirectory | File(s) | Description
|
||||
-------------------|-----------------------|------------
|
||||
`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/` | `blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Actual DigiByte 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)
|
||||
`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/blockfilter/basic/db/` | LevelDB database | Blockfilter index LevelDB database for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
|
||||
`indexes/blockfilter/basic/` | `fltrNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Blockfilter index filters for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
|
||||
`indexes/coinstats/db/` | LevelDB database | Coinstats index; *optional*, used if `-coinstatsindex=1`
|
||||
`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
|
||||
`./` | `banlist.dat` | Stores the addresses/subnets of banned nodes (deprecated). `digibyted` or `digibyte-qt` no longer save the banlist to this file, but read it on startup if `banlist.json` is not present.
|
||||
`./` | `banlist.json` | Stores the addresses/subnets of banned nodes.
|
||||
`./` | `digibyte.conf` | User-defined [configuration settings](digibyte-conf.md) for `digibyted` or `digibyte-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
|
||||
`./` | `digibyted.pid` | Stores the process ID (PID) of `digibyted` or `digibyte-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 `digibyted` or `digibyte-qt`; can be specified by `-debuglogfile` option
|
||||
`./` | `fee_estimates.dat` | Stores statistics used to estimate minimum transaction fees required for confirmation
|
||||
`./` | `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
|
||||
`./` | `mempool.dat` | Dump of the mempool's transactions
|
||||
`./` | `onion_v3_private_key` | Cached Tor onion service private key for `-listenonion` option
|
||||
`./` | `i2p_private_key` | Private key that corresponds to our I2P address. When `-i2psam=` is specified the contents of this file is used to identify ourselves for making outgoing connections to I2P peers and possibly accepting incoming ones. Automatically generated if it does not exist.
|
||||
`./` | `peers.dat` | Peer IP address database (custom format)
|
||||
`./` | `settings.json` | Read-write settings set through GUI or RPC interfaces, augmenting manual settings from [digibyte.conf](digibyte-conf.md). File is created automatically if read-write settings storage is not disabled with `-nosettings` option. Path can be specified with `-settings` option
|
||||
`./` | `.cookie` | Session RPC authentication cookie; if used, created at start and deleted on shutdown; can be specified by `-rpccookiefile` option
|
||||
`./` | `.lock` | Data directory lock file
|
||||
|
||||
## Multi-wallet environment
|
||||
|
||||
Wallets are Berkeley DB (BDB) or SQLite databases.
|
||||
|
||||
1. Each user-defined wallet named "wallet_name" resides in the `wallets/wallet_name/` subdirectory.
|
||||
|
||||
2. The default (unnamed) wallet resides in `wallets/` subdirectory; if the latter does not exist, the wallet resides in the data directory.
|
||||
|
||||
3. A wallet database path can be specified with the `-wallet` option.
|
||||
|
||||
4. `wallet.dat` files must not be shared across different node instances, as that can result in key-reuse and double-spends due the lack of synchronization between instances.
|
||||
|
||||
5. Any copy or backup of the wallet should be done through a `backupwallet` call in order to update and lock the wallet, preventing any file corruption caused by updates during the copy.
|
||||
|
||||
|
||||
### Berkeley DB database based wallets
|
||||
|
||||
Subdirectory | File(s) | Description
|
||||
-------------|-------------------|-------------
|
||||
`database/` | BDB logging files | Part of BDB environment; created at start and deleted on shutdown; a user *must keep it as safe* as personal wallet `wallet.dat`
|
||||
`./` | `db.log` | BDB error file
|
||||
`./` | `wallet.dat` | Personal wallet (a BDB database) with keys and transactions
|
||||
`./` | `.walletlock` | BDB wallet lock file
|
||||
|
||||
### SQLite database based wallets
|
||||
|
||||
Subdirectory | File | Description
|
||||
-------------|----------------------|-------------
|
||||
`./` | `wallet.dat` | Personal wallet (a SQLite database) with keys and transactions
|
||||
`./` | `wallet.dat-journal` | SQLite Rollback Journal file for `wallet.dat`. Usually created at start and deleted on shutdown. A user *must keep it as safe* as the `wallet.dat` file.
|
||||
|
||||
|
||||
## GUI settings
|
||||
|
||||
`digibyte-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
|
||||
|
||||
These subdirectories and files are no longer used by DigiByte Core:
|
||||
|
||||
Path | Description | Repository notes
|
||||
---------------|-------------|-----------------
|
||||
`blktree/` | Blockchain index; replaced by `blocks/index/` in [0.8.0](https://github.com/digibyte-core/digibyte/blob/master/doc/release-notes/release-notes-0.8.0.md#improvements) | [PR #2231](https://github.com/digibyte-core/digibyte/pull/2231), [`8fdc94cc`](https://github.com/digibyte-core/digibyte/commit/8fdc94cc8f0341e96b1edb3a5b56811c0b20bd15)
|
||||
`coins/` | Unspent transaction output database; replaced by `chainstate/` in 0.8.0 | [PR #2231](https://github.com/digibyte-core/digibyte/pull/2231), [`8fdc94cc`](https://github.com/digibyte-core/digibyte/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/digibyte-core/digibyte/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/digibyte-core/digibyte/pull/1677)
|
||||
`addr.dat` | Peer IP address BDB database; replaced by `peers.dat` in [0.7.0](https://github.com/digibyte-core/digibyte/blob/master/doc/release-notes/release-notes-0.7.0.md) | [PR #1198](https://github.com/digibyte-core/digibyte/pull/1198), [`928d3a01`](https://github.com/digibyte-core/digibyte/commit/928d3a011cc66c7f907c4d053f674ea77dc611cc)
|
||||
`onion_private_key` | Cached Tor onion service private key for `-listenonion` option. Was used for Tor v2 services; replaced by `onion_v3_private_key` in [0.21.0](https://github.com/digibyte-core/digibyte/blob/master/doc/release-notes/release-notes-0.21.0.md) | [PR #19954](https://github.com/digibyte-core/digibyte/pull/19954)
|
||||
|
||||
## Notes
|
||||
|
||||
<a name="note1">1</a>. The `/` (slash, U+002F) is used as the platform-independent path component separator in this document.
|
||||
|
||||
<a name="note2">2</a>. `NNNNN` matches `[0-9]{5}` regex.
|
||||
262
doc/fuzzing.md
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
# Fuzzing DigiByte Core using libFuzzer
|
||||
|
||||
## Quickstart guide
|
||||
|
||||
To quickly get started fuzzing DigiByte Core using [libFuzzer](https://llvm.org/docs/LibFuzzer.html):
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/digibyte-core/digibyte
|
||||
$ cd digibyte/
|
||||
$ ./autogen.sh
|
||||
$ 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
|
||||
# libFuzzer" on https://github.com/digibyte-core/digibyte/blob/master/doc/fuzzing.md#macos-hints-for-libfuzzer
|
||||
$ make
|
||||
$ FUZZ=process_message src/test/fuzz/fuzz
|
||||
# abort fuzzing using ctrl-c
|
||||
```
|
||||
|
||||
## Fuzzing harnesses and output
|
||||
|
||||
[`process_message`](https://github.com/digibyte-core/digibyte/blob/master/src/test/fuzz/process_message.cpp) is a fuzzing harness for the [`ProcessMessage(...)` function (`net_processing`)](https://github.com/digibyte-core/digibyte/blob/master/src/net_processing.cpp). The available fuzzing harnesses are found in [`src/test/fuzz/`](https://github.com/digibyte-core/digibyte/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).
|
||||
|
||||
If you specify a corpus directory then any new coverage increasing inputs will be saved there:
|
||||
|
||||
```sh
|
||||
$ mkdir -p process_message-seeded-from-thin-air/
|
||||
$ FUZZ=process_message src/test/fuzz/fuzz process_message-seeded-from-thin-air/
|
||||
INFO: Seed: 840522292
|
||||
INFO: Loaded 1 modules (424174 inline 8-bit counters): 424174 [0x55e121ef9ab8, 0x55e121f613a6),
|
||||
INFO: Loaded 1 PC tables (424174 PCs): 424174 [0x55e121f613a8,0x55e1225da288),
|
||||
INFO: 0 files found in process_message-seeded-from-thin-air/
|
||||
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
|
||||
INFO: A corpus is not provided, starting from an empty corpus
|
||||
#2 INITED cov: 94 ft: 95 corp: 1/1b exec/s: 0 rss: 150Mb
|
||||
#3 NEW cov: 95 ft: 96 corp: 2/3b lim: 4 exec/s: 0 rss: 150Mb L: 2/2 MS: 1 InsertByte-
|
||||
#4 NEW cov: 96 ft: 98 corp: 3/7b lim: 4 exec/s: 0 rss: 150Mb L: 4/4 MS: 1 CrossOver-
|
||||
#21 NEW cov: 96 ft: 100 corp: 4/11b lim: 4 exec/s: 0 rss: 150Mb L: 4/4 MS: 2 ChangeBit-CrossOver-
|
||||
#324 NEW cov: 101 ft: 105 corp: 5/12b lim: 6 exec/s: 0 rss: 150Mb L: 6/6 MS: 5 CrossOver-ChangeBit-CopyPart-ChangeBit-ChangeBinInt-
|
||||
#1239 REDUCE cov: 102 ft: 106 corp: 6/24b lim: 14 exec/s: 0 rss: 150Mb L: 13/13 MS: 5 ChangeBit-CrossOver-EraseBytes-ChangeBit-InsertRepeatedBytes-
|
||||
#1272 REDUCE cov: 102 ft: 106 corp: 6/23b lim: 14 exec/s: 0 rss: 150Mb L: 12/12 MS: 3 ChangeBinInt-ChangeBit-EraseBytes-
|
||||
NEW_FUNC[1/677]: 0x55e11f456690 in std::_Function_base::~_Function_base() /usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/std_function.h:255
|
||||
NEW_FUNC[2/677]: 0x55e11f465800 in CDataStream::CDataStream(std::vector<unsigned char, std::allocator<unsigned char> > const&, int, int) src/./streams.h:248
|
||||
#2125 REDUCE cov: 4820 ft: 4867 corp: 7/29b lim: 21 exec/s: 0 rss: 155Mb L: 6/12 MS: 2 CopyPart-CMP- DE: "block"-
|
||||
NEW_FUNC[1/9]: 0x55e11f64d790 in std::_Rb_tree<uint256, std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > >, std::_Select1st<std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > > >, std::less<uint256>, std::allocator<std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > > > >::~_Rb_tree() /usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_tree.h:972
|
||||
NEW_FUNC[2/9]: 0x55e11f64d870 in std::_Rb_tree<uint256, std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > >, std::_Select1st<std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > > >, std::less<uint256>, std::allocator<std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > > > >::_M_erase(std::_Rb_tree_node<std::pair<uint256 const, std::chrono::duration<long, std::ratio<1l, 1000000l> > > >*) /usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_tree.h:1875
|
||||
#2228 NEW cov: 4898 ft: 4971 corp: 8/35b lim: 21 exec/s: 0 rss: 156Mb L: 6/12 MS: 3 EraseBytes-CopyPart-PersAutoDict- DE: "block"-
|
||||
NEW_FUNC[1/5]: 0x55e11f46df70 in std::enable_if<__and_<std::allocator_traits<zero_after_free_allocator<char> >::__construct_helper<char, unsigned char const&>::type>::value, void>::type std::allocator_traits<zero_after_free_allocator<char> >::_S_construct<char, unsigned char const&>(zero_after_free_allocator<char>&, char*, unsigned char const&) /usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/alloc_traits.h:243
|
||||
NEW_FUNC[2/5]: 0x55e11f477390 in std::vector<unsigned char, std::allocator<unsigned char> >::data() /usr/lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:1056
|
||||
#2456 NEW cov: 4933 ft: 5042 corp: 9/55b lim: 21 exec/s: 0 rss: 160Mb L: 20/20 MS: 3 ChangeByte-InsertRepeatedBytes-PersAutoDict- DE: "block"-
|
||||
#2467 NEW cov: 4933 ft: 5043 corp: 10/76b lim: 21 exec/s: 0 rss: 161Mb L: 21/21 MS: 1 InsertByte-
|
||||
#4215 NEW cov: 4941 ft: 5129 corp: 17/205b lim: 29 exec/s: 4215 rss: 350Mb L: 29/29 MS: 5 InsertByte-ChangeBit-CopyPart-InsertRepeatedBytes-CrossOver-
|
||||
#4567 REDUCE cov: 4941 ft: 5129 corp: 17/204b lim: 29 exec/s: 4567 rss: 404Mb L: 24/29 MS: 2 ChangeByte-EraseBytes-
|
||||
#6642 NEW cov: 4941 ft: 5138 corp: 18/244b lim: 43 exec/s: 2214 rss: 450Mb L: 43/43 MS: 3 CopyPart-CMP-CrossOver- DE: "verack"-
|
||||
# abort fuzzing using ctrl-c
|
||||
$ ls process_message-seeded-from-thin-air/
|
||||
349ac589fc66a09abc0b72bb4ae445a7a19e2cd8 4df479f1f421f2ea64b383cd4919a272604087a7
|
||||
a640312c98dcc55d6744730c33e41c5168c55f09 b135de16e4709558c0797c15f86046d31c5d86d7
|
||||
c000f7b41b05139de8b63f4cbf7d1ad4c6e2aa7f fc52cc00ec1eb1c08470e69f809ae4993fa70082
|
||||
$ cat --show-nonprinting process_message-seeded-from-thin-air/349ac589fc66a09abc0b72bb4ae445a7a19e2cd8
|
||||
block^@M-^?M-^?M-^?M-^?M-^?nM-^?M-^?
|
||||
```
|
||||
|
||||
In this case the fuzzer managed to create a `block` message which when passed to `ProcessMessage(...)` increased coverage.
|
||||
|
||||
## Fuzzing corpora
|
||||
|
||||
The project's collection of seed corpora is found in the [`digibyte-core/qa-assets`](https://github.com/digibyte-core/qa-assets) repo.
|
||||
|
||||
To fuzz `process_message` using the [`digibyte-core/qa-assets`](https://github.com/digibyte-core/qa-assets) seed corpus:
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/digibyte-core/qa-assets
|
||||
$ FUZZ=process_message src/test/fuzz/fuzz qa-assets/fuzz_seed_corpus/process_message/
|
||||
INFO: Seed: 1346407872
|
||||
INFO: Loaded 1 modules (424174 inline 8-bit counters): 424174 [0x55d8a9004ab8, 0x55d8a906c3a6),
|
||||
INFO: Loaded 1 PC tables (424174 PCs): 424174 [0x55d8a906c3a8,0x55d8a96e5288),
|
||||
INFO: 991 files found in qa-assets/fuzz_seed_corpus/process_message/
|
||||
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
|
||||
INFO: seed corpus: files: 991 min: 1b max: 1858b total: 288291b rss: 150Mb
|
||||
#993 INITED cov: 7063 ft: 8236 corp: 25/3821b exec/s: 0 rss: 181Mb
|
||||
…
|
||||
```
|
||||
|
||||
## Reproduce a fuzzer crash reported by the CI
|
||||
|
||||
- `cd` into the `qa-assets` directory and update it with `git pull qa-assets`
|
||||
- locate the crash case described in the CI output, e.g. `Test unit written to
|
||||
./crash-1bc91feec9fc00b107d97dc225a9f2cdaa078eb6`
|
||||
- make sure to compile with all sanitizers, if they are needed (fuzzing runs
|
||||
more slowly with sanitizers enabled, but a crash should be reproducible very
|
||||
quickly from a crash case)
|
||||
- run the fuzzer with the case number appended to the seed corpus path:
|
||||
`FUZZ=process_message src/test/fuzz/fuzz
|
||||
qa-assets/fuzz_seed_corpus/process_message/1bc91feec9fc00b107d97dc225a9f2cdaa078eb6`
|
||||
|
||||
## Submit improved coverage
|
||||
|
||||
If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`digibyte-core/qa-assets`](https://github.com/digibyte-core/qa-assets) repo.
|
||||
|
||||
Every single pull request submitted against the DigiByte Core repo is automatically tested against all inputs in the [`digibyte-core/qa-assets`](https://github.com/digibyte-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make DigiByte Core more robust.
|
||||
|
||||
## macOS hints for libFuzzer
|
||||
|
||||
The default Clang/LLVM version supplied by Apple on macOS does not include
|
||||
fuzzing libraries, so macOS users will need to install a full version, for
|
||||
example using `brew install llvm`.
|
||||
|
||||
Should you run into problems with the address sanitizer, it is possible you
|
||||
may need to run `./configure` with `--disable-asm` to avoid errors
|
||||
with certain assembly code from DigiByte Core's code. See [developer notes on sanitizers](https://github.com/digibyte-core/digibyte/blob/master/doc/developer-notes.md#sanitizers)
|
||||
for more information.
|
||||
|
||||
You may also need to take care of giving the correct path for `clang` and
|
||||
`clang++`, like `CC=/path/to/clang CXX=/path/to/clang++` if the non-systems
|
||||
`clang` does not come first in your path.
|
||||
|
||||
Full configure that was tested on macOS Catalina with `brew` installed `llvm`:
|
||||
|
||||
```sh
|
||||
./configure --enable-fuzz --with-sanitizers=fuzzer,address,undefined CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ --disable-asm
|
||||
```
|
||||
|
||||
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 DigiByte Core using afl++
|
||||
|
||||
## Quickstart guide
|
||||
|
||||
To quickly get started fuzzing DigiByte Core using [afl++](https://github.com/AFLplusplus/AFLplusplus):
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/digibyte-core/digibyte
|
||||
$ cd digibyte/
|
||||
$ git clone https://github.com/AFLplusplus/AFLplusplus
|
||||
$ make -C AFLplusplus/ source-only
|
||||
$ ./autogen.sh
|
||||
# If afl-clang-lto is not available, see
|
||||
# https://github.com/AFLplusplus/AFLplusplus#a-selecting-the-best-afl-compiler-for-instrumenting-the-target
|
||||
$ CC=$(pwd)/AFLplusplus/afl-clang-lto CXX=$(pwd)/AFLplusplus/afl-clang-lto++ ./configure --enable-fuzz
|
||||
$ make
|
||||
# For macOS you may need to ignore x86 compilation checks when running "make". If so,
|
||||
# try compiling using: AFL_NO_X86=1 make
|
||||
$ mkdir -p inputs/ outputs/
|
||||
$ echo A > inputs/thin-air-input
|
||||
$ FUZZ=bech32 AFLplusplus/afl-fuzz -i inputs/ -o outputs/ -- src/test/fuzz/fuzz
|
||||
# You may have to change a few kernel parameters to test optimally - afl-fuzz
|
||||
# will print an error and suggestion if so.
|
||||
```
|
||||
|
||||
Read the [afl++ documentation](https://github.com/AFLplusplus/AFLplusplus) for more information.
|
||||
|
||||
# Fuzzing DigiByte Core using Honggfuzz
|
||||
|
||||
## Quickstart guide
|
||||
|
||||
To quickly get started fuzzing DigiByte Core using [Honggfuzz](https://github.com/google/honggfuzz):
|
||||
|
||||
```sh
|
||||
$ git clone https://github.com/digibyte-core/digibyte
|
||||
$ cd digibyte/
|
||||
$ ./autogen.sh
|
||||
$ git clone https://github.com/google/honggfuzz
|
||||
$ cd honggfuzz/
|
||||
$ make
|
||||
$ cd ..
|
||||
$ CC=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang CXX=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ ./configure --enable-fuzz --with-sanitizers=address,undefined
|
||||
$ make
|
||||
$ mkdir -p inputs/
|
||||
$ FUZZ=process_message honggfuzz/honggfuzz -i inputs/ -- src/test/fuzz/fuzz
|
||||
```
|
||||
|
||||
Read the [Honggfuzz documentation](https://github.com/google/honggfuzz/blob/master/docs/USAGE.md) for more information.
|
||||
|
||||
## Fuzzing the DigiByte Core P2P layer using Honggfuzz NetDriver
|
||||
|
||||
Honggfuzz NetDriver allows for very easy fuzzing of TCP servers such as DigiByte
|
||||
Core without having to write any custom fuzzing harness. The `digibyted` server
|
||||
process is largely fuzzed without modification.
|
||||
|
||||
This makes the fuzzing highly realistic: a bug reachable by the fuzzer is likely
|
||||
also remotely triggerable by an untrusted peer.
|
||||
|
||||
To quickly get started fuzzing the P2P layer using Honggfuzz NetDriver:
|
||||
|
||||
```sh
|
||||
$ mkdir digibyte-honggfuzz-p2p/
|
||||
$ cd digibyte-honggfuzz-p2p/
|
||||
$ git clone https://github.com/digibyte-core/digibyte
|
||||
$ cd digibyte/
|
||||
$ ./autogen.sh
|
||||
$ git clone https://github.com/google/honggfuzz
|
||||
$ cd honggfuzz/
|
||||
$ make
|
||||
$ cd ..
|
||||
$ CC=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang \
|
||||
CXX=$(pwd)/honggfuzz/hfuzz_cc/hfuzz-clang++ \
|
||||
./configure --disable-wallet --with-gui=no \
|
||||
--with-sanitizers=address,undefined
|
||||
$ git apply << "EOF"
|
||||
diff --git a/src/digibyted.cpp b/src/digibyted.cpp
|
||||
index 455a82e39..2faa3f80f 100644
|
||||
--- a/src/digibyted.cpp
|
||||
+++ b/src/digibyted.cpp
|
||||
@@ -158,7 +158,11 @@ static bool AppInit(int argc, char* argv[])
|
||||
return fRet;
|
||||
}
|
||||
|
||||
+#ifdef HFND_FUZZING_ENTRY_FUNCTION_CXX
|
||||
+HFND_FUZZING_ENTRY_FUNCTION_CXX(int argc, char* argv[])
|
||||
+#else
|
||||
int main(int argc, char* argv[])
|
||||
+#endif
|
||||
{
|
||||
#ifdef WIN32
|
||||
util::WinCmdLineArgs winArgs;
|
||||
diff --git a/src/net.cpp b/src/net.cpp
|
||||
index cf987b699..636a4176a 100644
|
||||
--- a/src/net.cpp
|
||||
+++ b/src/net.cpp
|
||||
@@ -709,7 +709,7 @@ int V1TransportDeserializer::readHeader(const char *pch, unsigned int nBytes)
|
||||
}
|
||||
|
||||
// Check start string, network magic
|
||||
- if (memcmp(hdr.pchMessageStart, m_chain_params.MessageStart(), CMessageHeader::MESSAGE_START_SIZE) != 0) {
|
||||
+ if (false && memcmp(hdr.pchMessageStart, m_chain_params.MessageStart(), CMessageHeader::MESSAGE_START_SIZE) != 0) { // skip network magic checking
|
||||
LogPrint(BCLog::NET, "HEADER ERROR - MESSAGESTART (%s, %u bytes), received %s, peer=%d\n", hdr.GetCommand(), hdr.nMessageSize, HexStr(hdr.pchMessageStart), m_node_id);
|
||||
return -1;
|
||||
}
|
||||
@@ -768,7 +768,7 @@ Optional<CNetMessage> V1TransportDeserializer::GetMessage(const std::chrono::mic
|
||||
RandAddEvent(ReadLE32(hash.begin()));
|
||||
|
||||
// Check checksum and header command string
|
||||
- if (memcmp(hash.begin(), hdr.pchChecksum, CMessageHeader::CHECKSUM_SIZE) != 0) {
|
||||
+ if (false && memcmp(hash.begin(), hdr.pchChecksum, CMessageHeader::CHECKSUM_SIZE) != 0) { // skip checksum checking
|
||||
LogPrint(BCLog::NET, "CHECKSUM ERROR (%s, %u bytes), expected %s was %s, peer=%d\n",
|
||||
SanitizeString(msg->m_command), msg->m_message_size,
|
||||
HexStr(Span<uint8_t>(hash.begin(), hash.begin() + CMessageHeader::CHECKSUM_SIZE)),
|
||||
EOF
|
||||
$ make -C src/ digibyted
|
||||
$ mkdir -p inputs/
|
||||
$ honggfuzz/honggfuzz --exit_upon_crash --quiet --timeout 4 -n 1 -Q \
|
||||
-E HFND_TCP_PORT=18444 -f inputs/ -- \
|
||||
src/digibyted -regtest -discover=0 -dns=0 -dnsseed=0 -listenonion=0 \
|
||||
-nodebuglogfile -bind=127.0.0.1:18444 -logthreadnames \
|
||||
-debug
|
||||
```
|
||||
|
||||
# OSS-Fuzz
|
||||
|
||||
DigiByte Core participates in Google's [OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/digibyte-core)
|
||||
program, which includes a dashboard of [publicly disclosed vulnerabilities](https://bugs.chromium.org/p/oss-fuzz/issues/list?q=digibyte-core).
|
||||
Generally, we try to disclose vulnerabilities as soon as possible after they
|
||||
are fixed to give users the knowledge they need to be protected. However,
|
||||
because DigiByte is a live P2P network, and not just standalone local software,
|
||||
we might not fully disclose every issue within Google's standard
|
||||
[90-day disclosure window](https://google.github.io/oss-fuzz/getting-started/bug-disclosure-guidelines/)
|
||||
if a partial or delayed disclosure is important to protect users or the
|
||||
function of the network.
|
||||
|
||||
OSS-Fuzz also produces [a fuzzing coverage report](https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_digibyte-core/latest).
|
||||
4
doc/gitian-building.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Gitian building
|
||||
================
|
||||
|
||||
This file was moved to [the DigiByte Core documentation repository](https://github.com/digibyte-core/docs/blob/master/gitian-building.md) at [https://github.com/digibyte-core/docs](https://github.com/digibyte-core/docs).
|
||||
3
doc/guix.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Bootstrappable DigiByte Core Builds
|
||||
|
||||
See [contrib/guix/README.md](../contrib/guix/README.md)
|
||||
87
doc/i2p.md
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# I2P support in DigiByte Core
|
||||
|
||||
It is possible to run DigiByte Core as an
|
||||
[I2P (Invisible Internet Project)](https://en.wikipedia.org/wiki/I2P)
|
||||
service and connect to such services.
|
||||
|
||||
This [glossary](https://geti2p.net/en/about/glossary) may be useful to get
|
||||
started with I2P terminology.
|
||||
|
||||
## Run DigiByte Core with an I2P router (proxy)
|
||||
|
||||
A running I2P router (proxy) with [SAM](https://geti2p.net/en/docs/api/samv3)
|
||||
enabled is required (there is an [official one](https://geti2p.net) and
|
||||
[a few alternatives](https://en.wikipedia.org/wiki/I2P#Routers)). Notice the IP
|
||||
address and port the SAM proxy is listening to; usually, it is
|
||||
`127.0.0.1:7656`. Once it is up and running with SAM enabled, use the following
|
||||
DigiByte Core options:
|
||||
|
||||
```
|
||||
-i2psam=<ip:port>
|
||||
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
|
||||
none)
|
||||
|
||||
-i2pacceptincoming
|
||||
If set and -i2psam is also set then incoming I2P connections are
|
||||
accepted via the SAM proxy. If this is not set but -i2psam is set
|
||||
then only outgoing connections will be made to the I2P network.
|
||||
Ignored if -i2psam is not set. Listening for incoming I2P
|
||||
connections is done through the SAM proxy, not by binding to a
|
||||
local address and port (default: 1)
|
||||
```
|
||||
|
||||
In a typical situation, this suffices:
|
||||
|
||||
```
|
||||
digibyted -i2psam=127.0.0.1:7656
|
||||
```
|
||||
|
||||
The first time DigiByte Core connects to the I2P router, its I2P address (and
|
||||
corresponding private key) will be automatically generated and saved in a file
|
||||
named `i2p_private_key` in the DigiByte Core data directory.
|
||||
|
||||
## Additional configuration options related to I2P
|
||||
|
||||
You may set the `debug=i2p` config logging option to have additional
|
||||
information in the debug log about your I2P configuration and connections. Run
|
||||
`digibyte-cli help logging` for more information.
|
||||
|
||||
It is possible to restrict outgoing connections in the usual way with
|
||||
`onlynet=i2p`. I2P support was added to DigiByte Core in version 22.0 (mid 2021)
|
||||
and there may be fewer I2P peers than Tor or IP ones. Therefore, using
|
||||
`onlynet=i2p` alone (without other `onlynet=`) may make a node more susceptible
|
||||
to [Sybil attacks](https://en.digibyte.it/wiki/Weaknesses#Sybil_attack). Use
|
||||
`digibyte-cli -addrinfo` to see the number of I2P addresses known to your node.
|
||||
|
||||
## I2P related information in DigiByte Core
|
||||
|
||||
There are several ways to see your I2P address in DigiByte Core:
|
||||
- in the debug log (grep for `AddLocal`, the I2P address ends in `.b32.i2p`)
|
||||
- in the output of the `getnetworkinfo` RPC in the "localaddresses" section
|
||||
- in the output of `digibyte-cli -netinfo` peer connections dashboard
|
||||
|
||||
To see which I2P peers your node is connected to, use `digibyte-cli -netinfo 4`
|
||||
or the `getpeerinfo` RPC (e.g. `digibyte-cli getpeerinfo`).
|
||||
|
||||
To see which I2P addresses your node knows, use the `getnodeaddresses 0 i2p`
|
||||
RPC.
|
||||
|
||||
## Compatibility
|
||||
|
||||
DigiByte Core uses the [SAM v3.1](https://geti2p.net/en/docs/api/samv3) protocol
|
||||
to connect to the I2P network. Any I2P router that supports it can be used.
|
||||
|
||||
## Ports in I2P and DigiByte Core
|
||||
|
||||
DigiByte Core uses the [SAM v3.1](https://geti2p.net/en/docs/api/samv3)
|
||||
protocol. One particularity of SAM v3.1 is that it does not support ports,
|
||||
unlike newer versions of SAM (v3.2 and up) that do support them and default the
|
||||
port numbers to 0. From the point of view of peers that use newer versions of
|
||||
SAM or other protocols that support ports, a SAM v3.1 peer is connecting to them
|
||||
on port 0, from source port 0.
|
||||
|
||||
To allow future upgrades to newer versions of SAM, DigiByte Core sets its
|
||||
listening port to 0 when listening for incoming I2P connections and advertises
|
||||
its own I2P address with port 0. Furthermore, it will not attempt to connect to
|
||||
I2P addresses with a non-zero port number because with SAM v3.1 the destination
|
||||
port (`TO_PORT`) is always set to 0 and is not in the control of DigiByte Core.
|
||||
BIN
doc/img/windows-setup/exclusion-1.png
Normal file
|
After Width: | Height: | Size: 339 KiB |
BIN
doc/img/windows-setup/exclusion-2.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
doc/img/windows-setup/exclusion-3.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
doc/img/windows-setup/exclusion-4.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
doc/img/windows-setup/exclusion-5.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
doc/img/windows-setup/firewall-1.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
doc/img/windows-setup/firewall-10.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
doc/img/windows-setup/firewall-11.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
doc/img/windows-setup/firewall-12.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
doc/img/windows-setup/firewall-13.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
doc/img/windows-setup/firewall-14.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
doc/img/windows-setup/firewall-15.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
doc/img/windows-setup/firewall-2.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
doc/img/windows-setup/firewall-3.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
doc/img/windows-setup/firewall-4.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
doc/img/windows-setup/firewall-5.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
doc/img/windows-setup/firewall-6.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
doc/img/windows-setup/firewall-7.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
doc/img/windows-setup/firewall-8.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
doc/img/windows-setup/firewall-9.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
doc/img/windows-setup/install-1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
doc/img/windows-setup/install-2.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
doc/img/windows-setup/install-3.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
doc/img/windows-setup/install-4.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
doc/img/windows-setup/install-5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
doc/img/windows-setup/install-6.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
doc/img/windows-setup/install-7.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
146
doc/init.md
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
Sample init scripts and service configuration for digibyted
|
||||
==========================================================
|
||||
|
||||
Sample scripts and configuration files for systemd, Upstart and OpenRC
|
||||
can be found in the contrib/init folder.
|
||||
|
||||
contrib/init/digibyted.service: systemd service unit configuration
|
||||
contrib/init/digibyted.openrc: OpenRC compatible SysV style init script
|
||||
contrib/init/digibyted.openrcconf: OpenRC conf.d file
|
||||
contrib/init/digibyted.conf: Upstart service configuration file
|
||||
contrib/init/digibyted.init: CentOS compatible SysV style init script
|
||||
|
||||
Service User
|
||||
---------------------------------
|
||||
|
||||
All three Linux startup configurations assume the existence of a "digibyte" user
|
||||
and group. They must be created before attempting to use these scripts.
|
||||
The macOS configuration assumes digibyted will be set up for the current user.
|
||||
|
||||
Configuration
|
||||
---------------------------------
|
||||
|
||||
Running digibyted as a daemon does not require any manual configuration. You may
|
||||
set the `rpcauth` setting in the `vexta.conf` configuration file to override
|
||||
the default behaviour of using a special cookie for authentication.
|
||||
|
||||
This password does not have to be remembered or typed as it is mostly used
|
||||
as a fixed token that digibyted and client programs read from the configuration
|
||||
file, however it is recommended that a strong and secure password be used
|
||||
as this password is security critical to securing the wallet should the
|
||||
wallet be enabled.
|
||||
|
||||
If digibyted is run with the "-server" flag (set by default), and no rpcpassword is set,
|
||||
it will use a special cookie file for authentication. The cookie is generated with random
|
||||
content when the daemon starts, and deleted when it exits. Read access to this file
|
||||
controls who can access it through RPC.
|
||||
|
||||
By default the cookie is stored in the data directory, but it's location can be overridden
|
||||
with the option '-rpccookiefile'.
|
||||
|
||||
This allows for running digibyted without having to do any manual configuration.
|
||||
|
||||
`conf`, `pid`, and `wallet` accept relative paths which are interpreted as
|
||||
relative to the data directory. `wallet` *only* supports relative paths.
|
||||
|
||||
For an example configuration file that describes the configuration settings,
|
||||
see `share/examples/vexta.conf`.
|
||||
|
||||
Paths
|
||||
---------------------------------
|
||||
|
||||
### Linux
|
||||
|
||||
All three configurations assume several paths that might need to be adjusted.
|
||||
|
||||
Binary: /usr/bin/digibyted
|
||||
Configuration file: /etc/digibyte/vexta.conf
|
||||
Data directory: /var/lib/digibyted
|
||||
PID file: /var/run/digibyted/digibyted.pid (OpenRC and Upstart) or
|
||||
/run/digibyted/digibyted.pid (systemd)
|
||||
Lock file: /var/lock/subsys/digibyted (CentOS)
|
||||
|
||||
The PID directory (if applicable) and data directory should both be owned by the
|
||||
digibyte user and group. It is advised for security reasons to make the
|
||||
configuration file and data directory only readable by the digibyte user and
|
||||
group. Access to digibyte-cli and other digibyted rpc clients can then be
|
||||
controlled by group membership.
|
||||
|
||||
NOTE: When using the systemd .service file, the creation of the aforementioned
|
||||
directories and the setting of their permissions is automatically handled by
|
||||
systemd. Directories are given a permission of 710, giving the digibyte group
|
||||
access to files under it _if_ the files themselves give permission to the
|
||||
digibyte group to do so (e.g. when `-sysperms` is specified). This does not allow
|
||||
for the listing of files under the directory.
|
||||
|
||||
NOTE: It is not currently possible to override `datadir` in
|
||||
`/etc/digibyte/vexta.conf` with the current systemd, OpenRC, and Upstart init
|
||||
files out-of-the-box. This is because the command line options specified in the
|
||||
init files take precedence over the configurations in
|
||||
`/etc/digibyte/vexta.conf`. However, some init systems have their own
|
||||
configuration mechanisms that would allow for overriding the command line
|
||||
options specified in the init files (e.g. setting `DIGIBYTED_DATADIR` for
|
||||
OpenRC).
|
||||
|
||||
### macOS
|
||||
|
||||
Binary: /usr/local/bin/digibyted
|
||||
Configuration file: ~/Library/Application Support/DigiByte/vexta.conf
|
||||
Data directory: ~/Library/Application Support/DigiByte
|
||||
Lock file: ~/Library/Application Support/DigiByte/.lock
|
||||
|
||||
Installing Service Configuration
|
||||
-----------------------------------
|
||||
|
||||
### systemd
|
||||
|
||||
Installing this .service file consists of just copying it to
|
||||
/usr/lib/systemd/system directory, followed by the command
|
||||
`systemctl daemon-reload` in order to update running systemd configuration.
|
||||
|
||||
To test, run `systemctl start digibyted` and to enable for system startup run
|
||||
`systemctl enable digibyted`
|
||||
|
||||
NOTE: When installing for systemd in Debian/Ubuntu the .service file needs to be copied to the /lib/systemd/system directory instead.
|
||||
|
||||
### OpenRC
|
||||
|
||||
Rename digibyted.openrc to digibyted and drop it in /etc/init.d. Double
|
||||
check ownership and permissions and make it executable. Test it with
|
||||
`/etc/init.d/digibyted start` and configure it to run on startup with
|
||||
`rc-update add digibyted`
|
||||
|
||||
### Upstart (for Debian/Ubuntu based distributions)
|
||||
|
||||
Upstart is the default init system for Debian/Ubuntu versions older than 15.04. If you are using version 15.04 or newer and haven't manually configured upstart you should follow the systemd instructions instead.
|
||||
|
||||
Drop digibyted.conf in /etc/init. Test by running `service digibyted start`
|
||||
it will automatically start on reboot.
|
||||
|
||||
NOTE: This script is incompatible with CentOS 5 and Amazon Linux 2014 as they
|
||||
use old versions of Upstart and do not supply the start-stop-daemon utility.
|
||||
|
||||
### CentOS
|
||||
|
||||
Copy digibyted.init to /etc/init.d/digibyted. Test by running `service digibyted start`.
|
||||
|
||||
Using this script, you can adjust the path and flags to the digibyted program by
|
||||
setting the DIGIBYTED and FLAGS environment variables in the file
|
||||
/etc/sysconfig/digibyted. You can also use the DAEMONOPTS environment variable here.
|
||||
|
||||
### macOS
|
||||
|
||||
Copy org.digibyte.digibyted.plist into ~/Library/LaunchAgents. Load the launch agent by
|
||||
running `launchctl load ~/Library/LaunchAgents/org.digibyte.digibyted.plist`.
|
||||
|
||||
This Launch Agent will cause digibyted to start whenever the user logs in.
|
||||
|
||||
NOTE: This approach is intended for those wanting to run digibyted as the current user.
|
||||
You will need to modify org.digibyte.digibyted.plist if you intend to use it as a
|
||||
Launch Daemon with a dedicated digibyte user.
|
||||
|
||||
Auto-respawn
|
||||
-----------------------------------
|
||||
|
||||
Auto respawning is currently only configured for Upstart and systemd.
|
||||
Reasonable defaults have been chosen but YMMV.
|
||||
31
doc/logo_horizontal_github.svg
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<svg width="723" height="279" viewBox="0 0 723 279" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<style>
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.f {
|
||||
fill: #ffffff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<path d="M695.6 226.7H140.6V174.3H722.5L703.5 221.3C702.2 224.7 699.1 226.7 695.6 226.7Z" fill="#002352"/>
|
||||
<path d="M407.2 218L420.5 183.5H434.2C436 183.5 437.6 183.7 438.7 184.1C439.9 184.6 440.7 185.2 441.2 185.9C441.7 186.7 442 187.6 442 188.7C442 189.8 441.7 190.9 441.3 192.1L440.9 192.9C440.4 194.4 439.4 195.7 438.4 196.9C437.3 198.1 435.9 199.1 434.3 199.7C435.6 200.3 436.4 201.3 436.7 202.7C437 204.1 436.8 205.7 436.1 207.5L435.8 208.4C434.6 211.4 432.8 213.8 430.2 215.4C427.6 217 424.3 217.9 420.1 217.9L407.2 218ZM416.3 212.5H422.5C424 212.5 425.4 212.1 426.5 211.5C427.6 210.9 428.4 209.8 429 208.3L429.4 207.5C430.6 204.5 429.5 203 426.1 203H420.1L416.3 212.5ZM422.1 197.5H428.2C429.5 197.5 430.7 197.1 431.6 196.6C432.6 196 433.3 195.1 433.8 193.8L434.1 193.2C435.1 190.6 434.1 189.3 431.1 189.3H425.3L422.1 197.5Z" fill="white"/>
|
||||
<path d="M458.4 183.6L447.4 212.1H462.2L459 218.1H437.7L451 183.6H458.4Z" fill="white"/>
|
||||
<path d="M497.3 202.9C496.4 205.3 495.3 207.3 494.1 209.3C492.9 211.3 491.5 212.9 489.8 214.3C488.2 215.7 486.3 216.8 484.2 217.6C482 218.4 479.6 218.8 476.8 218.8C473.9 218.8 471.7 218.4 470.2 217.6C468.7 216.8 467.7 215.7 467.1 214.3C466.6 212.9 466.5 211.2 466.8 209.3C467.2 207.3 467.8 205.2 468.6 202.9L470.1 198.8C471 196.4 472.1 194.3 473.3 192.4C474.5 190.4 475.9 188.8 477.6 187.4C479.3 186 481 184.9 483.2 184.1C485.3 183.3 487.7 182.9 490.6 182.9C493.5 182.9 495.8 183.3 497.3 184.2C498.8 185 499.8 186.2 500.4 187.6C500.9 189.1 500.9 190.7 500.6 192.6C500.3 194.5 499.6 196.7 498.8 198.9L497.3 202.9ZM476.2 203C475.4 205.1 474.9 206.7 474.7 208C474.5 209.3 474.5 210.3 474.8 211C475.1 211.7 475.6 212.2 476.3 212.5C477 212.8 477.9 212.9 479.1 212.9C480.2 212.9 481.2 212.8 482.1 212.5C483 212.2 483.9 211.8 484.8 211C485.6 210.3 486.5 209.3 487.3 208C488.1 206.7 488.8 205.1 489.7 203L491.3 198.7C492.1 196.6 492.6 195 492.8 193.7C493 192.4 493 191.4 492.7 190.7C492.4 190 491.9 189.5 491.2 189.2C490.5 188.9 489.6 188.8 488.4 188.8C487.3 188.8 486.3 188.9 485.4 189.2C484.5 189.5 483.6 189.9 482.7 190.7C481.9 191.4 481 192.4 480.2 193.7C479.4 195 478.7 196.6 477.8 198.7L476.2 203Z" fill="white"/>
|
||||
<path d="M511.5 218.5C508.7 218.5 506.5 218.1 505 217.5C503.5 216.9 502.3 215.9 501.6 214.6C501 213.3 500.8 211.7 501.1 209.7C501.4 207.7 502 205.4 503.1 202.8L504.5 199.3C505.4 196.9 506.5 194.9 507.7 192.9C509 190.9 510.4 189.3 512.1 187.7C513.8 186.2 515.8 185.1 518.1 184.3C520.4 183.5 522.9 183 525.9 183C527.5 183 529 183.1 530.3 183.4C531.6 183.7 532.7 183.9 533.4 184.2L530 189.8C529.4 189.5 528.5 189.3 527.6 189.2C526.7 189.1 525.6 188.9 524.4 188.9C522.9 188.9 521.5 189.1 520.3 189.4C519.1 189.8 518 190.2 517 191C516 191.8 515.1 192.8 514.3 194.2C513.5 195.5 512.7 197.2 511.8 199.2L510.5 202.4C509.7 204.5 509.2 206.1 509 207.4C508.7 208.7 508.8 209.7 509.2 210.4C509.6 211.1 510.3 211.7 511.3 211.9C512.3 212.2 513.7 212.3 515.4 212.3C516.3 212.3 517.4 212.2 518.7 212.2C520 212.1 521.2 211.9 522.5 211.7L519.1 217.5C517.7 217.8 516.5 218 515.1 218.1C513.8 218.5 512.5 218.5 511.5 218.5Z" fill="white"/>
|
||||
<path d="M538.6 203L532.8 218.1H525.7L539 183.6H546L540.6 197.8L557.9 183.6H566.1L545.8 200L553.6 218H544.7L538.6 203Z" fill="white"/>
|
||||
<path d="M569.1 218.5C566.3 218.5 564.1 218.1 562.6 217.5C561 216.9 559.9 215.9 559.2 214.6C558.6 213.3 558.4 211.7 558.7 209.7C559 207.7 559.6 205.4 560.7 202.8L562.1 199.3C563 196.9 564.1 194.9 565.3 192.9C566.6 190.9 568 189.3 569.7 187.7C571.4 186.2 573.4 185.1 575.7 184.3C578 183.5 580.5 183 583.5 183C585.1 183 586.6 183.1 587.9 183.4C589.2 183.7 590.3 183.9 591 184.2L587.6 189.8C587 189.5 586.1 189.3 585.2 189.2C584.3 189 583.2 188.9 582 188.9C580.5 188.9 579.1 189.1 577.9 189.4C576.7 189.8 575.6 190.2 574.6 191C573.6 191.8 572.7 192.8 571.9 194.2C571.1 195.5 570.3 197.2 569.4 199.2L568.1 202.4C567.3 204.5 566.8 206.1 566.6 207.4C566.4 208.7 566.4 209.7 566.8 210.4C567.2 211.1 567.9 211.7 568.9 211.9C569.9 212.2 571.3 212.3 573 212.3C573.9 212.3 575 212.2 576.3 212.2C577.6 212.1 578.8 211.9 580.1 211.7L576.7 217.5C575.3 217.8 574.1 218 572.7 218.1C571.4 218.5 570.2 218.5 569.1 218.5Z" fill="white"/>
|
||||
<path d="M623.5 183.6L610.2 218.1H602.8L608.6 203H596.4L590.6 218.1H583.3L596.6 183.6H604L598.9 196.9H611L616.1 183.6H623.5Z" fill="white"/>
|
||||
<path d="M638.9 209.5H627.7L621.8 218H614.6L639.4 183.5H647.1L645.6 218H638.3L638.9 209.5ZM631.5 203.8H639.6L640.7 190.6L631.5 203.8Z" fill="white"/>
|
||||
<path d="M657.7 218H650.3L663.6 183.5H671L657.7 218Z" fill="white"/>
|
||||
<path d="M684.6 183.6L689.3 206.4L698.1 183.6H705L691.7 218.1H685.2L680.5 195.3L671.7 218.1H664.8L678.1 183.6H684.6Z" fill="white"/>
|
||||
<path d="M332.2 69.6H357.7C363.8 69.6 368.6 70.4 372 72C375.4 73.5 377.9 75.7 379.3 78.5C380.7 81.3 381 84.7 380.6 88.6C380.1 92.5 379 96.9 377.2 101.6L374.9 107.4C373.1 112.1 370.9 116.4 368.4 120.4C365.9 124.3 362.9 127.8 359.3 130.6C355.7 133.4 351.7 135.7 347 137.2C342.3 138.7 336.9 139.6 330.8 139.6H305.3L332.2 69.6ZM328.9 124.5H335C337.5 124.5 339.8 124.1 341.9 123.6C344 123 345.9 122 347.6 120.5C349.3 119.1 351 117.2 352.4 114.9C353.9 112.5 355.2 109.7 356.6 106.4L358.1 102.6C359.5 99 360.4 96.1 360.6 93.7C361 91.3 360.7 89.5 360.1 88.2C359.5 86.8 358.3 85.8 356.7 85.4C355.1 84.9 353 84.6 350.5 84.6H344.4L328.9 124.5Z" fill="#032351" class="f"/>
|
||||
<path d="M393.7 88.1H411.6L391.7 139.5H373.8L393.7 88.1ZM404.4 83.5C400.7 83.5 398.4 82.7 397.5 81C396.6 79.4 396.7 77.3 397.7 74.6C398.8 71.9 400.3 69.8 402.4 68.2C404.5 66.6 407.5 65.7 411.2 65.7C414.9 65.7 417.2 66.5 418.1 68.2C419 69.8 418.9 71.9 417.8 74.6C416.8 77.2 415.3 79.3 413.1 81C411 82.8 408.1 83.5 404.4 83.5Z" fill="#032351" class="f"/>
|
||||
<path d="M436.2 134.5C434.5 135.7 432.4 136.8 430 137.7C427.6 138.6 425 139.2 422.2 139.2C415.8 139.2 411.7 137.3 409.8 133.5C407.9 129.7 408.7 123.5 412 114.9L412.9 112.4C414.6 107.9 416.8 103.9 419.3 100.7C421.8 97.4 424.7 94.8 427.8 92.8C431 90.8 434.3 89.3 438 88.4C441.6 87.5 445.5 86.9 449.6 86.9C454.5 86.9 458.6 87.4 461.8 88.4C465 89.5 467.8 90.8 470.1 92.4L453.8 134.7C452 139.3 449.7 143.4 447.1 147C444.4 150.5 441.4 153.4 438.1 155.8C434.8 158.2 431.3 159.9 427.6 161.1C423.9 162.3 420.1 162.8 416.3 162.8C412.2 162.8 408.5 162.5 405.1 162.1C401.7 161.7 398.6 160.7 395.8 159.4L403.6 146.3C405.2 146.9 407.3 147.6 410 148C412.6 148.5 415.4 148.7 418.3 148.7C422.4 148.7 425.9 147.7 428.8 145.8C431.7 143.9 434.1 140.5 435.9 135.9L436.2 134.5ZM429.9 115.2C428.4 119.3 427.7 122 428.2 123.5C428.7 125 430 125.8 432.3 125.8C434.7 125.8 436.7 125.2 438.5 123.8C440.2 122.4 441.8 120 443.1 116.4L449 101.2C448 100.6 446.3 100.2 443.9 100.2C441.6 100.2 439.4 101 437.2 102.7C435 104.4 433.1 107.1 431.7 111L429.9 115.2Z" fill="#032351" class="f"/>
|
||||
<path d="M484 88.1H501.9L482 139.5H464.1L484 88.1ZM494.7 83.5C491 83.5 488.7 82.7 487.8 81C486.9 79.4 487 77.3 488 74.6C489.1 71.9 490.6 69.8 492.7 68.2C494.8 66.6 497.8 65.7 501.5 65.7C505.2 65.7 507.5 66.5 508.4 68.2C509.3 69.8 509.2 71.9 508.1 74.6C507.1 77.2 505.6 79.3 503.4 81C501.3 82.8 498.4 83.5 494.7 83.5Z" fill="#032351" class="f"/>
|
||||
<path d="M494.6 139.4L521.6 69.6H550.7C554.5 69.6 557.6 70.1 560.1 70.9C562.6 71.8 564.4 73.1 565.5 74.7C566.6 76.3 567.2 78.2 567.3 80.5C567.3 82.7 566.8 85.2 565.8 87.9L565.3 89.3C564.2 92.2 562.5 94.9 560.4 97.3C558.2 99.7 555.7 101.6 552.6 103C554.8 104.4 556.2 106.4 556.8 109.2C557.3 111.9 557 115 555.7 118.5L555.2 119.9C552.8 126.1 548.9 130.9 543.5 134.4C538.1 137.9 530.9 139.7 521.9 139.7L494.6 139.4ZM516.5 125.9H527.5C529.7 125.9 531.8 125.4 533.7 124.4C535.6 123.3 537.1 121.6 538 119.2L538.5 117.8C539.6 115.1 539.6 113.2 538.6 112C537.6 110.8 535.9 110.3 533.2 110.3H522.6L516.5 125.9ZM527.9 96.6H538.5C540.5 96.6 542.4 96.1 544 95.1C545.6 94.1 546.9 92.6 547.7 90.5L548.2 89.4C549.1 87.1 549 85.5 548 84.6C547 83.7 545.5 83.1 543.4 83.1H533.2L527.9 96.6Z" fill="#032351" class="f"/>
|
||||
<path d="M628.4 88.1L588.6 141.1C586.1 144.5 583.7 147.5 581.4 150.1C579 152.8 576.6 155.1 574 157C571.5 158.9 568.7 160.4 565.8 161.4C562.9 162.4 559.5 162.9 555.8 162.9C554.7 162.9 553.6 162.8 552.4 162.7C551.1 162.6 549.9 162.4 548.7 162.2C547.5 162 546.4 161.7 545.5 161.5C544.6 161.2 543.9 161 543.3 160.7L550.7 147.4C551.7 147.7 552.8 147.9 554.1 148C555.4 148.2 556.6 148.3 558 148.3C559.9 148.3 561.8 147.9 563.6 147.3C565.5 146.6 567.1 145.3 568.5 143.3L571.1 139.6L570.8 88.1H591L588.1 120.2L608.5 88.1H628.4Z" fill="#032351" class="f"/>
|
||||
<path d="M653.3 101L646.2 119.2C644.2 124.5 645.7 127 650.6 127C652.4 127 654 126.9 655.2 126.8C656.5 126.7 657.6 126.5 658.6 126.4L651.9 138.7C651.3 138.9 650.4 139.1 649.5 139.2C648.6 139.4 647.6 139.6 646.5 139.7C645.4 139.8 644.3 140 643.1 140.1C642 140.2 640.9 140.2 639.8 140.2C636.1 140.2 633.2 139.7 630.9 138.9C628.7 138 627.2 136.7 626.4 134.9C625.6 133.1 625.3 130.9 625.7 128.3C626.1 125.7 627 122.6 628.3 119L635.4 100.8H626.3L633.2 87.8H640.6L645.1 75.9L663.7 73.6L658.3 87.7H673.1L666.2 100.7L653.3 101Z" fill="#032351" class="f"/>
|
||||
<path d="M684.8 119.1C684.3 120.7 684.2 122.1 684.3 123.2C684.4 124.3 684.8 125.2 685.6 125.9C686.4 126.6 687.5 127.1 689 127.4C690.5 127.7 692.4 127.9 694.9 127.9C697.4 127.9 700 127.8 702.8 127.5C705.6 127.2 708.3 126.9 711.2 126.4L704.3 138.3C703.2 138.7 701.8 138.9 700.3 139.2C698.8 139.5 697.1 139.7 695.4 140C693.7 140.3 692 140.4 690.1 140.5C688.3 140.6 686.7 140.7 685.1 140.7C680.4 140.7 676.7 140.2 673.8 139C671 137.8 669.1 136.1 668 133.9C666.9 131.7 666.5 129.1 666.8 126C667.1 122.9 668 119.5 669.4 115.7L670.1 113.7C671.6 110 673.3 106.4 675.3 103.2C677.3 100 679.7 97.1 682.6 94.7C685.4 92.3 688.7 90.4 692.5 89C696.3 87.5 700.6 86.9 705.4 86.9C709.9 86.9 713.5 87.5 716 88.8C718.5 90.1 720.2 91.7 721.1 93.7C722 95.7 722.3 98.1 721.9 100.7C721.5 103.3 720.8 106.1 719.7 108.9L718.2 113C717.2 115.5 716.1 117.2 714.8 118C713.5 118.7 711.5 119.1 708.8 119.1H684.8ZM700.2 99.4C695 99.4 691.1 102.5 688.6 108.7H703.8L704.3 107.2C706.3 102 705 99.4 700.2 99.4Z" fill="#032351" class="f"/>
|
||||
<path d="M139.2 0C62.3 0 0 62.4 0 139.2C0 216 62.4 278.4 139.2 278.4C216 278.4 278.5 216.1 278.5 139.2C278.5 62.3 216.1 0 139.2 0Z" fill="#0066CC"/>
|
||||
<path d="M139.2 252.3C201.663 252.3 252.3 201.663 252.3 139.2C252.3 76.7366 201.663 26.1 139.2 26.1C76.7366 26.1 26.1 76.7366 26.1 139.2C26.1 201.663 76.7366 252.3 139.2 252.3Z" fill="#002352"/>
|
||||
<path d="M174 82.5L178 72.1C178.4 71 177.6 69.9 176.5 69.9H161.6L156.9 82.2H150.3L154.1 72.1C154.5 71 153.7 69.9 152.6 69.9H137.7L133 82.2H86.3C84.2 82.2 82.2 83.4 81.1 85.2L69.5 105.7H85.7H156.6C159.5 105.7 162.3 106.2 165 107.3C170.2 109.4 176.3 114.2 174.7 125C172.2 143.1 153.7 175.1 113.7 175.6L134.4 121.8C135.2 119.6 133.6 117.3 131.2 117.3H103.5L70 199.5C70 199.5 76.7 200.3 87.3 200.3L83.9 208.9H99.3C100.5 208.9 101.6 208.2 102 207L104.9 199.6C107.2 199.4 109.4 199.1 111.8 198.9L108 208.9H123.3C124.5 208.9 125.6 208.2 126 207L130.4 195.7C155.5 190 182.3 177.5 198.4 151.3C230.7 98.5 197.2 84.9 174 82.5Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
27
doc/man/Makefile.am
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
dist_man1_MANS=
|
||||
|
||||
if BUILD_DIGIBYTED
|
||||
dist_man1_MANS+=vextad.1
|
||||
endif
|
||||
|
||||
if ENABLE_QT
|
||||
dist_man1_MANS+=vexta-qt.1
|
||||
endif
|
||||
|
||||
if BUILD_VEXTA_CLI
|
||||
dist_man1_MANS+=vexta-cli.1
|
||||
endif
|
||||
|
||||
if BUILD_VEXTA_TX
|
||||
dist_man1_MANS+=vexta-tx.1
|
||||
endif
|
||||
|
||||
if BUILD_VEXTA_UTIL
|
||||
dist_man1_MANS+=vexta-util.1
|
||||
endif
|
||||
|
||||
if ENABLE_WALLET
|
||||
if BUILD_VEXTA_WALLET
|
||||
dist_man1_MANS+=vexta-wallet.1
|
||||
endif
|
||||
endif
|
||||
135
doc/man/vexta-cli.1
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3.
|
||||
.TH VEXTA-CLI "1" "September 2017" "vexta-cli v0.15.0.1" "User Commands"
|
||||
.SH NAME
|
||||
vexta-cli \- manual page for vexta-cli v0.15.0.1
|
||||
.SH DESCRIPTION
|
||||
Vexta Core RPC client version v0.15.0.1\-dirty
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
vexta\-cli [options] <command> [params]
|
||||
Send command to Vexta Core
|
||||
=======
|
||||
.IP
|
||||
vexta\-cli [options] \fB\-named\fR <command> [name=value] ... Send command to Vexta Core (with named arguments)
|
||||
vexta\-cli [options] help List commands
|
||||
vexta\-cli [options] help <command> Get help for a command
|
||||
=======
|
||||
>>>>>>> e97f9575d305be3bae99eb731045ebf411582f49
|
||||
=======
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||
.TH VEXTA-CLI "1" "December 2018" "vexta-cli v0.17.1.0" "User Commands"
|
||||
.SH NAME
|
||||
vexta-cli \- manual page for vexta-cli v0.17.1.0
|
||||
.SH SYNOPSIS
|
||||
.B vexta-cli
|
||||
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Vexta Core\/\fR
|
||||
.br
|
||||
.B vexta-cli
|
||||
[\fI\,options\/\fR] \fI\,-named <command> \/\fR[\fI\,name=value\/\fR]... \fI\,Send command to Vexta Core (with named arguments)\/\fR
|
||||
.br
|
||||
.B vexta-cli
|
||||
[\fI\,options\/\fR] \fI\,help List commands\/\fR
|
||||
.br
|
||||
.B vexta-cli
|
||||
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
||||
.SH DESCRIPTION
|
||||
Vexta Core RPC client version v0.17.1.0
|
||||
>>>>>>> 0.17:doc/man/bitcoin-cli.1
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
.IP
|
||||
This help message
|
||||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
Specify configuration file. Relative paths will be prefixed by datadir
|
||||
location. (default: vexta.conf)
|
||||
.HP
|
||||
\fB\-datadir=\fR<dir>
|
||||
.IP
|
||||
Specify data directory
|
||||
.HP
|
||||
\fB\-getinfo\fR
|
||||
.IP
|
||||
Get general information from the remote server. Note that unlike
|
||||
server\-side RPC calls, the results of \fB\-getinfo\fR 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)
|
||||
.HP
|
||||
\fB\-named\fR
|
||||
.IP
|
||||
Pass named instead of positional arguments (default: false)
|
||||
.HP
|
||||
\fB\-rpcclienttimeout=\fR<n>
|
||||
.IP
|
||||
Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
|
||||
900)
|
||||
.HP
|
||||
\fB\-rpcconnect=\fR<ip>
|
||||
.IP
|
||||
Send commands to node running on <ip> (default: 127.0.0.1)
|
||||
.HP
|
||||
\fB\-rpccookiefile=\fR<loc>
|
||||
.IP
|
||||
Location of the auth cookie. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (default: data dir)
|
||||
.HP
|
||||
\fB\-rpcpassword=\fR<pw>
|
||||
.IP
|
||||
Password for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-rpcport=\fR<port>
|
||||
.IP
|
||||
Connect to JSON\-RPC on <port> (default: 8332 or testnet: 18332)
|
||||
.HP
|
||||
\fB\-rpcuser=\fR<user>
|
||||
.IP
|
||||
Username for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-rpcwait\fR
|
||||
.IP
|
||||
Wait for RPC server to start
|
||||
.HP
|
||||
\fB\-rpcwallet=\fR<walletname>
|
||||
.IP
|
||||
Send RPC for non\-default wallet on RPC server (needs to exactly match
|
||||
corresponding \fB\-wallet\fR option passed to vextad)
|
||||
.HP
|
||||
\fB\-stdin\fR
|
||||
.IP
|
||||
Read extra arguments from standard input, one per line until EOF/Ctrl\-D
|
||||
(recommended for sensitive information such as passphrases). When
|
||||
combined with \fB\-stdinrpcpass\fR, the first line from standard input
|
||||
is used for the RPC password.
|
||||
.HP
|
||||
\fB\-stdinrpcpass\fR
|
||||
.IP
|
||||
Read RPC password from standard input as a single line. When combined
|
||||
with \fB\-stdin\fR, the first line from standard input is used for the
|
||||
RPC password.
|
||||
.HP
|
||||
\fB\-version\fR
|
||||
.IP
|
||||
Print version and exit
|
||||
.PP
|
||||
Chain selection options:
|
||||
.HP
|
||||
\fB\-testnet\fR
|
||||
.IP
|
||||
Use the test chain
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2018 The Vexta Core developers
|
||||
|
||||
Please contribute if you find Vexta Core useful. Visit
|
||||
<https://vexta.org> for further information about the software.
|
||||
The source code is available from <https://github.com/vexta/vexta>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
619
doc/man/vexta-qt.1
Normal file
|
|
@ -0,0 +1,619 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||
.TH VEXTA-QT "1" "December 2018" "vexta-qt v0.17.1.0" "User Commands"
|
||||
.SH NAME
|
||||
vexta-qt \- manual page for vexta-qt v0.17.1.0
|
||||
.SH SYNOPSIS
|
||||
.B vexta-qt
|
||||
[\fI\,command-line options\/\fR]
|
||||
.SH DESCRIPTION
|
||||
DigiByte Core version v0.17.1.0 (64\-bit)
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
.IP
|
||||
Print this help message and exit
|
||||
.HP
|
||||
\fB\-alertnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a relevant alert is received or we see a really
|
||||
long fork (%s in cmd is replaced by message)
|
||||
.HP
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
|
||||
testnet:
|
||||
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
|
||||
.HP
|
||||
\fB\-blocknotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
Extra transactions to keep in memory for compact block reconstructions
|
||||
(default: 100)
|
||||
.HP
|
||||
\fB\-blocksdir=\fR<dir>
|
||||
.IP
|
||||
Specify blocks directory (default: <datadir>/blocks)
|
||||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
Specify configuration file. Relative paths will be prefixed by datadir
|
||||
location. (default: vexta.conf)
|
||||
.HP
|
||||
\fB\-daemon\fR
|
||||
.IP
|
||||
Run in the background as a daemon and accept commands
|
||||
.HP
|
||||
\fB\-datadir=\fR<dir>
|
||||
.IP
|
||||
Specify data directory
|
||||
.HP
|
||||
\fB\-dbcache=\fR<n>
|
||||
.IP
|
||||
Set database cache size in megabytes (4 to 16384, default: 450)
|
||||
.HP
|
||||
\fB\-debuglogfile=\fR<file>
|
||||
.IP
|
||||
Specify location of debug log file. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (\fB\-nodebuglogfile\fR to disable;
|
||||
default: debug.log)
|
||||
.HP
|
||||
\fB\-includeconf=\fR<file>
|
||||
.IP
|
||||
Specify additional configuration file, relative to the \fB\-datadir\fR path
|
||||
(only useable from configuration file, not command line)
|
||||
.HP
|
||||
\fB\-loadblock=\fR<file>
|
||||
.IP
|
||||
Imports blocks from external blk000??.dat file on startup
|
||||
.HP
|
||||
\fB\-maxmempool=\fR<n>
|
||||
.IP
|
||||
Keep the transaction memory pool below <n> megabytes (default: 300)
|
||||
.HP
|
||||
\fB\-maxorphantx=\fR<n>
|
||||
.IP
|
||||
Keep at most <n> unconnectable transactions in memory (default: 100)
|
||||
.HP
|
||||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
336)
|
||||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-persistmempool\fR
|
||||
.IP
|
||||
Whether to save the mempool on shutdown and load on restart (default: 1)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
.IP
|
||||
Specify pid file. Relative paths will be prefixed by a net\-specific
|
||||
datadir location. (default: vextad.pid)
|
||||
.HP
|
||||
\fB\-prune=\fR<n>
|
||||
.IP
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to
|
||||
delete specific blocks, and enables automatic pruning of old
|
||||
blocks if a target size in MiB is provided. This mode is
|
||||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>=550 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\fR
|
||||
.IP
|
||||
Rebuild chain state and block index from the blk*.dat files on disk
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
.IP
|
||||
Rebuild chain state from the currently indexed blocks
|
||||
.HP
|
||||
\fB\-sysperms\fR
|
||||
.IP
|
||||
Create new files with system default permissions, instead of umask 077
|
||||
(only effective with disabled wallet functionality)
|
||||
.HP
|
||||
\fB\-txindex\fR
|
||||
.IP
|
||||
Maintain a full transaction index, used by the getrawtransaction rpc
|
||||
call (default: 0)
|
||||
.HP
|
||||
\fB\-version\fR
|
||||
.IP
|
||||
Print version and exit
|
||||
.PP
|
||||
Connection options:
|
||||
.HP
|
||||
\fB\-addnode=\fR<ip>
|
||||
.IP
|
||||
Add a node to connect to and attempt to keep the connection open (see
|
||||
the `addnode` RPC command help for more info). This option can be
|
||||
specified multiple times to add multiple nodes.
|
||||
.HP
|
||||
\fB\-banscore=\fR<n>
|
||||
.IP
|
||||
Threshold for disconnecting misbehaving peers (default: 100)
|
||||
.HP
|
||||
\fB\-bantime=\fR<n>
|
||||
.IP
|
||||
Number of seconds to keep misbehaving peers from reconnecting (default:
|
||||
86400)
|
||||
.HP
|
||||
\fB\-bind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and always listen on it. Use [host]:port notation
|
||||
for IPv6
|
||||
.HP
|
||||
\fB\-connect=\fR<ip>
|
||||
.IP
|
||||
Connect only to the specified node; \fB\-noconnect\fR disables automatic
|
||||
connections (the rules for this peer are the same as for
|
||||
\fB\-addnode\fR). This option can be specified multiple times to connect
|
||||
to multiple nodes.
|
||||
.HP
|
||||
\fB\-discover\fR
|
||||
.IP
|
||||
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
|
||||
or \fB\-proxy\fR)
|
||||
.HP
|
||||
\fB\-dns\fR
|
||||
.IP
|
||||
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
|
||||
.HP
|
||||
\fB\-dnsseed\fR
|
||||
.IP
|
||||
Query for peer addresses via DNS lookup, if low on addresses (default: 1
|
||||
unless \fB\-connect\fR used)
|
||||
.HP
|
||||
\fB\-enablebip61\fR
|
||||
.IP
|
||||
Send reject messages per BIP61 (default: 1)
|
||||
.HP
|
||||
\fB\-externalip=\fR<ip>
|
||||
.IP
|
||||
Specify your own public address
|
||||
.HP
|
||||
\fB\-forcednsseed\fR
|
||||
.IP
|
||||
Always query for peer addresses via DNS lookup (default: 0)
|
||||
.HP
|
||||
\fB\-listen\fR
|
||||
.IP
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
||||
.HP
|
||||
\fB\-listenonion\fR
|
||||
.IP
|
||||
Automatically create Tor hidden service (default: 1)
|
||||
.HP
|
||||
\fB\-maxconnections=\fR<n>
|
||||
.IP
|
||||
Maintain at most <n> connections to peers (default: 125)
|
||||
.HP
|
||||
\fB\-maxreceivebuffer=\fR<n>
|
||||
.IP
|
||||
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
|
||||
.HP
|
||||
\fB\-maxsendbuffer=\fR<n>
|
||||
.IP
|
||||
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
|
||||
.HP
|
||||
\fB\-maxtimeadjustment\fR
|
||||
.IP
|
||||
Maximum allowed median peer time offset adjustment. Local perspective of
|
||||
time may be influenced by peers forward or backward by this
|
||||
amount. (default: 4200 seconds)
|
||||
.HP
|
||||
\fB\-maxuploadtarget=\fR<n>
|
||||
.IP
|
||||
Tries to keep outbound traffic under the given target (in MiB per 24h),
|
||||
0 = no limit (default: 0)
|
||||
.HP
|
||||
\fB\-onion=\fR<ip:port>
|
||||
.IP
|
||||
Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
|
||||
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
|
||||
.HP
|
||||
\fB\-onlynet=\fR<net>
|
||||
.IP
|
||||
Make outgoing connections only through network <net> (ipv4, ipv6 or
|
||||
onion). Incoming connections are not affected by this option.
|
||||
This option can be specified multiple times to allow multiple
|
||||
networks.
|
||||
.HP
|
||||
\fB\-peerbloomfilters\fR
|
||||
.IP
|
||||
Support filtering of blocks and transaction with bloom filters (default:
|
||||
1)
|
||||
.HP
|
||||
\fB\-permitbaremultisig\fR
|
||||
.IP
|
||||
Relay non\-P2SH multisig (default: 1)
|
||||
.HP
|
||||
\fB\-port=\fR<port>
|
||||
.IP
|
||||
Listen for connections on <port> (default: 8333 or testnet: 18333)
|
||||
.HP
|
||||
\fB\-proxy=\fR<ip:port>
|
||||
.IP
|
||||
Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
|
||||
disabled)
|
||||
.HP
|
||||
\fB\-proxyrandomize\fR
|
||||
.IP
|
||||
Randomize credentials for every proxy connection. This enables Tor
|
||||
stream isolation (default: 1)
|
||||
.HP
|
||||
\fB\-seednode=\fR<ip>
|
||||
.IP
|
||||
Connect to a node to retrieve peer addresses, and disconnect. This
|
||||
option can be specified multiple times to connect to multiple
|
||||
nodes.
|
||||
.HP
|
||||
\fB\-timeout=\fR<n>
|
||||
.IP
|
||||
Specify connection timeout in milliseconds (minimum: 1, default: 5000)
|
||||
.HP
|
||||
\fB\-torcontrol=\fR<ip>:<port>
|
||||
.IP
|
||||
Tor control port to use if onion listening enabled (default:
|
||||
127.0.0.1:9051)
|
||||
.HP
|
||||
\fB\-torpassword=\fR<pass>
|
||||
.IP
|
||||
Tor control port password (default: empty)
|
||||
.HP
|
||||
\fB\-upnp\fR
|
||||
.IP
|
||||
Use UPnP to map the listening port (default: 0)
|
||||
.HP
|
||||
\fB\-whitebind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and whitelist peers connecting to it. Use
|
||||
[host]:port notation for IPv6
|
||||
.HP
|
||||
\fB\-whitelist=\fR<IP address or network>
|
||||
.IP
|
||||
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
|
||||
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
|
||||
times. Whitelisted peers cannot be DoS banned and their
|
||||
transactions are always relayed, even if they are already in the
|
||||
mempool, useful e.g. for a gateway
|
||||
.PP
|
||||
Wallet options:
|
||||
.HP
|
||||
\fB\-addresstype\fR
|
||||
.IP
|
||||
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
|
||||
default: "p2sh\-segwit")
|
||||
.HP
|
||||
\fB\-avoidpartialspends\fR
|
||||
.IP
|
||||
Group outputs by address, selecting all or none, instead of selecting on
|
||||
a per\-output basis. Privacy is improved as an address is only
|
||||
used once (unless someone sends to it after spending from it),
|
||||
but may result in slightly higher fees as suboptimal coin
|
||||
selection may result due to the added limitation (default: 0)
|
||||
.HP
|
||||
\fB\-changetype\fR
|
||||
.IP
|
||||
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
|
||||
Default is same as \fB\-addresstype\fR, except when
|
||||
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
|
||||
sending to a native segwit address)
|
||||
.HP
|
||||
\fB\-disablewallet\fR
|
||||
.IP
|
||||
Do not load the wallet and disable wallet RPC calls
|
||||
.HP
|
||||
\fB\-discardfee=\fR<amt>
|
||||
.IP
|
||||
The fee rate (in DGB/kB) that indicates your tolerance for discarding
|
||||
change by adding it to the fee (default: 0.0001). Note: An output
|
||||
is discarded if it is dust at this rate, but we will always
|
||||
discard up to the dust relay fee and a discard fee above that is
|
||||
limited by the fee estimate for the longest target
|
||||
.HP
|
||||
\fB\-fallbackfee=\fR<amt>
|
||||
.IP
|
||||
A fee rate (in DGB/kB) that will be used when fee estimation has
|
||||
insufficient data (default: 0.0002)
|
||||
.HP
|
||||
\fB\-keypool=\fR<n>
|
||||
.IP
|
||||
Set key pool size to <n> (default: 1000)
|
||||
.HP
|
||||
\fB\-mintxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DGB/kB) smaller than this are considered zero fee for
|
||||
transaction creation (default: 0.00001)
|
||||
.HP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
.IP
|
||||
Fee (in DGB/kB) to add to transactions you send (default: 0.00)
|
||||
.HP
|
||||
\fB\-rescan\fR
|
||||
.IP
|
||||
Rescan the block chain for missing wallet transactions on startup
|
||||
.HP
|
||||
\fB\-salvagewallet\fR
|
||||
.IP
|
||||
Attempt to recover private keys from a corrupt wallet on startup
|
||||
.HP
|
||||
\fB\-spendzeroconfchange\fR
|
||||
.IP
|
||||
Spend unconfirmed change when sending transactions (default: 1)
|
||||
.HP
|
||||
\fB\-txconfirmtarget=\fR<n>
|
||||
.IP
|
||||
If paytxfee is not set, include enough fee so transactions begin
|
||||
confirmation on average within n blocks (default: 6)
|
||||
.HP
|
||||
\fB\-upgradewallet\fR
|
||||
.IP
|
||||
Upgrade wallet to latest format on startup
|
||||
.HP
|
||||
\fB\-wallet=\fR<path>
|
||||
.IP
|
||||
Specify wallet database path. Can be specified multiple times to load
|
||||
multiple wallets. Path is interpreted relative to <walletdir> if
|
||||
it is not absolute, and will be created if it does not exist (as
|
||||
a directory containing a wallet.dat file and log files). For
|
||||
backwards compatibility this will also accept names of existing
|
||||
data files in <walletdir>.)
|
||||
.HP
|
||||
\fB\-walletbroadcast\fR
|
||||
.IP
|
||||
Make the wallet broadcast transactions (default: 1)
|
||||
.HP
|
||||
\fB\-walletdir=\fR<dir>
|
||||
.IP
|
||||
Specify directory to hold wallets (default: <datadir>/wallets if it
|
||||
exists, otherwise <datadir>)
|
||||
.HP
|
||||
\fB\-walletnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a wallet transaction changes (%s in cmd is replaced
|
||||
by TxID)
|
||||
.HP
|
||||
\fB\-walletrbf\fR
|
||||
.IP
|
||||
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
|
||||
.HP
|
||||
\fB\-zapwallettxes=\fR<mode>
|
||||
.IP
|
||||
Delete all wallet transactions and only recover those parts of the
|
||||
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
|
||||
account owner and payment request information, 2 = drop tx meta
|
||||
data)
|
||||
.PP
|
||||
ZeroMQ notification options:
|
||||
.HP
|
||||
\fB\-zmqpubhashblock=\fR<address>
|
||||
.IP
|
||||
Enable publish hash block in <address>
|
||||
.HP
|
||||
\fB\-zmqpubhashtx=\fR<address>
|
||||
.IP
|
||||
Enable publish hash transaction in <address>
|
||||
.HP
|
||||
\fB\-zmqpubrawblock=\fR<address>
|
||||
.IP
|
||||
Enable publish raw block in <address>
|
||||
.HP
|
||||
\fB\-zmqpubrawtx=\fR<address>
|
||||
.IP
|
||||
Enable publish raw transaction in <address>
|
||||
.PP
|
||||
Debugging/Testing options:
|
||||
.HP
|
||||
\fB\-debug=\fR<category>
|
||||
.IP
|
||||
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
|
||||
optional). If <category> is not supplied or if <category> = 1,
|
||||
output all debugging information. <category> can be: net, tor,
|
||||
mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
|
||||
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
|
||||
libevent, coindb, qt, leveldb.
|
||||
.HP
|
||||
\fB\-debugexclude=\fR<category>
|
||||
.IP
|
||||
Exclude debugging information for a category. Can be used in conjunction
|
||||
with \fB\-debug\fR=\fI\,1\/\fR to output debug logs for all categories except one
|
||||
or more specified categories.
|
||||
.HP
|
||||
\fB\-help\-debug\fR
|
||||
.IP
|
||||
Show all debugging options (usage: \fB\-\-help\fR \fB\-help\-debug\fR)
|
||||
.HP
|
||||
\fB\-logips\fR
|
||||
.IP
|
||||
Include IP addresses in debug output (default: 0)
|
||||
.HP
|
||||
\fB\-logtimestamps\fR
|
||||
.IP
|
||||
Prepend debug output with timestamp (default: 1)
|
||||
.HP
|
||||
\fB\-maxtxfee=\fR<amt>
|
||||
.IP
|
||||
Maximum total fees (in DGB) to use in a single wallet transaction or raw
|
||||
transaction; setting this too low may abort large transactions
|
||||
(default: 0.10)
|
||||
.HP
|
||||
\fB\-printtoconsole\fR
|
||||
.IP
|
||||
Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
|
||||
logging to file, set \fB\-nodebuglogfile\fR)
|
||||
.HP
|
||||
\fB\-shrinkdebugfile\fR
|
||||
.IP
|
||||
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
|
||||
.HP
|
||||
\fB\-uacomment=\fR<cmt>
|
||||
.IP
|
||||
Append comment to the user agent string
|
||||
.PP
|
||||
Chain selection options:
|
||||
.HP
|
||||
\fB\-testnet\fR
|
||||
.IP
|
||||
Use the test chain
|
||||
.PP
|
||||
Node relay options:
|
||||
.HP
|
||||
\fB\-bytespersigop\fR
|
||||
.IP
|
||||
Equivalent bytes per sigop in transactions for relay and mining
|
||||
(default: 20)
|
||||
.HP
|
||||
\fB\-datacarrier\fR
|
||||
.IP
|
||||
Relay and mine data carrier transactions (default: 1)
|
||||
.HP
|
||||
\fB\-datacarriersize\fR
|
||||
.IP
|
||||
Maximum size of data in data carrier transactions we relay and mine
|
||||
(default: 83)
|
||||
.HP
|
||||
\fB\-mempoolreplacement\fR
|
||||
.IP
|
||||
Enable transaction replacement in the memory pool (default: 1)
|
||||
.HP
|
||||
\fB\-minrelaytxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DGB/kB) smaller than this are considered zero fee for relaying,
|
||||
mining and transaction creation (default: 0.00001)
|
||||
.HP
|
||||
\fB\-whitelistforcerelay\fR
|
||||
.IP
|
||||
Force relay of transactions from whitelisted peers even if they violate
|
||||
local relay policy (default: 1)
|
||||
.HP
|
||||
\fB\-whitelistrelay\fR
|
||||
.IP
|
||||
Accept relayed transactions received from whitelisted peers even when
|
||||
not relaying transactions (default: 1)
|
||||
.PP
|
||||
Block creation options:
|
||||
.HP
|
||||
\fB\-blockmaxweight=\fR<n>
|
||||
.IP
|
||||
Set maximum BIP141 block weight (default: 3996000)
|
||||
.HP
|
||||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in DGB/kB) for transactions to be included in block
|
||||
creation. (default: 0.00001)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
\fB\-rest\fR
|
||||
.IP
|
||||
Accept public REST requests (default: 0)
|
||||
.HP
|
||||
\fB\-rpcallowip=\fR<ip>
|
||||
.IP
|
||||
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
|
||||
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
|
||||
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcauth=\fR<userpw>
|
||||
.IP
|
||||
Username and hashed password for JSON\-RPC connections. The field
|
||||
<userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
|
||||
canonical python script is included in share/rpcauth. The client
|
||||
then connects normally using the
|
||||
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcbind=\fR<addr>[:port]
|
||||
.IP
|
||||
Bind to given address to listen for JSON\-RPC connections. This option is
|
||||
ignored unless \fB\-rpcallowip\fR is also passed. Port is optional and
|
||||
overrides \fB\-rpcport\fR. Use [host]:port notation for IPv6. This
|
||||
option can be specified multiple times (default: 127.0.0.1 and
|
||||
::1 i.e., localhost, or if \fB\-rpcallowip\fR has been specified,
|
||||
0.0.0.0 and :: i.e., all addresses)
|
||||
.HP
|
||||
\fB\-rpccookiefile=\fR<loc>
|
||||
.IP
|
||||
Location of the auth cookie. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (default: data dir)
|
||||
.HP
|
||||
\fB\-rpcpassword=\fR<pw>
|
||||
.IP
|
||||
Password for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-rpcport=\fR<port>
|
||||
.IP
|
||||
Listen for JSON\-RPC connections on <port> (default: 8332 or testnet:
|
||||
18332)
|
||||
.HP
|
||||
\fB\-rpcserialversion\fR
|
||||
.IP
|
||||
Sets the serialization of raw transaction or block hex returned in
|
||||
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
|
||||
.HP
|
||||
\fB\-rpcthreads=\fR<n>
|
||||
.IP
|
||||
Set the number of threads to service RPC calls (default: 4)
|
||||
.HP
|
||||
\fB\-rpcuser=\fR<user>
|
||||
.IP
|
||||
Username for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-server\fR
|
||||
.IP
|
||||
Accept command line and JSON\-RPC commands
|
||||
.PP
|
||||
UI Options:
|
||||
.HP
|
||||
\fB\-choosedatadir\fR
|
||||
.IP
|
||||
Choose data directory on startup (default: 0)
|
||||
.HP
|
||||
\fB\-lang=\fR<lang>
|
||||
.IP
|
||||
Set language, for example "de_DE" (default: system locale)
|
||||
.HP
|
||||
\fB\-min\fR
|
||||
.IP
|
||||
Start minimized
|
||||
.HP
|
||||
\fB\-resetguisettings\fR
|
||||
.IP
|
||||
Reset all settings changed in the GUI
|
||||
.HP
|
||||
\fB\-rootcertificates=\fR<file>
|
||||
.IP
|
||||
Set SSL root certificates for payment request (default: \fB\-system\-\fR)
|
||||
.HP
|
||||
\fB\-splash\fR
|
||||
.IP
|
||||
Show splash screen on startup (default: 1)
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2018 The DigiByte Core developers
|
||||
|
||||
Please contribute if you find DigiByte Core useful. Visit
|
||||
<https://vexta-pool.co.uk> for further information about the software.
|
||||
The source code is available from <https://github.com/Vexta-Core/vexta>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
120
doc/man/vexta-tx.1
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||
.TH VEXTA-TX "1" "December 2018" "vexta-tx v0.17.1.0" "User Commands"
|
||||
.SH NAME
|
||||
vexta-tx \- manual page for vexta-tx v0.17.1.0
|
||||
.SH SYNOPSIS
|
||||
.B vexta-tx
|
||||
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded vexta transaction\/\fR
|
||||
.br
|
||||
.B vexta-tx
|
||||
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded vexta transaction\/\fR
|
||||
.SH DESCRIPTION
|
||||
Vexta Core vexta\-tx utility version v0.17.1.0
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
.IP
|
||||
This help message
|
||||
.HP
|
||||
\fB\-create\fR
|
||||
.IP
|
||||
Create new, empty TX.
|
||||
.HP
|
||||
\fB\-json\fR
|
||||
.IP
|
||||
Select JSON output
|
||||
.HP
|
||||
\fB\-txid\fR
|
||||
.IP
|
||||
Output only the hex\-encoded transaction id of the resultant transaction.
|
||||
.PP
|
||||
Chain selection options:
|
||||
.HP
|
||||
\fB\-testnet\fR
|
||||
.IP
|
||||
Use the test chain
|
||||
.PP
|
||||
Commands:
|
||||
.IP
|
||||
delin=N
|
||||
.IP
|
||||
Delete input N from TX
|
||||
.IP
|
||||
delout=N
|
||||
.IP
|
||||
Delete output N from TX
|
||||
.IP
|
||||
in=TXID:VOUT(:SEQUENCE_NUMBER)
|
||||
.IP
|
||||
Add input to TX
|
||||
.IP
|
||||
locktime=N
|
||||
.IP
|
||||
Set TX lock time to N
|
||||
.IP
|
||||
nversion=N
|
||||
.IP
|
||||
Set TX version to N
|
||||
.IP
|
||||
outaddr=VALUE:ADDRESS
|
||||
.IP
|
||||
Add address\-based output to TX
|
||||
.IP
|
||||
outdata=[VALUE:]DATA
|
||||
.IP
|
||||
Add data\-based output to TX
|
||||
.IP
|
||||
outmultisig=VALUE:REQUIRED:PUBKEYS:PUBKEY1:PUBKEY2:....[:FLAGS]
|
||||
.IP
|
||||
Add Pay To n\-of\-m Multi\-sig output to TX. n = REQUIRED, m = PUBKEYS.
|
||||
Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
outpubkey=VALUE:PUBKEY[:FLAGS]
|
||||
.IP
|
||||
Add pay\-to\-pubkey output to TX. Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-pubkey\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
outscript=VALUE:SCRIPT[:FLAGS]
|
||||
.IP
|
||||
Add raw script output to TX. Optionally add the "W" flag to produce a
|
||||
pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
|
||||
wrap the output in a pay\-to\-script\-hash.
|
||||
.IP
|
||||
replaceable(=N)
|
||||
.IP
|
||||
Set RBF opt\-in sequence number for input N (if not provided, opt\-in all
|
||||
available inputs)
|
||||
.IP
|
||||
sign=SIGHASH\-FLAGS
|
||||
.IP
|
||||
Add zero or more signatures to transaction. This command requires JSON
|
||||
registers:prevtxs=JSON object, privatekeys=JSON object. See
|
||||
signrawtransaction docs for format of sighash flags, JSON
|
||||
objects.
|
||||
.PP
|
||||
Register Commands:
|
||||
.IP
|
||||
load=NAME:FILENAME
|
||||
.IP
|
||||
Load JSON file FILENAME into register NAME
|
||||
.IP
|
||||
set=NAME:JSON\-STRING
|
||||
.IP
|
||||
Set register NAME to given JSON\-STRING
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2018 The Vexta Core developers
|
||||
|
||||
Please contribute if you find Vexta Core useful. Visit
|
||||
<https://vexta.org> for further information about the software.
|
||||
The source code is available from <https://github.com/vexta/vexta>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
5
doc/man/vexta-util.1
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
.TH DIGIBYTE-UTIL "1"
|
||||
.SH NAME
|
||||
vexta-util \- manual page for vexta-util
|
||||
|
||||
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
|
||||
5
doc/man/vexta-wallet.1
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
.TH DIGIBYTE-WALLET "1"
|
||||
.SH NAME
|
||||
vexta-wallet \- manual page for vexta-wallet
|
||||
|
||||
This is a placeholder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
|
||||
596
doc/man/vextad.1
Normal file
|
|
@ -0,0 +1,596 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
|
||||
.TH VEXTAD "1" "December 2018" "vextad v0.17.1.0" "User Commands"
|
||||
.SH NAME
|
||||
vextad \- manual page for vextad v0.17.1.0
|
||||
.SH SYNOPSIS
|
||||
.B vextad
|
||||
[\fI\,options\/\fR] \fI\,Start Vexta Core Daemon\/\fR
|
||||
.SH DESCRIPTION
|
||||
Vexta Core Daemon version v0.17.1.0
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
.IP
|
||||
Print this help message and exit
|
||||
.HP
|
||||
\fB\-alertnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a relevant alert is received or we see a really
|
||||
long fork (%s in cmd is replaced by message)
|
||||
.HP
|
||||
\fB\-assumevalid=\fR<hex>
|
||||
.IP
|
||||
If this block is in the chain assume that it and its ancestors are valid
|
||||
and potentially skip their script verification (0 to verify all,
|
||||
default:
|
||||
0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
|
||||
testnet:
|
||||
0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
|
||||
.HP
|
||||
\fB\-blocknotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when the best block changes (%s in cmd is replaced by
|
||||
block hash)
|
||||
.HP
|
||||
\fB\-blockreconstructionextratxn=\fR<n>
|
||||
.IP
|
||||
Extra transactions to keep in memory for compact block reconstructions
|
||||
(default: 100)
|
||||
.HP
|
||||
\fB\-blocksdir=\fR<dir>
|
||||
.IP
|
||||
Specify blocks directory (default: <datadir>/blocks)
|
||||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
Specify configuration file. Relative paths will be prefixed by datadir
|
||||
location. (default: vexta.conf)
|
||||
.HP
|
||||
\fB\-daemon\fR
|
||||
.IP
|
||||
Run in the background as a daemon and accept commands
|
||||
.HP
|
||||
\fB\-datadir=\fR<dir>
|
||||
.IP
|
||||
Specify data directory
|
||||
.HP
|
||||
\fB\-dbcache=\fR<n>
|
||||
.IP
|
||||
Set database cache size in megabytes (4 to 16384, default: 450)
|
||||
.HP
|
||||
\fB\-debuglogfile=\fR<file>
|
||||
.IP
|
||||
Specify location of debug log file. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (\fB\-nodebuglogfile\fR to disable;
|
||||
default: debug.log)
|
||||
.HP
|
||||
\fB\-includeconf=\fR<file>
|
||||
.IP
|
||||
Specify additional configuration file, relative to the \fB\-datadir\fR path
|
||||
(only useable from configuration file, not command line)
|
||||
.HP
|
||||
\fB\-loadblock=\fR<file>
|
||||
.IP
|
||||
Imports blocks from external blk000??.dat file on startup
|
||||
.HP
|
||||
\fB\-maxmempool=\fR<n>
|
||||
.IP
|
||||
Keep the transaction memory pool below <n> megabytes (default: 300)
|
||||
.HP
|
||||
\fB\-maxorphantx=\fR<n>
|
||||
.IP
|
||||
Keep at most <n> unconnectable transactions in memory (default: 100)
|
||||
.HP
|
||||
\fB\-mempoolexpiry=\fR<n>
|
||||
.IP
|
||||
Do not keep transactions in the mempool longer than <n> hours (default:
|
||||
336)
|
||||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-persistmempool\fR
|
||||
.IP
|
||||
Whether to save the mempool on shutdown and load on restart (default: 1)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
.IP
|
||||
Specify pid file. Relative paths will be prefixed by a net\-specific
|
||||
datadir location. (default: vextad.pid)
|
||||
.HP
|
||||
\fB\-prune=\fR<n>
|
||||
.IP
|
||||
Reduce storage requirements by enabling pruning (deleting) of old
|
||||
blocks. This allows the pruneblockchain RPC to be called to
|
||||
delete specific blocks, and enables automatic pruning of old
|
||||
blocks if a target size in MiB is provided. This mode is
|
||||
incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
|
||||
setting requires re\-downloading the entire blockchain. (default:
|
||||
0 = disable pruning blocks, 1 = allow manual pruning via RPC,
|
||||
>=550 = automatically prune block files to stay under the
|
||||
specified target size in MiB)
|
||||
.HP
|
||||
\fB\-reindex\fR
|
||||
.IP
|
||||
Rebuild chain state and block index from the blk*.dat files on disk
|
||||
.HP
|
||||
\fB\-reindex\-chainstate\fR
|
||||
.IP
|
||||
Rebuild chain state from the currently indexed blocks
|
||||
.HP
|
||||
\fB\-sysperms\fR
|
||||
.IP
|
||||
Create new files with system default permissions, instead of umask 077
|
||||
(only effective with disabled wallet functionality)
|
||||
.HP
|
||||
\fB\-txindex\fR
|
||||
.IP
|
||||
Maintain a full transaction index, used by the getrawtransaction rpc
|
||||
call (default: 0)
|
||||
.HP
|
||||
\fB\-version\fR
|
||||
.IP
|
||||
Print version and exit
|
||||
.PP
|
||||
Connection options:
|
||||
.HP
|
||||
\fB\-addnode=\fR<ip>
|
||||
.IP
|
||||
Add a node to connect to and attempt to keep the connection open (see
|
||||
the `addnode` RPC command help for more info). This option can be
|
||||
specified multiple times to add multiple nodes.
|
||||
.HP
|
||||
\fB\-banscore=\fR<n>
|
||||
.IP
|
||||
Threshold for disconnecting misbehaving peers (default: 100)
|
||||
.HP
|
||||
\fB\-bantime=\fR<n>
|
||||
.IP
|
||||
Number of seconds to keep misbehaving peers from reconnecting (default:
|
||||
86400)
|
||||
.HP
|
||||
\fB\-bind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and always listen on it. Use [host]:port notation
|
||||
for IPv6
|
||||
.HP
|
||||
\fB\-connect=\fR<ip>
|
||||
.IP
|
||||
Connect only to the specified node; \fB\-noconnect\fR disables automatic
|
||||
connections (the rules for this peer are the same as for
|
||||
\fB\-addnode\fR). This option can be specified multiple times to connect
|
||||
to multiple nodes.
|
||||
.HP
|
||||
\fB\-discover\fR
|
||||
.IP
|
||||
Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
|
||||
or \fB\-proxy\fR)
|
||||
.HP
|
||||
\fB\-dns\fR
|
||||
.IP
|
||||
Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
|
||||
.HP
|
||||
\fB\-dnsseed\fR
|
||||
.IP
|
||||
Query for peer addresses via DNS lookup, if low on addresses (default: 1
|
||||
unless \fB\-connect\fR used)
|
||||
.HP
|
||||
\fB\-enablebip61\fR
|
||||
.IP
|
||||
Send reject messages per BIP61 (default: 1)
|
||||
.HP
|
||||
\fB\-externalip=\fR<ip>
|
||||
.IP
|
||||
Specify your own public address
|
||||
.HP
|
||||
\fB\-forcednsseed\fR
|
||||
.IP
|
||||
Always query for peer addresses via DNS lookup (default: 0)
|
||||
.HP
|
||||
\fB\-listen\fR
|
||||
.IP
|
||||
Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
|
||||
.HP
|
||||
\fB\-listenonion\fR
|
||||
.IP
|
||||
Automatically create Tor hidden service (default: 1)
|
||||
.HP
|
||||
\fB\-maxconnections=\fR<n>
|
||||
.IP
|
||||
Maintain at most <n> connections to peers (default: 125)
|
||||
.HP
|
||||
\fB\-maxreceivebuffer=\fR<n>
|
||||
.IP
|
||||
Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
|
||||
.HP
|
||||
\fB\-maxsendbuffer=\fR<n>
|
||||
.IP
|
||||
Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
|
||||
.HP
|
||||
\fB\-maxtimeadjustment\fR
|
||||
.IP
|
||||
Maximum allowed median peer time offset adjustment. Local perspective of
|
||||
time may be influenced by peers forward or backward by this
|
||||
amount. (default: 4200 seconds)
|
||||
.HP
|
||||
\fB\-maxuploadtarget=\fR<n>
|
||||
.IP
|
||||
Tries to keep outbound traffic under the given target (in MiB per 24h),
|
||||
0 = no limit (default: 0)
|
||||
.HP
|
||||
\fB\-onion=\fR<ip:port>
|
||||
.IP
|
||||
Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
|
||||
\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
|
||||
.HP
|
||||
\fB\-onlynet=\fR<net>
|
||||
.IP
|
||||
Make outgoing connections only through network <net> (ipv4, ipv6 or
|
||||
onion). Incoming connections are not affected by this option.
|
||||
This option can be specified multiple times to allow multiple
|
||||
networks.
|
||||
.HP
|
||||
\fB\-peerbloomfilters\fR
|
||||
.IP
|
||||
Support filtering of blocks and transaction with bloom filters (default:
|
||||
1)
|
||||
.HP
|
||||
\fB\-permitbaremultisig\fR
|
||||
.IP
|
||||
Relay non\-P2SH multisig (default: 1)
|
||||
.HP
|
||||
\fB\-port=\fR<port>
|
||||
.IP
|
||||
Listen for connections on <port> (default: 8333 or testnet: 18333)
|
||||
.HP
|
||||
\fB\-proxy=\fR<ip:port>
|
||||
.IP
|
||||
Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
|
||||
disabled)
|
||||
.HP
|
||||
\fB\-proxyrandomize\fR
|
||||
.IP
|
||||
Randomize credentials for every proxy connection. This enables Tor
|
||||
stream isolation (default: 1)
|
||||
.HP
|
||||
\fB\-seednode=\fR<ip>
|
||||
.IP
|
||||
Connect to a node to retrieve peer addresses, and disconnect. This
|
||||
option can be specified multiple times to connect to multiple
|
||||
nodes.
|
||||
.HP
|
||||
\fB\-timeout=\fR<n>
|
||||
.IP
|
||||
Specify connection timeout in milliseconds (minimum: 1, default: 5000)
|
||||
.HP
|
||||
\fB\-torcontrol=\fR<ip>:<port>
|
||||
.IP
|
||||
Tor control port to use if onion listening enabled (default:
|
||||
127.0.0.1:9051)
|
||||
.HP
|
||||
\fB\-torpassword=\fR<pass>
|
||||
.IP
|
||||
Tor control port password (default: empty)
|
||||
.HP
|
||||
\fB\-upnp\fR
|
||||
.IP
|
||||
Use UPnP to map the listening port (default: 0)
|
||||
.HP
|
||||
\fB\-whitebind=\fR<addr>
|
||||
.IP
|
||||
Bind to given address and whitelist peers connecting to it. Use
|
||||
[host]:port notation for IPv6
|
||||
.HP
|
||||
\fB\-whitelist=\fR<IP address or network>
|
||||
.IP
|
||||
Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
|
||||
CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
|
||||
times. Whitelisted peers cannot be DoS banned and their
|
||||
transactions are always relayed, even if they are already in the
|
||||
mempool, useful e.g. for a gateway
|
||||
.PP
|
||||
Wallet options:
|
||||
.HP
|
||||
\fB\-addresstype\fR
|
||||
.IP
|
||||
What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
|
||||
default: "p2sh\-segwit")
|
||||
.HP
|
||||
\fB\-avoidpartialspends\fR
|
||||
.IP
|
||||
Group outputs by address, selecting all or none, instead of selecting on
|
||||
a per\-output basis. Privacy is improved as an address is only
|
||||
used once (unless someone sends to it after spending from it),
|
||||
but may result in slightly higher fees as suboptimal coin
|
||||
selection may result due to the added limitation (default: 0)
|
||||
.HP
|
||||
\fB\-changetype\fR
|
||||
.IP
|
||||
What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
|
||||
Default is same as \fB\-addresstype\fR, except when
|
||||
\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
|
||||
sending to a native segwit address)
|
||||
.HP
|
||||
\fB\-disablewallet\fR
|
||||
.IP
|
||||
Do not load the wallet and disable wallet RPC calls
|
||||
.HP
|
||||
\fB\-discardfee=\fR<amt>
|
||||
.IP
|
||||
The fee rate (in DGB/kB) that indicates your tolerance for discarding
|
||||
change by adding it to the fee (default: 0.0001). Note: An output
|
||||
is discarded if it is dust at this rate, but we will always
|
||||
discard up to the dust relay fee and a discard fee above that is
|
||||
limited by the fee estimate for the longest target
|
||||
.HP
|
||||
\fB\-fallbackfee=\fR<amt>
|
||||
.IP
|
||||
A fee rate (in DGB/kB) that will be used when fee estimation has
|
||||
insufficient data (default: 0.0002)
|
||||
.HP
|
||||
\fB\-keypool=\fR<n>
|
||||
.IP
|
||||
Set key pool size to <n> (default: 1000)
|
||||
.HP
|
||||
\fB\-mintxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DGB/kB) smaller than this are considered zero fee for
|
||||
transaction creation (default: 0.00001)
|
||||
.HP
|
||||
\fB\-paytxfee=\fR<amt>
|
||||
.IP
|
||||
Fee (in DGB/kB) to add to transactions you send (default: 0.00)
|
||||
.HP
|
||||
\fB\-rescan\fR
|
||||
.IP
|
||||
Rescan the block chain for missing wallet transactions on startup
|
||||
.HP
|
||||
\fB\-salvagewallet\fR
|
||||
.IP
|
||||
Attempt to recover private keys from a corrupt wallet on startup
|
||||
.HP
|
||||
\fB\-spendzeroconfchange\fR
|
||||
.IP
|
||||
Spend unconfirmed change when sending transactions (default: 1)
|
||||
.HP
|
||||
\fB\-txconfirmtarget=\fR<n>
|
||||
.IP
|
||||
If paytxfee is not set, include enough fee so transactions begin
|
||||
confirmation on average within n blocks (default: 6)
|
||||
.HP
|
||||
\fB\-upgradewallet\fR
|
||||
.IP
|
||||
Upgrade wallet to latest format on startup
|
||||
.HP
|
||||
\fB\-wallet=\fR<path>
|
||||
.IP
|
||||
Specify wallet database path. Can be specified multiple times to load
|
||||
multiple wallets. Path is interpreted relative to <walletdir> if
|
||||
it is not absolute, and will be created if it does not exist (as
|
||||
a directory containing a wallet.dat file and log files). For
|
||||
backwards compatibility this will also accept names of existing
|
||||
data files in <walletdir>.)
|
||||
.HP
|
||||
\fB\-walletbroadcast\fR
|
||||
.IP
|
||||
Make the wallet broadcast transactions (default: 1)
|
||||
.HP
|
||||
\fB\-walletdir=\fR<dir>
|
||||
.IP
|
||||
Specify directory to hold wallets (default: <datadir>/wallets if it
|
||||
exists, otherwise <datadir>)
|
||||
.HP
|
||||
\fB\-walletnotify=\fR<cmd>
|
||||
.IP
|
||||
Execute command when a wallet transaction changes (%s in cmd is replaced
|
||||
by TxID)
|
||||
.HP
|
||||
\fB\-walletrbf\fR
|
||||
.IP
|
||||
Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
|
||||
.HP
|
||||
\fB\-zapwallettxes=\fR<mode>
|
||||
.IP
|
||||
Delete all wallet transactions and only recover those parts of the
|
||||
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
|
||||
account owner and payment request information, 2 = drop tx meta
|
||||
data)
|
||||
.PP
|
||||
ZeroMQ notification options:
|
||||
.HP
|
||||
\fB\-zmqpubhashblock=\fR<address>
|
||||
.IP
|
||||
Enable publish hash block in <address>
|
||||
.HP
|
||||
\fB\-zmqpubhashtx=\fR<address>
|
||||
.IP
|
||||
Enable publish hash transaction in <address>
|
||||
.HP
|
||||
\fB\-zmqpubrawblock=\fR<address>
|
||||
.IP
|
||||
Enable publish raw block in <address>
|
||||
.HP
|
||||
\fB\-zmqpubrawtx=\fR<address>
|
||||
.IP
|
||||
Enable publish raw transaction in <address>
|
||||
.PP
|
||||
Debugging/Testing options:
|
||||
.HP
|
||||
\fB\-debug=\fR<category>
|
||||
.IP
|
||||
Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
|
||||
optional). If <category> is not supplied or if <category> = 1,
|
||||
output all debugging information. <category> can be: net, tor,
|
||||
mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
|
||||
selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
|
||||
libevent, coindb, qt, leveldb.
|
||||
.HP
|
||||
\fB\-debugexclude=\fR<category>
|
||||
.IP
|
||||
Exclude debugging information for a category. Can be used in conjunction
|
||||
with \fB\-debug\fR=\fI\,1\/\fR to output debug logs for all categories except one
|
||||
or more specified categories.
|
||||
.HP
|
||||
\fB\-help\-debug\fR
|
||||
.IP
|
||||
Show all debugging options (usage: \fB\-\-help\fR \fB\-help\-debug\fR)
|
||||
.HP
|
||||
\fB\-logips\fR
|
||||
.IP
|
||||
Include IP addresses in debug output (default: 0)
|
||||
.HP
|
||||
\fB\-logtimestamps\fR
|
||||
.IP
|
||||
Prepend debug output with timestamp (default: 1)
|
||||
.HP
|
||||
\fB\-maxtxfee=\fR<amt>
|
||||
.IP
|
||||
Maximum total fees (in DGB) to use in a single wallet transaction or raw
|
||||
transaction; setting this too low may abort large transactions
|
||||
(default: 0.10)
|
||||
.HP
|
||||
\fB\-printtoconsole\fR
|
||||
.IP
|
||||
Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
|
||||
logging to file, set \fB\-nodebuglogfile\fR)
|
||||
.HP
|
||||
\fB\-shrinkdebugfile\fR
|
||||
.IP
|
||||
Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
|
||||
.HP
|
||||
\fB\-uacomment=\fR<cmt>
|
||||
.IP
|
||||
Append comment to the user agent string
|
||||
.PP
|
||||
Chain selection options:
|
||||
.HP
|
||||
\fB\-testnet\fR
|
||||
.IP
|
||||
Use the test chain
|
||||
.PP
|
||||
Node relay options:
|
||||
.HP
|
||||
\fB\-bytespersigop\fR
|
||||
.IP
|
||||
Equivalent bytes per sigop in transactions for relay and mining
|
||||
(default: 20)
|
||||
.HP
|
||||
\fB\-datacarrier\fR
|
||||
.IP
|
||||
Relay and mine data carrier transactions (default: 1)
|
||||
.HP
|
||||
\fB\-datacarriersize\fR
|
||||
.IP
|
||||
Maximum size of data in data carrier transactions we relay and mine
|
||||
(default: 83)
|
||||
.HP
|
||||
\fB\-mempoolreplacement\fR
|
||||
.IP
|
||||
Enable transaction replacement in the memory pool (default: 1)
|
||||
.HP
|
||||
\fB\-minrelaytxfee=\fR<amt>
|
||||
.IP
|
||||
Fees (in DGB/kB) smaller than this are considered zero fee for relaying,
|
||||
mining and transaction creation (default: 0.00001)
|
||||
.HP
|
||||
\fB\-whitelistforcerelay\fR
|
||||
.IP
|
||||
Force relay of transactions from whitelisted peers even if they violate
|
||||
local relay policy (default: 1)
|
||||
.HP
|
||||
\fB\-whitelistrelay\fR
|
||||
.IP
|
||||
Accept relayed transactions received from whitelisted peers even when
|
||||
not relaying transactions (default: 1)
|
||||
.PP
|
||||
Block creation options:
|
||||
.HP
|
||||
\fB\-blockmaxweight=\fR<n>
|
||||
.IP
|
||||
Set maximum BIP141 block weight (default: 3996000)
|
||||
.HP
|
||||
Set maximum BIP141 block weight to this * 4. Deprecated, use
|
||||
blockmaxweight
|
||||
.HP
|
||||
\fB\-blockmintxfee=\fR<amt>
|
||||
.IP
|
||||
Set lowest fee rate (in DGB/kB) for transactions to be included in block
|
||||
creation. (default: 0.00001)
|
||||
.PP
|
||||
RPC server options:
|
||||
.HP
|
||||
\fB\-rest\fR
|
||||
.IP
|
||||
Accept public REST requests (default: 0)
|
||||
.HP
|
||||
\fB\-rpcallowip=\fR<ip>
|
||||
.IP
|
||||
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
|
||||
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
|
||||
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcauth=\fR<userpw>
|
||||
.IP
|
||||
Username and hashed password for JSON\-RPC connections. The field
|
||||
<userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
|
||||
canonical python script is included in share/rpcauth. The client
|
||||
then connects normally using the
|
||||
rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
|
||||
option can be specified multiple times
|
||||
.HP
|
||||
\fB\-rpcbind=\fR<addr>[:port]
|
||||
.IP
|
||||
Bind to given address to listen for JSON\-RPC connections. This option is
|
||||
ignored unless \fB\-rpcallowip\fR is also passed. Port is optional and
|
||||
overrides \fB\-rpcport\fR. Use [host]:port notation for IPv6. This
|
||||
option can be specified multiple times (default: 127.0.0.1 and
|
||||
::1 i.e., localhost, or if \fB\-rpcallowip\fR has been specified,
|
||||
0.0.0.0 and :: i.e., all addresses)
|
||||
.HP
|
||||
\fB\-rpccookiefile=\fR<loc>
|
||||
.IP
|
||||
Location of the auth cookie. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (default: data dir)
|
||||
.HP
|
||||
\fB\-rpcpassword=\fR<pw>
|
||||
.IP
|
||||
Password for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-rpcport=\fR<port>
|
||||
.IP
|
||||
Listen for JSON\-RPC connections on <port> (default: 8332 or testnet:
|
||||
18332)
|
||||
.HP
|
||||
\fB\-rpcserialversion\fR
|
||||
.IP
|
||||
Sets the serialization of raw transaction or block hex returned in
|
||||
non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
|
||||
.HP
|
||||
\fB\-rpcthreads=\fR<n>
|
||||
.IP
|
||||
Set the number of threads to service RPC calls (default: 4)
|
||||
.HP
|
||||
\fB\-rpcuser=\fR<user>
|
||||
.IP
|
||||
Username for JSON\-RPC connections
|
||||
.HP
|
||||
\fB\-server\fR
|
||||
.IP
|
||||
Accept command line and JSON\-RPC commands
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 2009-2018 The Vexta Core developers
|
||||
|
||||
Please contribute if you find Vexta Core useful. Visit
|
||||
<https://vexta.org> for further information about the software.
|
||||
The source code is available from <https://github.com/vexta/vexta>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
or <https://opensource.org/licenses/MIT>
|
||||
|
||||
This product includes software developed by the OpenSSL Project for use in the
|
||||
OpenSSL Toolkit <https://www.openssl.org> and cryptographic software written by
|
||||
Eric Young and UPnP software written by Thomas Bernard.
|
||||
72
doc/multiprocess.md
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
# Multiprocess DigiByte
|
||||
|
||||
On unix systems, the `--enable-multiprocess` build option can be passed to `./configure` to build new `digibyte-node`, `digibyte-wallet`, and `digibyte-gui` executables alongside existing `digibyted` and `digibyte-qt` executables.
|
||||
|
||||
`digibyte-node` is a drop-in replacement for `digibyted`, and `digibyte-gui` is a drop-in replacement for `digibyte-qt`, and there are no differences in use or external behavior between the new and old executables. But internally (after [#10102](https://github.com/digibyte/digibyte/pull/10102)), `digibyte-gui` will spawn a `digibyte-node` process to run P2P and RPC code, communicating with it across a socket pair, and `digibyte-node` will spawn `digibyte-wallet` to run wallet code, also communicating over a socket pair. This will let node, wallet, and GUI code run in separate address spaces for better isolation, and allow future improvements like being able to start and stop components independently on different machines and environments.
|
||||
|
||||
## Next steps
|
||||
|
||||
Specific next steps after [#10102](https://github.com/digibyte/digibyte/pull/10102) will be:
|
||||
|
||||
- [ ] Adding `-ipcbind` and `-ipcconnect` options to `digibyte-node`, `digibyte-wallet`, and `digibyte-gui` executables so they can listen and connect to TCP ports and unix socket paths. This will allow separate processes to be started and stopped any time and connect to each other.
|
||||
- [ ] Adding `-server` and `-rpcbind` options to the `digibyte-wallet` executable so wallet processes can handle RPC requests directly without going through the node.
|
||||
- [ ] Supporting windows, not just unix systems. The existing socket code is already cross-platform, so the only windows-specific code that needs to be written is code spawning a process and passing a socket descriptor. This can be implemented with `CreateProcess` and `WSADuplicateSocket`. Example: https://memset.wordpress.com/2010/10/13/win32-api-passing-socket-with-ipc-method/.
|
||||
- [ ] Adding sandbox features, restricting subprocess access to resources and data. See [https://eklitzke.org/multiprocess-digibyte](https://eklitzke.org/multiprocess-digibyte).
|
||||
|
||||
## Debugging
|
||||
|
||||
The `-debug=ipc` command line option can be used to see requests and responses between processes.
|
||||
|
||||
## Installation
|
||||
|
||||
The multiprocess feature requires [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) as dependencies. A simple way to get starting using it without installing these dependencies manually is to use the [depends system](../depends) with the `MULTIPROCESS=1` [dependency option](../depends#dependency-options) passed to make:
|
||||
|
||||
```
|
||||
cd <DIGIBYTE_SOURCE_DIRECTORY>
|
||||
make -C depends NO_QT=1 MULTIPROCESS=1
|
||||
CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
|
||||
make
|
||||
src/digibyte-node -regtest -printtoconsole -debug=ipc
|
||||
DIGIBYTED=digibyte-node test/functional/test_runner.py
|
||||
```
|
||||
|
||||
The configure script will pick up settings and library locations from the depends directory, so there is no need to pass `--enable-multiprocess` as a separate flag when using the depends system (it's controlled by the `MULTIPROCESS=1` option).
|
||||
|
||||
Alternately, you can install [Cap'n Proto](https://capnproto.org/) and [libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) packages on your system, and just run `./configure --enable-multiprocess` without using the depends system. The configure script will be able to locate the installed packages via [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/). See [Installation](https://github.com/chaincodelabs/libmultiprocess#installation) section of the libmultiprocess readme for install steps. See [build-unix.md](build-unix.md) and [build-osx.md](build-osx.md) for information about installing dependencies in general.
|
||||
|
||||
## IPC implementation details
|
||||
|
||||
Cross process Node, Wallet, and Chain interfaces are defined in
|
||||
[`src/interfaces/`](../src/interfaces/). These are C++ classes which follow
|
||||
[conventions](developer-notes.md#internal-interface-guidelines), like passing
|
||||
serializable arguments so they can be called from different processes, and
|
||||
making methods pure virtual so they can have proxy implementations that forward
|
||||
calls between processes.
|
||||
|
||||
When Wallet, Node, and Chain code is running in the same process, calling any
|
||||
interface method invokes the implementation directly. When code is running in
|
||||
different processes, calling an interface method invokes a proxy interface
|
||||
implementation that communicates with a remote process and invokes the real
|
||||
implementation in the remote process. The
|
||||
[libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) code
|
||||
generation tool internally generates proxy client classes and proxy server
|
||||
classes for this purpose that are thin wrappers around Cap'n Proto
|
||||
[client](https://capnproto.org/cxxrpc.html#clients) and
|
||||
[server](https://capnproto.org/cxxrpc.html#servers) classes, which handle the
|
||||
actual serialization and socket communication.
|
||||
|
||||
As much as possible, calls between processes are meant to work the same as
|
||||
calls within a single process without adding limitations or requiring extra
|
||||
implementation effort. Processes communicate with each other by calling regular
|
||||
[C++ interface methods](../src/interfaces/README.md). Method arguments and
|
||||
return values are automatically serialized and sent between processes. Object
|
||||
references and `std::function` arguments are automatically tracked and mapped
|
||||
to allow invoked code to call back into invoking code at any time, and there is
|
||||
a 1:1 threading model where any thread invoking a method in another process has
|
||||
a corresponding thread in the invoked process responsible for executing all
|
||||
method calls from the source thread, without blocking I/O or holding up another
|
||||
call, and using the same thread local variables, locks, and callbacks between
|
||||
calls. The forwarding, tracking, and threading is implemented inside the
|
||||
[libmultiprocess](https://github.com/chaincodelabs/libmultiprocess) library
|
||||
which has the design goal of making calls between processes look like calls in
|
||||
the same process to the extent possible.
|
||||
218
doc/productivity.md
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
Productivity Notes
|
||||
==================
|
||||
|
||||
Table of Contents
|
||||
-----------------
|
||||
|
||||
* [General](#general)
|
||||
* [Cache compilations with `ccache`](#cache-compilations-with-ccache)
|
||||
* [Disable features with `./configure`](#disable-features-with-configure)
|
||||
* [Make use of your threads with `make -j`](#make-use-of-your-threads-with-make--j)
|
||||
* [Only build what you need](#only-build-what-you-need)
|
||||
* [Multiple working directories with `git worktrees`](#multiple-working-directories-with-git-worktrees)
|
||||
* [Interactive "dummy rebases" for fixups and execs with `git merge-base`](#interactive-dummy-rebases-for-fixups-and-execs-with-git-merge-base)
|
||||
* [Writing code](#writing-code)
|
||||
* [Format C/C++ diffs with `clang-format-diff.py`](#format-cc-diffs-with-clang-format-diffpy)
|
||||
* [Format Python diffs with `yapf-diff.py`](#format-python-diffs-with-yapf-diffpy)
|
||||
* [Rebasing/Merging code](#rebasingmerging-code)
|
||||
* [More conflict context with `merge.conflictstyle diff3`](#more-conflict-context-with-mergeconflictstyle-diff3)
|
||||
* [Reviewing code](#reviewing-code)
|
||||
* [Reduce mental load with `git diff` options](#reduce-mental-load-with-git-diff-options)
|
||||
* [Reference PRs easily with `refspec`s](#reference-prs-easily-with-refspecs)
|
||||
* [Diff the diffs with `git range-diff`](#diff-the-diffs-with-git-range-diff)
|
||||
|
||||
General
|
||||
------
|
||||
|
||||
### Cache compilations with `ccache`
|
||||
|
||||
The easiest way to faster compile times is to cache compiles. `ccache` is a way to do so, from its description at the time of writing:
|
||||
|
||||
> ccache is a compiler cache. It speeds up recompilation by caching the result of previous compilations and detecting when the same compilation is being done again. Supported languages are C, C++, Objective-C and Objective-C++.
|
||||
|
||||
Install `ccache` through your distribution's package manager, and run `./configure` with your normal flags to pick it up.
|
||||
|
||||
To use ccache for all your C/C++ projects, follow the symlinks method [here](https://ccache.samba.org/manual/latest.html#_run_modes) to set it up.
|
||||
|
||||
To get the most out of ccache, put something like this in `~/.ccache/ccache.conf`:
|
||||
|
||||
```
|
||||
max_size = 50.0G # or whatever cache size you prefer; default is 5G; 0 means unlimited
|
||||
base_dir = /home/yourname # or wherever you keep your source files
|
||||
```
|
||||
|
||||
Note: base_dir is required for ccache to share cached compiles of the same file across different repositories / paths; it will only do this for paths under base_dir. So this option is required for effective use of ccache with git worktrees (described below).
|
||||
|
||||
You _must not_ set base_dir to "/", or anywhere that contains system headers (according to the ccache docs).
|
||||
|
||||
### Disable features with `./configure`
|
||||
|
||||
After running `./autogen.sh`, which generates the `./configure` file, use `./configure --help` to identify features that you can disable to save on compilation time. A few common flags:
|
||||
|
||||
```sh
|
||||
--without-miniupnpc
|
||||
--without-natpmp
|
||||
--disable-bench
|
||||
--disable-wallet
|
||||
--without-gui
|
||||
```
|
||||
|
||||
If you do need the wallet enabled, it is common for devs to add `--with-incompatible-bdb`. This uses your system bdb version for the wallet, so you don't have to find a copy of bdb 4.8. Wallets from such a build will be incompatible with any release binary (and vice versa), so use with caution on mainnet.
|
||||
|
||||
### Make use of your threads with `make -j`
|
||||
|
||||
If you have multiple threads on your machine, you can tell `make` to utilize all of them with:
|
||||
|
||||
```sh
|
||||
make -j"$(($(nproc)+1))"
|
||||
```
|
||||
|
||||
### Only build what you need
|
||||
|
||||
When rebuilding during development, note that running `make`, without giving a target, will do a lot of work you probably don't need. It will build the GUI (unless you've disabled it) and all the tests (which take much longer to build than the app does).
|
||||
|
||||
Obviously, it is important to build and run the tests at appropriate times -- but when you just want a quick compile to check your work, consider picking one or a set of build targets relevant to what you're working on, e.g.:
|
||||
|
||||
```sh
|
||||
make src/digibyted src/digibyte-cli
|
||||
make src/qt/digibyte-qt
|
||||
make -C src digibyte_bench
|
||||
```
|
||||
|
||||
(You can and should combine this with `-j`, as above, for a parallel build.)
|
||||
|
||||
### Multiple working directories with `git worktrees`
|
||||
|
||||
If you work with multiple branches or multiple copies of the repository, you should try `git worktrees`.
|
||||
|
||||
To create a new branch that lives under a new working directory without disrupting your current working directory (useful for creating pull requests):
|
||||
```sh
|
||||
git worktree add -b my-shiny-new-branch ../living-at-my-new-working-directory based-on-my-crufty-old-commit-ish
|
||||
```
|
||||
|
||||
To simply check out a commit-ish under a new working directory without disrupting your current working directory (useful for reviewing pull requests):
|
||||
```sh
|
||||
git worktree add --checkout ../where-my-checkout-commit-ish-will-live my-checkout-commit-ish
|
||||
```
|
||||
|
||||
### Interactive "dummy rebases" for fixups and execs with `git merge-base`
|
||||
|
||||
When rebasing, we often want to do a "dummy rebase," whereby we are not rebasing over an updated master but rather over the last common commit with master. This might be useful for rearranging commits, `rebase --autosquash`ing, or `rebase --exec`ing without introducing conflicts that arise from an updated master. In these situations, we can use `git merge-base` to identify the last common commit with master, and rebase off of that.
|
||||
|
||||
To squash in `git commit --fixup` commits without rebasing over an updated master, we can do the following:
|
||||
|
||||
```sh
|
||||
git rebase -i --autosquash "$(git merge-base master HEAD)"
|
||||
```
|
||||
|
||||
To execute `make check` on every commit since last diverged from master, but without rebasing over an updated master, we can do the following:
|
||||
```sh
|
||||
git rebase -i --exec "make check" "$(git merge-base master HEAD)"
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
This synergizes well with [`ccache`](#cache-compilations-with-ccache) as objects resulting from unchanged code will most likely hit the cache and won't need to be recompiled.
|
||||
|
||||
You can also set up [upstream refspecs](#reference-prs-easily-with-refspecs) to refer to pull requests easier in the above `git worktree` commands.
|
||||
|
||||
Writing code
|
||||
------------
|
||||
|
||||
### Format C/C++ diffs with `clang-format-diff.py`
|
||||
|
||||
See [contrib/devtools/README.md](/contrib/devtools/README.md#clang-format-diff.py).
|
||||
|
||||
### Format Python diffs with `yapf-diff.py`
|
||||
|
||||
Usage is exactly the same as [`clang-format-diff.py`](#format-cc-diffs-with-clang-format-diffpy). You can get it [here](https://github.com/MarcoFalke/yapf-diff).
|
||||
|
||||
Rebasing/Merging code
|
||||
-------------
|
||||
|
||||
### More conflict context with `merge.conflictstyle diff3`
|
||||
|
||||
For resolving merge/rebase conflicts, it can be useful to enable diff3 style using `git config merge.conflictstyle diff3`. Instead of
|
||||
|
||||
```diff
|
||||
<<<
|
||||
yours
|
||||
===
|
||||
theirs
|
||||
>>>
|
||||
```
|
||||
|
||||
you will see
|
||||
|
||||
```diff
|
||||
<<<
|
||||
yours
|
||||
|||
|
||||
original
|
||||
===
|
||||
theirs
|
||||
>>>
|
||||
```
|
||||
|
||||
This may make it much clearer what caused the conflict. In this style, you can often just look at what changed between *original* and *theirs*, and mechanically apply that to *yours* (or the other way around).
|
||||
|
||||
Reviewing code
|
||||
--------------
|
||||
|
||||
### Reduce mental load with `git diff` options
|
||||
|
||||
When reviewing patches which change indentation in C++ files, use `git diff -w` and `git show -w`. This makes the diff algorithm ignore whitespace changes. This feature is also available on github.com, by adding `?w=1` at the end of any URL which shows a diff.
|
||||
|
||||
When reviewing patches that change symbol names in many places, use `git diff --word-diff`. This will instead of showing the patch as deleted/added *lines*, show deleted/added *words*.
|
||||
|
||||
When reviewing patches that move code around, try using `git diff --patience commit~:old/file.cpp commit:new/file/name.cpp`, and ignoring everything except the moved body of code which should show up as neither `+` or `-` lines. In case it was not a pure move, this may even work when combined with the `-w` or `--word-diff` options described above. `--color-moved=dimmed-zebra` will also dim the coloring of moved hunks in the diff on compatible terminals.
|
||||
|
||||
### Reference PRs easily with `refspec`s
|
||||
|
||||
When looking at other's pull requests, it may make sense to add the following section to your `.git/config` file:
|
||||
|
||||
```
|
||||
[remote "upstream-pull"]
|
||||
fetch = +refs/pull/*/head:refs/remotes/upstream-pull/*
|
||||
url = git@github.com:digibyte/digibyte.git
|
||||
```
|
||||
|
||||
This will add an `upstream-pull` remote to your git repository, which can be fetched using `git fetch --all` or `git fetch upstream-pull`. It will download and store on disk quite a lot of data (all PRs, including merged and closed ones). Afterwards, you can use `upstream-pull/NUMBER/head` in arguments to `git show`, `git checkout` and anywhere a commit id would be acceptable to see the changes from pull request NUMBER.
|
||||
|
||||
### Diff the diffs with `git range-diff`
|
||||
|
||||
It is very common for contributors to rebase their pull requests, or make changes to commits (perhaps in response to review) that are not at the head of their branch. This poses a problem for reviewers as when the contributor force pushes, the reviewer is no longer sure that his previous reviews of commits are still valid (as the commit hashes can now be different even though the diff is semantically the same). [git range-diff](https://git-scm.com/docs/git-range-diff) (Git >= 2.19) can help solve this problem by diffing the diffs.
|
||||
|
||||
For example, to identify the differences between your previously reviewed diffs P1-5, and the new diffs P1-2,N3-4 as illustrated below:
|
||||
```
|
||||
P1--P2--P3--P4--P5 <-- previously-reviewed-head
|
||||
/
|
||||
...--m <-- master
|
||||
\
|
||||
P1--P2--N3--N4--N5 <-- new-head (with P3 slightly modified)
|
||||
```
|
||||
|
||||
You can do:
|
||||
```sh
|
||||
git range-diff master previously-reviewed-head new-head
|
||||
```
|
||||
|
||||
Note that `git range-diff` also work for rebases:
|
||||
|
||||
```
|
||||
P1--P2--P3--P4--P5 <-- previously-reviewed-head
|
||||
/
|
||||
...--m--m1--m2--m3 <-- master
|
||||
\
|
||||
P1--P2--N3--N4 <-- new-head (with P3 modified, P4 & P5 squashed)
|
||||
|
||||
PREV=P5 N=4 && git range-diff `git merge-base --all HEAD $PREV`...$PREV HEAD~$N...HEAD
|
||||
```
|
||||
|
||||
Where `P5` is the commit you last reviewed and `4` is the number of commits in the new version.
|
||||
|
||||
-----
|
||||
|
||||
`git range-diff` also accepts normal `git diff` options, see [Reduce mental load with `git diff` options](#reduce-mental-load-with-git-diff-options) for useful `git diff` options.
|
||||
|
||||
You can also set up [upstream refspecs](#reference-prs-easily-with-refspecs) to refer to pull requests easier in the above `git range-diff` commands.
|
||||
143
doc/psbt.md
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
# PSBT Howto for DigiByte Core
|
||||
|
||||
Since DigiByte Core 0.17, an RPC interface exists for Partially Signed DigiByte
|
||||
Transactions (PSBTs, as specified in
|
||||
[BIP 174](https://github.com/digibyte/bips/blob/master/bip-0174.mediawiki)).
|
||||
|
||||
This document describes the overall workflow for producing signed transactions
|
||||
through the use of PSBT, and the specific RPC commands used in typical
|
||||
scenarios.
|
||||
|
||||
## PSBT in general
|
||||
|
||||
PSBT is an interchange format for DigiByte transactions that are not fully signed
|
||||
yet, together with relevant metadata to help entities work towards signing it.
|
||||
It is intended to simplify workflows where multiple parties need to cooperate to
|
||||
produce a transaction. Examples include hardware wallets, multisig setups, and
|
||||
[CoinJoin](https://digibytetalk.org/?topic=279249) transactions.
|
||||
|
||||
### Overall workflow
|
||||
|
||||
Overall, the construction of a fully signed DigiByte transaction goes through the
|
||||
following steps:
|
||||
|
||||
- A **Creator** proposes a particular transaction to be created. They construct
|
||||
a PSBT that contains certain inputs and outputs, but no additional metadata.
|
||||
- For each input, an **Updater** adds information about the UTXOs being spent by
|
||||
the transaction to the PSBT. They also add information about the scripts and
|
||||
public keys involved in each of the inputs (and possibly outputs) of the PSBT.
|
||||
- **Signers** inspect the transaction and its metadata to decide whether they
|
||||
agree with the transaction. They can use amount information from the UTXOs
|
||||
to assess the values and fees involved. If they agree, they produce a
|
||||
partial signature for the inputs for which they have relevant key(s).
|
||||
- A **Finalizer** is run for each input to convert the partial signatures and
|
||||
possibly script information into a final `scriptSig` and/or `scriptWitness`.
|
||||
- An **Extractor** produces a valid DigiByte transaction (in network format)
|
||||
from a PSBT for which all inputs are finalized.
|
||||
|
||||
Generally, each of the above (excluding Creator and Extractor) will simply
|
||||
add more and more data to a particular PSBT, until all inputs are fully signed.
|
||||
In a naive workflow, they all have to operate sequentially, passing the PSBT
|
||||
from one to the next, until the Extractor can convert it to a real transaction.
|
||||
In order to permit parallel operation, **Combiners** can be employed which merge
|
||||
metadata from different PSBTs for the same unsigned transaction.
|
||||
|
||||
The names above in bold are the names of the roles defined in BIP174. They're
|
||||
useful in understanding the underlying steps, but in practice, software and
|
||||
hardware implementations will typically implement multiple roles simultaneously.
|
||||
|
||||
## PSBT in DigiByte Core
|
||||
|
||||
### RPCs
|
||||
|
||||
- **`converttopsbt` (Creator)** is a utility RPC that converts an
|
||||
unsigned raw transaction to PSBT format. It ignores existing signatures.
|
||||
- **`createpsbt` (Creator)** is a utility RPC that takes a list of inputs and
|
||||
outputs and converts them to a PSBT with no additional information. It is
|
||||
equivalent to calling `createrawtransaction` followed by `converttopsbt`.
|
||||
- **`walletcreatefundedpsbt` (Creator, Updater)** is a wallet RPC that creates a
|
||||
PSBT with the specified inputs and outputs, adds additional inputs and change
|
||||
to it to balance it out, and adds relevant metadata. In particular, for inputs
|
||||
that the wallet knows about (counting towards its normal or watch-only
|
||||
balance), UTXO information will be added. For outputs and inputs with UTXO
|
||||
information present, key and script information will be added which the wallet
|
||||
knows about. It is equivalent to running `createrawtransaction`, followed by
|
||||
`fundrawtransaction`, and `converttopsbt`.
|
||||
- **`walletprocesspsbt` (Updater, Signer, Finalizer)** is a wallet RPC that takes as
|
||||
input a PSBT, adds UTXO, key, and script data to inputs and outputs that miss
|
||||
it, and optionally signs inputs. Where possible it also finalizes the partial
|
||||
signatures.
|
||||
- **`utxoupdatepsbt` (Updater)** is a node RPC that takes a PSBT and updates it
|
||||
to include information available from the UTXO set (works only for SegWit
|
||||
inputs).
|
||||
- **`finalizepsbt` (Finalizer, Extractor)** is a utility RPC that finalizes any
|
||||
partial signatures, and if all inputs are finalized, converts the result to a
|
||||
fully signed transaction which can be broadcast with `sendrawtransaction`.
|
||||
- **`combinepsbt` (Combiner)** is a utility RPC that implements a Combiner. It
|
||||
can be used at any point in the workflow to merge information added to
|
||||
different versions of the same PSBT. In particular it is useful to combine the
|
||||
output of multiple Updaters or Signers.
|
||||
- **`joinpsbts`** (Creator) is a utility RPC that joins multiple PSBTs together,
|
||||
concatenating the inputs and outputs. This can be used to construct CoinJoin
|
||||
transactions.
|
||||
- **`decodepsbt`** is a diagnostic utility RPC which will show all information in
|
||||
a PSBT in human-readable form, as well as compute its eventual fee if known.
|
||||
- **`analyzepsbt`** is a utility RPC that examines a PSBT and reports the
|
||||
current status of its inputs, the next step in the workflow if known, and if
|
||||
possible, computes the fee of the resulting transaction and estimates the
|
||||
final weight and feerate.
|
||||
|
||||
|
||||
### Workflows
|
||||
|
||||
#### Multisig with multiple DigiByte Core instances
|
||||
|
||||
Alice, Bob, and Carol want to create a 2-of-3 multisig address. They're all using
|
||||
DigiByte Core. We assume their wallets only contain the multisig funds. In case
|
||||
they also have a personal wallet, this can be accomplished through the
|
||||
multiwallet feature - possibly resulting in a need to add `-rpcwallet=name` to
|
||||
the command line in case `digibyte-cli` is used.
|
||||
|
||||
Setup:
|
||||
- All three call `getnewaddress` to create a new address; call these addresses
|
||||
*Aalice*, *Abob*, and *Acarol*.
|
||||
- All three call `getaddressinfo "X"`, with *X* their respective address, and
|
||||
remember the corresponding public keys. Call these public keys *Kalice*,
|
||||
*Kbob*, and *Kcarol*.
|
||||
- All three now run `addmultisigaddress 2 ["Kalice","Kbob","Kcarol"]` to teach
|
||||
their wallet about the multisig script. Call the address produced by this
|
||||
command *Amulti*. They may be required to explicitly specify the same
|
||||
addresstype option each, to avoid constructing different versions due to
|
||||
differences in configuration.
|
||||
- They also run `importaddress "Amulti" "" false` to make their wallets treat
|
||||
payments to *Amulti* as contributing to the watch-only balance.
|
||||
- Others can verify the produced address by running
|
||||
`createmultisig 2 ["Kalice","Kbob","Kcarol"]`, and expecting *Amulti* as
|
||||
output. Again, it may be necessary to explicitly specify the addresstype
|
||||
in order to get a result that matches. This command won't enable them to
|
||||
initiate transactions later, however.
|
||||
- They can now give out *Amulti* as address others can pay to.
|
||||
|
||||
Later, when *V* DGB has been received on *Amulti*, and Bob and Carol want to
|
||||
move the coins in their entirety to address *Asend*, with no change. Alice
|
||||
does not need to be involved.
|
||||
- One of them - let's assume Carol here - initiates the creation. She runs
|
||||
`walletcreatefundedpsbt [] {"Asend":V} 0 {"subtractFeeFromOutputs":[0], "includeWatching":true}`.
|
||||
We call the resulting PSBT *P*. *P* does not contain any signatures.
|
||||
- Carol needs to sign the transaction herself. In order to do so, she runs
|
||||
`walletprocesspsbt "P"`, and gives the resulting PSBT *P2* to Bob.
|
||||
- Bob inspects the PSBT using `decodepsbt "P2"` to determine if the transaction
|
||||
has indeed just the expected input, and an output to *Asend*, and the fee is
|
||||
reasonable. If he agrees, he calls `walletprocesspsbt "P2"` to sign. The
|
||||
resulting PSBT *P3* contains both Carol's and Bob's signature.
|
||||
- Now anyone can call `finalizepsbt "P3"` to extract a fully signed transaction
|
||||
*T*.
|
||||
- Finally anyone can broadcast the transaction using `sendrawtransaction "T"`.
|
||||
|
||||
In case there are more signers, it may be advantageous to let them all sign in
|
||||
parallel, rather than passing the PSBT from one signer to the next one. In the
|
||||
above example this would translate to Carol handing a copy of *P* to each signer
|
||||
separately. They can then all invoke `walletprocesspsbt "P"`, and end up with
|
||||
their individually-signed PSBT structures. They then all send those back to
|
||||
Carol (or anyone) who can combine them using `combinepsbt`. The last two steps
|
||||
(`finalizepsbt` and `sendrawtransaction`) remain unchanged.
|
||||
54
doc/reduce-memory.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Reduce Memory
|
||||
|
||||
There are a few parameters that can be dialed down to reduce the memory usage of `digibyted`. This can be useful on embedded systems or small VPSes.
|
||||
|
||||
## In-memory caches
|
||||
|
||||
The size of some in-memory caches can be reduced. As caches trade off memory usage for performance, reducing these will usually have a negative effect on performance.
|
||||
|
||||
- `-dbcache=<n>` - the UTXO database cache size, this defaults to `450`. The unit is MiB (1024).
|
||||
- The minimum value for `-dbcache` is 4.
|
||||
- A lower `-dbcache` makes initial sync time much longer. After the initial sync, the effect is less pronounced for most use-cases, unless fast validation of blocks is important, such as for mining.
|
||||
|
||||
## Memory pool
|
||||
|
||||
- In DigiByte Core there is a memory pool limiter which can be configured with `-maxmempool=<n>`, where `<n>` is the size in MB (1000). The default value is `300`.
|
||||
- The minimum value for `-maxmempool` is 5.
|
||||
- A lower maximum mempool size means that transactions will be evicted sooner. This will affect any uses of `digibyted` that process unconfirmed transactions.
|
||||
|
||||
- To completely disable mempool functionality there is the option `-blocksonly`. This will make the client opt out of receiving (and thus relaying) transactions completely, except as part of blocks.
|
||||
|
||||
- Do not use this when using the client to broadcast transactions as any transaction sent will stick out like a sore thumb, affecting privacy. When used with the wallet it should be combined with `-walletbroadcast=0` and `-spendzeroconfchange=0`. Another mechanism for broadcasting outgoing transactions (if any) should be used.
|
||||
|
||||
- Since `0.14.0`, unused memory allocated to the mempool (default: 300MB) is shared with the UTXO cache, so when trying to reduce memory usage you should limit the mempool, with the `-maxmempool` command line argument.
|
||||
|
||||
## Number of peers
|
||||
|
||||
- `-maxconnections=<n>` - the maximum number of connections, which defaults to 125. Each active connection takes up some
|
||||
memory. This option applies only if inbound connections are enabled; otherwise, the number of connections will not
|
||||
be more than 11. Of the 11 outbound peers, there can be 8 full-relay connections, 2 block-relay-only ones,
|
||||
and occasionally 1 short-lived feeler or extra outbound block-relay-only connection.
|
||||
|
||||
- These limits do not apply to connections added manually with the `-addnode` configuration option or
|
||||
the `addnode` RPC, which have a separate limit of 8 connections.
|
||||
|
||||
## Thread configuration
|
||||
|
||||
For each thread a thread stack needs to be allocated. By default on Linux,
|
||||
threads take up 8MiB for the thread stack on a 64-bit system, and 4MiB in a
|
||||
32-bit system.
|
||||
|
||||
- `-par=<n>` - the number of script verification threads, defaults to the number of cores in the system minus one.
|
||||
- `-rpcthreads=<n>` - the number of threads used for processing RPC requests, defaults to `4`.
|
||||
|
||||
## Linux specific
|
||||
|
||||
By default, since glibc `2.10`, the C library will create up to two heap arenas per core. This is known to cause excessive memory usage in some scenarios. To avoid this make a script that sets `MALLOC_ARENA_MAX` before starting digibyted:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
export MALLOC_ARENA_MAX=1
|
||||
digibyted
|
||||
```
|
||||
|
||||
The behavior was introduced to increase CPU locality of allocated memory and performance with concurrent allocation, so this setting could in theory reduce performance. However, in DigiByte Core very little parallel allocation happens, so the impact is expected to be small or absent.
|
||||
56
doc/reduce-traffic.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
Reduce Traffic
|
||||
==============
|
||||
|
||||
Some node operators need to deal with bandwidth caps imposed by their ISPs.
|
||||
|
||||
By default, DigiByte Core allows up to 125 connections to different peers, 10 of
|
||||
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
|
||||
block-relay-only ones.
|
||||
|
||||
The default settings can result in relatively significant traffic consumption.
|
||||
|
||||
Ways to reduce traffic:
|
||||
|
||||
## 1. Use `-maxuploadtarget=<MiB per day>`
|
||||
|
||||
A major component of the traffic is caused by serving historic blocks to other nodes
|
||||
during the initial blocks download phase (syncing up a new node).
|
||||
This option can be specified in MiB per day and is turned off by default.
|
||||
This is *not* a hard limit; only a threshold to minimize the outbound
|
||||
traffic. When the limit is about to be reached, the uploaded data is cut by no
|
||||
longer serving historic blocks (blocks older than one week).
|
||||
Keep in mind that new nodes require other nodes that are willing to serve
|
||||
historic blocks.
|
||||
|
||||
Peers with the `download` permission will never be disconnected, although their traffic counts for
|
||||
calculating the target.
|
||||
|
||||
## 2. Disable "listening" (`-listen=0`)
|
||||
|
||||
Disabling listening will result in fewer nodes connected (remember the maximum of 10
|
||||
outbound peers). Fewer nodes will result in less traffic usage as you are relaying
|
||||
blocks and transactions to fewer nodes.
|
||||
|
||||
## 3. Reduce maximum connections (`-maxconnections=<num>`)
|
||||
|
||||
Reducing the maximum connected nodes to a minimum could be desirable if traffic
|
||||
limits are tiny. Keep in mind that digibyte's trustless model works best if you are
|
||||
connected to a handful of nodes.
|
||||
|
||||
## 4. Turn off transaction relay (`-blocksonly`)
|
||||
|
||||
Forwarding transactions to peers increases the P2P traffic. To only sync blocks
|
||||
with other peers, you can disable transaction relay.
|
||||
|
||||
Be reminded of the effects of this setting.
|
||||
|
||||
- Fee estimation will no longer work.
|
||||
- It sets the flag "-walletbroadcast" to be "0", only if it is currently unset.
|
||||
Doing so disables the automatic broadcasting of transactions from wallet. Not
|
||||
relaying other's transactions could hurt your privacy if used while a wallet
|
||||
is loaded or if you use the node to broadcast transactions.
|
||||
- If a peer has the forcerelay permission, we will still receive and relay
|
||||
their transactions.
|
||||
- It makes block propagation slower because compact block relay can only be
|
||||
used when transaction relay is enabled.
|
||||
13
doc/release-notes-pr10267.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Changed command-line options
|
||||
----------------------------
|
||||
|
||||
- `-includeconf=<file>` can be used to include additional configuration files.
|
||||
Only works inside the `digibyte.conf` file, not inside included files or from
|
||||
command-line. Multiple files may be included. Can be disabled from command-
|
||||
line via `-noincludeconf`. Note that multi-argument commands like
|
||||
`-includeconf` will override preceding `-noincludeconf`, i.e.
|
||||
|
||||
noincludeconf=1
|
||||
includeconf=relative.conf
|
||||
|
||||
as digibyte.conf will still include `relative.conf`.
|
||||
10
doc/release-notes-pr10740.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
Dynamic loading and creation of wallets
|
||||
---------------------------------------
|
||||
|
||||
Previously, wallets could only be loaded or created at startup, by specifying `-wallet` parameters on the command line or in the digibyte.conf file. It is now possible to load, create and unload wallets dynamically at runtime:
|
||||
|
||||
- Existing wallets can be loaded by calling the `loadwallet` RPC. The wallet can be specified as file/directory basename (which must be located in the `walletdir` directory), or as an absolute path to a file/directory.
|
||||
- New wallets can be created (and loaded) by calling the `createwallet` RPC. The provided name must not match a wallet file in the `walletdir` directory or the name of a wallet that is currently loaded.
|
||||
- Loaded wallets can be unloaded by calling the `unloadwallet` RPC.
|
||||
|
||||
This feature is currently only available through the RPC interface.
|
||||
20
doc/release-notes-pr12823.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
Configuration sections for testnet and regtest
|
||||
----------------------------------------------
|
||||
|
||||
It is now possible for a single configuration file to set different
|
||||
options for different networks. This is done by using sections or by
|
||||
prefixing the option with the network, such as:
|
||||
|
||||
main.uacomment=digibyte
|
||||
test.uacomment=digibyte-testnet
|
||||
regtest.uacomment=regtest
|
||||
[main]
|
||||
mempoolsize=300
|
||||
[test]
|
||||
mempoolsize=100
|
||||
[regtest]
|
||||
mempoolsize=20
|
||||
|
||||
The `addnode=`, `connect=`, `port=`, `bind=`, `rpcport=`, `rpcbind=`
|
||||
and `wallet=` options will only apply to mainnet when specified in the
|
||||
configuration file, unless a network is specified.
|
||||
37
doc/release-notes-pr12892.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
'label' and 'account' APIs for wallet
|
||||
-------------------------------------
|
||||
|
||||
A new 'label' API has been introduced for the wallet. This is intended as a
|
||||
replacement for the deprecated 'account' API. The 'account' can continue to
|
||||
be used in V0.17 by starting digibyted with the '-deprecatedrpc=accounts'
|
||||
argument, and will be fully removed in V0.18.
|
||||
|
||||
The label RPC methods mirror the account functionality, with the following functional differences:
|
||||
|
||||
- Labels can be set on any address, not just receiving addresses. This functionality was previously only available through the GUI.
|
||||
- Labels can be deleted by reassigning all addresses using the `setlabel` RPC method.
|
||||
- There isn't support for sending transactions _from_ a label, or for determining which label a transaction was sent from.
|
||||
- Labels do not have a balance.
|
||||
|
||||
Here are the changes to RPC methods:
|
||||
|
||||
| Deprecated Method | New Method | Notes |
|
||||
| :---------------------- | :-------------------- | :-----------|
|
||||
| `getaccount` | `getaddressinfo` | `getaddressinfo` returns a json object with address information instead of just the name of the account as a string. |
|
||||
| `getaccountaddress` | n/a | There is no replacement for `getaccountaddress` since labels do not have an associated receive address. |
|
||||
| `getaddressesbyaccount` | `getaddressesbylabel` | `getaddressesbylabel` returns a json object with the addresses as keys, instead of a list of strings. |
|
||||
| `getreceivedbyaccount` | `getreceivedbylabel` | _no change in behavior_ |
|
||||
| `listaccounts` | `listlabels` | `listlabels` does not return a balance or accept `minconf` and `watchonly` arguments. |
|
||||
| `listreceivedbyaccount` | `listreceivedbylabel` | Both methods return new `label` fields, along with `account` fields for backward compatibility. |
|
||||
| `move` | n/a | _no replacement_ |
|
||||
| `sendfrom` | n/a | _no replacement_ |
|
||||
| `setaccount` | `setlabel` | Both methods now: <ul><li>allow assigning labels to any address, instead of raising an error if the address is not receiving address.<li>delete the previous label associated with an address when the final address using that label is reassigned to a different label, instead of making an implicit `getaccountaddress` call to ensure the previous label still has a receiving address. |
|
||||
|
||||
| Changed Method | Notes |
|
||||
| :--------------------- | :------ |
|
||||
| `addmultisigaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility if running with '-deprecatedrpc=accounts'. |
|
||||
| `getnewaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility. if running with '-deprecatedrpc=accounts' |
|
||||
| `listunspent` | Returns new `label` fields. `account` field will be returned for backward compatibility if running with '-deprecatedrpc=accounts' |
|
||||
| `sendmany` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the empty string, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). |
|
||||
| `listtransactions` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the string `*`, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). |
|
||||
| `getbalance` | `account`, `minconf` and `include_watchonly` parameters are deprecated, and can only be used if running with '-deprecatedrpc=accounts' |
|
||||
11
doc/release-notes-pr13033.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
Transaction index changes
|
||||
-------------------------
|
||||
|
||||
The transaction index is now built separately from the main node procedure,
|
||||
meaning the `-txindex` flag can be toggled without a full reindex. If digibyted
|
||||
is run with `-txindex` on a node that is already partially or fully synced
|
||||
without one, the transaction index will be built in the background and become
|
||||
available once caught up. When switching from running `-txindex` to running
|
||||
without the flag, the transaction index database will *not* be deleted
|
||||
automatically, meaning it could be turned back on at a later time without a full
|
||||
resync.
|
||||
751
doc/release-notes.md
Normal file
|
|
@ -0,0 +1,751 @@
|
|||
# Release notes now being edited on https://github.com/digibyte-core/digibyte-devwiki/wiki/22.0-Release-Notes-draft
|
||||
|
||||
*After branching off for a major version release of DigiByte Core, use this
|
||||
template to create the initial release notes draft.*
|
||||
|
||||
*The release notes draft is a temporary file that can be added to by anyone. See
|
||||
[/doc/developer-notes.md#release-notes](/doc/developer-notes.md#release-notes)
|
||||
for the process.*
|
||||
|
||||
*Create the draft, named* "*version* Release Notes Draft"
|
||||
*(e.g. "0.20.0 Release Notes Draft"), as a collaborative wiki in:*
|
||||
|
||||
https://github.com/digibyte-core/digibyte-devwiki/wiki/
|
||||
|
||||
*Before the final release, move the notes back to this git repository.*
|
||||
|
||||
*version* Release Notes Draft
|
||||
===============================
|
||||
|
||||
DigiByte Core version *version* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-*version*/>
|
||||
|
||||
This release includes new features, various bug fixes and performance
|
||||
improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte-core/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
|
||||
Performance Improvements
|
||||
--------------
|
||||
|
||||
Validation speed and network propagation performance have been greatly
|
||||
improved, leading to much shorter sync and initial block download times.
|
||||
|
||||
- The script signature cache has been reimplemented as a "cuckoo cache",
|
||||
allowing for more signatures to be cached and faster lookups.
|
||||
- Assumed-valid blocks have been introduced which allows script validation to
|
||||
be skipped for ancestors of known-good blocks, without changing the security
|
||||
model. See below for more details.
|
||||
- In some cases, compact blocks are now relayed before being fully validated as
|
||||
per BIP152.
|
||||
- P2P networking has been refactored with a focus on concurrency and
|
||||
throughput. Network operations are no longer bottlenecked by validation. As a
|
||||
result, block fetching is several times faster than previous releases in many
|
||||
cases.
|
||||
- The UTXO cache now claims unused mempool memory. This speeds up initial block
|
||||
download as UTXO lookups are a major bottleneck there, and there is no use for
|
||||
the mempool at that stage.
|
||||
|
||||
|
||||
Manual Pruning
|
||||
--------------
|
||||
|
||||
DigiByte Core has supported automatically pruning the blockchain since 0.11. Pruning
|
||||
the blockchain allows for significant storage space savings as the vast majority of
|
||||
the downloaded data can be discarded after processing so very little of it remains
|
||||
on the disk.
|
||||
|
||||
Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,
|
||||
the RPC command `pruneblockchain` can be used to prune the blockchain up to the
|
||||
specified height or timestamp.
|
||||
|
||||
`getinfo` Deprecated
|
||||
--------------------
|
||||
|
||||
The `getinfo` RPC command has been deprecated. Each field in the RPC call
|
||||
has been moved to another command's output with that command also giving
|
||||
additional information that `getinfo` did not provide. The following table
|
||||
shows where each field has been moved to:
|
||||
|
||||
|`getinfo` field | Moved to |
|
||||
|------------------|-------------------------------------------|
|
||||
`"version"` | `getnetworkinfo()["version"]`
|
||||
`"protocolversion"`| `getnetworkinfo()["protocolversion"]`
|
||||
`"walletversion"` | `getwalletinfo()["walletversion"]`
|
||||
`"balance"` | `getwalletinfo()["balance"]`
|
||||
`"blocks"` | `getblockchaininfo()["blocks"]`
|
||||
`"timeoffset"` | `getnetworkinfo()["timeoffset"]`
|
||||
`"connections"` | `getnetworkinfo()["connections"]`
|
||||
`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]`
|
||||
`"difficulty"` | `getblockchaininfo()["difficulty"]`
|
||||
`"testnet"` | `getblockchaininfo()["chain"] == "test"`
|
||||
`"keypoololdest"` | `getwalletinfo()["keypoololdest"]`
|
||||
`"keypoolsize"` | `getwalletinfo()["keypoolsize"]`
|
||||
`"unlocked_until"` | `getwalletinfo()["unlocked_until"]`
|
||||
`"paytxfee"` | `getwalletinfo()["paytxfee"]`
|
||||
`"relayfee"` | `getnetworkinfo()["relayfee"]`
|
||||
`"errors"` | `getnetworkinfo()["warnings"]`
|
||||
|
||||
ZMQ On Windows
|
||||
--------------
|
||||
|
||||
Previously the ZeroMQ notification system was unavailable on Windows
|
||||
due to various issues with ZMQ. These have been fixed upstream and
|
||||
now ZMQ can be used on Windows. Please see [this document](https://github.com/digibyte-core/digibyte/blob/master/doc/zmq.md) for
|
||||
help with using ZMQ in general.
|
||||
|
||||
Nested RPC Commands in Debug Console
|
||||
------------------------------------
|
||||
|
||||
The ability to nest RPC commands has been added to the debug console. This
|
||||
allows users to have the output of a command become the input to another
|
||||
command without running the commands separately.
|
||||
|
||||
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
|
||||
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
|
||||
done with square brackets where object values are accessed with either an
|
||||
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
|
||||
commas and spaces can be used to separate parameters in both the bracket syntax
|
||||
and normal RPC command syntax.
|
||||
|
||||
Network Activity Toggle
|
||||
-----------------------
|
||||
|
||||
A RPC command and GUI toggle have been added to enable or disable all p2p
|
||||
network activity. The network status icon in the bottom right hand corner
|
||||
is now the GUI toggle. Clicking the icon will either enable or disable all
|
||||
p2p network activity. If network activity is disabled, the icon will
|
||||
be grayed out with an X on top of it.
|
||||
|
||||
Additionally the `setnetworkactive` RPC command has been added which does
|
||||
the same thing as the GUI icon. The command takes one boolean parameter,
|
||||
`true` enables networking and `false` disables it.
|
||||
|
||||
Out-of-sync Modal Info Layer
|
||||
----------------------------
|
||||
|
||||
When DigiByte Core is out-of-sync on startup, a semi-transparent information
|
||||
layer will be shown over top of the normal display. This layer contains
|
||||
details about the current sync progress and estimates the amount of time
|
||||
remaining to finish syncing. This layer can also be hidden and subsequently
|
||||
unhidden by clicking on the progress bar at the bottom of the window.
|
||||
|
||||
Support for JSON-RPC Named Arguments
|
||||
------------------------------------
|
||||
|
||||
Commands sent over the JSON-RPC interface and through the `digibyte-cli` binary
|
||||
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
|
||||
for passing parameters by-name with an object.
|
||||
|
||||
`digibyte-cli` has been updated to support this by parsing `name=value` arguments
|
||||
when the `-named` option is given.
|
||||
|
||||
Some examples:
|
||||
|
||||
src/digibyte-cli -named help command="help"
|
||||
src/digibyte-cli -named getblockhash height=0
|
||||
src/digibyte-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
||||
src/digibyte-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
|
||||
|
||||
The order of arguments doesn't matter in this case. Named arguments are also
|
||||
useful to leave out arguments that should stay at their default value. The
|
||||
rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can
|
||||
be left out. However, this is not yet implemented for many RPC calls, this is
|
||||
expected to land in a later release.
|
||||
|
||||
The RPC server remains fully backwards compatible with positional arguments.
|
||||
|
||||
Opt into RBF When Sending
|
||||
-------------------------
|
||||
|
||||
A new startup option, `-walletrbf`, has been added to allow users to have all
|
||||
transactions sent opt into RBF support. The default value for this option is
|
||||
currently `false`, so transactions will not opt into RBF by default. The new
|
||||
`bumpfee` RPC can be used to replace transactions that opt into RBF.
|
||||
|
||||
Sensitive Data Is No Longer Stored In Debug Console History
|
||||
-----------------------------------------------------------
|
||||
|
||||
The debug console maintains a history of previously entered commands that can be
|
||||
accessed by pressing the Up-arrow key so that users can easily reuse previously
|
||||
entered commands. Commands which have sensitive information such as passphrases and
|
||||
private keys will now have a `(...)` in place of the parameters when accessed through
|
||||
the history.
|
||||
|
||||
Retaining the Mempool Across Restarts
|
||||
-------------------------------------
|
||||
|
||||
The mempool will be saved to the data directory prior to shutdown
|
||||
to a `mempool.dat` file. This file preserves the mempool so that when the node
|
||||
restarts the mempool can be filled with transactions without waiting for new transactions
|
||||
to be created. This will also preserve any changes made to a transaction through
|
||||
commands such as `prioritisetransaction` so that those changes will not be lost.
|
||||
|
||||
Final Alert
|
||||
-----------
|
||||
|
||||
The Alert System was [disabled and deprecated](https://digibyte.org/en/alert/2016-11-01-alert-retirement) in DigiByte Core 0.12.1 and removed in 0.13.0.
|
||||
The Alert System was retired with a maximum sequence final alert which causes any nodes
|
||||
supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also
|
||||
prevents any other alerts from overriding it. This final alert is hard-coded into this release
|
||||
so that all old nodes receive the final alert.
|
||||
|
||||
GUI Changes
|
||||
-----------
|
||||
|
||||
- After resetting the options by clicking the `Reset Options` button
|
||||
in the options dialog or with the `-resetguioptions` startup option,
|
||||
the user will be prompted to choose the data directory again. This
|
||||
is to ensure that custom data directories will be kept after the
|
||||
option reset which clears the custom data directory set via the choose
|
||||
datadir dialog.
|
||||
|
||||
- Multiple peers can now be selected in the list of peers in the debug
|
||||
window. This allows for users to ban or disconnect multiple peers
|
||||
simultaneously instead of banning them one at a time.
|
||||
|
||||
- An indicator has been added to the bottom right hand corner of the main
|
||||
window to indicate whether the wallet being used is a HD wallet. This
|
||||
icon will be grayed out with an X on top of it if the wallet is not a
|
||||
HD wallet.
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
- The first boolean argument to `getaddednodeinfo` has been removed. This is
|
||||
an incompatible change.
|
||||
|
||||
- RPC command `getmininginfo` loses the "testnet" field in favor of the more
|
||||
generic "chain" (which has been present for years).
|
||||
|
||||
- A new RPC command `preciousblock` has been added which marks a block as
|
||||
precious. A precious block will be treated as if it were received earlier
|
||||
than a competing block.
|
||||
|
||||
- A new RPC command `importmulti` has been added which receives an array of
|
||||
JSON objects representing the intention of importing a public key, a
|
||||
private key, an address and script/p2sh
|
||||
|
||||
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent
|
||||
outputs has been deprecated. For now this will still work, but in the future
|
||||
it may change to only be able to retrieve information about transactions in
|
||||
the mempool or if `txindex` is enabled.
|
||||
|
||||
- A new RPC command `getmemoryinfo` has been added which will return information
|
||||
about the memory usage of DigiByte Core. This was added in conjunction with
|
||||
optimizations to memory management. See [Pull #8753](https://github.com/digibyte-core/digibyte/pull/8753)
|
||||
for more information.
|
||||
|
||||
- A new RPC command `bumpfee` has been added which allows replacing an
|
||||
unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`
|
||||
startup option above) with a new transaction that pays a higher fee, and
|
||||
should be more likely to get confirmed quickly.
|
||||
|
||||
HTTP REST Changes
|
||||
-----------------
|
||||
|
||||
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
|
||||
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
|
||||
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
|
||||
when requests contain invalid parameters.
|
||||
|
||||
Minimum Fee Rate Policies
|
||||
-------------------------
|
||||
|
||||
Since the changes in 0.12 to automatically limit the size of the mempool and improve the performance of block creation in mining code it has not been important for relay nodes or miners to set `-minrelaytxfee`. With this release the following concepts that were tied to this option have been separated out:
|
||||
- incremental relay fee used for calculating BIP 125 replacement and mempool limiting. (1000 satoshis/kB)
|
||||
- calculation of threshold for a dust output. (effectively 3 * 1000 satoshis/kB)
|
||||
- minimum fee rate of a package of transactions to be included in a block created by the mining code. If miners wish to set this minimum they can use the new `-blockmintxfee` option. (defaults to 1000 satoshis/kB)
|
||||
|
||||
The `-minrelaytxfee` option continues to exist but is recommended to be left unset.
|
||||
=======
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes in some cases), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
Upgrading directly from a version of DigiByte Core that has reached its EOL is
|
||||
possible, but it might take some time if the data directory needs to be migrated. Old
|
||||
wallet versions of DigiByte Core are generally supported.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is supported and extensively tested on operating systems
|
||||
using the Linux kernel, macOS 10.14+, and Windows 7 and newer. DigiByte
|
||||
Core should also work on most other Unix-like systems but is not as
|
||||
frequently tested on them. It is not recommended to use DigiByte Core on
|
||||
unsupported systems.
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
=======
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.10+, and Windows 7 and newer (Windows XP is not supported).
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
=======
|
||||
Wallet changes
|
||||
---------------
|
||||
|
||||
|
||||
### Segwit Wallet
|
||||
|
||||
DigiByte Core 0.16.0 introduces full support for segwit in the wallet and user interfaces. A new `-addresstype` argument has been added, which supports `legacy`, `p2sh-segwit` (default), and `bech32` addresses. It controls what kind of addresses are produced by `getnewaddress`, `getaccountaddress`, and `createmultisigaddress`. A `-changetype` argument has also been added, with the same options, and by default equal to `-addresstype`, to control which kind of change is used.
|
||||
|
||||
A new `address_type` parameter has been added to the `getnewaddress` and `addmultisigaddress` RPCs to specify which type of address to generate.
|
||||
A `change_type` argument has been added to the `fundrawtransaction` RPC to override the `-changetype` argument for specific transactions.
|
||||
|
||||
- All segwit addresses created through `getnewaddress` or `*multisig` RPCs explicitly get their redeemscripts added to the wallet file. This means that downgrading after creating a segwit address will work, as long as the wallet file is up to date.
|
||||
- All segwit keys in the wallet get an implicit redeemscript added, without it being written to the file. This means recovery of an old backup will work, as long as you use new software.
|
||||
- All keypool keys that are seen used in transactions explicitly get their redeemscripts added to the wallet files. This means that downgrading after recovering from a backup that includes a segwit address will work
|
||||
|
||||
Note that some RPCs do not yet support segwit addresses. Notably, `signmessage`/`verifymessage` doesn't support segwit addresses, nor does `importmulti` at this time. `dumpwallet`/`importwallet` work, but will (in comments) list the corresponding P2PKH addresses for all keys, even those only used in segwit addresses. Support for segwit in those RPCs will continue to be added in future versions.
|
||||
|
||||
P2WPKH change outputs are now used by default if any destination in the transaction is a P2WPKH or P2WSH output. This is done to ensure the change output is as indistinguishable from the other outputs as possible in either case.
|
||||
|
||||
### BIP173 (Bech32) Address support ("bc1..." addresses)
|
||||
|
||||
Full support for native segwit addresses (BIP173 / Bech32) has now been added.
|
||||
This includes the ability to send to BIP173 addresses (including non-v0 ones), and generating these
|
||||
addresses (including as default new addresses, see above).
|
||||
|
||||
A checkbox has been added to the GUI to select whether a Bech32 address or P2SH-wrapped address should be generated when using segwit addresses. When launched with `-addresstype=bech32` it is checked by default. When launched with `-addresstype=legacy` it is unchecked and disabled.
|
||||
|
||||
### HD-wallets by default
|
||||
|
||||
Due to a backward-incompatible change in the wallet database, wallets created
|
||||
with version 0.16.0 will be rejected by previous versions. Also, version 0.16.0
|
||||
will only create hierarchical deterministic (HD) wallets.
|
||||
|
||||
### Replace-By-Fee by default in GUI
|
||||
|
||||
The send screen now uses BIP125 RBF by default, regardless of `-walletrbf`.
|
||||
There is a checkbox to mark the transaction as final.
|
||||
|
||||
The RPC default remains unchanged: to use RBF, launch with `-walletrbf=1` or
|
||||
use the `replaceable` argument for individual transactions.
|
||||
|
||||
### Wallets directory configuration (`-walletdir`)
|
||||
|
||||
DigiByte Core now has more flexibility in where the wallets directory can be
|
||||
located. Previously wallet database files were stored at the top level of the
|
||||
digibyte data directory. The behavior is now:
|
||||
|
||||
- For new installations (where the data directory doesn't already exist),
|
||||
wallets will now be stored in a new `wallets/` subdirectory inside the data
|
||||
directory by default.
|
||||
- For existing nodes (where the data directory already exists), wallets will be
|
||||
stored in the data directory root by default. If a `wallets/` subdirectory
|
||||
already exists in the data directory root, then wallets will be stored in the
|
||||
`wallets/` subdirectory by default.
|
||||
- The location of the wallets directory can be overridden by specifying a
|
||||
`-walletdir=<path>` option where `<path>` can be an absolute path to a
|
||||
directory or directory symlink.
|
||||
|
||||
Care should be taken when choosing the wallets directory location, as if it
|
||||
becomes unavailable during operation, funds may be lost.
|
||||
|
||||
Build: Minimum GCC bumped to 4.8.x
|
||||
------------------------------------
|
||||
The minimum version of the GCC compiler required to compile DigiByte Core is now 4.8. No effort will be
|
||||
made to support older versions of GCC. See discussion in issue #11732 for more information.
|
||||
The minimum version for the Clang compiler is still 3.3. Other minimum dependency versions can be found in `doc/dependencies.md` in the repository.
|
||||
|
||||
Support for signalling pruned nodes (BIP159)
|
||||
---------------------------------------------
|
||||
Pruned nodes can now signal BIP159's NODE_NETWORK_LIMITED using service bits, in preparation for
|
||||
full BIP159 support in later versions. This would allow pruned nodes to serve the most recent blocks. However, the current change does not yet include support for connecting to these pruned peers.
|
||||
|
||||
Performance: SHA256 assembly enabled by default
|
||||
-------------------------------------------------
|
||||
The SHA256 hashing optimizations for architectures supporting SSE4, which lead to ~50% speedups in SHA256 on supported hardware (~5% faster synchronization and block validation), have now been enabled by default. In previous versions they were enabled using the `--enable-experimental-asm` flag when building, but are now the default and no longer deemed experimental.
|
||||
|
||||
GUI changes
|
||||
-----------
|
||||
- Uses of "µDGB" in the GUI now also show the more colloquial term "bits", specified in BIP176.
|
||||
- The option to reuse a previous address has now been removed. This was justified by the need to "resend" an invoice, but now that we have the request history, that need should be gone.
|
||||
- Support for searching by TXID has been added, rather than just address and label.
|
||||
- A "Use available balance" option has been added to the send coins dialog, to add the remaining available wallet balance to a transaction output.
|
||||
- A toggle for unblinding the password fields on the password dialog has been added.
|
||||
=======
|
||||
From 0.17.0 onwards macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn't
|
||||
support versions of macOS older than 10.10.
|
||||
=======
|
||||
From DigiByte Core 22.0 onwards, macOS versions earlier than 10.14 are no longer supported.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
P2P and network changes
|
||||
-----------------------
|
||||
|
||||
- This release removes support for Tor version 2 hidden services in favor of Tor
|
||||
v3 only, as the Tor network [dropped support for Tor
|
||||
v2](https://blog.torproject.org/v2-deprecation-timeline) with the release of
|
||||
Tor version 0.4.6. Henceforth, DigiByte Core ignores Tor v2 addresses; it
|
||||
neither rumors them over the network to other peers, nor stores them in memory
|
||||
or to `peers.dat`. (#22050)
|
||||
|
||||
- Added NAT-PMP port mapping support via
|
||||
[`libnatpmp`](https://miniupnp.tuxfamily.org/libnatpmp.html). (#18077)
|
||||
|
||||
Updated RPCs
|
||||
------------
|
||||
|
||||
- Due to [BIP 350](https://github.com/digibyte-core/bips/blob/master/bip-0350.mediawiki)
|
||||
being implemented, behavior for all RPCs that accept addresses is changed when
|
||||
a native witness version 1 (or higher) is passed. These now require a Bech32m
|
||||
encoding instead of a Bech32 one, and Bech32m encoding will be used for such
|
||||
addresses in RPC output as well. No version 1 addresses should be created
|
||||
for mainnet until consensus rules are adopted that give them meaning
|
||||
(e.g. through [BIP 341](https://github.com/digibyte-core/bips/blob/master/bip-0341.mediawiki)).
|
||||
Once that happens, Bech32m is expected to be used for them, so this shouldn't
|
||||
affect any production systems, but may be observed on other networks where such
|
||||
addresses already have meaning (like signet). (#20861)
|
||||
|
||||
- The `getpeerinfo` RPC returns two new boolean fields, `bip152_hb_to` and
|
||||
`bip152_hb_from`, that respectively indicate whether we selected a peer to be
|
||||
in compact blocks high-bandwidth mode or whether a peer selected us as a
|
||||
compact blocks high-bandwidth peer. High-bandwidth peers send new block
|
||||
announcements via a `cmpctblock` message rather than the usual inv/headers
|
||||
announcements. See BIP 152 for more details. (#19776)
|
||||
|
||||
- `getpeerinfo` no longer returns the following fields: `addnode`, `banscore`,
|
||||
and `whitelisted`, which were previously deprecated in 0.21. Instead of
|
||||
`addnode`, the `connection_type` field returns manual. Instead of
|
||||
`whitelisted`, the `permissions` field indicates if the peer has special
|
||||
privileges. The `banscore` field has simply been removed. (#20755)
|
||||
|
||||
- The following RPCs: `gettxout`, `getrawtransaction`, `decoderawtransaction`,
|
||||
`decodescript`, `gettransaction`, and REST endpoints: `/rest/tx`,
|
||||
`/rest/getutxos`, `/rest/block` deprecated the following fields (which are no
|
||||
longer returned in the responses by default): `addresses`, `reqSigs`.
|
||||
The `-deprecatedrpc=addresses` flag must be passed for these fields to be
|
||||
included in the RPC response. This flag/option will be available only for this major release, after which
|
||||
the deprecation will be removed entirely. Note that these fields are attributes of
|
||||
the `scriptPubKey` object returned in the RPC response. However, in the response
|
||||
of `decodescript` these fields are top-level attributes, and included again as attributes
|
||||
of the `scriptPubKey` object. (#20286)
|
||||
|
||||
- When creating a hex-encoded digibyte transaction using the `digibyte-tx` utility
|
||||
with the `-json` option set, the following fields: `addresses`, `reqSigs` are no longer
|
||||
returned in the tx output of the response. (#20286)
|
||||
|
||||
- The `listbanned` RPC now returns two new numeric fields: `ban_duration` and `time_remaining`.
|
||||
Respectively, these new fields indicate the duration of a ban and the time remaining until a ban expires,
|
||||
both in seconds. Additionally, the `ban_created` field is repositioned to come before `banned_until`. (#21602)
|
||||
|
||||
- The `getnodeaddresses` RPC now returns a "network" field indicating the
|
||||
network type (ipv4, ipv6, onion, or i2p) for each address. (#21594)
|
||||
|
||||
- `getnodeaddresses` now also accepts a "network" argument (ipv4, ipv6, onion,
|
||||
or i2p) to return only addresses of the specified network. (#21843)
|
||||
|
||||
- The `testmempoolaccept` RPC now accepts multiple transactions (still experimental at the moment,
|
||||
API may be unstable). This is intended for testing transaction packages with dependency
|
||||
relationships; it is not recommended for batch-validating independent transactions. In addition to
|
||||
mempool policy, package policies apply: the list cannot contain more than 25 transactions or have a
|
||||
total size exceeding 101K virtual bytes, and cannot conflict with (spend the same inputs as) each other or
|
||||
the mempool, even if it would be a valid BIP125 replace-by-fee. There are some known limitations to
|
||||
the accuracy of the test accept: it's possible for `testmempoolaccept` to return "allowed"=True for a
|
||||
group of transactions, but "too-long-mempool-chain" if they are actually submitted. (#20833)
|
||||
|
||||
- `addmultisigaddress` and `createmultisig` now support up to 20 keys for
|
||||
Segwit addresses. (#20867)
|
||||
|
||||
Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
|
||||
|
||||
New RPCs
|
||||
--------
|
||||
|
||||
Build System
|
||||
------------
|
||||
|
||||
New settings
|
||||
------------
|
||||
|
||||
- The `-natpmp` option has been added to use NAT-PMP to map the listening port.
|
||||
If both UPnP and NAT-PMP are enabled, a successful allocation from UPnP
|
||||
prevails over one from NAT-PMP. (#18077)
|
||||
|
||||
Updated settings
|
||||
----------------
|
||||
|
||||
Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
|
||||
|
||||
- Passing an invalid `-rpcauth` argument now cause digibyted to fail to start. (#20461)
|
||||
|
||||
Tools and Utilities
|
||||
-------------------
|
||||
|
||||
- A new CLI `-addrinfo` command returns the number of addresses known to the
|
||||
node per network type (including Tor v2 versus v3) and total. This can be
|
||||
useful to see if the node knows enough addresses in a network to use options
|
||||
like `-onlynet=<network>` or to upgrade to this release of DigiByte Core 22.0
|
||||
that supports Tor v3 only. (#21595)
|
||||
|
||||
- A new `-rpcwaittimeout` argument to `digibyte-cli` sets the timeout
|
||||
in seconds to use with `-rpcwait`. If the timeout expires,
|
||||
`digibyte-cli` will report a failure. (#21056)
|
||||
|
||||
Wallet
|
||||
------
|
||||
|
||||
- A new `listdescriptors` RPC is available to inspect the contents of descriptor-enabled wallets.
|
||||
The RPC returns public versions of all imported descriptors, including their timestamp and flags.
|
||||
For ranged descriptors, it also returns the range boundaries and the next index to generate addresses from. (#20226)
|
||||
|
||||
- The `bumpfee` RPC is not available with wallets that have private keys
|
||||
disabled. `psbtbumpfee` can be used instead. (#20891)
|
||||
|
||||
- The `fundrawtransaction`, `send` and `walletcreatefundedpsbt` RPCs now support an `include_unsafe` option
|
||||
that when `true` allows using unsafe inputs to fund the transaction.
|
||||
Note that the resulting transaction may become invalid if one of the unsafe inputs disappears.
|
||||
If that happens, the transaction must be funded with different inputs and republished. (#21359)
|
||||
|
||||
- We now support up to 20 keys in `multi()` and `sortedmulti()` descriptors
|
||||
under `wsh()`. (#20867)
|
||||
|
||||
GUI changes
|
||||
-----------
|
||||
|
||||
Low-level changes
|
||||
=================
|
||||
|
||||
RPC
|
||||
---
|
||||
|
||||
- The RPC server can process a limited number of simultaneous RPC requests.
|
||||
Previously, if this limit was exceeded, the RPC server would respond with
|
||||
[status code 500 (`HTTP_INTERNAL_SERVER_ERROR`)](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors).
|
||||
Now it returns status code 503 (`HTTP_SERVICE_UNAVAILABLE`). (#18335)
|
||||
|
||||
- Error codes have been updated to be more accurate for the following error cases (#18466):
|
||||
- `signmessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the
|
||||
passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
|
||||
- `verifymessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the
|
||||
passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
|
||||
- `verifymessage` now returns RPC_TYPE_ERROR (-3) if the passed signature
|
||||
is malformed. Previously returned RPC_INVALID_ADDRESS_OR_KEY (-5).
|
||||
|
||||
RPC changes
|
||||
------------
|
||||
|
||||
### Low-level changes
|
||||
|
||||
- The `createrawtransaction` RPC will now accept an array or dictionary (kept for compatibility) for the `outputs` parameter. This means the order of transaction outputs can be specified by the client.
|
||||
- The `fundrawtransaction` RPC will reject the previously deprecated `reserveChangeKey` option.
|
||||
- `sendmany` now shuffles outputs to improve privacy, so any previously expected behavior with regards to output ordering can no longer be relied upon.
|
||||
- The new RPC `testmempoolaccept` can be used to test acceptance of a transaction to the mempool without adding it.
|
||||
- JSON transaction decomposition now includes a `weight` field which provides
|
||||
the transaction's exact weight. This is included in REST /rest/tx/ and
|
||||
/rest/block/ endpoints when in json mode. This is also included in `getblock`
|
||||
(with verbosity=2), `listsinceblock`, `listtransactions`, and
|
||||
`getrawtransaction` RPC commands.
|
||||
- New `fees` field introduced in `getrawmempool`, `getmempoolancestors`, `getmempooldescendants` and
|
||||
`getmempoolentry` when verbosity is set to `true` with sub-fields `ancestor`, `base`, `modified`
|
||||
and `descendant` denominated in BTC. This new field deprecates previous fee fields, such as
|
||||
`fee`, `modifiedfee`, `ancestorfee` and `descendantfee`.
|
||||
- The new RPC `getzmqnotifications` returns information about active ZMQ
|
||||
notifications.
|
||||
|
||||
External wallet files
|
||||
---------------------
|
||||
|
||||
The `-wallet=<path>` option now accepts full paths instead of requiring wallets
|
||||
to be located in the -walletdir directory.
|
||||
|
||||
Newly created wallet format
|
||||
---------------------------
|
||||
|
||||
If `-wallet=<path>` is specified with a path that does not exist, it will now
|
||||
create a wallet directory at the specified location (containing a wallet.dat
|
||||
data file, a db.log file, and database/log.?????????? files) instead of just
|
||||
creating a data file at the path and storing log files in the parent
|
||||
directory. This should make backing up wallets more straightforward than
|
||||
before because the specified wallet path can just be directly archived without
|
||||
having to look in the parent directory for transaction log files.
|
||||
|
||||
For backwards compatibility, wallet paths that are names of existing data files
|
||||
in the `-walletdir` directory will continue to be accepted and interpreted the
|
||||
same as before.
|
||||
|
||||
Low-level RPC changes
|
||||
---------------------
|
||||
|
||||
- When digibyte is not started with any `-wallet=<path>` options, the name of
|
||||
the default wallet returned by `getwalletinfo` and `listwallets` RPCs is
|
||||
now the empty string `""` instead of `"wallet.dat"`. If digibyte is started
|
||||
with any `-wallet=<path>` options, there is no change in behavior, and the
|
||||
name of any wallet is just its `<path>` string.
|
||||
- Passing an empty string (`""`) as the `address_type` parameter to
|
||||
`getnewaddress`, `getrawchangeaddress`, `addmultisigaddress`,
|
||||
`fundrawtransaction` RPCs is now an error. Previously, this would fall back
|
||||
to using the default address type. It is still possible to pass null or leave
|
||||
the parameter unset to use the default address type.
|
||||
|
||||
- Bare multisig outputs to our keys are no longer automatically treated as
|
||||
incoming payments. As this feature was only available for multisig outputs for
|
||||
which you had all private keys in your wallet, there was generally no use for
|
||||
them compared to single-key schemes. Furthermore, no address format for such
|
||||
outputs is defined, and wallet software can't easily send to it. These outputs
|
||||
will no longer show up in `listtransactions`, `listunspent`, or contribute to
|
||||
your balance, unless they are explicitly watched (using `importaddress` or
|
||||
`importmulti` with hex script argument). `signrawtransaction*` also still
|
||||
works for them.
|
||||
|
||||
### Logging
|
||||
|
||||
- The log timestamp format is now ISO 8601 (e.g. "2018-02-28T12:34:56Z").
|
||||
|
||||
- When running digibyted with `-debug` but without `-daemon`, logging to stdout
|
||||
is now the default behavior. Setting `-printtoconsole=1` no longer implicitly
|
||||
disables logging to debug.log. Instead, logging to file can be explicitly disabled
|
||||
by setting `-debuglogfile=0`.
|
||||
|
||||
Miner block size removed
|
||||
------------------------
|
||||
|
||||
The `-blockmaxsize` option for miners to limit their blocks' sizes was
|
||||
deprecated in V0.15.1, and has now been removed. Miners should use the
|
||||
`-blockmaxweight` option if they want to limit the weight of their blocks'
|
||||
weights.
|
||||
|
||||
Python Support
|
||||
--------------
|
||||
|
||||
Support for Python 2 has been discontinued for all test files and tools.
|
||||
=======
|
||||
`listtransactions` label support
|
||||
--------------------------------
|
||||
|
||||
The `listtransactions` RPC `account` parameter which was deprecated in 0.17.0
|
||||
and renamed to `dummy` has been un-deprecated and renamed again to `label`.
|
||||
|
||||
When digibyte is configured with the `-deprecatedrpc=accounts` setting, specifying
|
||||
a label/account/dummy argument will return both outgoing and incoming
|
||||
transactions. Without the `-deprecatedrpc=accounts` setting, it will only return
|
||||
incoming transactions (because it used to be possible to create transactions
|
||||
spending from specific accounts, but this is no longer possible with labels).
|
||||
|
||||
When `-deprecatedrpc=accounts` is set, it's possible to pass the empty string ""
|
||||
to list transactions that don't have any label. Without
|
||||
`-deprecatedrpc=accounts`, passing the empty string is an error because returning
|
||||
only non-labeled transactions is not generally useful behavior and can cause
|
||||
confusion.
|
||||
|
||||
0.17.1 change log
|
||||
=================
|
||||
|
||||
### P2P protocol and network code
|
||||
- #14685 `9406502` Fix a deserialization overflow edge case (kazcw)
|
||||
- #14728 `b901578` Fix uninitialized read when stringifying an addrLocal (kazcw)
|
||||
|
||||
### Wallet
|
||||
- #14441 `5150acc` Restore ability to list incoming transactions by label (jnewbery)
|
||||
- #13546 `91fa15a` Fix use of uninitialized value `bnb_used` in CWallet::CreateTransaction(…) (practicalswift)
|
||||
- #14310 `bb90695` Ensure wallet is unlocked before signing (gustavonalle)
|
||||
- #14690 `5782fdc` Throw error if CPubKey is invalid during PSBT keypath serialization (instagibbs)
|
||||
- #14852 `2528443` backport: [tests] Add `wallet_balance.py` (MarcoFalke)
|
||||
- #14196 `3362a95` psbt: always drop the unnecessary utxo and convert non-witness utxo to witness when necessary (achow101)
|
||||
- #14588 `70ee1f8` Refactor PSBT signing logic to enforce invariant and fix signing bug (gwillen)
|
||||
- #14424 `89a9a9d` Stop requiring imported pubkey to sign non-PKH schemes (sipa, MeshCollider)
|
||||
|
||||
### RPC and other APIs
|
||||
- #14417 `fb9ad04` Fix listreceivedbyaddress not taking address as a string (etscrivner)
|
||||
- #14596 `de5e48a` Bugfix: RPC: Add `address_type` named param for createmultisig (luke-jr)
|
||||
- #14618 `9666dba` Make HTTP RPC debug logging more informative (practicalswift)
|
||||
- #14197 `7bee414` [psbt] Convert non-witness UTXOs to witness if witness sig created (achow101)
|
||||
- #14377 `a3fe125` Check that a separator is found for psbt inputs, outputs, and global map (achow101)
|
||||
- #14356 `7a590d8` Fix converttopsbt permitsigdata arg, add basic test (instagibbs)
|
||||
- #14453 `75b5d8c` Fix wallet unload during walletpassphrase timeout (promag)
|
||||
|
||||
### GUI
|
||||
- #14403 `0242b5a` Revert "Force TLS1.0+ for SSL connections" (real-or-random)
|
||||
- #14593 `df5131b` Explicitly disable "Dark Mode" appearance on macOS (fanquake)
|
||||
|
||||
### Build system
|
||||
- #14647 `7edebed` Remove illegal spacing in darwin.mk (ch4ot1c)
|
||||
- #14698 `ec71f06` Add digibyte-tx.exe into Windows installer (ken2812221)
|
||||
|
||||
### Tests and QA
|
||||
- #13965 `29899ec` Fix extended functional tests fail (ken2812221)
|
||||
- #14011 `9461f98` Disable wallet and address book Qt tests on macOS minimal platform (ryanofsky)
|
||||
- #14180 `86fadee` Run all tests even if wallet is not compiled (MarcoFalke)
|
||||
- #14122 `8bc1bad` Test `rpc_help.py` failed: Check whether ZMQ is enabled or not (Kvaciral)
|
||||
- #14101 `96dc936` Use named args in validation acceptance tests (MarcoFalke)
|
||||
- #14020 `24d796a` Add tests for RPC help (promag)
|
||||
- #14052 `7ff32a6` Add some actual witness in `rpc_rawtransaction` (MarcoFalke)
|
||||
- #14215 `b72fbab` Use correct python index slices in example test (sdaftuar)
|
||||
- #14024 `06544fa` Add `TestNode::assert_debug_log` (MarcoFalke)
|
||||
- #14658 `60f7a97` Add test to ensure node can generate all rpc help texts at runtime (MarcoFalke)
|
||||
- #14632 `96f15e8` Fix a comment (fridokus)
|
||||
- #14700 `f9db08e` Avoid race in `p2p_invalid_block` by waiting for the block request (MarcoFalke)
|
||||
- #14845 `67225e2` Add `wallet_balance.py` (jnewbery)
|
||||
|
||||
### Documentation
|
||||
- #14161 `5f51fd6` doc/descriptors.md tweaks (ryanofsky)
|
||||
- #14276 `85aacc4` Add autogen.sh in ARM Cross-compilation (walterwhite81)
|
||||
=======
|
||||
Tests
|
||||
-----
|
||||
>>>>>>> bitcoin/8.22.0
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
(to be filled in at release time)
|
||||
=======
|
||||
- Andrew Chow
|
||||
- Chun Kuan Lee
|
||||
- David A. Harding
|
||||
- Eric Scrivner
|
||||
- fanquake
|
||||
- fridokus
|
||||
- Glenn Willen
|
||||
- Gregory Sanders
|
||||
- gustavonalle
|
||||
- John Newbery
|
||||
- Jon Layton
|
||||
- Jonas Schnelli
|
||||
- João Barbosa
|
||||
- Kaz Wesley
|
||||
- Kvaciral
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- MeshCollider
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- Russell Yanofsky
|
||||
- Sjors Provoost
|
||||
- Suhas Daftuar
|
||||
- Tim Ruffing
|
||||
- Walter
|
||||
- Wladimir J. van der Laan
|
||||
>>>>>>> 0.17
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
=======
|
||||
|
||||
As well as to everyone that helped with translations on
|
||||
[Transifex](https://www.transifex.com/digibyte/digibyte/).
|
||||
>>>>>>> bitcoin/8.22.0
|
||||
762
doc/release-notes/release-notes-0.10.0.md
Normal file
|
|
@ -0,0 +1,762 @@
|
|||
DigiByte Core version 0.10.0 is now available from:
|
||||
|
||||
https://digibyte.org/bin/0.10.0/
|
||||
|
||||
This is a new major version release, bringing both new features and
|
||||
bug fixes.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
https://github.com/digibyte/digibyte/issues
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrading warning
|
||||
---------------------
|
||||
|
||||
Because release 0.10.0 makes use of headers-first synchronization and parallel
|
||||
block download (see further), the block files and databases are not
|
||||
backwards-compatible with older versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Faster synchronization
|
||||
----------------------
|
||||
|
||||
DigiByte Core now uses 'headers-first synchronization'. This means that we first
|
||||
ask peers for block headers (a total of 27 megabytes, as of December 2014) and
|
||||
validate those. In a second stage, when the headers have been discovered, we
|
||||
download the blocks. However, as we already know about the whole chain in
|
||||
advance, the blocks can be downloaded in parallel from all available peers.
|
||||
|
||||
In practice, this means a much faster and more robust synchronization. On
|
||||
recent hardware with a decent network link, it can be as little as 3 hours
|
||||
for an initial full synchronization. You may notice a slower progress in the
|
||||
very first few minutes, when headers are still being fetched and verified, but
|
||||
it should gain speed afterwards.
|
||||
|
||||
A few RPCs were added/updated as a result of this:
|
||||
- `getblockchaininfo` now returns the number of validated headers in addition to
|
||||
the number of validated blocks.
|
||||
- `getpeerinfo` lists both the number of blocks and headers we know we have in
|
||||
common with each peer. While synchronizing, the heights of the blocks that we
|
||||
have requested from peers (but haven't received yet) are also listed as
|
||||
'inflight'.
|
||||
- A new RPC `getchaintips` lists all known branches of the block chain,
|
||||
including those we only have headers for.
|
||||
|
||||
Transaction fee changes
|
||||
-----------------------
|
||||
|
||||
This release automatically estimates how high a transaction fee (or how
|
||||
high a priority) transactions require to be confirmed quickly. The default
|
||||
settings will create transactions that confirm quickly; see the new
|
||||
'txconfirmtarget' setting to control the tradeoff between fees and
|
||||
confirmation times. Fees are added by default unless the 'sendfreetransactions'
|
||||
setting is enabled.
|
||||
|
||||
Prior releases used hard-coded fees (and priorities), and would
|
||||
sometimes create transactions that took a very long time to confirm.
|
||||
|
||||
Statistics used to estimate fees and priorities are saved in the
|
||||
data directory in the `fee_estimates.dat` file just before
|
||||
program shutdown, and are read in at startup.
|
||||
|
||||
New command line options for transaction fee changes:
|
||||
- `-txconfirmtarget=n` : create transactions that have enough fees (or priority)
|
||||
so they are likely to begin confirmation within n blocks (default: 1). This setting
|
||||
is over-ridden by the -paytxfee option.
|
||||
- `-sendfreetransactions` : Send transactions as zero-fee transactions if possible
|
||||
(default: 0)
|
||||
|
||||
New RPC commands for fee estimation:
|
||||
- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for
|
||||
a transaction to begin confirmation within nblocks. Returns -1 if not enough
|
||||
transactions have been observed to compute a good estimate.
|
||||
- `estimatepriority nblocks` : Returns approximate priority needed for
|
||||
a zero-fee transaction to begin confirmation within nblocks. Returns -1 if not
|
||||
enough free transactions have been observed to compute a good
|
||||
estimate.
|
||||
|
||||
RPC access control changes
|
||||
--------------------------
|
||||
|
||||
Subnet matching for the purpose of access control is now done
|
||||
by matching the binary network address, instead of with string wildcard matching.
|
||||
For the user this means that `-rpcallowip` takes a subnet specification, which can be
|
||||
|
||||
- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`)
|
||||
- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`)
|
||||
- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`)
|
||||
|
||||
An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address
|
||||
matches one of them.
|
||||
|
||||
For example:
|
||||
|
||||
| 0.9.x and before | 0.10.x |
|
||||
|--------------------------------------------|---------------------------------------|
|
||||
| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) |
|
||||
| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` |
|
||||
| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` |
|
||||
| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` (still dangerous!) |
|
||||
|
||||
Using wildcards will result in the rule being rejected with the following error in debug.log:
|
||||
|
||||
Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24).
|
||||
|
||||
|
||||
REST interface
|
||||
--------------
|
||||
|
||||
A new HTTP API is exposed when running with the `-rest` flag, which allows
|
||||
unauthenticated access to public node data.
|
||||
|
||||
It is served on the same port as RPC, but does not need a password, and uses
|
||||
plain HTTP instead of JSON-RPC.
|
||||
|
||||
Assuming a local RPC server running on port 8332, it is possible to request:
|
||||
- Blocks: http://localhost:8332/rest/block/*HASH*.*EXT*
|
||||
- Blocks without transactions: http://localhost:8332/rest/block/notxdetails/*HASH*.*EXT*
|
||||
- Transactions (requires `-txindex`): http://localhost:8332/rest/tx/*HASH*.*EXT*
|
||||
|
||||
In every case, *EXT* can be `bin` (for raw binary data), `hex` (for hex-encoded
|
||||
binary) or `json`.
|
||||
|
||||
For more details, see the `doc/REST-interface.md` document in the repository.
|
||||
|
||||
RPC Server "Warm-Up" Mode
|
||||
-------------------------
|
||||
|
||||
The RPC server is started earlier now, before most of the expensive
|
||||
intialisations like loading the block index. It is available now almost
|
||||
immediately after starting the process. However, until all initialisations
|
||||
are done, it always returns an immediate error with code -28 to all calls.
|
||||
|
||||
This new behaviour can be useful for clients to know that a server is already
|
||||
started and will be available soon (for instance, so that they do not
|
||||
have to start it themselves).
|
||||
|
||||
Improved signing security
|
||||
-------------------------
|
||||
|
||||
For 0.10 the security of signing against unusual attacks has been
|
||||
improved by making the signatures constant time and deterministic.
|
||||
|
||||
This change is a result of switching signing to use libsecp256k1
|
||||
instead of OpenSSL. Libsecp256k1 is a cryptographic library
|
||||
optimized for the curve DigiByte uses which was created by DigiByte
|
||||
Core developer Pieter Wuille.
|
||||
|
||||
There exist attacks[1] against most ECC implementations where an
|
||||
attacker on shared virtual machine hardware could extract a private
|
||||
key if they could cause a target to sign using the same key hundreds
|
||||
of times. While using shared hosts and reusing keys are inadvisable
|
||||
for other reasons, it's a better practice to avoid the exposure.
|
||||
|
||||
OpenSSL has code in their source repository for derandomization
|
||||
and reduction in timing leaks that we've eagerly wanted to use for a
|
||||
long time, but this functionality has still not made its
|
||||
way into a released version of OpenSSL. Libsecp256k1 achieves
|
||||
significantly stronger protection: As far as we're aware this is
|
||||
the only deployed implementation of constant time signing for
|
||||
the curve DigiByte uses and we have reason to believe that
|
||||
libsecp256k1 is better tested and more thoroughly reviewed
|
||||
than the implementation in OpenSSL.
|
||||
|
||||
[1] https://eprint.iacr.org/2014/161.pdf
|
||||
|
||||
Watch-only wallet support
|
||||
-------------------------
|
||||
|
||||
The wallet can now track transactions to and from wallets for which you know
|
||||
all addresses (or scripts), even without the private keys.
|
||||
|
||||
This can be used to track payments without needing the private keys online on a
|
||||
possibly vulnerable system. In addition, it can help for (manual) construction
|
||||
of multisig transactions where you are only one of the signers.
|
||||
|
||||
One new RPC, `importaddress`, is added which functions similarly to
|
||||
`importprivkey`, but instead takes an address or script (in hexadecimal) as
|
||||
argument. After using it, outputs credited to this address or script are
|
||||
considered to be received, and transactions consuming these outputs will be
|
||||
considered to be sent.
|
||||
|
||||
The following RPCs have optional support for watch-only:
|
||||
`getbalance`, `listreceivedbyaddress`, `listreceivedbyaccount`,
|
||||
`listtransactions`, `listaccounts`, `listsinceblock`, `gettransaction`. See the
|
||||
RPC documentation for those methods for more information.
|
||||
|
||||
Compared to using `getrawtransaction`, this mechanism does not require
|
||||
`-txindex`, scales better, integrates better with the wallet, and is compatible
|
||||
with future block chain pruning functionality. It does mean that all relevant
|
||||
addresses need to added to the wallet before the payment, though.
|
||||
|
||||
Consensus library
|
||||
-----------------
|
||||
|
||||
Starting from 0.10.0, the DigiByte Core distribution includes a consensus library.
|
||||
|
||||
The purpose of this library is to make the verification functionality that is
|
||||
critical to DigiByte's consensus available to other applications, e.g. to language
|
||||
bindings such as [python-digibytelib](https://pypi.python.org/pypi/python-digibytelib) or
|
||||
alternative node implementations.
|
||||
|
||||
This library is called `libdigibyteconsensus.so` (or, `.dll` for Windows).
|
||||
Its interface is defined in the C header [digibyteconsensus.h](https://github.com/digibyte/digibyte/blob/0.10/src/script/digibyteconsensus.h).
|
||||
|
||||
In its initial version the API includes two functions:
|
||||
|
||||
- `digibyteconsensus_verify_script` verifies a script. It returns whether the indicated input of the provided serialized transaction
|
||||
correctly spends the passed scriptPubKey under additional constraints indicated by flags
|
||||
- `digibyteconsensus_version` returns the API version, currently at an experimental `0`
|
||||
|
||||
The functionality is planned to be extended to e.g. UTXO management in upcoming releases, but the interface
|
||||
for existing methods should remain stable.
|
||||
|
||||
Standard script rules relaxed for P2SH addresses
|
||||
------------------------------------------------
|
||||
|
||||
The IsStandard() rules have been almost completely removed for P2SH
|
||||
redemption scripts, allowing applications to make use of any valid
|
||||
script type, such as "n-of-m OR y", hash-locked oracle addresses, etc.
|
||||
While the DigiByte protocol has always supported these types of script,
|
||||
actually using them on mainnet has been previously inconvenient as
|
||||
standard DigiByte Core nodes wouldn't relay them to miners, nor would
|
||||
most miners include them in blocks they mined.
|
||||
|
||||
digibyte-tx
|
||||
----------
|
||||
|
||||
It has been observed that many of the RPC functions offered by digibyted are
|
||||
"pure functions", and operate independently of the digibyted wallet. This
|
||||
included many of the RPC "raw transaction" API functions, such as
|
||||
createrawtransaction.
|
||||
|
||||
digibyte-tx is a newly introduced command line utility designed to enable easy
|
||||
manipulation of digibyte transactions. A summary of its operation may be
|
||||
obtained via "digibyte-tx --help" Transactions may be created or signed in a
|
||||
manner similar to the RPC raw tx API. Transactions may be updated, deleting
|
||||
inputs or outputs, or appending new inputs and outputs. Custom scripts may be
|
||||
easily composed using a simple text notation, borrowed from the digibyte test
|
||||
suite.
|
||||
|
||||
This tool may be used for experimenting with new transaction types, signing
|
||||
multi-party transactions, and many other uses. Long term, the goal is to
|
||||
deprecate and remove "pure function" RPC API calls, as those do not require a
|
||||
server round-trip to execute.
|
||||
|
||||
Other utilities "digibyte-key" and "digibyte-script" have been proposed, making
|
||||
key and script operations easily accessible via command line.
|
||||
|
||||
Mining and relay policy enhancements
|
||||
------------------------------------
|
||||
|
||||
DigiByte Core's block templates are now for version 3 blocks only, and any mining
|
||||
software relying on its `getblocktemplate` must be updated in parallel to use
|
||||
libblkmaker either version 0.4.2 or any version from 0.5.1 onward.
|
||||
If you are solo mining, this will affect you the moment you upgrade DigiByte
|
||||
Core, which must be done prior to BIP66 achieving its 951/1001 status.
|
||||
If you are mining with the stratum mining protocol: this does not affect you.
|
||||
If you are mining with the getblocktemplate protocol to a pool: this will affect
|
||||
you at the pool operator's discretion, which must be no later than BIP66
|
||||
achieving its 951/1001 status.
|
||||
|
||||
The `prioritisetransaction` RPC method has been added to enable miners to
|
||||
manipulate the priority of transactions on an individual basis.
|
||||
|
||||
DigiByte Core now supports BIP 22 long polling, so mining software can be
|
||||
notified immediately of new templates rather than having to poll periodically.
|
||||
|
||||
Support for BIP 23 block proposals is now available in DigiByte Core's
|
||||
`getblocktemplate` method. This enables miners to check the basic validity of
|
||||
their next block before expending work on it, reducing risks of accidental
|
||||
hardforks or mining invalid blocks.
|
||||
|
||||
Two new options to control mining policy:
|
||||
- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions
|
||||
if this is 1.
|
||||
- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for
|
||||
"data carrier" outputs.
|
||||
|
||||
The relay policy has changed to more properly implement the desired behavior of not
|
||||
relaying free (or very low fee) transactions unless they have a priority above the
|
||||
AllowFreeThreshold(), in which case they are relayed subject to the rate limiter.
|
||||
|
||||
BIP 66: strict DER encoding for signatures
|
||||
------------------------------------------
|
||||
|
||||
DigiByte Core 0.10 implements BIP 66, which introduces block version 3, and a new
|
||||
consensus rule, which prohibits non-DER signatures. Such transactions have been
|
||||
non-standard since DigiByte v0.8.0 (released in February 2013), but were
|
||||
technically still permitted inside blocks.
|
||||
|
||||
This change breaks the dependency on OpenSSL's signature parsing, and is
|
||||
required if implementations would want to remove all of OpenSSL from the
|
||||
consensus code.
|
||||
|
||||
The same miner-voting mechanism as in BIP 34 is used: when 751 out of a
|
||||
sequence of 1001 blocks have version number 3 or higher, the new consensus
|
||||
rule becomes active for those blocks. When 951 out of a sequence of 1001
|
||||
blocks have version number 3 or higher, it becomes mandatory for all blocks.
|
||||
|
||||
Backward compatibility with current mining software is NOT provided, thus miners
|
||||
should read the first paragraph of "Mining and relay policy enhancements" above.
|
||||
|
||||
0.10.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
RPC:
|
||||
- `f923c07` Support IPv6 lookup in digibyte-cli even when IPv6 only bound on localhost
|
||||
- `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection
|
||||
- `171ca77` estimatefee / estimatepriority RPC methods
|
||||
- `b750cf1` Remove cli functionality from digibyted
|
||||
- `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo
|
||||
- `99ddc6c` Add nLocalServices info to RPC getinfo
|
||||
- `cf0c47b` Remove getwork() RPC call
|
||||
- `2a72d45` prioritisetransaction <txid> <priority delta> <priority tx fee>
|
||||
- `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions
|
||||
- `2ec5a3d` Prevent easy RPC memory exhaustion attack
|
||||
- `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation
|
||||
- `83f3543` Added argument to listaccounts to include watchonly addresses
|
||||
- `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address
|
||||
- `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses
|
||||
- `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation
|
||||
- `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account
|
||||
- `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked
|
||||
- `ff6a7af` getblocktemplate: longpolling support
|
||||
- `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs
|
||||
- `1b4568c` Add vout to ListTransactions output
|
||||
- `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks
|
||||
- `733177e` Remove size limit in RPC client, keep it in server
|
||||
- `6b5b7cb` Categorize rpc help overview
|
||||
- `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC
|
||||
- `aa82795` Add detailed network info to getnetworkinfo RPC
|
||||
- `01094bd` Don't reveal whether password is <20 or >20 characters in RPC
|
||||
- `57153d4` rpc: Compute number of confirmations of a block from block height
|
||||
- `ff36cbe` getnetworkinfo: export local node's client sub-version string
|
||||
- `d14d7de` SanitizeString: allow '(' and ')'
|
||||
- `31d6390` Fixed setaccount accepting foreign address
|
||||
- `b5ec5fe` update getnetworkinfo help with subversion
|
||||
- `ad6e601` RPC additions after headers-first
|
||||
- `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo`
|
||||
- `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option
|
||||
- `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock
|
||||
- `e69a587` submitblock: Support for returning specific rejection reasons
|
||||
- `af82884` Add "warmup mode" for RPC server
|
||||
- `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data
|
||||
- `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server
|
||||
- `44b4c0d` signrawtransaction: validate private key
|
||||
- `9765a50` Implement BIP 23 Block Proposal
|
||||
- `f9de17e` Add warning comment to getinfo
|
||||
|
||||
Command-line options:
|
||||
- `ee21912` Use netmasks instead of wildcards for IP address matching
|
||||
- `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface
|
||||
- `96b733e` Add `-version` option to get just the version
|
||||
- `1569353` Add `-stopafterblockimport` option
|
||||
- `77cbd46` Let -zapwallettxes recover transaction meta data
|
||||
- `1c750db` remove -tor compatibility code (only allow -onion)
|
||||
- `4aaa017` rework help messages for fee-related options
|
||||
- `4278b1d` Clarify error message when invalid -rpcallowip
|
||||
- `6b407e4` -datadir is now allowed in config files
|
||||
- `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask)
|
||||
- `cbe39a3` Add "digibyte-tx" command line utility and supporting modules
|
||||
- `dbca89b` Trigger -alertnotify if network is upgrading without you
|
||||
- `ad96e7c` Make -reindex cope with out-of-order blocks
|
||||
- `16d5194` Skip reindexed blocks individually
|
||||
- `ec01243` --tracerpc option for regression tests
|
||||
- `f654f00` Change -genproclimit default to 1
|
||||
- `3c77714` Make -proxy set all network types, avoiding a connect leak
|
||||
- `57be955` Remove -printblock, -printblocktree, and -printblockindex
|
||||
- `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional
|
||||
|
||||
Block and transaction handling:
|
||||
- `7a0e84d` ProcessGetData(): abort if a block file is missing from disk
|
||||
- `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing
|
||||
- `77339e5` Get rid of the static chainMostWork (optimization)
|
||||
- `4e0eed8` Allow ActivateBestChain to release its lock on cs_main
|
||||
- `18e7216` Push cs_mains down in ProcessBlock
|
||||
- `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization
|
||||
- `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions
|
||||
- `c9a0918` Add a skiplist to the CBlockIndex structure
|
||||
- `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization)
|
||||
- `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization)
|
||||
- `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache
|
||||
- `5734d4d` Only remove actualy failed blocks from setBlockIndexValid
|
||||
- `d70bc52` Rework block processing benchmark code
|
||||
- `714a3e6` Only keep setBlockIndexValid entries that are possible improvements
|
||||
- `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage)
|
||||
- `4fad8e6` Reject transactions with excessive numbers of sigops
|
||||
- `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization)
|
||||
- `92bb6f2` Bypass reloading blocks from disk (optimization)
|
||||
- `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage)
|
||||
- `ab15b2e` Avoid copying undo data (optimization)
|
||||
- `341735e` Headers-first synchronization
|
||||
- `afc32c5` Fix rebuild-chainstate feature and improve its performance
|
||||
- `e11b2ce` Fix large reorgs
|
||||
- `ed6d1a2` Keep information about all block files in memory
|
||||
- `a48f2d6` Abstract context-dependent block checking from acceptance
|
||||
- `7e615f5` Fixed mempool sync after sending a transaction
|
||||
- `51ce901` Improve chainstate/blockindex disk writing policy
|
||||
- `a206950` Introduce separate flushing modes
|
||||
- `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true
|
||||
- `868d041` Remove coinbase-dependant transactions during reorg
|
||||
- `723d12c` Remove txn which are invalidated by coinbase maturity during reorg
|
||||
- `0cb8763` Check against MANDATORY flags prior to accepting to mempool
|
||||
- `8446262` Reject headers that build on an invalid parent
|
||||
- `008138c` Bugfix: only track UTXO modification after lookup
|
||||
|
||||
P2P protocol and network code:
|
||||
- `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails
|
||||
- `c30329a` Add testnet DNS seed of Alex Kotenko
|
||||
- `45a4baf` Add testnet DNS seed of Andreas Schildbach
|
||||
- `f1920e8` Ping automatically every 2 minutes (unconditionally)
|
||||
- `806fd19` Allocate receive buffers in on the fly
|
||||
- `6ecf3ed` Display unknown commands received
|
||||
- `aa81564` Track peers' available blocks
|
||||
- `caf6150` Use async name resolving to improve net thread responsiveness
|
||||
- `9f4da19` Use pong receive time rather than processing time
|
||||
- `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5
|
||||
- `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation
|
||||
- `dc942e6` Introduce whitelisted peers
|
||||
- `c994d2e` prevent SOCKET leak in BindListenPort()
|
||||
- `a60120e` Add built-in seeds for .onion
|
||||
- `60dc8e4` Allow -onlynet=onion to be used
|
||||
- `3a56de7` addrman: Do not propagate obviously poor addresses onto the network
|
||||
- `6050ab6` netbase: Make SOCKS5 negotiation interruptible
|
||||
- `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it
|
||||
- `efad808` Avoid reject message feedback loops
|
||||
- `71697f9` Separate protocol versioning from clientversion
|
||||
- `20a5f61` Don't relay alerts to peers before version negotiation
|
||||
- `b4ee0bd` Introduce preferred download peers
|
||||
- `845c86d` Do not use third party services for IP detection
|
||||
- `12a49ca` Limit the number of new addressses to accumulate
|
||||
- `35e408f` Regard connection failures as attempt for addrman
|
||||
- `a3a7317` Introduce 10 minute block download timeout
|
||||
- `3022e7d` Require sufficent priority for relay of free transactions
|
||||
- `58fda4d` Update seed IPs, based on digibyte.sipa.be crawler data
|
||||
- `18021d0` Remove bitnodes.io from dnsseeds.
|
||||
|
||||
Validation:
|
||||
- `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s
|
||||
- `584a358` Do merkle root and txid duplicates check simultaneously
|
||||
- `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging
|
||||
- `f74fc9b` Print input index when signature validation fails, to aid debugging
|
||||
- `6fd59ee` script.h: set_vch() should shift a >32 bit value
|
||||
- `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only)
|
||||
- `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only)
|
||||
- `ab9edbd` script: create sane error return codes for script validation and remove logging
|
||||
- `219a147` script: check ScriptError values in script tests
|
||||
- `0391423` Discourage NOPs reserved for soft-fork upgrades
|
||||
- `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode
|
||||
- `307f7d4` Report script evaluation failures in log and reject messages
|
||||
- `ace39db` consensus: guard against openssl's new strict DER checks
|
||||
- `12b7c44` Improve robustness of DER recoding code
|
||||
- `76ce5c8` fail immediately on an empty signature
|
||||
|
||||
Build system:
|
||||
- `f25e3ad` Fix build in OS X 10.9
|
||||
- `65e8ba4` build: Switch to non-recursive make
|
||||
- `460b32d` build: fix broken boost chrono check on some platforms
|
||||
- `9ce0774` build: Fix windows configure when using --with-qt-libdir
|
||||
- `ea96475` build: Add mention of --disable-wallet to bdb48 error messages
|
||||
- `1dec09b` depends: add shared dependency builder
|
||||
- `c101c76` build: Add --with-utils (digibyte-cli and digibyte-tx, default=yes). Help string consistency tweaks. Target sanity check fix
|
||||
- `e432a5f` build: add option for reducing exports (v2)
|
||||
- `6134b43` Fixing condition 'sabotaging' MSVC build
|
||||
- `af0bd5e` osx: fix signing to make Gatekeeper happy (again)
|
||||
- `a7d1f03` build: fix dynamic boost check when --with-boost= is used
|
||||
- `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path
|
||||
- `2cf5f16` Add libdigibyteconsensus library
|
||||
- `914868a` build: add a deterministic dmg signer
|
||||
- `2d375fe` depends: bump openssl to 1.0.1k
|
||||
- `b7a4ecc` Build: Only check for boost when building code that requires it
|
||||
|
||||
Wallet:
|
||||
- `b33d1f5` Use fee/priority estimates in wallet CreateTransaction
|
||||
- `4b7b1bb` Sanity checks for estimates
|
||||
- `c898846` Add support for watch-only addresses
|
||||
- `d5087d1` Use script matching rather than destination matching for watch-only
|
||||
- `d88af56` Fee fixes
|
||||
- `a35b55b` Dont run full check every time we decrypt wallet
|
||||
- `3a7c348` Fix make_change to not create half-satoshis
|
||||
- `f606bb9` fix a possible memory leak in CWalletDB::Recover
|
||||
- `870da77` fix possible memory leaks in CWallet::EncryptWallet
|
||||
- `ccca27a` Watch-only fixes
|
||||
- `9b1627d` [Wallet] Reduce minTxFee for transaction creation to 1000 satoshis
|
||||
- `a53fd41` Deterministic signing
|
||||
- `15ad0b5` Apply AreSane() checks to the fees from the network
|
||||
- `11855c1` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
|
||||
|
||||
GUI:
|
||||
- `c21c74b` osx: Fix missing dock menu with qt5
|
||||
- `b90711c` Fix Transaction details shows wrong To:
|
||||
- `516053c` Make links in 'About DigiByte Core' clickable
|
||||
- `bdc83e8` Ensure payment request network matches client network
|
||||
- `65f78a1` Add GUI view of peer information
|
||||
- `06a91d9` VerifyDB progress reporting
|
||||
- `fe6bff2` Add BerkeleyDB version info to RPCConsole
|
||||
- `b917555` PeerTableModel: Fix potential deadlock. #4296
|
||||
- `dff0e3b` Improve rpc console history behavior
|
||||
- `95a9383` Remove CENT-fee-rule from coin control completely
|
||||
- `56b07d2` Allow setting listen via GUI
|
||||
- `d95ba75` Log messages with type>QtDebugMsg as non-debug
|
||||
- `8969828` New status bar Unit Display Control and related changes
|
||||
- `674c070` seed OpenSSL PNRG with Windows event data
|
||||
- `509f926` Payment request parsing on startup now only changes network if a valid network name is specified
|
||||
- `acd432b` Prevent balloon-spam after rescan
|
||||
- `7007402` Implement SI-style (thin space) thoudands separator
|
||||
- `91cce17` Use fixed-point arithmetic in amount spinbox
|
||||
- `bdba2dd` Remove an obscure option no-one cares about
|
||||
- `bd0aa10` Replace the temporary file hack currently used to change DigiByte-Qt's dock icon (OS X) with a buffer-based solution
|
||||
- `94e1b9e` Re-work overviewpage UI
|
||||
- `8bfdc9a` Better looking trayicon
|
||||
- `b197bf3` disable tray interactions when client model set to 0
|
||||
- `1c5f0af` Add column Watch-only to transactions list
|
||||
- `21f139b` Fix tablet crash. closes #4854
|
||||
- `e84843c` Broken addresses on command line no longer trigger testnet
|
||||
- `a49f11d` Change splash screen to normal window
|
||||
- `1f9be98` Disable App Nap on OSX 10.9+
|
||||
- `27c3e91` Add proxy to options overridden if necessary
|
||||
- `4bd1185` Allow "emergency" shutdown during startup
|
||||
- `d52f072` Don't show wallet options in the preferences menu when running with -disablewallet
|
||||
- `6093aa1` Qt: QProgressBar CPU-Issue workaround
|
||||
- `0ed9675` [Wallet] Add global boolean whether to send free transactions (default=true)
|
||||
- `ed3e5e4` [Wallet] Add global boolean whether to pay at least the custom fee (default=true)
|
||||
- `e7876b2` [Wallet] Prevent user from paying a non-sense fee
|
||||
- `c1c9d5b` Add Smartfee to GUI
|
||||
- `e0a25c5` Make askpassphrase dialog behave more sanely
|
||||
- `94b362d` On close of splashscreen interrupt verifyDB
|
||||
- `b790d13` English translation update
|
||||
- `8543b0d` Correct tooltip on address book page
|
||||
|
||||
Tests:
|
||||
- `b41e594` Fix script test handling of empty scripts
|
||||
- `d3a33fc` Test CHECKMULTISIG with m == 0 and n == 0
|
||||
- `29c1749` Let tx (in)valid tests use any SCRIPT_VERIFY flag
|
||||
- `6380180` Add rejection of non-null CHECKMULTISIG dummy values
|
||||
- `21bf3d2` Add tests for BoostAsioToCNetAddr
|
||||
- `b5ad5e7` Add Python test for -rpcbind and -rpcallowip
|
||||
- `9ec0306` Add CODESEPARATOR/FindAndDelete() tests
|
||||
- `75ebced` Added many rpc wallet tests
|
||||
- `0193fb8` Allow multiple regression tests to run at once
|
||||
- `92a6220` Hook up sanity checks
|
||||
- `3820e01` Extend and move all crypto tests to crypto_tests.cpp
|
||||
- `3f9a019` added list/get received by address/ account tests
|
||||
- `a90689f` Remove timing-based signature cache unit test
|
||||
- `236982c` Add skiplist unit tests
|
||||
- `f4b00be` Add CChain::GetLocator() unit test
|
||||
- `b45a6e8` Add test for getblocktemplate longpolling
|
||||
- `cdf305e` Set -discover=0 in regtest framework
|
||||
- `ed02282` additional test for OP_SIZE in script_valid.json
|
||||
- `0072d98` script tests: BOOLAND, BOOLOR decode to integer
|
||||
- `833ff16` script tests: values that overflow to 0 are true
|
||||
- `4cac5db` script tests: value with trailing 0x00 is true
|
||||
- `89101c6` script test: test case for 5-byte bools
|
||||
- `d2d9dc0` script tests: add tests for CHECKMULTISIG limits
|
||||
- `d789386` Add "it works" test for digibyte-tx
|
||||
- `df4d61e` Add digibyte-tx tests
|
||||
- `aa41ac2` Test IsPushOnly() with invalid push
|
||||
- `6022b5d` Make `script_{valid,invalid}.json` validation flags configurable
|
||||
- `8138cbe` Add automatic script test generation, and actual checksig tests
|
||||
- `ed27e53` Add coins_tests with a large randomized CCoinViewCache test
|
||||
- `9df9cf5` Make SCRIPT_VERIFY_STRICTENC compatible with BIP62
|
||||
- `dcb9846` Extend getchaintips RPC test
|
||||
- `554147a` Ensure MINIMALDATA invalid tests can only fail one way
|
||||
- `dfeec18` Test every numeric-accepting opcode for correct handling of the numeric minimal encoding rule
|
||||
- `2b62e17` Clearly separate PUSHDATA and numeric argument MINIMALDATA tests
|
||||
- `16d78bd` Add valid invert of invalid every numeric opcode tests
|
||||
- `f635269` tests: enable alertnotify test for Windows
|
||||
- `7a41614` tests: allow rpc-tests to get filenames for digibyted and digibyte-cli from the environment
|
||||
- `5122ea7` tests: fix forknotify.py on windows
|
||||
- `fa7f8cd` tests: remove old pull-tester scripts
|
||||
- `7667850` tests: replace the old (unused since Travis) tests with new rpc test scripts
|
||||
- `f4e0aef` Do signature-s negation inside the tests
|
||||
- `1837987` Optimize -regtest setgenerate block generation
|
||||
- `2db4c8a` Fix node ranges in the test framework
|
||||
- `a8b2ce5` regression test only setmocktime RPC call
|
||||
- `daf03e7` RPC tests: create initial chain with specific timestamps
|
||||
- `8656dbb` Port/fix txnmall.sh regression test
|
||||
- `ca81587` Test the exact order of CHECKMULTISIG sig/pubkey evaluation
|
||||
- `7357893` Prioritize and display -testsafemode status in UI
|
||||
- `f321d6b` Add key generation/verification to ECC sanity check
|
||||
- `132ea9b` miner_tests: Disable checkpoints so they don't fail the subsidy-change test
|
||||
- `bc6cb41` QA RPC tests: Add tests block block proposals
|
||||
- `f67a9ce` Use deterministically generated script tests
|
||||
- `11d7a7d` [RPC] add rpc-test for http keep-alive (persistent connections)
|
||||
- `34318d7` RPC-test based on invalidateblock for mempool coinbase spends
|
||||
- `76ec867` Use actually valid transactions for script tests
|
||||
- `c8589bf` Add actual signature tests
|
||||
- `e2677d7` Fix smartfees test for change to relay policy
|
||||
- `263b65e` tests: run sanity checks in tests too
|
||||
|
||||
Miscellaneous:
|
||||
- `122549f` Fix incorrect checkpoint data for testnet3
|
||||
- `5bd02cf` Log used config file to debug.log on startup
|
||||
- `68ba85f` Updated Debian example digibyte.conf with config from wiki + removed some cruft and updated comments
|
||||
- `e5ee8f0` Remove -beta suffix
|
||||
- `38405ac` Add comment regarding experimental-use service bits
|
||||
- `be873f6` Issue warning if collecting RandSeed data failed
|
||||
- `8ae973c` Allocate more space if necessary in RandSeedAddPerfMon
|
||||
- `675bcd5` Correct comment for 15-of-15 p2sh script size
|
||||
- `fda3fed` libsecp256k1 integration
|
||||
- `2e36866` Show nodeid instead of addresses in log (for anonymity) unless otherwise requested
|
||||
- `cd01a5e` Enable paranoid corruption checks in LevelDB >= 1.16
|
||||
- `9365937` Add comment about never updating nTimeOffset past 199 samples
|
||||
- `403c1bf` contrib: remove getwork-based pyminer (as getwork API call has been removed)
|
||||
- `0c3e101` contrib: Added systemd .service file in order to help distributions integrate digibyted
|
||||
- `0a0878d` doc: Add new DNSseed policy
|
||||
- `2887bff` Update coding style and add .clang-format
|
||||
- `5cbda4f` Changed LevelDB cursors to use scoped pointers to ensure destruction when going out of scope
|
||||
- `b4a72a7` contrib/linearize: split output files based on new-timestamp-year or max-file-size
|
||||
- `e982b57` Use explicit fflush() instead of setvbuf()
|
||||
- `234bfbf` contrib: Add init scripts and docs for Upstart and OpenRC
|
||||
- `01c2807` Add warning about the merkle-tree algorithm duplicate txid flaw
|
||||
- `d6712db` Also create pid file in non-daemon mode
|
||||
- `772ab0e` contrib: use batched JSON-RPC in linarize-hashes (optimization)
|
||||
- `7ab4358` Update bash-completion for v0.10
|
||||
- `6e6a36c` contrib: show pull # in prompt for github-merge script
|
||||
- `5b9f842` Upgrade leveldb to 1.18, make chainstate databases compatible between ARM and x86 (issue #2293)
|
||||
- `4e7c219` Catch UTXO set read errors and shutdown
|
||||
- `867c600` Catch LevelDB errors during flush
|
||||
- `06ca065` Fix CScriptID(const CScript& in) in empty script case
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- Adam Weiss
|
||||
- Aitor Pazos
|
||||
- Alexander Jeng
|
||||
- Alex Morcos
|
||||
- Alon Muroch
|
||||
- Andreas Schildbach
|
||||
- Andrew Poelstra
|
||||
- Andy Alness
|
||||
- Ashley Holman
|
||||
- Benedict Chan
|
||||
- Ben Holden-Crowther
|
||||
- Bryan Bishop
|
||||
- BtcDrak
|
||||
- Christian von Roques
|
||||
- Clinton Christian
|
||||
- Cory Fields
|
||||
- Cozz Lovan
|
||||
- daniel
|
||||
- Daniel Kraft
|
||||
- David Hill
|
||||
- Derek701
|
||||
- dexX7
|
||||
- dllud
|
||||
- Dominyk Tiller
|
||||
- Doug
|
||||
- elichai
|
||||
- elkingtowa
|
||||
- ENikS
|
||||
- Eric Shaw
|
||||
- Federico Bond
|
||||
- Francis GASCHET
|
||||
- Gavin Andresen
|
||||
- Giuseppe Mazzotta
|
||||
- Glenn Willen
|
||||
- Gregory Maxwell
|
||||
- gubatron
|
||||
- HarryWu
|
||||
- himynameismartin
|
||||
- Huang Le
|
||||
- Ian Carroll
|
||||
- imharrywu
|
||||
- Jameson Lopp
|
||||
- Janusz Lenar
|
||||
- JaSK
|
||||
- Jeff Garzik
|
||||
- JL2035
|
||||
- Johnathan Corgan
|
||||
- Jonas Schnelli
|
||||
- jtimon
|
||||
- Julian Haight
|
||||
- Kamil Domanski
|
||||
- kazcw
|
||||
- kevin
|
||||
- kiwigb
|
||||
- Kosta Zertsekel
|
||||
- LongShao007
|
||||
- Luke Dashjr
|
||||
- Mark Friedenbach
|
||||
- Mathy Vanvoorden
|
||||
- Matt Corallo
|
||||
- Matthew Bogosian
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Mike Hearn
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- ntrgn
|
||||
- Otto Allmendinger
|
||||
- paveljanik
|
||||
- Pavel Vasin
|
||||
- Peter Todd
|
||||
- phantomcircuit
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- pryds
|
||||
- randy-waterhouse
|
||||
- R E Broadley
|
||||
- Rose Toomey
|
||||
- Ross Nicoll
|
||||
- Roy Badami
|
||||
- Ruben Dario Ponticelli
|
||||
- Rune K. Svendsen
|
||||
- Ryan X. Charles
|
||||
- Saivann
|
||||
- sandakersmann
|
||||
- SergioDemianLerner
|
||||
- shshshsh
|
||||
- sinetek
|
||||
- Stuart Cardall
|
||||
- Suhas Daftuar
|
||||
- Tawanda Kembo
|
||||
- Teran McKinney
|
||||
- tm314159
|
||||
- Tom Harding
|
||||
- Trevin Hofmann
|
||||
- Whit J
|
||||
- Wladimir J. van der Laan
|
||||
- Yoichi Hirai
|
||||
- Zak Wilcox
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
143
doc/release-notes/release-notes-0.10.1.md
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
DigiByte Core version 0.10.1 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.10.1/>
|
||||
|
||||
This is a new minor version release, bringing bug fixes and translation
|
||||
updates. It is recommended to upgrade to this version.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
This is a minor release and hence there are no notable changes.
|
||||
For the notable changes in 0.10, refer to the release notes for the
|
||||
0.10.0 release at https://github.com/digibyte/digibyte/blob/v0.10.0/doc/release-notes.md
|
||||
|
||||
0.10.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
RPC:
|
||||
- `7f502be` fix crash: createmultisig and addmultisigaddress
|
||||
- `eae305f` Fix missing lock in submitblock
|
||||
|
||||
Block (database) and transaction handling:
|
||||
- `1d2cdd2` Fix InvalidateBlock to add chainActive.Tip to setBlockIndexCandidates
|
||||
- `c91c660` fix InvalidateBlock to repopulate setBlockIndexCandidates
|
||||
- `002c8a2` fix possible block db breakage during re-index
|
||||
- `a1f425b` Add (optional) consistency check for the block chain data structures
|
||||
- `1c62e84` Keep mempool consistent during block-reorgs
|
||||
- `57d1f46` Fix CheckBlockIndex for reindex
|
||||
- `bac6fca` Set nSequenceId when a block is fully linked
|
||||
|
||||
P2P protocol and network code:
|
||||
- `78f64ef` don't trickle for whitelisted nodes
|
||||
- `ca301bf` Reduce fingerprinting through timestamps in 'addr' messages.
|
||||
- `200f293` Ignore getaddr messages on Outbound connections.
|
||||
- `d5d8998` Limit message sizes before transfer
|
||||
- `aeb9279` Better fingerprinting protection for non-main-chain getdatas.
|
||||
- `cf0218f` Make addrman's bucket placement deterministic (countermeasure 1 against eclipse attacks, see http://cs-people.bu.edu/heilman/eclipse/)
|
||||
- `0c6f334` Always use a 50% chance to choose between tried and new entries (countermeasure 2 against eclipse attacks)
|
||||
- `214154e` Do not bias outgoing connections towards fresh addresses (countermeasure 2 against eclipse attacks)
|
||||
- `aa587d4` Scale up addrman (countermeasure 6 against eclipse attacks)
|
||||
- `139cd81` Cap nAttempts penalty at 8 and switch to pow instead of a division loop
|
||||
|
||||
Validation:
|
||||
- `d148f62` Acquire CCheckQueue's lock to avoid race condition
|
||||
|
||||
Build system:
|
||||
- `8752b5c` 0.10 fix for crashes on OSX 10.6
|
||||
|
||||
Wallet:
|
||||
- N/A
|
||||
|
||||
GUI:
|
||||
- `2c08406` some mac specifiy cleanup (memory handling, unnecessary code)
|
||||
- `81145a6` fix OSX dock icon window reopening
|
||||
- `786cf72` fix a issue where "command line options"-action overwrite "Preference"-action (on OSX)
|
||||
|
||||
Tests:
|
||||
- `1117378` add RPC test for InvalidateBlock
|
||||
|
||||
Miscellaneous:
|
||||
- `c9e022b` Initialization: set Boost path locale in main thread
|
||||
- `23126a0` Sanitize command strings before logging them.
|
||||
- `323de27` Initialization: setup environment before starting Qt tests
|
||||
- `7494e09` Initialization: setup environment before starting tests
|
||||
- `df45564` Initialization: set fallback locale as environment variable
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Cory Fields
|
||||
- dexX7
|
||||
- fsb4000
|
||||
- Gavin Andresen
|
||||
- Gregory Maxwell
|
||||
- Ivan Pustogarov
|
||||
- Jonas Schnelli
|
||||
- Matt Corallo
|
||||
- mrbandrews
|
||||
- Pieter Wuille
|
||||
- Ruben de Vries
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And all those who contributed additional code review and/or security research:
|
||||
- 21E14
|
||||
- Alison Kendler
|
||||
- Aviv Zohar
|
||||
- Ethan Heilman
|
||||
- Evil-Knievel
|
||||
- fanquake
|
||||
- Jeff Garzik
|
||||
- Jonas Nick
|
||||
- Luke Dashjr
|
||||
- Patrick Strateman
|
||||
- Philip Kaufmann
|
||||
- Sergio Demian Lerner
|
||||
- Sharon Goldberg
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
86
doc/release-notes/release-notes-0.10.2.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
DigiByte Core version 0.10.2 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.10.2/>
|
||||
|
||||
This is a new minor version release, bringing minor bug fixes and translation
|
||||
updates. It is recommended to upgrade to this version.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
This fixes a serious problem on Windows with data directories that have non-ASCII
|
||||
characters (https://github.com/digibyte/digibyte/issues/6078).
|
||||
|
||||
For other platforms there are no notable changes.
|
||||
|
||||
For the notable changes in 0.10, refer to the release notes
|
||||
at https://github.com/digibyte/digibyte/blob/v0.10.0/doc/release-notes.md
|
||||
|
||||
0.10.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
Wallet:
|
||||
- `824c011` fix boost::get usage with boost 1.58
|
||||
|
||||
Miscellaneous:
|
||||
- `da65606` Avoid crash on start in TestBlockValidity with gen=1.
|
||||
- `424ae66` don't imbue boost::filesystem::path with locale "C" on windows (fixes #6078)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Cory Fields
|
||||
- Gregory Maxwell
|
||||
- Jonas Schnelli
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And all those who contributed additional code review and/or security research:
|
||||
|
||||
- dexX7
|
||||
- Pieter Wuille
|
||||
- vayvanne
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
165
doc/release-notes/release-notes-0.10.3.md
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
DigiByte Core version 0.10.3 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.10.3/>
|
||||
|
||||
This is a new minor version release, bringing security fixes and translation
|
||||
updates. It is recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Fix buffer overflow in bundled upnp
|
||||
------------------------------------
|
||||
|
||||
Bundled miniupnpc was updated to 1.9.20151008. This fixes a buffer overflow in
|
||||
the XML parser during initial network discovery.
|
||||
|
||||
Details can be found here: http://talosintel.com/reports/TALOS-2015-0035/
|
||||
|
||||
This applies to the distributed executables only, not when building from source or
|
||||
using distribution provided packages.
|
||||
|
||||
Additionally, upnp has been disabled by default. This may result in a lower
|
||||
number of reachable nodes on IPv4, however this prevents future libupnpc
|
||||
vulnerabilities from being a structural risk to the network
|
||||
(see https://github.com/digibyte/digibyte/pull/6795).
|
||||
|
||||
Test for LowS signatures before relaying
|
||||
-----------------------------------------
|
||||
|
||||
Make the node require the canonical 'low-s' encoding for ECDSA signatures when
|
||||
relaying or mining. This removes a nuisance malleability vector.
|
||||
|
||||
Consensus behavior is unchanged.
|
||||
|
||||
If widely deployed this change would eliminate the last remaining known vector
|
||||
for nuisance malleability on SIGHASH_ALL P2PKH transactions. On the down-side
|
||||
it will block most transactions made by sufficiently out of date software.
|
||||
|
||||
Unlike the other avenues to change txids on transactions this
|
||||
one was randomly violated by all deployed digibyte software prior to
|
||||
its discovery. So, while other malleability vectors where made
|
||||
non-standard as soon as they were discovered, this one has remained
|
||||
permitted. Even BIP62 did not propose applying this rule to
|
||||
old version transactions, but conforming implementations have become
|
||||
much more common since BIP62 was initially written.
|
||||
|
||||
DigiByte Core has produced compatible signatures since a28fb70e in
|
||||
September 2013, but this didn't make it into a release until 0.9
|
||||
in March 2014; DigiBytej has done so for a similar span of time.
|
||||
DigiBytejs and electrum have been more recently updated.
|
||||
|
||||
This does not replace the need for BIP62 or similar, as miners can
|
||||
still cooperate to break transactions. Nor does it replace the
|
||||
need for wallet software to handle malleability sanely[1]. This
|
||||
only eliminates the cheap and irritating DOS attack.
|
||||
|
||||
[1] On the Malleability of DigiByte Transactions
|
||||
Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek
|
||||
http://fc15.ifca.ai/preproceedings/digibyte/paper_9.pdf
|
||||
|
||||
Minimum relay fee default increase
|
||||
-----------------------------------
|
||||
|
||||
The default for the `-minrelaytxfee` setting has been increased from `0.00001`
|
||||
to `0.00005`.
|
||||
|
||||
This is necessitated by the current transaction flooding, causing
|
||||
outrageous memory usage on nodes due to the mempool ballooning. This is a
|
||||
temporary measure, bridging the time until a dynamic method for determining
|
||||
this fee is merged (which will be in 0.12).
|
||||
|
||||
(see https://github.com/digibyte/digibyte/pull/6793, as well as the 0.11.0
|
||||
release notes, in which this value was suggested)
|
||||
|
||||
0.10.3 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect external
|
||||
behavior, not code moves, refactors or string updates.
|
||||
|
||||
- #6186 `e4a7d51` Fix two problems in CSubnet parsing
|
||||
- #6153 `ebd7d8d` Parameter interaction: disable upnp if -proxy set
|
||||
- #6203 `ecc96f5` Remove P2SH coinbase flag, no longer interesting
|
||||
- #6226 `181771b` json: fail read_string if string contains trailing garbage
|
||||
- #6244 `09334e0` configure: Detect (and reject) LibreSSL
|
||||
- #6276 `0fd8464` Fix getbalance * 0
|
||||
- #6274 `be64204` Add option `-alerts` to opt out of alert system
|
||||
- #6319 `3f55638` doc: update mailing list address
|
||||
- #6438 `7e66e9c` openssl: avoid config file load/race
|
||||
- #6439 `255eced` Updated URL location of netinstall for Debian
|
||||
- #6412 `0739e6e` Test whether created sockets are select()able
|
||||
- #6694 `f696ea1` [QT] fix thin space word wrap line brake issue
|
||||
- #6704 `743cc9e` Backport bugfixes to 0.10
|
||||
- #6769 `1cea6b0` Test LowS in standardness, removes nuisance malleability vector.
|
||||
- #6789 `093d7b5` Update miniupnpc to 1.9.20151008
|
||||
- #6795 `f2778e0` net: Disable upnp by default
|
||||
- #6797 `91ef4d9` Do not store more than 200 timedata samples
|
||||
- #6793 `842c48d` Bump minrelaytxfee default
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- Casey Rodarmor
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Maxwell
|
||||
- Jonas Schnelli
|
||||
- J Ross Nicoll
|
||||
- Luke Dashjr
|
||||
- Pavel Vasin
|
||||
- Pieter Wuille
|
||||
- randy-waterhouse
|
||||
- ฿tcDrak
|
||||
- Tom Harding
|
||||
- Veres Lajos
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And all those who contributed additional code review and/or security research:
|
||||
|
||||
- timothy on IRC for reporting the issue
|
||||
- Vulnerability in miniupnp discovered by Aleksandar Nikolic of Cisco Talos
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
172
doc/release-notes/release-notes-0.10.4.md
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
DigiByte Core version 0.10.4 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.10.4/>
|
||||
|
||||
This is a new minor version release, bringing bug fixes, the BIP65
|
||||
(CLTV) consensus change, and relay policy preparation for BIP113. It is
|
||||
recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Notable changes since 0.10.3
|
||||
============================
|
||||
|
||||
BIP65 soft fork to enforce OP_CHECKLOCKTIMEVERIFY opcode
|
||||
--------------------------------------------------------
|
||||
|
||||
This release includes several changes related to the [BIP65][] soft fork
|
||||
which redefines the existing OP_NOP2 opcode as OP_CHECKLOCKTIMEVERIFY
|
||||
(CLTV) so that a transaction output can be made unspendable until a
|
||||
specified point in the future.
|
||||
|
||||
1. This release will only relay and mine transactions spending a CLTV
|
||||
output if they comply with the BIP65 rules as provided in code.
|
||||
|
||||
2. This release will produce version 4 blocks by default. Please see the
|
||||
*notice to miners* below.
|
||||
|
||||
3. Once 951 out of a sequence of 1,001 blocks on the local node's best block
|
||||
chain contain version 4 (or higher) blocks, this release will no
|
||||
longer accept new version 3 blocks and it will only accept version 4
|
||||
blocks if they comply with the BIP65 rules for CLTV.
|
||||
|
||||
For more information about the soft-forking change, please see
|
||||
<https://github.com/digibyte/digibyte/pull/6351>
|
||||
|
||||
Graphs showing the progress towards block version 4 adoption may be
|
||||
found at the URLs below:
|
||||
|
||||
- Block versions over the last 50,000 blocks as progress towards BIP65
|
||||
consensus enforcement: <http://digibyte.sipa.be/ver-50k.png>
|
||||
|
||||
- Block versions over the last 2,000 blocks showing the days to the
|
||||
earliest possible BIP65 consensus-enforced block: <http://digibyte.sipa.be/ver-2k.png>
|
||||
|
||||
**Notice to miners:** DigiByte Core’s block templates are now for
|
||||
version 4 blocks only, and any mining software relying on its
|
||||
getblocktemplate must be updated in parallel to use libblkmaker either
|
||||
version FIXME or any version from FIXME onward.
|
||||
|
||||
- If you are solo mining, this will affect you the moment you upgrade
|
||||
DigiByte Core, which must be done prior to BIP65 achieving its 951/1001
|
||||
status.
|
||||
|
||||
- If you are mining with the stratum mining protocol: this does not
|
||||
affect you.
|
||||
|
||||
- If you are mining with the getblocktemplate protocol to a pool: this
|
||||
will affect you at the pool operator’s discretion, which must be no
|
||||
later than BIP65 achieving its 951/1001 status.
|
||||
|
||||
[BIP65]: https://github.com/digibyte/bips/blob/master/bip-0065.mediawiki
|
||||
|
||||
Windows bug fix for corrupted UTXO database on unclean shutdowns
|
||||
----------------------------------------------------------------
|
||||
|
||||
Several Windows users reported that they often need to reindex the
|
||||
entire blockchain after an unclean shutdown of DigiByte Core on Windows
|
||||
(or an unclean shutdown of Windows itself). Although unclean shutdowns
|
||||
remain unsafe, this release no longer relies on memory-mapped files for
|
||||
the UTXO database, which significantly reduced the frequency of unclean
|
||||
shutdowns leading to required reindexes during testing.
|
||||
|
||||
For more information, see: <https://github.com/digibyte/digibyte/pull/6917>
|
||||
|
||||
Other fixes for database corruption on Windows are expected in the
|
||||
next major release.
|
||||
|
||||
0.10.4 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
- #6953 `8b3311f` alias -h for --help
|
||||
- #6953 `97546fc` Change URLs to https in debian/control
|
||||
- #6953 `38671bf` Update debian/changelog and slight tweak to debian/control
|
||||
- #6953 `256321e` Correct spelling mistakes in doc folder
|
||||
- #6953 `eae0350` Clarification of unit test build instructions
|
||||
- #6953 `90897ab` Update bluematt-key, the old one is long-since revoked
|
||||
- #6953 `a2f2fb6` build: disable -Wself-assign
|
||||
- #6953 `cf67d8b` Bugfix: Allow mining on top of old tip blocks for testnet (fixes testnet-in-a-box use case)
|
||||
- #6953 `b3964e3` Drop "with minimal dependencies" from description
|
||||
- #6953 `43c2789` Split digibyte-tx into its own package
|
||||
- #6953 `dfe0d4d` Include digibyte-tx binary on Debian/Ubuntu
|
||||
- #6953 `612efe8` [Qt] Raise debug window when requested
|
||||
- #6953 `3ad96bd` Fix locking in GetTransaction
|
||||
- #6953 `9c81005` Fix spelling of Qt
|
||||
- #6946 `94b67e5` Update LevelDB
|
||||
- #6706 `5dc72f8` CLTV: Add more tests to improve coverage
|
||||
- #6706 `6a1343b` Add RPC tests for the CHECKLOCKTIMEVERIFY (BIP65) soft-fork
|
||||
- #6706 `4137248` Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
|
||||
- #6706 `0e01d0f` Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
|
||||
- #6706 `6d01325` Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
|
||||
- #6706 `750d54f` Move LOCKTIME_THRESHOLD to src/script/script.h
|
||||
- #6706 `6897468` Make CScriptNum() take nMaxNumSize as an argument
|
||||
- #6867 `5297194` Set TCP_NODELAY on P2P sockets
|
||||
- #6836 `fb818b6` Bring historical release notes up to date
|
||||
- #6852 `0b3fd07` build: make sure OpenSSL heeds noexecstack
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Daniel Cousens
|
||||
- Diego Viola
|
||||
- Eric Lombrozo
|
||||
- Esteban Ordano
|
||||
- Gregory Maxwell
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Mitchell Cash
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- Wladimir J. van der Laan
|
||||
- Zak Wilcox
|
||||
|
||||
And those who contributed additional code review and/or security research.
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
505
doc/release-notes/release-notes-0.11.0.md
Normal file
|
|
@ -0,0 +1,505 @@
|
|||
DigiByte Core version 0.11.0 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.11.0/>
|
||||
|
||||
This is a new major version release, bringing both new features and
|
||||
bug fixes.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Important information
|
||||
======================
|
||||
|
||||
Transaction flooding
|
||||
---------------------
|
||||
|
||||
At the time of this release, the P2P network is being flooded with low-fee
|
||||
transactions. This causes a ballooning of the mempool size.
|
||||
|
||||
If this growth of the mempool causes problematic memory use on your node, it is
|
||||
possible to change a few configuration options to work around this. The growth
|
||||
of the mempool can be monitored with the RPC command `getmempoolinfo`.
|
||||
|
||||
One is to increase the minimum transaction relay fee `minrelaytxfee`, which
|
||||
defaults to 0.00001. This will cause transactions with fewer DGB/kB fee to be
|
||||
rejected, and thus fewer transactions entering the mempool.
|
||||
|
||||
The other is to restrict the relaying of free transactions with
|
||||
`limitfreerelay`. This option sets the number of kB/minute at which
|
||||
free transactions (with enough priority) will be accepted. It defaults to 15.
|
||||
Reducing this number reduces the speed at which the mempool can grow due
|
||||
to free transactions.
|
||||
|
||||
For example, add the following to `digibyte.conf`:
|
||||
|
||||
minrelaytxfee=0.00005
|
||||
limitfreerelay=5
|
||||
|
||||
More robust solutions are being worked on for a follow-up release.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Block file pruning
|
||||
----------------------
|
||||
|
||||
This release supports running a fully validating node without maintaining a copy
|
||||
of the raw block and undo data on disk. To recap, there are four types of data
|
||||
related to the blockchain in the digibyte system: the raw blocks as received over
|
||||
the network (blk???.dat), the undo data (rev???.dat), the block index and the
|
||||
UTXO set (both LevelDB databases). The databases are built from the raw data.
|
||||
|
||||
Block pruning allows DigiByte Core to delete the raw block and undo data once
|
||||
it's been validated and used to build the databases. At that point, the raw data
|
||||
is used only to relay blocks to other nodes, to handle reorganizations, to look
|
||||
up old transactions (if -txindex is enabled or via the RPC/REST interfaces), or
|
||||
for rescanning the wallet. The block index continues to hold the metadata about
|
||||
all blocks in the blockchain.
|
||||
|
||||
The user specifies how much space to allot for block & undo files. The minimum
|
||||
allowed is 550MB. Note that this is in addition to whatever is required for the
|
||||
block index and UTXO databases. The minimum was chosen so that DigiByte Core will
|
||||
be able to maintain at least 288 blocks on disk (two days worth of blocks at 10
|
||||
minutes per block). In rare instances it is possible that the amount of space
|
||||
used will exceed the pruning target in order to keep the required last 288
|
||||
blocks on disk.
|
||||
|
||||
Block pruning works during initial sync in the same way as during steady state,
|
||||
by deleting block files "as you go" whenever disk space is allocated. Thus, if
|
||||
the user specifies 550MB, once that level is reached the program will begin
|
||||
deleting the oldest block and undo files, while continuing to download the
|
||||
blockchain.
|
||||
|
||||
For now, block pruning disables block relay. In the future, nodes with block
|
||||
pruning will at a minimum relay "new" blocks, meaning blocks that extend their
|
||||
active chain.
|
||||
|
||||
Block pruning is currently incompatible with running a wallet due to the fact
|
||||
that block data is used for rescanning the wallet and importing keys or
|
||||
addresses (which require a rescan.) However, running the wallet with block
|
||||
pruning will be supported in the near future, subject to those limitations.
|
||||
|
||||
Block pruning is also incompatible with -txindex and will automatically disable
|
||||
it.
|
||||
|
||||
Once you have pruned blocks, going back to unpruned state requires
|
||||
re-downloading the entire blockchain. To do this, re-start the node with
|
||||
-reindex. Note also that any problem that would cause a user to reindex (e.g.,
|
||||
disk corruption) will cause a pruned node to redownload the entire blockchain.
|
||||
Finally, note that when a pruned node reindexes, it will delete any blk???.dat
|
||||
and rev???.dat files in the data directory prior to restarting the download.
|
||||
|
||||
To enable block pruning on the command line:
|
||||
|
||||
- `-prune=N`: where N is the number of MB to allot for raw block & undo data.
|
||||
|
||||
Modified RPC calls:
|
||||
|
||||
- `getblockchaininfo` now includes whether we are in pruned mode or not.
|
||||
- `getblock` will check if the block's data has been pruned and if so, return an
|
||||
error.
|
||||
- `getrawtransaction` will no longer be able to locate a transaction that has a
|
||||
UTXO but where its block file has been pruned.
|
||||
|
||||
Pruning is disabled by default.
|
||||
|
||||
Big endian support
|
||||
--------------------
|
||||
|
||||
Experimental support for big-endian CPU architectures was added in this
|
||||
release. All little-endian specific code was replaced with endian-neutral
|
||||
constructs. This has been tested on at least MIPS and PPC hosts. The build
|
||||
system will automatically detect the endianness of the target.
|
||||
|
||||
Memory usage optimization
|
||||
--------------------------
|
||||
|
||||
There have been many changes in this release to reduce the default memory usage
|
||||
of a node, among which:
|
||||
|
||||
- Accurate UTXO cache size accounting (#6102); this makes the option `-dbcache`
|
||||
precise where this grossly underestimated memory usage before
|
||||
- Reduce size of per-peer data structure (#6064 and others); this increases the
|
||||
number of connections that can be supported with the same amount of memory
|
||||
- Reduce the number of threads (#5964, #5679); lowers the amount of (esp.
|
||||
virtual) memory needed
|
||||
|
||||
Fee estimation changes
|
||||
----------------------
|
||||
|
||||
This release improves the algorithm used for fee estimation. Previously, -1
|
||||
was returned when there was insufficient data to give an estimate. Now, -1
|
||||
will also be returned when there is no fee or priority high enough for the
|
||||
desired confirmation target. In those cases, it can help to ask for an estimate
|
||||
for a higher target number of blocks. It is not uncommon for there to be no
|
||||
fee or priority high enough to be reliably (85%) included in the next block and
|
||||
for this reason, the default for `-txconfirmtarget=n` has changed from 1 to 2.
|
||||
|
||||
Privacy: Disable wallet transaction broadcast
|
||||
----------------------------------------------
|
||||
|
||||
This release adds an option `-walletbroadcast=0` to prevent automatic
|
||||
transaction broadcast and rebroadcast (#5951). This option allows separating
|
||||
transaction submission from the node functionality.
|
||||
|
||||
Making use of this, third-party scripts can be written to take care of
|
||||
transaction (re)broadcast:
|
||||
|
||||
- Send the transaction as normal, either through RPC or the GUI
|
||||
- Retrieve the transaction data through RPC using `gettransaction` (NOT
|
||||
`getrawtransaction`). The `hex` field of the result will contain the raw
|
||||
hexadecimal representation of the transaction
|
||||
- The transaction can then be broadcasted through arbitrary mechanisms
|
||||
supported by the script
|
||||
|
||||
One such application is selective Tor usage, where the node runs on the normal
|
||||
internet but transactions are broadcasted over Tor.
|
||||
|
||||
For an example script see [digibyte-submittx](https://github.com/laanwj/digibyte-submittx).
|
||||
|
||||
Privacy: Stream isolation for Tor
|
||||
----------------------------------
|
||||
|
||||
This release adds functionality to create a new circuit for every peer
|
||||
connection, when the software is used with Tor. The new option,
|
||||
`-proxyrandomize`, is on by default.
|
||||
|
||||
When enabled, every outgoing connection will (potentially) go through a
|
||||
different exit node. That significantly reduces the chance to get unlucky and
|
||||
pick a single exit node that is either malicious, or widely banned from the P2P
|
||||
network. This improves connection reliability as well as privacy, especially
|
||||
for the initial connections.
|
||||
|
||||
**Important note:** If a non-Tor SOCKS5 proxy is configured that supports
|
||||
authentication, but doesn't require it, this change may cause that proxy to reject
|
||||
connections. A user and password is sent where they weren't before. This setup
|
||||
is exceedingly rare, but in this case `-proxyrandomize=0` can be passed to
|
||||
disable the behavior.
|
||||
|
||||
0.11.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and REST
|
||||
- #5461 `5f7279a` signrawtransaction: validate private key
|
||||
- #5444 `103f66b` Add /rest/headers/<count>/<hash>.<ext>
|
||||
- #4964 `95ecc0a` Add scriptPubKey field to validateaddress RPC call
|
||||
- #5476 `c986972` Add time offset into getpeerinfo output
|
||||
- #5540 `84eba47` Add unconfirmed and immature balances to getwalletinfo
|
||||
- #5599 `40e96a3` Get rid of the internal miner's hashmeter
|
||||
- #5711 `87ecfb0` Push down RPC locks
|
||||
- #5754 `1c4e3f9` fix getblocktemplate lock issue
|
||||
- #5756 `5d901d8` Fix getblocktemplate_proposals test by mining one block
|
||||
- #5548 `d48ce48` Add /rest/chaininfos
|
||||
- #5992 `4c4f1b4` Push down RPC reqWallet flag
|
||||
- #6036 `585b5db` Show zero value txouts in listunspent
|
||||
- #5199 `6364408` Add RPC call `gettxoutproof` to generate and verify merkle blocks
|
||||
- #5418 `16341cc` Report missing inputs in sendrawtransaction
|
||||
- #5937 `40f5e8d` show script verification errors in signrawtransaction result
|
||||
- #5420 `1fd2d39` getutxos REST command (based on Bip64)
|
||||
- #6193 `42746b0` [REST] remove json input for getutxos, limit to query max. 15 outpoints
|
||||
- #6226 `5901596` json: fail read_string if string contains trailing garbage
|
||||
|
||||
### Configuration and command-line options
|
||||
- #5636 `a353ad4` Add option `-allowselfsignedrootcertificate` to allow self signed root certs (for testing payment requests)
|
||||
- #5900 `3e8a1f2` Add a consistency check `-checkblockindex` for the block chain data structures
|
||||
- #5951 `7efc9cf` Make it possible to disable wallet transaction broadcast (using `-walletbroadcast=0`)
|
||||
- #5911 `b6ea3bc` privacy: Stream isolation for Tor (on by default, use `-proxyrandomize=0` to disable)
|
||||
- #5863 `c271304` Add autoprune functionality (`-prune=<size>`)
|
||||
- #6153 `0bcf04f` Parameter interaction: disable upnp if -proxy set
|
||||
- #6274 `4d9c7fe` Add option `-alerts` to opt out of alert system
|
||||
|
||||
### Block and transaction handling
|
||||
- #5367 `dcc1304` Do all block index writes in a batch
|
||||
- #5253 `203632d` Check against MANDATORY flags prior to accepting to mempool
|
||||
- #5459 `4406c3e` Reject headers that build on an invalid parent
|
||||
- #5481 `055f3ae` Apply AreSane() checks to the fees from the network
|
||||
- #5580 `40d65eb` Preemptively catch a few potential bugs
|
||||
- #5349 `f55c5e9` Implement test for merkle tree malleability in CPartialMerkleTree
|
||||
- #5564 `a89b837` clarify obscure uses of EvalScript()
|
||||
- #5521 `8e4578a` Reject non-final txs even in testnet/regtest
|
||||
- #5707 `6af674e` Change hardcoded character constants to descriptive named constants for db keys
|
||||
- #5286 `fcf646c` Change the default maximum OP_RETURN size to 80 bytes
|
||||
- #5710 `175d86e` Add more information to errors in ReadBlockFromDisk
|
||||
- #5948 `b36f1ce` Use GetAncestor to compute new target
|
||||
- #5959 `a0bfc69` Add additional block index consistency checks
|
||||
- #6058 `7e0e7f8` autoprune minor post-merge improvements
|
||||
- #5159 `2cc1372` New fee estimation code
|
||||
- #6102 `6fb90d8` Implement accurate UTXO cache size accounting
|
||||
- #6129 `2a82298` Bug fix for clearing fCheckForPruning
|
||||
- #5947 `e9af4e6` Alert if it is very likely we are getting a bad chain
|
||||
- #6203 `c00ae64` Remove P2SH coinbase flag, no longer interesting
|
||||
- #5985 `37b4e42` Fix removing of orphan transactions
|
||||
- #6221 `6cb70ca` Prune: Support noncontiguous block files
|
||||
- #6256 `fce474c` Use best header chain timestamps to detect partitioning
|
||||
- #6233 `a587606` Advance pindexLastCommonBlock for blocks in chainActive
|
||||
|
||||
### P2P protocol and network code
|
||||
- #5507 `844ace9` Prevent DOS attacks on in-flight data structures
|
||||
- #5770 `32a8b6a` Sanitize command strings before logging them
|
||||
- #5859 `dd4ffce` Add correct bool combiner for net signals
|
||||
- #5876 `8e4fd0c` Add a NODE_GETUTXO service bit and document NODE_NETWORK
|
||||
- #6028 `b9311fb` Move nLastTry from CAddress to CAddrInfo
|
||||
- #5662 `5048465` Change download logic to allow calling getdata on inbound peers
|
||||
- #5971 `18d2832` replace absolute sleep with conditional wait
|
||||
- #5918 `7bf5d5e` Use equivalent PoW for non-main-chain requests
|
||||
- #6059 `f026ab6` chainparams: use SeedSpec6's rather than CAddress's for fixed seeds
|
||||
- #6080 `31c0bf1` Add jonasschnellis dns seeder
|
||||
- #5976 `9f7809f` Reduce download timeouts as blocks arrive
|
||||
- #6172 `b4bbad1` Ignore getheaders requests when not synced
|
||||
- #5875 `304892f` Be stricter in processing unrequested blocks
|
||||
- #6333 `41bbc85` Hardcoded seeds update June 2015
|
||||
|
||||
### Validation
|
||||
- #5143 `48e1765` Implement BIP62 rule 6
|
||||
- #5713 `41e6e4c` Implement BIP66
|
||||
|
||||
### Build system
|
||||
- #5501 `c76c9d2` Add mips, mipsel and aarch64 to depends platforms
|
||||
- #5334 `cf87536` libdigibyteconsensus: Add pkg-config support
|
||||
- #5514 `ed11d53` Fix 'make distcheck'
|
||||
- #5505 `a99ef7d` Build winshutdownmonitor.cpp on Windows only
|
||||
- #5582 `e8a6639` Osx toolchain update
|
||||
- #5684 `ab64022` osx: bump build sdk to 10.9
|
||||
- #5695 `23ef5b7` depends: latest config.guess and config.sub
|
||||
- #5509 `31dedb4` Fixes when compiling in c++11 mode
|
||||
- #5819 `f8e68f7` release: use static libstdc++ and disable reduced exports by default
|
||||
- #5510 `7c3fbc3` Big endian support
|
||||
- #5149 `c7abfa5` Add script to verify all merge commits are signed
|
||||
- #6082 `7abbb7e` qt: disable qt tests when one of the checks for the gui fails
|
||||
- #6244 `0401aa2` configure: Detect (and reject) LibreSSL
|
||||
- #6269 `95aca44` gitian: Use the new digibyte-detached-sigs git repo for OSX signatures
|
||||
- #6285 `ef1d506` Fix scheduler build with some boost versions.
|
||||
- #6280 `25c2216` depends: fix Boost 1.55 build on GCC 5
|
||||
- #6303 `b711599` gitian: add a gitian-win-signer descriptor
|
||||
- #6246 `8ea6d37` Fix build on FreeBSD
|
||||
- #6282 `daf956b` fix crash on shutdown when e.g. changing -txindex and abort action
|
||||
- #6354 `bdf0d94` Gitian windows signing normalization
|
||||
|
||||
### Wallet
|
||||
- #2340 `811c71d` Discourage fee sniping with nLockTime
|
||||
- #5485 `d01bcc4` Enforce minRelayTxFee on wallet created tx and add a maxtxfee option
|
||||
- #5508 `9a5cabf` Add RandAddSeedPerfmon to MakeNewKey
|
||||
- #4805 `8204e19` Do not flush the wallet in AddToWalletIfInvolvingMe(..)
|
||||
- #5319 `93b7544` Clean up wallet encryption code
|
||||
- #5831 `df5c246` Subtract fee from amount
|
||||
- #6076 `6c97fd1` wallet: fix boost::get usage with boost 1.58
|
||||
- #5511 `23c998d` Sort pending wallet transactions before reaccepting
|
||||
- #6126 `26e08a1` Change default nTxConfirmTarget to 2
|
||||
- #6183 `75a4d51` Fix off-by-one error w/ nLockTime in the wallet
|
||||
- #6276 `c9fd907` Fix getbalance * 0
|
||||
|
||||
### GUI
|
||||
- #5219 `f3af0c8` New icons
|
||||
- #5228 `bb3c75b` HiDPI (retina) support for splash screen
|
||||
- #5258 `73cbf0a` The RPC Console should be a QWidget to make window more independent
|
||||
- #5488 `851dfc7` Light blue icon color for regtest
|
||||
- #5547 `a39aa74` New icon for the debug window
|
||||
- #5493 `e515309` Adopt style colour for button icons
|
||||
- #5557 `70477a0` On close of splashscreen interrupt verifyDB
|
||||
- #5559 `83be8fd` Make the command-line-args dialog better
|
||||
- #5144 `c5380a9` Elaborate on signverify message dialog warning
|
||||
- #5489 `d1aa3c6` Optimize PNG files
|
||||
- #5649 `e0cd2f5` Use text-color icons for system tray Send/Receive menu entries
|
||||
- #5651 `848f55d` Coin Control: Use U+2248 "ALMOST EQUAL TO" rather than a simple tilde
|
||||
- #5626 `ab0d798` Fix icon sizes and column width
|
||||
- #5683 `c7b22aa` add new osx dmg background picture
|
||||
- #5620 `7823598` Payment request expiration bug fix
|
||||
- #5729 `9c4a5a5` Allow unit changes for read-only DigiByteAmountField
|
||||
- #5753 `0f44672` Add digibyte logo to about screen
|
||||
- #5629 `a956586` Prevent amount overflow problem with payment requests
|
||||
- #5830 `215475a` Don't save geometry for options and about/help window
|
||||
- #5793 `d26f0b2` Honor current network when creating autostart link
|
||||
- #5847 `f238add` Startup script for centos, with documentation
|
||||
- #5915 `5bd3a92` Fix a static qt5 crash when using certain versions of libxcb
|
||||
- #5898 `bb56781` Fix rpc console font size to flexible metrics
|
||||
- #5467 `bc8535b` Payment request / server work - part 2
|
||||
- #6161 `180c164` Remove movable option for toolbar
|
||||
- #6160 `0d862c2` Overviewpage: make sure warning icons gets colored
|
||||
|
||||
### Tests
|
||||
- #5453 `2f2d337` Add ability to run single test manually to RPC tests
|
||||
- #5421 `886eb57` Test unexecuted OP_CODESEPARATOR
|
||||
- #5530 `565b300` Additional rpc tests
|
||||
- #5611 `37b185c` Fix spurious windows test failures after 012598880c
|
||||
- #5613 `2eda47b` Fix smartfees test for change to relay policy
|
||||
- #5612 `e3f5727` Fix zapwallettxes test
|
||||
- #5642 `30a5b5f` Prepare paymentservertests for new unit tests
|
||||
- #5784 `e3a3cd7` Fix usage of NegateSignatureS in script_tests
|
||||
- #5813 `ee9f2bf` Add unit tests for next difficulty calculations
|
||||
- #5855 `d7989c0` Travis: run unit tests in different orders
|
||||
- #5852 `cdae53e` Reinitialize state in between individual unit tests.
|
||||
- #5883 `164d7b6` tests: add a BasicTestingSetup and apply to all tests
|
||||
- #5940 `446bb70` Regression test for ResendWalletTransactions
|
||||
- #6052 `cf7adad` fix and enable bip32 unit test
|
||||
- #6039 `734f80a` tests: Error when setgenerate is used on regtest
|
||||
- #6074 `948beaf` Correct the PUSHDATA4 minimal encoding test in script_invalid.json
|
||||
- #6032 `e08886d` Stop nodes after RPC tests, even with --nocleanup
|
||||
- #6075 `df1609f` Add additional script edge condition tests
|
||||
- #5981 `da38dc6` Python P2P testing
|
||||
- #5958 `9ef00c3` Add multisig rpc tests
|
||||
- #6112 `fec5c0e` Add more script edge condition tests
|
||||
|
||||
### Miscellaneous
|
||||
- #5457, #5506, #5952, #6047 Update libsecp256k1
|
||||
- #5437 `84857e8` Add missing CAutoFile::IsNull() check in main
|
||||
- #5490 `ec20fd7` Replace uint256/uint160 with opaque blobs where possible
|
||||
- #5654, #5764 Adding jonasschnelli's GPG key
|
||||
- #5477 `5f04d1d` OS X 10.10: LSSharedFileListItemResolve() is deprecated
|
||||
- #5679 `beff11a` Get rid of DetectShutdownThread
|
||||
- #5787 `9bd8c9b` Add fanquake PGP key
|
||||
- #5366 `47a79bb` No longer check osx compatibility in RenameThread
|
||||
- #5689 `07f4386` openssl: abstract out OPENSSL_cleanse
|
||||
- #5708 `8b298ca` Add list of implemented BIPs
|
||||
- #5809 `46bfbe7` Add digibyte-cli man page
|
||||
- #5839 `86eb461` keys: remove libsecp256k1 verification until it's actually supported
|
||||
- #5749 `d734d87` Help messages correctly formatted (79 chars)
|
||||
- #5884 `7077fe6` BUGFIX: Stack around the variable 'rv' was corrupted
|
||||
- #5849 `41259ca` contrib/init/digibyted.openrc: Compatibility with previous OpenRC init script variables
|
||||
- #5950 `41113e3` Fix locale fallback and guard tests against invalid locale settings
|
||||
- #5965 `7c6bfb1` Add git-subtree-check.sh script
|
||||
- #6033 `1623f6e` FreeBSD, OpenBSD thread renaming
|
||||
- #6064 `b46e7c2` Several changes to mruset
|
||||
- #6104 `3e2559c` Show an init message while activating best chain
|
||||
- #6125 `351f73e` Clean up parsing of bool command line args
|
||||
- #5964 `b4c219b` Lightweight task scheduler
|
||||
- #6116 `30dc3c1` [OSX] rename DigiByte-Qt.app to DigiByte-Core.app
|
||||
- #6168 `b3024f0` contrib/linearize: Support linearization of testnet blocks
|
||||
- #6098 `7708fcd` Update Windows resource files (and add one for digibyte-tx)
|
||||
- #6159 `e1412d3` Catch errors on datadir lock and pidfile delete
|
||||
- #6186 `182686c` Fix two problems in CSubnet parsing
|
||||
- #6174 `df992b9` doc: add translation strings policy
|
||||
- #6210 `dfdb6dd` build: disable optional use of gmp in internal secp256k1 build
|
||||
- #6264 `94cd705` Remove translation for -help-debug options
|
||||
- #6286 `3902c15` Remove berkeley-db4 workaround in MacOSX build docs
|
||||
- #6319 `3f8fcc9` doc: update mailing list address
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- ayeowch
|
||||
- azeteki
|
||||
- Ben Holden-Crowther
|
||||
- bikinibabe
|
||||
- DigiBytePRReadingGroup
|
||||
- Blake Jakopovic
|
||||
- BtcDrak
|
||||
- charlescharles
|
||||
- Chris Arnesen
|
||||
- Ciemon
|
||||
- CohibAA
|
||||
- Corinne Dashjr
|
||||
- Cory Fields
|
||||
- Cozz Lovan
|
||||
- Daira Hopwood
|
||||
- Daniel Kraft
|
||||
- Dave Collins
|
||||
- David A. Harding
|
||||
- dexX7
|
||||
- Earlz
|
||||
- Eric Lombrozo
|
||||
- Eric R. Schulz
|
||||
- Everett Forth
|
||||
- Flavien Charlon
|
||||
- fsb4000
|
||||
- Gavin Andresen
|
||||
- Gregory Maxwell
|
||||
- Heath
|
||||
- Ivan Pustogarov
|
||||
- Jacob Welsh
|
||||
- Jameson Lopp
|
||||
- Jason Lewicki
|
||||
- Jeff Garzik
|
||||
- Jonas Schnelli
|
||||
- Jonathan Brown
|
||||
- Jorge Timón
|
||||
- joshr
|
||||
- jtimon
|
||||
- Julian Yap
|
||||
- Luca Venturini
|
||||
- Luke Dashjr
|
||||
- Manuel Araoz
|
||||
- MarcoFalke
|
||||
- Matt Bogosian
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Mike Hearn
|
||||
- mrbandrews
|
||||
- Nicolas Benoit
|
||||
- paveljanik
|
||||
- Pavel Janík
|
||||
- Pavel Vasin
|
||||
- Peter Todd
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- pstratem
|
||||
- randy-waterhouse
|
||||
- rion
|
||||
- Rob Van Mieghem
|
||||
- Ross Nicoll
|
||||
- Ruben de Vries
|
||||
- sandakersmann
|
||||
- Shaul Kfir
|
||||
- Shawn Wilkinson
|
||||
- sinetek
|
||||
- Suhas Daftuar
|
||||
- svost
|
||||
- Thomas Zander
|
||||
- Tom Harding
|
||||
- UdjinM6
|
||||
- Vitalii Demianets
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And all those who contributed additional code review and/or security research:
|
||||
|
||||
- Sergio Demian Lerner
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
172
doc/release-notes/release-notes-0.11.1.md
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
DigiByte Core version 0.11.1 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.11.1/>
|
||||
|
||||
This is a new minor version release, bringing security fixes. It is recommended
|
||||
to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Fix buffer overflow in bundled upnp
|
||||
------------------------------------
|
||||
|
||||
Bundled miniupnpc was updated to 1.9.20151008. This fixes a buffer overflow in
|
||||
the XML parser during initial network discovery.
|
||||
|
||||
Details can be found here: http://talosintel.com/reports/TALOS-2015-0035/
|
||||
|
||||
This applies to the distributed executables only, not when building from source or
|
||||
using distribution provided packages.
|
||||
|
||||
Additionally, upnp has been disabled by default. This may result in a lower
|
||||
number of reachable nodes on IPv4, however this prevents future libupnpc
|
||||
vulnerabilities from being a structural risk to the network
|
||||
(see https://github.com/digibyte/digibyte/pull/6795).
|
||||
|
||||
Test for LowS signatures before relaying
|
||||
-----------------------------------------
|
||||
|
||||
Make the node require the canonical 'low-s' encoding for ECDSA signatures when
|
||||
relaying or mining. This removes a nuisance malleability vector.
|
||||
|
||||
Consensus behavior is unchanged.
|
||||
|
||||
If widely deployed this change would eliminate the last remaining known vector
|
||||
for nuisance malleability on SIGHASH_ALL P2PKH transactions. On the down-side
|
||||
it will block most transactions made by sufficiently out of date software.
|
||||
|
||||
Unlike the other avenues to change txids on transactions this
|
||||
one was randomly violated by all deployed digibyte software prior to
|
||||
its discovery. So, while other malleability vectors where made
|
||||
non-standard as soon as they were discovered, this one has remained
|
||||
permitted. Even BIP62 did not propose applying this rule to
|
||||
old version transactions, but conforming implementations have become
|
||||
much more common since BIP62 was initially written.
|
||||
|
||||
DigiByte Core has produced compatible signatures since a28fb70e in
|
||||
September 2013, but this didn't make it into a release until 0.9
|
||||
in March 2014; DigiBytej has done so for a similar span of time.
|
||||
DigiBytejs and electrum have been more recently updated.
|
||||
|
||||
This does not replace the need for BIP62 or similar, as miners can
|
||||
still cooperate to break transactions. Nor does it replace the
|
||||
need for wallet software to handle malleability sanely[1]. This
|
||||
only eliminates the cheap and irritating DOS attack.
|
||||
|
||||
[1] On the Malleability of DigiByte Transactions
|
||||
Marcin Andrychowicz, Stefan Dziembowski, Daniel Malinowski, Łukasz Mazurek
|
||||
http://fc15.ifca.ai/preproceedings/digibyte/paper_9.pdf
|
||||
|
||||
Minimum relay fee default increase
|
||||
-----------------------------------
|
||||
|
||||
The default for the `-minrelaytxfee` setting has been increased from `0.00001`
|
||||
to `0.00005`.
|
||||
|
||||
This is necessitated by the current transaction flooding, causing
|
||||
outrageous memory usage on nodes due to the mempool ballooning. This is a
|
||||
temporary measure, bridging the time until a dynamic method for determining
|
||||
this fee is merged (which will be in 0.12).
|
||||
|
||||
(see https://github.com/digibyte/digibyte/pull/6793, as well as the 0.11
|
||||
release notes, in which this value was suggested)
|
||||
|
||||
0.11.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
- #6438 `2531438` openssl: avoid config file load/race
|
||||
- #6439 `980f820` Updated URL location of netinstall for Debian
|
||||
- #6384 `8e5a969` qt: Force TLS1.0+ for SSL connections
|
||||
- #6471 `92401c2` Depends: bump to qt 5.5
|
||||
- #6224 `93b606a` Be even stricter in processing unrequested blocks
|
||||
- #6571 `100ac4e` libdigibyteconsensus: avoid a crash in multi-threaded environments
|
||||
- #6545 `649f5d9` Do not store more than 200 timedata samples.
|
||||
- #6694 `834e299` [QT] fix thin space word wrap line break issue
|
||||
- #6703 `1cd7952` Backport bugfixes to 0.11
|
||||
- #6750 `5ed8d0b` Recent rejects backport to v0.11
|
||||
- #6769 `71cc9d9` Test LowS in standardness, removes nuisance malleability vector.
|
||||
- #6789 `b4ad73f` Update miniupnpc to 1.9.20151008
|
||||
- #6785 `b4dc33e` Backport to v0.11: In (strCommand == "tx"), return if AlreadyHave()
|
||||
- #6412 `0095b9a` Test whether created sockets are select()able
|
||||
- #6795 `4dbcec0` net: Disable upnp by default
|
||||
- #6793 `e7bcc4a` Bump minrelaytxfee default
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- Casey Rodarmor
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Maxwell
|
||||
- Jonas Schnelli
|
||||
- J Ross Nicoll
|
||||
- Luke Dashjr
|
||||
- Pavel Janík
|
||||
- Pavel Vasin
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- randy-waterhouse
|
||||
- Ross Nicoll
|
||||
- Suhas Daftuar
|
||||
- tailsjoin
|
||||
- ฿tcDrak
|
||||
- Tom Harding
|
||||
- Veres Lajos
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And those who contributed additional code review and/or security research:
|
||||
|
||||
- timothy on IRC for reporting the issue
|
||||
- Vulnerability in miniupnp discovered by Aleksandar Nikolic of Cisco Talos
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
217
doc/release-notes/release-notes-0.11.2.md
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
DigiByte Core version 0.11.2 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.11.2/>
|
||||
|
||||
This is a new minor version release, bringing bug fixes, the BIP65
|
||||
(CLTV) consensus change, and relay policy preparation for BIP113. It is
|
||||
recommended to upgrade to this version as soon as possible.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
------------------
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility. There are no
|
||||
known problems when downgrading from 0.11.x to 0.10.x.
|
||||
|
||||
Notable changes since 0.11.1
|
||||
============================
|
||||
|
||||
BIP65 soft fork to enforce OP_CHECKLOCKTIMEVERIFY opcode
|
||||
--------------------------------------------------------
|
||||
|
||||
This release includes several changes related to the [BIP65][] soft fork
|
||||
which redefines the existing OP_NOP2 opcode as OP_CHECKLOCKTIMEVERIFY
|
||||
(CLTV) so that a transaction output can be made unspendable until a
|
||||
specified point in the future.
|
||||
|
||||
1. This release will only relay and mine transactions spending a CLTV
|
||||
output if they comply with the BIP65 rules as provided in code.
|
||||
|
||||
2. This release will produce version 4 blocks by default. Please see the
|
||||
*notice to miners* below.
|
||||
|
||||
3. Once 951 out of a sequence of 1,001 blocks on the local node's best block
|
||||
chain contain version 4 (or higher) blocks, this release will no
|
||||
longer accept new version 3 blocks and it will only accept version 4
|
||||
blocks if they comply with the BIP65 rules for CLTV.
|
||||
|
||||
For more information about the soft-forking change, please see
|
||||
<https://github.com/digibyte/digibyte/pull/6351>
|
||||
|
||||
Graphs showing the progress towards block version 4 adoption may be
|
||||
found at the URLs below:
|
||||
|
||||
- Block versions over the last 50,000 blocks as progress towards BIP65
|
||||
consensus enforcement: <http://digibyte.sipa.be/ver-50k.png>
|
||||
|
||||
- Block versions over the last 2,000 blocks showing the days to the
|
||||
earliest possible BIP65 consensus-enforced block: <http://digibyte.sipa.be/ver-2k.png>
|
||||
|
||||
**Notice to miners:** DigiByte Core’s block templates are now for
|
||||
version 4 blocks only, and any mining software relying on its
|
||||
getblocktemplate must be updated in parallel to use libblkmaker either
|
||||
version 0.4.3 or any version from 0.5.2 onward.
|
||||
|
||||
- If you are solo mining, this will affect you the moment you upgrade
|
||||
DigiByte Core, which must be done prior to BIP65 achieving its 951/1001
|
||||
status.
|
||||
|
||||
- If you are mining with the stratum mining protocol: this does not
|
||||
affect you.
|
||||
|
||||
- If you are mining with the getblocktemplate protocol to a pool: this
|
||||
will affect you at the pool operator’s discretion, which must be no
|
||||
later than BIP65 achieving its 951/1001 status.
|
||||
|
||||
[BIP65]: https://github.com/digibyte/bips/blob/master/bip-0065.mediawiki
|
||||
|
||||
BIP113 mempool-only locktime enforcement using GetMedianTimePast()
|
||||
----------------------------------------------------------------
|
||||
|
||||
DigiByte transactions currently may specify a locktime indicating when
|
||||
they may be added to a valid block. Current consensus rules require
|
||||
that blocks have a block header time greater than the locktime specified
|
||||
in any transaction in that block.
|
||||
|
||||
Miners get to choose what time they use for their header time, with the
|
||||
consensus rule being that no node will accept a block whose time is more
|
||||
than two hours in the future. This creates a incentive for miners to
|
||||
set their header times to future values in order to include locktimed
|
||||
transactions which weren't supposed to be included for up to two more
|
||||
hours.
|
||||
|
||||
The consensus rules also specify that valid blocks may have a header
|
||||
time greater than that of the median of the 11 previous blocks. This
|
||||
GetMedianTimePast() time has a key feature we generally associate with
|
||||
time: it can't go backwards.
|
||||
|
||||
[BIP113][] specifies a soft fork (**not enforced in this release**) that
|
||||
weakens this perverse incentive for individual miners to use a future
|
||||
time by requiring that valid blocks have a computed GetMedianTimePast()
|
||||
greater than the locktime specified in any transaction in that block.
|
||||
|
||||
Mempool inclusion rules currently require transactions to be valid for
|
||||
immediate inclusion in a block in order to be accepted into the mempool.
|
||||
This release begins applying the BIP113 rule to received transactions,
|
||||
so transaction whose time is greater than the GetMedianTimePast() will
|
||||
no longer be accepted into the mempool.
|
||||
|
||||
**Implication for miners:** you will begin rejecting transactions that
|
||||
would not be valid under BIP113, which will prevent you from producing
|
||||
invalid blocks if/when BIP113 is enforced on the network. Any
|
||||
transactions which are valid under the current rules but not yet valid
|
||||
under the BIP113 rules will either be mined by other miners or delayed
|
||||
until they are valid under BIP113. Note, however, that time-based
|
||||
locktime transactions are more or less unseen on the network currently.
|
||||
|
||||
**Implication for users:** GetMedianTimePast() always trails behind the
|
||||
current time, so a transaction locktime set to the present time will be
|
||||
rejected by nodes running this release until the median time moves
|
||||
forward. To compensate, subtract one hour (3,600 seconds) from your
|
||||
locktimes to allow those transactions to be included in mempools at
|
||||
approximately the expected time.
|
||||
|
||||
[BIP113]: https://github.com/digibyte/bips/blob/master/bip-0113.mediawiki
|
||||
|
||||
Windows bug fix for corrupted UTXO database on unclean shutdowns
|
||||
----------------------------------------------------------------
|
||||
|
||||
Several Windows users reported that they often need to reindex the
|
||||
entire blockchain after an unclean shutdown of DigiByte Core on Windows
|
||||
(or an unclean shutdown of Windows itself). Although unclean shutdowns
|
||||
remain unsafe, this release no longer relies on memory-mapped files for
|
||||
the UTXO database, which significantly reduced the frequency of unclean
|
||||
shutdowns leading to required reindexes during testing.
|
||||
|
||||
For more information, see: <https://github.com/digibyte/digibyte/pull/6917>
|
||||
|
||||
Other fixes for database corruption on Windows are expected in the
|
||||
next major release.
|
||||
|
||||
0.11.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
- #6124 `684636b` Make CScriptNum() take nMaxNumSize as an argument
|
||||
- #6124 `4fa7a04` Replace NOP2 with CHECKLOCKTIMEVERIFY (BIP65)
|
||||
- #6124 `6ea5ca4` Enable CHECKLOCKTIMEVERIFY as a standard script verify flag
|
||||
- #6351 `5e82e1c` Add CHECKLOCKTIMEVERIFY (BIP65) soft-fork logic
|
||||
- #6353 `ba1da90` Show softfork status in getblockchaininfo
|
||||
- #6351 `6af25b0` Add BIP65 to getblockchaininfo softforks list
|
||||
- #6688 `01878c9` Fix locking in GetTransaction
|
||||
- #6653 `b3eaa30` [Qt] Raise debug window when requested
|
||||
- #6600 `1e672ae` Debian/Ubuntu: Include digibyte-tx binary
|
||||
- #6600 `2394f4d` Debian/Ubuntu: Split digibyte-tx into its own package
|
||||
- #5987 `33d6825` Bugfix: Allow mining on top of old tip blocks for testnet
|
||||
- #6852 `21e58b8` build: make sure OpenSSL heeds noexecstack
|
||||
- #6846 `af6edac` alias `-h` for `--help`
|
||||
- #6867 `95a5039` Set TCP_NODELAY on P2P sockets.
|
||||
- #6856 `dfe55bd` Do not allow blockfile pruning during reindex.
|
||||
- #6566 `a1d3c6f` Add rules--presently disabled--for using GetMedianTimePast as end point for lock-time calculations
|
||||
- #6566 `f720c5f` Enable policy enforcing GetMedianTimePast as the end point of lock-time constraints
|
||||
- #6917 `0af5b8e` leveldb: Win32WritableFile without memory mapping
|
||||
- #6948 `4e895b0` Always flush block and undo when switching to new file
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- ฿tcDrak
|
||||
- Chris Kleeschulte
|
||||
- Daniel Cousens
|
||||
- Diego Viola
|
||||
- Eric Lombrozo
|
||||
- Esteban Ordano
|
||||
- Gregory Maxwell
|
||||
- Luke Dashjr
|
||||
- Marco Falke
|
||||
- Mark Friedenbach
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Mitchell Cash
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- Wladimir J. van der Laan
|
||||
- Zak Wilcox
|
||||
|
||||
And those who contributed additional code review and/or security research.
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
894
doc/release-notes/release-notes-0.12.0.md
Normal file
|
|
@ -0,0 +1,894 @@
|
|||
DigiByte Core version 0.12.0 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.12.0/>
|
||||
|
||||
This is a new major version release, bringing new features and other improvements.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
-----------------
|
||||
|
||||
### Downgrade to a version < 0.10.0
|
||||
|
||||
Because release 0.10.0 and later makes use of headers-first synchronization and
|
||||
parallel block download (see further), the block files and databases are not
|
||||
backwards-compatible with pre-0.10 versions of DigiByte Core or other software:
|
||||
|
||||
* Blocks will be stored on disk out of order (in the order they are
|
||||
received, really), which makes it incompatible with some tools or
|
||||
other programs. Reindexing using earlier versions will also not work
|
||||
anymore as a result of this.
|
||||
|
||||
* The block index database will now hold headers for which no block is
|
||||
stored on disk, which earlier versions won't support.
|
||||
|
||||
If you want to be able to downgrade smoothly, make a backup of your entire data
|
||||
directory. Without this your node will need start syncing (or importing from
|
||||
bootstrap.dat) anew afterwards. It is possible that the data from a completely
|
||||
synchronised 0.10 node may be usable in older versions as-is, but this is not
|
||||
supported and may break as soon as the older version attempts to reindex.
|
||||
|
||||
This does not affect wallet forward or backward compatibility.
|
||||
|
||||
### Downgrade to a version < 0.12.0
|
||||
|
||||
Because release 0.12.0 and later will obfuscate the chainstate on every
|
||||
fresh sync or reindex, the chainstate is not backwards-compatible with
|
||||
pre-0.12 versions of DigiByte Core or other software.
|
||||
|
||||
If you want to downgrade after you have done a reindex with 0.12.0 or later,
|
||||
you will need to reindex when you first start DigiByte Core version 0.11 or
|
||||
earlier.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Signature validation using libsecp256k1
|
||||
---------------------------------------
|
||||
|
||||
ECDSA signatures inside DigiByte transactions now use validation using
|
||||
[libsecp256k1](https://github.com/digibyte-core/secp256k1) instead of OpenSSL.
|
||||
|
||||
Depending on the platform, this means a significant speedup for raw signature
|
||||
validation speed. The advantage is largest on x86_64, where validation is over
|
||||
five times faster. In practice, this translates to a raw reindexing and new
|
||||
block validation times that are less than half of what it was before.
|
||||
|
||||
Libsecp256k1 has undergone very extensive testing and validation.
|
||||
|
||||
A side effect of this change is that libconsensus no longer depends on OpenSSL.
|
||||
|
||||
Reduce upload traffic
|
||||
---------------------
|
||||
|
||||
A major part of the outbound traffic is caused by serving historic blocks to
|
||||
other nodes in initial block download state.
|
||||
|
||||
It is now possible to reduce the total upload traffic via the `-maxuploadtarget`
|
||||
parameter. This is *not* a hard limit but a threshold to minimize the outbound
|
||||
traffic. When the limit is about to be reached, the uploaded data is cut by not
|
||||
serving historic blocks (blocks older than one week).
|
||||
Moreover, any SPV peer is disconnected when they request a filtered block.
|
||||
|
||||
This option can be specified in MiB per day and is turned off by default
|
||||
(`-maxuploadtarget=0`).
|
||||
The recommended minimum is 144 * MAX_BLOCK_SIZE (currently 144MB) per day.
|
||||
|
||||
Whitelisted peers will never be disconnected, although their traffic counts for
|
||||
calculating the target.
|
||||
|
||||
A more detailed documentation about keeping traffic low can be found in
|
||||
[/doc/reduce-traffic.md](/doc/reduce-traffic.md).
|
||||
|
||||
Direct headers announcement (BIP 130)
|
||||
-------------------------------------
|
||||
|
||||
Between compatible peers, [BIP 130]
|
||||
(https://github.com/digibyte/bips/blob/master/bip-0130.mediawiki)
|
||||
direct headers announcement is used. This means that blocks are advertised by
|
||||
announcing their headers directly, instead of just announcing the hash. In a
|
||||
reorganization, all new headers are sent, instead of just the new tip. This
|
||||
can often prevent an extra roundtrip before the actual block is downloaded.
|
||||
|
||||
Memory pool limiting
|
||||
--------------------
|
||||
|
||||
Previous versions of DigiByte Core had their mempool limited by checking
|
||||
a transaction's fees against the node's minimum relay fee. There was no
|
||||
upper bound on the size of the mempool and attackers could send a large
|
||||
number of transactions paying just slighly more than the default minimum
|
||||
relay fee to crash nodes with relatively low RAM. A temporary workaround
|
||||
for previous versions of DigiByte Core was to raise the default minimum
|
||||
relay fee.
|
||||
|
||||
DigiByte Core 0.12 will have a strict maximum size on the mempool. The
|
||||
default value is 300 MB and can be configured with the `-maxmempool`
|
||||
parameter. Whenever a transaction would cause the mempool to exceed
|
||||
its maximum size, the transaction that (along with in-mempool descendants) has
|
||||
the lowest total feerate (as a package) will be evicted and the node's effective
|
||||
minimum relay feerate will be increased to match this feerate plus the initial
|
||||
minimum relay feerate. The initial minimum relay feerate is set to
|
||||
1000 satoshis per kB.
|
||||
|
||||
DigiByte Core 0.12 also introduces new default policy limits on the length and
|
||||
size of unconfirmed transaction chains that are allowed in the mempool
|
||||
(generally limiting the length of unconfirmed chains to 25 transactions, with a
|
||||
total size of 101 KB). These limits can be overridden using command line
|
||||
arguments; see the extended help (`--help -help-debug`) for more information.
|
||||
|
||||
Opt-in Replace-by-fee transactions
|
||||
----------------------------------
|
||||
|
||||
It is now possible to replace transactions in the transaction memory pool of
|
||||
DigiByte Core 0.12 nodes. DigiByte Core will only allow replacement of
|
||||
transactions which have any of their inputs' `nSequence` number set to less
|
||||
than `0xffffffff - 1`. Moreover, a replacement transaction may only be
|
||||
accepted when it pays sufficient fee, as described in [BIP 125]
|
||||
(https://github.com/digibyte/bips/blob/master/bip-0125.mediawiki).
|
||||
|
||||
Transaction replacement can be disabled with a new command line option,
|
||||
`-mempoolreplacement=0`. Transactions signaling replacement under BIP125 will
|
||||
still be allowed into the mempool in this configuration, but replacements will
|
||||
be rejected. This option is intended for miners who want to continue the
|
||||
transaction selection behavior of previous releases.
|
||||
|
||||
The `-mempoolreplacement` option is *not recommended* for wallet users seeking
|
||||
to avoid receipt of unconfirmed opt-in transactions, because this option does
|
||||
not prevent transactions which are replaceable under BIP 125 from being accepted
|
||||
(only subsequent replacements, which other nodes on the network that implement
|
||||
BIP 125 are likely to relay and mine). Wallet users wishing to detect whether
|
||||
a transaction is subject to replacement under BIP 125 should instead use the
|
||||
updated RPC calls `gettransaction` and `listtransactions`, which now have an
|
||||
additional field in the output indicating if a transaction is replaceable under
|
||||
BIP125 ("bip125-replaceable").
|
||||
|
||||
Note that the wallet in DigiByte Core 0.12 does not yet have support for
|
||||
creating transactions that would be replaceable under BIP 125.
|
||||
|
||||
|
||||
RPC: Random-cookie RPC authentication
|
||||
-------------------------------------
|
||||
|
||||
When no `-rpcpassword` is specified, the daemon now uses a special 'cookie'
|
||||
file for authentication. This file is generated with random content when the
|
||||
daemon starts, and deleted when it exits. Its contents are used as
|
||||
authentication token. Read access to this file controls who can access through
|
||||
RPC. By default it is stored in the data directory but its location can be
|
||||
overridden with the option `-rpccookiefile`.
|
||||
|
||||
This is similar to Tor's CookieAuthentication: see
|
||||
https://www.torproject.org/docs/tor-manual.html.en
|
||||
|
||||
This allows running digibyted without having to do any manual configuration.
|
||||
|
||||
Relay: Any sequence of pushdatas in OP_RETURN outputs now allowed
|
||||
-----------------------------------------------------------------
|
||||
|
||||
Previously OP_RETURN outputs with a payload were only relayed and mined if they
|
||||
had a single pushdata. This restriction has been lifted to allow any
|
||||
combination of data pushes and numeric constant opcodes (OP_1 to OP_16) after
|
||||
the OP_RETURN. The limit on OP_RETURN output size is now applied to the entire
|
||||
serialized scriptPubKey, 83 bytes by default. (the previous 80 byte default plus
|
||||
three bytes overhead)
|
||||
|
||||
Relay: New and only new blocks relayed when pruning
|
||||
---------------------------------------------------
|
||||
|
||||
When running in pruned mode, the client will now relay new blocks. When
|
||||
responding to the `getblocks` message, only hashes of blocks that are on disk
|
||||
and are likely to remain there for some reasonable time window (1 hour) will be
|
||||
returned (previously all relevant hashes were returned).
|
||||
|
||||
Relay and Mining: Priority transactions
|
||||
---------------------------------------
|
||||
|
||||
DigiByte Core has a heuristic 'priority' based on coin value and age. This
|
||||
calculation is used for relaying of transactions which do not pay the
|
||||
minimum relay fee, and can be used as an alternative way of sorting
|
||||
transactions for mined blocks. DigiByte Core will relay transactions with
|
||||
insufficient fees depending on the setting of `-limitfreerelay=<r>` (default:
|
||||
`r=15` kB per minute) and `-blockprioritysize=<s>`.
|
||||
|
||||
In DigiByte Core 0.12, when mempool limit has been reached a higher minimum
|
||||
relay fee takes effect to limit memory usage. Transactions which do not meet
|
||||
this higher effective minimum relay fee will not be relayed or mined even if
|
||||
they rank highly according to the priority heuristic.
|
||||
|
||||
The mining of transactions based on their priority is also now disabled by
|
||||
default. To re-enable it, simply set `-blockprioritysize=<n>` where is the size
|
||||
in bytes of your blocks to reserve for these transactions. The old default was
|
||||
50k, so to retain approximately the same policy, you would set
|
||||
`-blockprioritysize=50000`.
|
||||
|
||||
Additionally, as a result of computational simplifications, the priority value
|
||||
used for transactions received with unconfirmed inputs is lower than in prior
|
||||
versions due to avoiding recomputing the amounts as input transactions confirm.
|
||||
|
||||
External miner policy set via the `prioritisetransaction` RPC to rank
|
||||
transactions already in the mempool continues to work as it has previously.
|
||||
Note, however, that if mining priority transactions is left disabled, the
|
||||
priority delta will be ignored and only the fee metric will be effective.
|
||||
|
||||
This internal automatic prioritization handling is being considered for removal
|
||||
entirely in DigiByte Core 0.13, and it is at this time undecided whether the
|
||||
more accurate priority calculation for chained unconfirmed transactions will be
|
||||
restored. Community direction on this topic is particularly requested to help
|
||||
set project priorities.
|
||||
|
||||
Automatically use Tor hidden services
|
||||
-------------------------------------
|
||||
|
||||
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
|
||||
API, to create and destroy 'ephemeral' hidden services programmatically.
|
||||
DigiByte Core has been updated to make use of this.
|
||||
|
||||
This means that if Tor is running (and proper authorization is available),
|
||||
DigiByte Core automatically creates a hidden service to listen on, without
|
||||
manual configuration. DigiByte Core will also use Tor automatically to connect
|
||||
to other .onion nodes if the control socket can be successfully opened. This
|
||||
will positively affect the number of available .onion nodes and their usage.
|
||||
|
||||
This new feature is enabled by default if DigiByte Core is listening, and
|
||||
a connection to Tor can be made. It can be configured with the `-listenonion`,
|
||||
`-torcontrol` and `-torpassword` settings. To show verbose debugging
|
||||
information, pass `-debug=tor`.
|
||||
|
||||
Notifications through ZMQ
|
||||
-------------------------
|
||||
|
||||
DigiByted can now (optionally) asynchronously notify clients through a
|
||||
ZMQ-based PUB socket of the arrival of new transactions and blocks.
|
||||
This feature requires installation of the ZMQ C API library 4.x and
|
||||
configuring its use through the command line or configuration file.
|
||||
Please see [docs/zmq.md](/doc/zmq.md) for details of operation.
|
||||
|
||||
Wallet: Transaction fees
|
||||
------------------------
|
||||
|
||||
Various improvements have been made to how the wallet calculates
|
||||
transaction fees.
|
||||
|
||||
Users can decide to pay a predefined fee rate by setting `-paytxfee=<n>`
|
||||
(or `settxfee <n>` rpc during runtime). A value of `n=0` signals DigiByte
|
||||
Core to use floating fees. By default, DigiByte Core will use floating
|
||||
fees.
|
||||
|
||||
Based on past transaction data, floating fees approximate the fees
|
||||
required to get into the `m`th block from now. This is configurable
|
||||
with `-txconfirmtarget=<m>` (default: `2`).
|
||||
|
||||
Sometimes, it is not possible to give good estimates, or an estimate
|
||||
at all. Therefore, a fallback value can be set with `-fallbackfee=<f>`
|
||||
(default: `0.0002` DGB/kB).
|
||||
|
||||
At all times, DigiByte Core will cap fees at `-maxtxfee=<x>` (default:
|
||||
0.10) DGB.
|
||||
Furthermore, DigiByte Core will never create transactions paying less than
|
||||
the current minimum relay fee.
|
||||
Finally, a user can set the minimum fee rate for all transactions with
|
||||
`-mintxfee=<i>`, which defaults to 1000 satoshis per kB.
|
||||
|
||||
Wallet: Negative confirmations and conflict detection
|
||||
-----------------------------------------------------
|
||||
|
||||
The wallet will now report a negative number for confirmations that indicates
|
||||
how deep in the block chain the conflict is found. For example, if a transaction
|
||||
A has 5 confirmations and spends the same input as a wallet transaction B, B
|
||||
will be reported as having -5 confirmations. If another wallet transaction C
|
||||
spends an output from B, it will also be reported as having -5 confirmations.
|
||||
To detect conflicts with historical transactions in the chain a one-time
|
||||
`-rescan` may be needed.
|
||||
|
||||
Unlike earlier versions, unconfirmed but non-conflicting transactions will never
|
||||
get a negative confirmation count. They are not treated as spendable unless
|
||||
they're coming from ourself (change) and accepted into our local mempool,
|
||||
however. The new "trusted" field in the `listtransactions` RPC output
|
||||
indicates whether outputs of an unconfirmed transaction are considered
|
||||
spendable.
|
||||
|
||||
Wallet: Merkle branches removed
|
||||
-------------------------------
|
||||
|
||||
Previously, every wallet transaction stored a Merkle branch to prove its
|
||||
presence in blocks. This wasn't being used for more than an expensive
|
||||
sanity check. Since 0.12, these are no longer stored. When loading a
|
||||
0.12 wallet into an older version, it will automatically rescan to avoid
|
||||
failed checks.
|
||||
|
||||
Wallet: Pruning
|
||||
---------------
|
||||
|
||||
With 0.12 it is possible to use wallet functionality in pruned mode.
|
||||
This can reduce the disk usage from currently around 60 GB to
|
||||
around 2 GB.
|
||||
|
||||
However, rescans as well as the RPCs `importwallet`, `importaddress`,
|
||||
`importprivkey` are disabled.
|
||||
|
||||
To enable block pruning set `prune=<N>` on the command line or in
|
||||
`digibyte.conf`, where `N` is the number of MiB to allot for
|
||||
raw block & undo data.
|
||||
|
||||
A value of 0 disables pruning. The minimal value above 0 is 550. Your
|
||||
wallet is as secure with high values as it is with low ones. Higher
|
||||
values merely ensure that your node will not shut down upon blockchain
|
||||
reorganizations of more than 2 days - which are unlikely to happen in
|
||||
practice. In future releases, a higher value may also help the network
|
||||
as a whole: stored blocks could be served to other nodes.
|
||||
|
||||
For further information about pruning, you may also consult the [release
|
||||
notes of v0.11.0](https://github.com/digibyte/digibyte/blob/v0.11.0/doc/release-notes.md#block-file-pruning).
|
||||
|
||||
`NODE_BLOOM` service bit
|
||||
------------------------
|
||||
|
||||
Support for the `NODE_BLOOM` service bit, as described in [BIP
|
||||
111](https://github.com/digibyte/bips/blob/master/bip-0111.mediawiki), has been
|
||||
added to the P2P protocol code.
|
||||
|
||||
BIP 111 defines a service bit to allow peers to advertise that they support
|
||||
bloom filters (such as used by SPV clients) explicitly. It also bumps the protocol
|
||||
version to allow peers to identify old nodes which allow bloom filtering of the
|
||||
connection despite lacking the new service bit.
|
||||
|
||||
In this version, it is only enforced for peers that send protocol versions
|
||||
`>=70011`. For the next major version it is planned that this restriction will be
|
||||
removed. It is recommended to update SPV clients to check for the `NODE_BLOOM`
|
||||
service bit for nodes that report versions newer than 70011.
|
||||
|
||||
Option parsing behavior
|
||||
-----------------------
|
||||
|
||||
Command line options are now parsed strictly in the order in which they are
|
||||
specified. It used to be the case that `-X -noX` ends up, unintuitively, with X
|
||||
set, as `-X` had precedence over `-noX`. This is no longer the case. Like for
|
||||
other software, the last specified value for an option will hold.
|
||||
|
||||
RPC: Low-level API changes
|
||||
--------------------------
|
||||
|
||||
- Monetary amounts can be provided as strings. This means that for example the
|
||||
argument to sendtoaddress can be "0.0001" instead of 0.0001. This can be an
|
||||
advantage if a JSON library insists on using a lossy floating point type for
|
||||
numbers, which would be dangerous for monetary amounts.
|
||||
|
||||
* The `asm` property of each scriptSig now contains the decoded signature hash
|
||||
type for each signature that provides a valid defined hash type.
|
||||
|
||||
* OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP 65](https://github.com/digibyte/bips/blob/master/bip-0065.mediawiki)
|
||||
|
||||
The following items contain assembly representations of scriptSig signatures
|
||||
and are affected by this change:
|
||||
|
||||
- RPC `getrawtransaction`
|
||||
- RPC `decoderawtransaction`
|
||||
- RPC `decodescript`
|
||||
- REST `/rest/tx/` (JSON format)
|
||||
- REST `/rest/block/` (JSON format when including extended tx details)
|
||||
- `digibyte-tx -json`
|
||||
|
||||
For example, the `scriptSig.asm` property of a transaction input that
|
||||
previously showed an assembly representation of:
|
||||
|
||||
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001 400000 OP_NOP2
|
||||
|
||||
now shows as:
|
||||
|
||||
304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090[ALL] 400000 OP_CHECKLOCKTIMEVERIFY
|
||||
|
||||
Note that the output of the RPC `decodescript` did not change because it is
|
||||
configured specifically to process scriptPubKey and not scriptSig scripts.
|
||||
|
||||
RPC: SSL support dropped
|
||||
------------------------
|
||||
|
||||
SSL support for RPC, previously enabled by the option `rpcssl` has been dropped
|
||||
from both the client and the server. This was done in preparation for removing
|
||||
the dependency on OpenSSL for the daemon completely.
|
||||
|
||||
Trying to use `rpcssl` will result in an error:
|
||||
|
||||
Error: SSL mode for RPC (-rpcssl) is no longer supported.
|
||||
|
||||
If you are one of the few people that relies on this feature, a flexible
|
||||
migration path is to use `stunnel`. This is an utility that can tunnel
|
||||
arbitrary TCP connections inside SSL. On e.g. Ubuntu it can be installed with:
|
||||
|
||||
sudo apt-get install stunnel4
|
||||
|
||||
Then, to tunnel a SSL connection on 28332 to a RPC server bound on localhost on port 18332 do:
|
||||
|
||||
stunnel -d 28332 -r 127.0.0.1:18332 -p stunnel.pem -P ''
|
||||
|
||||
It can also be set up system-wide in inetd style.
|
||||
|
||||
Another way to re-attain SSL would be to setup a httpd reverse proxy. This solution
|
||||
would allow the use of different authentication, loadbalancing, on-the-fly compression and
|
||||
caching. A sample config for apache2 could look like:
|
||||
|
||||
Listen 443
|
||||
|
||||
NameVirtualHost *:443
|
||||
<VirtualHost *:443>
|
||||
|
||||
SSLEngine On
|
||||
SSLCertificateFile /etc/apache2/ssl/server.crt
|
||||
SSLCertificateKeyFile /etc/apache2/ssl/server.key
|
||||
|
||||
<Location /digibyterpc>
|
||||
ProxyPass http://127.0.0.1:8332/
|
||||
ProxyPassReverse http://127.0.0.1:8332/
|
||||
# optional enable digest auth
|
||||
# AuthType Digest
|
||||
# ...
|
||||
|
||||
# optional bypass digibyted rpc basic auth
|
||||
# RequestHeader set Authorization "Basic <hash>"
|
||||
# get the <hash> from the shell with: base64 <<< digibyterpc:<password>
|
||||
</Location>
|
||||
|
||||
# Or, balance the load:
|
||||
# ProxyPass / balancer://balancer_cluster_name
|
||||
|
||||
</VirtualHost>
|
||||
|
||||
Mining Code Changes
|
||||
-------------------
|
||||
|
||||
The mining code in 0.12 has been optimized to be significantly faster and use less
|
||||
memory. As part of these changes, consensus critical calculations are cached on a
|
||||
transaction's acceptance into the mempool and the mining code now relies on the
|
||||
consistency of the mempool to assemble blocks. However all blocks are still tested
|
||||
for validity after assembly.
|
||||
|
||||
Other P2P Changes
|
||||
-----------------
|
||||
|
||||
The list of banned peers is now stored on disk rather than in memory.
|
||||
Restarting digibyted will no longer clear out the list of banned peers; instead
|
||||
a new RPC call (`clearbanned`) can be used to manually clear the list. The new
|
||||
`setban` RPC call can also be used to manually ban or unban a peer.
|
||||
|
||||
0.12.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and REST
|
||||
|
||||
- #6121 `466f0ea` Convert entire source tree from json_spirit to UniValue (Jonas Schnelli)
|
||||
- #6234 `d38cd47` fix rpcmining/getblocktemplate univalue transition logic error (Jonas Schnelli)
|
||||
- #6239 `643114f` Don't go through double in AmountFromValue and ValueFromAmount (Wladimir J. van der Laan)
|
||||
- #6266 `ebab5d3` Fix univalue handling of \u0000 characters. (Daniel Kraft)
|
||||
- #6276 `f3d4dbb` Fix getbalance * 0 (Tom Harding)
|
||||
- #6257 `5ebe7db` Add `paytxfee` and `errors` JSON fields where appropriate (Stephen)
|
||||
- #6271 `754aae5` New RPC command disconnectnode (Alex van der Peet)
|
||||
- #6158 `0abfa8a` Add setban/listbanned RPC commands (Jonas Schnelli)
|
||||
- #6307 `7ecdcd9` rpcban fixes (Jonas Schnelli)
|
||||
- #6290 `5753988` rpc: make `gettxoutsettinfo` run lock-free (Wladimir J. van der Laan)
|
||||
- #6262 `247b914` Return all available information via RPC call "validateaddress" (dexX7)
|
||||
- #6339 `c3f0490` UniValue: don't escape solidus, keep espacing of reverse solidus (Jonas Schnelli)
|
||||
- #6353 `6bcb0a2` Show softfork status in getblockchaininfo (Wladimir J. van der Laan)
|
||||
- #6247 `726e286` Add getblockheader RPC call (Peter Todd)
|
||||
- #6362 `d6db115` Fix null id in RPC response during startup (Forrest Voight)
|
||||
- #5486 `943b322` [REST] JSON support for /rest/headers (Jonas Schnelli)
|
||||
- #6379 `c52e8b3` rpc: Accept scientific notation for monetary amounts in JSON (Wladimir J. van der Laan)
|
||||
- #6388 `fd5dfda` rpc: Implement random-cookie based authentication (Wladimir J. van der Laan)
|
||||
- #6457 `3c923e8` Include pruned state in chaininfo.json (Simon Males)
|
||||
- #6456 `bfd807f` rpc: Avoid unnecessary parsing roundtrip in number formatting, fix locale issue (Wladimir J. van der Laan)
|
||||
- #6380 `240b30e` rpc: Accept strings in AmountFromValue (Wladimir J. van der Laan)
|
||||
- #6346 `6bb2805` Add OP_RETURN support in createrawtransaction RPC call, add tests. (paveljanik)
|
||||
- #6013 `6feeec1` [REST] Add memory pool API (paveljanik)
|
||||
- #6576 `da9beb2` Stop parsing JSON after first finished construct. (Daniel Kraft)
|
||||
- #5677 `9aa9099` libevent-based http server (Wladimir J. van der Laan)
|
||||
- #6633 `bbc2b39` Report minimum ping time in getpeerinfo (Matt Corallo)
|
||||
- #6648 `cd381d7` Simplify logic of REST request suffix parsing. (Daniel Kraft)
|
||||
- #6695 `5e21388` libevent http fixes (Wladimir J. van der Laan)
|
||||
- #5264 `48efbdb` show scriptSig signature hash types in transaction decodes. fixes #3166 (mruddy)
|
||||
- #6719 `1a9f19a` Make HTTP server shutdown more graceful (Wladimir J. van der Laan)
|
||||
- #6859 `0fbfc51` http: Restrict maximum size of http + headers (Wladimir J. van der Laan)
|
||||
- #5936 `bf7c195` [RPC] Add optional locktime to createrawtransaction (Tom Harding)
|
||||
- #6877 `26f5b34` rpc: Add maxmempool and effective min fee to getmempoolinfo (Wladimir J. van der Laan)
|
||||
- #6970 `92701b3` Fix crash in validateaddress with -disablewallet (Wladimir J. van der Laan)
|
||||
- #5574 `755b4ba` Expose GUI labels in RPC as comments (Luke-Jr)
|
||||
- #6990 `dbd2c13` http: speed up shutdown (Wladimir J. van der Laan)
|
||||
- #7013 `36baa9f` Remove LOCK(cs_main) from decodescript (Peter Todd)
|
||||
- #6999 `972bf9c` add (max)uploadtarget infos to getnettotals RPC help (Jonas Schnelli)
|
||||
- #7011 `31de241` Add mediantime to getblockchaininfo (Peter Todd)
|
||||
- #7065 `f91e29f` http: add Boost 1.49 compatibility (Wladimir J. van der Laan)
|
||||
- #7087 `be281d8` [Net]Add -enforcenodebloom option (Patrick Strateman)
|
||||
- #7044 `438ee59` RPC: Added additional config option for multiple RPC users. (Gregory Sanders)
|
||||
- #7072 `c143c49` [RPC] Add transaction size to JSON output (Nikita Zhavoronkov)
|
||||
- #7022 `9afbd96` Change default block priority size to 0 (Alex Morcos)
|
||||
- #7141 `c0c08c7` rpc: Don't translate warning messages (Wladimir J. van der Laan)
|
||||
- #7312 `fd4bd50` Add RPC call abandontransaction (Alex Morcos)
|
||||
- #7222 `e25b158` RPC: indicate which transactions are replaceable (Suhas Daftuar)
|
||||
- #7472 `b2f2b85` rpc: Add WWW-Authenticate header to 401 response (Wladimir J. van der Laan)
|
||||
- #7469 `9cb31e6` net.h fix spelling: misbeha{b,v}ing (Matt)
|
||||
|
||||
### Configuration and command-line options
|
||||
|
||||
- #6164 `8d05ec7` Allow user to use -debug=1 to enable all debugging (lpescher)
|
||||
- #5288 `4452205` Added `-whiteconnections=<n>` option (Josh Lehan)
|
||||
- #6284 `10ac38e` Fix argument parsing oddity with -noX (Wladimir J. van der Laan)
|
||||
- #6489 `c9c017a` Give a better error message if system clock is bad (Casey Rodarmor)
|
||||
- #6462 `c384800` implement uacomment config parameter which can add comments to user agent as per BIP-0014 (Pavol Rusnak)
|
||||
- #6647 `a3babc8` Sanitize uacomment (MarcoFalke)
|
||||
- #6742 `3b2d37c` Changed logging to make -logtimestamps to work also for -printtoconsole (arnuschky)
|
||||
- #6846 `2cd020d` alias -h for -help (Daniel Cousens)
|
||||
- #6622 `7939164` Introduce -maxuploadtarget (Jonas Schnelli)
|
||||
- #6881 `2b62551` Debug: Add option for microsecond precision in debug.log (Suhas Daftuar)
|
||||
- #6776 `e06c14f` Support -checkmempool=N, which runs checks once every N transactions (Pieter Wuille)
|
||||
- #6896 `d482c0a` Make -checkmempool=1 not fail through int32 overflow (Pieter Wuille)
|
||||
- #6993 `b632145` Add -blocksonly option (Patrick Strateman)
|
||||
- #7323 `a344880` 0.12: Backport -bytespersigop option (Luke-Jr)
|
||||
- #7386 `da83ecd` Add option `-permitrbf` to set transaction replacement policy (Wladimir J. van der Laan)
|
||||
- #7290 `b16b5bc` Add missing options help (MarcoFalke)
|
||||
- #7440 `c76bfff` Rename permitrbf to mempoolreplacement and provide minimal string-list forward compatibility (Luke-Jr)
|
||||
|
||||
### Block and transaction handling
|
||||
|
||||
- #6203 `f00b623` Remove P2SH coinbase flag, no longer interesting (Luke-Jr)
|
||||
- #6222 `9c93ee5` Explicitly set tx.nVersion for the genesis block and mining tests (Mark Friedenbach)
|
||||
- #5985 `3a1d3e8` Fix removing of orphan transactions (Alex Morcos)
|
||||
- #6221 `dd8fe82` Prune: Support noncontiguous block files (Adam Weiss)
|
||||
- #6124 `41076aa` Mempool only CHECKLOCKTIMEVERIFY (BIP65) verification, unparameterized version (Peter Todd)
|
||||
- #6329 `d0a10c1` acceptnonstdtxn option to skip (most) "non-standard transaction" checks, for testnet/regtest only (Luke-Jr)
|
||||
- #6410 `7cdefb9` Implement accurate memory accounting for mempool (Pieter Wuille)
|
||||
- #6444 `24ce77d` Exempt unspendable transaction outputs from dust checks (dexX7)
|
||||
- #5913 `a0625b8` Add absurdly high fee message to validation state (Shaul Kfir)
|
||||
- #6177 `2f746c6` Prevent block.nTime from decreasing (Mark Friedenbach)
|
||||
- #6377 `e545371` Handle no chain tip available in InvalidChainFound() (Ross Nicoll)
|
||||
- #6551 `39ddaeb` Handle leveldb::DestroyDB() errors on wipe failure (Adam Weiss)
|
||||
- #6654 `b0ce450` Mempool package tracking (Suhas Daftuar)
|
||||
- #6715 `82d2aef` Fix mempool packages (Suhas Daftuar)
|
||||
- #6680 `4f44530` use CBlockIndex instead of uint256 for UpdatedBlockTip signal (Jonas Schnelli)
|
||||
- #6650 `4fac576` Obfuscate chainstate (James O'Beirne)
|
||||
- #6777 `9caaf6e` Unobfuscate chainstate data in CCoinsViewDB::GetStats (James O'Beirne)
|
||||
- #6722 `3b20e23` Limit mempool by throwing away the cheapest txn and setting min relay fee to it (Matt Corallo)
|
||||
- #6889 `38369dd` fix locking issue with new mempool limiting (Jonas Schnelli)
|
||||
- #6464 `8f3b3cd` Always clean up manual transaction prioritization (Casey Rodarmor)
|
||||
- #6865 `d0badb9` Fix chainstate serialized_size computation (Pieter Wuille)
|
||||
- #6566 `ff057f4` BIP-113: Mempool-only median time-past as endpoint for lock-time calculations (Mark Friedenbach)
|
||||
- #6934 `3038eb6` Restores mempool only BIP113 enforcement (Gregory Maxwell)
|
||||
- #6965 `de7d459` Benchmark sanity checks and fork checks in ConnectBlock (Matt Corallo)
|
||||
- #6918 `eb6172a` Make sigcache faster, more efficient, larger (Pieter Wuille)
|
||||
- #6771 `38ed190` Policy: Lower default limits for tx chains (Alex Morcos)
|
||||
- #6932 `73fa5e6` ModifyNewCoins saves database lookups (Alex Morcos)
|
||||
- #5967 `05d5918` Alter assumptions in CCoinsViewCache::BatchWrite (Alex Morcos)
|
||||
- #6871 `0e93586` nSequence-based Full-RBF opt-in (Peter Todd)
|
||||
- #7008 `eb77416` Lower bound priority (Alex Morcos)
|
||||
- #6915 `2ef5ffa` [Mempool] Improve removal of invalid transactions after reorgs (Suhas Daftuar)
|
||||
- #6898 `4077ad2` Rewrite CreateNewBlock (Alex Morcos)
|
||||
- #6872 `bdda4d5` Remove UTXO cache entries when the tx they were added for is removed/does not enter mempool (Matt Corallo)
|
||||
- #7062 `12c469b` [Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction (Suhas Daftuar)
|
||||
- #7276 `76de36f` Report non-mandatory script failures correctly (Pieter Wuille)
|
||||
- #7217 `e08b7cb` Mark blocks with too many sigops as failed (Suhas Daftuar)
|
||||
- #7387 `f4b2ce8` Get rid of inaccurate ScriptSigArgsExpected (Pieter Wuille)
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
- #6172 `88a7ead` Ignore getheaders requests when not synced (Suhas Daftuar)
|
||||
- #5875 `9d60602` Be stricter in processing unrequested blocks (Suhas Daftuar)
|
||||
- #6256 `8ccc07c` Use best header chain timestamps to detect partitioning (Gavin Andresen)
|
||||
- #6283 `a903ad7` make CAddrMan::size() return the correct type of size_t (Diapolo)
|
||||
- #6272 `40400d5` Improve proxy initialization (continues #4871) (Wladimir J. van der Laan, Diapolo)
|
||||
- #6310 `66e5465` banlist.dat: store banlist on disk (Jonas Schnelli)
|
||||
- #6412 `1a2de32` Test whether created sockets are select()able (Pieter Wuille)
|
||||
- #6498 `219b916` Keep track of recently rejected transactions with a rolling bloom filter (cont'd) (Peter Todd)
|
||||
- #6556 `70ec975` Fix masking of irrelevant bits in address groups. (Alex Morcos)
|
||||
- #6530 `ea19c2b` Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)
|
||||
- #6583 `af9305a` add support for miniupnpc api version 14 (Pavel Vasin)
|
||||
- #6374 `69dc5b5` Connection slot exhaustion DoS mitigation (Patrick Strateman)
|
||||
- #6636 `536207f` net: correctly initialize nMinPingUsecTime (Wladimir J. van der Laan)
|
||||
- #6579 `0c27795` Add NODE_BLOOM service bit and bump protocol version (Matt Corallo)
|
||||
- #6148 `999c8be` Relay blocks when pruning (Suhas Daftuar)
|
||||
- #6588 `cf9bb11` In (strCommand == "tx"), return if AlreadyHave() (Tom Harding)
|
||||
- #6974 `2f71b07` Always allow getheaders from whitelisted peers (Wladimir J. van der Laan)
|
||||
- #6639 `bd629d7` net: Automatically create hidden service, listen on Tor (Wladimir J. van der Laan)
|
||||
- #6984 `9ffc687` don't enforce maxuploadtarget's disconnect for whitelisted peers (Jonas Schnelli)
|
||||
- #7046 `c322652` Net: Improve blocks only mode. (Patrick Strateman)
|
||||
- #7090 `d6454f6` Connect to Tor hidden services by default (when listening on Tor) (Peter Todd)
|
||||
- #7106 `c894fbb` Fix and improve relay from whitelisted peers (Pieter Wuille)
|
||||
- #7129 `5d5ef3a` Direct headers announcement (rebase of #6494) (Pieter Wuille)
|
||||
- #7079 `1b5118b` Prevent peer flooding inv request queue (redux) (redux) (Gregory Maxwell)
|
||||
- #7166 `6ba25d2` Disconnect on mempool requests from peers when over the upload limit. (Gregory Maxwell)
|
||||
- #7133 `f31955d` Replace setInventoryKnown with a rolling bloom filter (rebase of #7100) (Pieter Wuille)
|
||||
- #7174 `82aff88` Don't do mempool lookups for "mempool" command without a filter (Matt Corallo)
|
||||
- #7179 `44fef99` net: Fix sent reject messages for blocks and transactions (Wladimir J. van der Laan)
|
||||
- #7181 `8fc174a` net: Add and document network messages in protocol.h (Wladimir J. van der Laan)
|
||||
- #7125 `10b88be` Replace global trickle node with random delays (Pieter Wuille)
|
||||
- #7415 `cb83beb` net: Hardcoded seeds update January 2016 (Wladimir J. van der Laan)
|
||||
- #7438 `e2d9a58` Do not absolutely protect local peers; decide group ties based on time (Gregory Maxwell)
|
||||
- #7439 `86755bc` Add whitelistforcerelay to control forced relaying. [#7099 redux] (Gregory Maxwell)
|
||||
- #7482 `e16f5b4` Ensure headers count is correct (Suhas Daftuar)
|
||||
|
||||
### Validation
|
||||
|
||||
- #5927 `8d9f0a6` Reduce checkpoints' effect on consensus. (Pieter Wuille)
|
||||
- #6299 `24f2489` Bugfix: Don't check the genesis block header before accepting it (Jorge Timón)
|
||||
- #6361 `d7ada03` Use real number of cores for default -par, ignore virtual cores (Wladimir J. van der Laan)
|
||||
- #6519 `87f37e2` Make logging for validation optional (Wladimir J. van der Laan)
|
||||
- #6351 `2a1090d` CHECKLOCKTIMEVERIFY (BIP65) IsSuperMajority() soft-fork (Peter Todd)
|
||||
- #6931 `54e8bfe` Skip BIP 30 verification where not necessary (Alex Morcos)
|
||||
- #6954 `e54ebbf` Switch to libsecp256k1-based ECDSA validation (Pieter Wuille)
|
||||
- #6508 `61457c2` Switch to a constant-space Merkle root/branch algorithm. (Pieter Wuille)
|
||||
- #6914 `327291a` Add pre-allocated vector type and use it for CScript (Pieter Wuille)
|
||||
- #7500 `889e5b3` Correctly report high-S violations (Pieter Wuille)
|
||||
|
||||
|
||||
### Build system
|
||||
|
||||
- #6210 `0e4f2a0` build: disable optional use of gmp in internal secp256k1 build (Wladimir J. van der Laan)
|
||||
- #6214 `87406aa` [OSX] revert renaming of DigiByte-Qt.app and use CFBundleDisplayName (partial revert of #6116) (Jonas Schnelli)
|
||||
- #6218 `9d67b10` build/gitian misc updates (Cory Fields)
|
||||
- #6269 `d4565b6` gitian: Use the new digibyte-detached-sigs git repo for OSX signatures (Cory Fields)
|
||||
- #6418 `d4a910c` Add autogen.sh to source tarball. (randy-waterhouse)
|
||||
- #6373 `1ae3196` depends: non-qt bumps for 0.12 (Cory Fields)
|
||||
- #6434 `059b352` Preserve user-passed CXXFLAGS with --enable-debug (Gavin Andresen)
|
||||
- #6501 `fee6554` Misc build fixes (Cory Fields)
|
||||
- #6600 `ef4945f` Include digibyte-tx binary on Debian/Ubuntu (Zak Wilcox)
|
||||
- #6619 `4862708` depends: bump miniupnpc and ccache (Michael Ford)
|
||||
- #6801 `ae69a75` [depends] Latest config.guess and config.sub (Michael Ford)
|
||||
- #6938 `193f7b5` build: If both Qt4 and Qt5 are installed, use Qt5 (Wladimir J. van der Laan)
|
||||
- #7092 `348b281` build: Set osx permissions in the dmg to make Gatekeeper happy (Cory Fields)
|
||||
- #6980 `eccd671` [Depends] Bump Boost, miniupnpc, ccache & zeromq (Michael Ford)
|
||||
- #7424 `aa26ee0` Add security/export checks to gitian and fix current failures (Cory Fields)
|
||||
|
||||
### Wallet
|
||||
|
||||
- #6183 `87550ee` Fix off-by-one error w/ nLockTime in the wallet (Peter Todd)
|
||||
- #6057 `ac5476e` re-enable wallet in autoprune (Jonas Schnelli)
|
||||
- #6356 `9e6c33b` Delay initial pruning until after wallet init (Adam Weiss)
|
||||
- #6088 `91389e5` fundrawtransaction (Matt Corallo)
|
||||
- #6415 `ddd8d80` Implement watchonly support in fundrawtransaction (Matt Corallo)
|
||||
- #6567 `0f0f323` Fix crash when mining with empty keypool. (Daniel Kraft)
|
||||
- #6688 `4939eab` Fix locking in GetTransaction. (Alex Morcos)
|
||||
- #6645 `4dbd43e` Enable wallet key imports without rescan in pruned mode. (Gregory Maxwell)
|
||||
- #6550 `5b77244` Do not store Merkle branches in the wallet. (Pieter Wuille)
|
||||
- #5924 `12a7712` Clean up change computation in CreateTransaction. (Daniel Kraft)
|
||||
- #6906 `48b5b84` Reject invalid pubkeys when reading ckey items from the wallet. (Gregory Maxwell)
|
||||
- #7010 `e0a5ef8` Fix fundrawtransaction handling of includeWatching (Peter Todd)
|
||||
- #6851 `616d61b` Optimisation: Store transaction list order in memory rather than compute it every need (Luke-Jr)
|
||||
- #6134 `e92377f` Improve usage of fee estimation code (Alex Morcos)
|
||||
- #7103 `a775182` [wallet, rpc tests] Fix settxfee, paytxfee (MarcoFalke)
|
||||
- #7105 `30c2d8c` Keep track of explicit wallet conflicts instead of using mempool (Pieter Wuille)
|
||||
- #7096 `9490bd7` [Wallet] Improve minimum absolute fee GUI options (Jonas Schnelli)
|
||||
- #6216 `83f06ca` Take the training wheels off anti-fee-sniping (Peter Todd)
|
||||
- #4906 `96e8d12` Issue#1643: Coinselection prunes extraneous inputs from ApproximateBestSubset (Murch)
|
||||
- #7200 `06c6a58` Checks for null data transaction before issuing error to debug.log (Andy Craze)
|
||||
- #7296 `a36d79b` Add sane fallback for fee estimation (Alex Morcos)
|
||||
- #7293 `ff9b610` Add regression test for vValue sort order (MarcoFalke)
|
||||
- #7306 `4707797` Make sure conflicted wallet tx's update balances (Alex Morcos)
|
||||
- #7381 `621bbd8` [walletdb] Fix syntax error in key parser (MarcoFalke)
|
||||
- #7491 `00ec73e` wallet: Ignore MarkConflict if block hash is not known (Wladimir J. van der Laan)
|
||||
- #7502 `1329963` Update the wallet best block marker before pruning (Pieter Wuille)
|
||||
|
||||
### GUI
|
||||
|
||||
- #6217 `c57e12a` disconnect peers from peers tab via context menu (Diapolo)
|
||||
- #6209 `ab0ec67` extend rpc console peers tab (Diapolo)
|
||||
- #6484 `1369d69` use CHashWriter also in SignVerifyMessageDialog (Pavel Vasin)
|
||||
- #6487 `9848d42` Introduce PlatformStyle (Wladimir J. van der Laan)
|
||||
- #6505 `100c9d3` cleanup icons (MarcoFalke)
|
||||
- #4587 `0c465f5` allow users to set -onion via GUI (Diapolo)
|
||||
- #6529 `c0f66ce` show client user agent in debug window (Diapolo)
|
||||
- #6594 `878ea69` Disallow duplicate windows. (Casey Rodarmor)
|
||||
- #5665 `6f55cdd` add verifySize() function to PaymentServer (Diapolo)
|
||||
- #6317 `ca5e2a1` minor optimisations in peertablemodel (Diapolo)
|
||||
- #6315 `e59d2a8` allow banning and unbanning over UI->peers table (Jonas Schnelli)
|
||||
- #6653 `e04b2fa` Pop debug window in foreground when opened twice (MarcoFalke)
|
||||
- #6864 `c702521` Use monospace font (MarcoFalke)
|
||||
- #6887 `3694b74` Update coin control and smartfee labels (MarcoFalke)
|
||||
- #7000 `814697c` add shortcurts for debug-/console-window (Jonas Schnelli)
|
||||
- #6951 `03403d8` Use maxTxFee instead of 10000000 (MarcoFalke)
|
||||
- #7051 `a190777` ui: Add "Copy raw transaction data" to transaction list context menu (Wladimir J. van der Laan)
|
||||
- #6979 `776848a` simple mempool info in debug window (Jonas Schnelli)
|
||||
- #7006 `26af1ac` add startup option to reset Qt settings (Jonas Schnelli)
|
||||
- #6780 `2a94cd6` Call init's parameter interaction before we create the UI options model (Jonas Schnelli)
|
||||
- #7112 `96b8025` reduce cs_main locks during tip update, more fluently update UI (Jonas Schnelli)
|
||||
- #7206 `f43c2f9` Add "NODE_BLOOM" to guiutil so that peers don't get UNKNOWN[4] (Matt Corallo)
|
||||
- #7282 `5cadf3e` fix coincontrol update issue when deleting a send coins entry (Jonas Schnelli)
|
||||
- #7319 `1320300` Intro: Display required space (MarcoFalke)
|
||||
- #7318 `9265e89` quickfix for RPC timer interface problem (Jonas Schnelli)
|
||||
- #7327 `b16b5bc` [Wallet] Transaction View: LastMonth calculation fixed (crowning-)
|
||||
- #7364 `7726c48` [qt] Windows: Make rpcconsole monospace font larger (MarcoFalke)
|
||||
- #7384 `294f432` [qt] Peertable: Increase SUBVERSION_COLUMN_WIDTH (MarcoFalke)
|
||||
|
||||
### Tests and QA
|
||||
|
||||
- #6305 `9005c91` build: comparison tool swap (Cory Fields)
|
||||
- #6318 `e307e13` build: comparison tool NPE fix (Cory Fields)
|
||||
- #6337 `0564c5b` Testing infrastructure: mocktime fixes (Gavin Andresen)
|
||||
- #6350 `60abba1` add unit tests for the decodescript rpc (mruddy)
|
||||
- #5881 `3203a08` Fix and improve txn_doublespend.py test (Tom Harding)
|
||||
- #6390 `6a73d66` tests: Fix digibyte-tx signing test case (Wladimir J. van der Laan)
|
||||
- #6368 `7fc25c2` CLTV: Add more tests to improve coverage (Esteban Ordano)
|
||||
- #6414 `5121c68` Fix intermittent test failure, reduce test time (Tom Harding)
|
||||
- #6417 `44fa82d` [QA] fix possible reorg issue in (fund)rawtransaction(s).py RPC test (Jonas Schnelli)
|
||||
- #6398 `3d9362d` rpc: Remove chain-specific RequireRPCPassword (Wladimir J. van der Laan)
|
||||
- #6428 `bb59e78` tests: Remove old sh-based test framework (Wladimir J. van der Laan)
|
||||
- #5515 `d946e9a` RFC: Assert on probable deadlocks if the second lock isnt try_lock (Matt Corallo)
|
||||
- #6287 `d2464df` Clang lock debug (Cory Fields)
|
||||
- #6465 `410fd74` Don't share objects between TestInstances (Casey Rodarmor)
|
||||
- #6534 `6c1c7fd` Fix test locking issues and un-revert the probable-deadlines assertions commit (Cory Fields)
|
||||
- #6509 `bb4faee` Fix race condition on test node shutdown (Casey Rodarmor)
|
||||
- #6523 `561f8af` Add p2p-fullblocktest.py (Casey Rodarmor)
|
||||
- #6590 `981fd92` Fix stale socket rebinding and re-enable python tests for Windows (Cory Fields)
|
||||
- #6730 `cb4d6d0` build: Remove dependency of digibyte-cli on secp256k1 (Wladimir J. van der Laan)
|
||||
- #6616 `5ab5dca` Regression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py (Peter Tschipper)
|
||||
- #6720 `d479311` Creates unittests for addrman, makes addrman more testable. (Ethan Heilman)
|
||||
- #6853 `c834f56` Added fPowNoRetargeting field to Consensus::Params (Eric Lombrozo)
|
||||
- #6827 `87e5539` [rpc-tests] Check return code (MarcoFalke)
|
||||
- #6848 `f2c869a` Add DERSIG transaction test cases (Ross Nicoll)
|
||||
- #6813 `5242bb3` Support gathering code coverage data for RPC tests with lcov (dexX7)
|
||||
- #6888 `c8322ff` Clear strMiscWarning before running PartitionAlert (Eric Lombrozo)
|
||||
- #6894 `2675276` [Tests] Fix BIP65 p2p test (Suhas Daftuar)
|
||||
- #6863 `725539e` [Test Suite] Fix test for null tx input (Daniel Kraft)
|
||||
- #6926 `a6d0d62` tests: Initialize networking on windows (Wladimir J. van der Laan)
|
||||
- #6822 `9fa54a1` [tests] Be more strict checking dust (MarcoFalke)
|
||||
- #6804 `5fcc14e` [tests] Add basic coverage reporting for RPC tests (James O'Beirne)
|
||||
- #7045 `72dccfc` Bugfix: Use unique autostart filenames on Linux for testnet/regtest (Luke-Jr)
|
||||
- #7095 `d8368a0` Replace scriptnum_test's normative ScriptNum implementation (Wladimir J. van der Laan)
|
||||
- #7063 `6abf6eb` [Tests] Add prioritisetransaction RPC test (Suhas Daftuar)
|
||||
- #7137 `16f4a6e` Tests: Explicitly set chain limits in replace-by-fee test (Suhas Daftuar)
|
||||
- #7216 `9572e49` Removed offline testnet DNSSeed 'alexykot.me'. (tnull)
|
||||
- #7209 `f3ad812` test: don't override DIGIBYTED and DIGIBYTECLI if they're set (Wladimir J. van der Laan)
|
||||
- #7226 `301f16a` Tests: Add more tests to p2p-fullblocktest (Suhas Daftuar)
|
||||
- #7153 `9ef7c54` [Tests] Add mempool_limit.py test (Jonas Schnelli)
|
||||
- #7170 `453c567` tests: Disable Tor interaction (Wladimir J. van der Laan)
|
||||
- #7229 `1ed938b` [qa] wallet: Check if maintenance changes the balance (MarcoFalke)
|
||||
- #7308 `d513405` [Tests] Eliminate intermittent failures in sendheaders.py (Suhas Daftuar)
|
||||
- #7468 `947c4ff` [rpc-tests] Change solve() to use rehash (Brad Andrews)
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
- #6213 `e54ff2f` [init] add -blockversion help and extend -upnp help (Diapolo)
|
||||
- #5975 `1fea667` Consensus: Decouple ContextualCheckBlockHeader from checkpoints (Jorge Timón)
|
||||
- #6061 `eba2f06` Separate Consensus::CheckTxInputs and GetSpendHeight in CheckInputs (Jorge Timón)
|
||||
- #5994 `786ed11` detach wallet from miner (Jonas Schnelli)
|
||||
- #6387 `11576a5` [digibyte-cli] improve error output (Jonas Schnelli)
|
||||
- #6401 `6db53b4` Add DIGIBYTED_SIGTERM_TIMEOUT to OpenRC init scripts (Florian Schmaus)
|
||||
- #6430 `b01981e` doc: add documentation for shared library libdigibyteconsensus (Braydon Fuller)
|
||||
- #6372 `dcc495e` Update Linearize tool to support Windows paths; fix variable scope; update README and example configuration (Paul Georgiou)
|
||||
- #6453 `8fe5cce` Separate core memory usage computation in core_memusage.h (Pieter Wuille)
|
||||
- #6149 `633fe10` Buffer log messages and explicitly open logs (Adam Weiss)
|
||||
- #6488 `7cbed7f` Avoid leaking file descriptors in RegisterLoad (Casey Rodarmor)
|
||||
- #6497 `a2bf40d` Make sure LogPrintf strings are line-terminated (Wladimir J. van der Laan)
|
||||
- #6504 `b6fee6b` Rationalize currency unit to "DGB" (Ross Nicoll)
|
||||
- #6507 `9bb4dd8` Removed contrib/bitrpc (Casey Rodarmor)
|
||||
- #6527 `41d650f` Use unique name for AlertNotify tempfile (Casey Rodarmor)
|
||||
- #6561 `e08a7d9` limitedmap fixes and tests (Casey Rodarmor)
|
||||
- #6565 `a6f2aff` Make sure we re-acquire lock if a task throws (Casey Rodarmor)
|
||||
- #6599 `f4d88c4` Make sure LogPrint strings are line-terminated (Ross Nicoll)
|
||||
- #6630 `195942d` Replace boost::reverse_lock with our own (Casey Rodarmor)
|
||||
- #6103 `13b8282` Add ZeroMQ notifications (João Barbosa)
|
||||
- #6692 `d5d1d2e` devtools: don't push if signing fails in github-merge (Wladimir J. van der Laan)
|
||||
- #6728 `2b0567b` timedata: Prevent warning overkill (Wladimir J. van der Laan)
|
||||
- #6713 `f6ce59c` SanitizeString: Allow hypen char (MarcoFalke)
|
||||
- #5987 `4899a04` Bugfix: Fix testnet-in-a-box use case (Luke-Jr)
|
||||
- #6733 `b7d78fd` Simple benchmarking framework (Gavin Andresen)
|
||||
- #6854 `a092970` devtools: Add security-check.py (Wladimir J. van der Laan)
|
||||
- #6790 `fa1d252` devtools: add clang-format.py (MarcoFalke)
|
||||
- #7114 `f3d0fdd` util: Don't set strMiscWarning on every exception (Wladimir J. van der Laan)
|
||||
- #7078 `93e0514` uint256::GetCheapHash bigendian compatibility (arowser)
|
||||
- #7094 `34e02e0` Assert now > 0 in GetTime GetTimeMillis GetTimeMicros (Patrick Strateman)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- accraze
|
||||
- Adam Weiss
|
||||
- Alex Morcos
|
||||
- Alex van der Peet
|
||||
- AlSzacrel
|
||||
- Altoidnerd
|
||||
- Andriy Voskoboinyk
|
||||
- antonio-fr
|
||||
- Arne Brutschy
|
||||
- Ashley Holman
|
||||
- Bob McElrath
|
||||
- Braydon Fuller
|
||||
- BtcDrak
|
||||
- Casey Rodarmor
|
||||
- centaur1
|
||||
- Chris Kleeschulte
|
||||
- Christian Decker
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- daniel
|
||||
- Daniel Cousens
|
||||
- Daniel Kraft
|
||||
- David Hill
|
||||
- dexX7
|
||||
- Diego Viola
|
||||
- Elias Rohrer
|
||||
- Eric Lombrozo
|
||||
- Erik Mossberg
|
||||
- Esteban Ordano
|
||||
- EthanHeilman
|
||||
- Florian Schmaus
|
||||
- Forrest Voight
|
||||
- Gavin Andresen
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders / instagibbs
|
||||
- Ian T
|
||||
- Irving Ruan
|
||||
- Jacob Welsh
|
||||
- James O'Beirne
|
||||
- Jeff Garzik
|
||||
- Johnathan Corgan
|
||||
- Jonas Schnelli
|
||||
- Jonathan Cross
|
||||
- João Barbosa
|
||||
- Jorge Timón
|
||||
- Josh Lehan
|
||||
- J Ross Nicoll
|
||||
- kazcw
|
||||
- Kevin Cooper
|
||||
- lpescher
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Mark Friedenbach
|
||||
- Matt
|
||||
- Matt Bogosian
|
||||
- Matt Corallo
|
||||
- Matt Quinn
|
||||
- Micha
|
||||
- Michael
|
||||
- Michael Ford / fanquake
|
||||
- Midnight Magic
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Nick
|
||||
- Patrick Strateman
|
||||
- Paul Georgiou
|
||||
- Paul Rabahy
|
||||
- Pavel Janík / paveljanik
|
||||
- Pavel Vasin
|
||||
- Pavol Rusnak
|
||||
- Peter Josling
|
||||
- Peter Todd
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- ptschip
|
||||
- randy-waterhouse
|
||||
- rion
|
||||
- Ross Nicoll
|
||||
- Ryan Havar
|
||||
- Shaul Kfir
|
||||
- Simon Males
|
||||
- Stephen
|
||||
- Suhas Daftuar
|
||||
- tailsjoin
|
||||
- Thomas Kerin
|
||||
- Tom Harding
|
||||
- tulip
|
||||
- unsystemizer
|
||||
- Veres Lajos
|
||||
- Wladimir J. van der Laan
|
||||
- xor-freenet
|
||||
- Zak Wilcox
|
||||
- zathras-crypto
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
198
doc/release-notes/release-notes-0.12.1.md
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
DigiByte Core version 0.12.1 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.12.1/>
|
||||
|
||||
This is a new minor version release, including the BIP9, BIP68 and BIP112
|
||||
softfork, various bugfixes and updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
Upgrading and downgrading
|
||||
=========================
|
||||
|
||||
How to Upgrade
|
||||
--------------
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over /Applications/DigiByte-Qt (on Mac) or
|
||||
digibyted/digibyte-qt (on Linux).
|
||||
|
||||
Downgrade warning
|
||||
-----------------
|
||||
|
||||
### Downgrade to a version < 0.12.0
|
||||
|
||||
Because release 0.12.0 and later will obfuscate the chainstate on every
|
||||
fresh sync or reindex, the chainstate is not backwards-compatible with
|
||||
pre-0.12 versions of DigiByte Core or other software.
|
||||
|
||||
If you want to downgrade after you have done a reindex with 0.12.0 or later,
|
||||
you will need to reindex when you first start DigiByte Core version 0.11 or
|
||||
earlier.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
First version bits BIP9 softfork deployment
|
||||
-------------------------------------------
|
||||
|
||||
This release includes a soft fork deployment to enforce [BIP68][],
|
||||
[BIP112][] and [BIP113][] using the [BIP9][] deployment mechanism.
|
||||
|
||||
The deployment sets the block version number to 0x20000001 between
|
||||
midnight 1st May 2016 and midnight 1st May 2017 to signal readiness for
|
||||
deployment. The version number consists of 0x20000000 to indicate version
|
||||
bits together with setting bit 0 to indicate support for this combined
|
||||
deployment, shown as "csv" in the `getblockchaininfo` RPC call.
|
||||
|
||||
For more information about the soft forking change, please see
|
||||
<https://github.com/digibyte/digibyte/pull/7648>
|
||||
|
||||
This specific backport pull-request can be viewed at
|
||||
<https://github.com/digibyte/digibyte/pull/7543>
|
||||
|
||||
[BIP9]: https://github.com/digibyte/bips/blob/master/bip-0009.mediawiki
|
||||
[BIP68]: https://github.com/digibyte/bips/blob/master/bip-0068.mediawiki
|
||||
[BIP112]: https://github.com/digibyte/bips/blob/master/bip-0112.mediawiki
|
||||
[BIP113]: https://github.com/digibyte/bips/blob/master/bip-0113.mediawiki
|
||||
|
||||
BIP68 soft fork to enforce sequence locks for relative locktime
|
||||
---------------------------------------------------------------
|
||||
|
||||
[BIP68][] introduces relative lock-time consensus-enforced semantics of
|
||||
the sequence number field to enable a signed transaction input to remain
|
||||
invalid for a defined period of time after confirmation of its corresponding
|
||||
outpoint.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/digibyte/digibyte/pull/7184>
|
||||
|
||||
BIP112 soft fork to enforce OP_CHECKSEQUENCEVERIFY
|
||||
--------------------------------------------------
|
||||
|
||||
[BIP112][] redefines the existing OP_NOP3 as OP_CHECKSEQUENCEVERIFY (CSV)
|
||||
for a new opcode in the DigiByte scripting system that in combination with
|
||||
[BIP68][] allows execution pathways of a script to be restricted based
|
||||
on the age of the output being spent.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/digibyte/digibyte/pull/7524>
|
||||
|
||||
BIP113 locktime enforcement soft fork
|
||||
-------------------------------------
|
||||
|
||||
DigiByte Core 0.11.2 previously introduced mempool-only locktime
|
||||
enforcement using GetMedianTimePast(). This release seeks to
|
||||
consensus enforce the rule.
|
||||
|
||||
DigiByte transactions currently may specify a locktime indicating when
|
||||
they may be added to a valid block. Current consensus rules require
|
||||
that blocks have a block header time greater than the locktime specified
|
||||
in any transaction in that block.
|
||||
|
||||
Miners get to choose what time they use for their header time, with the
|
||||
consensus rule being that no node will accept a block whose time is more
|
||||
than two hours in the future. This creates a incentive for miners to
|
||||
set their header times to future values in order to include locktimed
|
||||
transactions which weren't supposed to be included for up to two more
|
||||
hours.
|
||||
|
||||
The consensus rules also specify that valid blocks may have a header
|
||||
time greater than that of the median of the 11 previous blocks. This
|
||||
GetMedianTimePast() time has a key feature we generally associate with
|
||||
time: it can't go backwards.
|
||||
|
||||
[BIP113][] specifies a soft fork enforced in this release that
|
||||
weakens this perverse incentive for individual miners to use a future
|
||||
time by requiring that valid blocks have a computed GetMedianTimePast()
|
||||
greater than the locktime specified in any transaction in that block.
|
||||
|
||||
Mempool inclusion rules currently require transactions to be valid for
|
||||
immediate inclusion in a block in order to be accepted into the mempool.
|
||||
This release begins applying the BIP113 rule to received transactions,
|
||||
so transaction whose time is greater than the GetMedianTimePast() will
|
||||
no longer be accepted into the mempool.
|
||||
|
||||
**Implication for miners:** you will begin rejecting transactions that
|
||||
would not be valid under BIP113, which will prevent you from producing
|
||||
invalid blocks when BIP113 is enforced on the network. Any
|
||||
transactions which are valid under the current rules but not yet valid
|
||||
under the BIP113 rules will either be mined by other miners or delayed
|
||||
until they are valid under BIP113. Note, however, that time-based
|
||||
locktime transactions are more or less unseen on the network currently.
|
||||
|
||||
**Implication for users:** GetMedianTimePast() always trails behind the
|
||||
current time, so a transaction locktime set to the present time will be
|
||||
rejected by nodes running this release until the median time moves
|
||||
forward. To compensate, subtract one hour (3,600 seconds) from your
|
||||
locktimes to allow those transactions to be included in mempools at
|
||||
approximately the expected time.
|
||||
|
||||
For more information about the implementation, see
|
||||
<https://github.com/digibyte/digibyte/pull/6566>
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
The p2p alert system is off by default. To turn on, use `-alert` with
|
||||
startup configuration.
|
||||
|
||||
0.12.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #7739 `7ffc2bd` Add abandoned status to listtransactions (jonasschnelli)
|
||||
|
||||
### Block and transaction handling
|
||||
- #7543 `834aaef` Backport BIP9, BIP68 and BIP112 with softfork (dgbdrak)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #7804 `90f1d24` Track block download times per individual block (sipa)
|
||||
- #7832 `4c3a00d` Reduce block timeout to 10 minutes (laanwj)
|
||||
|
||||
### Validation
|
||||
- #7821 `4226aac` init: allow shutdown during 'Activating best chain...' (laanwj)
|
||||
- #7835 `46898e7` Version 2 transactions remain non-standard until CSV activates (sdaftuar)
|
||||
|
||||
### Build system
|
||||
- #7487 `00d57b4` Workaround Travis-side CI issues (luke-jr)
|
||||
- #7606 `a10da9a` No need to set -L and --location for curl (MarcoFalke)
|
||||
- #7614 `ca8f160` Add curl to packages (now needed for depends) (luke-jr)
|
||||
- #7776 `a784675` Remove unnecessary executables from gitian release (laanwj)
|
||||
|
||||
### Wallet
|
||||
- #7715 `19866c1` Fix calculation of balances and available coins. (morcos)
|
||||
|
||||
### Miscellaneous
|
||||
- #7617 `f04f4fd` Fix markdown syntax and line terminate LogPrint (MarcoFalke)
|
||||
- #7747 `4d035bc` added depends cross compile info (accraze)
|
||||
- #7741 `a0cea89` Mark p2p alert system as deprecated (dgbdrak)
|
||||
- #7780 `c5f94f6` Disable bad-chain alert (dgbdrak)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- accraze
|
||||
- Alex Morcos
|
||||
- BtcDrak
|
||||
- Jonas Schnelli
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Mark Friedenbach
|
||||
- NicolasDorier
|
||||
- Pieter Wuille
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
868
doc/release-notes/release-notes-0.13.0.md
Normal file
|
|
@ -0,0 +1,868 @@
|
|||
DigiByte Core version 0.13.0 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.13.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a digibyte
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of DigiByte Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/digibyte/digibyte/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer verion of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Database cache memory increased
|
||||
--------------------------------
|
||||
|
||||
As a result of growth of the UTXO set, performance with the prior default
|
||||
database cache of 100 MiB has suffered.
|
||||
For this reason the default was changed to 300 MiB in this release.
|
||||
|
||||
For nodes on low-memory systems, the database cache can be changed back to
|
||||
100 MiB (or to another value) by either:
|
||||
|
||||
- Adding `dbcache=100` in digibyte.conf
|
||||
- Changing it in the GUI under `Options → Size of database cache`
|
||||
|
||||
Note that the database cache setting has the most performance impact
|
||||
during initial sync of a node, and when catching up after downtime.
|
||||
|
||||
|
||||
digibyte-cli: arguments privacy
|
||||
------------------------------
|
||||
|
||||
The RPC command line client gained a new argument, `-stdin`
|
||||
to read extra arguments from standard input, one per line until EOF/Ctrl-D.
|
||||
For example:
|
||||
|
||||
$ src/digibyte-cli -stdin walletpassphrase
|
||||
mysecretcode
|
||||
120
|
||||
..... press Ctrl-D here to end input
|
||||
$
|
||||
|
||||
It is recommended to use this for sensitive information such as wallet
|
||||
passphrases, as command-line arguments can usually be read from the process
|
||||
table by any user on the system.
|
||||
|
||||
|
||||
C++11 and Python 3
|
||||
------------------
|
||||
|
||||
Various code modernizations have been done. The DigiByte Core code base has
|
||||
started using C++11. This means that a C++11-capable compiler is now needed for
|
||||
building. Effectively this means GCC 4.7 or higher, or Clang 3.3 or higher.
|
||||
|
||||
When cross-compiling for a target that doesn't have C++11 libraries, configure with
|
||||
`./configure --enable-glibc-back-compat ... LDFLAGS=-static-libstdc++`.
|
||||
|
||||
For running the functional tests in `qa/rpc-tests`, Python3.4 or higher is now
|
||||
required.
|
||||
|
||||
|
||||
Linux ARM builds
|
||||
----------------
|
||||
|
||||
Due to popular request, Linux ARM builds have been added to the uploaded
|
||||
executables.
|
||||
|
||||
The following extra files can be found in the download directory or torrent:
|
||||
|
||||
- `digibyte-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting
|
||||
the 32-bit ARMv7-A architecture.
|
||||
- `digibyte-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting
|
||||
the 64-bit ARMv8-A architecture.
|
||||
|
||||
ARM builds are still experimental. If you have problems on a certain device or
|
||||
Linux distribution combination please report them on the bug tracker, it may be
|
||||
possible to resolve them. Note that the device you use must be (backward)
|
||||
compatible with the architecture targeted by the binary that you use.
|
||||
For example, a Raspberry Pi 2 Model B or Raspberry Pi 3 Model B (in its 32-bit
|
||||
execution state) device, can run the 32-bit ARMv7-A targeted binary. However,
|
||||
no model of Raspberry Pi 1 device can run either binary because they are all
|
||||
ARMv6 architecture devices that are not compatible with ARMv7-A or ARMv8-A.
|
||||
|
||||
Note that Android is not considered ARM Linux in this context. The executables
|
||||
are not expected to work out of the box on Android.
|
||||
|
||||
|
||||
Compact Block support (BIP 152)
|
||||
-------------------------------
|
||||
|
||||
Support for block relay using the Compact Blocks protocol has been implemented
|
||||
in PR 8068.
|
||||
|
||||
The primary goal is reducing the bandwidth spikes at relay time, though in many
|
||||
cases it also reduces propagation delay. It is automatically enabled between
|
||||
compatible peers.
|
||||
[BIP 152](https://github.com/digibyte/bips/blob/master/bip-0152.mediawiki)
|
||||
|
||||
As a side-effect, ordinary non-mining nodes will download and upload blocks
|
||||
faster if those blocks were produced by miners using similar transaction
|
||||
filtering policies. This means that a miner who produces a block with many
|
||||
transactions discouraged by your node will be relayed slower than one with
|
||||
only transactions already in your memory pool. The overall effect of such
|
||||
relay differences on the network may result in blocks which include widely-
|
||||
discouraged transactions losing a stale block race, and therefore miners may
|
||||
wish to configure their node to take common relay policies into consideration.
|
||||
|
||||
|
||||
Hierarchical Deterministic Key Generation
|
||||
-----------------------------------------
|
||||
Newly created wallets will use hierarchical deterministic key generation
|
||||
according to BIP32 (keypath m/0'/0'/k').
|
||||
Existing wallets will still use traditional key generation.
|
||||
|
||||
Backups of HD wallets, regardless of when they have been created, can
|
||||
therefore be used to re-generate all possible private keys, even the
|
||||
ones which haven't already been generated during the time of the backup.
|
||||
**Attention:** Encrypting the wallet will create a new seed which requires
|
||||
a new backup!
|
||||
|
||||
Wallet dumps (created using the `dumpwallet` RPC) will contain the deterministic
|
||||
seed. This is expected to allow future versions to import the seed and all
|
||||
associated funds, but this is not yet implemented.
|
||||
|
||||
HD key generation for new wallets can be disabled by `-usehd=0`. Keep in
|
||||
mind that this flag only has affect on newly created wallets.
|
||||
You can't disable HD key generation once you have created a HD wallet.
|
||||
|
||||
There is no distinction between internal (change) and external keys.
|
||||
|
||||
HD wallets are incompatible with older versions of DigiByte Core.
|
||||
|
||||
[Pull request](https://github.com/digibyte/digibyte/pull/8035/files), [BIP 32](https://github.com/digibyte/bips/blob/master/bip-0032.mediawiki)
|
||||
|
||||
|
||||
Segregated Witness
|
||||
------------------
|
||||
|
||||
The code preparations for Segregated Witness ("segwit"), as described in [BIP
|
||||
141](https://github.com/digibyte/bips/blob/master/bip-0141.mediawiki), [BIP
|
||||
143](https://github.com/digibyte/bips/blob/master/bip-0143.mediawiki), [BIP
|
||||
144](https://github.com/digibyte/bips/blob/master/bip-0144.mediawiki), and [BIP
|
||||
145](https://github.com/digibyte/bips/blob/master/bip-0145.mediawiki) are
|
||||
finished and included in this release. However, BIP 141 does not yet specify
|
||||
activation parameters on mainnet, and so this release does not support segwit
|
||||
use on mainnet. Testnet use is supported, and after BIP 141 is updated with
|
||||
proposed parameters, a future release of DigiByte Core is expected that
|
||||
implements those parameters for mainnet.
|
||||
|
||||
Furthermore, because segwit activation is not yet specified for mainnet,
|
||||
version 0.13.0 will behave similarly as other pre-segwit releases even after a
|
||||
future activation of BIP 141 on the network. Upgrading from 0.13.0 will be
|
||||
required in order to utilize segwit-related features on mainnet (such as signal
|
||||
BIP 141 activation, mine segwit blocks, fully validate segwit blocks, relay
|
||||
segwit blocks to other segwit nodes, and use segwit transactions in the
|
||||
wallet, etc).
|
||||
|
||||
|
||||
Mining transaction selection ("Child Pays For Parent")
|
||||
------------------------------------------------------
|
||||
|
||||
The mining transaction selection algorithm has been replaced with an algorithm
|
||||
that selects transactions based on their feerate inclusive of unconfirmed
|
||||
ancestor transactions. This means that a low-fee transaction can become more
|
||||
likely to be selected if a high-fee transaction that spends its outputs is
|
||||
relayed.
|
||||
|
||||
With this change, the `-blockminsize` command line option has been removed.
|
||||
|
||||
The command line option `-blockmaxsize` remains an option to specify the
|
||||
maximum number of serialized bytes in a generated block. In addition, the new
|
||||
command line option `-blockmaxweight` has been added, which specifies the
|
||||
maximum "block weight" of a generated block, as defined by [BIP 141 (Segregated
|
||||
Witness)] (https://github.com/digibyte/bips/blob/master/bip-0141.mediawiki).
|
||||
|
||||
In preparation for Segregated Witness, the mining algorithm has been modified
|
||||
to optimize transaction selection for a given block weight, rather than a given
|
||||
number of serialized bytes in a block. In this release, transaction selection
|
||||
is unaffected by this distinction (as BIP 141 activation is not supported on
|
||||
mainnet in this release, see above), but in future releases and after BIP 141
|
||||
activation, these calculations would be expected to differ.
|
||||
|
||||
For optimal runtime performance, miners using this release should specify
|
||||
`-blockmaxweight` on the command line, and not specify `-blockmaxsize`.
|
||||
Additionally (or only) specifying `-blockmaxsize`, or relying on default
|
||||
settings for both, may result in performance degradation, as the logic to
|
||||
support `-blockmaxsize` performs additional computation to ensure that
|
||||
constraint is met. (Note that for mainnet, in this release, the equivalent
|
||||
parameter for `-blockmaxweight` would be four times the desired
|
||||
`-blockmaxsize`. See [BIP 141]
|
||||
(https://github.com/digibyte/bips/blob/master/bip-0141.mediawiki) for additional
|
||||
details.)
|
||||
|
||||
In the future, the `-blockmaxsize` option may be removed, as block creation is
|
||||
no longer optimized for this metric. Feedback is requested on whether to
|
||||
deprecate or keep this command line option in future releases.
|
||||
|
||||
|
||||
Reindexing changes
|
||||
------------------
|
||||
|
||||
In earlier versions, reindexing did validation while reading through the block
|
||||
files on disk. These two have now been split up, so that all blocks are known
|
||||
before validation starts. This was necessary to make certain optimizations that
|
||||
are available during normal synchronizations also available during reindexing.
|
||||
|
||||
The two phases are distinct in the DigiByte-Qt GUI. During the first one,
|
||||
"Reindexing blocks on disk" is shown. During the second (slower) one,
|
||||
"Processing blocks on disk" is shown.
|
||||
|
||||
It is possible to only redo validation now, without rebuilding the block index,
|
||||
using the command line option `-reindex-chainstate` (in addition to
|
||||
`-reindex` which does both). This new option is useful when the blocks on disk
|
||||
are assumed to be fine, but the chainstate is still corrupted. It is also
|
||||
useful for benchmarks.
|
||||
|
||||
|
||||
Removal of internal miner
|
||||
--------------------------
|
||||
|
||||
As CPU mining has been useless for a long time, the internal miner has been
|
||||
removed in this release, and replaced with a simpler implementation for the
|
||||
test framework.
|
||||
|
||||
The overall result of this is that `setgenerate` RPC call has been removed, as
|
||||
well as the `-gen` and `-genproclimit` command-line options.
|
||||
|
||||
For testing, the `generate` call can still be used to mine a block, and a new
|
||||
RPC call `generatetoaddress` has been added to mine to a specific address. This
|
||||
works with wallet disabled.
|
||||
|
||||
|
||||
New bytespersigop implementation
|
||||
--------------------------------
|
||||
|
||||
The former implementation of the bytespersigop filter accidentally broke bare
|
||||
multisig (which is meant to be controlled by the `permitbaremultisig` option),
|
||||
since the consensus protocol always counts these older transaction forms as 20
|
||||
sigops for backwards compatibility. Simply fixing this bug by counting more
|
||||
accurately would have reintroduced a vulnerability. It has therefore been
|
||||
replaced with a new implementation that rather than filter such transactions,
|
||||
instead treats them (for fee purposes only) as if they were in fact the size
|
||||
of a transaction actually using all 20 sigops.
|
||||
|
||||
|
||||
Low-level P2P changes
|
||||
----------------------
|
||||
|
||||
- The optional new p2p message "feefilter" is implemented and the protocol
|
||||
version is bumped to 70013. Upon receiving a feefilter message from a peer,
|
||||
a node will not send invs for any transactions which do not meet the filter
|
||||
feerate. [BIP 133](https://github.com/digibyte/bips/blob/master/bip-0133.mediawiki)
|
||||
|
||||
- The P2P alert system has been removed in PR #7692 and the `alert` P2P message
|
||||
is no longer supported.
|
||||
|
||||
- The transaction relay mechanism used to relay one quarter of all transactions
|
||||
instantly, while queueing up the rest and sending them out in batch. As
|
||||
this resulted in chains of dependent transactions being reordered, it
|
||||
systematically hurt transaction relay. The relay code was redesigned in PRs
|
||||
\#7840 and #8082, and now always batches transactions announcements while also
|
||||
sorting them according to dependency order. This significantly reduces orphan
|
||||
transactions. To compensate for the removal of instant relay, the frequency of
|
||||
batch sending was doubled for outgoing peers.
|
||||
|
||||
- Since PR #7840 the BIP35 `mempool` command is also subject to batch processing.
|
||||
Also the `mempool` message is no longer handled for non-whitelisted peers when
|
||||
`NODE_BLOOM` is disabled through `-peerbloomfilters=0`.
|
||||
|
||||
- The maximum size of orphan transactions that are kept in memory until their
|
||||
ancestors arrive has been raised in PR #8179 from 5000 to 99999 bytes. They
|
||||
are now also removed from memory when they are included in a block, conflict
|
||||
with a block, and time out after 20 minutes.
|
||||
|
||||
- We respond at most once to a getaddr request during the lifetime of a
|
||||
connection since PR #7856.
|
||||
|
||||
- Connections to peers who have recently been the first one to give us a valid
|
||||
new block or transaction are protected from disconnections since PR #8084.
|
||||
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- RPC calls have been added to output detailed statistics for individual mempool
|
||||
entries, as well as to calculate the in-mempool ancestors or descendants of a
|
||||
transaction: see `getmempoolentry`, `getmempoolancestors`, `getmempooldescendants`.
|
||||
|
||||
- `gettxoutsetinfo` UTXO hash (`hash_serialized`) has changed. There was a divergence between
|
||||
32-bit and 64-bit platforms, and the txids were missing in the hashed data. This has been
|
||||
fixed, but this means that the output will be different than from previous versions.
|
||||
|
||||
- Full UTF-8 support in the RPC API. Non-ASCII characters in, for example,
|
||||
wallet labels have always been malformed because they weren't taken into account
|
||||
properly in JSON RPC processing. This is no longer the case. This also affects
|
||||
the GUI debug console.
|
||||
|
||||
- Asm script outputs replacements for OP_NOP2 and OP_NOP3
|
||||
|
||||
- OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP
|
||||
65](https://github.com/digibyte/bips/blob/master/bip-0065.mediawiki)
|
||||
|
||||
- OP_NOP3 has been renamed to OP_CHECKSEQUENCEVERIFY by [BIP
|
||||
112](https://github.com/digibyte/bips/blob/master/bip-0112.mediawiki)
|
||||
|
||||
- The following outputs are affected by this change:
|
||||
|
||||
- RPC `getrawtransaction` (in verbose mode)
|
||||
- RPC `decoderawtransaction`
|
||||
- RPC `decodescript`
|
||||
- REST `/rest/tx/` (JSON format)
|
||||
- REST `/rest/block/` (JSON format when including extended tx details)
|
||||
- `digibyte-tx -json`
|
||||
|
||||
- The sorting of the output of the `getrawmempool` output has changed.
|
||||
|
||||
- New RPC commands: `generatetoaddress`, `importprunedfunds`, `removeprunedfunds`, `signmessagewithprivkey`,
|
||||
`getmempoolancestors`, `getmempooldescendants`, `getmempoolentry`,
|
||||
`createwitnessaddress`, `addwitnessaddress`.
|
||||
|
||||
- Removed RPC commands: `setgenerate`, `getgenerate`.
|
||||
|
||||
- New options were added to `fundrawtransaction`: `includeWatching`, `changeAddress`, `changePosition` and `feeRate`.
|
||||
|
||||
|
||||
Low-level ZMQ changes
|
||||
----------------------
|
||||
|
||||
- Each ZMQ notification now contains an up-counting sequence number that allows
|
||||
listeners to detect lost notifications.
|
||||
The sequence number is always the last element in a multi-part ZMQ notification and
|
||||
therefore backward compatible. Each message type has its own counter.
|
||||
PR [#7762](https://github.com/digibyte/digibyte/pull/7762).
|
||||
|
||||
|
||||
0.13.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
|
||||
- #7156 `9ee02cf` Remove cs_main lock from `createrawtransaction` (laanwj)
|
||||
- #7326 `2cd004b` Fix typo, wrong information in gettxout help text (paveljanik)
|
||||
- #7222 `82429d0` Indicate which transactions are signaling opt-in RBF (sdaftuar)
|
||||
- #7480 `b49a623` Changed getnetworkhps value to double to avoid overflow (instagibbs)
|
||||
- #7550 `8b958ab` Input-from-stdin mode for digibyte-cli (laanwj)
|
||||
- #7670 `c9a1265` Use cached block hash in blockToJSON() (rat4)
|
||||
- #7726 `9af69fa` Correct importaddress help reference to importpubkey (CypherGrue)
|
||||
- #7766 `16555b6` Register calls where they are defined (laanwj)
|
||||
- #7797 `e662a76` Fix generatetoaddress failing to parse address (mruddy)
|
||||
- #7774 `916b15a` Add versionHex in getblock and getblockheader JSON results (mruddy)
|
||||
- #7863 `72c54e3` Getblockchaininfo: make bip9_softforks an object, not an array (rustyrussell)
|
||||
- #7842 `d97101e` Do not print minping time in getpeerinfo when no ping received yet (paveljanik)
|
||||
- #7518 `be14ca5` Add multiple options to fundrawtransaction (promag)
|
||||
- #7756 `9e47fce` Add cursor to iterate over utxo set, use this in `gettxoutsetinfo` (laanwj)
|
||||
- #7848 `88616d2` Divergence between 32- and 64-bit when hashing >4GB affects `gettxoutsetinfo` (laanwj)
|
||||
- #7827 `4205ad7` Speed up `getchaintips` (mrbandrews)
|
||||
- #7762 `a1eb344` Append a message sequence number to every ZMQ notification (jonasschnelli)
|
||||
- #7688 `46880ed` List solvability in listunspent output and improve help (sipa)
|
||||
- #7926 `5725807` Push back `getaddednodeinfo` dead value (instagibbs)
|
||||
- #7953 `0630353` Create `signmessagewithprivkey` rpc (achow101)
|
||||
- #8049 `c028c7b` Expose information on whether transaction relay is enabled in `getnetworkinfo` (laanwj)
|
||||
- #7967 `8c1e49b` Add feerate option to `fundrawtransaction` (jonasschnelli)
|
||||
- #8118 `9b6a48c` Reduce unnecessary hashing in `signrawtransaction` (jonasnick)
|
||||
- #7957 `79004d4` Add support for transaction sequence number (jonasschnelli)
|
||||
- #8153 `75ec320` `fundrawtransaction` feeRate: Use DGB/kB (MarcoFalke)
|
||||
- #7292 `7ce9ac5` Expose ancestor/descendant information over RPC (sdaftuar)
|
||||
- #8171 `62fcf27` Fix createrawtx sequence number unsigned int parsing (jonasschnelli)
|
||||
- #7892 `9c3d0fa` Add full UTF-8 support to RPC (laanwj)
|
||||
- #8317 `304eff3` Don't use floating point in rpcwallet (MarcoFalke)
|
||||
- #8258 `5a06ebb` Hide softfork in `getblockchaininfo` if timeout is 0 (jl2012)
|
||||
- #8244 `1922e5a` Remove unnecessary LOCK(cs_main) in getrawmempool (dcousens)
|
||||
|
||||
### Block and transaction handling
|
||||
|
||||
- #7056 `6a07208` Save last db read (morcos)
|
||||
- #6842 `0192806` Limitfreerelay edge case bugfix (ptschip)
|
||||
- #7084 `11d74f6` Replace maxFeeRate of 10000*minRelayTxFee with maxTxFee in mempool (MarcoFalke)
|
||||
- #7539 `9f33dba` Add tags to mempool's mapTx indices (sdaftuar)
|
||||
- #7592 `26a2a72` Re-remove ERROR logging for mempool rejects (laanwj)
|
||||
- #7187 `14d6324` Keep reorgs fast for SequenceLocks checks (morcos)
|
||||
- #7594 `01f4267` Mempool: Add tracking of ancestor packages (sdaftuar)
|
||||
- #7904 `fc9e334` Txdb: Fix assert crash in new UTXO set cursor (laanwj)
|
||||
- #7927 `f9c2ac7` Minor changes to dbwrapper to simplify support for other databases (laanwj)
|
||||
- #7933 `e26b620` Fix OOM when deserializing UTXO entries with invalid length (sipa)
|
||||
- #8020 `5e374f7` Use SipHash-2-4 for various non-cryptographic hashes (sipa)
|
||||
- #8076 `d720980` VerifyDB: don't check blocks that have been pruned (sdaftuar)
|
||||
- #8080 `862fd24` Do not use mempool for GETDATA for tx accepted after the last mempool req (gmaxwell)
|
||||
- #7997 `a82f033` Replace mapNextTx with slimmer setSpends (kazcw)
|
||||
- #8220 `1f86d64` Stop trimming when mapTx is empty (sipa)
|
||||
- #8273 `396f9d6` Bump `-dbcache` default to 300MiB (laanwj)
|
||||
- #7225 `eb33179` Eliminate unnecessary call to CheckBlock (sdaftuar)
|
||||
- #7907 `006cdf6` Optimize and Cleanup CScript::FindAndDelete (pstratem)
|
||||
- #7917 `239d419` Optimize reindex (sipa)
|
||||
- #7763 `3081fb9` Put hex-encoded version in UpdateTip (sipa)
|
||||
- #8149 `d612837` Testnet-only segregated witness (sipa)
|
||||
- #8305 `3730393` Improve handling of unconnecting headers (sdaftuar)
|
||||
- #8363 `fca1a41` Rename "block cost" to "block weight" (sdaftuar)
|
||||
- #8381 `f84ee3d` Make witness v0 outputs non-standard (jl2012)
|
||||
- #8364 `3f65ba2` Treat high-sigop transactions as larger rather than rejecting them (sipa)
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
- #6589 `dc0305d` Log bytes recv/sent per command (jonasschnelli)
|
||||
- #7164 `3b43cad` Do not download transactions during initial blockchain sync (ptschip)
|
||||
- #7458 `898fedf` peers.dat, banlist.dat recreated when missing (kirkalx)
|
||||
- #7637 `3da5d1b` Fix memleak in TorController (laanwj, jonasschnelli)
|
||||
- #7553 `9f14e5a` Remove vfReachable and modify IsReachable to only use vfLimited (pstratem)
|
||||
- #7708 `9426632` De-neuter NODE_BLOOM (pstratem)
|
||||
- #7692 `29b2be6` Remove P2P alert system (dgbdrak)
|
||||
- #7542 `c946a15` Implement "feefilter" P2P message (morcos)
|
||||
- #7573 `352fd57` Add `-maxtimeadjustment` command line option (mruddy)
|
||||
- #7570 `232592a` Add IPv6 Link-Local Address Support (mruddy)
|
||||
- #7874 `e6a4d48` Improve AlreadyHave (morcos)
|
||||
- #7856 `64e71b3` Only send one GetAddr response per connection (gmaxwell)
|
||||
- #7868 `7daa3ad` Split DNS resolving functionality out of net structures (theuni)
|
||||
- #7919 `7617682` Fix headers announcements edge case (sdaftuar)
|
||||
- #7514 `d9594bf` Fix IsInitialBlockDownload for testnet (jmacwhyte)
|
||||
- #7959 `03cf6e8` fix race that could fail to persist a ban (kazcw)
|
||||
- #7840 `3b9a0bf` Several performance and privacy improvements to inv/mempool handling (sipa)
|
||||
- #8011 `65aecda` Don't run ThreadMessageHandler at lowered priority (kazcw)
|
||||
- #7696 `5c3f8dd` Fix de-serialization bug where AddrMan is left corrupted (EthanHeilman)
|
||||
- #7932 `ed749bd` CAddrMan::Deserialize handle corrupt serializations better (pstratem)
|
||||
- #7906 `83121cc` Prerequisites for p2p encapsulation changes (theuni)
|
||||
- #8033 `18436d8` Fix Socks5() connect failures to be less noisy and less unnecessarily scary (wtogami)
|
||||
- #8082 `01d8359` Defer inserting into maprelay until just before relaying (gmaxwell)
|
||||
- #7960 `6a22373` Only use AddInventoryKnown for transactions (sdaftuar)
|
||||
- #8078 `2156fa2` Disable the mempool P2P command when bloom filters disabled (petertodd)
|
||||
- #8065 `67c91f8` Addrman offline attempts (gmaxwell)
|
||||
- #7703 `761cddb` Tor: Change auth order to only use password auth if -torpassword (laanwj)
|
||||
- #8083 `cd0c513` Add support for dnsseeds with option to filter by servicebits (jonasschnelli)
|
||||
- #8173 `4286f43` Use SipHash for node eviction (sipa)
|
||||
- #8154 `1445835` Drop vAddrToSend after sending big addr message (kazcw)
|
||||
- #7749 `be9711e` Enforce expected outbound services (sipa)
|
||||
- #8208 `0a64777` Do not set extra flags for unfiltered DNS seed results (sipa)
|
||||
- #8084 `e4bb4a8` Add recently accepted blocks and txn to AttemptToEvictConnection (gmaxwell)
|
||||
- #8113 `3f89a53` Rework addnode behaviour (sipa)
|
||||
- #8179 `94ab58b` Evict orphans which are included or precluded by accepted blocks (gmaxwell)
|
||||
- #8068 `e9d76a1` Compact Blocks (TheBlueMatt)
|
||||
- #8204 `0833894` Update petertodd's testnet seed (petertodd)
|
||||
- #8247 `5cd35d3` Mark my dnsseed as supporting filtering (sipa)
|
||||
- #8275 `042c323` Remove bad chain alert partition check (dgbdrak)
|
||||
- #8271 `1bc9c80` Do not send witnesses in cmpctblock (sipa)
|
||||
- #8312 `ca40ef6` Fix mempool DoS vulnerability from malleated transactions (sdaftuar)
|
||||
- #7180 `16ccb74` Account for `sendheaders` `verack` messages (laanwj)
|
||||
- #8102 `425278d` Bugfix: use global ::fRelayTxes instead of CNode in version send (sipa)
|
||||
- #8408 `b7e2011` Prevent fingerprinting, disk-DoS with compact blocks (sdaftuar)
|
||||
|
||||
### Build system
|
||||
|
||||
- #7302 `41f1a3e` C++11 build/runtime fixes (theuni)
|
||||
- #7322 `fd9356b` c++11: add scoped enum fallbacks to CPPFLAGS rather than defining them locally (theuni)
|
||||
- #7441 `a6771fc` Use Debian 8.3 in gitian build guide (fanquake)
|
||||
- #7349 `152a821` Build against system UniValue when available (luke-jr)
|
||||
- #7520 `621940e` LibreSSL doesn't define OPENSSL_VERSION, use LIBRESSL_VERSION_TEXT instead (paveljanik)
|
||||
- #7528 `9b9bfce` autogen.sh: warn about needing autoconf if autoreconf is not found (knocte)
|
||||
- #7504 `19324cf` Crystal clean make clean (paveljanik)
|
||||
- #7619 `18b3f1b` Add missing sudo entry in gitian VM setup (dgbdrak)
|
||||
- #7616 `639ec58` [depends] Delete unused patches (MarcoFalke)
|
||||
- #7658 `c15eb28` Add curl to Gitian setup instructions (dgbdrak)
|
||||
- #7710 `909b72b` [Depends] Bump miniupnpc and config.guess+sub (fanquake)
|
||||
- #7723 `5131005` build: python 3 compatibility (laanwj)
|
||||
- #7477 `28ad4d9` Fix quoting of copyright holders in configure.ac (domob1812)
|
||||
- #7711 `a67bc5e` [build-aux] Update Boost & check macros to latest serials (fanquake)
|
||||
- #7788 `4dc1b3a` Use relative paths instead of absolute paths in protoc calls (paveljanik)
|
||||
- #7809 `bbd210d` depends: some base fixes/changes (theuni)
|
||||
- #7603 `73fc922` Build System: Use PACKAGE_TARNAME in NSIS script (JeremyRand)
|
||||
- #7905 `187186b` test: move accounting_tests and rpc_wallet_tests to wallet/test (laanwj)
|
||||
- #7911 `351abf9` leveldb: integrate leveldb into our buildsystem (theuni)
|
||||
- #7944 `a407807` Re-instate TARGET_OS=linux in configure.ac. Removed by 351abf9e035 (randy-waterhouse)
|
||||
- #7920 `c3e3cfb` Switch Travis to Trusty (theuni)
|
||||
- #7954 `08b37c5` build: quiet annoying warnings without adding new ones (theuni)
|
||||
- #7165 `06162f1` build: Enable C++11 in build, require C++11 compiler (laanwj)
|
||||
- #7982 `559fbae` build: No need to check for leveldb atomics (theuni)
|
||||
- #8002 `f9b4582` [depends] Add -stdlib=libc++ to darwin CXX flags (fanquake)
|
||||
- #7993 `6a034ed` [depends] Bump Freetype, ccache, ZeroMQ, miniupnpc, expat (fanquake)
|
||||
- #8167 `19ea173` Ship debug tarballs/zips with debug symbols (theuni)
|
||||
- #8175 `f0299d8` Add --disable-bench to config flags for windows (laanwj)
|
||||
- #7283 `fd9881a` [gitian] Default reference_datetime to commit author date (MarcoFalke)
|
||||
- #8181 `9201ce8` Get rid of `CLIENT_DATE` (laanwj)
|
||||
- #8133 `fde0ac4` Finish up out-of-tree changes (theuni)
|
||||
- #8188 `65a9d7d` Add armhf/aarch64 gitian builds (theuni)
|
||||
- #8194 `cca1c8c` [gitian] set correct PATH for wrappers (MarcoFalke)
|
||||
- #8198 `5201614` Sync ax_pthread with upstream draft4 (fanquake)
|
||||
- #8210 `12a541e` [Qt] Bump to Qt5.6.1 (jonasschnelli)
|
||||
- #8285 `da50997` windows: Add testnet link to installer (laanwj)
|
||||
- #8304 `0cca2fe` [travis] Update SDK_URL (MarcoFalke)
|
||||
- #8310 `6ae20df` Require boost for bench (theuni)
|
||||
- #8315 `2e51590` Don't require sudo for Linux (theuni)
|
||||
- #8314 `67caef6` Fix pkg-config issues for 0.13 (theuni)
|
||||
- #8373 `1fe7f40` Fix OSX non-deterministic dmg (theuni)
|
||||
- #8358 `cfd1280` Gbuild: Set memory explicitly (default is too low) (MarcoFalke)
|
||||
|
||||
### GUI
|
||||
|
||||
- #7154 `00b4b8d` Add InMempool() info to transaction details (jonasschnelli)
|
||||
- #7068 `5f3c670` [RPC-Tests] add simple way to run rpc test over QT clients (jonasschnelli)
|
||||
- #7218 `a1c185b` Fix misleading translation (MarcoFalke)
|
||||
- #7214 `be9a9a3` qt5: Use the fixed font the system recommends (MarcoFalke)
|
||||
- #7256 `08ab906` Add note to coin control dialog QT5 workaround (fanquake)
|
||||
- #7255 `e289807` Replace some instances of formatWithUnit with formatHtmlWithUnit (fanquake)
|
||||
- #7317 `3b57e9c` Fix RPCTimerInterface ordering issue (jonasschnelli)
|
||||
- #7327 `c079d79` Transaction View: LastMonth calculation fixed (crowning-)
|
||||
- #7334 `e1060c5` coincontrol workaround is still needed in qt5.4 (fixed in qt5.5) (MarcoFalke)
|
||||
- #7383 `ae2db67` Rename "amount" to "requested amount" in receive coins table (jonasschnelli)
|
||||
- #7396 `cdcbc59` Add option to increase/decrease font size in the console window (jonasschnelli)
|
||||
- #7437 `9645218` Disable tab navigation for peers tables (Kefkius)
|
||||
- #7604 `354b03d` build: Remove spurious dollar sign. Fixes #7189 (dooglus)
|
||||
- #7605 `7f001bd` Remove openssl info from init/log and from Qt debug window (jonasschnelli)
|
||||
- #7628 `87d6562` Add 'copy full transaction details' option (ericshawlinux)
|
||||
- #7613 `3798e5d` Add autocomplete to digibyte-qt's console window (GamerSg)
|
||||
- #7668 `b24266c` Fix history deletion bug after font size change (achow101)
|
||||
- #7680 `41d2dfa` Remove reflection from `about` icon (laanwj)
|
||||
- #7686 `f034bce` Remove 0-fee from send dialog (MarcoFalke)
|
||||
- #7506 `b88e0b0` Use CCoinControl selection in CWallet::FundTransaction (promag)
|
||||
- #7732 `0b98dd7` Debug window: replace "Build date" with "Datadir" (jonasschnelli)
|
||||
- #7761 `60db51d` remove trailing output-index from transaction-id (jonasschnelli)
|
||||
- #7772 `6383268` Clear the input line after activating autocomplete (paveljanik)
|
||||
- #7925 `f604bf6` Fix out-of-tree GUI builds (laanwj)
|
||||
- #7939 `574ddc6` Make it possible to show details for multiple transactions (laanwj)
|
||||
- #8012 `b33824b` Delay user confirmation of send (Tyler-Hardin)
|
||||
- #8006 `7c8558d` Add option to disable the system tray icon (Tyler-Hardin)
|
||||
- #8046 `169d379` Fix Cmd-Q / Menu Quit shutdown on OSX (jonasschnelli)
|
||||
- #8042 `6929711` Don't allow to open the debug window during splashscreen & verification state (jonasschnelli)
|
||||
- #8014 `77b49ac` Sort transactions by date (Tyler-Hardin)
|
||||
- #8073 `eb2f6f7` askpassphrasedialog: Clear pass fields on accept (rat4)
|
||||
- #8129 `ee1533e` Fix RPC console auto completer (UdjinM6)
|
||||
- #7636 `fb0ac48` Add digibyte address label to request payment QR code (makevoid)
|
||||
- #8231 `760a6c7` Fix a bug where the SplashScreen will not be hidden during startup (jonasschnelli)
|
||||
- #8256 `af2421c` BUG: digibyte-qt crash (fsb4000)
|
||||
- #8257 `ff03c50` Do not ask a UI question from digibyted (sipa)
|
||||
- #8288 `91abb77` Network-specific example address (laanwj)
|
||||
- #7707 `a914968` UI support for abandoned transactions (jonasschnelli)
|
||||
- #8207 `f7a403b` Add a link to the DigiByte-Core repository and website to the About Dialog (MarcoFalke)
|
||||
- #8281 `6a87eb0` Remove client name from debug window (laanwj)
|
||||
- #8407 `45eba4b` Add dbcache migration path (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
|
||||
- #7262 `fc08994` Reduce inefficiency of GetAccountAddress() (dooglus)
|
||||
- #7537 `78e81b0` Warn on unexpected EOF while salvaging wallet (laanwj)
|
||||
- #7521 `3368895` Don't resend wallet txs that aren't in our own mempool (morcos)
|
||||
- #7576 `86a1ec5` Move wallet help string creation to CWallet (jonasschnelli)
|
||||
- #7577 `5b3b5a7` Move "load wallet phase" to CWallet (jonasschnelli)
|
||||
- #7608 `0735c0c` Move hardcoded file name out of log messages (MarcoFalke)
|
||||
- #7649 `4900641` Prevent multiple calls to CWallet::AvailableCoins (promag)
|
||||
- #7646 `e5c3511` Fix lockunspent help message (promag)
|
||||
- #7558 `b35a591` Add import/removeprunedfunds rpc call (instagibbs)
|
||||
- #6215 `48c5adf` add bip32 pub key serialization (jonasschnelli)
|
||||
- #7913 `bafd075` Fix for incorrect locking in GetPubKey() (keystore.cpp) (yurizhykin)
|
||||
- #8036 `41138f9` init: Move berkeleydb version reporting to wallet (laanwj)
|
||||
- #8028 `373b50d` Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk (pstratem)
|
||||
- #8061 `f6b7df3` Improve Wallet encapsulation (pstratem)
|
||||
- #7891 `950be19` Always require OS randomness when generating secret keys (sipa)
|
||||
- #7689 `b89ef13` Replace OpenSSL AES with ctaes-based version (sipa)
|
||||
- #7825 `f972b04` Prevent multiple calls to ExtractDestination (pedrobranco)
|
||||
- #8137 `243ac0c` Improve CWallet API with new AccountMove function (pstratem)
|
||||
- #8142 `52c3f34` Improve CWallet API with new GetAccountPubkey function (pstratem)
|
||||
- #8035 `b67a472` Add simplest BIP32/deterministic key generation implementation (jonasschnelli)
|
||||
- #7687 `a6ddb19` Stop treating importaddress'ed scripts as change (sipa)
|
||||
- #8298 `aef3811` wallet: Revert input selection post-pruning (laanwj)
|
||||
- #8324 `bc94b87` Keep HD seed during salvagewallet (jonasschnelli)
|
||||
- #8323 `238300b` Add HD keypath to CKeyMetadata, report metadata in validateaddress (jonasschnelli)
|
||||
- #8367 `3b38a6a` Ensure <0.13 clients can't open HD wallets (jonasschnelli)
|
||||
- #8378 `ebea651` Move SetMinVersion for FEATURE_HD to SetHDMasterKey (pstratem)
|
||||
- #8390 `73adfe3` Correct hdmasterkeyid/masterkeyid name confusion (jonasschnelli)
|
||||
- #8206 `18b8ee1` Add HD xpriv to dumpwallet (jonasschnelli)
|
||||
- #8389 `c3c82c4` Create a new HD seed after encrypting the wallet (jonasschnelli)
|
||||
|
||||
### Tests and QA
|
||||
|
||||
- #7320 `d3dfc6d` Test walletpassphrase timeout (MarcoFalke)
|
||||
- #7208 `47c5ed1` Make max tip age an option instead of chainparam (laanwj)
|
||||
- #7372 `21376af` Trivial: [qa] wallet: Print maintenance (MarcoFalke)
|
||||
- #7280 `668906f` [travis] Fail when documentation is outdated (MarcoFalke)
|
||||
- #7177 `93b0576` [qa] Change default block priority size to 0 (MarcoFalke)
|
||||
- #7236 `02676c5` Use createrawtx locktime parm in txn_clone (dgenr8)
|
||||
- #7212 `326ffed` Adds unittests for CAddrMan and CAddrinfo, removes source of non-determinism (EthanHeilman)
|
||||
- #7490 `d007511` tests: Remove May15 test (laanwj)
|
||||
- #7531 `18cb2d5` Add bip68-sequence.py to extended rpc tests (dgbdrak)
|
||||
- #7536 `ce5fc02` test: test leading spaces for ParseHex (laanwj)
|
||||
- #7620 `1b68de3` [travis] Only run check-doc.py once (MarcoFalke)
|
||||
- #7455 `7f96671` [travis] Exit early when check-doc.py fails (MarcoFalke)
|
||||
- #7667 `56d2c4e` Move GetTempPath() to testutil (musalbas)
|
||||
- #7517 `f1ca891` test: script_error checking in script_invalid tests (laanwj)
|
||||
- #7684 `3d0dfdb` Extend tests (MarcoFalke)
|
||||
- #7697 `622fe6c` Tests: make prioritise_transaction.py more robust (sdaftuar)
|
||||
- #7709 `efde86b` Tests: fix missing import in mempool_packages (sdaftuar)
|
||||
- #7702 `29e1131` Add tests verifychain, lockunspent, getbalance, listsinceblock (MarcoFalke)
|
||||
- #7720 `3b4324b` rpc-test: Normalize assert() (MarcoFalke)
|
||||
- #7757 `26794d4` wallet: Wait for reindex to catch up (MarcoFalke)
|
||||
- #7764 `a65b36c` Don't run pruning.py twice (MarcoFalke)
|
||||
- #7773 `7c80e72` Fix comments in tests (dgbdrak)
|
||||
- #7489 `e9723cb` tests: Make proxy_test work on travis servers without IPv6 (laanwj)
|
||||
- #7801 `70ac71b` Remove misleading "errorString syntax" (MarcoFalke)
|
||||
- #7803 `401c65c` maxblocksinflight: Actually enable test (MarcoFalke)
|
||||
- #7802 `3bc71e1` httpbasics: Actually test second connection (MarcoFalke)
|
||||
- #7849 `ab8586e` tests: add varints_bitpatterns test (laanwj)
|
||||
- #7846 `491171f` Clean up lockorder data of destroyed mutexes (sipa)
|
||||
- #7853 `6ef5e00` py2: Unfiddle strings into bytes explicitly (MarcoFalke)
|
||||
- #7878 `53adc83` [test] bctest.py: Revert faa41ee (MarcoFalke)
|
||||
- #7798 `cabba24` [travis] Print the commit which was evaluated (MarcoFalke)
|
||||
- #7833 `b1bf511` tests: Check Content-Type header returned from RPC server (laanwj)
|
||||
- #7851 `fa9d86f` pull-tester: Don't mute zmq ImportError (MarcoFalke)
|
||||
- #7822 `0e6fd5e` Add listunspent() test for spendable/unspendable UTXO (jpdffonseca)
|
||||
- #7912 `59ad568` Tests: Fix deserialization of reject messages (sdaftuar)
|
||||
- #7941 `0ea3941` Fixing comment in script_test.json test case (Christewart)
|
||||
- #7807 `0ad1041` Fixed miner test values, gave constants for less error-prone values (instagibbs)
|
||||
- #7980 `88b77c7` Smartfees: Properly use ordered dict (MarcoFalke)
|
||||
- #7814 `77b637f` Switch to py3 (MarcoFalke)
|
||||
- #8030 `409a8a1` Revert fatal-ness of missing python-zmq (laanwj)
|
||||
- #8018 `3e90fe6` Autofind rpc tests --srcdir (jonasschnelli)
|
||||
- #8016 `5767e80` Fix multithread CScheduler and reenable test (paveljanik)
|
||||
- #7972 `423ca30` pull-tester: Run rpc test in parallel (MarcoFalke)
|
||||
- #8039 `69b3a6d` Bench: Add crypto hash benchmarks (laanwj)
|
||||
- #8041 `5b736dd` Fix bip9-softforks blockstore issue (MarcoFalke)
|
||||
- #7994 `1f01443` Add op csv tests to script_tests.json (Christewart)
|
||||
- #8038 `e2bf830` Various minor fixes (MarcoFalke)
|
||||
- #8072 `1b87e5b` Travis: 'make check' in parallel and verbose (theuni)
|
||||
- #8056 `8844ef1` Remove hardcoded "4 nodes" from test_framework (MarcoFalke)
|
||||
- #8047 `37f9a1f` Test_framework: Set wait-timeout for digibyted procs (MarcoFalke)
|
||||
- #8095 `6700cc9` Test framework: only cleanup on successful test runs (sdaftuar)
|
||||
- #8098 `06bd4f6` Test_framework: Append portseed to tmpdir (MarcoFalke)
|
||||
- #8104 `6ff2c8d` Add timeout to sync_blocks() and sync_mempools() (sdaftuar)
|
||||
- #8111 `61b8684` Benchmark SipHash (sipa)
|
||||
- #8107 `52b803e` Bench: Added base58 encoding/decoding benchmarks (yurizhykin)
|
||||
- #8115 `0026e0e` Avoid integer division in the benchmark inner-most loop (gmaxwell)
|
||||
- #8090 `a2df115` Adding P2SH(p2pkh) script test case (Christewart)
|
||||
- #7992 `ec45cc5` Extend #7956 with one more test (TheBlueMatt)
|
||||
- #8139 `ae5575b` Fix interrupted HTTP RPC connection workaround for Python 3.5+ (sipa)
|
||||
- #8164 `0f24eaf` [DigiByte-Tx] fix missing test fixtures, fix 32bit atoi issue (jonasschnelli)
|
||||
- #8166 `0b5279f` Src/test: Do not shadow local variables (paveljanik)
|
||||
- #8141 `44c1b1c` Continuing port of java comparison tool (mrbandrews)
|
||||
- #8201 `36b7400` fundrawtransaction: Fix race, assert amounts (MarcoFalke)
|
||||
- #8214 `ed2cd59` Mininode: fail on send_message instead of silent return (MarcoFalke)
|
||||
- #8215 `a072d1a` Don't use floating point in wallet tests (MarcoFalke)
|
||||
- #8066 `65c2058` Test_framework: Use different rpc_auth_pair for each node (MarcoFalke)
|
||||
- #8216 `0d41d70` Assert 'changePosition out of bounds' (MarcoFalke)
|
||||
- #8222 `961893f` Enable mempool consistency checks in unit tests (sipa)
|
||||
- #7751 `84370d5` test_framework: python3.4 authproxy compat (laanwj)
|
||||
- #7744 `d8e862a` test_framework: detect failure of digibyted startup (laanwj)
|
||||
- #8280 `115735d` Increase sync_blocks() timeouts in pruning.py (MarcoFalke)
|
||||
- #8340 `af9b7a9` Solve trivial merge conflict in p2p-segwit.py (MarcoFalke)
|
||||
- #8067 `3e4cf8f` Travis: use slim generic image, and some fixups (theuni)
|
||||
- #7951 `5c7df70` Test_framework: Properly print exception (MarcoFalke)
|
||||
- #8070 `7771aa5` Remove non-determinism which is breaking net_tests #8069 (EthanHeilman)
|
||||
- #8309 `bb2646a` Add wallet-hd test (MarcoFalke)
|
||||
- #8444 `cd0910b` Fix p2p-feefilter.py for changed tx relay behavior (sdaftuar)
|
||||
|
||||
### Mining
|
||||
|
||||
- #7507 `11c7699` Remove internal miner (Leviathn)
|
||||
- #7663 `c87f51e` Make the generate RPC call function for non-regtest (sipa)
|
||||
- #7671 `e2ebd25` Add generatetoaddress RPC to mine to an address (achow101)
|
||||
- #7935 `66ed450` Versionbits: GBT support (luke-jr)
|
||||
- #7600 `66db2d6` Select transactions using feerate-with-ancestors (sdaftuar)
|
||||
- #8295 `f5660d3` Mining-related fixups for 0.13.0 (sdaftuar)
|
||||
- #7796 `536b75e` Add support for negative fee rates, fixes `prioritizetransaction` (MarcoFalke)
|
||||
- #8362 `86edc20` Scale legacy sigop count in CreateNewBlock (sdaftuar)
|
||||
- #8489 `8b0eee6` Bugfix: Use pre-BIP141 sigops until segwit activates (GBT) (luke-jr)
|
||||
|
||||
### Documentation and miscellaneous
|
||||
|
||||
- #7423 `69e2a40` Add example for building with constrained resources (jarret)
|
||||
- #8254 `c2c69ed` Add OSX ZMQ requirement to QA readme (fanquake)
|
||||
- #8203 `377d131` Clarify documentation for running a tor node (nathaniel-mahieu)
|
||||
- #7428 `4b12266` Add example for listing ./configure flags (nathaniel-mahieu)
|
||||
- #7847 `3eae681` Add arch linux build example (mruddy)
|
||||
- #7968 `ff69aaf` Fedora build requirements (wtogami)
|
||||
- #8013 `fbedc09` Fedora build requirements, add gcc-c++ and fix typo (wtogami)
|
||||
- #8009 `fbd8478` Fixed invalid example paths in gitian-building.md (JeremyRand)
|
||||
- #8240 `63fbdbc` Mention Windows XP end of support in release notes (laanwj)
|
||||
- #8303 `5077d2c` Update bips.md for CSV softfork (fanquake)
|
||||
- #7789 `e0b3e19` Add note about using the Qt official binary installer (paveljanik)
|
||||
- #7791 `e30a5b0` Change Precise to Trusty in gitian-building.md (JeremyRand)
|
||||
- #7838 `8bb5d3d` Update gitian build guide to debian 8.4.0 (fanquake)
|
||||
- #7855 `b778e59` Replace precise with trusty (MarcoFalke)
|
||||
- #7975 `fc23fee` Update digibyte-core GitHub links (MarcoFalke)
|
||||
- #8034 `e3a8207` Add basic git squash workflow (fanquake)
|
||||
- #7813 `214ec0b` Update port in tor.md (MarcoFalke)
|
||||
- #8193 `37c9830` Use Debian 8.5 in the gitian-build guide (fanquake)
|
||||
- #8261 `3685e0c` Clarify help for `getblockchaininfo` (paveljanik)
|
||||
- #7185 `ea0f5a2` Note that reviewers should mention the id of the commits they reviewed (pstratem)
|
||||
- #7290 `c851d8d` [init] Add missing help for args (MarcoFalke)
|
||||
- #7281 `f9fd4c2` Improve CheckInputs() comment about sig verification (petertodd)
|
||||
- #7417 `1e06bab` Minor improvements to the release process (PRabahy)
|
||||
- #7444 `4cdbd42` Improve block validity/ConnectBlock() comments (petertodd)
|
||||
- #7527 `db2e1c0` Fix and cleanup listreceivedbyX documentation (instagibbs)
|
||||
- #7541 `b6e00af` Clarify description of blockindex (pinheadmz)
|
||||
- #7590 `f06af57` Improving wording related to Boost library requirements [updated] (jonathancross)
|
||||
- #7635 `0fa88ef` Add dependency info to test docs (elliotolds)
|
||||
- #7609 `3ba07bd` RPM spec file project (AliceWonderMiscreations)
|
||||
- #7850 `229a17c` Removed call to `TryCreateDirectory` from `GetDefaultDataDir` in `src/util.cpp` (alexreg)
|
||||
- #7888 `ec870e1` Prevector: fix 2 bugs in currently unreached code paths (kazcw)
|
||||
- #7922 `90653bc` CBase58Data::SetString: cleanse the full vector (kazcw)
|
||||
- #7881 `c4e8390` Update release process (laanwj)
|
||||
- #7952 `a9c8b74` Log invalid block hash to make debugging easier (paveljanik)
|
||||
- #7974 `8206835` More comments on the design of AttemptToEvictConnection (gmaxwell)
|
||||
- #7795 `47a7cfb` UpdateTip: log only one line at most per block (laanwj)
|
||||
- #8110 `e7e25ea` Add benchmarking notes (fanquake)
|
||||
- #8121 `58f0c92` Update implemented BIPs list (fanquake)
|
||||
- #8029 `58725ba` Simplify OS X build notes (fanquake)
|
||||
- #8143 `d46b8b5` comment nit: miners don't vote (instagibbs)
|
||||
- #8136 `22e0b35` Log/report in 10% steps during VerifyDB (jonasschnelli)
|
||||
- #8168 `d366185` util: Add ParseUInt32 and ParseUInt64 (laanwj)
|
||||
- #8178 `f7b1bfc` Add git and github tips and tricks to developer notes (sipa)
|
||||
- #8177 `67db011` developer notes: updates for C++11 (kazcw)
|
||||
- #8229 `8ccdac1` [Doc] Update OS X build notes for 10.11 SDK (fanquake)
|
||||
- #8233 `9f1807a` Mention Linux ARM executables in release process and notes (laanwj)
|
||||
- #7540 `ff46dd4` Rename OP_NOP3 to OP_CHECKSEQUENCEVERIFY (dgbdrak)
|
||||
- #8289 `26316ff` bash-completion: Adapt for 0.12 and 0.13 (roques)
|
||||
- #7453 `3dc3149` Missing patches from 0.12 (MarcoFalke)
|
||||
- #7113 `54a550b` Switch to a more efficient rolling Bloom filter (sipa)
|
||||
- #7257 `de9e5ea` Combine common error strings for different options so translations can be shared and reused (luke-jr)
|
||||
- #7304 `b8f485c` [contrib] Add clang-format-diff.py (MarcoFalke)
|
||||
- #7378 `e6f97ef` devtools: replace github-merge with python version (laanwj)
|
||||
- #7395 `0893705` devtools: show pull and commit information in github-merge (laanwj)
|
||||
- #7402 `6a5932b` devtools: github-merge get toplevel dir without extra whitespace (achow101)
|
||||
- #7425 `20a408c` devtools: Fix utf-8 support in messages for github-merge (laanwj)
|
||||
- #7632 `409f843` Delete outdated test-patches reference (Lewuathe)
|
||||
- #7662 `386f438` remove unused NOBLKS_VERSION_{START,END} constants (rat4)
|
||||
- #7737 `aa0d2b2` devtools: make github-merge.py use py3 (laanwj)
|
||||
- #7781 `55db5f0` devtools: Auto-set branch to merge to in github-merge (laanwj)
|
||||
- #7934 `f17032f` Improve rolling bloom filter performance and benchmark (sipa)
|
||||
- #8004 `2efe38b` signal handling: fReopenDebugLog and fRequestShutdown should be type sig_atomic_t (catilac)
|
||||
- #7713 `f6598df` Fixes for verify-commits script (petertodd)
|
||||
- #8412 `8360d5b` libconsensus: Expose a flag for BIP112 (jtimon)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- 21E14
|
||||
- accraze
|
||||
- Adam Brown
|
||||
- Alexander Regueiro
|
||||
- Alex Morcos
|
||||
- Alfie John
|
||||
- Alice Wonder
|
||||
- AlSzacrel
|
||||
- Andrew Chow
|
||||
- Andrés G. Aragoneses
|
||||
- Bob McElrath
|
||||
- BtcDrak
|
||||
- calebogden
|
||||
- Cédric Félizard
|
||||
- Chirag Davé
|
||||
- Chris Moore
|
||||
- Chris Stewart
|
||||
- Christian von Roques
|
||||
- Chris Wheeler
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- Daniel Cousens
|
||||
- Daniel Kraft
|
||||
- Denis Lukianov
|
||||
- Elias Rohrer
|
||||
- Elliot Olds
|
||||
- Eric Shaw
|
||||
- error10
|
||||
- Ethan Heilman
|
||||
- face
|
||||
- fanquake
|
||||
- Francesco 'makevoid' Canessa
|
||||
- fsb4000
|
||||
- Gavin Andresen
|
||||
- gladoscc
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- instagibbs
|
||||
- James O'Beirne
|
||||
- Jannes Faber
|
||||
- Jarret Dyrbye
|
||||
- Jeremy Rand
|
||||
- jloughry
|
||||
- jmacwhyte
|
||||
- Joao Fonseca
|
||||
- Johnson Lau
|
||||
- Jonas Nick
|
||||
- Jonas Schnelli
|
||||
- Jonathan Cross
|
||||
- João Barbosa
|
||||
- Jorge Timón
|
||||
- Kaz Wesley
|
||||
- Kefkius
|
||||
- kirkalx
|
||||
- Krzysztof Jurewicz
|
||||
- Leviathn
|
||||
- lewuathe
|
||||
- Luke Dashjr
|
||||
- Luv Khemani
|
||||
- Marcel Krüger
|
||||
- Marco Falke
|
||||
- Mark Friedenbach
|
||||
- Matt
|
||||
- Matt Bogosian
|
||||
- Matt Corallo
|
||||
- Matthew English
|
||||
- Matthew Zipkin
|
||||
- mb300sd
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Murch
|
||||
- Mustafa
|
||||
- Nathaniel Mahieu
|
||||
- Nicolas Dorier
|
||||
- Patrick Strateman
|
||||
- Paul Rabahy
|
||||
- paveljanik
|
||||
- Pavel Janík
|
||||
- Pavel Vasin
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Philip Kaufmann
|
||||
- Pieter Wuille
|
||||
- Prayag Verma
|
||||
- ptschip
|
||||
- Puru
|
||||
- randy-waterhouse
|
||||
- R E Broadley
|
||||
- Rusty Russell
|
||||
- Suhas Daftuar
|
||||
- Suriyaa Kudo
|
||||
- TheLazieR Yip
|
||||
- Thomas Kerin
|
||||
- Tom Harding
|
||||
- Tyler Hardin
|
||||
- UdjinM6
|
||||
- Warren Togami
|
||||
- Will Binns
|
||||
- Wladimir J. van der Laan
|
||||
- Yuri Zhykin
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
410
doc/release-notes/release-notes-0.13.1.md
Normal file
|
|
@ -0,0 +1,410 @@
|
|||
DigiByte Core version 0.13.1 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.13.1/>
|
||||
|
||||
This is a new minor version release, including activation parameters for the
|
||||
segwit softfork, various bugfixes and performance improvements, as well as
|
||||
updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a digibyte
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of DigiByte Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/digibyte/digibyte/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer version of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,
|
||||
but severe issues with the libc++ version on 10.7.x keep it from running reliably.
|
||||
0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Segregated witness soft fork
|
||||
----------------------------
|
||||
|
||||
Segregated witness (segwit) is a soft fork that, if activated, will
|
||||
allow transaction-producing software to separate (segregate) transaction
|
||||
signatures (witnesses) from the part of the data in a transaction that is
|
||||
covered by the txid. This provides several immediate benefits:
|
||||
|
||||
- **Elimination of unwanted transaction malleability:** Segregating the witness
|
||||
allows both existing and upgraded software to calculate the transaction
|
||||
identifier (txid) of transactions without referencing the witness, which can
|
||||
sometimes be changed by third-parties (such as miners) or by co-signers in a
|
||||
multisig spend. This solves all known cases of unwanted transaction
|
||||
malleability, which is a problem that makes programming DigiByte wallet
|
||||
software more difficult and which seriously complicates the design of smart
|
||||
contracts for DigiByte.
|
||||
|
||||
- **Capacity increase:** Segwit transactions contain new fields that are not
|
||||
part of the data currently used to calculate the size of a block, which
|
||||
allows a block containing segwit transactions to hold more data than allowed
|
||||
by the current maximum block size. Estimates based on the transactions
|
||||
currently found in blocks indicate that if all wallets switch to using
|
||||
segwit, the network will be able to support about 70% more transactions. The
|
||||
network will also be able to support more of the advanced-style payments
|
||||
(such as multisig) than it can support now because of the different weighting
|
||||
given to different parts of a transaction after segwit activates (see the
|
||||
following section for details).
|
||||
|
||||
- **Weighting data based on how it affects node performance:** Some parts of
|
||||
each DigiByte block need to be stored by nodes in order to validate future
|
||||
blocks; other parts of a block can be immediately forgotten (pruned) or used
|
||||
only for helping other nodes sync their copy of the block chain. One large
|
||||
part of the immediately prunable data are transaction signatures (witnesses),
|
||||
and segwit makes it possible to give a different "weight" to segregated
|
||||
witnesses to correspond with the lower demands they place on node resources.
|
||||
Specifically, each byte of a segregated witness is given a weight of 1, each
|
||||
other byte in a block is given a weight of 4, and the maximum allowed weight
|
||||
of a block is 4 million. Weighting the data this way better aligns the most
|
||||
profitable strategy for creating blocks with the long-term costs of block
|
||||
validation.
|
||||
|
||||
- **Signature covers value:** A simple improvement in the way signatures are
|
||||
generated in segwit simplifies the design of secure signature generators
|
||||
(such as hardware wallets), reduces the amount of data the signature
|
||||
generator needs to download, and allows the signature generator to operate
|
||||
more quickly. This is made possible by having the generator sign the amount
|
||||
of digibytes they think they are spending, and by having full nodes refuse to
|
||||
accept those signatures unless the amount of digibytes being spent is exactly
|
||||
the same as was signed. For non-segwit transactions, wallets instead had to
|
||||
download the complete previous transactions being spent for every payment
|
||||
they made, which could be a slow operation on hardware wallets and in other
|
||||
situations where bandwidth or computation speed was constrained.
|
||||
|
||||
- **Linear scaling of sighash operations:** In 2015 a block was produced that
|
||||
required about 25 seconds to validate on modern hardware because of the way
|
||||
transaction signature hashes are performed. Other similar blocks, or blocks
|
||||
that could take even longer to validate, can still be produced today. The
|
||||
problem that caused this can't be fixed in a soft fork without unwanted
|
||||
side-effects, but transactions that opt-in to using segwit will now use a
|
||||
different signature method that doesn't suffer from this problem and doesn't
|
||||
have any unwanted side-effects.
|
||||
|
||||
- **Increased security for multisig:** DigiByte addresses (both P2PKH addresses
|
||||
that start with a '1' and P2SH addresses that start with a '3') use a hash
|
||||
function known as RIPEMD-160. For P2PKH addresses, this provides about 160
|
||||
bits of security---which is beyond what cryptographers believe can be broken
|
||||
today. But because P2SH is more flexible, only about 80 bits of security is
|
||||
provided per address. Although 80 bits is very strong security, it is within
|
||||
the realm of possibility that it can be broken by a powerful adversary.
|
||||
Segwit allows advanced transactions to use the SHA256 hash function instead,
|
||||
which provides about 128 bits of security (that is 281 trillion times as
|
||||
much security as 80 bits and is equivalent to the maximum bits of security
|
||||
believed to be provided by DigiByte's choice of parameters for its Elliptic
|
||||
Curve Digital Security Algorithm [ECDSA].)
|
||||
|
||||
- **More efficient almost-full-node security** Satoshi Nakamoto's original
|
||||
DigiByte paper describes a method for allowing newly-started full nodes to
|
||||
skip downloading and validating some data from historic blocks that are
|
||||
protected by large amounts of proof of work. Unfortunately, Nakamoto's
|
||||
method can't guarantee that a newly-started node using this method will
|
||||
produce an accurate copy of DigiByte's current ledger (called the UTXO set),
|
||||
making the node vulnerable to falling out of consensus with other nodes.
|
||||
Although the problems with Nakamoto's method can't be fixed in a soft fork,
|
||||
Segwit accomplishes something similar to his original proposal: it makes it
|
||||
possible for a node to optionally skip downloading some blockchain data
|
||||
(specifically, the segregated witnesses) while still ensuring that the node
|
||||
can build an accurate copy of the UTXO set for the block chain with the most
|
||||
proof of work. Segwit enables this capability at the consensus layer, but
|
||||
note that DigiByte Core does not provide an option to use this capability as
|
||||
of this 0.13.1 release.
|
||||
|
||||
- **Script versioning:** Segwit makes it easy for future soft forks to allow
|
||||
DigiByte users to individually opt-in to almost any change in the DigiByte
|
||||
Script language when those users receive new transactions. Features
|
||||
currently being researched by DigiByte Core contributors that may use this
|
||||
capability include support for Schnorr signatures, which can improve the
|
||||
privacy and efficiency of multisig transactions (or transactions with
|
||||
multiple inputs), and Merklized Abstract Syntax Trees (MAST), which can
|
||||
improve the privacy and efficiency of scripts with two or more conditions.
|
||||
Other DigiByte community members are studying several other improvements
|
||||
that can be made using script versioning.
|
||||
|
||||
Activation for the segwit soft fork is being managed using BIP9
|
||||
versionbits. Segwit's version bit is bit 1, and nodes will begin
|
||||
tracking which blocks signal support for segwit at the beginning of the
|
||||
first retarget period after segwit's start date of 15 November 2016. If
|
||||
95% of blocks within a 2,016-block retarget period (about two weeks)
|
||||
signal support for segwit, the soft fork will be locked in. After
|
||||
another 2,016 blocks, segwit will activate.
|
||||
|
||||
For more information about segwit, please see the [segwit FAQ][], the
|
||||
[segwit wallet developers guide][] or BIPs [141][BIP141], [143][BIP143],
|
||||
[144][BIP144], and [145][BIP145]. If you're a miner or mining pool
|
||||
operator, please see the [versionbits FAQ][] for information about
|
||||
signaling support for a soft fork.
|
||||
|
||||
[Segwit FAQ]: https://digibyte.org/en/2016/01/26/segwit-benefits/
|
||||
[segwit wallet developers guide]: https://digibyte.org/en/segwit_wallet_dev/
|
||||
[BIP141]: https://github.com/digibyte/bips/blob/master/bip-0141.mediawiki
|
||||
[BIP143]: https://github.com/digibyte/bips/blob/master/bip-0143.mediawiki
|
||||
[BIP144]: https://github.com/digibyte/bips/blob/master/bip-0144.mediawiki
|
||||
[BIP145]: https://github.com/digibyte/bips/blob/master/bip-0145.mediawiki
|
||||
[versionbits FAQ]: https://digibyte.org/en/2016/06/08/version-bits-miners-faq/
|
||||
|
||||
|
||||
Null dummy soft fork
|
||||
-------------------
|
||||
|
||||
Combined with the segwit soft fork is an additional change that turns a
|
||||
long-existing network relay policy into a consensus rule. The
|
||||
`OP_CHECKMULTISIG` and `OP_CHECKMULTISIGVERIFY` opcodes consume an extra
|
||||
stack element ("dummy element") after signature validation. The dummy
|
||||
element is not inspected in any manner, and could be replaced by any
|
||||
value without invalidating the script.
|
||||
|
||||
Because any value can be used for this dummy element, it's possible for
|
||||
a third-party to insert data into other people's transactions, changing
|
||||
the transaction's txid (called transaction malleability) and possibly
|
||||
causing other problems.
|
||||
|
||||
Since DigiByte Core 0.10.0, nodes have defaulted to only relaying and
|
||||
mining transactions whose dummy element was a null value (0x00, also
|
||||
called OP_0). The null dummy soft fork turns this relay rule into a
|
||||
consensus rule both for non-segwit transactions and segwit transactions,
|
||||
so that this method of mutating transactions is permanently eliminated
|
||||
from the network.
|
||||
|
||||
Signaling for the null dummy soft fork is done by signaling support
|
||||
for segwit, and the null dummy soft fork will activate at the same time
|
||||
as segwit.
|
||||
|
||||
For more information, please see [BIP147][].
|
||||
|
||||
[BIP147]: https://github.com/digibyte/bips/blob/master/bip-0147.mediawiki
|
||||
|
||||
Low-level RPC changes
|
||||
---------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
|
||||
Linux ARM builds
|
||||
----------------
|
||||
|
||||
With the 0.13.0 release, pre-built Linux ARM binaries were added to the set of
|
||||
uploaded executables. Additional detail on the ARM architecture targeted by each
|
||||
is provided below.
|
||||
|
||||
The following extra files can be found in the download directory or torrent:
|
||||
|
||||
- `digibyte-${VERSION}-arm-linux-gnueabihf.tar.gz`: Linux binaries targeting
|
||||
the 32-bit ARMv7-A architecture.
|
||||
- `digibyte-${VERSION}-aarch64-linux-gnu.tar.gz`: Linux binaries targeting
|
||||
the 64-bit ARMv8-A architecture.
|
||||
|
||||
ARM builds are still experimental. If you have problems on a certain device or
|
||||
Linux distribution combination please report them on the bug tracker, it may be
|
||||
possible to resolve them. Note that the device you use must be (backward)
|
||||
compatible with the architecture targeted by the binary that you use.
|
||||
For example, a Raspberry Pi 2 Model B or Raspberry Pi 3 Model B (in its 32-bit
|
||||
execution state) device, can run the 32-bit ARMv7-A targeted binary. However,
|
||||
no model of Raspberry Pi 1 device can run either binary because they are all
|
||||
ARMv6 architecture devices that are not compatible with ARMv7-A or ARMv8-A.
|
||||
|
||||
Note that Android is not considered ARM Linux in this context. The executables
|
||||
are not expected to work out of the box on Android.
|
||||
|
||||
|
||||
0.13.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### Consensus
|
||||
- #8636 `9dfa0c8` Implement NULLDUMMY softfork (BIP147) (jl2012)
|
||||
- #8848 `7a34a46` Add NULLDUMMY verify flag in digibyteconsensus.h (jl2012)
|
||||
- #8937 `8b66659` Define start and end time for segwit deployment (sipa)
|
||||
|
||||
### RPC and other APIs
|
||||
- #8581 `526d2b0` Drop misleading option in importprunedfunds (MarcoFalke)
|
||||
- #8699 `a5ec248` Remove createwitnessaddress RPC command (jl2012)
|
||||
- #8780 `794b007` Deprecate getinfo (MarcoFalke)
|
||||
- #8832 `83ad563` Throw JSONRPCError when utxo set can not be read (MarcoFalke)
|
||||
- #8884 `b987348` getblockchaininfo help: pruneheight is the lowest, not highest, block (luke-jr)
|
||||
- #8858 `3f508ed` rpc: Generate auth cookie in hex instead of base64 (laanwj)
|
||||
- #8951 `7c2bf4b` RPC/Mining: getblocktemplate: Update and fix formatting of help (luke-jr)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8611 `a9429ca` Reduce default number of blocks to check at startup (sipa)
|
||||
- #8634 `3e80ab7` Add policy: null signature for failed CHECK(MULTI)SIG (jl2012)
|
||||
- #8525 `1672225` Do not store witness txn in rejection cache (sipa)
|
||||
- #8499 `9777fe1` Add several policy limits and disable uncompressed keys for segwit scripts (jl2012)
|
||||
- #8526 `0027672` Make non-minimal OP_IF/NOTIF argument non-standard for P2WSH (jl2012)
|
||||
- #8524 `b8c79a0` Precompute sighashes (sipa)
|
||||
- #8651 `b8c79a0` Predeclare PrecomputedTransactionData as struct (sipa)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8740 `42ea51a` No longer send local address in addrMe (laanwj)
|
||||
- #8427 `69d1cd2` Ignore `notfound` P2P messages (laanwj)
|
||||
- #8573 `4f84082` Set jonasschnellis dns-seeder filter flag (jonasschnelli)
|
||||
- #8712 `23feab1` Remove maxuploadtargets recommended minimum (jonasschnelli)
|
||||
- #8862 `7ae6242` Fix a few cases where messages were sent after requested disconnect (theuni)
|
||||
- #8393 `fe1975a` Support for compact blocks together with segwit (sipa)
|
||||
- #8282 `2611ad7` Feeler connections to increase online addrs in the tried table (EthanHeilman)
|
||||
- #8612 `2215c22` Check for compatibility with download in FindNextBlocksToDownload (sipa)
|
||||
- #8606 `bbf379b` Fix some locks (sipa)
|
||||
- #8594 `ab295bb` Do not add random inbound peers to addrman (gmaxwell)
|
||||
- #8940 `5b4192b` Add x9 service bit support to dnsseed.bluematt.me, seed.digibytestats.com (TheBlueMatt, cdecker)
|
||||
- #8944 `685e4c7` Remove bogus assert on number of oubound connections. (TheBlueMatt)
|
||||
- #8949 `0dbc48a` Be more agressive in getting connections to peers with relevant services (gmaxwell)
|
||||
|
||||
### Build system
|
||||
- #8293 `fa5b249` Allow building libdigibyteconsensus without any univalue (luke-jr)
|
||||
- #8492 `8b0bdd3` Allow building bench_digibyte by itself (luke-jr)
|
||||
- #8563 `147003c` Add configure check for -latomic (ajtowns)
|
||||
- #8626 `ea51b0f` Berkeley DB v6 compatibility fix (netsafe)
|
||||
- #8520 `75f2065` Remove check for `openssl/ec.h` (laanwj)
|
||||
|
||||
### GUI
|
||||
- #8481 `d9f0d4e` Fix minimize and close bugs (adlawren)
|
||||
- #8487 `a37cec5` Persist the datadir after option reset (achow101)
|
||||
- #8697 `41fd852` Fix op order to append first alert (rodasmith)
|
||||
- #8678 `8e03382` Fix UI bug that could result in paying unexpected fee (jonasschnelli)
|
||||
- #8911 `7634d8e` Translate all files, even if wallet disabled (laanwj)
|
||||
- #8540 `1db3352` Fix random segfault when closing "Choose data directory" dialog (laanwj)
|
||||
- #7579 `f1c0d78` Show network/chain errors in the GUI (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #8443 `464dedd` Trivial cleanup of HD wallet changes (jonasschnelli)
|
||||
- #8539 `cb07f19` CDB: fix debug output (crowning-)
|
||||
- #8664 `091cdeb` Fix segwit-related wallet bug (sdaftuar)
|
||||
- #8693 `c6a6291` Add witness address to address book (instagibbs)
|
||||
- #8765 `6288659` Remove "unused" ThreadFlushWalletDB from removeprunedfunds (jonasschnelli)
|
||||
|
||||
### Tests and QA
|
||||
- #8713 `ae8c7df` create_cache: Delete temp dir when done (MarcoFalke)
|
||||
- #8716 `e34374e` Check legacy wallet as well (MarcoFalke)
|
||||
- #8750 `d6ebe13` Refactor RPCTestHandler to prevent TimeoutExpired (MarcoFalke)
|
||||
- #8652 `63462c2` remove root test directory for RPC tests (yurizhykin)
|
||||
- #8724 `da94272` walletbackup: Sync blocks inside the loop (MarcoFalke)
|
||||
- #8400 `bea02dc` enable rpcbind_test (yurizhykin)
|
||||
- #8417 `f70be14` Add walletdump RPC test (including HD- & encryption-tests) (jonasschnelli)
|
||||
- #8419 `a7aa3cc` Enable size accounting in mining unit tests (sdaftuar)
|
||||
- #8442 `8bb1efd` Rework hd wallet dump test (MarcoFalke)
|
||||
- #8528 `3606b6b` Update p2p-segwit.py to reflect correct behavior (instagibbs)
|
||||
- #8531 `a27cdd8` abandonconflict: Use assert_equal (MarcoFalke)
|
||||
- #8667 `6b07362` Fix SIGHASH_SINGLE bug in test_framework SignatureHash (jl2012)
|
||||
- #8673 `03b0196` Fix obvious assignment/equality error in test (JeremyRubin)
|
||||
- #8739 `cef633c` Fix broken sendcmpct test in p2p-compactblocks.py (sdaftuar)
|
||||
- #8418 `ff893aa` Add tests for compact blocks (sdaftuar)
|
||||
- #8803 `375437c` Ping regularly in p2p-segwit.py to keep connection alive (jl2012)
|
||||
- #8827 `9bbe66e` Split up slow RPC calls to avoid pruning test timeouts (sdaftuar)
|
||||
- #8829 `2a8bca4` Add digibyte-tx JSON tests (jnewbery)
|
||||
- #8834 `1dd1783` blockstore: Switch to dumb dbm (MarcoFalke)
|
||||
- #8835 `d87227d` nulldummy.py: Don't run unused code (MarcoFalke)
|
||||
- #8836 `eb18cc1` digibyte-util-test.py should fail if the output file is empty (jnewbery)
|
||||
- #8839 `31ab2f8` Avoid ConnectionResetErrors during RPC tests (laanwj)
|
||||
- #8840 `cbc3fe5` Explicitly set encoding to utf8 when opening text files (laanwj)
|
||||
- #8841 `3e4abb5` Fix nulldummy test (jl2012)
|
||||
- #8854 `624a007` Fix race condition in p2p-compactblocks test (sdaftuar)
|
||||
- #8857 `1f60d45` mininode: Only allow named args in wait_until (MarcoFalke)
|
||||
- #8860 `0bee740` util: Move wait_digibyteds() into stop_nodes() (MarcoFalke)
|
||||
- #8882 `b73f065` Fix race conditions in p2p-compactblocks.py and sendheaders.py (sdaftuar)
|
||||
- #8904 `cc6f551` Fix compact block shortids for a test case (dagurval)
|
||||
|
||||
### Documentation
|
||||
- #8754 `0e2c6bd` Target protobuf 2.6 in OS X build notes. (fanquake)
|
||||
- #8461 `b17a3f9` Document return value of networkhashps for getmininginfo RPC endpoint (jlopp)
|
||||
- #8512 `156e305` Corrected JSON typo on setban of net.cpp (sevastos)
|
||||
- #8683 `8a7d7ff` Fix incorrect file name digibyte.qrc (digibytesSG)
|
||||
- #8891 `5e0dd9e` Update bips.md for Segregated Witness (fanquake)
|
||||
- #8545 `863ae74` Update git-subtree-check.sh README (MarcoFalke)
|
||||
- #8607 `486650a` Fix doxygen off-by-one comments, fix typos (MarcoFalke)
|
||||
- #8560 `c493f43` Fix two VarInt examples in serialize.h (cbarcenas)
|
||||
- #8737 `084cae9` UndoReadFromDisk works on undo files (rev), not on block files (paveljanik)
|
||||
- #8625 `0a35573` Clarify statement about parallel jobs in rpc-tests.py (isle2983)
|
||||
- #8624 `0e6d753` build: Mention curl (MarcoFalke)
|
||||
- #8604 `b09e13c` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj)
|
||||
- #8939 `06d15fb` Update implemented bips for 0.13.1 (sipa)
|
||||
|
||||
### Miscellaneous
|
||||
- #8742 `d31ac72` Specify Protobuf version 2 in paymentrequest.proto (fanquake)
|
||||
- #8414,#8558,#8676,#8700,#8701,#8702 Add missing copyright headers (isle2983, kazcw)
|
||||
- #8899 `4ed2627` Fix wake from sleep issue with Boost 1.59.0 (fanquake)
|
||||
- #8817 `bcf3806` update digibyte-tx to output witness data (jnewbery)
|
||||
- #8513 `4e5fc31` Fix a type error that would not compile on OSX. (JeremyRubin)
|
||||
- #8392 `30eac2d` Fix several node initialization issues (sipa)
|
||||
- #8548 `305d8ac` Use `__func__` to get function name for output printing (MarcoFalke)
|
||||
- #8291 `a987431` [util] CopyrightHolders: Check for untranslated substitution (MarcoFalke)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- adlawren
|
||||
- Alexey Vesnin
|
||||
- Anders Øyvind Urke-Sætre
|
||||
- Andrew Chow
|
||||
- Anthony Towns
|
||||
- BtcDrak
|
||||
- Chris Stewart
|
||||
- Christian Barcenas
|
||||
- Christian Decker
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- Dagur Valberg Johannsson
|
||||
- David A. Harding
|
||||
- Eric Lombrozo
|
||||
- Ethan Heilman
|
||||
- fanquake
|
||||
- Gaurav Rana
|
||||
- Gregory Maxwell
|
||||
- instagibbs
|
||||
- isle2983
|
||||
- Jameson Lopp
|
||||
- Jeremy Rubin
|
||||
- jnewbery
|
||||
- Johnson Lau
|
||||
- Jonas Schnelli
|
||||
- jonnynewbs
|
||||
- Justin Camarena
|
||||
- Kaz Wesley
|
||||
- leijurv
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Marty Jones
|
||||
- Matt Corallo
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- mruddy
|
||||
- Pavel Janík
|
||||
- Pieter Wuille
|
||||
- rodasmith
|
||||
- Sev
|
||||
- Suhas Daftuar
|
||||
- whythat
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
178
doc/release-notes/release-notes-0.13.2.md
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
DigiByte Core version 0.13.2 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.13.2/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
an OS initially released in 2001. This means that not even critical security
|
||||
updates will be released anymore. Without security updates, using a digibyte
|
||||
wallet on a XP machine is irresponsible at least.
|
||||
|
||||
In addition to that, with 0.12.x there have been varied reports of DigiByte Core
|
||||
randomly crashing on Windows XP. It is [not clear](https://github.com/digibyte/digibyte/issues/7681#issuecomment-217439891)
|
||||
what the source of these crashes is, but it is likely that upstream
|
||||
libraries such as Qt are no longer being tested on XP.
|
||||
|
||||
We do not have time nor resources to provide support for an OS that is
|
||||
end-of-life. From 0.13.0 on, Windows XP is no longer supported. Users are
|
||||
suggested to upgrade to a newer version of Windows, or install an alternative OS
|
||||
that is supported.
|
||||
|
||||
No attempt is made to prevent installing or running the software on Windows XP,
|
||||
you can still do so at your own risk, but do not expect it to work: do not
|
||||
report issues about Windows XP to the issue tracker.
|
||||
|
||||
From 0.13.1 onwards OS X 10.7 is no longer supported. 0.13.0 was intended to work on 10.7+,
|
||||
but severe issues with the libc++ version on 10.7.x keep it from running reliably.
|
||||
0.13.1 now requires 10.8+, and will communicate that to 10.7 users, rather than crashing unexpectedly.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Change to wallet handling of mempool rejection
|
||||
-----------------------------------------------
|
||||
|
||||
When a newly created transaction failed to enter the mempool due to
|
||||
the limits on chains of unconfirmed transactions the sending RPC
|
||||
calls would return an error. The transaction would still be queued
|
||||
in the wallet and, once some of the parent transactions were
|
||||
confirmed, broadcast after the software was restarted.
|
||||
|
||||
This behavior has been changed to return success and to reattempt
|
||||
mempool insertion at the same time transaction rebroadcast is
|
||||
attempted, avoiding a need for a restart.
|
||||
|
||||
Transactions in the wallet which cannot be accepted into the mempool
|
||||
can be abandoned with the previously existing abandontransaction RPC
|
||||
(or in the GUI via a context menu on the transaction).
|
||||
|
||||
|
||||
0.13.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### Consensus
|
||||
- #9293 `e591c10` [0.13 Backport #9053] IBD using chainwork instead of height and not using header timestamp (gmaxwell)
|
||||
- #9053 `5b93eee` IBD using chainwork instead of height and not using header timestamps (gmaxwell)
|
||||
|
||||
### RPC and other APIs
|
||||
- #8845 `1d048b9` Don't return the address of a P2SH of a P2SH (jnewbery)
|
||||
- #9041 `87fbced` keypoololdest denote Unix epoch, not GMT (s-matthew-english)
|
||||
- #9122 `f82c81b` fix getnettotals RPC description about timemillis (visvirial)
|
||||
- #9042 `5bcb05d` [rpc] ParseHash: Fail when length is not 64 (MarcoFalke)
|
||||
- #9194 `f26dab7` Add option to return non-segwit serialization via rpc (instagibbs)
|
||||
- #9347 `b711390` [0.13.2] wallet/rpc backports (MarcoFalke)
|
||||
- #9292 `c365556` Complain when unknown rpcserialversion is specified (sipa)
|
||||
- #9322 `49a612f` [qa] Don't set unknown rpcserialversion (MarcoFalke)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8357 `ce0d817` [mempool] Fix relaypriority calculation error (maiiz)
|
||||
- #9267 `0a4aa87` [0.13 backport #9239] Disable fee estimates for a confirm target of 1 block (morcos)
|
||||
- #9196 `0c09d9f` Send tip change notification from invalidateblock (ryanofsky)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8995 `9ef3875` Add missing cs_main lock to ::GETBLOCKTXN processing (TheBlueMatt)
|
||||
- #9234 `94531b5` torcontrol: Explicitly request RSA1024 private key (laanwj)
|
||||
- #8637 `2cad5db` Compact Block Tweaks (rebase of #8235) (sipa)
|
||||
- #9058 `286e548` Fixes for p2p-compactblocks.py test timeouts on travis (#8842) (ryanofsky)
|
||||
- #8865 `4c71fc4` Decouple peer-processing-logic from block-connection-logic (TheBlueMatt)
|
||||
- #9117 `6fe3981` net: don't send feefilter messages before the version handshake is complete (theuni)
|
||||
- #9188 `ca1fd75` Make orphan parent fetching ask for witnesses (gmaxwell)
|
||||
- #9052 `3a3bcbf` Use RelevantServices instead of node_network in AttemptToEvict (gmaxwell)
|
||||
- #9048 `9460771` [0.13 backport #9026] Fix handling of invalid compact blocks (sdaftuar)
|
||||
- #9357 `03b6f62` [0.13 backport #9352] Attempt reconstruction from all compact block announcements (sdaftuar)
|
||||
- #9189 `b96a8f7` Always add default_witness_commitment with GBT client support (sipa)
|
||||
- #9253 `28d0f22` Fix calculation of number of bound sockets to use (TheBlueMatt)
|
||||
- #9199 `da5a16b` Always drop the least preferred HB peer when adding a new one (gmaxwell)
|
||||
|
||||
### Build system
|
||||
- #9169 `d1b4da9` build: fix qt5.7 build under macOS (theuni)
|
||||
- #9326 `a0f7ece` Update for OpenSSL 1.1 API (gmaxwell)
|
||||
- #9224 `396c405` Prevent FD_SETSIZE error building on OpenBSD (ivdsangen)
|
||||
|
||||
### GUI
|
||||
- #8972 `6f86b53` Make warnings label selectable (jonasschnelli) (MarcoFalke)
|
||||
- #9185 `6d70a73` Fix coincontrol sort issue (jonasschnelli)
|
||||
- #9094 `5f3a12c` Use correct conversion function for boost::path datadir (laanwj)
|
||||
- #8908 `4a974b2` Update digibyte-qt.desktop (s-matthew-english)
|
||||
- #9190 `dc46b10` Plug many memory leaks (laanwj)
|
||||
|
||||
### Wallet
|
||||
- #9290 `35174a0` Make RelayWalletTransaction attempt to AcceptToMemoryPool (gmaxwell)
|
||||
- #9295 `43bcfca` Bugfix: Fundrawtransaction: don't terminate when keypool is empty (jonasschnelli)
|
||||
- #9302 `f5d606e` Return txid even if ATMP fails for new transaction (sipa)
|
||||
- #9262 `fe39f26` Prefer coins that have fewer ancestors, sanity check txn before ATMP (instagibbs)
|
||||
|
||||
### Tests and QA
|
||||
- #9159 `eca9b46` Wait for specific block announcement in p2p-compactblocks (ryanofsky)
|
||||
- #9186 `dccdc3a` Fix use-after-free in scheduler tests (laanwj)
|
||||
- #9168 `3107280` Add assert_raises_message to check specific error message (mrbandrews)
|
||||
- #9191 `29435db` 0.13.2 Backports (MarcoFalke)
|
||||
- #9077 `1d4c884` Increase wallet-dump RPC timeout (ryanofsky)
|
||||
- #9098 `ecd7db5` Handle zombies and cluttered tmpdirs (MarcoFalke)
|
||||
- #8927 `387ec9d` Add script tests for FindAndDelete in pre-segwit and segwit scripts (jl2012)
|
||||
- #9200 `eebc699` bench: Fix subtle counting issue when rescaling iteration count (laanwj)
|
||||
|
||||
### Miscellaneous
|
||||
- #8838 `094848b` Calculate size and weight of block correctly in CreateNewBlock() (jnewbery)
|
||||
- #8920 `40169dc` Set minimum required Boost to 1.47.0 (fanquake)
|
||||
- #9251 `a710a43` Improvement of documentation of command line parameter 'whitelist' (wodry)
|
||||
- #8932 `106da69` Allow digibyte-tx to create v2 transactions (dgbdrak)
|
||||
- #8929 `12428b4` add software-properties-common (sigwo)
|
||||
- #9120 `08d1c90` bug: Missed one "return false" in recent refactoring in #9067 (UdjinM6)
|
||||
- #9067 `f85ee01` Fix exit codes (UdjinM6)
|
||||
- #9340 `fb987b3` [0.13] Update secp256k1 subtree (MarcoFalke)
|
||||
- #9229 `b172377` Remove calls to getaddrinfo_a (TheBlueMatt)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- BtcDrak
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- instagibbs
|
||||
- Ivo van der Sangen
|
||||
- jnewbery
|
||||
- Johnson Lau
|
||||
- Jonas Schnelli
|
||||
- Luke Dashjr
|
||||
- maiiz
|
||||
- MarcoFalke
|
||||
- Masahiko Hyuga
|
||||
- Matt Corallo
|
||||
- matthias
|
||||
- mrbandrews
|
||||
- Pavel Janík
|
||||
- Pieter Wuille
|
||||
- randy-waterhouse
|
||||
- Russell Yanofsky
|
||||
- S. Matthew English
|
||||
- Steven
|
||||
- Suhas Daftuar
|
||||
- UdjinM6
|
||||
- Wladimir J. van der Laan
|
||||
- wodry
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
873
doc/release-notes/release-notes-0.14.0.md
Normal file
|
|
@ -0,0 +1,873 @@
|
|||
DigiByte Core version 0.14.0 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.14.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Performance Improvements
|
||||
--------------
|
||||
|
||||
Validation speed and network propagation performance have been greatly
|
||||
improved, leading to much shorter sync and initial block download times.
|
||||
|
||||
- The script signature cache has been reimplemented as a "cuckoo cache",
|
||||
allowing for more signatures to be cached and faster lookups.
|
||||
- Assumed-valid blocks have been introduced which allows script validation to
|
||||
be skipped for ancestors of known-good blocks, without changing the security
|
||||
model. See below for more details.
|
||||
- In some cases, compact blocks are now relayed before being fully validated as
|
||||
per BIP152.
|
||||
- P2P networking has been refactored with a focus on concurrency and
|
||||
throughput. Network operations are no longer bottlenecked by validation. As a
|
||||
result, block fetching is several times faster than previous releases in many
|
||||
cases.
|
||||
- The UTXO cache now claims unused mempool memory. This speeds up initial block
|
||||
download as UTXO lookups are a major bottleneck there, and there is no use for
|
||||
the mempool at that stage.
|
||||
|
||||
|
||||
Manual Pruning
|
||||
--------------
|
||||
|
||||
DigiByte Core has supported automatically pruning the blockchain since 0.11. Pruning
|
||||
the blockchain allows for significant storage space savings as the vast majority of
|
||||
the downloaded data can be discarded after processing so very little of it remains
|
||||
on the disk.
|
||||
|
||||
Manual block pruning can now be enabled by setting `-prune=1`. Once that is set,
|
||||
the RPC command `pruneblockchain` can be used to prune the blockchain up to the
|
||||
specified height or timestamp.
|
||||
|
||||
`getinfo` Deprecated
|
||||
--------------------
|
||||
|
||||
The `getinfo` RPC command has been deprecated. Each field in the RPC call
|
||||
has been moved to another command's output with that command also giving
|
||||
additional information that `getinfo` did not provide. The following table
|
||||
shows where each field has been moved to:
|
||||
|
||||
|`getinfo` field | Moved to |
|
||||
|------------------|-------------------------------------------|
|
||||
`"version"` | `getnetworkinfo()["version"]`
|
||||
`"protocolversion"`| `getnetworkinfo()["protocolversion"]`
|
||||
`"walletversion"` | `getwalletinfo()["walletversion"]`
|
||||
`"balance"` | `getwalletinfo()["balance"]`
|
||||
`"blocks"` | `getblockchaininfo()["blocks"]`
|
||||
`"timeoffset"` | `getnetworkinfo()["timeoffset"]`
|
||||
`"connections"` | `getnetworkinfo()["connections"]`
|
||||
`"proxy"` | `getnetworkinfo()["networks"][0]["proxy"]`
|
||||
`"difficulty"` | `getblockchaininfo()["difficulty"]`
|
||||
`"testnet"` | `getblockchaininfo()["chain"] == "test"`
|
||||
`"keypoololdest"` | `getwalletinfo()["keypoololdest"]`
|
||||
`"keypoolsize"` | `getwalletinfo()["keypoolsize"]`
|
||||
`"unlocked_until"` | `getwalletinfo()["unlocked_until"]`
|
||||
`"paytxfee"` | `getwalletinfo()["paytxfee"]`
|
||||
`"relayfee"` | `getnetworkinfo()["relayfee"]`
|
||||
`"errors"` | `getnetworkinfo()["warnings"]`
|
||||
|
||||
ZMQ On Windows
|
||||
--------------
|
||||
|
||||
Previously the ZeroMQ notification system was unavailable on Windows
|
||||
due to various issues with ZMQ. These have been fixed upstream and
|
||||
now ZMQ can be used on Windows. Please see [this document](https://github.com/digibyte/digibyte/blob/master/doc/zmq.md) for
|
||||
help with using ZMQ in general.
|
||||
|
||||
Nested RPC Commands in Debug Console
|
||||
------------------------------------
|
||||
|
||||
The ability to nest RPC commands has been added to the debug console. This
|
||||
allows users to have the output of a command become the input to another
|
||||
command without running the commands separately.
|
||||
|
||||
The nested RPC commands use bracket syntax (i.e. `getwalletinfo()`) and can
|
||||
be nested (i.e. `getblock(getblockhash(1))`). Simple queries can be
|
||||
done with square brackets where object values are accessed with either an
|
||||
array index or a non-quoted string (i.e. `listunspent()[0][txid]`). Both
|
||||
commas and spaces can be used to separate parameters in both the bracket syntax
|
||||
and normal RPC command syntax.
|
||||
|
||||
Network Activity Toggle
|
||||
-----------------------
|
||||
|
||||
A RPC command and GUI toggle have been added to enable or disable all p2p
|
||||
network activity. The network status icon in the bottom right hand corner
|
||||
is now the GUI toggle. Clicking the icon will either enable or disable all
|
||||
p2p network activity. If network activity is disabled, the icon will
|
||||
be grayed out with an X on top of it.
|
||||
|
||||
Additionally the `setnetworkactive` RPC command has been added which does
|
||||
the same thing as the GUI icon. The command takes one boolean parameter,
|
||||
`true` enables networking and `false` disables it.
|
||||
|
||||
Out-of-sync Modal Info Layer
|
||||
----------------------------
|
||||
|
||||
When DigiByte Core is out-of-sync on startup, a semi-transparent information
|
||||
layer will be shown over top of the normal display. This layer contains
|
||||
details about the current sync progress and estimates the amount of time
|
||||
remaining to finish syncing. This layer can also be hidden and subsequently
|
||||
unhidden by clicking on the progress bar at the bottom of the window.
|
||||
|
||||
Support for JSON-RPC Named Arguments
|
||||
------------------------------------
|
||||
|
||||
Commands sent over the JSON-RPC interface and through the `digibyte-cli` binary
|
||||
can now use named arguments. This follows the [JSON-RPC specification](http://www.jsonrpc.org/specification)
|
||||
for passing parameters by-name with an object.
|
||||
|
||||
`digibyte-cli` has been updated to support this by parsing `name=value` arguments
|
||||
when the `-named` option is given.
|
||||
|
||||
Some examples:
|
||||
|
||||
src/digibyte-cli -named help command="help"
|
||||
src/digibyte-cli -named getblockhash height=0
|
||||
src/digibyte-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
|
||||
src/digibyte-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
|
||||
|
||||
The order of arguments doesn't matter in this case. Named arguments are also
|
||||
useful to leave out arguments that should stay at their default value. The
|
||||
rarely-used arguments `comment` and `comment_to` to `sendtoaddress`, for example, can
|
||||
be left out. However, this is not yet implemented for many RPC calls, this is
|
||||
expected to land in a later release.
|
||||
|
||||
The RPC server remains fully backwards compatible with positional arguments.
|
||||
|
||||
Opt into RBF When Sending
|
||||
-------------------------
|
||||
|
||||
A new startup option, `-walletrbf`, has been added to allow users to have all
|
||||
transactions sent opt into RBF support. The default value for this option is
|
||||
currently `false`, so transactions will not opt into RBF by default. The new
|
||||
`bumpfee` RPC can be used to replace transactions that opt into RBF.
|
||||
|
||||
Sensitive Data Is No Longer Stored In Debug Console History
|
||||
-----------------------------------------------------------
|
||||
|
||||
The debug console maintains a history of previously entered commands that can be
|
||||
accessed by pressing the Up-arrow key so that users can easily reuse previously
|
||||
entered commands. Commands which have sensitive information such as passphrases and
|
||||
private keys will now have a `(...)` in place of the parameters when accessed through
|
||||
the history.
|
||||
|
||||
Retaining the Mempool Across Restarts
|
||||
-------------------------------------
|
||||
|
||||
The mempool will be saved to the data directory prior to shutdown
|
||||
to a `mempool.dat` file. This file preserves the mempool so that when the node
|
||||
restarts the mempool can be filled with transactions without waiting for new transactions
|
||||
to be created. This will also preserve any changes made to a transaction through
|
||||
commands such as `prioritisetransaction` so that those changes will not be lost.
|
||||
|
||||
Final Alert
|
||||
-----------
|
||||
|
||||
The Alert System was [disabled and deprecated](https://digibyte.org/en/alert/2016-11-01-alert-retirement) in DigiByte Core 0.12.1 and removed in 0.13.0.
|
||||
The Alert System was retired with a maximum sequence final alert which causes any nodes
|
||||
supporting the Alert System to display a static hard-coded "Alert Key Compromised" message which also
|
||||
prevents any other alerts from overriding it. This final alert is hard-coded into this release
|
||||
so that all old nodes receive the final alert.
|
||||
|
||||
GUI Changes
|
||||
-----------
|
||||
|
||||
- After resetting the options by clicking the `Reset Options` button
|
||||
in the options dialog or with the `-resetguioptions` startup option,
|
||||
the user will be prompted to choose the data directory again. This
|
||||
is to ensure that custom data directories will be kept after the
|
||||
option reset which clears the custom data directory set via the choose
|
||||
datadir dialog.
|
||||
|
||||
- Multiple peers can now be selected in the list of peers in the debug
|
||||
window. This allows for users to ban or disconnect multiple peers
|
||||
simultaneously instead of banning them one at a time.
|
||||
|
||||
- An indicator has been added to the bottom right hand corner of the main
|
||||
window to indicate whether the wallet being used is a HD wallet. This
|
||||
icon will be grayed out with an X on top of it if the wallet is not a
|
||||
HD wallet.
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- `importprunedfunds` only accepts two required arguments. Some versions accept
|
||||
an optional third arg, which was always ignored. Make sure to never pass more
|
||||
than two arguments.
|
||||
|
||||
- The first boolean argument to `getaddednodeinfo` has been removed. This is
|
||||
an incompatible change.
|
||||
|
||||
- RPC command `getmininginfo` loses the "testnet" field in favor of the more
|
||||
generic "chain" (which has been present for years).
|
||||
|
||||
- A new RPC command `preciousblock` has been added which marks a block as
|
||||
precious. A precious block will be treated as if it were received earlier
|
||||
than a competing block.
|
||||
|
||||
- A new RPC command `importmulti` has been added which receives an array of
|
||||
JSON objects representing the intention of importing a public key, a
|
||||
private key, an address and script/p2sh
|
||||
|
||||
- Use of `getrawtransaction` for retrieving confirmed transactions with unspent
|
||||
outputs has been deprecated. For now this will still work, but in the future
|
||||
it may change to only be able to retrieve information about transactions in
|
||||
the mempool or if `txindex` is enabled.
|
||||
|
||||
- A new RPC command `getmemoryinfo` has been added which will return information
|
||||
about the memory usage of DigiByte Core. This was added in conjunction with
|
||||
optimizations to memory management. See [Pull #8753](https://github.com/digibyte/digibyte/pull/8753)
|
||||
for more information.
|
||||
|
||||
- A new RPC command `bumpfee` has been added which allows replacing an
|
||||
unconfirmed wallet transaction that signaled RBF (see the `-walletrbf`
|
||||
startup option above) with a new transaction that pays a higher fee, and
|
||||
should be more likely to get confirmed quickly.
|
||||
|
||||
HTTP REST Changes
|
||||
-----------------
|
||||
|
||||
- UTXO set query (`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>
|
||||
/.../<txid>-<n>.<bin|hex|json>`) responses were changed to return status
|
||||
code `HTTP_BAD_REQUEST` (400) instead of `HTTP_INTERNAL_SERVER_ERROR` (500)
|
||||
when requests contain invalid parameters.
|
||||
|
||||
Minimum Fee Rate Policies
|
||||
-------------------------
|
||||
|
||||
Since the changes in 0.12 to automatically limit the size of the mempool and improve the performance of block creation in mining code it has not been important for relay nodes or miners to set `-minrelaytxfee`. With this release the following concepts that were tied to this option have been separated out:
|
||||
- incremental relay fee used for calculating BIP 125 replacement and mempool limiting. (1000 satoshis/kB)
|
||||
- calculation of threshold for a dust output. (effectively 3 * 1000 satoshis/kB)
|
||||
- minimum fee rate of a package of transactions to be included in a block created by the mining code. If miners wish to set this minimum they can use the new `-blockmintxfee` option. (defaults to 1000 satoshis/kB)
|
||||
|
||||
The `-minrelaytxfee` option continues to exist but is recommended to be left unset.
|
||||
|
||||
Fee Estimation Changes
|
||||
----------------------
|
||||
|
||||
- Since 0.13.2 fee estimation for a confirmation target of 1 block has been
|
||||
disabled. The fee slider will no longer be able to choose a target of 1 block.
|
||||
This is only a minor behavior change as there was often insufficient
|
||||
data for this target anyway. `estimatefee 1` will now always return -1 and
|
||||
`estimatesmartfee 1` will start searching at a target of 2.
|
||||
|
||||
- The default target for fee estimation is changed to 6 blocks in both the GUI
|
||||
(previously 25) and for RPC calls (previously 2).
|
||||
|
||||
Removal of Priority Estimation
|
||||
------------------------------
|
||||
|
||||
- Estimation of "priority" needed for a transaction to be included within a target
|
||||
number of blocks has been removed. The RPC calls are deprecated and will either
|
||||
return -1 or 1e24 appropriately. The format for `fee_estimates.dat` has also
|
||||
changed to no longer save these priority estimates. It will automatically be
|
||||
converted to the new format which is not readable by prior versions of the
|
||||
software.
|
||||
|
||||
- Support for "priority" (coin age) transaction sorting for mining is
|
||||
considered deprecated in Core and will be removed in the next major version.
|
||||
This is not to be confused with the `prioritisetransaction` RPC which will remain
|
||||
supported by Core for adding fee deltas to transactions.
|
||||
|
||||
P2P connection management
|
||||
--------------------------
|
||||
|
||||
- Peers manually added through the `-addnode` option or `addnode` RPC now have their own
|
||||
limit of eight connections which does not compete with other inbound or outbound
|
||||
connection usage and is not subject to the limitation imposed by the `-maxconnections`
|
||||
option.
|
||||
|
||||
- New connections to manually added peers are performed more quickly.
|
||||
|
||||
Introduction of assumed-valid blocks
|
||||
-------------------------------------
|
||||
|
||||
- A significant portion of the initial block download time is spent verifying
|
||||
scripts/signatures. Although the verification must pass to ensure the security
|
||||
of the system, no other result from this verification is needed: If the node
|
||||
knew the history of a given block were valid it could skip checking scripts
|
||||
for its ancestors.
|
||||
|
||||
- A new configuration option 'assumevalid' is provided to express this knowledge
|
||||
to the software. Unlike the 'checkpoints' in the past this setting does not
|
||||
force the use of a particular chain: chains that are consistent with it are
|
||||
processed quicker, but other chains are still accepted if they'd otherwise
|
||||
be chosen as best. Also unlike 'checkpoints' the user can configure which
|
||||
block history is assumed true, this means that even outdated software can
|
||||
sync more quickly if the setting is updated by the user.
|
||||
|
||||
- Because the validity of a chain history is a simple objective fact it is much
|
||||
easier to review this setting. As a result the software ships with a default
|
||||
value adjusted to match the current chain shortly before release. The use
|
||||
of this default value can be disabled by setting -assumevalid=0
|
||||
|
||||
Fundrawtransaction change address reuse
|
||||
----------------------------------------
|
||||
|
||||
- Before 0.14, `fundrawtransaction` was by default wallet stateless. In
|
||||
almost all cases `fundrawtransaction` does add a change-output to the
|
||||
outputs of the funded transaction. Before 0.14, the used keypool key was
|
||||
never marked as change-address key and directly returned to the keypool
|
||||
(leading to address reuse). Before 0.14, calling `getnewaddress`
|
||||
directly after `fundrawtransaction` did generate the same address as
|
||||
the change-output address.
|
||||
|
||||
- Since 0.14, fundrawtransaction does reserve the change-output-key from
|
||||
the keypool by default (optional by setting `reserveChangeKey`, default =
|
||||
`true`)
|
||||
|
||||
- Users should also consider using `getrawchangeaddress()` in conjunction
|
||||
with `fundrawtransaction`'s `changeAddress` option.
|
||||
|
||||
Unused mempool memory used by coincache
|
||||
----------------------------------------
|
||||
|
||||
- Before 0.14, memory reserved for mempool (using the `-maxmempool` option)
|
||||
went unused during initial block download, or IBD. In 0.14, the UTXO DB cache
|
||||
(controlled with the `-dbcache` option) borrows memory from the mempool
|
||||
when there is extra memory available. This may result in an increase in
|
||||
memory usage during IBD for those previously relying on only the `-dbcache`
|
||||
option to limit memory during that time.
|
||||
|
||||
0.14.0 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, minor refactors and string updates. For convenience
|
||||
in locating the code changes and accompanying discussion, both the pull request
|
||||
and git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #8421 `b77bb95` httpserver: drop boost dependency (theuni)
|
||||
- #8638 `f061415` rest.cpp: change `HTTP_INTERNAL_SERVER_ERROR` to `HTTP_BAD_REQUEST` (djpnewton)
|
||||
- #8272 `91990ee` Make the dummy argument to getaddednodeinfo optional (sipa)
|
||||
- #8722 `bb843ad` digibyte-cli: More detailed error reporting (laanwj)
|
||||
- #6996 `7f71a3c` Add preciousblock RPC (sipa)
|
||||
- #8788 `97c7f73` Give RPC commands more information about the RPC request (jonasschnelli)
|
||||
- #7948 `5d2c8e5` Augment getblockchaininfo bip9\_softforks data (mruddy)
|
||||
- #8980 `0e22855` importmulti: Avoid using boost::variant::operator!=, which is only in newer boost versions (luke-jr)
|
||||
- #9025 `4d8558a` Getrawtransaction should take a bool for verbose (jnewbery)
|
||||
- #8811 `5754e03` Add support for JSON-RPC named arguments (laanwj)
|
||||
- #9520 `2456a83` Deprecate non-txindex getrawtransaction and better warning (sipa)
|
||||
- #9518 `a65ced1` Return height of last block pruned by pruneblockchain RPC (ryanofsky)
|
||||
- #9222 `7cb024e` Add 'subtractFeeFromAmount' option to 'fundrawtransaction' (dooglus)
|
||||
- #8456 `2ef52d3` Simplified `bumpfee` command (mrbandrews)
|
||||
- #9516 `727a798` Bug-fix: listsinceblock: use fork point as reference for blocks in reorg'd chains (kallewoof)
|
||||
- #9640 `7bfb770` Bumpfee: bugfixes for error handling and feerate calculation (sdaftuar)
|
||||
- #9673 `8d6447e` Set correct metadata on bumpfee wallet transactions (ryanofsky)
|
||||
- #9650 `40f7e27` Better handle invalid parameters to signrawtransaction (TheBlueMatt)
|
||||
- #9682 `edc9e63` Require timestamps for importmulti keys (ryanofsky)
|
||||
- #9108 `d8e8b06` Use importmulti timestamp when importing watch only keys (on top of #9682) (ryanofsky)
|
||||
- #9756 `7a93af8` Return error when importmulti called with invalid address (ryanofsky)
|
||||
- #9778 `ad168ef` Add two hour buffer to manual pruning (morcos)
|
||||
- #9761 `9828f9a` Use 2 hour grace period for key timestamps in importmulti rescans (ryanofsky)
|
||||
- #9474 `48d7e0d` Mark the minconf parameter to move as ignored (sipa)
|
||||
- #9619 `861cb0c` Bugfix: RPC/Mining: GBT should return 1 MB sizelimit before segwit activates (luke-jr)
|
||||
- #9773 `9072395` Return errors from importmulti if complete rescans are not successful (ryanofsky)
|
||||
|
||||
### Block and transaction handling
|
||||
- #8391 `37d83bb` Consensus: Remove ISM (NicolasDorier)
|
||||
- #8365 `618c9dd` Treat high-sigop transactions as larger rather than rejecting them (sipa)
|
||||
- #8814 `14b7b3f` wallet, policy: ParameterInteraction: Don't allow 0 fee (MarcoFalke)
|
||||
- #8515 `9bdf526` A few mempool removal optimizations (sipa)
|
||||
- #8448 `101c642` Store mempool and prioritization data to disk (sipa)
|
||||
- #7730 `3c03dc2` Remove priority estimation (morcos)
|
||||
- #9111 `fb15610` Remove unused variable `UNLIKELY_PCT` from fees.h (fanquake)
|
||||
- #9133 `434e683` Unset fImporting for loading mempool (morcos)
|
||||
- #9179 `b9a87b4` Set `DEFAULT_LIMITFREERELAY` = 0 kB/minute (MarcoFalke)
|
||||
- #9239 `3fbf079` Disable fee estimates for 1-block target (morcos)
|
||||
- #7562 `1eef038` Bump transaction version default to 2 (dgbdrak)
|
||||
- #9313,#9367 If we don't allow free txs, always send a fee filter (morcos)
|
||||
- #9346 `b99a093` Batch construct batches (sipa)
|
||||
- #9262 `5a70572` Prefer coins that have fewer ancestors, sanity check txn before ATMP (instagibbs)
|
||||
- #9288 `1ce7ede` Fix a bug if the min fee is 0 for FeeFilterRounder (morcos)
|
||||
- #9395 `0fc1c31` Add test for `-walletrejectlongchains` (morcos)
|
||||
- #9107 `7dac1e5` Safer modify new coins (morcos)
|
||||
- #9312 `a72f76c` Increase mempool expiry time to 2 weeks (morcos)
|
||||
- #8610 `c252685` Share unused mempool memory with coincache (sipa)
|
||||
- #9138 `f646275` Improve fee estimation (morcos)
|
||||
- #9408 `46b249e` Allow shutdown during LoadMempool, dump only when necessary (jonasschnelli)
|
||||
- #9310 `8c87f17` Assert FRESH validity in CCoinsViewCache::BatchWrite (ryanofsky)
|
||||
- #7871 `e2e624d` Manual block file pruning (mrbandrews)
|
||||
- #9507 `0595042` Fix use-after-free in CTxMemPool::removeConflicts() (sdaftuar)
|
||||
- #9380 `dd98f04` Separate different uses of minimum fees (morcos)
|
||||
- #9596 `71148b8` bugfix save feeDelta instead of priorityDelta in DumpMempool (morcos)
|
||||
- #9371 `4a1dc35` Notify on removal (morcos)
|
||||
- #9519 `9b4d267` Exclude RBF replacement txs from fee estimation (morcos)
|
||||
- #8606 `e2a1a1e` Fix some locks (sipa)
|
||||
- #8681 `6898213` Performance Regression Fix: Pre-Allocate txChanged vector (JeremyRubin)
|
||||
- #8223 `744d265` c++11: Use std::unique\_ptr for block creation (domob1812)
|
||||
- #9125 `7490ae8` Make CBlock a vector of shared\_ptr of CTransactions (sipa)
|
||||
- #8930 `93566e0` Move orphan processing to ActivateBestChain (TheBlueMatt)
|
||||
- #8580 `46904ee` Make CTransaction actually immutable (sipa)
|
||||
- #9240 `a1dcf2e` Remove txConflicted (morcos)
|
||||
- #8589 `e8cfe1e` Inline CTxInWitness inside CTxIn (sipa)
|
||||
- #9349 `2db4cbc` Make CScript (and prevector) c++11 movable (sipa)
|
||||
- #9252 `ce5c1f4` Release cs\_main before calling ProcessNewBlock, or processing headers (cmpctblock handling) (sdaftuar)
|
||||
- #9283 `869781c` A few more CTransactionRef optimizations (sipa)
|
||||
- #9499 `9c9af5a` Use recent-rejects, orphans, and recently-replaced txn for compact-block-reconstruction (TheBlueMatt)
|
||||
- #9813 `3972a8e` Read/write mempool.dat as a binary (paveljanik)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #8128 `1030fa7` Turn net structures into dumb storage classes (theuni)
|
||||
- #8282 `026c6ed` Feeler connections to increase online addrs in the tried table (EthanHeilman)
|
||||
- #8462 `53f8f22` Move AdvertiseLocal debug output to net category (Mirobit)
|
||||
- #8612 `84decb5` Check for compatibility with download in FindNextBlocksToDownload (sipa)
|
||||
- #8594 `5b2ea29` Do not add random inbound peers to addrman (gmaxwell)
|
||||
- #8085 `6423116` Begin encapsulation (theuni)
|
||||
- #8715 `881d7ea` only delete CConnman if it's been created (theuni)
|
||||
- #8707 `f07424a` Fix maxuploadtarget setting (theuni)
|
||||
- #8661 `d2e4655` Do not set an addr time penalty when a peer advertises itself (gmaxwell)
|
||||
- #8822 `9bc6a6b` Consistent checksum handling (laanwj)
|
||||
- #8936 `1230890` Report NodeId in misbehaving debug (rebroad)
|
||||
- #8968 `3cf496d` Don't hold cs\_main when calling ProcessNewBlock from a cmpctblock (TheBlueMatt)
|
||||
- #9002 `e1d1f57` Make connect=0 disable automatic outbound connections (gmaxwell)
|
||||
- #9050 `fcf61b8` Make a few values immutable, and use deterministic randomness for the localnonce (theuni)
|
||||
- #8969 `3665483` Decouple peer-processing-logic from block-connection-logic (#2) (TheBlueMatt)
|
||||
- #8708 `c8c572f` have CConnman handle message sending (theuni)
|
||||
- #8709 `1e50d22` Allow filterclear messages for enabling TX relay only (rebroad)
|
||||
- #9045 `9f554e0` Hash P2P messages as they are received instead of at process-time (TheBlueMatt)
|
||||
- #9026 `dc6b940` Fix handling of invalid compact blocks (sdaftuar)
|
||||
- #8996 `ab914a6` Network activity toggle (luke-jr)
|
||||
- #9131 `62af164` fNetworkActive is not protected by a lock, use an atomic (jonasschnelli)
|
||||
- #8872 `0c577f2` Remove block-request logic from INV message processing (TheBlueMatt)
|
||||
- #8690 `791b58d` Do not fully sort all nodes for addr relay (sipa)
|
||||
- #9128 `76fec09` Decouple CConnman and message serialization (theuni)
|
||||
- #9226 `3bf06e9` Remove fNetworkNode and pnodeLocalHost (gmaxwell)
|
||||
- #9352 `a7f7651` Attempt reconstruction from all compact block announcements (sdaftuar)
|
||||
- #9319 `a55716a` Break addnode out from the outbound connection limits (gmaxwell)
|
||||
- #9261 `2742568` Add unstored orphans with rejected parents to recentRejects (morcos)
|
||||
- #9441 `8b66bf7` Massive speedup. Net locks overhaul (theuni)
|
||||
- #9375 `3908fc4` Relay compact block messages prior to full block connection (TheBlueMatt)
|
||||
- #9400 `8a445c5` Set peers as HB peers upon full block validation (instagibbs)
|
||||
- #9561 `6696b46` Wake message handling thread when we receive a new block (TheBlueMatt)
|
||||
- #9535 `82274c0` Split CNode::cs\_vSend: message processing and message sending (TheBlueMatt)
|
||||
- #9606 `3f9f962` Consistently use GetTimeMicros() for inactivity checks (sdaftuar)
|
||||
- #9594 `fd70211` Send final alert message to older peers after connecting (gmaxwell)
|
||||
- #9626 `36966a1` Clean up a few CConnman cs\_vNodes/CNode things (TheBlueMatt)
|
||||
- #9609 `4966917` Fix remaining net assertions (theuni)
|
||||
- #9671 `7821db3` Fix super-unlikely race introduced in 236618061a445d2cb11e72 (TheBlueMatt)
|
||||
- #9730 `33f3b21` Remove bitseed.xf2.org form the dns seed list (jonasschnelli)
|
||||
- #9698 `2447c10` Fix socket close race (theuni)
|
||||
- #9708 `a06ede9` Clean up all known races/platform-specific UB at the time PR was opened (TheBlueMatt)
|
||||
- #9715 `b08656e` Disconnect peers which we do not receive VERACKs from within 60 sec (TheBlueMatt)
|
||||
- #9720 `e87ce95` Fix banning and disallow sending messages before receiving verack (theuni)
|
||||
- #9268 `09c4fd1` Fix rounding privacy leak introduced in #9260 (TheBlueMatt)
|
||||
- #9075 `9346f84` Decouple peer-processing-logic from block-connection-logic (#3) (TheBlueMatt)
|
||||
- #8688 `047ded0` Move static global randomizer seeds into CConnman (sipa)
|
||||
- #9289 `d9ae1ce` net: drop boost::thread\_group (theuni)
|
||||
|
||||
### Validation
|
||||
- #9014 `d04aeba` Fix block-connection performance regression (TheBlueMatt)
|
||||
- #9299 `d52ce89` Remove no longer needed check for premature v2 txs (morcos)
|
||||
- #9273 `b68685a` Remove unused `CDiskBlockPos*` argument from ProcessNewBlock (TheBlueMatt)
|
||||
- #8895 `b83264d` Better SigCache Implementation (JeremyRubin)
|
||||
- #9490 `e126d0c` Replace FindLatestBefore used by importmulti with FindEarliestAtLeast (gmaxwell)
|
||||
- #9484 `812714f` Introduce assumevalid setting to skip validation presumed valid scripts (gmaxwell)
|
||||
- #9511 `7884956` Don't overwrite validation state with corruption check (morcos)
|
||||
- #9765 `1e92e04` Harden against mistakes handling invalid blocks (sdaftuar)
|
||||
- #9779 `3c02b95` Update nMinimumChainWork and defaultAssumeValid (gmaxwell)
|
||||
- #8524 `19b0f33` Precompute sighashes (sipa)
|
||||
- #9791 `1825a03` Avoid VLA in hash.h (sipa)
|
||||
|
||||
### Build system
|
||||
- #8238 `6caf3ee` ZeroMQ 4.1.5 && ZMQ on Windows (fanquake)
|
||||
- #8520 `b40e19c` Remove check for `openssl/ec.h` (laanwj)
|
||||
- #8617 `de07fdc` Include instructions to extract Mac OS X SDK on Linux using 7zip and SleuthKit (luke-jr)
|
||||
- #8566 `7b98895` Easy to use gitian building script (achow101)
|
||||
- #8604 `f256843` build,doc: Update for 0.13.0+ and OpenBSD 5.9 (laanwj)
|
||||
- #8640 `2663e51` depends: Remove Qt46 package (fanquake)
|
||||
- #8645 `8ea4440` Remove unused Qt 4.6 patch (droark)
|
||||
- #8608 `7e9ab95` Install manpages via make install, also add some autogenerated manpages (nomnomdgb)
|
||||
- #8781 `ca69ef4` contrib: delete `qt_translations.py` (MarcoFalke)
|
||||
- #8783 `64dc645` share: remove qt/protobuf.pri (MarcoFalke)
|
||||
- #8423 `3166dff` depends: expat 2.2.0, ccache 3.3.1, fontconfig 2.12.1 (fanquake)
|
||||
- #8791 `b694b0d` travis: cross-mac: explicitly enable gui (MarcoFalke)
|
||||
- #8820 `dc64141` depends: Fix Qt compilation with Xcode 8 (fanquake)
|
||||
- #8730 `489a6ab` depends: Add libevent compatibility patch for windows (laanwj)
|
||||
- #8819 `c841816` depends: Boost 1.61.0 (fanquake)
|
||||
- #8826 `f560d95` Do not include `env_win.cc` on non-Windows systems (paveljanik)
|
||||
- #8948 `e077e00` Reorder Windows gitian build order to match Linux (Michagogo)
|
||||
- #8568 `078900d` new var `DIST_CONTRIB` adds useful things for packagers from contrib (nomnomdgb)
|
||||
- #9114 `21e6c6b` depends: Set `OSX_MIN_VERSION` to 10.8 (fanquake)
|
||||
- #9140 `018a4eb` Bugfix: Correctly replace generated headers and fail cleanly (luke-jr)
|
||||
- #9156 `a8b2a82` Add compile and link options echo to configure (jonasschnelli)
|
||||
- #9393 `03d85f6` Include cuckoocache header in Makefile (MarcoFalke)
|
||||
- #9420 `bebe369` Fix linker error when configured with --enable-lcov (droark)
|
||||
- #9412 `53442af` Fix 'make deploy' for OSX (jonasschnelli)
|
||||
- #9475 `7014506` Let autoconf detect presence of `EVP_MD_CTX_new` (luke-jr)
|
||||
- #9513 `bbf193f` Fix qt distdir builds (theuni)
|
||||
- #9471 `ca615e6` depends: libevent 2.1.7rc (fanquake)
|
||||
- #9468 `f9117f2` depends: Dependency updates for 0.14.0 (fanquake)
|
||||
- #9469 `01c4576` depends: Qt 5.7.1 (fanquake)
|
||||
- #9574 `5ac6687` depends: Fix QT build on OSX (fanquake)
|
||||
- #9646 `720b579` depends: Fix cross build for qt5.7 (theuni)
|
||||
- #9705 `6a55515` Add options to override BDB cflags/libs (laanwj)
|
||||
- #8249 `4e1567a` Enable (and check for) 64-bit ASLR on Windows (laanwj)
|
||||
- #9758 `476cc47` Selectively suppress deprecation warnings (jonasschnelli)
|
||||
- #9783 `6d61a2b` release: bump gitian descriptors for a new 0.14 package cache (theuni)
|
||||
- #9789 `749fe95` build: add --enable-werror and warn on vla's (theuni)
|
||||
- #9831 `99fd85c` build: force a c++ standard to be specified (theuni)
|
||||
|
||||
### GUI
|
||||
- #8192 `c503863` Remove URLs from About dialog translations (fanquake)
|
||||
- #8540 `36404ae` Fix random segfault when closing "Choose data directory" dialog (laanwj)
|
||||
- #8517 `2468292` Show wallet HD state in statusbar (jonasschnelli)
|
||||
- #8463 `62a5a8a` Remove Priority from coincontrol dialog (MarcoFalke)
|
||||
- #7579 `0606f95` Show network/chain errors in the GUI (jonasschnelli)
|
||||
- #8583 `c19f8a4` Show XTHIN in GUI (rebroad)
|
||||
- #7783 `4335d5a` RPC-Console: support nested commands and simple value queries (jonasschnelli)
|
||||
- #8672 `6052d50` Show transaction size in transaction details window (Cocosoft)
|
||||
- #8777 `fec6af7` WalletModel: Expose disablewallet (MarcoFalke)
|
||||
- #8371 `24f72e9` Add out-of-sync modal info layer (jonasschnelli)
|
||||
- #8885 `b2fec4e` Fix ban from qt console (theuni)
|
||||
- #8821 `bf8e68a` sync-overlay: Don't block during reindex (MarcoFalke)
|
||||
- #8906 `088d1f4` sync-overlay: Don't show progress twice (MarcoFalke)
|
||||
- #8918 `47ace42` Add "Copy URI" to payment request context menu (luke-jr)
|
||||
- #8925 `f628d9a` Display minimum ping in debug window (rebroad)
|
||||
- #8774 `3e942a7` Qt refactors to better abstract wallet access (luke-jr)
|
||||
- #8985 `7b1bfa3` Use pindexBestHeader instead of setBlockIndexCandidates for NotifyHeaderTip() (jonasschnelli)
|
||||
- #8989 `d2143dc` Overhaul smart-fee slider, adjust default confirmation target (jonasschnelli)
|
||||
- #9043 `273bde3` Return useful error message on ATMP failure (MarcoFalke)
|
||||
- #9088 `4e57824` Reduce ambiguity of warning message (rebroad)
|
||||
- #8874 `e984730` Multiple Selection for peer and ban tables (achow101)
|
||||
- #9145 `924745d` Make network disabled icon 50% opaque (MarcoFalke)
|
||||
- #9130 `ac489b2` Mention the new network toggle functionality in the tooltip (paveljanik)
|
||||
- #9218 `4d955fc` Show progress overlay when clicking spinner icon (laanwj)
|
||||
- #9280 `e15660c` Show ModalOverlay by pressing the progress bar, allow hiding (jonasschnelli)
|
||||
- #9296 `fde7d99` Fix missed change to WalletTx structure (morcos)
|
||||
- #9266 `2044e37` Bugfix: Qt/RPCConsole: Put column enum in the right places (luke-jr)
|
||||
- #9255 `9851a84` layoutAboutToChange signal is called layoutAboutToBeChanged (laanwj)
|
||||
- #9330 `47e6a19` Console: add security warning (jonasschnelli)
|
||||
- #9329 `db45ad8` Console: allow empty arguments (jonasschnelli)
|
||||
- #8877 `6dc4c43` Qt RPC console: history sensitive-data filter, and saving input line when browsing history (luke-jr)
|
||||
- #9462 `649cf5f` Do not translate tilde character (MarcoFalke)
|
||||
- #9457 `123ea73` Select more files for translation (MarcoFalke)
|
||||
- #9413 `fd7d8c7` CoinControl: Allow non-wallet owned change addresses (jonasschnelli)
|
||||
- #9461 `b250686` Improve progress display during headers-sync and peer-finding (jonasschnelli)
|
||||
- #9588 `5086452` Use nPowTargetSpacing constant (MarcoFalke)
|
||||
- #9637 `d9e4d1d` Fix transaction details output-index to reflect vout index (jonasschnelli)
|
||||
- #9718 `36f9d3a` Qt/Intro: Various fixes (luke-jr)
|
||||
- #9735 `ec66d06` devtools: Handle Qt formatting characters edge-case in update-translations.py (laanwj)
|
||||
- #9755 `a441db0` Bugfix: Qt/Options: Restore persistent "restart required" notice (luke-jr)
|
||||
- #9817 `7d75a5a` Fix segfault crash when shutdown the GUI in disablewallet mode (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #8152 `b9c1cd8` Remove `CWalletDB*` parameter from CWallet::AddToWallet (pstratem)
|
||||
- #8432 `c7e05b3` Make CWallet::fFileBacked private (pstratem)
|
||||
- #8445 `f916700` Move CWallet::setKeyPool to private section of CWallet (pstratem)
|
||||
- #8564 `0168019` Remove unused code/conditions in ReadAtCursor (jonasschnelli)
|
||||
- #8601 `37ac678` Add option to opt into full-RBF when sending funds (rebase, original by petertodd) (laanwj)
|
||||
- #8494 `a5b20ed` init, wallet: ParameterInteraction() iff wallet enabled (MarcoFalke)
|
||||
- #8760 `02ac669` init: Get rid of some `ENABLE_WALLET` (MarcoFalke)
|
||||
- #8696 `a1f8d3e` Wallet: Remove last external reference to CWalletDB (pstratem)
|
||||
- #8768 `886e8c9` init: Get rid of fDisableWallet (MarcoFalke)
|
||||
- #8486 `ab0b411` Add high transaction fee warnings (MarcoFalke)
|
||||
- #8851 `940748b` Move key derivation logic from GenerateNewKey to DeriveNewChildKey (pstratem)
|
||||
- #8287 `e10af96` Set fLimitFree = true (MarcoFalke)
|
||||
- #8928 `c587577` Fix init segfault where InitLoadWallet() calls ATMP before genesis (TheBlueMatt)
|
||||
- #7551 `f2d7056` Add importmulti RPC call (pedrobranco)
|
||||
- #9016 `0dcb888` Return useful error message on ATMP failure (instagibbs)
|
||||
- #8753 `f8723d2` Locked memory manager (laanwj)
|
||||
- #8828 `a4fd8df` Move CWalletDB::ReorderTransactions to CWallet (pstratem)
|
||||
- #8977 `6a1343f` Refactor wallet/init interaction (Reaccept wtx, flush thread) (jonasschnelli)
|
||||
- #9036 `ed0cc50` Change default confirm target from 2 to 6 (laanwj)
|
||||
- #9071 `d1871da` Declare wallet.h functions inline (sipa)
|
||||
- #9132 `f54e460` Make strWalletFile const (jonasschnelli)
|
||||
- #9141 `5ea5e04` Remove unnecessary calls to CheckFinalTx (jonasschnelli)
|
||||
- #9165 `c01f16a` SendMoney: use already-calculated balance (instagibbs)
|
||||
- #9311 `a336d13` Flush wallet after abandontransaction (morcos)
|
||||
- #8717 `38e4887` Addition of ImmatureCreditCached to MarkDirty() (spencerlievens)
|
||||
- #9446 `510c0d9` SetMerkleBranch: remove unused code, remove cs\_main lock requirement (jonasschnelli)
|
||||
- #8776 `2a524b8` Wallet refactoring leading up to multiwallet (luke-jr)
|
||||
- #9465 `a7d55c9` Do not perform ECDSA signing in the fee calculation inner loop (gmaxwell)
|
||||
- #9404 `12e3112` Smarter coordination of change and fee in CreateTransaction (morcos)
|
||||
- #9377 `fb75cd0` fundrawtransaction: Keep change-output keys by default, make it optional (jonasschnelli)
|
||||
- #9578 `923dc44` Add missing mempool lock for CalculateMemPoolAncestors (TheBlueMatt)
|
||||
- #9227 `02464da` Make nWalletDBUpdated atomic to avoid a potential race (pstratem)
|
||||
- #9764 `f8af89a` Prevent "overrides a member function but is not marked 'override'" warnings (laanwj)
|
||||
- #9771 `e43a585` Add missing cs\_wallet lock that triggers new lock held assertion (ryanofsky)
|
||||
- #9316 `3097ea4` Disable free transactions when relay is disabled (MarcoFalke)
|
||||
- #9615 `d2c9e4d` Wallet incremental fee (morcos)
|
||||
- #9760 `40c754c` Remove importmulti always-true check (ryanofsky)
|
||||
|
||||
### Tests and QA
|
||||
- #8270 `6e5e5ab` Tests: Use portable #! in python scripts (/usr/bin/env) (ChoHag)
|
||||
- #8534,#8504 Remove java comparison tool (laanwj,MarcoFalke)
|
||||
- #8482 `740cff5` Use single cache dir for chains (MarcoFalke)
|
||||
- #8450 `21857d2` Replace `rpc_wallet_tests.cpp` with python RPC unit tests (pstratem)
|
||||
- #8671 `ddc3080` Minimal fix to slow prevector tests as stopgap measure (JeremyRubin)
|
||||
- #8680 `666eaf0` Address Travis spurious failures (theuni)
|
||||
- #8789 `e31a43c` pull-tester: Only print output when failed (MarcoFalke)
|
||||
- #8810 `14e8f99` tests: Add exception error message for JSONRPCException (laanwj)
|
||||
- #8830 `ef0801b` test: Add option to run digibyte-util-test.py manually (jnewbery)
|
||||
- #8881 `e66cc1d` Add some verbose logging to digibyte-util-test.py (jnewbery)
|
||||
- #8922 `0329511` Send segwit-encoded blocktxn messages in p2p-compactblocks (TheBlueMatt)
|
||||
- #8873 `74dc388` Add microbenchmarks to profile more code paths (ryanofsky)
|
||||
- #9032 `6a8be7b` test: Add format-dependent comparison to bctest (laanwj)
|
||||
- #9023 `774db92` Add logging to digibyte-util-test.py (jnewbery)
|
||||
- #9065 `c9bdf9a` Merge `doc/unit-tests.md` into `src/test/README.md` (laanwj)
|
||||
- #9069 `ed64bce` Clean up bctest.py and digibyte-util-test.py (jnewbery)
|
||||
- #9095 `b8f43e3` test: Fix test\_random includes (MarcoFalke)
|
||||
- #8894 `faec09b` Testing: Include fRelay in mininode version messages (jnewbery)
|
||||
- #9097 `e536499` Rework `sync_*` and preciousblock.py (MarcoFalke)
|
||||
- #9049 `71bc39e` Remove duplicatable duplicate-input check from CheckTransaction (TheBlueMatt)
|
||||
- #9136 `b422913` sync\_blocks cleanup (ryanofsky)
|
||||
- #9151 `4333b1c` proxy\_test: Calculate hardcoded port numbers (MarcoFalke)
|
||||
- #9206 `e662d28` Make test constant consistent with consensus.h (dgbdrak)
|
||||
- #9139 `0de7fd3` Change sync\_blocks to pick smarter maxheight (on top of #9196) (ryanofsky)
|
||||
- #9100 `97ec6e5` tx\_valid: re-order inputs to how they are encoded (dcousens)
|
||||
- #9202 `e56cf67` bench: Add support for measuring CPU cycles (laanwj)
|
||||
- #9223 `5412c08` unification of Bloom filter representation (s-matthew-english)
|
||||
- #9257 `d7ba4a2` Dump debug logs on travis failures (sdaftuar)
|
||||
- #9221 `9e4bb31` Get rid of duplicate code (MarcoFalke)
|
||||
- #9274 `919db03` Use cached utxo set to fix performance regression (MarcoFalke)
|
||||
- #9276 `ea33f19` Some minor testing cleanups (morcos)
|
||||
- #9291 `8601784` Remove mapOrphanTransactionsByPrev from DoS\_tests (sipa)
|
||||
- #9309 `76fcd9d` Wallet needs to stay unlocked for whole test (morcos)
|
||||
- #9172 `5bc209c` Resurrect pstratem's "Simple fuzzing framework" (laanwj)
|
||||
- #9331 `c6fd923` Add test for rescan feature of wallet key import RPCs (ryanofsky)
|
||||
- #9354 `b416095` Make fuzzer actually test CTxOutCompressor (sipa)
|
||||
- #9390,#9416 travis: make distdir (MarcoFalke)
|
||||
- #9308 `0698639` test: Add CCoinsViewCache Access/Modify/Write tests (ryanofsky)
|
||||
- #9406 `0f921e6` Re-enable a blank v1 Tx JSON test (droark)
|
||||
- #9435 `dbc8a8c` Removed unused variable in test, fixing warning (ryanofsky)
|
||||
- #9436 `dce853e` test: Include tx data in `EXTRA_DIST` (MarcoFalke)
|
||||
- #9525 `02e5308` test: Include tx data in `EXTRA_DIST` (MarcoFalke)
|
||||
- #9498 `054d664` Basic CCheckQueue Benchmarks (JeremyRubin)
|
||||
- #9554 `0b96abc` test: Avoid potential NULL pointer dereference in `addrman_tests.cpp` (practicalswift)
|
||||
- #9628 `f895023` Increase a sync\_blocks timeout in pruning.py (sdaftuar)
|
||||
- #9638 `a7ea2f8` Actually test assertions in pruning.py (MarcoFalke)
|
||||
- #9647 `e99f0d7` Skip RAII event tests if libevent is built without `event_set_mem_functions` (luke-jr)
|
||||
- #9691 `fc67cd2` Init ECC context for `test_digibyte_fuzzy` (gmaxwell)
|
||||
- #9712 `d304fef` bench: Fix initialization order in registration (laanwj)
|
||||
- #9707 `b860915` Fix RPC failure testing (jnewbery)
|
||||
- #9269 `43e8150` Align struct COrphan definition (sipa)
|
||||
- #9820 `599c69a` Fix pruning test broken by 2 hour manual prune window (ryanofsky)
|
||||
- #9824 `260c71c` qa: Check return code when stopping nodes (MarcoFalke)
|
||||
- #9875 `50953c2` tests: Fix dangling pwalletMain pointer in wallet tests (laanwj)
|
||||
- #9839 `eddaa6b` [qa] Make import-rescan.py watchonly check reliable (ryanofsky)
|
||||
|
||||
### Documentation
|
||||
- #8332 `806b9e7` Clarify witness branches in transaction.h serialization (dcousens)
|
||||
- #8935 `0306978` Documentation: Building on Windows with WSL (pooleja)
|
||||
- #9144 `c98f6b3` Correct waitforblockheight example help text (fanquake)
|
||||
- #9407 `041331e` Added missing colons in when running help command (anditto)
|
||||
- #9378 `870cd2b` Add documentation for CWalletTx::fFromMe member (ryanofsky)
|
||||
- #9297 `0b73807` Various RPC help outputs updated (Mirobit)
|
||||
- #9613 `07421cf` Clarify getbalance help string to explain interaction with bumpfee (ryanofsky)
|
||||
- #9663 `e30d928` Clarify listunspent amount description (instagibbs)
|
||||
- #9396 `d65a13b` Updated listsinceblock rpc documentation (accraze)
|
||||
- #8747 `ce43630` rpc: Fix transaction size comments and RPC help text (jnewbery)
|
||||
- #8058 `bbd9740` Doc: Add issue template (AmirAbrams)
|
||||
- #8567 `85d4e21` Add default port numbers to REST doc (djpnewton)
|
||||
- #8624 `89de153` build: Mention curl (MarcoFalke)
|
||||
- #8786 `9da7366` Mandatory copyright agreement (achow101)
|
||||
- #8823 `7b05af6` Add privacy recommendation when running hidden service (laanwj)
|
||||
- #9433 `caa2f10` Update the Windows build notes (droark)
|
||||
- #8879 `f928050` Rework docs (MarcoFalke)
|
||||
- #8887 `61d191f` Improve GitHub issue template (fanquake)
|
||||
- #8787 `279bbad` Add missing autogen to example builds (AmirAbrams)
|
||||
- #8892 `d270c30` Add build instructions for FreeBSD (laanwj)
|
||||
- #8890 `c71a654` Update Doxygen configuration file (fanquake)
|
||||
- #9207 `fa1f944` Move comments above bash command in build-unix (AmirAbrams)
|
||||
- #9219 `c4522e7` Improve windows build instructions using Linux subsystem (laanwj)
|
||||
- #8954 `932d02a` contrib: Add README for pgp keys (MarcoFalke)
|
||||
- #9093 `2fae5b9` release-process: Mention GitHub release and archived release notes (MarcoFalke)
|
||||
- #8743 `bae178f` Remove old manpages from contrib/debian in favour of doc/man (fanquake)
|
||||
- #9550 `4105cb6` Trim down the XP notice and say more about what we support (gmaxwell)
|
||||
- #9246 `9851498` Developer docs about existing subtrees (gmaxwell)
|
||||
- #9401 `c2ea1e6` Make rpcauth help message clearer, add example in example .conf (instagibbs)
|
||||
- #9022,#9033 Document dropping OS X 10.7 support (fanquake, MarcoFalke)
|
||||
- #8771 `bc9e3ab` contributing: Mention not to open several pulls (luke-jr)
|
||||
- #8852 `7b784cc` Mention Gitian building script in doc (Laudaa) (laanwj)
|
||||
- #8915 `03dd707` Add copyright/patent issues to possible NACK reasons (petertodd)
|
||||
- #8965 `23e03f8` Mention that PPA doesn't support Debian (anduck)
|
||||
- #9115 `bfc7aad` Mention reporting security issues responsibly (paveljanik)
|
||||
- #9840 `08e0690` Update sendfrom RPC help to correct coin selection misconception (ryanofsky)
|
||||
- #9865 `289204f` Change digibyte address in RPC help message (marijnfs)
|
||||
|
||||
### Miscellaneous
|
||||
- #8274 `7a2d402` util: Update tinyformat (laanwj)
|
||||
- #8291 `5cac8b1` util: CopyrightHolders: Check for untranslated substitution (MarcoFalke)
|
||||
- #8557 `44691f3` contrib: Rework verifybinaries (MarcoFalke)
|
||||
- #8621 `e8ed6eb` contrib: python: Don't use shell=True (MarcoFalke)
|
||||
- #8813 `fb24d7e` digibyted: Daemonize using daemon(3) (laanwj)
|
||||
- #9004 `67728a3` Clarify `listenonion` (unsystemizer)
|
||||
- #8674 `bae81b8` tools for analyzing, updating and adding copyright headers in source files (isle2983)
|
||||
- #8976 `8c6218a` libconsensus: Add input validation of flags (laanwj)
|
||||
- #9112 `46027e8` Avoid ugly exception in log on unknown inv type (laanwj)
|
||||
- #8837 `2108911` Allow digibyte-tx to parse partial transactions (jnewbery)
|
||||
- #9204 `74ced54` Clarify CreateTransaction error messages (instagibbs)
|
||||
- #9265 `31bcc66` digibyte-cli: Make error message less confusing (laanwj)
|
||||
- #9303 `72bf1b3` Update comments in ctaes (sipa)
|
||||
- #9417 `c4b7d4f` Do not evaluate hidden LogPrint arguments (sipa)
|
||||
- #9506 `593a00c` RFC: Improve style for if indentation (sipa)
|
||||
- #8883 `d5d4ad8` Add all standard TXO types to digibyte-tx (jnewbery)
|
||||
- #9531 `23281a4` Release notes for estimation changes (morcos)
|
||||
- #9486 `f62bc10` Make peer=%d log prints consistent (TheBlueMatt)
|
||||
- #9552 `41cb05c` Add IPv6 support to qos.sh (jamesmacwhite)
|
||||
- #9542 `e9e7993` Docs: Update CONTRIBUTING.md (jnewbery)
|
||||
- #9649 `53ab12d` Remove unused clang format dev script (MarcoFalke)
|
||||
- #9625 `77bd8c4` Increase minimum debug.log size to 10MB after shrink (morcos)
|
||||
- #9070 `7b22e50` Lockedpool fixes (kazcw)
|
||||
- #8779 `7008e28` contrib: Delete spendfrom (MarcoFalke)
|
||||
- #9587,#8793,#9496,#8191,#8109,#8655,#8472,#8677,#8981,#9124 Avoid shadowing of variables (paveljanik)
|
||||
- #9063 `f2a6e82` Use deprecated `MAP_ANON` if `MAP_ANONYMOUS` is not defined (paveljanik)
|
||||
- #9060 `1107653` Fix bloom filter init to isEmpty = true (robmcl4)
|
||||
- #8613 `613bda4` LevelDB 1.19 (sipa)
|
||||
- #9225 `5488514` Fix some benign races (TheBlueMatt)
|
||||
- #8736 `5fa7b07` base58: Improve DecodeBase58 performance (wjx)
|
||||
- #9039 `e81df49` Various serialization simplifcations and optimizations (sipa)
|
||||
- #9010 `a143b88` Split up AppInit2 into multiple phases, daemonize after datadir lock errors (laanwj)
|
||||
- #9230 `c79e52a` Fix some benign races in timestamp logging (TheBlueMatt)
|
||||
- #9183,#9260 Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp}) (TheBlueMatt)
|
||||
- #9236 `7f72568` Fix races for strMiscWarning and `fLargeWork*Found`, make QT runawayException use GetWarnings (gmaxwell)
|
||||
- #9243 `7aa7004` Clean up mapArgs and mapMultiArgs Usage (TheBlueMatt)
|
||||
- #9387 `cfe41d7` RAII of libevent stuff using unique ptrs with deleters (kallewoof)
|
||||
- #9472 `fac0f30` Disentangle progress estimation from checkpoints and update it (sipa)
|
||||
- #9512 `6012967` Fix various things -fsanitize complains about (sipa)
|
||||
- #9373,#9580 Various linearization script issues (droark)
|
||||
- #9674 `dd163f5` Lock debugging: Always enforce strict lock ordering (try or not) (TheBlueMatt)
|
||||
- #8453,#9334 Update to latest libsecp256k1 (laanwj,sipa)
|
||||
- #9656 `7c93952` Check verify-commits on pushes to master (TheBlueMatt)
|
||||
- #9679 `a351162` Access WorkQueue::running only within the cs lock (TheBlueMatt)
|
||||
- #9777 `8dee822` Handle unusual maxsigcachesize gracefully (jnewbery)
|
||||
- #8863,#8807 univalue: Pull subtree (MarcoFalke)
|
||||
- #9798 `e22c067` Fix Issue #9775 (Check returned value of fopen) (kirit93)
|
||||
- #9856 `69832aa` Terminate immediately when allocation fails (theuni)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- accraze
|
||||
- adlawren
|
||||
- Alex Morcos
|
||||
- Alexey Vesnin
|
||||
- Amir Abrams
|
||||
- Anders Øyvind Urke-Sætre
|
||||
- Anditto Heristyo
|
||||
- Andrew Chow
|
||||
- anduck
|
||||
- Anthony Towns
|
||||
- Brian Deery
|
||||
- BtcDrak
|
||||
- Chris Moore
|
||||
- Chris Stewart
|
||||
- Christian Barcenas
|
||||
- Christian Decker
|
||||
- Cory Fields
|
||||
- crowning-
|
||||
- CryptAxe
|
||||
- CryptoVote
|
||||
- Dagur Valberg Johannsson
|
||||
- Daniel Cousens
|
||||
- Daniel Kraft
|
||||
- Derek Miller
|
||||
- djpnewton
|
||||
- Don Patterson
|
||||
- Doug
|
||||
- Douglas Roark
|
||||
- Ethan Heilman
|
||||
- fsb4000
|
||||
- Gaurav Rana
|
||||
- Geoffrey Tsui
|
||||
- Greg Walker
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- Hampus Sjöberg
|
||||
- isle2983
|
||||
- Ivo van der Sangen
|
||||
- James White
|
||||
- Jameson Lopp
|
||||
- Jeremy Rubin
|
||||
- Jiaxing Wang
|
||||
- jnewbery
|
||||
- John Newbery
|
||||
- Johnson Lau
|
||||
- Jon Lund Steffensen
|
||||
- Jonas Schnelli
|
||||
- jonnynewbs
|
||||
- Jorge Timón
|
||||
- Justin Camarena
|
||||
- Karl-Johan Alm
|
||||
- Kaz Wesley
|
||||
- kirit93
|
||||
- Koki Takahashi
|
||||
- Lauda
|
||||
- leijurv
|
||||
- lizhi
|
||||
- Luke Dashjr
|
||||
- maiiz
|
||||
- MarcoFalke
|
||||
- Marijn Stollenga
|
||||
- Marty Jones
|
||||
- Masahiko Hyuga
|
||||
- Matt Corallo
|
||||
- Matthew King
|
||||
- matthias
|
||||
- Micha
|
||||
- Michael Ford
|
||||
- Michael Rotarius
|
||||
- Mitchell Cash
|
||||
- mrbandrews
|
||||
- mruddy
|
||||
- Nicolas DORIER
|
||||
- nomnomdgb
|
||||
- Patrick Strateman
|
||||
- Pavel Janík
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- poole\_party
|
||||
- practicalswift
|
||||
- R E Broadley
|
||||
- randy-waterhouse
|
||||
- Richard Kiss
|
||||
- Robert McLaughlin
|
||||
- rodasmith
|
||||
- Russell Yanofsky
|
||||
- S. Matthew English
|
||||
- Sev
|
||||
- Spencer Lievens
|
||||
- Stanislas Marion
|
||||
- Steven
|
||||
- Suhas Daftuar
|
||||
- Thomas Snider
|
||||
- UdjinM6
|
||||
- unsystemizer
|
||||
- whythat
|
||||
- Will Binns
|
||||
- Wladimir J. van der Laan
|
||||
- wodry
|
||||
- Zak Wilcox
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
143
doc/release-notes/release-notes-0.14.1.md
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
DigiByte Core version 0.14.1 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.14.1/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
RPC changes
|
||||
-----------
|
||||
|
||||
- The first positional argument of `createrawtransaction` was renamed from
|
||||
`transactions` to `inputs`.
|
||||
|
||||
- The argument of `disconnectnode` was renamed from `node` to `address`.
|
||||
|
||||
These interface changes break compatibility with 0.14.0, when the named
|
||||
arguments functionality, introduced in 0.14.0, is used. Client software
|
||||
using these calls with named arguments needs to be updated.
|
||||
|
||||
Mining
|
||||
------
|
||||
|
||||
In previous versions, getblocktemplate required segwit support from downstream
|
||||
clients/miners once the feature activated on the network. In this version, it
|
||||
now supports non-segwit clients even after activation, by removing all segwit
|
||||
transactions from the returned block template. This allows non-segwit miners to
|
||||
continue functioning correctly even after segwit has activated.
|
||||
|
||||
Due to the limitations in previous versions, getblocktemplate also recommended
|
||||
non-segwit clients to not signal for the segwit version-bit. Since this is no
|
||||
longer an issue, getblocktemplate now always recommends signalling segwit for
|
||||
all miners. This is safe because ability to enforce the rule is the only
|
||||
required criteria for safe activation, not actually producing segwit-enabled
|
||||
blocks.
|
||||
|
||||
UTXO memory accounting
|
||||
----------------------
|
||||
|
||||
Memory usage for the UTXO cache is being calculated more accurately, so that
|
||||
the configured limit (`-dbcache`) will be respected when memory usage peaks
|
||||
during cache flushes. The memory accounting in prior releases is estimated to
|
||||
only account for half the actual peak utilization.
|
||||
|
||||
The default `-dbcache` has also been changed in this release to 450MiB. Users
|
||||
who currently set `-dbcache` to a high value (e.g. to keep the UTXO more fully
|
||||
cached in memory) should consider increasing this setting in order to achieve
|
||||
the same cache performance as prior releases. Users on low-memory systems
|
||||
(such as systems with 1GB or less) should consider specifying a lower value for
|
||||
this parameter.
|
||||
|
||||
Additional information relating to running on low-memory systems can be found
|
||||
here:
|
||||
[reducing-digibyted-memory-usage.md](https://gist.github.com/laanwj/efe29c7661ce9b6620a7).
|
||||
|
||||
0.14.1 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #10084 `142fbb2` Rename first named arg of createrawtransaction (MarcoFalke)
|
||||
- #10139 `f15268d` Remove auth cookie on shutdown (practicalswift)
|
||||
- #10146 `2fea10a` Better error handling for submitblock (rawodb, gmaxwell)
|
||||
- #10144 `d947afc` Prioritisetransaction wasn't always updating ancestor fee (sdaftuar)
|
||||
- #10204 `3c79602` Rename disconnectnode argument (jnewbery)
|
||||
|
||||
### Block and transaction handling
|
||||
- #10126 `0b5e162` Compensate for memory peak at flush time (sipa)
|
||||
- #9912 `fc3d7db` Optimize GetWitnessHash() for non-segwit transactions (sdaftuar)
|
||||
- #10133 `ab864d3` Clean up calculations of pcoinsTip memory usage (morcos)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #9953/#10013 `d2548a4` Fix shutdown hang with >= 8 -addnodes set (TheBlueMatt)
|
||||
- #10176 `30fa231` net: gracefully handle NodeId wrapping (theuni)
|
||||
|
||||
### Build system
|
||||
- #9973 `e9611d1` depends: fix zlib build on osx (theuni)
|
||||
|
||||
### GUI
|
||||
- #10060 `ddc2dd1` Ensure an item exists on the rpcconsole stack before adding (achow101)
|
||||
|
||||
### Mining
|
||||
- #9955/#10006 `569596c` Don't require segwit in getblocktemplate for segwit signalling or mining (sdaftuar)
|
||||
- #9959/#10127 `b5c3440` Prevent slowdown in CreateNewBlock on large mempools (sdaftuar)
|
||||
|
||||
### Tests and QA
|
||||
- #10157 `55f641c` Fix the `mempool_packages.py` test (sdaftuar)
|
||||
|
||||
### Miscellaneous
|
||||
- #10037 `4d8e660` Trivial: Fix typo in help getrawtransaction RPC (keystrike)
|
||||
- #10120 `e4c9a90` util: Work around (virtual) memory exhaustion on 32-bit w/ glibc (laanwj)
|
||||
- #10130 `ecc5232` digibyte-tx input verification (awemany, jnewbery)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Andrew Chow
|
||||
- Awemany
|
||||
- Cory Fields
|
||||
- Gregory Maxwell
|
||||
- James Evans
|
||||
- John Newbery
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- rawodb
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
102
doc/release-notes/release-notes-0.14.2.md
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
DigiByte Core version 0.14.2 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.14.2/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
miniupnp CVE-2017-8798
|
||||
----------------------------
|
||||
|
||||
Bundled miniupnpc was updated to 2.0.20170509. This fixes an integer signedness error
|
||||
(present in MiniUPnPc v1.4.20101221 through v2.0) that allows remote attackers
|
||||
(within the LAN) to cause a denial of service or possibly have unspecified
|
||||
other impact.
|
||||
|
||||
This only affects users that have explicitly enabled UPnP through the GUI
|
||||
setting or through the `-upnp` option, as since the last UPnP vulnerability
|
||||
(in DigiByte Core 0.10.3) it has been disabled by default.
|
||||
|
||||
If you use this option, it is recommended to upgrade to this version as soon as
|
||||
possible.
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
Since 0.14.0 the approximate transaction fee shown in DigiByte-Qt when using coin
|
||||
control and smart fee estimation does not reflect any change in target from the
|
||||
smart fee slider. It will only present an approximate fee calculated using the
|
||||
default target. The fee calculated using the correct target is still applied to
|
||||
the transaction and shown in the final send confirmation dialog.
|
||||
|
||||
0.14.2 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### RPC and other APIs
|
||||
- #10410 `321419b` Fix importwallet edge case rescan bug (ryanofsky)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #10424 `37a8fc5` Populate services in GetLocalAddress (morcos)
|
||||
- #10441 `9e3ad50` Only enforce expected services for half of outgoing connections (theuni)
|
||||
|
||||
### Build system
|
||||
- #10414 `ffb0c4b` miniupnpc 2.0.20170509 (fanquake)
|
||||
- #10228 `ae479bc` Regenerate digibyte-config.h as necessary (theuni)
|
||||
|
||||
### Miscellaneous
|
||||
- #10245 `44a17f2` Minor fix in build documentation for FreeBSD 11 (shigeya)
|
||||
- #10215 `0aee4a1` Check interruptNet during dnsseed lookups (TheBlueMatt)
|
||||
|
||||
### GUI
|
||||
- #10231 `1e936d7` Reduce a significant cs_main lock freeze (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #10294 `1847642` Unset change position when there is no change (instagibbs)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Alex Morcos
|
||||
- Cory Fields
|
||||
- fanquake
|
||||
- Gregory Sanders
|
||||
- Jonas Schnelli
|
||||
- Matt Corallo
|
||||
- Russell Yanofsky
|
||||
- Shigeya Suzuki
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
|
||||
118
doc/release-notes/release-notes-0.14.3.md
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
DigiByte Core version *0.14.3* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.14.3/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements.
|
||||
|
||||
Please report bugs using the issue tracker at github:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later.
|
||||
|
||||
Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support),
|
||||
No attempt is made to prevent installing or running the software on Windows XP, you
|
||||
can still do so at your own risk but be aware that there are known instabilities and issues.
|
||||
Please do not report issues about Windows XP to the issue tracker.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Denial-of-Service vulnerability CVE-2018-17144
|
||||
-------------------------------
|
||||
|
||||
A denial-of-service vulnerability exploitable by miners has been discovered in
|
||||
DigiByte Core versions 0.14.0 up to 0.16.2. It is recommended to upgrade any of
|
||||
the vulnerable versions to 0.14.3, 0.15.2 or 0.16.3 as soon as possible.
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
Since 0.14.0 the approximate transaction fee shown in DigiByte-Qt when using coin
|
||||
control and smart fee estimation does not reflect any change in target from the
|
||||
smart fee slider. It will only present an approximate fee calculated using the
|
||||
default target. The fee calculated using the correct target is still applied to
|
||||
the transaction and shown in the final send confirmation dialog.
|
||||
|
||||
0.14.3 Change log
|
||||
=================
|
||||
|
||||
Detailed release notes follow. This overview includes changes that affect
|
||||
behavior, not code moves, refactors and string updates. For convenience in locating
|
||||
the code changes and accompanying discussion, both the pull request and
|
||||
git merge commit are mentioned.
|
||||
|
||||
### Consensus
|
||||
- #14247 `52965fb` Fix crash bug with duplicate inputs within a transaction (TheBlueMatt, sdaftuar)
|
||||
|
||||
### RPC and other APIs
|
||||
|
||||
- #10445 `87a21d5` Fix: make CCoinsViewDbCursor::Seek work for missing keys (Pieter Wuille, Gregory Maxwell)
|
||||
- #9853 Return correct error codes in setban(), fundrawtransaction(), removeprunedfunds(), bumpfee(), blockchain.cpp (John Newbery)
|
||||
|
||||
|
||||
### P2P protocol and network code
|
||||
|
||||
- #10234 `d289b56` [net] listbanned RPC and QT should show correct banned subnets (John Newbery)
|
||||
|
||||
### Build system
|
||||
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
- #10451 `3612219` contrib/init/digibyted.openrcconf: Don't disable wallet by default (Luke Dashjr)
|
||||
- #10250 `e23cef0` Fix some empty vector references (Pieter Wuille)
|
||||
- #10196 `d28d583` PrioritiseTransaction updates the mempool tx counter (Suhas Daftuar)
|
||||
- #9497 `e207342` Fix CCheckQueue IsIdle (potential) race condition and remove dangerous constructors. (Jeremy Rubin)
|
||||
|
||||
### GUI
|
||||
|
||||
- #9481 `7abe7bb` Give fallback fee a reasonable indent (Luke Dashjr)
|
||||
- #9481 `3e4d7bf` Qt/Send: Figure a decent warning colour from theme (Luke Dashjr)
|
||||
- #9481 `e207342` Show more significant warning if we fall back to the default fee (Jonas Schnelli)
|
||||
|
||||
### Wallet
|
||||
|
||||
- #10308 `28b8b8b` Securely erase potentially sensitive keys/values (tjps)
|
||||
- #10265 `ff13f59` Make sure pindex is non-null before possibly referencing in LogPrintf call. (Karl-Johan Alm)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Cory Fields
|
||||
- CryptAxe
|
||||
- fanquake
|
||||
- Jeremy Rubin
|
||||
- John Newbery
|
||||
- Jonas Schnelli
|
||||
- Gregory Maxwell
|
||||
- Karl-Johan Alm
|
||||
- Luke Dashjr
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Mikerah
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- Suhas Daftuar
|
||||
- Thomas Snider
|
||||
- Tjps
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And to those that reported security issues:
|
||||
|
||||
- awemany (for CVE-2018-17144, previously credited as "anonymous reporter")
|
||||
|
||||
87
doc/release-notes/release-notes-0.15.0.1.md
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
DigiByte Core version *0.15.0.1* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.0.1/>
|
||||
|
||||
and
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.0.1/>
|
||||
|
||||
This is a minor bug fix for 0.15.0.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
The first time you run version 0.15.0 or higher, your chainstate database will
|
||||
be converted to a new format, which will take anywhere from a few minutes to
|
||||
half an hour, depending on the speed of your machine.
|
||||
|
||||
The file format of `fee_estimates.dat` changed in version 0.15.0. Hence, a
|
||||
downgrade from version 0.15.0 or upgrade to version 0.15.0 will cause all fee
|
||||
estimates to be discarded.
|
||||
|
||||
Note that the block database format also changed in version 0.8.0 and there is no
|
||||
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
|
||||
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
|
||||
However, as usual, old wallet versions are still supported.
|
||||
|
||||
Downgrading warning
|
||||
-------------------
|
||||
|
||||
The chainstate database for this release is not compatible with previous
|
||||
releases, so if you run 0.15 and then decide to switch back to any
|
||||
older version, you will need to run the old release with the `-reindex-chainstate`
|
||||
option to rebuild the chainstate data structures in the old format.
|
||||
|
||||
If your node has pruning enabled, this will entail re-downloading and
|
||||
processing the entire blockchain.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
GUI startup crash issue
|
||||
-------------------------
|
||||
|
||||
After upgrade to 0.15.0, some clients would crash at startup because a custom
|
||||
fee setting was configured that no longer exists in the GUI. This is a minimal
|
||||
patch to avoid this issue from occuring.
|
||||
|
||||
0.15.0.1 Change log
|
||||
====================
|
||||
|
||||
- #11332 `46c8d23` Fix possible crash with invalid nCustomFeeRadio in QSettings (achow101, TheBlueMatt)
|
||||
|
||||
Also the manpages were updated, as this was forgotten for 0.15.0.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Andrew Chow
|
||||
- Matt Corallo
|
||||
- Jonas Schnelli
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
878
doc/release-notes/release-notes-0.15.0.md
Normal file
|
|
@ -0,0 +1,878 @@
|
|||
DigiByte Core version *0.15.0* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
The first time you run version 0.15.0, your chainstate database will be converted to a
|
||||
new format, which will take anywhere from a few minutes to half an hour,
|
||||
depending on the speed of your machine.
|
||||
|
||||
The file format of `fee_estimates.dat` changed in version 0.15.0. Hence, a
|
||||
downgrade from version 0.15.0 or upgrade to version 0.15.0 will cause all fee
|
||||
estimates to be discarded.
|
||||
|
||||
Note that the block database format also changed in version 0.8.0 and there is no
|
||||
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
|
||||
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
|
||||
However, as usual, old wallet versions are still supported.
|
||||
|
||||
Downgrading warning
|
||||
-------------------
|
||||
|
||||
The chainstate database for this release is not compatible with previous
|
||||
releases, so if you run 0.15 and then decide to switch back to any
|
||||
older version, you will need to run the old release with the `-reindex-chainstate`
|
||||
option to rebuild the chainstate data structures in the old format.
|
||||
|
||||
If your node has pruning enabled, this will entail re-downloading and
|
||||
processing the entire blockchain.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notes for 0.15.0
|
||||
================
|
||||
|
||||
Current SegWit support
|
||||
----------------------
|
||||
|
||||
Version 0.15.0 supports adding a segregated witness address via the `addwitnessaddress` RPC, but
|
||||
please note that this is a testing/expert RPC, which does not guarantee recovery from backup. Only use
|
||||
this RPC if you know what you are doing. More complete wallet support for segregated witness is coming
|
||||
in a next version.
|
||||
|
||||
Rescanning with encrypted wallets
|
||||
---------------------------------
|
||||
|
||||
As in previous versions, when using an encrypted HD wallet, the keypool cannot be topped up without unlocking
|
||||
the wallet. This means that currently, in order to recover from a backup of an encrypted HD wallet, the user
|
||||
must unlock the wallet with a really long timeout and manually trigger a rescan, otherwise they risk missing
|
||||
some keys when auto-topup cannot run. Unfortunately there is no `rescan` RPC in this version, that will be
|
||||
included in a future version, so for now a rescan can be triggered using one of the `import*` commands, using
|
||||
a dummy address generated by another (trusted) wallet.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Performance Improvements
|
||||
------------------------
|
||||
|
||||
Version 0.15 contains a number of significant performance improvements, which make
|
||||
Initial Block Download, startup, transaction and block validation much faster:
|
||||
|
||||
- The chainstate database (which is used for tracking UTXOs) has been changed
|
||||
from a per-transaction model to a per-output model (See [PR 10195](https://github.com/digibyte/digibyte/pull/10195)). Advantages of this model
|
||||
are that it:
|
||||
- avoids the CPU overhead of deserializing and serializing the unused outputs;
|
||||
- has more predictable memory usage;
|
||||
- uses simpler code;
|
||||
- is adaptable to various future cache flushing strategies.
|
||||
|
||||
As a result, validating the blockchain during Initial Block Download (IBD) and reindex
|
||||
is ~30-40% faster, uses 10-20% less memory, and flushes to disk far less frequently.
|
||||
The only downside is that the on-disk database is 15% larger. During the conversion from the previous format
|
||||
a few extra gigabytes may be used.
|
||||
- Earlier versions experienced a spike in memory usage while flushing UTXO updates to disk.
|
||||
As a result, only half of the available memory was actually used as cache, and the other half was
|
||||
reserved to accommodate flushing. This is no longer the case (See [PR 10148](https://github.com/digibyte/digibyte/pull/10148)), and the entirety of
|
||||
the available cache (see `-dbcache`) is now actually used as cache. This reduces the flushing
|
||||
frequency by a factor 2 or more.
|
||||
- In previous versions, signature validation for transactions has been cached when the
|
||||
transaction is accepted to the mempool. Version 0.15 extends this to cache the entire script
|
||||
validity (See [PR 10192](https://github.com/digibyte/digibyte/pull/10192)). This means that if a transaction in a block has already been accepted to the
|
||||
mempool, the scriptSig does not need to be re-evaluated. Empirical tests show that
|
||||
this results in new block validation being 40-50% faster.
|
||||
- LevelDB has been upgraded to version 1.20 (See [PR 10544](https://github.com/digibyte/digibyte/pull/10544)). This version contains hardware acceleration for CRC
|
||||
on architectures supporting SSE 4.2. As a result, synchronization and block validation are now faster.
|
||||
- SHA256 hashing has been optimized for architectures supporting SSE 4 (See [PR 10821](https://github.com/digibyte/digibyte/pull/10821)). SHA256 is around
|
||||
50% faster on supported hardware, which results in around 5% faster IBD and block
|
||||
validation. In version 0.15, SHA256 hardware optimization is disabled in release builds by
|
||||
default, but can be enabled by using `--enable-experimental-asm` when building.
|
||||
- Refill of the keypool no longer flushes the wallet between each key which resulted in a ~20x speedup in creating a new wallet. Part of this speedup was used to increase the default keypool to 1000 keys to make recovery more robust. (See [PR 10831](https://github.com/digibyte/digibyte/pull/10831)).
|
||||
|
||||
Fee Estimation Improvements
|
||||
---------------------------
|
||||
|
||||
Fee estimation has been significantly improved in version 0.15, with more accurate fee estimates used by the wallet and a wider range of options for advanced users of the `estimatesmartfee` and `estimaterawfee` RPCs (See [PR 10199](https://github.com/digibyte/digibyte/pull/10199)).
|
||||
|
||||
### Changes to internal logic and wallet behavior
|
||||
|
||||
- Internally, estimates are now tracked on 3 different time horizons. This allows for longer targets and means estimates adjust more quickly to changes in conditions.
|
||||
- Estimates can now be *conservative* or *economical*. *Conservative* estimates use longer time horizons to produce an estimate which is less susceptible to rapid changes in fee conditions. *Economical* estimates use shorter time horizons and will be more affected by short-term changes in fee conditions. Economical estimates may be considerably lower during periods of low transaction activity (for example over weekends), but may result in transactions being unconfirmed if prevailing fees increase rapidly.
|
||||
- By default, the wallet will use conservative fee estimates to increase the reliability of transactions being confirmed within the desired target. For transactions that are marked as replaceable, the wallet will use an economical estimate by default, since the fee can be 'bumped' if the fee conditions change rapidly (See [PR 10589](https://github.com/digibyte/digibyte/pull/10589)).
|
||||
- Estimates can now be made for confirmation targets up to 1008 blocks (one week).
|
||||
- More data on historical fee rates is stored, leading to more precise fee estimates.
|
||||
- Transactions which leave the mempool due to eviction or other non-confirmed reasons are now taken into account by the fee estimation logic, leading to more accurate fee estimates.
|
||||
- The fee estimation logic will make sure enough data has been gathered to return a meaningful estimate. If there is insufficient data, a fallback default fee is used.
|
||||
|
||||
### Changes to fee estimate RPCs
|
||||
|
||||
- The `estimatefee` RPC is now deprecated in favor of using only `estimatesmartfee` (which is the implementation used by the GUI)
|
||||
- The `estimatesmartfee` RPC interface has been changed (See [PR 10707](https://github.com/digibyte/digibyte/pull/10707)):
|
||||
- The `nblocks` argument has been renamed to `conf_target` (to be consistent with other RPC methods).
|
||||
- An `estimate_mode` argument has been added. This argument takes one of the following strings: `CONSERVATIVE`, `ECONOMICAL` or `UNSET` (which defaults to `CONSERVATIVE`).
|
||||
- The RPC return object now contains an `errors` member, which returns errors encountered during processing.
|
||||
- If DigiByte Core has not been running for long enough and has not seen enough blocks or transactions to produce an accurate fee estimation, an error will be returned (previously a value of -1 was used to indicate an error, which could be confused for a feerate).
|
||||
- A new `estimaterawfee` RPC is added to provide raw fee data. External clients can query and use this data in their own fee estimation logic.
|
||||
|
||||
Multi-wallet support
|
||||
--------------------
|
||||
|
||||
DigiByte Core now supports loading multiple, separate wallets (See [PR 8694](https://github.com/digibyte/digibyte/pull/8694), [PR 10849](https://github.com/digibyte/digibyte/pull/10849)). The wallets are completely separated, with individual balances, keys and received transactions.
|
||||
|
||||
Multi-wallet is enabled by using more than one `-wallet` argument when starting DigiByte, either on the command line or in the DigiByte config file.
|
||||
|
||||
**In DigiByte-Qt, only the first wallet will be displayed and accessible for creating and signing transactions.** GUI selectable multiple wallets will be supported in a future version. However, even in 0.15 other loaded wallets will remain synchronized to the node's current tip in the background. This can be useful if running a pruned node, since loading a wallet where the most recent sync is beyond the pruned height results in having to download and revalidate the whole blockchain. Continuing to synchronize all wallets in the background avoids this problem.
|
||||
|
||||
DigiByte Core 0.15.0 contains the following changes to the RPC interface and `digibyte-cli` for multi-wallet:
|
||||
|
||||
* When running DigiByte Core with a single wallet, there are **no** changes to the RPC interface or `digibyte-cli`. All RPC calls and `digibyte-cli` commands continue to work as before.
|
||||
* When running DigiByte Core with multi-wallet, all *node-level* RPC methods continue to work as before. HTTP RPC requests should be send to the normal `<RPC IP address>:<RPC port>` endpoint, and `digibyte-cli` commands should be run as before. A *node-level* RPC method is any method which does not require access to the wallet.
|
||||
* When running DigiByte Core with multi-wallet, *wallet-level* RPC methods must specify the wallet for which they're intended in every request. HTTP RPC requests should be send to the `<RPC IP address>:<RPC port>/wallet/<wallet name>` endpoint, for example `127.0.0.1:8332/wallet/wallet1.dat`. `digibyte-cli` commands should be run with a `-rpcwallet` option, for example `digibyte-cli -rpcwallet=wallet1.dat getbalance`.
|
||||
* A new *node-level* `listwallets` RPC method is added to display which wallets are currently loaded. The names returned by this method are the same as those used in the HTTP endpoint and for the `rpcwallet` argument.
|
||||
|
||||
Note that while multi-wallet is now fully supported, the RPC multi-wallet interface should be considered unstable for version 0.15.0, and there may backwards-incompatible changes in future versions.
|
||||
|
||||
Replace-by-fee control in the GUI
|
||||
---------------------------------
|
||||
|
||||
DigiByte Core has supported creating opt-in replace-by-fee (RBF) transactions
|
||||
since version 0.12.0, and since version 0.14.0 has included a `bumpfee` RPC method to
|
||||
replace unconfirmed opt-in RBF transactions with a new transaction that pays
|
||||
a higher fee.
|
||||
|
||||
In version 0.15, creating an opt-in RBF transaction and replacing the unconfirmed
|
||||
transaction with a higher-fee transaction are both supported in the GUI (See [PR 9592](https://github.com/digibyte/digibyte/pull/9592)).
|
||||
|
||||
Removal of Coin Age Priority
|
||||
----------------------------
|
||||
|
||||
In previous versions of DigiByte Core, a portion of each block could be reserved for transactions based on the age and value of UTXOs they spent. This concept (Coin Age Priority) is a policy choice by miners, and there are no consensus rules around the inclusion of Coin Age Priority transactions in blocks. In practice, only a few miners continue to use Coin Age Priority for transaction selection in blocks. DigiByte Core 0.15 removes all remaining support for Coin Age Priority (See [PR 9602](https://github.com/digibyte/digibyte/pull/9602)). This has the following implications:
|
||||
|
||||
- The concept of *free transactions* has been removed. High Coin Age Priority transactions would previously be allowed to be relayed even if they didn't attach a miner fee. This is no longer possible since there is no concept of Coin Age Priority. The `-limitfreerelay` and `-relaypriority` options which controlled relay of free transactions have therefore been removed.
|
||||
- The `-sendfreetransactions` option has been removed, since almost all miners do not include transactions which do not attach a transaction fee.
|
||||
- The `-blockprioritysize` option has been removed.
|
||||
- The `estimatepriority` and `estimatesmartpriority` RPCs have been removed.
|
||||
- The `getmempoolancestors`, `getmempooldescendants`, `getmempoolentry` and `getrawmempool` RPCs no longer return `startingpriority` and `currentpriority`.
|
||||
- The `prioritisetransaction` RPC no longer takes a `priority_delta` argument, which is replaced by a `dummy` argument for backwards compatibility with clients using positional arguments. The RPC is still used to change the apparent fee-rate of the transaction by using the `fee_delta` argument.
|
||||
- `-minrelaytxfee` can now be set to 0. If `minrelaytxfee` is set, then fees smaller than `minrelaytxfee` (per kB) are rejected from relaying, mining and transaction creation. This defaults to 1000 satoshi/kB.
|
||||
- The `-printpriority` option has been updated to only output the fee rate and hash of transactions included in a block by the mining code.
|
||||
|
||||
Mempool Persistence Across Restarts
|
||||
-----------------------------------
|
||||
|
||||
Version 0.14 introduced mempool persistence across restarts (the mempool is saved to a `mempool.dat` file in the data directory prior to shutdown and restores the mempool when the node is restarted). Version 0.15 allows this feature to be switched on or off using the `-persistmempool` command-line option (See [PR 9966](https://github.com/digibyte/digibyte/pull/9966)). By default, the option is set to true, and the mempool is saved on shutdown and reloaded on startup. If set to false, the `mempool.dat` file will not be loaded on startup or saved on shutdown.
|
||||
|
||||
New RPC methods
|
||||
---------------
|
||||
|
||||
Version 0.15 introduces several new RPC methods:
|
||||
|
||||
- `abortrescan` stops current wallet rescan, e.g. when triggered by an `importprivkey` call (See [PR 10208](https://github.com/digibyte/digibyte/pull/10208)).
|
||||
- `combinerawtransaction` accepts a JSON array of raw transactions and combines them into a single raw transaction (See [PR 10571](https://github.com/digibyte/digibyte/pull/10571)).
|
||||
- `estimaterawfee` returns raw fee data so that customized logic can be implemented to analyze the data and calculate estimates. See [Fee Estimation Improvements](#fee-estimation-improvements) for full details on changes to the fee estimation logic and interface.
|
||||
- `getchaintxstats` returns statistics about the total number and rate of transactions
|
||||
in the chain (See [PR 9733](https://github.com/digibyte/digibyte/pull/9733)).
|
||||
- `listwallets` lists wallets which are currently loaded. See the *Multi-wallet* section
|
||||
of these release notes for full details (See [Multi-wallet support](#multi-wallet-support)).
|
||||
- `uptime` returns the total runtime of the `digibyted` server since its last start (See [PR 10400](https://github.com/digibyte/digibyte/pull/10400)).
|
||||
|
||||
Low-level RPC changes
|
||||
---------------------
|
||||
|
||||
- When using DigiByte Core in multi-wallet mode, RPC requests for wallet methods must specify
|
||||
the wallet that they're intended for. See [Multi-wallet support](#multi-wallet-support) for full details.
|
||||
|
||||
- The new database model no longer stores information about transaction
|
||||
versions of unspent outputs (See [Performance improvements](#performance-improvements)). This means that:
|
||||
- The `gettxout` RPC no longer has a `version` field in the response.
|
||||
- The `gettxoutsetinfo` RPC reports `hash_serialized_2` instead of `hash_serialized`,
|
||||
which does not commit to the transaction versions of unspent outputs, but does
|
||||
commit to the height and coinbase information.
|
||||
- The `getutxos` REST path no longer reports the `txvers` field in JSON format,
|
||||
and always reports 0 for transaction versions in the binary format
|
||||
|
||||
- The `estimatefee` RPC is deprecated. Clients should switch to using the `estimatesmartfee` RPC, which returns better fee estimates. See [Fee Estimation Improvements](#fee-estimation-improvements) for full details on changes to the fee estimation logic and interface.
|
||||
|
||||
- The `gettxoutsetinfo` response now contains `disk_size` and `bogosize` instead of
|
||||
`bytes_serialized`. The first is a more accurate estimate of actual disk usage, but
|
||||
is not deterministic. The second is unrelated to disk usage, but is a
|
||||
database-independent metric of UTXO set size: it counts every UTXO entry as 50 + the
|
||||
length of its scriptPubKey (See [PR 10426](https://github.com/digibyte/digibyte/pull/10426)).
|
||||
|
||||
- `signrawtransaction` can no longer be used to combine multiple transactions into a single transaction. Instead, use the new `combinerawtransaction` RPC (See [PR 10571](https://github.com/digibyte/digibyte/pull/10571)).
|
||||
|
||||
- `fundrawtransaction` no longer accepts a `reserveChangeKey` option. This option used to allow RPC users to fund a raw transaction using an key from the keypool for the change address without removing it from the available keys in the keypool. The key could then be re-used for a `getnewaddress` call, which could potentially result in confusing or dangerous behaviour (See [PR 10784](https://github.com/digibyte/digibyte/pull/10784)).
|
||||
|
||||
- `estimatepriority` and `estimatesmartpriority` have been removed. See [Removal of Coin Age Priority](#removal-of-coin-age-priority).
|
||||
|
||||
- The `listunspent` RPC now takes a `query_options` argument (see [PR 8952](https://github.com/digibyte/digibyte/pull/8952)), which is a JSON object
|
||||
containing one or more of the following members:
|
||||
- `minimumAmount` - a number specifying the minimum value of each UTXO
|
||||
- `maximumAmount` - a number specifying the maximum value of each UTXO
|
||||
- `maximumCount` - a number specifying the minimum number of UTXOs
|
||||
- `minimumSumAmount` - a number specifying the minimum sum value of all UTXOs
|
||||
|
||||
- The `getmempoolancestors`, `getmempooldescendants`, `getmempoolentry` and `getrawmempool` RPCs no longer return `startingpriority` and `currentpriority`. See [Removal of Coin Age Priority](#removal-of-coin-age-priority).
|
||||
|
||||
- The `dumpwallet` RPC now returns the full absolute path to the dumped wallet. It
|
||||
used to return no value, even if successful (See [PR 9740](https://github.com/digibyte/digibyte/pull/9740)).
|
||||
|
||||
- In the `getpeerinfo` RPC, the return object for each peer now returns an `addrbind` member, which contains the ip address and port of the connection to the peer. This is in addition to the `addrlocal` member which contains the ip address and port of the local node as reported by the peer (See [PR 10478](https://github.com/digibyte/digibyte/pull/10478)).
|
||||
|
||||
- The `disconnectnode` RPC can now disconnect a node specified by node ID (as well as by IP address/port). To disconnect a node based on node ID, call the RPC with the new `nodeid` argument (See [PR 10143](https://github.com/digibyte/digibyte/pull/10143)).
|
||||
|
||||
- The second argument in `prioritisetransaction` has been renamed from `priority_delta` to `dummy` since DigiByte Core no longer has a concept of coin age priority. The `dummy` argument has no functional effect, but is retained for positional argument compatibility. See [Removal of Coin Age Priority](#removal-of-coin-age-priority).
|
||||
|
||||
- The `resendwallettransactions` RPC throws an error if the `-walletbroadcast` option is set to false (See [PR 10995](https://github.com/digibyte/digibyte/pull/10995)).
|
||||
|
||||
- The second argument in the `submitblock` RPC argument has been renamed from `parameters` to `dummy`. This argument never had any effect, and the renaming is simply to communicate this fact to the user (See [PR 10191](https://github.com/digibyte/digibyte/pull/10191))
|
||||
(Clients should, however, use positional arguments for `submitblock` in order to be compatible with BIP 22.)
|
||||
|
||||
- The `verbose` argument of `getblock` has been renamed to `verbosity` and now takes an integer from 0 to 2. Verbose level 0 is equivalent to `verbose=false`. Verbose level 1 is equivalent to `verbose=true`. Verbose level 2 will give the full transaction details of each transaction in the output as given by `getrawtransaction`. The old behavior of using the `verbose` named argument and a boolean value is still maintained for compatibility.
|
||||
|
||||
- Error codes have been updated to be more accurate for the following error cases (See [PR 9853](https://github.com/digibyte/digibyte/pull/9853)):
|
||||
- `getblock` now returns RPC_MISC_ERROR if the block can't be found on disk (for
|
||||
example if the block has been pruned). Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the node is not in pruned mode. Previously returned RPC_METHOD_NOT_FOUND.
|
||||
- `pruneblockchain` now returns RPC_INVALID_PARAMETER if the blocks cannot be pruned
|
||||
because the supplied timestamp is too late. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `pruneblockchain` now returns RPC_MISC_ERROR if the blocks cannot be pruned
|
||||
because the blockchain is too short. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the supplied IP address
|
||||
or subnet is invalid. Previously returned RPC_CLIENT_NODE_ALREADY_ADDED.
|
||||
- `setban` now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the user tries to unban
|
||||
a node that has not previously been banned. Previously returned RPC_MISC_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_WALLET_ERROR if `digibyted` is unable to remove
|
||||
the transaction. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `removeprunedfunds` now returns RPC_INVALID_PARAMETER if the transaction does not
|
||||
exist in the wallet. Previously returned RPC_INTERNAL_ERROR.
|
||||
- `fundrawtransaction` now returns RPC_INVALID_ADDRESS_OR_KEY if an invalid change
|
||||
address is provided. Previously returned RPC_INVALID_PARAMETER.
|
||||
- `fundrawtransaction` now returns RPC_WALLET_ERROR if `digibyted` is unable to create
|
||||
the transaction. The error message provides further details. Previously returned
|
||||
RPC_INTERNAL_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the wallet. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_INVALID_PARAMETER if the provided transaction has
|
||||
descendants in the mempool. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has
|
||||
has been mined or conflicts with a mined transaction. Previously returned
|
||||
RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction is not
|
||||
BIP 125 replaceable. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has already
|
||||
been bumped by a different transaction. Previously returned RPC_INVALID_REQUEST.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction contains
|
||||
inputs which don't belong to this wallet. Previously returned RPC_INVALID_ADDRESS_OR_KEY.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has multiple change
|
||||
outputs. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the provided transaction has no change
|
||||
output. Previously returned RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too high. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the fee is too low. Previously returned
|
||||
RPC_MISC_ERROR.
|
||||
- `bumpfee` now returns RPC_WALLET_ERROR if the change output is too small to bump the
|
||||
fee. Previously returned RPC_MISC_ERROR.
|
||||
|
||||
0.15.0 Change log
|
||||
=================
|
||||
|
||||
### RPC and other APIs
|
||||
- #9485 `61a640e` ZMQ example using python3 and asyncio (mcelrath)
|
||||
- #9894 `0496e15` remove 'label' filter for rpc command help (instagibbs)
|
||||
- #9853 `02bd6e9` Fix error codes from various RPCs (jnewbery)
|
||||
- #9842 `598ef9c` Fix RPC failure testing (continuation of #9707) (jnewbery)
|
||||
- #10038 `d34995a` Add mallocinfo mode to `getmemoryinfo` RPC (laanwj)
|
||||
- #9500 `3568b30` [Qt][RPC] Autocomplete commands for 'help' command in debug console (achow101)
|
||||
- #10056 `e6156a0` [zmq] Call va_end() on va_start()ed args (kallewoof)
|
||||
- #10086 `7438cea` Trivial: move rpcserialversion into RPC option group (jlopp)
|
||||
- #10150 `350b224` [rpc] Add logging rpc (jnewbery)
|
||||
- #10208 `393160c` [wallet] Rescan abortability (kallewoof)
|
||||
- #10143 `a987def` [net] Allow disconnectnode RPC to be called with node id (jnewbery)
|
||||
- #10281 `0e8499c` doc: Add RPC interface guidelines (laanwj)
|
||||
- #9733 `d4732f3` Add getchaintxstats RPC (sipa)
|
||||
- #10310 `f4b15e2` [doc] Add hint about getmempoolentry to getrawmempool help (kallewoof)
|
||||
- #8704 `96c850c` [RPC] Transaction details in getblock (achow101)
|
||||
- #8952 `9390845` Add query options to listunspent RPC call (pedrobranco)
|
||||
- #10413 `08ac35a` Fix docs (there's no rpc command setpaytxfee) (RHavar)
|
||||
- #8384 `e317c0d` Add witness data output to TxInError messages (instagibbs)
|
||||
- #9571 `4677151` RPC: getblockchaininfo returns BIP signaling statistics (pinheadmz)
|
||||
- #10450 `ef2d062` Fix bumpfee rpc "errors" return value (ryanofsky)
|
||||
- #10475 `39039b1` [RPC] getmempoolinfo mempoolminfee is a DGB/KB feerate (instagibbs)
|
||||
- #10478 `296928e` rpc: Add listen address to incoming connections in `getpeerinfo` (laanwj)
|
||||
- #10403 `08d0390` Fix importmulti failure to return rescan errors (ryanofsky)
|
||||
- #9740 `9fec4da` Add friendly output to dumpwallet (aideca)
|
||||
- #10426 `16f6c98` Replace bytes_serialized with bogosize (sipa)
|
||||
- #10252 `980deaf` RPC/Mining: Restore API compatibility for prioritisetransaction (luke-jr)
|
||||
- #9672 `46311e7` Opt-into-RBF for RPC & digibyte-tx (luke-jr)
|
||||
- #10481 `9c248e3` Decodehextx scripts sanity check (achow101)
|
||||
- #10488 `fa1f106` Note that the prioritizetransaction dummy value is deprecated, and has no meaning (TheBlueMatt)
|
||||
- #9738 `c94b89e` gettxoutproof() should return consistent result (jnewbery)
|
||||
- #10191 `00350bd` [trivial] Rename unused RPC arguments 'dummy' (jnewbery)
|
||||
- #10627 `b62b4c8` fixed listunspent rpc convert parameter (tnakagawa)
|
||||
- #10412 `bef02fb` Improve wallet rescan API (ryanofsky)
|
||||
- #10400 `1680ee0` [RPC] Add an uptime command that displays the amount of time (in seconds) digibyted has been running (rvelhote)
|
||||
- #10683 `d81bec7` rpc: Move the `generate` RPC call to rpcwallet (laanwj)
|
||||
- #10710 `30bc0f6` REST/RPC example update (Mirobit)
|
||||
- #10747 `9edda0c` [rpc] fix verbose argument for getblock in digibyte-cli (jnewbery)
|
||||
- #10589 `104f5f2` More economical fee estimates for RBF and RPC options to control (morcos)
|
||||
- #10543 `b27b004` Change API to estimaterawfee (morcos)
|
||||
- #10807 `afd2fca` getbalance example covers at least 6 confirms (instagibbs)
|
||||
- #10707 `75b5643` Better API for estimatesmartfee RPC (morcos)
|
||||
- #10784 `9e8d6a3` Do not allow users to get keys from keypool without reserving them (TheBlueMatt)
|
||||
- #10857 `d445a2c` [RPC] Add a deprecation warning to getinfo's output (achow101)
|
||||
- #10571 `adf170d` [RPC]Move transaction combining from signrawtransaction to new RPC (achow101)
|
||||
- #10783 `041dad9` [RPC] Various rpc argument fixes (instagibbs)
|
||||
- #9622 `6ef3c7e` [rpc] listsinceblock should include lost transactions when parameter is a reorg'd block (kallewoof)
|
||||
- #10799 `8537187` Prevent user from specifying conflicting parameters to fundrawtx (TheBlueMatt)
|
||||
- #10931 `0b11a07` Fix misleading "Method not found" multiwallet errors (ryanofsky)
|
||||
- #10788 `f66c596` [RPC] Fix addwitnessaddress by replacing ismine with producesignature (achow101)
|
||||
- #10999 `627c3c0` Fix amounts formatting in `decoderawtransaction` (laanwj)
|
||||
- #11002 `4268426` [wallet] return correct error code from resendwallettransaction (jnewbery)
|
||||
- #11029 `96a63a3` [RPC] trivial: gettxout no longer shows version of tx (FelixWeis)
|
||||
- #11083 `6c2b008` Fix combinerawtransaction RPC help result section (jonasnick)
|
||||
- #11027 `07164bb` [RPC] Only return hex field once in getrawtransaction (achow101)
|
||||
- #10698 `5af6572` Be consistent in calling transactions "replaceable" for Opt-In RBF (TheBlueMatt)
|
||||
|
||||
### Block and transaction handling
|
||||
- #9801 `a8c5751` Removed redundant parameter from mempool.PrioritiseTransaction (gubatron)
|
||||
- #9819 `1efc99c` Remove harmless read of unusued priority estimates (morcos)
|
||||
- #9822 `b7547fa` Remove block file location upgrade code (benma)
|
||||
- #9602 `30ff3a2` Remove coin age priority and free transactions - implementation (morcos)
|
||||
- #9548 `47510ad` Remove min reasonable fee (morcos)
|
||||
- #10249 `c73af54` Switch CCoinsMap from boost to std unordered_map (sipa)
|
||||
- #9966 `2a183de` Control mempool persistence using a command line parameter (jnewbery)
|
||||
- #10199 `318ea50` Better fee estimates (morcos)
|
||||
- #10196 `bee3529` Bugfix: PrioritiseTransaction updates the mempool tx counter (sdaftuar)
|
||||
- #10195 `1088b02` Switch chainstate db and cache to per-txout model (sipa)
|
||||
- #10284 `c2ab38b` Always log debug information for fee calculation in CreateTransaction (morcos)
|
||||
- #10503 `efbcf2b` Use REJECT_DUPLICATE for already known and conflicted txn (sipa)
|
||||
- #10537 `b3eb0d6` Few Minor per-utxo assert-semantics re-adds and tweak (TheBlueMatt)
|
||||
- #10626 `8c841a3` doc: Remove outdated minrelaytxfee comment (MarcoFalke)
|
||||
- #10559 `234ffc6` Change semantics of HaveCoinInCache to match HaveCoin (morcos)
|
||||
- #10581 `7878353` Simplify return values of GetCoin/HaveCoin(InCache) (sipa)
|
||||
- #10684 `a381f6a` Remove no longer used mempool.exists(outpoint) (morcos)
|
||||
- #10148 `d4e551a` Use non-atomic flushing with block replay (sipa)
|
||||
- #10685 `30c2130` Clarify CCoinsViewMemPool documentation (TheBlueMatt)
|
||||
- #10558 `90a002e` Address nits from per-utxo change (morcos)
|
||||
- #10706 `6859ad2` Improve wallet fee logic and fix GUI bugs (morcos)
|
||||
- #10526 `754aa02` Force on-the-fly compaction during pertxout upgrade (sipa)
|
||||
- #10985 `d896d5c` Add undocumented -forcecompactdb to force LevelDB compactions (sipa)
|
||||
- #10292 `e4bbd3d` Improved efficiency in COutPoint constructors (mm-s)
|
||||
- #10290 `8d6d43e` Add -stopatheight for benchmarking (sipa)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #9726 `7639d38` netbase: Do not print an error on connection timeouts through proxy (laanwj)
|
||||
- #9805 `5b583ef` Add seed.dgb.petertodd.org to mainnet DNS seeds (petertodd)
|
||||
- #9861 `22f609f` Trivial: Debug log ambiguity fix for peer addrs (keystrike)
|
||||
- #9774 `90cb2a2` Enable host lookups for -proxy and -onion parameters (jmcorgan)
|
||||
- #9558 `7b585cf` Clarify assumptions made about when BlockCheck is called (TheBlueMatt)
|
||||
- #10135 `e19586a` [p2p] Send the correct error code in reject messages (jnewbery)
|
||||
- #9665 `eab00d9` Use cached [compact] blocks to respond to getdata messages (TheBlueMatt)
|
||||
- #10215 `a077a90` Check interruptNet during dnsseed lookups (TheBlueMatt)
|
||||
- #10234 `faf2dea` [net] listbanned RPC and QT should show correct banned subnets (jnewbery)
|
||||
- #10134 `314ebdf` [qa] Fixes segwit block relay test after inv-direct-fetch was disabled (sdaftuar)
|
||||
- #10351 `3f57c55` removed unused code in INV message (Greg-Griffith)
|
||||
- #10061 `ae78609` [net] Added SetSocketNoDelay() utility function (tjps)
|
||||
- #10408 `28c6e8d` Net: Improvements to Tor control port parser (str4d)
|
||||
- #10460 `5c63d66` Broadcast address every day, not 9 hours (sipa)
|
||||
- #10471 `400fdd0` Denote functions CNode::GetRecvVersion() and CNode::GetRefCount() as const (pavlosantoniou)
|
||||
- #10345 `67700b3` [P2P] Timeout for headers sync (sdaftuar)
|
||||
- #10564 `8d9f45e` Return early in IsBanned (gmaxwell)
|
||||
- #10587 `de8db47` Net: Fix resource leak in ReadBinaryFile(...) (practicalswift)
|
||||
- #9549 `b33ca14` [net] Avoid possibility of NULL pointer dereference in MarkBlockAsInFlight(...) (practicalswift)
|
||||
- #10446 `2772dc9` net: avoid extra dns query per seed (theuni)
|
||||
- #10824 `9dd6a2b` Avoid unnecessary work in SetNetworkActive (promag)
|
||||
- #10948 `df3a6f4` p2p: Hardcoded seeds update pre-0.15 branch (laanwj)
|
||||
- #10977 `02f4c4a` [net] Fix use of uninitialized value in getnetworkinfo(const JSONRPCRequest&) (practicalswift)
|
||||
- #10982 `c8b62c7` Disconnect network service bits 6 and 8 until Aug 1, 2018 (TheBlueMatt)
|
||||
- #11012 `0e5cff6` Make sure to clean up mapBlockSource if we've already seen the block (theuni)
|
||||
|
||||
### Validation
|
||||
- #9725 `67023e9` CValidationInterface Cleanups (TheBlueMatt)
|
||||
- #10178 `2584925` Remove CValidationInterface::UpdatedTransaction (TheBlueMatt)
|
||||
- #10201 `a6548a4` pass Consensus::Params& to functions in validation.cpp and make them static (mariodian)
|
||||
- #10297 `431a548` Simplify DisconnectBlock arguments/return value (sipa)
|
||||
- #10464 `f94b7d5` Introduce static DoWarning (simplify UpdateTip) (jtimon)
|
||||
- #10569 `2e7d8f8` Fix stopatheight (achow101)
|
||||
- #10192 `2935b46` Cache full script execution results in addition to signatures (TheBlueMatt)
|
||||
- #10179 `21ed30a` Give CValidationInterface Support for calling notifications on the CScheduler Thread (TheBlueMatt)
|
||||
- #10557 `66270a4` Make check to distinguish between orphan txs and old txs more efficient (morcos)
|
||||
- #10775 `7c2400c` nCheckDepth chain height fix (romanornr)
|
||||
- #10821 `16240f4` Add SSE4 optimized SHA256 (sipa)
|
||||
- #10854 `04d395e` Avoid using sizes on non-fixed-width types to derive protocol constants (gmaxwell)
|
||||
- #10945 `2a50b11` Update defaultAssumeValid according to release-process.md (gmaxwell)
|
||||
- #10986 `2361208` Update chain transaction statistics (sipa)
|
||||
- #11028 `6bdf4b3` Avoid masking of difficulty adjustment errors by checkpoints (sipa)
|
||||
- #9533 `cb598cf` Allow non-power-of-2 signature cache sizes (sipa)
|
||||
- #9208 `acd9957` Improve DisconnectTip performance (sdaftuar)
|
||||
- #10618 `f90603a` Remove confusing MAX_BLOCK_BASE_SIZE (gmaxwell)
|
||||
- #10758 `bd92424` Fix some chainstate-init-order bugs (TheBlueMatt)
|
||||
- #10550 `b7296bc` Don't return stale data from CCoinsViewCache::Cursor() (ryanofsky)
|
||||
- #10998 `2507fd5` Fix upgrade cancel warnings (TheBlueMatt)
|
||||
- #9868 `cbdb473` Abstract out the command line options for block assembly (sipa)
|
||||
|
||||
### Build system
|
||||
- #9727 `5f0556d` Remove fallbacks for boost_filesystem < v3 (laanwj)
|
||||
- #9788 `50a2265` gitian: bump descriptors for master (theuni)
|
||||
- #9794 `7ca2f54` Minor update to qrencode package builder (mitchellcash)
|
||||
- #9514 `2cc0df1` release: Windows signing script (theuni)
|
||||
- #9921 `8b789d8` build: Probe MSG_DONTWAIT in the same way as MSG_NOSIGNAL (laanwj)
|
||||
- #10011 `32d1b34` build: Fix typo s/HAVE_DONTWAIT/HAVE_MSG_DONTWAIT (laanwj)
|
||||
- #9946 `90dd9e6` Fix build errors if spaces in path or parent directory (pinheadmz)
|
||||
- #10136 `81da4c7` build: Disable Wshadow warning (laanwj)
|
||||
- #10166 `64962ae` Ignore Doxyfile generated from Doxyfile.in template (paveljanik)
|
||||
- #10239 `0416ea9` Make Boost use std::atomic internally (sipa)
|
||||
- #10228 `27faa6c` build: regenerate digibyte-config.h as necessary (theuni)
|
||||
- #10273 `8979f45` [scripts] Minor improvements to `macdeployqtplus` script (chrisgavin)
|
||||
- #10325 `a26280b` 0.15.0 Depends Updates (fanquake)
|
||||
- #10328 `79aeff6` Update contrib/debian to latest Ubuntu PPA upload (TheBlueMatt)
|
||||
- #7522 `d25449f` Bugfix: Only use git for build info if the repository is actually the right one (luke-jr)
|
||||
- #10489 `e654d61` build: silence gcc7's implicit fallthrough warning (theuni)
|
||||
- #10549 `ad1a13e` Avoid printing generic and duplicated "checking for QT" during ./configure (drizzt)
|
||||
- #10628 `8465b68` [depends] expat 2.2.1 (fanquake)
|
||||
- #10806 `db825d2` build: verify that the assembler can handle crc32 functions (theuni)
|
||||
- #10766 `b4d03be` Building Environment: Set ARFLAGS to cr (ReneNyffenegger)
|
||||
- #10803 `91edda8` Explicitly search for bdb5.3 (pstratem)
|
||||
- #10855 `81560b0` random: only use getentropy on openbsd (theuni)
|
||||
- #10508 `1caafa6` Run Qt wallet tests on travis (ryanofsky)
|
||||
- #10851 `e222618` depends: fix fontconfig with newer glibc (theuni)
|
||||
- #10971 `88b1e4b` build: fix missing sse42 in depends builds (theuni)
|
||||
- #11097 `129b03f` gitian: quick hack to fix version string in releases (theuni)
|
||||
- #10039 `919aaf6` Fix compile errors with Qt 5.3.2 and Boost 1.55.0 (ryanofsky)
|
||||
- #10168 `7032021` Fix build warning from #error text (jnewbery)
|
||||
- #10301 `318392c` Check if sys/random.h is required for getentropy (jameshilliard)
|
||||
|
||||
### GUI
|
||||
- #9724 `1a9fd5c` Qt/Intro: Add explanation of IBD process (luke-jr)
|
||||
- #9834 `b00ba62` qt: clean up initialize/shutdown signals (benma)
|
||||
- #9481 `ce01e62` [Qt] Show more significant warning if we fall back to the default fee (jonasschnelli)
|
||||
- #9974 `b9f930b` Add basic Qt wallet test (ryanofsky)
|
||||
- #9690 `a387d3a` Change 'Clear' button string to 'Reset' (da2x)
|
||||
- #9592 `9c7b7cf` [Qt] Add checkbox in the GUI to opt-in to RBF when creating a transaction (ryanofsky)
|
||||
- #10098 `2b477e6` Make qt wallet test compatible with qt4 (ryanofsky)
|
||||
- #9890 `1fa4ae6` Add a button to open the config file in a text editor (ericshawlinux)
|
||||
- #10156 `51833a1` Fix for issues with startup and multiple monitors on windows (AllanDoensen)
|
||||
- #10177 `de01da7` Changed "Send" button default status from true to false (KibbledJiveElkZoo)
|
||||
- #10221 `e96486c` Stop treating coinbase outputs differently in GUI: show them at 1conf (TheBlueMatt)
|
||||
- #10231 `987a6c0` [Qt] Reduce a significant cs_main lock freeze (jonasschnelli)
|
||||
- #10242 `f6f3b58` [qt] Don't call method on null WalletModel object (ryanofsky)
|
||||
- #10093 `a3e756b` [Qt] Don't add arguments of sensitive command to console window (jonasschnelli)
|
||||
- #10362 `95546c8` [GUI] Add OSX keystroke to RPCConsole info (spencerlievens)
|
||||
- #9697 `962cd3f` [Qt] simple fee bumper with user verification (jonasschnelli)
|
||||
- #10390 `e477516` [wallet] remove minimum total fee option (instagibbs)
|
||||
- #10420 `4314544` Add Qt tests for wallet spends & bumpfee (ryanofsky)
|
||||
- #10454 `c1c9a95` Fix broken q4 test build (ryanofsky)
|
||||
- #10449 `64beb13` Overhaul Qt fee bumper (jonasschnelli)
|
||||
- #10582 `7c72fb9` Pass in smart fee slider value to coin control dialog (morcos)
|
||||
- #10673 `4c72cc3` [qt] Avoid potential null pointer dereference in TransactionView::exportClicked() (practicalswift)
|
||||
- #10769 `8fdd23a` [Qt] replace fee slider with a Dropdown, extend conf. targets (jonasschnelli)
|
||||
- #10870 `412b466` [Qt] Use wallet 0 in rpc console if running with multiple wallets (jonasschnelli)
|
||||
- #10988 `a9dd111` qt: Increase BLOCK_CHAIN_SIZE constants (laanwj)
|
||||
- #10644 `e292140` Slightly overhaul NSI pixmaps (jonasschnelli)
|
||||
- #10660 `0c3542e` Allow to cancel the txdb upgrade via splashscreen keypress 'q' (jonasschnelli)
|
||||
|
||||
### Wallet
|
||||
- #9359 `f7ec7cf` Add test for CWalletTx::GetImmatureCredit() returning stale values (ryanofsky)
|
||||
- #9576 `56ab672` [wallet] Remove redundant initialization (practicalswift)
|
||||
- #9333 `fa625b0` Document CWalletTx::mapValue entries and remove erase of nonexistent "version" entry (ryanofsky)
|
||||
- #9906 `72fb515` Disallow copy constructor CReserveKeys (instagibbs)
|
||||
- #9369 `3178b2c` Factor out CWallet::nTimeSmart computation into a method (ryanofsky)
|
||||
- #9830 `afcd7c0` Add safe flag to listunspent result (NicolasDorier)
|
||||
- #9993 `c49355c` Initialize nRelockTime (pstratem)
|
||||
- #9818 `3d857f3` Save watch only key timestamps when reimporting keys (ryanofsky)
|
||||
- #9294 `f34cdcb` Use internal HD chain for change outputs (hd split) (jonasschnelli)
|
||||
- #10164 `e183ea2` Wallet: reduce excess logic InMempool() (kewde)
|
||||
- #10186 `c9ff4f8` Remove SYNC_TRANSACTION_NOT_IN_BLOCK magic number (jnewbery)
|
||||
- #10226 `64c45aa` wallet: Use boost to more portably ensure -wallet specifies only a filename (luke-jr)
|
||||
- #9827 `c91ca0a` Improve ScanForWalletTransactions return value (ryanofsky)
|
||||
- #9951 `fa1ac28` Wallet database handling abstractions/simplifications (laanwj)
|
||||
- #10265 `c29a0d4` [wallet] [moveonly] Check non-null pindex before potentially referencing (kallewoof)
|
||||
- #10283 `a550f6e` Cleanup: reduce to one GetMinimumFee call signature (morcos)
|
||||
- #10294 `e2b99b1` [Wallet] unset change position when there is no change (instagibbs)
|
||||
- #10115 `d3dce0e` Avoid reading the old hd master key during wallet encryption (TheBlueMatt)
|
||||
- #10341 `18c9deb` rpc/wallet: Workaround older UniValue which returns a std::string temporary for get_str (luke-jr)
|
||||
- #10308 `94e5227` [wallet] Securely erase potentially sensitive keys/values (tjps)
|
||||
- #10257 `ea1fd43` [test] Add test for getmemoryinfo (jimmysong)
|
||||
- #10295 `ce8176d` [qt] Move some WalletModel functions into CWallet (ryanofsky)
|
||||
- #10506 `7cc2c67` Fix bumpfee test after #10449 (ryanofsky)
|
||||
- #10500 `098b01d` Avoid CWalletTx copies in GetAddressBalances and GetAddressGroupings (ryanofsky)
|
||||
- #10455 `0747d33` Simplify feebumper minimum fee code slightly (ryanofsky)
|
||||
- #10522 `2805d60` [wallet] Remove unused variables (practicalswift)
|
||||
- #8694 `177433a` Basic multiwallet support (luke-jr)
|
||||
- #10598 `7a74f88` Supress struct/class mismatch warnings introduced in #10284 (paveljanik)
|
||||
- #9343 `209eef6` Don't create change at dust limit (morcos)
|
||||
- #10744 `ed88e31` Use method name via __func__ macro (darksh1ne)
|
||||
- #10712 `e8b9523` Add change output if necessary to reduce excess fee (morcos)
|
||||
- #10816 `1c011ff` Properly forbid -salvagewallet and -zapwallettxes for multi wallet (morcos)
|
||||
- #10235 `5cfdda2` Track keypool entries as internal vs external in memory (TheBlueMatt)
|
||||
- #10330 `bf0a08b` [wallet] fix zapwallettxes interaction with persistent mempool (jnewbery)
|
||||
- #10831 `0b01935` Batch flushing operations to the walletdb during top up and increase keypool size (gmaxwell)
|
||||
- #10795 `7b6e8bc` No longer ever reuse keypool indexes (TheBlueMatt)
|
||||
- #10849 `bde4f93` Multiwallet: simplest endpoint support (jonasschnelli)
|
||||
- #10817 `9022aa3` Redefine Dust and add a discard_rate (morcos)
|
||||
- #10883 `bf3b742` Rename -usewallet to -rpcwallet (morcos)
|
||||
- #10604 `420238d` [wallet] [tests] Add listwallets RPC, include wallet name in `getwalletinfo` and add multiwallet test (jnewbery)
|
||||
- #10885 `70888a3` Reject invalid wallets (promag)
|
||||
- #10949 `af56397` Clarify help message for -discardfee (morcos)
|
||||
- #10942 `2e857bb` Eliminate fee overpaying edge case when subtracting fee from recipients (morcos)
|
||||
- #10995 `fa64636` Fix resendwallettransactions assert failure if -walletbroadcast=0 (TheBlueMatt)
|
||||
- #11022 `653a46d` Basic keypool topup (jnewbery)
|
||||
- #11081 `9fe1f6b` Add length check for CExtKey deserialization (jonasschnelli, guidovranken)
|
||||
- #11044 `4ef8374` [wallet] Keypool topup cleanups (jnewbery)
|
||||
- #11145 `e51bb71` Fix rounding bug in calculation of minimum change (morcos)
|
||||
- #9605 `779f2f9` Use CScheduler for wallet flushing, remove ThreadFlushWalletDB (TheBlueMatt)
|
||||
- #10108 `4e3efd4` ApproximateBestSubset should take inputs by reference, not value (RHavar)
|
||||
|
||||
### Tests and QA
|
||||
- #9744 `8efd1c8` Remove unused module from rpc-tests (34ro)
|
||||
- #9657 `7ff4a53` Improve rpc-tests.py (jnewbery)
|
||||
- #9766 `7146d96` Add --exclude option to rpc-tests.py (jnewbery)
|
||||
- #9577 `d6064a8` Fix docstrings in qa tests (jnewbery)
|
||||
- #9823 `a13a417` qa: Set correct path for binaries in rpc tests (MarcoFalke)
|
||||
- #9847 `6206252` Extra test vector for BIP32 (sipa)
|
||||
- #9350 `88c2ae3` [Trivial] Adding label for amount inside of tx_valid/tx_invalid.json (Christewart)
|
||||
- #9888 `36afd4d` travis: Verify commits only for one target (MarcoFalke)
|
||||
- #9904 `58861ad` test: Fail if InitBlockIndex fails (laanwj)
|
||||
- #9828 `67c5cc1` Avoid -Wshadow warnings in wallet_tests (ryanofsky)
|
||||
- #9832 `48c3429` [qa] assert_start_raises_init_error (NicolasDorier)
|
||||
- #9739 `9d5fcbf` Fix BIP68 activation test (jnewbery)
|
||||
- #9547 `d32581c` bench: Assert that division by zero is unreachable (practicalswift)
|
||||
- #9843 `c78adbf` Fix segwit getblocktemplate test (jnewbery)
|
||||
- #9929 `d5ce14e` tests: Delete unused function _rpchost_to_args (laanwj)
|
||||
- #9555 `19be26a` [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (transaction_tests.cpp) (practicalswift)
|
||||
- #9945 `ac23a7c` Improve logging in bctest.py if there is a formatting mismatch (jnewbery)
|
||||
- #9768 `8910b47` [qa] Add logging to test_framework.py (jnewbery)
|
||||
- #9972 `21833f9` Fix extended rpc tests broken by #9768 (jnewbery)
|
||||
- #9977 `857d1e1` QA: getblocktemplate_longpoll.py should always use >0 fee tx (sdaftuar)
|
||||
- #9970 `3cc13ea` Improve readability of segwit.py, smartfees.py (sdaftuar)
|
||||
- #9497 `2c781fb` CCheckQueue Unit Tests (JeremyRubin)
|
||||
- #10024 `9225de2` [trivial] Use log.info() instead of print() in remaining functional test cases (jnewbery)
|
||||
- #9956 `3192e52` Reorganise qa directory (jnewbery)
|
||||
- #10017 `02d64bd` combine_logs.py - aggregates log files from multiple digibyteds during functional tests (jnewbery)
|
||||
- #10047 `dfef6b6` [tests] Remove unused variables and imports (practicalswift)
|
||||
- #9701 `a230b05` Make bumpfee tests less fragile (ryanofsky)
|
||||
- #10053 `ca20923` [test] Allow functional test cases to be skipped (jnewbery)
|
||||
- #10052 `a0b1e57` [test] Run extended tests once daily in Travis (jnewbery)
|
||||
- #10069 `1118493` [QA] Fix typo in fundrawtransaction test (NicolasDorier)
|
||||
- #10083 `c044f03` [QA] Renaming rawTx into rawtx (NicolasDorier)
|
||||
- #10073 `b1a4f27` Actually run assumevalid.py (jnewbery)
|
||||
- #9780 `c412fd8` Suppress noisy output from qa tests in Travis (jnewbery)
|
||||
- #10096 `79af9fb` Check that all test scripts in test/functional are being run (jnewbery)
|
||||
- #10076 `5b029aa` [qa] combine_logs: Use ordered list for logfiles (MarcoFalke)
|
||||
- #10107 `f2734c2` Remove unused variable. Remove accidental trailing semicolons in Python code (practicalswift)
|
||||
- #10109 `8ac8041` Remove SingleNodeConnCB (jnewbery)
|
||||
- #10114 `edc62c9` [tests] sync_with_ping should assert that ping hasn't timed out (jnewbery)
|
||||
- #10128 `427d2fd` Speed Up CuckooCache tests (JeremyRubin)
|
||||
- #10072 `12af74b` Remove sources of unreliablility in extended functional tests (jnewbery)
|
||||
- #10077 `ebfd653` [qa] Add setnetworkactive smoke test (MarcoFalke)
|
||||
- #10152 `080d7c7` [trivial] remove unused line in Travis config (jnewbery)
|
||||
- #10159 `df1ca9e` [tests] color test results and sort alphabetically (jnewbery)
|
||||
- #10124 `88799ea` [test] Suppress test logging spam (jnewbery)
|
||||
- #10142 `ed09dd3` Run digibyte_test-qt under minimal QPA platform (ryanofsky)
|
||||
- #9949 `a27dbc5` [bench] Avoid function call arguments which are pointers to uninitialized values (practicalswift)
|
||||
- #10187 `b44adf9` tests: Fix test_runner return value in case of skipped test (laanwj)
|
||||
- #10197 `d86bb07` [tests] Functional test warnings (jnewbery)
|
||||
- #10219 `9111df9` Tests: Order Python Tests Differently (jimmysong)
|
||||
- #10229 `f3db4c6` Tests: Add test for getdifficulty (jimmysong)
|
||||
- #10224 `2723bcd` [test] Add test for getaddednodeinfo (jimmysong)
|
||||
- #10023 `c530c15` [tests] remove maxblocksinflight.py (functionality covered by other test) (jnewbery)
|
||||
- #10097 `1b25b6d` Move zmq test skipping logic into individual test case (jnewbery)
|
||||
- #10272 `54e2d87` [Tests] Prevent warning: variable 'x' is uninitialized (paveljanik)
|
||||
- #10225 `e0a7e19` [test] Add aborttrescan tests (kallewoof)
|
||||
- #10278 `8254a8a` [test] Add Unit Test for GetListenPort (jimmysong)
|
||||
- #10280 `47535d7` [test] Unit test amount.h/amount.cpp (jimmysong)
|
||||
- #10256 `80c3a73` [test] Add test for gettxout to wallet.py (jimmysong)
|
||||
- #10264 `492d22f` [test] Add tests for getconnectioncount, getnettotals and ping (jimmysong)
|
||||
- #10169 `8f3e384` [tests] Remove func test code duplication (jnewbery)
|
||||
- #10198 `dc8fc0c` [tests] Remove is_network_split from functional test framework (jnewbery)
|
||||
- #10255 `3c5e6c9` [test] Add test for listaddressgroupings (jimmysong)
|
||||
- #10137 `75171f0` Remove unused import. Remove accidental trailing semicolons (practicalswift)
|
||||
- #10307 `83073de` [tests] allow zmq test to be run in out-of-tree builds (jnewbery)
|
||||
- #10344 `e927483` [tests] Fix abandonconflict.py intermittency (jnewbery)
|
||||
- #10318 `170bc2c` [tests] fix wait_for_inv() (jnewbery)
|
||||
- #10171 `fff72de` [tests] Add node methods to test framework (jnewbery)
|
||||
- #10352 `23d78c4` test: Add elapsed time to RPC tracing (laanwj)
|
||||
- #10342 `6a796b2` [tests] Improve mempool_persist test (jnewbery)
|
||||
- #10287 `776ba23` [tests] Update Unit Test for addrman.h/addrman.cpp (jimmysong)
|
||||
- #10365 `7ee5236` [tests] increase timeouts in sendheaders test (jnewbery)
|
||||
- #10361 `f6241b3` qa: disablewallet: Check that wallet is really disabled (MarcoFalke)
|
||||
- #10371 `4b766fc` [tests] Clean up addrman_tests.cpp (jimmysong)
|
||||
- #10253 `87abe20` [test] Add test for getnetworkhashps (jimmysong)
|
||||
- #10376 `8bd16ee` [tests] fix disconnect_ban intermittency (jnewbery)
|
||||
- #10374 `5411997` qa: Warn when specified test is not found (MarcoFalke)
|
||||
- #10405 `0542978` tests: Correct testcase in script_tests.json for large number OP_EQUAL (laanwj)
|
||||
- #10429 `6b99daf` tests: fix spurious addrman test failure (theuni)
|
||||
- #10433 `8e57256` [tests] improve tmpdir structure (jnewbery)
|
||||
- #10415 `217b416` [tests] Speed up fuzzing by ~200x when using afl-fuzz (practicalswift)
|
||||
- #10445 `b4b057a` Add test for empty chain and reorg consistency for gettxoutsetinfo (gmaxwell)
|
||||
- #10423 `1aefc94` [tests] skipped tests should clean up after themselves (jnewbery)
|
||||
- #10359 `329fc1d` [tests] functional tests should call DigiByteTestFramework start/stop node methods (jnewbery)
|
||||
- #10514 `e103b3f` Bugfix: missing == 0 after randrange (sipa)
|
||||
- #10515 `c871f32` [test] Add test for getchaintxstats (jimmysong)
|
||||
- #10509 `bea5b00` Remove xvfb configuration from travis (ryanofsky)
|
||||
- #10535 `30853e1` [qa] fundrawtx: Fix shutdown race (MarcoFalke)
|
||||
- #9909 `300f8e7` tests: Add FindEarliestAtLeast test for edge cases (ryanofsky)
|
||||
- #10331 `75e898c` Share config between util and functional tests (jnewbery)
|
||||
- #10321 `e801084` Use FastRandomContext for all tests (sipa)
|
||||
- #10524 `6c2d81f` [tests] Remove printf(...) (practicalswift)
|
||||
- #10547 `71ab6e5` [tests] Use FastRandomContext instead of boost::random::{mt19937,uniform_int_distribution} (practicalswift)
|
||||
- #10551 `6702617` [Tests] Wallet encryption functional tests (achow101)
|
||||
- #10555 `643fa0b` [tests] various improvements to zmq_test.py (jnewbery)
|
||||
- #10533 `d083bd9` [tests] Use cookie auth instead of rpcuser and rpcpassword (achow101)
|
||||
- #10632 `c68a9a6` qa: Add stopatheight test (MarcoFalke)
|
||||
- #10636 `4bc853b` [qa] util: Check return code after closing digibyted proc (MarcoFalke)
|
||||
- #10662 `e0a7801` Initialize randomness in benchmarks (achow101)
|
||||
- #10612 `7c87a9c` The young person's guide to the test_framework (jnewbery)
|
||||
- #10659 `acb1153` [qa] blockchain: Pass on closed connection during generate call (MarcoFalke)
|
||||
- #10690 `416af3e` [qa] Bugfix: allow overriding extra_args in ComparisonTestFramework (sdaftuar)
|
||||
- #10556 `65cc7aa` Move stop/start functions from utils.py into DigiByteTestFramework (jnewbery)
|
||||
- #10704 `dd07f47` [tests] nits in dbcrash.py (jnewbery)
|
||||
- #10743 `be82498` [test] don't run dbcrash.py on Travis (jnewbery)
|
||||
- #10761 `d3b5870` [tests] fix replace_by_fee.py (jnewbery)
|
||||
- #10759 `1d4805c` Fix multi_rpc test for hosts that dont default to utf8 (TheBlueMatt)
|
||||
- #10190 `e4f226a` [tests] mining functional tests (including regression test for submitblock) (jnewbery)
|
||||
- #10739 `1fc783f` test: Move variable `state` down where it is used (paveljanik)
|
||||
- #9980 `fee0d80` Fix mem access violation merkleblock (Christewart)
|
||||
- #10893 `0c173a1` [QA] Avoid running multiwallet.py twice (jonasschnelli)
|
||||
- #10927 `9d5e8f9` test: Make sure wallet.backup is created in temp path (laanwj)
|
||||
- #10899 `f29d5db` [test] Qt: Use _putenv_s instead of setenv on Windows builds (brianmcmichael)
|
||||
- #10912 `5c8eb79` [tests] Fix incorrect memory_cleanse(…) call in crypto_tests.cpp (practicalswift)
|
||||
- #11001 `fa8a063` [tests] Test disconnecting unsupported service bits logic (jnewbery)
|
||||
- #10695 `929fd72` [qa] Rewrite BIP65/BIP66 functional tests (sdaftuar)
|
||||
- #10963 `ecd2135` [bench] Restore format state of cout after printing with std::fixed/setprecision (practicalswift)
|
||||
- #11025 `e5d26e4` qa: Fix inv race in example_test (MarcoFalke)
|
||||
- #10765 `2c811e0` Tests: address placement should be deterministic by default (ReneNyffenegger)
|
||||
- #11000 `ac016e1` test: Add resendwallettransactions functional tests (promag)
|
||||
- #11032 `aeb3175` [qa] Fix block message processing error in sendheaders.py (sdaftuar)
|
||||
- #10105 `0b9fb68` [tests] fixup - make all Travis test runs quiet, non just cron job runs (jnewbery)
|
||||
- #10222 `6ce7337` [tests] test_runner - check unicode (jnewbery)
|
||||
- #10327 `35da2ae` [tests] remove import-abort-rescan.py (jnewbery)
|
||||
- #11023 `bf74d37` [tests] Add option to attach a python debugger if functional test fails (jnewbery)
|
||||
- #10565 `8c2098a` [coverage] Remove subtrees and benchmarks from coverage report (achow101)
|
||||
|
||||
### Miscellaneous
|
||||
- #9871 `be8ba2c` Add a tree sha512 hash to merge commits (sipa)
|
||||
- #9821 `d19d45a` util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD (laanwj)
|
||||
- #9903 `ba80a68` Docs: add details to -rpcclienttimeout doc (ian-kelling)
|
||||
- #9910 `53c300f` Docs: correct and elaborate -rpcbind doc (ian-kelling)
|
||||
- #9905 `01b7cda` [contrib] gh-merge: Move second sha512 check to the end (MarcoFalke)
|
||||
- #9880 `4df8213` Verify Tree-SHA512s in merge commits, enforce sigs are not SHA1 (TheBlueMatt)
|
||||
- #9932 `00c13ea` Fix verify-commits on travis and always check top commit's tree (TheBlueMatt)
|
||||
- #9952 `6996e06` Add historical release notes for 0.14.0 (laanwj)
|
||||
- #9940 `fa99663` Fix verify-commits on OSX, update for new bad Tree-SHA512, point travis to different keyservers (TheBlueMatt)
|
||||
- #9963 `8040ae6` util: Properly handle errors during log message formatting (laanwj)
|
||||
- #9984 `cce056d` devtools: Make github-merge compute SHA512 from git, instead of worktree (laanwj)
|
||||
- #9995 `8bcf934` [doc] clarify blockchain size and pruning (askmike)
|
||||
- #9734 `0c17afc` Add updating of chainTxData to release process (sipa)
|
||||
- #10063 `530fcbd` add missing spaces so that markdown recognizes headline (flack)
|
||||
- #10085 `db1ae54` Docs: remove 'noconnect' option (jlopp)
|
||||
- #10090 `8e4f7e7` Update digibyte.conf with example for pruning (coinables)
|
||||
- #9424 `1a5aaab` Change LogAcceptCategory to use uint32_t rather than sets of strings (gmaxwell)
|
||||
- #10036 `fbf36ca` Fix init README format to render correctly on github (jlopp)
|
||||
- #10058 `a2cd0b0` No need to use OpenSSL malloc/free (tjps)
|
||||
- #10123 `471ed00` Allow debug logs to be excluded from specified component (jnewbery)
|
||||
- #10104 `fadf078` linearize script: Option to use RPC cookie (achow101)
|
||||
- #10162 `a3a2160` [trivial] Log calls to getblocktemplate (jnewbery)
|
||||
- #10155 `928695b` build: Deduplicate version numbers (laanwj)
|
||||
- #10211 `a86255b` [doc] Contributor fixes & new "finding reviewers" section (kallewoof)
|
||||
- #10250 `1428f30` Fix some empty vector references (sipa)
|
||||
- #10270 `95f5e44` Remove Clang workaround for Boost 1.46 (fanquake)
|
||||
- #10263 `cb007e4` Trivial: fix fee estimate write error log message (CryptAxe)
|
||||
- #9670 `bd9ec0e` contrib: github-merge improvements (laanwj)
|
||||
- #10260 `1d75597` [doc] Minor corrections to osx dependencies (fanquake)
|
||||
- #10189 `750c5a5` devtools/net: add a verifier for scriptable changes. Use it to make CNode::id private (theuni)
|
||||
- #10322 `bc64b5a` Use hardware timestamps in RNG seeding (sipa)
|
||||
- #10381 `7f2b9e0` Shadowing warnings are not enabled by default, update doc accordingly (paveljanik)
|
||||
- #10380 `b6ee855` [doc] Removing comments about dirty entries on txmempool (madeo)
|
||||
- #10383 `d0c37ee` [logging] log system time and mock time (jnewbery)
|
||||
- #10404 `b45a52a` doc: Add logging to FinalizeNode() (sdaftuar)
|
||||
- #10388 `526e839` Output line to debug.log when IsInitialBlockDownload latches to false (morcos)
|
||||
- #10372 `15254e9` Add perf counter data to GetStrongRandBytes state in scheduler (TheBlueMatt)
|
||||
- #10461 `55b72f3` Update style guide (sipa)
|
||||
- #10486 `10e8c0a` devtools: Retry after signing fails in github-merge (laanwj)
|
||||
- #10447 `f259263` Make digibyted invalid argument error message specific (laanwj)
|
||||
- #10495 `6a38b79` contrib: Update location of seeds.txt (laanwj)
|
||||
- #10469 `b6b150b` Fixing typo in rpcdump.cpp help message (keystrike)
|
||||
- #10451 `27b9931` contrib/init/digibyted.openrcconf: Don't disable wallet by default (luke-jr)
|
||||
- #10323 `00d3692` Update to latest libsecp256k1 master (sipa)
|
||||
- #10422 `cec9e1e` Fix timestamp in fee estimate debug message (morcos)
|
||||
- #10566 `5d034ee` [docs] Use the "domain name setup" image (previously unused) in the gitian docs (practicalswift)
|
||||
- #10534 `a514ac3` Clarify prevector::erase and avoid swap-to-clear (sipa)
|
||||
- #10575 `22ec768` Header include guideline (sipa)
|
||||
- #10480 `fbf5d3b` Improve commit-check-script.sh (sipa)
|
||||
- #10502 `1ad3d4e` scripted-diff: Remove BOOST_FOREACH, Q_FOREACH and PAIRTYPE (jtimon)
|
||||
- #10377 `b63be2c` Use rdrand as entropy source on supported platforms (sipa)
|
||||
- #9895 `228c319` Turn TryCreateDirectory() into TryCreateDirectories() (benma)
|
||||
- #10602 `d76e84a` Make clang-format use C++11 features (e.g. A<A<int>> instead of A<A<int> >) (practicalswift)
|
||||
- #10623 `c38f540` doc: Add 0.14.2 release notes (MarcoFalke)
|
||||
- #10276 `b750b33` contrib/verifybinaries: allow filtering by platform (knocte)
|
||||
- #10248 `01c4b14` Rewrite addrdb with less duplication using CHashVerifier (sipa)
|
||||
- #10577 `232508f` Add an explanation of quickly hashing onto a non-power of two range (gmaxwell)
|
||||
- #10608 `eee398f` Add a comment explaining the use of MAX_BLOCK_BASE_SIZE (gmaxwell)
|
||||
- #10728 `7397af9` fix typo in help text for removeprunedfunds (AkioNak)
|
||||
- #10193 `6dbcc74` scripted-diff: Remove #include <boost/foreach.hpp> (jtimon)
|
||||
- #10676 `379aed0` document script-based return fields for validateaddress (instagibbs)
|
||||
- #10651 `cef4b5c` Verify binaries from digibyte.org and digibyte.org (TheBlueMatt)
|
||||
- #10786 `ca4c545` Add PR description to merge commit in github-merge.py (sipa)
|
||||
- #10812 `c5904e8` [utils] Allow digibyte-cli's -rpcconnect option to be used with square brackets (jnewbery)
|
||||
- #10842 `3895e25` Fix incorrect Doxygen tag (@ince → @since). Doxygen parameter name matching (practicalswift)
|
||||
- #10681 `df0793f` add gdb attach process to test README (instagibbs)
|
||||
- #10789 `1124328` Punctuation/grammer fixes in rpcwallet.cpp (stevendlander)
|
||||
- #10655 `78f307b` Properly document target_confirmations in listsinceblock (RHavar)
|
||||
- #10917 `5c003cb` developer-notes: add reference to snake_case and PascalCase (benma)
|
||||
- #11003 `4b5a7ce` Docs: Capitalize bullet points in CONTRIBUTING guide (eklitzke)
|
||||
- #10968 `98aa3f6` Add instructions for parallel gitian builds (coblee)
|
||||
- #11076 `1c4b9b3` 0.15 release-notes nits: fix redundancy, remove accidental parenthesis & fix range style (practicalswift)
|
||||
- #11090 `8f0121c` Update contributor names in release-notes.md (Derek701)
|
||||
- #11056 `cbdd338` disable jni in builds (instagibbs)
|
||||
- #11080 `2b59cfb` doc: Update build-openbsd for 6.1 (laanwj)
|
||||
- #11119 `0a6af47` [doc] build-windows: Mention that only trusty works (MarcoFalke)
|
||||
- #11108 `e8ad101` Changing -txindex requires -reindex, not -reindex-chainstate (TheBlueMatt)
|
||||
- #9792 `342b9bc` FastRandomContext improvements and switch to ChaCha20 (sipa)
|
||||
- #9505 `67ed40e` Prevector Quick Destruct (JeremyRubin)
|
||||
- #10820 `ef37f20` Use cpuid intrinsics instead of asm code (sipa)
|
||||
- #9999 `a328904` [LevelDB] Plug leveldb logs to digibyte logs (NicolasDorier)
|
||||
- #9693 `c5e9e42` Prevent integer overflow in ReadVarInt (gmaxwell)
|
||||
- #10129 `351d0ad` scheduler: fix sub-second precision with boost < 1.50 (theuni)
|
||||
- #10153 `fade788` logging: Fix off-by-one for shrinkdebugfile default (MarcoFalke)
|
||||
- #10305 `c45da32` Fix potential NPD introduced in b297426c (TheBlueMatt)
|
||||
- #10338 `daf3e7d` Maintain state across GetStrongRandBytes calls (sipa)
|
||||
- #10544 `a4fe077` Update to LevelDB 1.20 (sipa)
|
||||
- #10614 `cafe24f` random: fix crash on some 64bit platforms (theuni)
|
||||
- #10714 `2a09a38` Avoid printing incorrect block indexing time due to uninitialized variable (practicalswift)
|
||||
- #10837 `8bc6d1f` Fix resource leak on error in GetDevURandom (corebob)
|
||||
- #10832 `89bb036` init: Factor out AppInitLockDataDirectory and fix startup core dump issue (laanwj)
|
||||
- #10914 `b995a37` Add missing lock in CScheduler::AreThreadsServicingQueue() (TheBlueMatt)
|
||||
- #10958 `659c096` Update to latest DigiByte patches for LevelDB (sipa)
|
||||
- #10919 `c1c671f` Fix more init bugs (TheBlueMatt)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- ロハン ダル
|
||||
- Ahmad Kazi
|
||||
- aideca
|
||||
- Akio Nakamura
|
||||
- Alex Morcos
|
||||
- Allan Doensen
|
||||
- Andres G. Aragoneses
|
||||
- Andrew Chow
|
||||
- Angel Leon
|
||||
- Awemany
|
||||
- Bob McElrath
|
||||
- Brian McMichael
|
||||
- BtcDrak
|
||||
- Charlie Lee
|
||||
- Chris Gavin
|
||||
- Chris Stewart
|
||||
- Cory Fields
|
||||
- CryptAxe
|
||||
- Dag Robole
|
||||
- Daniel Aleksandersen
|
||||
- Daniel Cousens
|
||||
- darksh1ne
|
||||
- Dimitris Tsapakidis
|
||||
- Eric Shaw
|
||||
- Evan Klitzke
|
||||
- fanquake
|
||||
- Felix Weis
|
||||
- flack
|
||||
- Guido Vranken
|
||||
- Greg Griffith
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- Ian Kelling
|
||||
- Jack Grigg
|
||||
- James Evans
|
||||
- James Hilliard
|
||||
- Jameson Lopp
|
||||
- Jeremy Rubin
|
||||
- Jimmy Song
|
||||
- João Barbosa
|
||||
- Johnathan Corgan
|
||||
- John Newbery
|
||||
- Jonas Schnelli
|
||||
- Jorge Timón
|
||||
- Karl-Johan Alm
|
||||
- kewde
|
||||
- KibbledJiveElkZoo
|
||||
- Kirit Thadaka
|
||||
- kobake
|
||||
- Kyle Honeycutt
|
||||
- Lawrence Nahum
|
||||
- Luke Dashjr
|
||||
- Marco Falke
|
||||
- Marcos Mayorga
|
||||
- Marijn Stollenga
|
||||
- Mario Dian
|
||||
- Mark Friedenbach
|
||||
- Marko Bencun
|
||||
- Masahiko Hyuga
|
||||
- Matt Corallo
|
||||
- Matthew Zipkin
|
||||
- Matthias Grundmann
|
||||
- Michael Goldstein
|
||||
- Michael Rotarius
|
||||
- Mikerah
|
||||
- Mike van Rossum
|
||||
- Mitchell Cash
|
||||
- Nicolas Dorier
|
||||
- Patrick Strateman
|
||||
- Pavel Janík
|
||||
- Pavlos Antoniou
|
||||
- Pavol Rusnak
|
||||
- Pedro Branco
|
||||
- Peter Todd
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- René Nyffenegger
|
||||
- Ricardo Velhote
|
||||
- romanornr
|
||||
- Russell Yanofsky
|
||||
- Rusty Russell
|
||||
- Ryan Havar
|
||||
- shaolinfry
|
||||
- Shigeya Suzuki
|
||||
- Simone Madeo
|
||||
- Spencer Lievens
|
||||
- Steven D. Lander
|
||||
- Suhas Daftuar
|
||||
- Takashi Mitsuta
|
||||
- Thomas Snider
|
||||
- Timothy Redaelli
|
||||
- tintinweb
|
||||
- tnaka
|
||||
- Warren Togami
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
277
doc/release-notes/release-notes-0.15.1.md
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
DigiByte Core version *0.15.1* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.1/>
|
||||
|
||||
or
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.1/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
The first time you run version 0.15.0 or higher, your chainstate database will
|
||||
be converted to a new format, which will take anywhere from a few minutes to
|
||||
half an hour, depending on the speed of your machine.
|
||||
|
||||
The file format of `fee_estimates.dat` changed in version 0.15.0. Hence, a
|
||||
downgrade from version 0.15 or upgrade to version 0.15 will cause all fee
|
||||
estimates to be discarded.
|
||||
|
||||
Note that the block database format also changed in version 0.8.0 and there is no
|
||||
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
|
||||
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
|
||||
However, as usual, old wallet versions are still supported.
|
||||
|
||||
Downgrading warning
|
||||
-------------------
|
||||
|
||||
The chainstate database for this release is not compatible with previous
|
||||
releases, so if you run 0.15 and then decide to switch back to any
|
||||
older version, you will need to run the old release with the `-reindex-chainstate`
|
||||
option to rebuild the chainstate data structures in the old format.
|
||||
|
||||
If your node has pruning enabled, this will entail re-downloading and
|
||||
processing the entire blockchain.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Network fork safety enhancements
|
||||
--------------------------------
|
||||
|
||||
A number of changes to the way DigiByte Core deals with peer connections and invalid blocks
|
||||
have been made, as a safety precaution against blockchain forks and misbehaving peers.
|
||||
|
||||
- Unrequested blocks with less work than the minimum-chain-work are now no longer processed even
|
||||
if they have more work than the tip (a potential issue during IBD where the tip may have low-work).
|
||||
This prevents peers wasting the resources of a node.
|
||||
|
||||
- Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
|
||||
|
||||
- For a given outbound peer, we now check whether their best known block has at least as much work as our tip. If it
|
||||
doesn't, and if we still haven't heard about a block with sufficient work after a 20 minute timeout, then we send
|
||||
a single getheaders message, and wait 2 more minutes. If after two minutes their best known block has insufficient
|
||||
work, we disconnect that peer. We protect 4 of our outbound peers from being disconnected by this logic to prevent
|
||||
excessive network topology changes as a result of this algorithm, while still ensuring that we have a reasonable
|
||||
number of nodes not known to be on bogus chains.
|
||||
|
||||
- Outbound (non-manual) peers that serve us block headers that are already known to be invalid (other than compact
|
||||
block announcements, because BIP 152 explicitly permits nodes to relay compact blocks before fully validating them)
|
||||
will now be disconnected.
|
||||
|
||||
- If the chain tip has not been advanced for over 30 minutes, we now assume the tip may be stale and will try to connect
|
||||
to an additional outbound peer. A periodic check ensures that if this extra peer connection is in use, we will disconnect
|
||||
the peer that least recently announced a new block.
|
||||
|
||||
- The set of all known invalid-themselves blocks (i.e. blocks which we attempted to connect but which were found to be
|
||||
invalid) are now tracked and used to check if new headers build on an invalid chain. This ensures that everything that
|
||||
descends from an invalid block is marked as such.
|
||||
|
||||
|
||||
Miner block size limiting deprecated
|
||||
------------------------------------
|
||||
|
||||
Though blockmaxweight has been preferred for limiting the size of blocks returned by
|
||||
getblocktemplate since 0.13.0, blockmaxsize remained as an option for those who wished
|
||||
to limit their block size directly. Using this option resulted in a few UI issues as
|
||||
well as non-optimal fee selection and ever-so-slightly worse performance, and has thus
|
||||
now been deprecated. Further, the blockmaxsize option is now used only to calculate an
|
||||
implied blockmaxweight, instead of limiting block size directly. Any miners who wish
|
||||
to limit their blocks by size, instead of by weight, will have to do so manually by
|
||||
removing transactions from their block template directly.
|
||||
|
||||
|
||||
GUI settings backed up on reset
|
||||
-------------------------------
|
||||
|
||||
The GUI settings will now be written to `guisettings.ini.bak` in the data directory before wiping them when
|
||||
the `-resetguisettings` argument is used. This can be used to retroactively troubleshoot issues due to the
|
||||
GUI settings.
|
||||
|
||||
|
||||
Duplicate wallets disallowed
|
||||
----------------------------
|
||||
|
||||
Previously, it was possible to open the same wallet twice by manually copying the wallet file, causing
|
||||
issues when both were opened simultaneously. It is no longer possible to open copies of the same wallet.
|
||||
|
||||
|
||||
Debug `-minimumchainwork` argument added
|
||||
----------------------------------------
|
||||
|
||||
A hidden debug argument `-minimumchainwork` has been added to allow a custom minimum work value to be used
|
||||
when validating a chain.
|
||||
|
||||
|
||||
Low-level RPC changes
|
||||
----------------------
|
||||
|
||||
- The "currentblocksize" value in getmininginfo has been removed.
|
||||
|
||||
- `dumpwallet` no longer allows overwriting files. This is a security measure
|
||||
as well as prevents dangerous user mistakes.
|
||||
|
||||
- `backupwallet` will now fail when attempting to backup to source file, rather than
|
||||
destroying the wallet.
|
||||
|
||||
- `listsinceblock` will now throw an error if an unknown `blockhash` argument
|
||||
value is passed, instead of returning a list of all wallet transactions since
|
||||
the genesis block. The behaviour is unchanged when an empty string is provided.
|
||||
|
||||
0.15.1 Change log
|
||||
=================
|
||||
|
||||
### Mining
|
||||
- #11100 `7871a7d` Fix confusing blockmax{size,weight} options, dont default to throwing away money (TheBlueMatt)
|
||||
|
||||
### RPC and other APIs
|
||||
- #10859 `2a5d099` gettxout: Slightly improve doc and tests (jtimon)
|
||||
- #11267 `b1a6c94` update cli for estimate\*fee argument rename (laanwj)
|
||||
- #11483 `20cdc2b` Fix importmulti bug when importing an already imported key (pedrobranco)
|
||||
- #9937 `a43be5b` Prevent `dumpwallet` from overwriting files (laanwj)
|
||||
- #11465 `405e069` Update named args documentation for importprivkey (dusty-wil)
|
||||
- #11131 `b278a43` Write authcookie atomically (laanwj)
|
||||
- #11565 `7d4546f` Make listsinceblock refuse unknown block hash (ryanofsky)
|
||||
- #11593 `8195cb0` Work-around an upstream libevent bug (theuni)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #11397 `27e861a` Improve and document SOCKS code (laanwj)
|
||||
- #11252 `0fe2a9a` When clearing addrman clear mapInfo and mapAddr (instagibbs)
|
||||
- #11527 `a2bd86a` Remove my testnet DNS seed (schildbach)
|
||||
- #10756 `0a5477c` net processing: swap out signals for an interface class (theuni)
|
||||
- #11531 `55b7abf` Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)
|
||||
- #11560 `49bf090` Connect to a new outbound peer if our tip is stale (sdaftuar)
|
||||
- #11568 `fc966bb` Disconnect outbound peers on invalid chains (sdaftuar)
|
||||
- #11578 `ec8dedf` Add missing lock in ProcessHeadersMessage(...) (practicalswift)
|
||||
- #11456 `6f27965` Replace relevant services logic with a function suite (TheBlueMatt)
|
||||
- #11490 `bf191a7` Disconnect from outbound peers with bad headers chains (sdaftuar)
|
||||
|
||||
### Validation
|
||||
- #10357 `da4908c` Allow setting nMinimumChainWork on command line (sdaftuar)
|
||||
- #11458 `2df65ee` Don't process unrequested, low-work blocks (sdaftuar)
|
||||
|
||||
### Build system
|
||||
- #11440 `b6c0209` Fix validationinterface build on super old boost/clang (TheBlueMatt)
|
||||
- #11530 `265bb21` Add share/rpcuser to dist. source code archive (MarcoFalke)
|
||||
|
||||
### GUI
|
||||
- #11334 `19d63e8` Remove custom fee radio group and remove nCustomFeeRadio setting (achow101)
|
||||
- #11198 `7310f1f` Fix display of package name on 'open config file' tooltip (esotericnonsense)
|
||||
- #11015 `6642558` Add delay before filtering transactions (lclc)
|
||||
- #11338 `6a62c74` Backup former GUI settings on `-resetguisettings` (laanwj)
|
||||
- #11335 `8d13b42` Replace save|restoreWindowGeometry with Qt functions (MeshCollider)
|
||||
- #11237 `2e31b1d` Fixing division by zero in time remaining (MeshCollider)
|
||||
- #11247 `47c02a8` Use IsMine to validate custom change address (MarcoFalke)
|
||||
|
||||
### Wallet
|
||||
- #11017 `9e8aae3` Close DB on error (kallewoof)
|
||||
- #11225 `6b4d9f2` Update stored witness in AddToWallet (sdaftuar)
|
||||
- #11126 `2cb720a` Acquire cs_main lock before cs_wallet during wallet initialization (ryanofsky)
|
||||
- #11476 `9c8006d` Avoid opening copied wallet databases simultaneously (ryanofsky)
|
||||
- #11492 `de7053f` Fix leak in CDB constructor (promag)
|
||||
- #11376 `fd79ed6` Ensure backupwallet fails when attempting to backup to source file (tomasvdw)
|
||||
- #11326 `d570aa4` Fix crash on shutdown with invalid wallet (MeshCollider)
|
||||
|
||||
### Tests and QA
|
||||
- #11399 `a825d4a` Fix bip68-sequence rpc test (jl2012)
|
||||
- #11150 `847c75e` Add getmininginfo test (mess110)
|
||||
- #11407 `806c78f` add functional test for mempoolreplacement command line arg (instagibbs)
|
||||
- #11433 `e169349` Restore digibyte-util-test py2 compatibility (MarcoFalke)
|
||||
- #11308 `2e1ac70` zapwallettxes: Wait up to 3s for mempool reload (MarcoFalke)
|
||||
- #10798 `716066d` test digibyte-cli (jnewbery)
|
||||
- #11443 `019c492` Allow "make cov" out-of-tree; Fix rpc mapping check (MarcoFalke)
|
||||
- #11445 `51bad91` 0.15.1 Backports (MarcoFalke)
|
||||
- #11319 `2f0b30a` Fix error introduced into p2p-segwit.py, and prevent future similar errors (sdaftuar)
|
||||
- #10552 `e4605d9` Tests for zmqpubrawtx and zmqpubrawblock (achow101)
|
||||
- #11067 `eeb24a3` TestNode: Add wait_until_stopped helper method (MarcoFalke)
|
||||
- #11068 `5398f20` Move wait_until to util (MarcoFalke)
|
||||
- #11125 `812c870` Add digibyte-cli -stdin and -stdinrpcpass functional tests (promag)
|
||||
- #11077 `1d80d1e` fix timeout issues from TestNode (jnewbery)
|
||||
- #11078 `f1ced0d` Make p2p-leaktests.py more robust (jnewbery)
|
||||
- #11210 `f3f7891` Stop test_digibyte-qt touching ~/.digibyte (MeshCollider)
|
||||
- #11234 `f0b6795` Remove redundant testutil.cpp|h files (MeshCollider)
|
||||
- #11215 `cef0319` fixups from set_test_params() (jnewbery)
|
||||
- #11345 `f9cf7b5` Check connectivity before sending in assumevalid.py (jnewbery)
|
||||
- #11091 `c276c1e` Increase initial RPC timeout to 60 seconds (laanwj)
|
||||
- #10711 `fc2aa09` Introduce TestNode (jnewbery)
|
||||
- #11230 `d8dd8e7` Fixup dbcrash interaction with add_nodes() (jnewbery)
|
||||
- #11241 `4424176` Improve signmessages functional test (mess110)
|
||||
- #11116 `2c4ff35` Unit tests for script/standard and IsMine functions (jimpo)
|
||||
- #11422 `a36f332` Verify DBWrapper iterators are taking snapshots (TheBlueMatt)
|
||||
- #11121 `bb5e7cb` TestNode tidyups (jnewbery)
|
||||
- #11521 `ca0f3f7` travis: move back to the minimal image (theuni)
|
||||
- #11538 `adbc9d1` Fix race condition failures in replace-by-fee.py, sendheaders.py (sdaftuar)
|
||||
- #11472 `4108879` Make tmpdir option an absolute path, misc cleanup (MarcoFalke)
|
||||
- #10853 `5b728c8` Fix RPC failure testing (again) (jnewbery)
|
||||
- #11310 `b6468d3` Test listwallets RPC (mess110)
|
||||
|
||||
### Miscellaneous
|
||||
- #11377 `75997c3` Disallow uncompressed pubkeys in digibyte-tx [multisig] output adds (TheBlueMatt)
|
||||
- #11437 `dea3b87` [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
|
||||
- #11318 `8b61aee` Put back inadvertently removed copyright notices (gmaxwell)
|
||||
- #11442 `cf18f42` [Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)
|
||||
- #10957 `50bd3f6` Avoid returning a BIP9Stats object with uninitialized values (practicalswift)
|
||||
- #11539 `01223a0` [verify-commits] Allow revoked keys to expire (TheBlueMatt)
|
||||
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- Andreas Schildbach
|
||||
- Andrew Chow
|
||||
- Chris Moore
|
||||
- Cory Fields
|
||||
- Cristian Mircea Messel
|
||||
- Daniel Edgecumbe
|
||||
- Donal OConnor
|
||||
- Dusty Williams
|
||||
- fanquake
|
||||
- Gregory Sanders
|
||||
- Jim Posen
|
||||
- John Newbery
|
||||
- Johnson Lau
|
||||
- João Barbosa
|
||||
- Jorge Timón
|
||||
- Karl-Johan Alm
|
||||
- Lucas Betschart
|
||||
- MarcoFalke
|
||||
- Matt Corallo
|
||||
- Paul Berg
|
||||
- Pedro Branco
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- Russell Yanofsky
|
||||
- Samuel Dobson
|
||||
- Suhas Daftuar
|
||||
- Tomas van der Wansem
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||
118
doc/release-notes/release-notes-0.15.2.md
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
DigiByte Core version *0.15.2* is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.15.2/>
|
||||
|
||||
This is a new minor version release, including various bugfixes and
|
||||
performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
The first time you run version 0.15.0 or higher, your chainstate database will
|
||||
be converted to a new format, which will take anywhere from a few minutes to
|
||||
half an hour, depending on the speed of your machine.
|
||||
|
||||
The file format of `fee_estimates.dat` changed in version 0.15.0. Hence, a
|
||||
downgrade from version 0.15 or upgrade to version 0.15 will cause all fee
|
||||
estimates to be discarded.
|
||||
|
||||
Note that the block database format also changed in version 0.8.0 and there is no
|
||||
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
|
||||
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
|
||||
However, as usual, old wallet versions are still supported.
|
||||
|
||||
Downgrading warning
|
||||
-------------------
|
||||
|
||||
The chainstate database for this release is not compatible with previous
|
||||
releases, so if you run 0.15 and then decide to switch back to any
|
||||
older version, you will need to run the old release with the `-reindex-chainstate`
|
||||
option to rebuild the chainstate data structures in the old format.
|
||||
|
||||
If your node has pruning enabled, this will entail re-downloading and
|
||||
processing the entire blockchain.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Denial-of-Service vulnerability CVE-2018-17144
|
||||
-------------------------------
|
||||
|
||||
A denial-of-service vulnerability exploitable by miners has been discovered in
|
||||
DigiByte Core versions 0.14.0 up to 0.16.2. It is recommended to upgrade any of
|
||||
the vulnerable versions to 0.15.2 or 0.16.3 as soon as possible.
|
||||
|
||||
0.15.2 Change log
|
||||
=================
|
||||
|
||||
### Build system
|
||||
|
||||
- #11995 `9bb1a16` depends: Fix Qt build with XCode 9.2(fanquake)
|
||||
- #12946 `93b9a61` depends: Fix Qt build with XCode 9.3(fanquake)
|
||||
- #13544 `9fd3e00` depends: Update Qt download url (fanquake)
|
||||
- #11847 `cb7ef31` Make boost::multi_index comparators const (sdaftuar)
|
||||
|
||||
### Consensus
|
||||
- #14247 `4b8a3f5` Fix crash bug with duplicate inputs within a transaction (TheBlueMatt, sdaftuar)
|
||||
|
||||
### RPC
|
||||
- #11676 `7af2457` contrib/init: Update openrc-run filename (Luke Dashjr)
|
||||
- #11277 `7026845` Fix uninitialized URI in batch RPC requests (Russell Yanofsky)
|
||||
|
||||
### Wallet
|
||||
- #11289 `3f1db56` Wrap dumpwallet warning and note scripts aren't dumped (MeshCollider)
|
||||
- #11289 `42ea47d` Add wallet backup text to import*, add* and dumpwallet RPCs (MeshCollider)
|
||||
- #11590 `6372a75` [Wallet] always show help-line of wallet encryption calls (Jonas Schnelli)
|
||||
|
||||
### digibyte-tx
|
||||
|
||||
- #11554 `a69cc07` Sanity-check script sizes in digibyte-tx (TheBlueMatt)
|
||||
|
||||
### Tests
|
||||
- #11277 `3a6cdd4` Add test for multiwallet batch RPC calls (Russell Yanofsky)
|
||||
- #11647 `1c8c7f8` Add missing batch rpc calls to python coverage logs (Russell Yanofsky)
|
||||
- #11277 `1036c43` Add missing multiwallet rpc calls to python coverage logs (Russell Yanofsky)
|
||||
- #11277 `305f768` Limit AuthServiceProxyWrapper.\_\_getattr\_\_ wrapping (Russell Yanofsky)
|
||||
- #11277 `2eea279` Make AuthServiceProxy.\_batch method usable (Russell Yanofsky)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- fanquake
|
||||
- Jonas Schnelli
|
||||
- Luke Dashjr
|
||||
- Matt Corallo
|
||||
- MeshCollider
|
||||
- Russell Yanofsky
|
||||
- Suhas Daftuar
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
And to those that reported security issues:
|
||||
|
||||
- awemany (for CVE-2018-17144, previously credited as "anonymous reporter")
|
||||
|
||||
720
doc/release-notes/release-notes-0.16.0.md
Normal file
|
|
@ -0,0 +1,720 @@
|
|||
DigiByte Core version 0.16.0 is now available from:
|
||||
|
||||
<https://digibyte.org/bin/digibyte-core-0.16.0/>
|
||||
|
||||
This is a new major version release, including new features, various bugfixes
|
||||
and performance improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/digibyte/digibyte/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
<https://digibyte.org/en/list/announcements/join/>
|
||||
|
||||
How to Upgrade
|
||||
==============
|
||||
|
||||
If you are running an older version, shut it down. Wait until it has completely
|
||||
shut down (which might take a few minutes for older versions), then run the
|
||||
installer (on Windows) or just copy over `/Applications/DigiByte-Qt` (on Mac)
|
||||
or `digibyted`/`digibyte-qt` (on Linux).
|
||||
|
||||
The first time you run version 0.15.0 or newer, your chainstate database will be converted to a
|
||||
new format, which will take anywhere from a few minutes to half an hour,
|
||||
depending on the speed of your machine.
|
||||
|
||||
Note that the block database format also changed in version 0.8.0 and there is no
|
||||
automatic upgrade code from before version 0.8 to version 0.15.0 or higher. Upgrading
|
||||
directly from 0.7.x and earlier without re-downloading the blockchain is not supported.
|
||||
However, as usual, old wallet versions are still supported.
|
||||
|
||||
Downgrading warning
|
||||
-------------------
|
||||
|
||||
Wallets created in 0.16 and later are not compatible with versions prior to 0.16
|
||||
and will not work if you try to use newly created wallets in older versions. Existing
|
||||
wallets that were created with older versions are not affected by this.
|
||||
|
||||
Compatibility
|
||||
==============
|
||||
|
||||
DigiByte Core is extensively tested on multiple operating systems using
|
||||
the Linux kernel, macOS 10.8+, and Windows Vista and later. Windows XP is not supported.
|
||||
|
||||
DigiByte Core should also work on most other Unix-like systems but is not
|
||||
frequently tested on them.
|
||||
|
||||
Notable changes
|
||||
===============
|
||||
|
||||
Wallet changes
|
||||
---------------
|
||||
|
||||
### Segwit Wallet
|
||||
|
||||
DigiByte Core 0.16.0 introduces full support for segwit in the wallet and user interfaces. A new `-addresstype` argument has been added, which supports `legacy`, `p2sh-segwit` (default), and `bech32` addresses. It controls what kind of addresses are produced by `getnewaddress`, `getaccountaddress`, and `createmultisigaddress`. A `-changetype` argument has also been added, with the same options, and by default equal to `-addresstype`, to control which kind of change is used.
|
||||
|
||||
A new `address_type` parameter has been added to the `getnewaddress` and `addmultisigaddress` RPCs to specify which type of address to generate.
|
||||
A `change_type` argument has been added to the `fundrawtransaction` RPC to override the `-changetype` argument for specific transactions.
|
||||
|
||||
- All segwit addresses created through `getnewaddress` or `*multisig` RPCs explicitly get their redeemscripts added to the wallet file. This means that downgrading after creating a segwit address will work, as long as the wallet file is up to date.
|
||||
- All segwit keys in the wallet get an implicit redeemscript added, without it being written to the file. This means recovery of an old backup will work, as long as you use new software.
|
||||
- All keypool keys that are seen used in transactions explicitly get their redeemscripts added to the wallet files. This means that downgrading after recovering from a backup that includes a segwit address will work
|
||||
|
||||
Note that some RPCs do not yet support segwit addresses. Notably, `signmessage`/`verifymessage` doesn't support segwit addresses, nor does `importmulti` at this time. Support for segwit in those RPCs will continue to be added in future versions.
|
||||
|
||||
P2WPKH change outputs are now used by default if any destination in the transaction is a P2WPKH or P2WSH output. This is done to ensure the change output is as indistinguishable from the other outputs as possible in either case.
|
||||
|
||||
### BIP173 (Bech32) Address support ("bc1..." addresses)
|
||||
|
||||
Full support for native segwit addresses (BIP173 / Bech32) has now been added.
|
||||
This includes the ability to send to BIP173 addresses (including non-v0 ones), and generating these
|
||||
addresses (including as default new addresses, see above).
|
||||
|
||||
A checkbox has been added to the GUI to select whether a Bech32 address or P2SH-wrapped address should be generated when using segwit addresses. When launched with `-addresstype=bech32` it is checked by default. When launched with `-addresstype=legacy` it is unchecked and disabled.
|
||||
|
||||
### HD-wallets by default
|
||||
|
||||
Due to a backward-incompatible change in the wallet database, wallets created
|
||||
with version 0.16.0 will be rejected by previous versions. Also, version 0.16.0
|
||||
will only create hierarchical deterministic (HD) wallets. Note that this only applies
|
||||
to new wallets; wallets made with previous versions will not be upgraded to be HD.
|
||||
|
||||
### Replace-By-Fee by default in GUI
|
||||
|
||||
The send screen now uses BIP125 RBF by default, regardless of `-walletrbf`.
|
||||
There is a checkbox to mark the transaction as final.
|
||||
|
||||
The RPC default remains unchanged: to use RBF, launch with `-walletrbf=1` or
|
||||
use the `replaceable` argument for individual transactions.
|
||||
|
||||
### Wallets directory configuration (`-walletdir`)
|
||||
|
||||
DigiByte Core now has more flexibility in where the wallets directory can be
|
||||
located. Previously wallet database files were stored at the top level of the
|
||||
digibyte data directory. The behavior is now:
|
||||
|
||||
- For new installations (where the data directory doesn't already exist),
|
||||
wallets will now be stored in a new `wallets/` subdirectory inside the data
|
||||
directory by default.
|
||||
- For existing nodes (where the data directory already exists), wallets will be
|
||||
stored in the data directory root by default. If a `wallets/` subdirectory
|
||||
already exists in the data directory root, then wallets will be stored in the
|
||||
`wallets/` subdirectory by default.
|
||||
- The location of the wallets directory can be overridden by specifying a
|
||||
`-walletdir=<path>` option where `<path>` can be an absolute path to a
|
||||
directory or directory symlink.
|
||||
|
||||
Care should be taken when choosing the wallets directory location, as if it
|
||||
becomes unavailable during operation, funds may be lost.
|
||||
|
||||
Build: Minimum GCC bumped to 4.8.x
|
||||
------------------------------------
|
||||
The minimum version of the GCC compiler required to compile DigiByte Core is now 4.8. No effort will be
|
||||
made to support older versions of GCC. See discussion in issue #11732 for more information.
|
||||
The minimum version for the Clang compiler is still 3.3. Other minimum dependency versions can be found in `doc/dependencies.md` in the repository.
|
||||
|
||||
Support for signalling pruned nodes (BIP159)
|
||||
---------------------------------------------
|
||||
Pruned nodes can now signal BIP159's NODE_NETWORK_LIMITED using service bits, in preparation for
|
||||
full BIP159 support in later versions. This would allow pruned nodes to serve the most recent blocks. However, the current change does not yet include support for connecting to these pruned peers.
|
||||
|
||||
Performance: SHA256 assembly enabled by default
|
||||
-------------------------------------------------
|
||||
The SHA256 hashing optimizations for architectures supporting SSE4, which lead to ~50% speedups in SHA256 on supported hardware (~5% faster synchronization and block validation), have now been enabled by default. In previous versions they were enabled using the `--enable-experimental-asm` flag when building, but are now the default and no longer deemed experimental.
|
||||
|
||||
GUI changes
|
||||
-----------
|
||||
- Uses of "µDGB" in the GUI now also show the more colloquial term "bits", specified in BIP176.
|
||||
- The option to reuse a previous address has now been removed. This was justified by the need to "resend" an invoice, but now that we have the request history, that need should be gone.
|
||||
- Support for searching by TXID has been added, rather than just address and label.
|
||||
- A "Use available balance" option has been added to the send coins dialog, to add the remaining available wallet balance to a transaction output.
|
||||
- A toggle for unblinding the password fields on the password dialog has been added.
|
||||
|
||||
RPC changes
|
||||
------------
|
||||
|
||||
### New `rescanblockchain` RPC
|
||||
|
||||
A new RPC `rescanblockchain` has been added to manually invoke a blockchain rescan.
|
||||
The RPC supports start and end-height arguments for the rescan, and can be used in a
|
||||
multiwallet environment to rescan the blockchain at runtime.
|
||||
|
||||
### New `savemempool` RPC
|
||||
A new `savemempool` RPC has been added which allows the current mempool to be saved to
|
||||
disk at any time to avoid it being lost due to crashes / power loss.
|
||||
|
||||
### Safe mode disabled by default
|
||||
|
||||
Safe mode is now disabled by default and must be manually enabled (with `-disablesafemode=0`) if you wish to use it. Safe mode is a feature that disables a subset of RPC calls - mostly related to the wallet and sending - automatically in case certain problem conditions with the network are detected. However, developers have come to regard these checks as not reliable enough to act on automatically. Even with safe mode disabled, they will still cause warnings in the `warnings` field of the `getneworkinfo` RPC and launch the `-alertnotify` command.
|
||||
|
||||
### Renamed script for creating JSON-RPC credentials
|
||||
|
||||
The `share/rpcuser/rpcuser.py` script was renamed to `share/rpcauth/rpcauth.py`. This script can be
|
||||
used to create `rpcauth` credentials for a JSON-RPC user.
|
||||
|
||||
### Validateaddress improvements
|
||||
|
||||
The `validateaddress` RPC output has been extended with a few new fields, and support for segwit addresses (both P2SH and Bech32). Specifically:
|
||||
* A new field `iswitness` is True for P2WPKH and P2WSH addresses ("bc1..." addresses), but not for P2SH-wrapped segwit addresses (see below).
|
||||
* The existing field `isscript` will now also report True for P2WSH addresses.
|
||||
* A new field `embedded` is present for all script addresses where the script is known and matches something that can be interpreted as a known address. This is particularly true for P2SH-P2WPKH and P2SH-P2WSH addresses. The value for `embedded` includes much of the information `validateaddress` would report if invoked directly on the embedded address.
|
||||
* For multisig scripts a new `pubkeys` field was added that reports the full public keys involved in the script (if known). This is a replacement for the existing `addresses` field (which reports the same information but encoded as P2PKH addresses), represented in a more useful and less confusing way. The `addresses` field remains present for non-segwit addresses for backward compatibility.
|
||||
* For all single-key addresses with known key (even when wrapped in P2SH or P2WSH), the `pubkey` field will be present. In particular, this means that invoking `validateaddress` on the output of `getnewaddress` will always report the `pubkey`, even when the address type is P2SH-P2WPKH.
|
||||
|
||||
### Low-level changes
|
||||
|
||||
- The deprecated RPC `getinfo` was removed. It is recommended that the more specific RPCs are used:
|
||||
* `getblockchaininfo`
|
||||
* `getnetworkinfo`
|
||||
* `getwalletinfo`
|
||||
* `getmininginfo`
|
||||
- The wallet RPC `getreceivedbyaddress` will return an error if called with an address not in the wallet.
|
||||
- The wallet RPC `addwitnessaddress` was deprecated and will be removed in version 0.17,
|
||||
set the `address_type` argument of `getnewaddress`, or option `-addresstype=[bech32|p2sh-segwit]` instead.
|
||||
- `dumpwallet` now includes hex-encoded scripts from the wallet in the dumpfile, and
|
||||
`importwallet` now imports these scripts, but corresponding addresses may not be added
|
||||
correctly or a manual rescan may be required to find relevant transactions.
|
||||
- The RPC `getblockchaininfo` now includes an `errors` field.
|
||||
- A new `blockhash` parameter has been added to the `getrawtransaction` RPC which allows for a raw transaction to be fetched from a specific block if known, even without `-txindex` enabled.
|
||||
- The `decoderawtransaction` and `fundrawtransaction` RPCs now have optional `iswitness` parameters to override the
|
||||
heuristic witness checks if necessary.
|
||||
- The `walletpassphrase` timeout is now clamped to 2^30 seconds.
|
||||
- Using addresses with the `createmultisig` RPC is now deprecated, and will be removed in a later version. Public keys should be used instead.
|
||||
- Blockchain rescans now no longer lock the wallet for the entire rescan process, so other RPCs can now be used at the same time (although results of balances / transactions may be incorrect or incomplete until the rescan is complete).
|
||||
- The `logging` RPC has now been made public rather than hidden.
|
||||
- An `initialblockdownload` boolean has been added to the `getblockchaininfo` RPC to indicate whether the node is currently in IBD or not.
|
||||
- `minrelaytxfee` is now included in the output of `getmempoolinfo`
|
||||
|
||||
Other changed command-line options
|
||||
----------------------------------
|
||||
- `-debuglogfile=<file>` can be used to specify an alternative debug logging file.
|
||||
- digibyte-cli now has an `-stdinrpcpass` option to allow the RPC password to be read from standard input.
|
||||
- The `-usehd` option has been removed.
|
||||
- digibyte-cli now supports a new `-getinfo` flag which returns an output like that of the now-removed `getinfo` RPC.
|
||||
|
||||
Testing changes
|
||||
----------------
|
||||
- The default regtest JSON-RPC port has been changed to 18443 to avoid conflict with testnet's default of 18332.
|
||||
- Segwit is now always active in regtest mode by default. Thus, if you upgrade a regtest node you will need to either -reindex or use the old rules by adding `vbparams=segwit:0:999999999999` to your regtest digibyte.conf. Failure to do this will result in a CheckBlockIndex() assertion failure that will look like: Assertion `(pindexFirstNeverProcessed != nullptr) == (pindex->nChainTx == 0)' failed.
|
||||
|
||||
0.16.0 change log
|
||||
------------------
|
||||
|
||||
### Block and transaction handling
|
||||
- #10953 `aeed345` Combine scriptPubKey and amount as CTxOut in CScriptCheck (jl2012)
|
||||
- #11309 `93d20a7` Minor cleanups for AcceptToMemoryPool (morcos)
|
||||
- #11418 `38c201f` Add error string for CLEANSTACK script violation (maaku)
|
||||
- #11411 `339da9c` Change SignatureHash input index check to an assert (jimpo)
|
||||
- #11406 `e12522d` Add state message print to AcceptBlock failure message (TheBlueMatt)
|
||||
- #11062 `26fee4f` Mark mempool import fails that were found in mempool as 'already there' (kallewoof)
|
||||
- #11269 `61fb806` CTxMemPoolEntry::UpdateAncestorState: modifySiagOps param type (donaloconnor)
|
||||
- #11747 `e970396` Fix: Open files read only if requested (Elbandi)
|
||||
- #11737 `46d1ebf` Document partial validation in ConnectBlock() (sdaftuar)
|
||||
- #10699 `c090262` Make all script validation flags backward compatible (sipa)
|
||||
- #10279 `214046f` Add a CChainState class to validation.cpp to take another step towards clarifying internal interfaces (TheBlueMatt)
|
||||
- #11824 `d9fdac1` Block ActivateBestChain to empty validationinterface queue (TheBlueMatt)
|
||||
- #12127 `9501dc2` Remove unused mempool index (sdaftuar)
|
||||
- #12118 `44080a9` Sort mempool by min(feerate, ancestor_feerate) (sdaftuar)
|
||||
- #8498 `0e3a411` Minimize the number of times it is checked that no money... (jtimon)
|
||||
- #12368 `3f5012b` Hold mempool.cs for the duration of ATMP (TheBlueMatt)
|
||||
- #12401 `d44cd7e` Reset pblocktree before deleting LevelDB file (Sjors)
|
||||
- #12415 `f893824` Interrupt loading thread after shutdown request (promag)
|
||||
|
||||
### P2P protocol and network code
|
||||
- #10596 `6866b49` Add vConnect to CConnman::Options (benma)
|
||||
- #10663 `9d31ed2` Split resolve out of connect (theuni)
|
||||
- #11113 `fef65c4` Ignore getheaders requests for very old side blocks (jimpo)
|
||||
- #11585 `5aeaa9c` addrman: Add missing lock in Clear() (CAddrMan) (practicalswift)
|
||||
- #11524 `5ef3b69` De-duplicate connection eviction logic (tjps)
|
||||
- #11580 `1f4375f` Do not send (potentially) invalid headers in response to getheaders (TheBlueMatt)
|
||||
- #11655 `aca77a4` Assert state.m_chain_sync.m_work_header in ConsiderEviction (practicalswift)
|
||||
- #11744 `3ff6ff5` Add missing locks in net.{cpp,h} (practicalswift)
|
||||
- #11740 `59d3dc8` Implement BIP159 NODE_NETWORK_LIMITED (pruned peers) *signaling only* (jonasschnelli)
|
||||
- #11583 `37ffa16` Do not make it trivial for inbound peers to generate log entries (TheBlueMatt)
|
||||
- #11363 `ba2f195` Split socket create/connect (theuni)
|
||||
- #11917 `bc66765` Add testnet DNS seed: seed.testnet.digibyte.sprovoost.nl (Sjors)
|
||||
- #11512 `6e89de5` Use GetDesireableServiceFlags in seeds, dnsseeds, fixing static seed adding (TheBlueMatt)
|
||||
- #12262 `16bac24` Hardcoded seed update (laanwj)
|
||||
- #12270 `9cf6393` Update chainTxData for 0.16 (laanwj)
|
||||
- #12392 `0f61651` Fix ignoring tx data requests when fPauseSend is set on a peer (TheBlueMatt)
|
||||
|
||||
### Wallet
|
||||
- #11039 `fc51565` Avoid second mapWallet lookup (promag)
|
||||
- #10952 `2621673` Remove vchDefaultKey and have better first run detection (achow101)
|
||||
- #11007 `fc5c237` Fix potential memory leak when loading a corrupted wallet file (practicalswift)
|
||||
- #10976 `07c92b9` Move some static functions out of wallet.h/cpp (ryanofsky)
|
||||
- #11117 `961901f` Prepare for non-Base58 addresses (sipa)
|
||||
- #10916 `e6ab88a` add missing lock to crypter GetKeys() (benma)
|
||||
- #10767 `791a0e6` Clarify wallet initialization / destruction interface (jnewbery)
|
||||
- #11250 `c22a53c` Bump wallet version to 159900 and remove the `usehd` option (achow101)
|
||||
- #11307 `4f7e37e` Display non-HD error on first run (MarcoFalke)
|
||||
- #11408 `69c7ece` Fix parameter name typo in ErasePurpose walletdb method (PierreRochard)
|
||||
- #11167 `aa624b6` Full BIP173 (Bech32) support (sipa)
|
||||
- #11594 `0ecc630` Improve -disablewallet parameter interaction (promag)
|
||||
- #10368 `77ba4bf` Remove helper conversion operator from wallet (kallewoof)
|
||||
- #11074 `99ec126` Assert that CWallet::SyncMetaData finds oldest transaction (BitonicEelis)
|
||||
- #11272 `e6e3fc3` CKeystore/CCrypter: move relevant implementation out of the header (jonasschnelli)
|
||||
- #10286 `927a1d7` Call wallet notify callbacks in scheduler thread (without cs_main) (TheBlueMatt)
|
||||
- #10600 `4ed8180` Make feebumper class stateless (ryanofsky)
|
||||
- #11466 `d080a7d` Specify custom wallet directory with -walletdir param (MeshCollider)
|
||||
- #11839 `8ab6c0b` Don't attempt mempool entry for wallet transactions on startup (instagibbs)
|
||||
- #11854 `2214954` Split up key and script metadata for better type safety (ryanofsky)
|
||||
- #11870 `ef8ba7d` Remove unnecessary mempool lock in ReacceptWalletTransactions (promag)
|
||||
- #11864 `2ae58d5` Make CWallet::FundTransaction atomic (promag)
|
||||
- #11886 `df71819` Clarify getbalance meaning a tiny bit in response to questions (TheBlueMatt)
|
||||
- #11923 `81c89e9` Remove unused fNoncriticalErrors variable from CWalletDB::FindWalletTx (PierreRochard)
|
||||
- #11726 `604e08c` Cleanups + nit fixes for walletdir PR (MeshCollider)
|
||||
- #11403 `d889c03` Segwit wallet support (sipa)
|
||||
- #11970 `b7450cd` Add test coverage for digibyte-cli multiwallet calls (ryanofsky)
|
||||
- #11904 `66e3af7` Add a lock to the wallet directory (MeshCollider)
|
||||
- #12101 `c7978be` Clamp walletpassphrase timeout to 2^30 seconds and check its bounds (achow101)
|
||||
- #12210 `17180fa` Deprecate addwitnessaddress (laanwj)
|
||||
- #12220 `f4c942e` Error if relative -walletdir is specified (ryanofsky)
|
||||
- #11281 `8470e64` Avoid permanent cs_main/cs_wallet lock during RescanFromTime (jonasschnelli)
|
||||
- #12119 `9594139` Use P2WPKH change output if any destination is P2WPKH or P2WSH (Sjors)
|
||||
- #12213 `eadb2da` Add address type option to addmultisigaddress (promag)
|
||||
- #12276 `7936446` Remove duplicate mapWallet lookups (promag)
|
||||
|
||||
### RPC and other APIs
|
||||
- #11008 `3841aaf` Enable disablesafemode by default (gmaxwell)
|
||||
- #11050 `7ed57d3` Avoid treating null RPC arguments different from missing arguments (ryanofsky)
|
||||
- #10997 `affe927` Add option -stdinrpcpass to digibyte-cli to allow RPC password to be read from standard input (jharvell)
|
||||
- #11179 `e0e3cbb` Push down safe mode checks (laanwj)
|
||||
- #11203 `d745b4c` add wtxid to mempool entry output (sdaftuar)
|
||||
- #11099 `bc561b4` Add savemempool RPC (greenaddress)
|
||||
- #10838 `66a5b41` (finally) remove getinfo (TheBlueMatt)
|
||||
- #10753 `7fcd61b` test: Check RPC argument mapping (laanwj)
|
||||
- #11288 `0f8e095` More user-friendly error message when partially signing (MeshCollider)
|
||||
- #11031 `ef8340d` deprecate estimatefee (jnewbery)
|
||||
- #10858 `9a8e916` Add "errors" field to getblockchaininfo and unify "errors" field in get*info RPCs (achow101)
|
||||
- #11021 `90926db` Fix getchaintxstats() (AkioNak)
|
||||
- #11367 `3a93270` getblockchaininfo: Add disk_size, prune_target_size (esotericnonsense)
|
||||
- #11006 `a1d78b5` Improve shutdown process (promag)
|
||||
- #11529 `ff92fbf` Avoid slow transaction search with txindex enabled (promag)
|
||||
- #11618 `87d90ef` Lock cs_main in blockToJSON/blockheaderToJSON (practicalswift)
|
||||
- #11626 `998c304` Make `logging` RPC public (laanwj)
|
||||
- #11258 `033c786` Add initialblockdownload to getblockchaininfo (jnewbery)
|
||||
- #11087 `99bc0b4` Diagnose unsuitable outputs in lockunspent() (BitonicEelis)
|
||||
- #11710 `9388639` cli: Reject arguments to -getinfo (laanwj)
|
||||
- #11738 `d4267a3` Fix sendrawtransaction hang when sending a tx already in mempool (TheBlueMatt)
|
||||
- #11753 `32c9b57` clarify abortrescan rpc use (instagibbs)
|
||||
- #11191 `ef14f2e` Improve help text and behavior of RPC-logging (AkioNak)
|
||||
- #10874 `9e38d35` getblockchaininfo: Loop through the bip9 soft fork deployments instead of hard coding (achow101)
|
||||
- #10275 `497d0e0` Allow fetching tx directly from specified block in getrawtransaction (kallewoof)
|
||||
- #11178 `fee0370` Add iswitness parameter to decode- and fundrawtransaction RPCs (MeshCollider)
|
||||
- #11667 `711d16c` Add scripts to dumpwallet RPC (MeshCollider)
|
||||
- #11475 `9bad8d6` mempoolinfo should take ::minRelayTxFee into account (mess110)
|
||||
- #12001 `a9a49e6` Adding ::minRelayTxFee amount to getmempoolinfo and updating help (jeffrade)
|
||||
- #12198 `adce1de` Add deprecation error for `getinfo` (laanwj)
|
||||
- #11415 `69ec021` Disallow using addresses in createmultisig (achow101)
|
||||
- #12278 `288deac` Add special error for genesis coinbase to getrawtransaction (MeshCollider)
|
||||
- #11362 `c6223b3` Remove nBlockMaxSize from miner opt struct as it is no longer used (gmaxwell)
|
||||
- #10825 `28485c7` Set regtest JSON-RPC port to 18443 to avoid conflict with testnet 18332 (fametrano)
|
||||
- #11303 `e542728` Fix estimatesmartfee rounding display issue (TheBlueMatt)
|
||||
- #7061 `8c2de82` Add RPC call "rescanblockchain <startheight> <stopheight>" (jonasschnelli)
|
||||
- #11055 `95e14dc` RPC getreceivedbyaddress should return error if called with address not owned by the wallet (jnewbery)
|
||||
- #12366 `93de37a` http: Join worker threads before deleting work queue (laanwj)
|
||||
- #12315 `758a41e` Bech32 addresses in dumpwallet (fivepiece)
|
||||
- #12427 `3762ac1` Make signrawtransaction accept P2SH-P2WSH redeemscripts (sipa)
|
||||
|
||||
### GUI
|
||||
- #10964 `64e66bb` Pass SendCoinsRecipient (208 bytes) by reference (practicalswift)
|
||||
- #11169 `5b8af7b` Make tabs toolbar no longer have a context menu (achow101)
|
||||
- #10911 `9c8f365` Fix typo and access key in optionsdialog.ui (keystrike)
|
||||
- #10770 `ea729d5` Drop upgrade-cancel callback registration for a generic "cancelable" (TheBlueMatt)
|
||||
- #11156 `a3624dd` Fix memory leaks in qt/guiutil.cpp (danra)
|
||||
- #11268 `31e72b2` [macOS] remove Growl support, remove unused code (jonasschnelli)
|
||||
- #11193 `c5c77bd` Terminate string *pszExePath after readlink and without using memset (practicalswift)
|
||||
- #11508 `ffa5159` Fix crash via division by zero assertion (jonasschnelli)
|
||||
- #11499 `6157e8c` Add upload and download info to the peerlist (debug menu) (aarongolliver)
|
||||
- #11480 `ffc0b11` Add toggle for unblinding password fields (tjps)
|
||||
- #11316 `22cdf93` Add use available balance in send coins dialog (CryptAxe, promag)
|
||||
- #3716 `13e352d` Receive: Remove option to reuse a previous address (luke-jr)
|
||||
- #11690 `f0c1f8a` Fix the StartupWMClass for bitoin-qt, so gnome-shell can recognize it (eklitzke)
|
||||
- #10920 `f6f8d54` Fix potential memory leak in newPossibleKey(ChangeCWallet *wallet) (practicalswift)
|
||||
- #11698 `7293d06` RPC-Console nested commands documentation (lmlsna)
|
||||
- #11395 `38d31f9` Enable searching by transaction id (luke-jr)
|
||||
- #11556 `91eeaa0` Improved copy for RBF checkbox and tooltip (Sjors)
|
||||
- #11809 `80f9dad` Fix proxy setting options dialog crash (laanwj)
|
||||
- #11616 `8585bb8` Update ban-state in case of dirty-state during periodic sweep (jonasschnelli)
|
||||
- #11605 `f19ca12` Enable RBF by default in QT (Sjors)
|
||||
- #12074 `a1136f0` Optimizes boolean expression model && model->haveWatchOnly() (251Labs)
|
||||
- #12035 `eeb6d52` Change µDGB to bits (jb55)
|
||||
- #12092 `fd4ca17` Replaces numbered place marker %2 with %1 (251Labs)
|
||||
- #12173 `bbc91b7` Use flexible font size for QRCode image address (jonasschnelli)
|
||||
- #12211 `10d10d7` Avoid potential null dereference in ReceiveCoinsDialog constructor (ryanofsky)
|
||||
- #12261 `f359afc` Bump BLOCK_CHAIN_SIZE to 200GB (laanwj)
|
||||
- #11991 `062c8b6` Receive: checkbox for bech32 address (Sjors)
|
||||
- #11644 `045a809` Fix qt build broken by 5a5e4e9 (TheBlueMatt)
|
||||
- #11448 `d473e6d` reset addrProxy/addrSeparateProxyTor if colon char missing (mess110)
|
||||
- #12377 `604f289` qt: Poll ShutdownTimer after init is done (MarcoFalke)
|
||||
- #12374 `daaae36` qt: Make sure splash screen is freed on AppInitMain fail (laanwj)
|
||||
- #12349 `ad10b90` shutdown: fix crash on shutdown with reindex-chainstate (theuni)
|
||||
|
||||
### Build system
|
||||
- #10923 `2c9f5ec` travis: Build with --enable-werror under OS X (practicalswift)
|
||||
- #11176 `df8c722` build: Rename --enable-experimental-asm to --enable-asm and enable by default (laanwj)
|
||||
- #11286 `11dacc6` [depends] Don't build libevent sample code (fanquake)
|
||||
- #7142 `801dd40` Travis: Test build against system libs (& Qt4) (luke-jr)
|
||||
- #11380 `390771b` Remove outdated share/certs/ directory (MeshCollider)
|
||||
- #11391 `7632310` Remove lxcbr0 lines from gitian-build.sh (MeshCollider)
|
||||
- #11435 `167cef8` build: Make "make clean" remove all files created when running "make check" (practicalswift)
|
||||
- #11460 `e022463` [depends] mac_alias 2.0.6, ds_store 1.1.2 (fanquake)
|
||||
- #11541 `bb9ab0f` Build: Fix Automake warnings when running autogen.sh (fanquake)
|
||||
- #11611 `0e70791` [build] Don't fail when passed --disable-lcov and lcov isn't available (fanquake)
|
||||
- #11651 `3c098a8` refactor: Make all #includes relative to project root (laanwj, MeshCollider, ryanofsky)
|
||||
- #11621 `1f7695b` [build] Add temp_digibyte_locale_qrc to CLEAN_QT to fix make distcheck (fanquake)
|
||||
- #11755 `84fa645` [Docs] Bump minimum required version of GCC to 4.8 (fanquake)
|
||||
- #9254 `6d3dc52` [depends] ZeroMQ 4.2.2 (fanquake)
|
||||
- #11842 `3c8f0a3` [build] Add missing stuff to clean-local (kallewoof)
|
||||
- #11936 `483bb67` [build] Warn that only libconsensus can be built without Boost (fanquake)
|
||||
- #11945 `7a11ba7` Improve BSD compatibility of contrib/install_db4.sh (laanwj)
|
||||
- #11981 `180a255` Fix gitian build after libzmq bump (theuni)
|
||||
- #11903 `8f68fd2` [trivial] Add required package dependencies for depends cross compilation (jonasschnelli)
|
||||
- #12168 `45cf8a0` #include sys/fcntl.h to just fcntl.h (without sys/) (jsarenik)
|
||||
- #12095 `3fa1ab4` Use BDB_LIBS/CFLAGS and pass --disable-replication (fanquake)
|
||||
- #11711 `6378e5c` digibyte_qt.m4: Minor fixes and clean-ups (fanquake)
|
||||
- #11989 `90d4104` .gitignore: add QT Creator artifacts (Sjors)
|
||||
- #11577 `c0ae864` Fix warnings (-Wsign-compare) when building with DEBUG_ADDRMAN (practicalswift)
|
||||
|
||||
### Tests and QA
|
||||
- #11024 `3e55f13` Remove OldSetKeyFromPassphrase/OldEncrypt/OldDecrypt (practicalswift)
|
||||
- #10679 `31b2612` Document the non-DER-conformance of one test in tx_valid.json (schildbach)
|
||||
- #11160 `ede386c` Improve versionbits_computeblockversion test code consistency (danra)
|
||||
- #10303 `f088a1b` Include ms/blk stats in Connect* benchmarks (kallewoof)
|
||||
- #10777 `d81dccf` Avoid redundant assignments. Remove unused variables (practicalswift)
|
||||
- #11260 `52f8877` travis: Assert default datadir isn't created, Run scripted diff only once (MarcoFalke)
|
||||
- #11271 `638e6c5` travis: filter out pyenv (theuni)
|
||||
- #11285 `3255d63` Add -usehd to excluded args in check-doc.py (MeshCollider)
|
||||
- #11297 `16e4184` Make sure ~/.digibyte doesn't exist before build (MeshCollider)
|
||||
- #11311 `cce94c5` travis: Revert default datadir check (MarcoFalke)
|
||||
- #11300 `f4ed44a` Add a lint check for trailing whitespace (MeshCollider)
|
||||
- #11323 `4ce2f3d` mininode: add an optimistic write and disable nagle (theuni)
|
||||
- #11370 `2d85899` Add getblockchaininfo functional test (promag)
|
||||
- #11365 `f199b8a` Add Qt GUI tests to Overview and ReceiveCoin Page (anditto)
|
||||
- #11293 `dbc4ae0` Deduplicate CMerkleBlock construction code, add test coverage (jamesob)
|
||||
- #10440 `9e8ef9d` Add libFuzzer support (practicalswift)
|
||||
- #10941 `364da2c` Add blocknotify and walletnotify functional tests (promag)
|
||||
- #11420 `8928093` Bump univalue subtree and fix json formatting in tests (MarcoFalke)
|
||||
- #10099 `424be03` Slightly Improve Unit Tests for Checkqueue (JeremyRubin)
|
||||
- #11513 `14b860b` A few Python3 tidy ups (jnewbery)
|
||||
- #11486 `2ca518d` Add uacomment tests (mess110)
|
||||
- #11452 `02ac8c8` Improve ZMQ functional test (promag)
|
||||
- #10409 `b5545d8` Add fuzz testing for BlockTransactions and BlockTransactionsRequest (practicalswift)
|
||||
- #11389 `dd56166` Support having segwit always active in regtest (sipa, ajtowns, jnewbery)
|
||||
- #11562 `5776582` bench: use std::chrono rather than gettimeofday (theuni)
|
||||
- #11182 `f7388e9` Add P2P interface to TestNode (jnewbery)
|
||||
- #11552 `b5f9f02` Improve wallet-accounts test (ryanofsky)
|
||||
- #11638 `5e3f5e4` Dead mininode code (jnewbery)
|
||||
- #11646 `fe503e1` Require a steady clock for bench with at least micro precision (TheBlueMatt)
|
||||
- #11468 `76b3349` Make comp test framework more debuggable (jnewbery)
|
||||
- #11623 `ee92243` Add missing locks to tests (practicalswift)
|
||||
- #11035 `927e528` [contrib] Add Valgrind suppressions file (practicalswift)
|
||||
- #11641 `7adeea3` Only allow disconnecting all NodeConns (MarcoFalke)
|
||||
- #11677 `3bdf242` Remove unused NodeConn members (MarcoFalke)
|
||||
- #11699 `66d46c7` [travis-ci] Only run linters on Pull Requests (jnewbery)
|
||||
- #11654 `084f52f` Initialize recently introduced non-static class member lastCycles to zero in constructor (practicalswift)
|
||||
- #11648 `ccc70a2` Add messages.py (jnewbery)
|
||||
- #11713 `49667a7` Fix for mismatched extern definition in wallet tests (sipsorcery)
|
||||
- #11707 `0d89fa0` Fix sendheaders (jnewbery)
|
||||
- #11718 `9cdd2bc` Move pwalletMain to wallet test fixture (laanwj)
|
||||
- #11714 `901ba3e` Test that mempool rejects coinbase transactions (jamesob)
|
||||
- #11743 `3d6ad40` Add multiwallet prefix test (MarcoFalke)
|
||||
- #11683 `a892218` Remove unused mininode functions {ser,deser}_int_vector(...). Remove unused imports (practicalswift)
|
||||
- #11712 `9f2c2db` Split NodeConn from NodeConnCB (jnewbery)
|
||||
- #11791 `13e31dd` Rename NodeConn and NodeConnCB (jnewbery)
|
||||
- #11835 `f60b4ad` Add Travis check for unused Python imports (practicalswift)
|
||||
- #11849 `ad1820c` Assert that only one NetworkThread exists (jnewbery)
|
||||
- #11877 `d4991c0` Improve createrawtransaction functional tests (promag)
|
||||
- #11220 `2971fd0` Check specific validation error in miner tests (Sjors)
|
||||
- #11947 `797441e` Fix rawtransactions test (laanwj)
|
||||
- #11946 `8049241` Remove unused variable (firstAddrnServices) (practicalswift)
|
||||
- #11867 `18a1bba` Improve node network test (jnewbery)
|
||||
- #11883 `cfd99dd` Add configuration file/argument testing (MeshCollider)
|
||||
- #11879 `d4e404a` Remove redundant univalue_tests.cpp (jnewbery)
|
||||
- #11748 `20166f8` Adding unit tests for GetDifficulty in blockchain.cpp (merehap)
|
||||
- #11517 `5180a86` Improve benchmark precision (martinus)
|
||||
- #11291 `a332a7d` Fix string concatenation to os.path.join and add exception case (dongsam)
|
||||
- #11965 `d38d1a3` Note on test order in test_runner (MarcoFalke)
|
||||
- #11997 `ddff344` util_tests.cpp: actually check ignored args (ajtowns)
|
||||
- #12079 `45173fa` Improve prioritisetransaction test coverage (promag)
|
||||
- #12150 `92a810d` Fix ListCoins test failure due to unset g_address_type, g_change_type (ryanofsky)
|
||||
- #12133 `1d2eaba` Fix rare failure in p2p-segwit.py (sdaftuar)
|
||||
- #12082 `0910cbe` Adding test case for SINGLE|ANYONECANPAY hash type in tx_valid.json (Christewart)
|
||||
- #11796 `4db16ec` Functional test naming convention (ajtowns)
|
||||
- #12227 `b987ca4` test_runner: Readable output if create_cache.py fails (ryanofsky)
|
||||
- #12089 `126000b` Make TestNodeCLI command optional in send_cli (MarcoFalke)
|
||||
- #11774 `6970b30` Rename functional tests (ajtowns)
|
||||
- #12264 `598a9c4` Fix versionbits warning test (jnewbery)
|
||||
- #12217 `1213be6` Add missing syncwithvalidationinterfacequeue to tests (MarcoFalke)
|
||||
- #12292 `eebe458` Fix names of excluded extended tests for travis (ajtowns)
|
||||
- #11789 `60d739e` [travis-ci] Combine logs on failure (jnewbery)
|
||||
- #11838 `3e50024` Add getrawtransaction in_active_chain=False test (MarcoFalke)
|
||||
- #12206 `898f560` Sync with validationinterface queue in sync_mempools (MarcoFalke)
|
||||
- #12424 `ff44101` Fix rescan test failure due to unset g_address_type, g_change_type (ryanofsky)
|
||||
- #12388 `e2431d1` travis: Full clone for git subtree check (MarcoFalke)
|
||||
|
||||
### Documentation
|
||||
- #10680 `6366941` Fix inconsistencies and grammar in various files (MeshCollider)
|
||||
- #11011 `7db65c3` Add a comment on the use of prevector in script (gmaxwell)
|
||||
- #10878 `c58128f` Fix Markdown formatting issues in init.md (dongcarl)
|
||||
- #11066 `9e00a62` Document the preference of nullptr over NULL or (void*)0 (practicalswift)
|
||||
- #11094 `271e40a` Hash in ZMQ hash is raw bytes, not hex (runn1ng)
|
||||
- #11026 `ea3ac59` Bugfix: Use testnet RequireStandard for -acceptnonstdtxn default (luke-jr)
|
||||
- #11058 `4b65fa5` Comments: More comments on functions/globals in standard.h (jimpo)
|
||||
- #11112 `3f726c9` [developer-notes] By default, declare single-argument constructors "explicit" (practicalswift)
|
||||
- #11155 `a084767` Trivial: Documentation fixes for CVectorWriter ctors (danra)
|
||||
- #11136 `108222b` Docs: Add python3 to list of dependencies on some platforms (danra)
|
||||
- #11216 `81f8c03` Update hmac_sha256.h (utsavgupta)
|
||||
- #11236 `ba05971` Add note on translations to CONTRIBUTING.md (MeshCollider)
|
||||
- #11173 `4eb1f39` RPC: Fix currency unit string in the help text (AkioNak)
|
||||
- #11135 `21e2f2f` Update developer notes with RPC response guidelines (promag)
|
||||
- #11219 `bcc8a62` explain how to recompile a modified unit test (Sjors)
|
||||
- #10779 `f656147` Create dependencies.md (flack)
|
||||
- #10682 `2a56baf` Move the AreInputsStandard documentation next to its implementation (esneider)
|
||||
- #11276 `ee50c9e` Update CONTRIBUTING.md to reduce unnecessary review workload (jonasschnelli)
|
||||
- #11264 `b148803` Fix broken Markdown table in dependencies.md (practicalswift)
|
||||
- #10691 `ce82985` Properly comment about shutdown process in init.cpp file (wraith7)
|
||||
- #11330 `ae233c4` Fix comments for DEFAULT_WHITELIST[FORCE]RELAY (danra)
|
||||
- #11340 `d6d2c85` Fix validation comments (danra)
|
||||
- #11305 `2847480` Update release notes and manpages for 0.16 (MarcoFalke)
|
||||
- #11132 `551d7bf` Document assumptions that are being made to avoid NULL pointer dereferences (practicalswift)
|
||||
- #11390 `12ed800` Document scripted-diff (jnewbery)
|
||||
- #11392 `a3b4c59` Fix stale link in gitian-building.md (shooterman)
|
||||
- #11401 `4202273` Move gitian building to external repo (MarcoFalke)
|
||||
- #11414 `bbc901d` Remove partial gitian build instructions from descriptors dir (fanquake)
|
||||
- #11571 `c95832d` Fixed a couple small grammatical errors (BitsInMyBlood)
|
||||
- #11624 `f9b74ef` Change formatting for sequence of steps (vivganes)
|
||||
- #11597 `6f01dcf` Fix error messages in CFeeBumper (kallewoof)
|
||||
- #11438 `7fbf3c6` Updated Windows build doc for WSL/Xenial workaround (sipsorcery)
|
||||
- #11663 `41aa9c4` Add getreceivedbyaddress release notes (MarcoFalke)
|
||||
- #11533 `cbb54e7` Update WSL installation notes for Fall Creators update (Thoragh)
|
||||
- #11680 `4db82b7` Add instructions for lcov report generation (jamesob)
|
||||
- #11686 `54aedc0` Make ISSUE_TEMPLATE a bit shorter, mention hardware tests (TheBlueMatt)
|
||||
- #11704 `ea68190` Windows build doc update (sipsorcery)
|
||||
- #11706 `5197100` Make default issue text all comments to make issues more readable (TheBlueMatt)
|
||||
- #11140 `1429132` Improve #endif comments (danra)
|
||||
- #11729 `7a43fbb` links to code style guides (Sjors)
|
||||
- #11793 `8879d50` Bump OS X version to 10.13 (Varunram)
|
||||
- #11783 `16fff80` Fix shutdown in case of errors during initialization (laanwj)
|
||||
- #11804 `00d25e9` Fixed outdated link with archive.is (TimothyShimmin)
|
||||
- #11960 `4307062` Fix link to installation script (laudaa)
|
||||
- #12027 `63a4dc1` Remove boost --c++ flag from osx build instructions (fernandezpablo85)
|
||||
- #12062 `5961b23` Increment MIT Licence copyright header year on files modified in 2017 (akx20000a)
|
||||
- #12063 `36a5a44` Update license year range to 2018 (akx20000a)
|
||||
- #12093 `5691028` Fix incorrect Markdown link (practicalswift)
|
||||
- #12143 `b0d626d` Fix link for BIP159 pull request (azuchi)
|
||||
- #12112 `3c62868` Remove the ending slashes from RPC URI format (jackycjh)
|
||||
- #12166 `e839d65` Clarify -walletdir usage (jnewbery)
|
||||
- #12241 `b030133` Fix incorrect link in /test/ README.md (fanquake)
|
||||
- #12187 `b5e4b9b` Updating benchmarkmarking.md with an updated sample output (jeffrade)
|
||||
- #12294 `7cf1aea` Create NetBSD build instructions and fix compilation (fanquake)
|
||||
- #12251 `cc5870a` initwallet: Do not translate highly technical addresstype help (MarcoFalke)
|
||||
- #11984 `efae366` Update OpenBSD build instructions for 6.2 (cont'd) (laanwj)
|
||||
- #12293 `9d9c418` Mention that HD is enabled if hdmasterkeyid is present in getwalletinfo RPC help (fanquake)
|
||||
- #12077 `c04cb48` Correct `sendmany` curl example (251Labs)
|
||||
- #10677 `b3ecb7b` Document that addmultisigaddress is intended for non-watchonly addresses (instagibbs)
|
||||
- #12177 `cad504b` Fix address_type help text of getnewaddress and getrawchangeaddress (mruddy)
|
||||
|
||||
### Refactoring
|
||||
- #9964 `b6a4891` Add const to methods that do not modify the object for which it is called (practicalswift)
|
||||
- #10965 `655970d` Replace deprecated throw() with noexcept specifier (C++11) (practicalswift)
|
||||
- #10645 `c484ec6` Use nullptr (C++11) instead of zero (0) as the null pointer constant (practicalswift)
|
||||
- #10901 `22e301a` Fix constness of ArgsManager methods (promag)
|
||||
- #10969 `4afb5aa` Declare single-argument (non-converting) constructors "explicit" (practicalswift)
|
||||
- #11071 `dbf6bd6` Use static_assert(…, …) (C++11) instead of assert(…) where appropriate (practicalswift)
|
||||
- #10809 `c559884` optim: mark a few classes final (theuni)
|
||||
- #10843 `2ab7c63` Add attribute [[noreturn]] (C++11) to functions that will not return (practicalswift)
|
||||
- #11151 `7fd49d0` Fix header guards using reserved identifiers (danra)
|
||||
- #11138 `2982511` Compat: Simplify bswap_16 implementation (danra)
|
||||
- #11161 `745bbdc` Remove redundant explicitly defined copy ctors (danra)
|
||||
- #11144 `cee4fe1` Move local include to before system includes (danra)
|
||||
- #10781 `60dd9cc` Python cleanups (practicalswift)
|
||||
- #10701 `50fae68` Remove the virtual specifier for functions with the override specifier (practicalswift)
|
||||
- #11164 `38a54a5` Fix boost headers included as user instead of system headers (danra)
|
||||
- #11143 `3aa60b7` Fix include path for digibyte-config.h (danra)
|
||||
- #8330 `59e1789` Structure Packing Optimizations in C{,Mutable}Transaction (JeremyRubin)
|
||||
- #10845 `39ae413` Remove unreachable code (practicalswift)
|
||||
- #11238 `6acdb1f` Add assertions before potential null deferences (MeshCollider)
|
||||
- #11259 `089b742` Remove duplicate destination decoding (promag)
|
||||
- #11232 `2f0d3e6` Ensure that data types are consistent (jjz)
|
||||
- #10793 `efb4383` Changing &var[0] to var.data() (MeshCollider)
|
||||
- #11196 `e278f86` Switch memory_cleanse implementation to BoringSSL's to ensure memory clearing even with -lto (maaku)
|
||||
- #10888 `9821274` range-based loops and const qualifications in net.cpp (benma)
|
||||
- #11351 `6c4fecf` Refactor: Modernize disallowed copy constructors/assignment (danra)
|
||||
- #11385 `94c9015` Remove some unused functions and methods (sipa)
|
||||
- #11301 `8776787` add m_added_nodes to connman options (benma)
|
||||
- #11432 `058c0f9` Remove unused fTry from push_lock (promag)
|
||||
- #11107 `e93fff1` Fix races in AppInitMain and others with lock and atomic bools (MeshCollider)
|
||||
- #9572 `17f2ace` Skip witness sighash cache for non-segwit transactions (jl2012)
|
||||
- #10961 `da0478e` Improve readability of DecodeBase58Check(...) (practicalswift)
|
||||
- #11133 `a865b38` Document assumptions that are being made to avoid division by zero (practicalswift)
|
||||
- #11073 `3bb77eb` Remove dead store in ecdsa_signature_parse_der_lax (BitonicEelis)
|
||||
- #10898 `470c730` Fix invalid checks (NULL checks after dereference, redundant checks, etc.) (practicalswift)
|
||||
- #11495 `50d72b3` [trivial] Make namespace explicit for is_regular_file (jnewbery)
|
||||
- #11511 `db2f83e` [Init] Remove redundant exit(EXIT_FAILURE) instances and replace with return false (donaloconnor)
|
||||
- #10866 `ef8a634` Fix -Wthread-safety-analysis warnings. Compile with -Wthread-safety-analysis if available (practicalswift)
|
||||
- #11221 `0dec4cc` Refactor: simpler read (gnuser)
|
||||
- #10696 `ef3758d` Remove redundant nullptr checks before deallocation (practicalswift)
|
||||
- #11043 `5e9be16` Use std::unique_ptr (C++11) where possible (practicalswift)
|
||||
- #11353 `05a7619` Small refactor of CCoinsViewCache::BatchWrite() (danra)
|
||||
- #10749 `2adbddb` Use compile-time constants instead of unnamed enumerations (remove "enum hack") (practicalswift)
|
||||
- #11603 `a933cb1` Move RPC registration out of AppInitParameterInteraction (ryanofsky)
|
||||
- #11722 `26efc22` Switched sync.{cpp,h} to std threading primitives (tjps)
|
||||
- #10493 `fbce66a` Use range-based for loops (C++11) when looping over map elements (practicalswift)
|
||||
- #11337 `0d7e0a3` Fix code constness in CBlockIndex::GetAncestor() overloads (danra)
|
||||
- #11516 `0e722e8` crypto: Add test cases covering the relevant HMAC-SHA{256,512} key length boundaries (practicalswift)
|
||||
- #10574 `5d132e8` Remove includes in .cpp files for things the corresponding .h file already included (practicalswift)
|
||||
- #11884 `66479c0` Remove unused include in hash.cpp (kallewoof)
|
||||
- #10839 `c66adb2` Don't use pass by reference to const for cheaply-copied types (bool, char, etc.) (practicalswift)
|
||||
- #10657 `79399c8` Utils: Improvements to ECDSA key-handling code (str4d)
|
||||
- #12250 `e37ca2b` Make CKey::Load references const (ryanofsky)
|
||||
- #12108 `9220426` Remove unused fQuit var from checkqueue.h (donaloconnor)
|
||||
- #12159 `f3c7062` Use the character based overload for std::string::find (kekimusmaximus)
|
||||
- #12266 `3448907` Move scheduler/threadGroup into common-init instead of per-app (TheBlueMatt)
|
||||
|
||||
### Miscellaneous
|
||||
- #11246 `777519b` github-merge: Coalesce git fetches (laanwj)
|
||||
- #10871 `c9a4aa8` Handle getinfo in digibyte-cli w/ -getinfo (revival of #8843) (achow101)
|
||||
- #11419 `093074b` Utils: Fix launchctl not being able to stop digibyted (OmeGak)
|
||||
- #11394 `6e4e98e` Perform a weaker subtree check in Travis (sipa)
|
||||
- #11702 `4122112` [build] Add a script for installing db4 (jamesob)
|
||||
- #11794 `dd49862` Prefix leveldb debug logging (laanwj)
|
||||
- #11781 `24df9af` Add `-debuglogfile` option (laanwj)
|
||||
- #10773 `c17f11f` Shell script cleanups (practicalswift)
|
||||
- #11829 `7630a1f` Test datadir specified in conf file exists (MeshCollider)
|
||||
- #11836 `d44535d` Rename rpcuser.py to rpcauth.py (hkjn)
|
||||
- #11831 `d48ab83` Always return true if AppInitMain got to the end (TheBlueMatt)
|
||||
- #11943 `1808660` contrib: fix typo in install_db4.sh help message (laanwj)
|
||||
- #12075 `c991b30` [scripts] Add missing univalue file to copyright_header.py (fanquake)
|
||||
- #12197 `000ac4f` Log debug build status and warn when running benchmarks (laanwj)
|
||||
- #10672 `6ab0e4c` Avoid division by zero in the case of a corrupt estimates file (practicalswift)
|
||||
- #11273 `cdd6bbf` Ignore old format estimation file (Xekyo)
|
||||
- #11951 `1fb34e0` Remove dead feeest-file read code for old versions (TheBlueMatt)
|
||||
- #11421 `9ccafb1` Merge current secp256k1 subtree (MarcoFalke)
|
||||
- #11573 `2631d55` [Util] Update tinyformat.h (fanquake)
|
||||
- #10529 `331352f` Improve digibyted systemd service file (Flowdalic)
|
||||
- #11620 `70fec9e` [build] .gitignore: add background.tiff (Sjors)
|
||||
- #11558 `68e021e` Minimal code changes to allow msvc compilation (sipsorcery)
|
||||
- #11284 `10bee0d` Fix invalid memory access in CScript::operator+= (guidovranken, ajtowns)
|
||||
- #10939 `a1f7f18` [init] Check non-emptiness of -blocknotify command prior to executing (practicalswift)
|
||||
- #11467 `937613d` Fix typos. Use nullptr instead of NULL (practicalswift)
|
||||
- #11834 `5bea05b` [verify-commits] Fix gpg.sh's echoing for commits with '\n' (TheBlueMatt)
|
||||
- #11830 `a13e443` rpcuser.py: Use 'python' not 'python2' (hkjn)
|
||||
- #12194 `7abb0f0` Add change type option to fundrawtransaction (promag)
|
||||
- #12269 `2ae7cf8` Update defaultAssumeValid to block 506067 (gmaxwell)
|
||||
- #11952 `9ab9963` univalue: Bump subtree (MarcoFalke)
|
||||
- #12367 `09fc859` Fix two fast-shutdown bugs (TheBlueMatt)
|
||||
- #12422 `4d54e7a` util: Make LockDirectory thread-safe, consistent, and fix OpenBSD 6.2 build (laanwj)
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Thanks to everyone who directly contributed to this release:
|
||||
|
||||
- 251
|
||||
- Aaron Clauson
|
||||
- Aaron Golliver
|
||||
- aaron-hanson
|
||||
- Adam Langley
|
||||
- Akio Nakamura
|
||||
- Akira Takizawa
|
||||
- Alejandro Avilés
|
||||
- Alex Morcos
|
||||
- Alin Rus
|
||||
- Anditto Heristyo
|
||||
- Andras Elso
|
||||
- Andreas Schildbach
|
||||
- Andrew Chow
|
||||
- Anthony Towns
|
||||
- azuchi
|
||||
- Carl Dong
|
||||
- Chris Moore
|
||||
- Chris Stewart
|
||||
- Christian Gentry
|
||||
- Cory Fields
|
||||
- Cristian Mircea Messel
|
||||
- CryptAxe
|
||||
- Dan Raviv
|
||||
- Daniel Edgecumbe
|
||||
- danra
|
||||
- david60
|
||||
- Donal O'Connor
|
||||
- dongsamb
|
||||
- Dusty Williams
|
||||
- Eelis
|
||||
- esneider
|
||||
- Evan Klitzke
|
||||
- fanquake
|
||||
- Ferdinando M. Ametrano
|
||||
- fivepiece
|
||||
- flack
|
||||
- Florian Schmaus
|
||||
- gnuser
|
||||
- Gregory Maxwell
|
||||
- Gregory Sanders
|
||||
- Henrik Jonsson
|
||||
- Jack Grigg
|
||||
- Jacky C
|
||||
- James Evans
|
||||
- James O'Beirne
|
||||
- Jan Sarenik
|
||||
- Jeff Rade
|
||||
- Jeremiah Buddenhagen
|
||||
- Jeremy Rubin
|
||||
- Jim Posen
|
||||
- jjz
|
||||
- Joe Harvell
|
||||
- Johannes Kanig
|
||||
- John Newbery
|
||||
- Johnson Lau
|
||||
- Jonas Nick
|
||||
- Jonas Schnelli
|
||||
- João Barbosa
|
||||
- Jorge Timón
|
||||
- Karel Bílek
|
||||
- Karl-Johan Alm
|
||||
- klemens
|
||||
- Kyuntae Ethan Kim
|
||||
- laudaa
|
||||
- Lawrence Nahum
|
||||
- Lucas Betschart
|
||||
- Luke Dashjr
|
||||
- Luke Mlsna
|
||||
- MarcoFalke
|
||||
- Mark Friedenbach
|
||||
- Marko Bencun
|
||||
- Martin Ankerl
|
||||
- Matt Corallo
|
||||
- mruddy
|
||||
- Murch
|
||||
- NicolasDorier
|
||||
- Pablo Fernandez
|
||||
- Paul Berg
|
||||
- Pedro Branco
|
||||
- Pierre Rochard
|
||||
- Pieter Wuille
|
||||
- practicalswift
|
||||
- Randolf Richardson
|
||||
- Russell Yanofsky
|
||||
- Samuel Dobson
|
||||
- Sean Erle Johnson
|
||||
- Shooter
|
||||
- Sjors Provoost
|
||||
- Suhas Daftuar
|
||||
- Thomas Snider
|
||||
- Thoragh
|
||||
- Tim Shimmin
|
||||
- Tomas van der Wansem
|
||||
- Utsav Gupta
|
||||
- Varunram Ganesh
|
||||
- Vivek Ganesan
|
||||
- Werner Lemberg
|
||||
- William Casarin
|
||||
- Willy Ko
|
||||
- Wladimir J. van der Laan
|
||||
|
||||
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/digibyte/).
|
||||