DASH node’s update 18.1.0

DASH node’s update 18.1.0


  • Nodes get updated regularly to improve the overall operation of the network, as well as the broader nodes that help power it.
  • Dash has introduced numerous update node versions thus far, and 18.1.0 represents a version release bringing new features, various bugfixes and other improvements.

What is a Dash node?

In the Dash ecosystem, there are blockchain nodes and masternodes. Nodes are the miners creating new coins within the Dash network, while a Dash masternode, or full node, performs specialized transactions. These include InstandSend, and PrivateSend, two key features of the Dash network.

A Dash node needs to receive an update to ensure proper network operation and to receive rewards. As such, these Dash nodes play an essential role in the operation, security and overall maintenance of the blockchain, so keeping them updated is essential, and 18.1.0 is an update that contributes numerous changes to the network.

What’s New?

There are numerous changes that were introduced within the DashCore v18.1 update, and we will go over them now.

Dash Core 18.1.0 is a minor version of the Dash Core 18.x.x series bringing new features, various bugfixes and other improvements.

1. BIP70 Support Removed

Support for the BIP70 Payment Protocol has been dropped from Dash Qt. Interacting with BIP70-formatted URIs will return an error message informing them of support removal. The allowselfsignedrootcertificates and rootcertificates launch arguments are no longer valid.

2. systemd init file

The systemd init file (contrib/init/dashd.service) has been changed to use /var/lib/dashd as the data directory instead of ~dash/.dash. This change makes Dash Core more consistent with other services, and makes the systemd init config more consistent with existing Upstart and OpenRC configs.

The configuration, PID, and data directories are now completely managed by systemd, which will take care of their creation, permissions, etc.

When using the provided init files under contrib/init, overriding the datadir option in /etc/dash/dash.conf will have no effect. This is because the command line arguments specified in the init files take precedence over the options specified in /etc/dash/dash.conf.

3. Account API removed

The “account” API was deprecated in v18.0 and has been fully removed in v18.1.

4. Build system changes

Python >=3.5 is now required by all aspects of the project. This includes the build systems, test framework and linters.

5. Changes regarding misbehaving peers

Peers that misbehave (e.g. send us invalid blocks) are now referred to as discouraged nodes in log output, as they’re not (and weren’t) strictly banned: incoming connections are still allowed from them, but they’re preferred for eviction.

Furthermore, a few additional changes are introduced to how discouraged addresses are treated:

  • Discouraging an address does not time out automatically after 24 hours (or the -bantime setting). Depending on traffic from other peers, discouragement may time out at an indeterminate time.
  • Discouragement is not persisted over restarts.
  • There is no method to list discouraged addresses. They are not returned by the listbanned RPC. That RPC also no longer reports the ban_reason field, as "manually added" is the only remaining option.
  • Discouragement cannot be removed with the setban remove RPC command. If you need to remove a discouragement, you can remove all discouragements by stop-starting your node.

6. Remote Procedure Call (RPC) Changes

The new RPCs are:

  • A new setwalletflag RPC sets/unsets flags for an existing wallet.
  • The spork RPC call will no longer offer both get (labelled as “basic mode”) and set (labelled as “advanced mode”) functionality. spork will now only offer “basic” functionality. “Advanced” functionality is now exposed through the sporkupdate RPC call.
  • The generateblock RPC call will mine an array of ordered transactions, defined by hex array transactions that can contain either transaction IDs or a hex-encoded serialized raw transaction and set the coinbase destination defined by the address/descriptor argument.
  • The mockscheduler is a debug RPC call that allows forwarding the scheduler by delta_time. This RPC call is hidden and will only be functional on mockable chains (i.e. primarily regtest). delta_time must be between 0 – 3600.
  • dumptxoutset see bitcoin#16899 and the help text. This RPC is used for UTXO snapshot creation which is a part of the assume utxo project
  • generatetodescriptor Mine blocks immediately to a specified descriptor. See bitcoin#16943

The removed RPCs are:

  • The wallet’s generate RPC method has been removed. generate is only used for testing. The RPC call reaches across multiple subsystems (wallet and mining), so is deprecated to simplify the wallet-node interface. Projects that are using generate for testing purposes should transition to using the generatetoaddress call, which does not require or use the wallet component. Calling generatetoaddress with an address returned by getnewaddress gives the same functionality as the old generate method.

