v23.1.7
Cosanta Core version v23.1.7
Release is now available from:
This release ports Cosanta Core to the Dash Core v23.1.7 codebase. Cosanta
is shipping the Dash Core v23 series as one release, so all applicable upstream
changes from Dash Core v23.0.0 through v23.1.7 are backported into Cosanta and
summarized in this document together with Cosanta-specific consensus and
network changes.
This release is mandatory for all nodes.
Please report bugs using the issue tracker at GitHub:
https://github.com/cosanta/cosanta-core/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 copy over /Applications/Cosanta-Qt on macOS or
cosantad/cosanta-qt on Linux.
When upgrading from a version older than v19.0.0, Cosanta Core will run a
migration process on first startup. This is expected to complete quickly, but
can take up to thirty minutes on some systems. After this migration, a downgrade
to an older version is only possible with a reindex or a full resync.
Masternode operators should upgrade Sentinel to v1.7.3 or newer if Sentinel is
used as part of their deployment.
Downgrade warning
Downgrade to a version < v23.0.0
Downgrading to a version older than v23.0.0 is not supported due to database
changes. If you need to use an older version, you must either reindex or resync
the whole chain.
Release Notes
Backported from Dash Core v23.0.0 through v23.1.7
The changes in this section were developed in Dash Core and backported into
Cosanta Core. They are adapted without replacing Cosanta consensus, network
parameters, staking and rewards. Cosanta did not publish the intermediate Dash
v23 releases separately; v23.1.7 contains the
cumulative applicable changes from the entire range.
Database, indexes and migration
- EvoDB uses a new masternode-state format that supports extended addresses and
future data upgrades. Migration is automatic, but downgrading below v23.0.0
requires a reindex. - EvoDB diffs are verified and, where possible, repaired automatically at
startup. The newevodb verifyandevodb repairRPCs provide manual
diagnostics and repair, and-forceevodbrepairforces re-verification. - The compact block-filter index was upgraded to version 2 and now includes
fields from special transactions, bringing it to feature parity with bloom
filters for light clients. Existing block-filter indexes are rebuilt
automatically. - Block validation and reindex performance were improved, and unnecessary
transaction-ID collection during initial block download was removed to avoid
unbounded ChainLock signer memory use.
InstantSend, quorums and security
- Quorum messages now use a dedicated priority queue. Recovered signatures are
relayed proactively, signing shares can be processed by multiple workers, and
InstantSend height lookups use a dedicated cache. These changes reduce lock
contention, redundant work and InstantSend confirmation latency. - ChainLock signing and processing races were fixed, including serialization of
concurrent chain-tip signing attempts and correction of quorum-label updates. - BLS deserialization and key generation now reject identity elements. BLS
migration, benchmark and missing-verification-vector failure cases were also
fixed. - Pushed DKG messages are accepted only from verified masternodes, bounded in
size and structurally validated before retention. Malformed signatures can no
longer trigger an assertion during batch verification. - InstantSend locks with oversized input sets are rejected before expensive
processing, and pending lock queues are bounded to prevent unbounded memory
growth. - Peer receive-buffer backpressure no longer causes the socket handler to spin
at full CPU, and oversized governance vote-sync bloom filters are rejected to
prevent CPU amplification. - Invalid oversized LLMQ messages are rejected early, reducing their processing
cost.
P2P, masternodes and special transactions
- Extended masternode addresses replace legacy single-endpoint fields and allow
multiple Core P2P, Platform P2P and Platform HTTPS endpoints. Related ProTx
inputs and RPC output now use the consolidatedaddressesrepresentation,
while legacy fields remain available where compatibility requires them. - Compact block filters can be enabled automatically for masternodes to improve
light-client privacy and pruned-node support. - UNIX domain sockets are supported for proxy and selected ZMQ connections.
- Masternodes trickle transactions to non-masternode peers instead of relaying
them immediately, reducing information leakage while retaining fast
masternode-to-masternode propagation. - Recovered-signature and InstantSend lock relay behavior was corrected across
the v23.1 patch releases, including compatibility with peers requesting
recovered signatures. - Asset lock transactions that Platform cannot process are treated as
non-standard and are not relayed. This covers transactions with more than 100
inputs, transactions larger than 20480 bytes and unsupported v2 payloads. - Conflicting ProRegTx or ProUpServTx transactions with the same Platform node
ID can no longer coexist in the mempool.
Wallet and Qt interface
- Wallet change-output amounts are randomized to reduce transaction
fingerprinting. - Descriptor wallets are fully supported rather than experimental. New
descriptor wallets include a mobile CoinJoin descriptor so funds mixed by a
compatible mobile wallet remain visible after mnemonic import. - Wallet and mnemonic passphrases may contain null characters. Wallet
encryption, HD-chain loading and decryption error handling were hardened. - The wallet creation flow verifies that the recovery phrase was recorded, and
existing HD wallets can display their recovery phrase from the Settings menu.
Wallets can also be restored from backup through the GUI. - The Qt interface adds configurable dust-attack protection, duplicate-recipient
warnings, experimental external-signer support and a restored Send action for
external signers. - Governance and masternode views were refreshed with dedicated models, status
icons, filters, detailed dialogs, proposal voting and proposal-budget
reporting. The tabs can be shown or hidden without restarting the client. - GUI configuration is stored in
settings.json, allowing settings to apply to
both the GUI and daemon. Values insettings.jsontake precedence over the
configuration file. - Wallet RPCs now report the wallet's last processed block. The
receivedby
family includes coinbase transactions by default, with options controlling
immature coinbase handling and legacy behavior.
RPC, REST, configuration and interfaces
- New RPCs include
evodb verify,evodb repair,coinjoin status,
newkeypooland the updated extended-address ProTx operations. getblockverbosity level 3 and the REST block endpoint include transaction
inputprevoutdata. REST header and block-filter-header counts can be passed
as optional query parameters.getislocksincludes the requested lock ID,listdescriptorsreports CoinJoin
descriptors and next indexes, and ProTx update and revoke RPCs support a
consistent optionalsubmitfield.- Removed or deprecated interfaces include
instantsendtoaddress,
masternode current,masternode winner,getpoolinfo, legacy masternode
registration RPCs and the deprecatedaddresses/reqSigsresult fields. -shutdownnotifyruns a command synchronously before shutdown. Proxy, RPC and
P2P port validation is stricter, while-maxconnections=0disables listening
and DNS seeding unless explicitly overridden.- StatsD supports IPv6 and URL-form hosts. Invalid statistics settings now fail
at startup instead of silently disabling statistics, and obsolete statistics
options were removed.
Performance, stability, build and dependencies
- Header synchronization was made almost twice as fast through optimized
low-level math. Block connection avoids repeated EHF-signal validation, and
networking lock contention was reduced when penalizing invalid peers. - Hot paths avoid unnecessary hash-map construction and duplicate InstantSend
database lookups. - Qt was updated from 5.15.14 to 5.15.18, including fixes for
CVE-2025-4211, CVE-2025-5455 and CVE-2025-30348. - Upstream build targets moved to Windows 10 and macOS 14. Compiler requirements
were updated, and later patches fixed Debian 13, GCC 16 and other compiler
compatibility issues. - The v23.1 patch releases also correct wallet loading, EvoDB migration and
repair, BLS scheme selection, masternode update notifications, InstantSend
relay, external-signer GUI behavior, checkpoint data and several assertion or
crash conditions.
Cosanta-specific changes
High-Performance Masternodes
A new high-performance masternode type has been added. High-performance
masternodes are intended to host Platform services in addition to existing
masternode responsibilities such as ChainLocks and InstantSend.
Activation of the v19 hard fork enables registration of 40000 COSA collateral
masternodes. In v19.0.0, regular masternodes and high-performance masternodes
have equivalent rewards and voting power per 10000 COSA collateral.
Cosanta mainnet activation heights
Cosanta uses its own buried mainnet activation heights rather than values
from another downstream network: v19 activates at block 975,744, v20 at
991,872, MN_RR at 1,013,576 and withdrawals at 1,030,192.
Cosanta masternodes do not require an auxiliary messenger daemon or its RPC
configuration.
BLS scheme upgrade
The v19 hard fork migrates remaining BLS public key and signature usage to the
basic BLS scheme, aligning serialization with IETF standards. This affects
network messages, quorum commitments, deterministic masternode lists, ProTx
transactions and related RPC behavior.
The release also includes the later Dash v19 fixes for BLS database migration
and historical masternode list handling, improving compatibility for upgraded
nodes and light clients.
Wallet changes
Cosanta Core no longer automatically creates new wallets on startup. Existing
wallets specified by -wallet, cosanta.conf or settings.json are loaded as
before. If a specified wallet does not exist, Cosanta Core logs a warning
instead of creating a new wallet automatically.
New wallets can be created through the GUI, the cosanta-wallet create
command or the createwallet RPC.
P2P and network changes
Support for BIP61 reject messages has been removed, including the
-enablebip61 option. Debugging and testing should use node logs and RPCs such
as submitblock, getblocktemplate, sendrawtransaction and
testmempoolaccept.
CoinJoin-related network messages were updated to improve support for light
clients. The release also includes the applicable Dash Core fixes through
v23.1.7 for mixing, masternode list handling and ChainLocks operation.
RPC, command and configuration changes
New or updated RPC and command behavior includes:
protx register_hpmn,protx register_fund_hpmn,
protx register_prepare_hpmnandprotx update_service_hpmnprotx register_legacy,protx register_fund_legacyand
protx register_prepare_legacycleardiscouragedupgradewalletwipewallettxescosanta-wallet wipetxesmasternodelistmodes includingrecentandhpmnprotx list hpmn- additional quorum and BLS scheme fields in related RPC responses
Command-line and configuration changes include:
- new
llmqplatformoption for devnet - new
unsafesqlitesyncoption - removed
enablebip61 - changed
llmqinstantsendandllmqinstantsenddip0024handling on regtest - invalid
-rpcauthvalues now cause startup failure -blockversionis allowed on non-mainnet networks
Please check help <command>, cosantad --help or the Qt wallet command-line
options dialog for detailed information.
Other fixes and improvements
This release also includes:
- fixes for v19 hard fork activation and database migration behavior
- improved support for historical masternode list data on light clients
- ability to keep ChainLocks enforced while disabling signing of new ChainLocks
- wallet GUI improvements for large rescans and long-running wallet operations
- fixes for startup with an empty
settings.json - reduced sensitive value logging for masternode and spork keys
- block processing optimizations
- BLS library update to version 1.3.0
- applicable build, test and documentation fixes inherited from Dash Core
v23.0.0 through v23.1.7
Backports from Bitcoin Core
This release includes many updates from Bitcoin Core v0.18 through v0.21, as
well as selected updates from Bitcoin Core v22 and newer versions. Changes that
do not align with Dash or Cosanta network behavior, such as SegWit and RBF,
are excluded from these backports.
Credits
Thanks to everyone who directly contributed to this release, submitted issues,
reviewed pull requests, helped with release candidates, maintained
infrastructure, or helped translate the project.
The upstream Dash Core v23.0.0 through v23.1.7 changes backported into this
release include contributions from:
- Kittywhiskers Van Gogh
- knst
- Konstantin Akimov
- Odysseas Gabrielides
- PastaClaw
- PastaPastaPasta
- thephez
- UdjinM6
- Vijay
- zxccxccxz
Thanks also go to Dash Core and Bitcoin Core developers for the upstream work
this release builds on.