Skip to content

Releases: bitcoinknots/bitcoin

Bitcoin Knots v27.1.knots20240801

04 Aug 03:07
Compare
Choose a tag to compare

27.1 Release Notes

Bitcoin Knots version 27.1.knots20240801 is now available from:

https://bitcoinknots.org/files/27.x/27.1.knots20240801/

This release includes new features, various bug fixes, and performance improvements.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on macOS) or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 11.0+, and Windows 7 and newer. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy) or datacarrier penalties (ie, -datacarriercost). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release still does not include updated translations, and Bitcoin Knots may be unable to do so until/unless that is resolved.

Notable changes

P2P and network changes

  • The prior release re-enabled UPnP and NAT-PMP by default based on the understanding that it had been many years since the libraries for these had a vulnerability. It turns out, this is not the case, and out of an abundance of caution, it has been reverted back to disabled-by-default. If you can manually forward the p2p port to your node, that is recommended.

Updated RPCs

  • The sendall RPC now attempts to include more of the wallet's balance in cases where other transactions were recently sent and have not yet confirmed. (bitcoin#28979)

  • UTXOs returned by scantxoutset now include the blockhash (the transaction creating the UTXO was confirmed in), as well as the number of confirmations. (bitcoin#30515)

Updated REST APIs

  • Parameter validation for /rest/getutxos has been improved by rejecting truncated or overly large txids and malformed outpoint indices by raising an HTTP_BAD_REQUEST "Parse error". Previously, these malformed requests would be
    silently handled. (bitcoin#30482, bitcoin#30444)

Bitcoin Knots v27.1.knots20240621

23 Jun 14:43
Compare
Choose a tag to compare

27.1 Release Notes

Bitcoin Knots version 27.1.knots20240621 is now available from:

https://bitcoinknots.org/files/27.x/27.1.knots20240621/

This release includes new features, various bug fixes, and performance
improvements.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on macOS)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 11.0+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the
"vsize" result in many RPC results, transaction virtual sizes may not account
for an unusually high number of sigops (ie, as determined by the
-bytespersigop policy) or datacarrier penalties (ie, -datacarriercost).
This could result in reporting a lower virtual size than is actually used for
mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release
still does not include updated translations, and Bitcoin Knots may be unable
to do so until/unless that is resolved.

Notable changes

P2P and network changes

  • As it has been several years since the last vulnerability in the port
    mapping frameworks used by Bitcoin Knots, both UPnP and NAT-PMP have been
    re-enabled by default when your node is configured to listen for incoming
    connections (which is also on by default). This helps automatically
    configure routers and VPNs to not block those incoming connections, making
    the network more resilient. If you wish to disable these, you can set
    -natpmp=0 and -upnp=0 - or you may prefer to disable incoming
    connections altogether with -listen=0.

  • Network-adjusted time has been removed from consensus code. It is replaced
    with (unadjusted) system time. The warning for a large median time offset
    (70 minutes or more) is kept. This reduces the implicit security assumption of
    requiring an honest majority of outbound peers, and increases the importance
    of the node operator ensuring their system time is (and stays) correct to not
    fall out of consensus with the network. (bitcoin#28956)

Node policy changes

  • Experimental support for Opt-in Topologically Restricted Until Confirmation
    (TRUC) Transactions policy (aka v3 transaction policy) is available. By
    setting the transaction version number to 3, TRUC transactions request some
    stricter relay filtering of themselves and related transactions. By default,
    Bitcoin Knots v27.1 will accept, relay, and mine v3 transactions without
    these additional restrictions. If you have configured -mempoolreplacement
    to require transactions to signal replacability, v3 transactions are
    considered replacable (as this is an explicit part of the TRUC request).
    The -mempooltruc option can be set to either enforce to impose the other
    requested restrictions, or to reject to restore the previous policy of
    rejecting v3 transactions entirely. (bitcoin#28948)

Wallet

  • The CoinGrinder coin selection algorithm has been introduced to mitigate unnecessary
    large input sets and lower transaction costs at high feerates. CoinGrinder
    searches for the input set with minimal weight. Solutions found by
    CoinGrinder will produce a change output. CoinGrinder is only active at
    elevated feerates (default: 30+ sat/vB, based on -consolidatefeerate×3). (bitcoin#27877)

Mining

  • The getblocktemplate RPC method's template request mode now accepts new
    parameters "blockmaxsize", "blockmaxweight", and "minfeerate" to override
    the configured parameters on a call-by-call basis. Setting these differently
    from their defaults will disable the internal template caching for now, so
    may be less efficient if you have multiple applications using
    getblocktemplate directly.

  • getblocktemplate (template request mode) also will now accept
    "skip_validity_test" in the list of client "capabilities". If this is
    specified, the internal template validity safety check is skipped, and the
    new template (if one isn't already cached) will not be cached for future
    calls. It is recommended that this feature is not used unless you plan to
    follow up with a template proposal getblocktemplate call (defined in BIP 23).

Updated RPCs

  • disconnectnode now supports disconnecting by IP (without specifying a port
    number or subnet).

  • getrawaddrman will no longer include a dummy "mapped_as" nor
    "source_mapped_as" when an AS map has not been enabled.

Updated settings

  • The rpccookieperms setting has been simplified to values "owner", "group",
    or "all". The old octal permissions may still be used, but are deprecated
    and may be removed in a future version.

mempool.dat compatibility

  • The mempool.dat file created by -persistmempool or the savemempool RPC will
    be written in a new format. This new format includes the obfuscation of
    transaction contents to mitigate issues where external programs (such as
    anti-virus) attempt to interpret and potentially quarantine the file.

    This new format can not be read by previous software releases. To allow for a
    downgrade, a temporary setting -persistmempoolv1 has been added to fall back
    to the legacy format. (bitcoin#28207)

Build System

  • A C++20 capable compiler is now required to build Bitcoin Knots. (bitcoin#28349)

Bitcoin Knots v26.1.knots20240513

14 May 03:09
Compare
Choose a tag to compare

26.1 Release Notes

Bitcoin Knots version 26.1.knots20240513 is now available from:

https://bitcoinknots.org/files/26.x/26.1.knots20240513/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on macOS)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 11.0+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the
"vsize" result in many RPC results, transaction virtual sizes may not account
for an unusually high number of sigops (ie, as determined by the
-bytespersigop policy). This could result in reporting a lower virtual size
than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release
still does not include updated translations, and Bitcoin Knots may be unable
to do so until/unless that is resolved.

Notable changes

Node policy changes

  • A new non-standard token/asset protocol launched a few weeks ago ("Runes").
    Due to its lack of competent review, design flaws (as well as the relative
    worthlessness of the tokens at least when first minted) resulted in it being
    particularly spammy in practice. Some users have chosen to block all
    datacarrier transactions in an effort to mitigate this.

    To better address users' concerns, this release adds a new -rejecttokens
    policy filter (also available in the GUI) that will only block Runes
    transactions, thereby enabling users who choose to tolerate datacarrier
    otherwise to re-enable that policy. Note that it is not enabled by
    default at this time.

  • Similarly, a new policy filter has been added to block parasitic
    transactions. Many parasite transactions cannot be detected, but this new
    filter aims to do what it can when possible, currently just so-called
    "CAT-21" transactions built using the Ordinal attack. It is enabled by
    default, and can be disabled using -rejectparasites=0 (or in the GUI) if
    you wish to tolerate these. (knots#78)

  • The dust limit has historically required outputs to be at least three times
    the value they provide when later spent. The experimental dynamic adjustment
    function, however, was adjusting it based on exactly (1x) the value the
    output provides. To address this, you can now specify a multiplier by
    prefixing your policy by a number (with up to three decimal places) followed
    by an asterisk. So -dustdynamic=3.142*target:N will require outputs to be
    3.142 times the value they provide; or -dustdynamic=1*target:N will behave
    the same as previous versions for target:N. The default multiplier, if
    none is specified, is now three times as historically has been used. If you
    use this feature, please leave a comment about your experience on GitHub:
    #74

Updated RPCs

  • submitpackage now returns results with per-transaction errors rather than
    throwing an exception potentially obscuring other transactions being
    accepted. (bitcoin#28848)

  • getprioritisedtransactions now also includes "modified_fee" in results,
    with the sum of the real transaction fee and the fee delta. (bitcoin#28885)

  • getrawaddrman has been extended to include in the results for each entry
    "mapped_as" and "source_mapped_as". (bitcoin#30062)

Bitcoin Knots v26.1.knots20240325

27 Mar 02:44
Compare
Choose a tag to compare

26.1 Release Notes

Bitcoin Knots version 26.1.knots20240325 is now available from:

https://bitcoinknots.org/files/26.x/26.1.knots20240325/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on macOS) or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 11.0+, and Windows 7 and newer. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

In the interest of time, this release does not include updated translations. Please comment on GitHub #73 if this is of particular importance to you or anyone you know. If nobody expresses interest in localization, it may continue to be skipped going forward.

Notable changes

Node policy changes

  • Spam is sometimes disguised to appear as if it is a deprecated pay-to-IP (bare pubkey) transaction, where the "key" is actually arbitrary data (not a real key) instead. Due to the nature of this spam, it pollutes not only the blockchain, but also permanently bloats the "UTXO set" all nodes must retain (it cannot be pruned). Real pay-to-IP was only ever supported by Satoshi's early Bitcoin wallet, which has been abandoned since 2011. This version of Bitcoin Knots filters out this kind of spam by default. A new setting, -permitbarepubkey (also available in the GUI), is available for users who desire to relay these. (bitcoin#29309)

  • Non-standard datacarrier formats are now filtered out by default. If you wish to re-enable relaying and mining them, you can set -acceptnonstddatacarrier=1

  • There is now experimental (and disabled by default) support for dynamically adjusting the "dust" spam filter threshold. It can be enabled in the GUI, or by configuring -dustdynamic=target:N to adjust based on a fee estimate for confirmation within N blocks, or -dustdynamic=mempool:N to adjust based on the worst fee in the best N kvB of your mempool. In either mode, the fee will be adjusted every 15 minutes (the first time not for 15 minutes after startup, in an effort to ensure estimators have sufficient data to work with). Implementation details (including how often adjustment occurs) may be changed in future releases. If you use this feature, please leave a comment about your experience on GitHub: #74

P2P and network changes

  • For several years now, miners have been regularly violating the Bitcoin protocol as it pertains to the block version bits, triggering warnings in Bitcoin Knots about softforks that aren't happening. While it would be inappropriate to simply concede a protocol change without community support, it's also confusing for users to see warnings that are inaccurate. To mitigate this, therefore, Bitcoin Knots is now more specific about when it warns about potential protocol changes, and only logs simple versionbit protocol violations in the debug log once for the specific block violating it.

  • Support for the v2 transport protocol defined in BIP324 was added. It is on by default and will be negotiated on a per-connection basis with other peers that support it, but can be disabled using -v2transport=0 if desired. The existing v1 transport protocol remains fully supported. (bitcoin#28331)

  • Nodes with multiple reachable networks will actively try to have at least one outbound connection to each network. This improves individual resistance to eclipse attacks and network level resistance to partition attacks. Users no longer need to perform active measures to ensure being connected to multiple enabled networks. (bitcoin#27213)

  • Support for I2P sessions encrypted using the newer and faster ECIES-X25519 algorithm has been added. (bitcoin#29200)

Pruning

  • When using assumeutxo with -prune, the prune budget may be exceeded if it is set lower than 1100MB (i.e. MIN_DISK_SPACE_FOR_BLOCK_FILES * 2). Prune budget is normally split evenly across each chainstate, unless the resulting prune budget per chainstate is beneath MIN_DISK_SPACE_FOR_BLOCK_FILES in which case that value will be used. (bitcoin#27596)

Updated RPCs

  • The maxfeerate option for sendrawtransaction and testmempoolaccept is now limited to below 100000 sats/vB to avoid overflow bugs. (bitcoin#29434)

  • Setting -rpcserialversion=0 is deprecated and will be removed in a future release. It can currently still be used by also adding the -deprecatedrpc=serialversion option. (bitcoin#28448)

  • The hash_serialized_2 value has been removed from gettxoutsetinfo since the value it calculated contained a bug and did not take all data into account. It is superseded by hash_serialized_3 which provides the same functionality but serves the correctly calculated hash. (bitcoin#28685)

  • For RPC methods which accept options parameters (importmulti, listunspent, fundrawtransaction, bumpfee, scanblocks, send, sendall, walletcreatefundedpsbt, simulaterawtransaction), it is now possible to pass the options as named parameters without the need for a nested object. (bitcoin#26485)

This means it is possible make calls like:

src/bitcoin-cli -named bumpfee txid fee_rate=100

instead of

src/bitcoin-cli -named bumpfee txid options='{"fee_rate": 100}'
  • New fields transport_protocol_type and session_id were added to the getpeerinfo RPC to indicate whether the v2 transport protocol is in use, and if so, what the session id is. (bitcoin#28331)

  • A new argument v2transport was added to the addnode RPC to indicate whether a v2 transaction connection is to be attempted with the peer. This breaks compatibility with the old privileged parameter used with Bitcoin Knots v0.16.0.knots20180322 through v0.20.1.knots20200815. If you were relying on this deprecated parameter, you can maintain the previous behaviour by specifying "outbound-full-relay" to the "connection_type" parameter. (bitcoin#28331)

  • Miniscript expressions can now be used in Taproot descriptors for all RPCs working with descriptors. (bitcoin#27255)

  • finalizepsbt is now able to finalize a PSBT with inputs spending Miniscript-compatible Taproot leaves. (bitcoin#27255)

  • The result from getpeerinfo now includes "misbehavior_score". This number is increased (by varying amounts) when a peer doesn't follow the protocol correctly, and when it reaches 100, the peer is disconnected. It is mostly only useful for testing purposes. (bitcoin#29530)

Changes to wallet related RPCs can be found in the Wallet section below.

New RPCs

  • loadtxoutset has been added, which allows loading a UTXO snapshot of the format generated by dumptxoutset. Once this snapshot is loaded, its contents will be deserialized into a second chainstate data structure, which is then used to sync to the network's tip.

    Meanwhile, the original chainstate will complete the initial block download process in the background, eventually validating up to the block that the snapshot is based upon.

    The result is a usable bitcoind instance that is current with the network tip in a matter of minutes rather than hours. However, until the full background sync completes, the node and any wallets using it remain insecure and should not be trusted or relied
    on for confirmation of payment. (bitcoin#27596)

    You can find more information on this process in the assumeutxo design document (https://github.com/bitcoin/bitcoin/blob/master/doc/design/assumeutxo.md).

    getchainstates has been added to aid in monitoring the assumeutxo sync process.

  • A new RPC, submitpackage, has been added. It can be used to submit a list of raw hex transactions to the mempool to be evaluated as a package using consensus and mempool policy rules. These policies include package CPFP, allowing a child with high fees to bump a parent below the mempool minimum feerate (but not minimum relay feerate). (bitcoin#27609)

    • Warning: successful submission does not mean the transactions will propagate throughout the network, as package relay is not supported.

    • Not all features are available. The package is limited to a child with all of its unconfirmed parents, and no parent may spend the output of another parent. Also, package RBF is not supported. Refer to doc/policy/packages.md for more details on package policies and limitations.

    • This RPC is experimental. Its interface may change.

  • A new importmempool RPC has been added. It loads a valid mempool.dat file and attempts to add its contents to the mempool. This can be useful to import mempool data from another node wit...

Read more

Bitcoin Knots v25.1.knots20231115

10 Dec 16:29
Compare
Choose a tag to compare

25.1 Release Notes

Bitcoin Knots version 25.1.knots20231115 is now available from:

https://bitcoinknots.org/files/25.x/25.1.knots20231115/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on macOS)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.15+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog, transaction
virtual sizes may not account for an unusually high number of sigops (ie, as
determined by the -bytespersigop policy). This could result in reporting a
lower virtual size than is actually used for mempool or mining purposes.

In the interest of time, this release does not include updated translations.
Please open an issue on GitHub if this is of particular importance to you or
anyone you know. If nobody expresses interest in localization, it may continue
to be skipped going forward.

Notable changes

Security vulnerabilities fixed

Several security issues (CVEs CVE-2023-40257, CVE-2023-40258, and CVE-2023-40259)
were identified in the extended rpcauth wallet-restriction syntax, which is
intended to enable semi-trusted local applications using the Bitcoin Knots API to
access only specific wallets (or none at all) and not others. The full details of
these issues will be disclosed at a future time, but they have all been fixed in
this release.

P2P and network changes

  • To address a potential denial-of-service, the logic to download headers from peers
    has been reworked. This is particularly relevant for nodes starting up for the
    first time (or for nodes which are starting up after being offline for a long time).

    Whenever headers are received from a peer that have a total chainwork that is either
    less than the node's -minimumchainwork value or is sufficiently below the work at
    the node's tip, a "presync" phase will begin, in which the node will download the
    peer's headers and verify the cumulative work on the peer's chain, prior to storing
    those headers permanently. Once that cumulative work is verified to be sufficiently high,
    the headers will be redownloaded from that peer and fully validated and stored.

    This may result in initial headers sync taking longer for new nodes starting up for
    the first time, both because the headers will be downloaded twice, and because the effect
    of a peer disconnecting during the presync phase (or while the node's best headers chain has less
    than -minimumchainwork), will result in the node needing to use the headers presync mechanism
    with the next peer as well (downloading the headers twice, again). (bitcoin#25717)

  • Enable parallel compact block downloads to mitigate temporary stalls from a slow peer. (bitcoin#27626)

  • The rate limit on transaction relay has been doubled to 14 transactions per
    second (35 tx/s for outbound connections) to better adapt to present network
    conditions. (bitcoin#28592)

  • Transactions of non-witness size 65 and above are now allowed by mempool
    and relay policy. This is to better reflect the actual afforded protections
    against CVE-2017-12842 and open up additional use-cases of smaller transaction sizes. (bitcoin#26265)

  • With I2P connections, a new, transient address is used for each outbound
    connection if -i2pacceptincoming=0. (bitcoin#25355)

  • A new net permission forceinbound (set with -whitelist=forceinbound@...
    or -whitebind=forceinbound@...) is introduced that extends noban permissions.
    Inbound connections from hosts protected by forceinbound will now be more
    likely to connect even if maxconnections is reached and the node's inbound
    slots are full. This is achieved by attempting to force the eviction of a random,
    inbound, otherwise unprotected peer. RPC getpeerinfo will also now indicate
    forced_inbound. (bitcoin#27600)

  • The -datacarriersize policy limit has been updated to match newer style datacarrier
    transactions. (bitcoin#28408)

  • An additional -datacarriercost option has also been added to avoid giving the "segwit
    discount" to aribitrary data (and can be increased to require datacarrier transactions
    to pay higher fees).

  • The spam filters limiting smart contract code sizes for pre-Segwit and Segwit
    "v0" scripts have been expanded to also cover Taproot. Since the sizes were
    inconsistent, the lower size of 1650 which actually had a rationale has been
    used as the default for this release. The size limit can be adjusted with the
    new -maxscriptsize option. If you know of any legitimate scripts that are
    larger than the default, please report a bug.

New RPCs

  • A new getprioritisedtransactions RPC has been added. It returns a map of all fee deltas created by the
    user with prioritisetransaction, indexed by txid. The map also indicates whether each transaction is
    present in the mempool.

  • getaddrmaninfo has been added to view the distribution of addresses in the
    new and tried table of the node's address manager across different networks
    (ipv4, ipv6, onion, i2p, cjdns). The RPC returns count of addresses in new
    and tried table as well as their sum for all networks. (bitcoin#27511, bitcoin#28565)

Updated RPCs

  • The verifychain RPC will now return false if the checks didn't fail,
    but couldn't be completed at the desired depth and level. This could be due
    to missing data while pruning, due to an insufficient dbcache or due to
    the node being shutdown before the call could finish. (bitcoin#25574)

  • sendrawtransaction has a new, optional argument, maxburnamount with a default value of 0.
    Any transaction containing an unspendable output with a value greater than maxburnamount will
    not be submitted. At present, the outputs deemed unspendable are those with scripts that begin
    with an OP_RETURN code (known as 'datacarriers'), scripts that exceed the maximum script size,
    and scripts that contain invalid opcodes.

  • The testmempoolaccept RPC now returns 2 additional results within the "fees" result:
    "effective-feerate" is the feerate including fees and sizes of transactions validated together if
    package validation was used, and also includes any modified fees from prioritisetransaction. The
    "effective-includes" result lists the wtxids of transactions whose modified fees and sizes were used
    in the effective-feerate (bitcoin#26646).

  • decodescript may now infer a Miniscript descriptor under P2WSH context if it is not lacking
    information. (bitcoin#27037)

  • finalizepsbt is now able to finalize a transaction with inputs spending Miniscript-compatible
    P2WSH scripts. (bitcoin#24149)

  • The -deprecatedrpc=softforks configuration option has been removed. The
    RPC getblockchaininfo no longer returns the softforks field, which was
    previously deprecated in 23.0. (bitcoin#23508) Information on soft fork status is
    now only available via the getdeploymentinfo RPC.

  • The deprecatedrpc=exclude_coinbase configuration option has been removed.
    The receivedby RPCs (listreceivedbyaddress, listreceivedbylabel,
    getreceivedbyaddress and getreceivedbylabel) now always return results
    accounting for received coins from coinbase outputs, without an option to
    change that behaviour. Excluding coinbases was previously deprecated in 23.0.
    (bitcoin#25171)

  • The deprecatedrpc=fees configuration option has been removed. The top-level
    fee fields fee, modifiedfee, ancestorfees and descendantfees are no
    longer returned by RPCs getmempoolentry, getrawmempool(verbose=true),
    getmempoolancestors(verbose=true) and getmempooldescendants(verbose=true).
    The same fee fields can be accessed through the fees object in the result.
    The top-level fee fields were previously deprecated in 23.0. (bitcoin#25204)

  • The getpeerinfo RPC has been updated with a new presynced_headers field,
    indicating the progress on the presync phase mentioned in the
    "P2P and network changes" section above.

  • RPC disconnectnode now accepts a subnet into address argument. (bitcoin#26576)

  • The output from getmempoolinfo is extended to include a rbf_policy key
    briefly describing the current replace-by-fee policy ("never", "optin", or
    "always").

Changes to wallet related RPCs can be found in the Wallet section below.

Build System

  • The --enable-upnp-default and --enable-natpmp-default options
    have been removed. If you want to use port mapping, you can
    configure it using a .conf file, or by passing the relevant
    options at runtime. (bitcoin#26896)

Updated settings

  • If the -checkblocks or -checklevel options are explicitly provided by the
    user, but the verification checks cannot be completed due to an insufficient
    dbcache, Bitcoin Knots will now return an error at startup. (bitcoin#25574)

  • Setting -blocksonly will now reduce the maximum mempool memory
    t...

Read more

Bitcoin Knots v23.0.knots20220529

26 Feb 23:48
Compare
Choose a tag to compare

23.0 Release Notes

Bitcoin Knots version 23.0.knots20220529 is now available from:

https://bitcoinknots.org/files/23.x/23.0.knots20220529/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

If you need to ensure your prior transaction mempool is preserved across the
upgrade (usually you don't), be sure you upgrade to and open Knots 0.21.1
prior to upgrading to 22.0 or later.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.15+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Notable changes

P2P and network changes

  • A bitcoind node will no longer rumour addresses to inbound peers by default.
    They will become eligible for address gossip after sending an ADDR, ADDRV2,
    or GETADDR message. (bitcoin#21528)

  • Before this release, Bitcoin Knots had a strong preference to try to connect
    only to peers that listen on port 8333. As a result of that, Bitcoin nodes
    listening on non-standard ports would likely not get any Bitcoin Knots peers
    connecting to them. This preference has been removed. (bitcoin#23542)

  • Full support has been added for the CJDNS network. See the new option -cjdnsreachable and doc/cjdns.md (bitcoin#23077)

Fee estimation changes

  • Fee estimation now takes the feerate of replacement (RBF) transactions into
    account. (bitcoin#22539)

Rescan startup parameter removed

The -rescan startup parameter has been removed. Wallets which require
rescanning due to corruption will still be rescanned on startup.
Otherwise, please use the rescanblockchain RPC to trigger a rescan. (bitcoin#23123)

Tracepoints and Userspace, Statically Defined Tracing support

Bitcoin Knots release binaries for Linux now include experimental tracepoints which
act as an interface for process-internal events. These can be used for review,
debugging, monitoring, and more. The tracepoint API is semi-stable. While the API
is tested, process internals might change between releases requiring changes to the
tracepoints. Information about the existing tracepoints can be found under
doc/tracing.md and
usage examples are provided in contrib/tracing/.

Updated RPCs

  • The -deprecatedrpc=addresses configuration option has been removed. RPCs
    gettxout, getrawtransaction, decoderawtransaction, decodescript,
    gettransaction verbose=true and REST endpoints /rest/tx, /rest/getutxos,
    /rest/block no longer return the addresses and reqSigs fields, which
    were previously deprecated in 22.0. (bitcoin#22650)

  • The top-level fee fields fee, modifiedfee, ancestorfees and descendantfees
    returned by RPCs getmempoolentry,getrawmempool(verbose=true),
    getmempoolancestors(verbose=true) and getmempooldescendants(verbose=true)
    are deprecated and will be removed in the next major version (use
    -deprecated=fees if needed in this version). The same fee fields can be accessed
    through the fees object in the result. WARNING: deprecated
    fields ancestorfees and descendantfees are denominated in sats, whereas all
    fields in the fees object are denominated in BTC. (bitcoin#22689)

  • The return value of the pruneblockchain method had an off-by-one bug,
    returning the height of the block after the most recent pruned. This has
    been corrected, and it now returns the height of the last pruned block as
    documented.

  • A new require_checksum option has been added to the deriveaddress method
    to allow for specifying descriptors without first calculating a checksum for
    them. (bitcoin#24162)

Changes to wallet related RPCs can be found in the Wallet section below.

New RPCs

  • Information on soft fork status has been moved from getblockchaininfo
    to the new getdeploymentinfo RPC which allows querying soft fork status at any
    block, rather than just at the chain tip. Inclusion of soft fork
    status in getblockchaininfo can currently be restored using the
    configuration -deprecatedrpc=softforks, but this will be removed in
    a future release. Note that in either case, the status field
    now reflects the status of the current block rather than the next
    block. (bitcoin#23508)

  • The sendall RPC spends specific UTXOs to one or more recipients
    without creating change. By default, the sendall RPC will spend
    every UTXO in the wallet. sendall is useful to empty wallets or to
    create a changeless payment from select UTXOs. When creating a payment
    from a specific amount for which the recipient incurs the transaction
    fee, continue to use the subtractfeefromamount option via the
    send, sendtoaddress, or sendmany RPCs. (bitcoin#24118)

  • A new gettxspendingprevout RPC has been added, which scans the mempool to
    find transactions spending any of the given outpoints. (bitcoin#24408)

Files

  • On startup, the list of banned hosts and networks (via setban RPC) in
    banlist.dat is ignored and only banlist.json is considered. Bitcoin Knots
    version 22.x is the only version that can read banlist.dat and also write
    it to banlist.json. If banlist.json already exists, version 22.x will not
    try to translate the banlist.dat into json. After an upgrade, listbanned
    can be used to double check the parsed entries. (bitcoin#22570)

Updated settings

  • -maxuploadtarget now allows human readable byte units [k|K|m|M|g|G|t|T].
    E.g. -maxuploadtarget=500g. No whitespace, +- or fractions allowed.
    Default is M if no suffix provided. (bitcoin#23249)

Tools and Utilities

  • Update -getinfo to return data in a user-friendly format that also reduces vertical space. (bitcoin#21832)

  • CLI -addrinfo now returns a single field for the number of onion addresses
    known to the node instead of separate torv2 and torv3 fields, as support
    for Tor V2 addresses was removed from Bitcoin Knots in 22.0. (bitcoin#22544)

Wallet

  • Descriptor wallets are now the default wallet type. Newly created wallets
    will use descriptors unless descriptors=false is set during createwallet, or
    the Descriptor wallet checkbox is unchecked in the GUI.

    Note that wallet RPC commands like importmulti and dumpprivkey cannot be
    used with descriptor wallets, so if your client code relies on these commands
    without specifying descriptors=false during wallet creation, you will need
    to update your code.

  • Newly created descriptor wallets will contain an automatically generated tr()
    descriptor which allows for creating single key Taproot receiving addresses.

  • upgradewallet will now automatically flush the keypool if upgrading
    from a non-HD wallet to an HD wallet, to immediately start using the
    newly-generated HD keys. (bitcoin#23093)

  • a new RPC newkeypool has been added, which will flush (entirely
    clear and refill) the keypool. (bitcoin#23093)

  • lockunspent now optionally takes a third parameter, persistent, which
    causes the lock to be written persistently to the wallet database. This
    allows UTXOs to remain locked even after node restarts or crashes. (bitcoin#23065)

  • receivedby RPCs now include coinbase transactions. Previously, the
    following wallet RPCs excluded coinbase transactions: getreceivedbyaddress,
    getreceivedbylabel, listreceivedbyaddress, listreceivedbylabel. This
    release changes this behaviour and returns results accounting for received
    coins from coinbase outputs. The previous behaviour can be restored using the
    configuration -deprecatedrpc=exclude_coinbase, but may be removed in a
    future release. (bitcoin#14707)

  • A new option in the same receivedby RPCs, include_immature_coinbase
    (default=false), determines whether to account for immature coinbase
    transactions. Immature coinbase transactions are coinbase transactions that
    have 100 or fewer confirmations, and are not spendable. (bitcoin#14707)

  • The following RPCs: listtransactions, gettransaction and listsinceblock
    now include the wtxid of the transaction. (bitcoin#24198)

  • The listtransactions, gettransaction, and listsinceblock
    RPC methods now include a wtxid field (hash of serialized transaction,
    including witness data) for each transaction.

  • A new gettxspendingprevout RPC has been added, which scans the mempool to find
    transactions spending any of the given outpoints. (bitcoin#24408)

  • The fundrawtransaction, send, and walletcreatefundedpsbt RPC methods
    now accept minconf and maxconf options to limit selection of inputs to
    UTXOs with a range of blocks confirmed. The previous min_conf option which
    served the same purpose is deprecated and may be removed in a future
    version. (#22...

Read more

Bitcoin Knots v21.2.knots20210629

27 Feb 00:01
Compare
Choose a tag to compare

21.2 Release Notes

Bitcoin Knots version 21.2.knots20210629 is now available from:

https://bitcoinknots.org/files/21.x/21.2.knots20210629/

This Long Term Support (LTS) "Steel Rope" release is based on the unchanged
Bitcoin Knots feature set from 2021 June 29th, with only bug fixes and updated
translations.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 in some cases), then run the
installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.12+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

From Bitcoin Knots 0.20.0 onwards, macOS versions earlier than 10.12 are no
longer supported.

Users running macOS Catalina/10.15 or newer should "right-click" and then
choose "Open" to start Bitcoin Knots .dmg. This is due to new signing
requirements and privacy violations imposed by Apple, which the Bitcoin
Knots project does not implement.

Notable changes

Removed RPC

  • Due to unresolved bugs, the removeaddress RPC (introduced experimentally
    in v0.21.1) had to be removed.

Updated settings

  • In previous releases, the meaning of the command line option
    -persistmempool (without a value provided) incorrectly disabled mempool
    persistence. -persistmempool is now treated like other boolean options to
    mean -persistmempool=1. Passing -persistmempool=0, -persistmempool=1
    and -nopersistmempool is unaffected. (bitcoin#23061)

  • Multiple commands can be specified for the -*notify options, and all will
    be executed. Formerly, only the prevailing command in order of option
    precedence would run. (bitcoin#22372)

Low-level changes

RPC

  • estimatesmartfee will no longer return values lower than the current
    minimum accepted fee for relaying. (bitcoin#22722)

21.2 change log

Detailed release notes follow. This overview includes changes that affect
behavior, not code moves, refactors and string updates. Changes specific to
Bitcoin Knots (beyond Core) are flagged with an asterisk ('*') before the
description.

Consensus

  • n/a *Update checkpoints and chain params, adding a new checkpoint at block 714,000 (luke-jr)

Mining

  • bitcoin#23050 *Fix BlockAssembler::AddToBlock, CTxMemPool::PrioritiseTransaction logging (jonatack)

Block and transaction handling

  • bitcoin#19851 *refactor: Extract ParseOpCode from ParseScript (promag)
  • bitcoin#22875 *Fix Racy ParseOpCode function initializatio (jeremyrubin)
  • bitcoin#22895 *don't call GetBlockPos in ReadBlockFromDisk without lock (jonatack)
  • bitcoin#23061 *Fix (inverse) meaning of -persistmempool (MarcoFalke)

P2P protocol and network code

  • bitcoin#22569 Rate limit the processing of rumoured addresses (sipa)
  • bitcoin#22834 *respect -onlynet= when making outbound connections (vasild)
  • bitcoin#22879 *addrman: Fix format string in deserialize error (MarcoFalke)
  • bitcoin#15421 *TorController: Close non-std fds when execing tor slave (luke-jr)

Wallet

  • bitcoin#22359 *Properly set fInMempool in mempool notifications (MarcoFalke)
  • bitcoin#22781 *fix the behavior of IsHDEnabled, return false in case of a blank hd wallet (Saibato)
  • bitcoin#23106 *Ensure wallet is unlocked before signing PSBT with walletprocesspsbt and GUI (meshcollider)
  • bitcoin#23644 *Replace confusing getAdjustedTime() with GetTime() (MarcoFalke)

RPC and other APIs

  • bitcoin#19361 Reset scantxoutset progress before inferring descriptors (prusnak)
  • bitcoin#22417 *util/system: Close non-std fds when execing slave processes (luke-jr)
  • bitcoin#22722 *update estimatesmartfee rpc to return max of estimateSmartFee, mempoolMinFee and minRelayTxFee (pranabp-bit)
  • bitcoin#23348 *wallet: Do not return "keypoololdest" for blank descriptor wallets (hebasto)
  • bitcoin#12677 *Elaborate docs for ancestor{count,size,fees} in listunspent output (luke-jr)
  • bitcoin#15836 *Bugfix: RPC/client: getmempoolinfo's deprecated with_fee_histogram param should be converted as JSON (luke-jr)
  • bitcoin#20556 *Properly document return values (submitblock, gettxout, getblocktemplate, scantxoutset) (MarcoFalke)
  • bitcoin#21422 *Update docs for getmempoolinfo's fee_histogram results (kiminuo)
  • bitcoin#22798 *doc: Fix RPC result documentation (MarcoFalke)
  • bitcoin#22918 *Update docs for getblock verbosity level 3 (kiminuo)
  • bitcoin#23139 *fix "trusted" and "generated" descriptions in TransactionDescriptionString (jonatack)
  • bitcoin#17034 *Bugfix: PSBT: Check the actual version number against PSBT_HIGHEST_VERSION (achow101)
  • bitcoin#17034 *Bugfix: PSBT: Correct operator< logic for CExtPubKey (achow101)
  • bitcoin#17631 *REST: Use ParseUInt32 for parsing blockfilterheaders count param to catch invalid strings (luke-jr)
  • bitcoin#20295 *getblockfrompeer may succeed (with a warning) if we already have the block (Sjors)
  • bitcoin#20295 *Ensure getblockfrompeer errors if the peer doesn't exist, even if we already have the block (luke-jr)
  • bitcoin#23706 *Forward compatibility with getblockfrompeer param name changing to peer_id (Sjors)
  • bitcoin#21260 *Actually document meaning of "in_mempool" value (luke-jr)
  • bitcoin#23549 *scanblocks: Document possible return values and status key when no ongoing scan (jamesob)
  • bitcoin#23634 *add missing scantxoutset examples (theStack)
  • bitcoin#15129 *Wallet: Disable removeaddress since it's broken (luke-jr)
  • bitcoin#22372 *Support multiple -*notify commands (luke-jr)
  • bitcoin#9152 *Document sweepprivkeys result (luke-jr)
  • bitcoin#20551 *net: Correct documented type for connection_type parameter to addnode (luke-jr)
  • bitcoin#7533 *Correct documented type of reject_reason parameters (String) (luke-jr)

Build System

  • bitcoin#21932 depends: update Qt 5.9 source url (kittywhiskers)
  • bitcoin#22017 Update Windows code signing certificate (achow101)
  • bitcoin#22191 Use custom MacOS code signing tool (achow101)
  • bitcoin#22713 Fix build with Boost 1.77.0 (sizeofvoid)
  • bitcoin#21882 *Fix undefined reference to __mulodi4 (update) (hebasto)
  • bitcoin#23045 *Restrict check for CRC32C intrinsic to aarch64 (laanwj)
  • bitcoin#23182 *configure: Accept python3.9-3.11 as valid Python programs (ajtowns, fanquake)
  • bitcoin#23314 *explicitly disable libsecp256k1 openssl based tests (fanquake)
  • bitcoin#23345 *Drop unneeded dependencies for bitcoin-wallet tool (hebasto)
  • bitcoin#22348 *Fix Boost Process compatibility with mingw-w64 compiler (hebasto)
  • bitcoin#23607 *Adapt to compatibility break in bleeding edge libevent (Perlover)
  • n/a *Bugfix: build: Adapt out-of-tree qrc to movies->animation rename (luke-jr)

Tests and QA

  • bitcoin#20182 ci: Build with --enable-werror by default, and document exceptions (hebasto)
  • bitcoin#20535 Fix intermittent feature_taproot issue (MarcoFalke)
  • bitcoin#21663 Fix macOS brew install command (hebasto)
  • bitcoin#22730 Run fuzzer task for the master branch only (hebasto)
  • bitcoin#23027 *Bugfix: Skip tests for tools not being built (luke-jr)
  • bitcoin#22693 *wallet_basic: Test use_txids in getaddressinfo result (luke-jr)
  • bitcoin#20391 *add more functional tests for setfeerate (jonatack)
  • bitcoin#23139 *add listtransactions/listsinceblock "trusted" coverage (jonatack)
  • bitcoin#23716 *replace hashlib.ripemd160 with an own implementation (sipa)

GUI

  • gui#277 Do not use QClipboard::Selection on Windows and macOS. (hebasto)
  • gui#365 Draw "eye" sign at the beginning of watch-only addresses (hebasto)
  • gui#121 *Early subscribe core signals in transaction table model (promag)
  • gui#379 *Prompt to reset settings when settings.json cannot be read (ryanofsky)
  • gui#399 *Add Load PSBT functionaliy with nowallet (psancheti110)
  • gui#409 *Fix window title of wallet loading window (shaavan)
  • gui#418 *fix bitcoin-qt app categorization on apple silicon (jarolrod)
  • gui#430 *Improvements to the open up transaction in third-party link action (jarolrod)
  • gui#439 *Do not show unused widgets at startup (hebasto)
  • gui#154 *Support macOS Dark mode (goums)
  • gui#319 *Handle palette changes in Paste button in Open URI dialog (kristapsk)
  • gui#149 *Intro: Use QFontMetrics::horizontalAdvance in Qt 5.11+ rather than deprecated QFontMetrics::width (luke-jr)
  • gui#363 *Bugfix: Peers: Use translated strings to calculate column widths (luke-jr)
  • gui#309 *Use Qt5.5-compatible syntax for network icon menu actions (luke-jr)
  • gui#318 *Peers: Use Qt5.5-compatible syntax for "Copy address" menu action (luke-jr)
  • gui#444 *Bugfix: NetWatch: Check if m_log is full before doing overwriting of deleted rows (luke-jr)
  • gui#444 *NetWatch: Update for Bech32 (luke-jr)
  • gui#444 *NetWatch: Use a softer/brighter green for active search field background colour (luke-jr)
  • gui#469 *Load Base64 PSBT string from file (achow101)
  • gui#506 *QRImageWidget: Sizing and font fixups (luke-jr)
  • bitcoin#15428 *Bugfix: Pairing: Don't try to add layout to the wrong parent even temporarily (luke-jr)
  • gui#444 *Group "Watch network activity" and "Mempool Statistics" menu entries together nicely (luke-jr)
  • bitcoin#929 *Fix comparison of character size for Tonal font detection (luke-jr)
  • n/a *Bugfix: Peers: When sorting by address, sort by network first [correctly] (luke-jr)

Miscellaneous

  • bitcoin#22390 *system: skip trying to set the locale on NetBSD (fanquake)
  • bitcoin#2241 *dbwrapper: Be stricter about build/runtime LevelDB version check in SanityCheck (luke-jr)
  • bitcoin#2241 *Use internal LevelDB test interface to bump system LevelDB mmap limit up t...
Read more