7. Changes in existing RPCs introduced through bitcoin backports:

  • The gettxoutsetinfo RPC call now accept one optional argument (hash_type) that defines the algorithm used for calcluating the UTXO set hash, it will default to hash_serialized_2 unless explicitly specified otherwise. hash_type will influence the key that is used to refer to the UTXO set hash.

  • The generatedescriptor RPC call has been introduced to allow mining a set number of blocks, defined by argument num_blocks, with the coinbase destination set to a descriptor, defined by the descriptor argument. The optional maxtries argument can be used to limit iterations.

  • Descriptors with key origin information imported through importmulti will have their key origin information stored in the wallet for use with creating PSBTs.

  • If bip32derivs of both walletprocesspsbt and walletcreatefundedpsbt is set to true but the key metadata for a public key has not been updated yet, then that key will have a derivation path as if it were just an independent key (i.e. no derivation path and its master fingerprint is itself)

  • The getblockstats RPC is faster for fee calculation by using BlockUndo data. Also, -txindex is no longer required and getblockstats works for all non-pruned blocks.

  • The unloadwallet RPC is now synchronous, meaning that it blocks until the wallet is fully unloaded.

  • RPCs which have an include_watchonly argument or includeWatching option now default to true for watch-only wallets. Affected RPCs are: getbalancelistreceivedbyaddresslistreceivedbylabellisttransactionslistsinceblockgettransactionwalletcreatefundedpsbt, and fundrawtransaction.

  • createwallet now returns a warning if an empty string is used as an encryption password, and does not encrypt the wallet, instead of raising an error. This makes it easier to disable encryption but also specify other options when using the bitcoin-cli tool.

  • The RPC joinpsbts will shuffle the order of the inputs and outputs of the resulting joined psbt. Previously inputs and outputs were added in the order that the PSBTs were provided which makes correlating inputs to outputs extremely easy.

  • importprivkey: new label behavior. Previously, importprivkey automatically added the default empty label (“”) to all addresses associated with the imported private key. Now it defaults to using any existing label for those addresses.

  • The createwalletloadwallet, and unloadwallet RPCs now accept load_on_startup options to modify the settings list.

  • Several RPCs have been updated to include an “avoid_reuse” flag, used to control whether already used addresses should be left out or included in the operation. These include:
    • createwallet
    • getbalance
    • sendtoaddress

In addition, sendtoaddress has been changed to enable -avoidpartialspends when avoid_reuse is enabled. The listunspent RPC has also been updated to now include a “reused” bool, for nodes with “avoid_reuse” enabled.

Dash-specific changes in existing RPCs:

  • In rpc upgradetohd new parameter rescan was added which allows users to skip or force blockchain rescan. This params defaults to false when mnemonic parameter is empty and true otherwise.

8. Command-line options

Most changes here were introduced through Bitcoin backports.

New cmd-line options:

  • RPC Whitelist system. It can give certain RPC users permissions to only some RPC calls. It can be set with two command line arguments (rpcwhitelist and rpcwhitelistdefault).

Removed cmd-line options:

  • The -zapwallettxes startup option has been removed and its functionality removed from the wallet. This option was originally intended to allow for the fee bumping of transactions that did not signal RBF. This functionality has been superseded with the abandon transaction feature.

Changes in existing cmd-line options:

  • The testnet field in dash-cli -getinfo has been renamed to chain and now returns the current network name as defined in BIP70 (main, test, regtest).
  • Importing blocks upon startup via the bootstrap.dat file no longer occurs by default. The file must now be specified with -loadblock=<file>.

How to connect to Dash node?

If you are curious how to update a node, you can do so manually, or use a service that does this for you.

NOWNodes enables a connection to a blockchain node, where you will be able to get data of the network’s hashrate, the block difficulty, block height, access to data surrounding wallet addresses, transaction data, balance history tickers list, and other data.

To connect, you will need to navigate to the official NOWNodes website, after which you can enter your email address and click on “GET FREE API KEY.” Afterward, you can visit the official documentation, where you will be greeted by a list of codes and commands to access the network.

If you are curious about the other nodes available, you can find a full node list here, where you will never worry about node update.