Releases: decred/dcrd
dcrd v1.4.0-rc3
This release of dcrd introduces a new consensus vote agenda which allows the
stakeholders to decide whether or not to activate changes needed to modify the
sequence lock handling which is required for providing full support for the
Lightning Network. For those unfamiliar with the voting process in Decred, this
means that all code in order to make the necessary changes is already included
in this release, however its enforcement will remain dormant until the
stakeholders vote to activate it.
It also contains smart fee estimation, performance enhancements for block relay
and processing, a major internal restructuring of how unspent transaction
outputs are handled, support for whitelisting inbound peers to ensure service
for your own SPV (Simplified Payment Verification) wallets, various updates to
the RPC server such as a new method to query the state of the chain and more
easily supporting external RPC connections over TLS, infrastructure
improvements, and other quality assurance changes.
The following Decred Change Proposals (DCP) describes the proposed changes in detail:
It is important for everyone to upgrade their software to this latest release
even if you don't intend to vote in favor of the agenda.
Downgrade Warning
The database format in v1.4.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a lengthy one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Fix Lightning Network Sequence Locks Vote
In order to fully support the Lightning Network, the current sequence lock
consensus rules need to be modified. A new vote with the id fixlnseqlocks
is
now available as of this release. After upgrading, stakeholders may set their
preferences through their wallet or Voting Service Provider's (VSP) website.
Smart Fee Estimation (estimatesmartfee
)
A new RPC named estimatesmartfee
is now available which returns a suitable
fee rate for transactions to use in order to have a high probability of them
being mined within a specified number of confirmations. The estimation is based
on actual network usage and thus varies according to supply and demand.
This is important in the context of the Lightning Network (LN) and, more
generally, it provides services and users with a mechanism to choose how to
handle network congestion. For example, payments that are high priority might
be willing to pay a higher fee to help ensure the transaction is mined more
quickly, while lower priority payments might be willing to wait longer in
exchange for paying a lower fee. This estimation capability provides a way to
obtain a fee that will achieve the desired result with a high probability.
Support for Whitelisting Inbound Peers
When peers are whitelisted via the --whitelist
option, they will now be
allowed to connect even when they would otherwise exceed the maximum number of
peers. This is highly useful in cases where users have configured their wallet
to use SPV mode and only connect to dcrd instances that they control for
increased privacy and guaranteed service.
Several Speed Optimizations
Similar to previous releases, this release also contains several enhancements to
improve speed for the initial sync process, validation, and network operations.
In order to achieve these speedups, there is a lengthy one time database
migration, as previously mentioned, that typically takes anywhere from 30
minutes to an hour to complete depending on hardware.
Faster Tip Block Relay
Blocks that extend the current best chain are now relayed to the network
immediately after they pass the initial sanity and contextual checks, most
notably valid proof of work. This allows blocks to propagate more quickly
throughout the network, which in turn improves vote times.
UTXO Set Restructuring
The way the unspent transaction outputs are handled internally has been
overhauled to significantly decrease the time it takes to validate blocks and
transactions. While this has many benefits, probably the most important one
for most stakeholders is that votes can be cast more quickly which helps reduce
the number of missed votes.
RPC Server Changes
New Chain State Query RPC (getblockchaininfo
)
A new RPC named getblockchaininfo
is now available which can be used to query
the state of the chain including details such as its overall verification
progress during initial sync, the maximum supported block size, and that status
of consensus changes (deployments) which require stakeholder votes. See the
JSON-RPC API Documentation
for API details.
Removal of Vote Creation RPC (createrawssgen
)
The deprecated createrawssgen
, which was previously used to allow creating a
vote via RPC is no longer available. Votes are time sensitive and thus it does
not make sense to create them offline.
Updates to Block and Transaction RPCs
The getblock
, getblockheader
, getrawtransaction
, and
searchrawtransactions
RPCs now contain additional information such as the
extradata
field in the header, the expiry
field in transactions, and the
blockheight
and blockindex
of the block that contains a transaction if it
has been mined. See the JSON-RPC API Documentation
for API details.
Built-in Support for Enabling External TLS RPC Connections
A new command line parameter (--altdnsnames
) and environment variable
(DCRD_ALT_DNSNAMES
) can now be used before the first launch of drcd to specify
additional external IP addresses and DNS names to add during the certificate
creation that are permitted to connect to the RPC server via TLS. Previously,
a separate tool was required to accomplish this configuration.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.4.0 release (decred/dcrd#1547)
- chaincfg: Introduce agenda for fixlnseqlocks vote (decred/dcrd#1578)
- multi: Enable vote for DCP0004 (decred/dcrd#1579)
- peer: Add support for specifying ua comments (decred/dcrd#1413)
- blockmanager: Fast relay checked tip blocks (decred/dcrd#1443)
- multi: Latest consensus active from simnet genesis (decred/dcrd#1482)
- server: Always allow whitelisted inbound peers (decred/dcrd#1516)
Transaction relay (memory pool):
- blockmanager: handle txs in invalid blocks (decred/dcrd#1430)
- mempool: Remove potential negative locktime check (decred/dcrd#1455)
- mempool: Stake-related readability improvements (decred/dcrd#1456)
RPC:
- multi: Include additional fields on RPC tx results (decred/dcrd#1441)
- rpcserver: Allow scripthash addrs in createrawsstx (decred/dcrd#1444)
- rpcserver: Remove createrawssgen RPC (decred/dcrd#1448)
- rpcclient: support getchaintips RPC (decred/dcrd#1469)
- multi: Add getblockchaininfo rpc (decred/dcrd#1479)
- rpcserver: Adds ability to allow alternative dns names for TLS (decred/dcrd#1476)
- multi: Cleanup recent alt DNS names additions (decred/dcrd#1493)
- multi: Cleanup getblock and getblockheader RPCs (decred/dcrd#1497)
- multi: Return total chain work in RPC results (decred/dcrd#1498)
- rpcserver: Improve GenerateNBlocks error message (decred/dcrd#1507)
- rpcserver: Fix verify progress calculation (decred/dcrd#1508)
- rpcserver: Fix sendrawtransaction error code (decred/dcrd#1512)
- blockchain: Notify stake states after connected block (decred/dcrd#1515)
- rpcserver: bump version to 5.0. (decred/dcrd#1531)
- rpcclient: support getblockchaininfo RPC (decred/dcrd#1539)
- rpcserver: update block template reconstruction (decred/dcrd#1567)
dcrd command-line flags and configuration:
- config: add --maxsameip to limit # of conns to same IP (decred/dcrd#1517)
Documentation:
- docs: Update docs for versioned modules (decred/dcrd#1391)
- docs: Update for fees package (decred/dcrd#1540)
- docs: Revamp main README.md and update docs (decred/dcrd#1447)
- docs: Use relative versions in contrib checklist ([#1451](https:...
dcrd v1.4.0-rc1
This release of dcrd contains smart fee estimation, performance enhancements for
block relay and processing, a major internal restructuring of how unspent
transaction outputs are handled, support for whitelisting inbound peers to
ensure service for your own SPV (Simplified Payment Verification) wallets,
various updates to the RPC server such as a new method to query the state of the
chain and more easily supporting external RPC connections over TLS,
infrastructure improvements, and other quality assurance changes.
It is highly recommended that everyone upgrade to this latest release as it
contains many important scalability improvements and smart fee estimation.
Downgrade Warning
The database format in v1.4.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a lengthy one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Smart Fee Estimation (estimatesmartfee
)
A new RPC named estimatesmartfee
is now available which returns a suitable
fee rate for transactions to use in order to have a high probability of them
being mined within a specified number of confirmations. The estimation is based
on actual network usage and thus varies according to supply and demand.
This is important in the context of the Lightning Network (LN) and, more
generally, it provides services and users with a mechanism to choose how to
handle network congestion. For example, payments that are high priority might
be willing to pay a higher fee to help ensure the transaction is mined more
quickly, while lower priority payments might be willing to wait longer in
exchange for paying a lower fee. This estimation capability provides a way to
obtain a fee that will achieve the desired result with a high probability.
Support for Whitelisting Inbound Peers
When peers are whitelisted via the --whitelist
option, they will now be
allowed to connect even when they would otherwise exceed the maximum number of
peers. This is highly useful in cases where users have configured their wallet
to use SPV mode and only connect to dcrd instances that they control for
increased privacy and guaranteed service.
Several Speed Optimizations
Similar to previous releases, this release also contains several enhancements to
improve speed for the initial sync process, validation, and network operations.
In order to achieve these speedups, there is a lengthy one time database
migration, as previously mentioned, that typically takes anywhere from 30
minutes to an hour to complete depending on hardware.
Faster Tip Block Relay
Blocks that extend the current best chain are now relayed to the network
immediately after they pass the initial sanity and contextual checks, most
notably valid proof of work. This allows blocks to propagate more quickly
throughout the network, which in turn improves vote times.
UTXO Set Restructuring
The way the unspent transaction outputs are handled internally has been
overhauled to significantly decrease the time it takes to validate blocks and
transactions. While this has many benefits, probably the most important one
for most stakeholders is that votes can be cast more quickly which helps reduce
the number of missed votes.
RPC Server Changes
New Chain State Query RPC (getblockchaininfo
)
A new RPC named getblockchaininfo
is now available which can be used to query
the state of the chain including details such as its overall verification
progress during initial sync, the maximum supported block size, and that status
of consensus changes (deployments) which require stakeholder votes. See the
JSON-RPC API Documentation
for API details.
Removal of Vote Creation RPC (createrawssgen
)
The deprecated createrawssgen
, which was previously used to allow creating a
vote via RPC is no longer available. Votes are time sensitive and thus it does
not make sense to create them offline.
Updates to Block and Transaction RPCs
The getblock
, getblockheader
, getrawtransaction
, and
searchrawtransactions
RPCs now contain additional information such as the
extradata
field in the header, the expiry
field in transactions, and the
blockheight
and blockindex
of the block that contains a transaction if it
has been mined. See the JSON-RPC API Documentation
for API details.
Built-in Support for Enabling External TLS RPC Connections
A new command line parameter (--altdnsnames
) and environment variable
(DCRD_ALT_DNSNAMES
) can now be used before the first launch of drcd to specify
additional external IP addresses and DNS names to add during the certificate
creation that are permitted to connect to the RPC server via TLS. Previously,
a separate tool was required to accomplish this configuration.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.4.0 release (decred/dcrd#1547)
- peer: Add support for specifying ua comments (decred/dcrd#1413)
- blockmanager: Fast relay checked tip blocks (decred/dcrd#1443)
- multi: Latest consensus active from simnet genesis (decred/dcrd#1482)
- server: Always allow whitelisted inbound peers (decred/dcrd#1516)
Transaction relay (memory pool):
- blockmanager: handle txs in invalid blocks (decred/dcrd#1430)
- mempool: Remove potential negative locktime check (decred/dcrd#1455)
- mempool: Stake-related readability improvements (decred/dcrd#1456)
RPC:
- multi: Include additional fields on RPC tx results (decred/dcrd#1441)
- rpcserver: Allow scripthash addrs in createrawsstx (decred/dcrd#1444)
- rpcserver: Remove createrawssgen RPC (decred/dcrd#1448)
- rpcclient: support getchaintips RPC (decred/dcrd#1469)
- multi: Add getblockchaininfo rpc (decred/dcrd#1479)
- rpcserver: Adds ability to allow alternative dns names for TLS (decred/dcrd#1476)
- multi: Cleanup recent alt DNS names additions (decred/dcrd#1493)
- multi: Cleanup getblock and getblockheader RPCs (decred/dcrd#1497)
- multi: Return total chain work in RPC results (decred/dcrd#1498)
- rpcserver: Improve GenerateNBlocks error message (decred/dcrd#1507)
- rpcserver: Fix verify progress calculation (decred/dcrd#1508)
- rpcserver: Fix sendrawtransaction error code (decred/dcrd#1512)
- blockchain: Notify stake states after connected block (decred/dcrd#1515)
- rpcserver: bump version to 5.0. (decred/dcrd#1531)
- rpcclient: support getblockchaininfo RPC (decred/dcrd#1539)
dcrd command-line flags and configuration:
- config: add --maxsameip to limit # of conns to same IP (decred/dcrd#1517)
Documentation:
- docs: Update docs for versioned modules (decred/dcrd#1391)
- docs: Update for fees package (decred/dcrd#1540)
- docs: Revamp main README.md and update docs (decred/dcrd#1447)
- docs: Use relative versions in contrib checklist (decred/dcrd#1451)
- docs: Use the correct binary name (decred/dcrd#1461)
- docs: Add github pull request template (decred/dcrd#1474)
- docs: Use unix line ending in mod hierarchy gv (decred/dcrd#1487)
- docs: Add README badge and link for goreportcard (decred/dcrd#1492)
- sampleconfig: Fix proxy typo (decred/dcrd#1513)
Developer-related package and module changes:
- release: Bump module versions and deps (decred/dcrd#1541)
- build: Tidy module sums with go mod tidy (decred/dcrd#1408)
- blockchain: update BestState (decred/dcrd#1416)
- mempool: tweak trace logs (decred/dcrd#1429)
- blockchain: Correct best pool size on disconnect (decred/dcrd#1431)
- multi: Make use of new internal version package (decred/dcrd#1435)
- peer: Protect handlePongMsg with p.statsMtx ([#1438](https://github.com/decred/dcr...
dcrd v1.3.0
This release of dcrd contains significant performance enhancements for startup
speed, validation, and network operations that directly benefit lightweight
clients, such as SPV (Simplified Payment Verification) wallets, a policy change
to reduce the default minimum transaction fee rate, a new public test network
version, removal of bloom filter support, infrastructure improvements, and other
quality assurance changes.
It is highly recommended that everyone upgrade to this latest release as it
contains many important scalability improvements and is required to be able to
use the new public test network.
Downgrade Warning
The database format in v1.3.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Reduction of Default Minimum Transaction Fee Rate Policy
The default setting for the policy which specifies the minimum transaction fee
rate that will be accepted and relayed to the rest of the network has been
reduced to 0.0001 DCR/kB (10,000 atoms/kB) from the previous value of 0.001
DCR/kB (100,000 atoms/kB).
Transactions should not attempt to use the reduced fee rate until the majority
of the network has upgraded to this release as otherwise the transactions will
likely have issues relaying through the network since old nodes that have not
updated their policy will reject them due to not paying a high enough fee.
Several Speed Optimizations
This release contains several enhancements to improve speed for startup,
the initial sync process, validation, and network operations.
In order to achieve these speedups, there is a one time database migration, as
previously mentioned, that typically only takes a few seconds to complete on
most hardware.
Further Improved Startup Speed
The startup time has been improved by roughly 2x on both slower hard disk drives
(HDDs) and solid state drives (SSDs) as compared to v1.2.0.
Significantly Faster Network Operations
The ability to serve information to other peers on the network has received
several optimizations which, in addition to generally improving the overall
scalability and throughput of the network, also directly benefits SPV
(Simplified Payment Verification) clients by delivering the block headers they
require roughly 3x to 4x faster.
Signature Hash Calculation Optimization
Part of validating that transactions are only spending coins that the owner has
authorized involves ensuring the validity of cryptographic signatures. This
release provides a speedup of about 75% to a key portion of that validation
which results in a roughly 20% faster initial sync process.
Bloom Filters Removal
Bloom filters were deprecated as of the last release in favor of the more recent
privacy-preserving GCS committed filters. Consequently, this release removes
support for bloom filters completely. There are no known clients which use
bloom filters, however, if there are any unknown clients which use them, those
clients will need to be updated to use the GCS committed filters accordingly.
Public Test Network Version 3
The public test network has been reset and bumped to version 3. All of the new
consensus rules voted in by version 2 of the public test network have been
retained and are therefore active on the new version 3 test network without
having to vote them in again.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.3.0 release (decred/dcrd#1385)
- multi: Remove everything to do about bloom filters (decred/dcrd#1162)
- wire: Remove TxSerializeWitnessSigning (decred/dcrd#1180)
- addrmgr: Skip low quality addresses for getaddr (decred/dcrd#1135)
- addrmgr: Fix race in save peers (decred/dcrd#1259)
- server: Only respond to getaddr once per conn (decred/dcrd#1257)
- peer: Rework version negotiation (decred/dcrd#1250)
- peer: Allow OnVersion callback to reject peer (decred/dcrd#1251)
- server: Reject outbound conns to non-full nodes (decred/dcrd#1252)
- peer: Improve net address service adverts (decred/dcrd#1253)
- addrmgr: Expose method to update services (decred/dcrd#1254)
- server: Update addrmgr services on outbound conns (decred/dcrd#1254)
- server: Use local inbound var in version handler (decred/dcrd#1255)
- server: Only advertise local addr when current (decred/dcrd#1256)
- server: Use local addr var in version handler (decred/dcrd#1258)
- chaincfg: split params into per-network files (decred/dcrd#1265)
- server: Always reply to getheaders with headers (decred/dcrd#1295)
- addrmgr: skip never-successful addresses (decred/dcrd#1313)
- multi: Introduce default coin type for SLIP0044 (decred/dcrd#1293)
- blockchain: Modify diff redux logic for testnet (decred/dcrd#1387)
- multi: Reset testnet and bump to version 3 (decred/dcrd#1387)
- multi: Remove testnet version 2 defs and refs (decred/dcrd#1387)
Transaction relay (memory pool):
- policy: Lower default relay fee to 0.0001/kB (decred/dcrd#1202)
- mempool: Use blockchain for tx expiry check (decred/dcrd#1199)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
- mempool: Stricter orphan evaluation and eviction (decred/dcrd#1207)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- multi: add specialized rebroadcast handling for stake txs (decred/dcrd#979)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
RPC:
- rpcserver: Improve JSON-RPC compatibility (decred/dcrd#1150)
- rpcserver: Correct rebroadcastwinners handler (decred/dcrd#1234)
- dcrjson: Add Expiry field to CreateRawTransactionCmd (decred/dcrd#1149)
- dcrjson: add estimatesmartfee (decred/dcrd#1201)
- rpc: Use upstream gorilla/websocket (decred/dcrd#1218)
- dcrjson: add createvotingaccount and dropvotingaccount rpc methods (decred/dcrd#1217)
- multi: Change NoSplitTransaction param to SplitTx (decred/dcrd#1231)
- rpcclient: pass default value for NewPurchaseTicketCmd's comment param (decred/dcrd#1232)
- multi: No winning ticket ntfns for big reorg depth (decred/dcrd#1235)
- multi: modify PurchaseTicketCmd (decred/dcrd#1241)
- multi: move extension commands into associated normal command files (decred/dcrd#1238)
- dcrjson: Fix NewCreateRawTransactionCmd comment (decred/dcrd#1262)
- multi: revert TicketChange addition to PurchaseTicketCmd (decred/dcrd#1278)
- rpcclient: Implement fmt.Stringer for Client (decred/dcrd#1298)
- multi: add amount field to TransactionInput (decred/dcrd#1297)
- dcrjson: Ready GetStakeInfoResult for SPV wallets (decred/dcrd#1333)
- dcrjson: add fundrawtransaction command (decred/dcrd#1316)
- dcrjson: Make linter happy by renaming Id to ID (decred/dcrd#1374)
- dcrjson: Remove unused vote bit concat codec funcs (decred/dcrd#1384)
- rpcserver: Cleanup cfilter handling (decred/dcrd#1398)
dcrd command-line flags and configuration:
- multi: Correct clean and expand path handling (decred/dcrd#1186)
dcrctl utility changes:
- dcrctl: Fix --skipverify failing if rpc.cert not found (decred/dcrd#1163)
Documentation:
- hdkeychain: Correct hash algorithm in comment ([#1171](https://github.co...
dcrd v1.3.0-rc2
This release of dcrd contains significant performance enhancements for startup
speed, validation, and network operations that directly benefit lightweight
clients, such as SPV (Simplified Payment Verification) wallets, a policy change
to reduce the default minimum transaction fee rate, a new public test network
version, removal of bloom filter support, infrastructure improvements, and other
quality assurance changes.
It is highly recommended that everyone upgrade to this latest release as it
contains many important scalability improvements and is required to be able to
use the new public test network.
Downgrade Warning
The database format in v1.3.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Reduction of Default Minimum Transaction Fee Rate Policy
The default setting for the policy which specifies the minimum transaction fee
rate that will be accepted and relayed to the rest of the network has been
reduced to 0.0001 DCR/kB (10,000 atoms/kB) from the previous value of 0.001
DCR/kB (100,000 atoms/kB).
Transactions should not attempt to use the reduced fee rate until the majority
of the network has upgraded to this release as otherwise the transactions will
likely have issues relaying through the network since old nodes that have not
updated their policy will reject them due to not paying a high enough fee.
Several Speed Optimizations
This release contains several enhancements to improve speed for startup,
the initial sync process, validation, and network operations.
In order to achieve these speedups, there is a one time database migration, as
previously mentioned, that typically only takes a few seconds to complete on
most hardware.
Further Improved Startup Speed
The startup time has been improved by roughly 2x on both slower hard disk drives
(HDDs) and solid state drives (SSDs) as compared to v1.2.0.
Significantly Faster Network Operations
The ability to serve information to other peers on the network has received
several optimizations which, in addition to generally improving the overall
scalability and throughput of the network, also directly benefits SPV
(Simplified Payment Verification) clients by delivering the block headers they
require roughly 3x to 4x faster.
Signature Hash Calculation Optimization
Part of validating that transactions are only spending coins that the owner has
authorized involves ensuring the validity of cryptographic signatures. This
release provides a speedup of about 75% to a key portion of that validation
which results in a roughly 20% faster initial sync process.
Bloom Filters Removal
Bloom filters were deprecated as of the last release in favor of the more recent
privacy-preserving GCS committed filters. Consequently, this release removes
support for bloom filters completely. There are no known clients which use
bloom filters, however, if there are any unknown clients which use them, those
clients will need to be updated to use the GCS committed filters accordingly.
Public Test Network Version 3
The public test network has been reset and bumped to version 3. All of the new
consensus rules voted in by version 2 of the public test network have been
retained and are therefore active on the new version 3 test network without
having to vote them in again.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.3.0 release (decred/dcrd#1385)
- multi: Remove everything to do about bloom filters (decred/dcrd#1162)
- wire: Remove TxSerializeWitnessSigning (decred/dcrd#1180)
- addrmgr: Skip low quality addresses for getaddr (decred/dcrd#1135)
- addrmgr: Fix race in save peers (decred/dcrd#1259)
- server: Only respond to getaddr once per conn (decred/dcrd#1257)
- peer: Rework version negotiation (decred/dcrd#1250)
- peer: Allow OnVersion callback to reject peer (decred/dcrd#1251)
- server: Reject outbound conns to non-full nodes (decred/dcrd#1252)
- peer: Improve net address service adverts (decred/dcrd#1253)
- addrmgr: Expose method to update services (decred/dcrd#1254)
- server: Update addrmgr services on outbound conns (decred/dcrd#1254)
- server: Use local inbound var in version handler (decred/dcrd#1255)
- server: Only advertise local addr when current (decred/dcrd#1256)
- server: Use local addr var in version handler (decred/dcrd#1258)
- chaincfg: split params into per-network files (decred/dcrd#1265)
- server: Always reply to getheaders with headers (decred/dcrd#1295)
- addrmgr: skip never-successful addresses (decred/dcrd#1313)
- multi: Introduce default coin type for SLIP0044 (decred/dcrd#1293)
- blockchain: Modify diff redux logic for testnet (decred/dcrd#1387)
- multi: Reset testnet and bump to version 3 (decred/dcrd#1387)
- multi: Remove testnet version 2 defs and refs (decred/dcrd#1387)
Transaction relay (memory pool):
- policy: Lower default relay fee to 0.0001/kB (decred/dcrd#1202)
- mempool: Use blockchain for tx expiry check (decred/dcrd#1199)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
- mempool: Stricter orphan evaluation and eviction (decred/dcrd#1207)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- multi: add specialized rebroadcast handling for stake txs (decred/dcrd#979)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
RPC:
- rpcserver: Improve JSON-RPC compatibility (decred/dcrd#1150)
- rpcserver: Correct rebroadcastwinners handler (decred/dcrd#1234)
- dcrjson: Add Expiry field to CreateRawTransactionCmd (decred/dcrd#1149)
- dcrjson: add estimatesmartfee (decred/dcrd#1201)
- rpc: Use upstream gorilla/websocket (decred/dcrd#1218)
- dcrjson: add createvotingaccount and dropvotingaccount rpc methods (decred/dcrd#1217)
- multi: Change NoSplitTransaction param to SplitTx (decred/dcrd#1231)
- rpcclient: pass default value for NewPurchaseTicketCmd's comment param (decred/dcrd#1232)
- multi: No winning ticket ntfns for big reorg depth (decred/dcrd#1235)
- multi: modify PurchaseTicketCmd (decred/dcrd#1241)
- multi: move extension commands into associated normal command files (decred/dcrd#1238)
- dcrjson: Fix NewCreateRawTransactionCmd comment (decred/dcrd#1262)
- multi: revert TicketChange addition to PurchaseTicketCmd (decred/dcrd#1278)
- rpcclient: Implement fmt.Stringer for Client (decred/dcrd#1298)
- multi: add amount field to TransactionInput (decred/dcrd#1297)
- dcrjson: Ready GetStakeInfoResult for SPV wallets (decred/dcrd#1333)
- dcrjson: add fundrawtransaction command (decred/dcrd#1316)
- dcrjson: Make linter happy by renaming Id to ID (decred/dcrd#1374)
- dcrjson: Remove unused vote bit concat codec funcs (decred/dcrd#1384)
- rpcserver: Cleanup cfilter handling (decred/dcrd#1398)
dcrd command-line flags and configuration:
- multi: Correct clean and expand path handling (decred/dcrd#1186)
dcrctl utility changes:
- dcrctl: Fix --skipverify failing if rpc.cert not found (decred/dcrd#1163)
Documentation:
- hdkeychain: Correct hash algorithm in comment ([#1171](https://githu...
dcrd v1.3.0-rc1
This release of dcrd contains significant performance enhancements for startup
speed, validation, and network operations that directly benefit lightweight
clients, such as SPV (Simplified Payment Verification) wallets, a policy change
to reduce the default minimum transaction fee rate, a new public test network
version, removal of bloom filter support, infrastructure improvements, and other
quality assurance changes.
It is highly recommended that everyone upgrade to this latest release as it
contains many important scalability improvements and is required to be able to
use the new public test network.
Downgrade Warning
The database format in v1.3.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Reduction of Default Minimum Transaction Fee Rate Policy
The default setting for the policy which specifies the minimum transaction fee
rate that will be accepted and relayed to the rest of the network has been
reduced to 0.0001 DCR/kB (10,000 atoms/kB) from the previous value of 0.001
DCR/kB (100,000 atoms/kB).
Transactions should not attempt to use the reduced fee rate until the majority
of the network has upgraded to this release as otherwise the transactions will
likely have issues relaying through the network since old nodes that have not
updated their policy will reject them due to not paying a high enough fee.
Several Speed Optimizations
This release contains several enhancements to improve speed for startup,
the initial sync process, validation, and network operations.
In order to achieve these speedups, there is a one time database migration, as
previously mentioned, that typically only takes a few seconds to complete on
most hardware.
Further Improved Startup Speed
The startup time has been improved by roughly 2x on both slower hard disk drives
(HDDs) and solid state drives (SSDs) as compared to v1.2.0.
Significantly Faster Network Operations
The ability to serve information to other peers on the network has received
several optimizations which, in addition to generally improving the overall
scalability and throughput of the network, also directly benefits SPV
(Simplified Payment Verification) clients by delivering the block headers they
require roughly 3x to 4x faster.
Signature Hash Calculation Optimization
Part of validating that transactions are only spending coins that the owner has
authorized involves ensuring the validity of cryptographic signatures. This
release provides a speedup of about 75% to a key portion of that validation
which results in a roughly 20% faster initial sync process.
Bloom Filters Removal
Bloom filters were deprecated as of the last release in favor of the more recent
privacy-preserving GCS committed filters. Consequently, this release removes
support for bloom filters completely. There are no known clients which use
bloom filters, however, if there are any unknown clients which use them, those
clients will need to be updated to use the GCS committed filters accordingly.
Public Test Network Version 3
The public test network has been reset and bumped to version 3. All of the new
consensus rules voted in by version 2 of the public test network have been
retained and are therefore active on the new version 3 test network without
having to vote them in again.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.3.0 release (decred/dcrd#1385)
- multi: Remove everything to do about bloom filters (decred/dcrd#1162)
- wire: Remove TxSerializeWitnessSigning (decred/dcrd#1180)
- addrmgr: Skip low quality addresses for getaddr (decred/dcrd#1135)
- addrmgr: Fix race in save peers (decred/dcrd#1259)
- server: Only respond to getaddr once per conn (decred/dcrd#1257)
- peer: Rework version negotiation (decred/dcrd#1250)
- peer: Allow OnVersion callback to reject peer (decred/dcrd#1251)
- server: Reject outbound conns to non-full nodes (decred/dcrd#1252)
- peer: Improve net address service adverts (decred/dcrd#1253)
- addrmgr: Expose method to update services (decred/dcrd#1254)
- server: Update addrmgr services on outbound conns (decred/dcrd#1254)
- server: Use local inbound var in version handler (decred/dcrd#1255)
- server: Only advertise local addr when current (decred/dcrd#1256)
- server: Use local addr var in version handler (decred/dcrd#1258)
- chaincfg: split params into per-network files (decred/dcrd#1265)
- server: Always reply to getheaders with headers (decred/dcrd#1295)
- addrmgr: skip never-successful addresses (decred/dcrd#1313)
- multi: Introduce default coin type for SLIP0044 (decred/dcrd#1293)
- blockchain: Modify diff redux logic for testnet (decred/dcrd#1387)
- multi: Reset testnet and bump to version 3 (decred/dcrd#1387)
- multi: Remove testnet version 2 defs and refs (decred/dcrd#1387)
Transaction relay (memory pool):
- policy: Lower default relay fee to 0.0001/kB (decred/dcrd#1202)
- mempool: Use blockchain for tx expiry check (decred/dcrd#1199)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
- mempool: Stricter orphan evaluation and eviction (decred/dcrd#1207)
- mempool: use secp256k1 functions directly (decred/dcrd#1213)
- multi: add specialized rebroadcast handling for stake txs (decred/dcrd#979)
- mempool: Make expiry pruning self contained (decred/dcrd#1378)
RPC:
- rpcserver: Improve JSON-RPC compatibility (decred/dcrd#1150)
- rpcserver: Correct rebroadcastwinners handler (decred/dcrd#1234)
- dcrjson: Add Expiry field to CreateRawTransactionCmd (decred/dcrd#1149)
- dcrjson: add estimatesmartfee (decred/dcrd#1201)
- rpc: Use upstream gorilla/websocket (decred/dcrd#1218)
- dcrjson: add createvotingaccount and dropvotingaccount rpc methods (decred/dcrd#1217)
- multi: Change NoSplitTransaction param to SplitTx (decred/dcrd#1231)
- rpcclient: pass default value for NewPurchaseTicketCmd's comment param (decred/dcrd#1232)
- multi: No winning ticket ntfns for big reorg depth (decred/dcrd#1235)
- multi: modify PurchaseTicketCmd (decred/dcrd#1241)
- multi: move extension commands into associated normal command files (decred/dcrd#1238)
- dcrjson: Fix NewCreateRawTransactionCmd comment (decred/dcrd#1262)
- multi: revert TicketChange addition to PurchaseTicketCmd (decred/dcrd#1278)
- rpcclient: Implement fmt.Stringer for Client (decred/dcrd#1298)
- multi: add amount field to TransactionInput (decred/dcrd#1297)
- dcrjson: Ready GetStakeInfoResult for SPV wallets (decred/dcrd#1333)
- dcrjson: add fundrawtransaction command (decred/dcrd#1316)
- dcrjson: Make linter happy by renaming Id to ID (decred/dcrd#1374)
- dcrjson: Remove unused vote bit concat codec funcs (decred/dcrd#1384)
dcrd command-line flags and configuration:
- multi: Correct clean and expand path handling (decred/dcrd#1186)
dcrctl utility changes:
- dcrctl: Fix --skipverify failing if rpc.cert not found (decred/dcrd#1163)
Documentation:
- hdkeychain: Correct hash algorithm in comment (decred/dcrd#1171)
- Fix typo in blockchain ([#1185](https://github.com/decred/...
dcrd v1.2.0
This release of dcrd contains significant performance enhancements,
infrastructure improvements, improved access to chain-related information for
providing better SPV (Simplified Payment Verification) support, and other
quality assurance changes.
A significant amount of infrastructure work has also been done this release
cycle towards being able to support several planned scalability optimizations.
Downgrade Warning
The database format in v1.2.0 is not compatible with previous versions of the
software. This only affects downgrades as users upgrading from previous
versions will see a one time database migration.
Once this migration has been completed, it will no longer be possible to
downgrade to a previous version of the software without having to delete the
database and redownload the chain.
Notable Changes
Significantly Faster Startup
The startup time has been improved by roughly 17x on slower hard disk drives
(HDDs) and 8x on solid state drives (SSDs).
In order to achieve these speedups, there is a one time database migration, as
previously mentioned, that will likely take a while to complete (typically
around 5 to 6 minutes on HDDs and 2 to 3 minutes on SSDs).
Support For DNS Seed Filtering
In order to better support the forthcoming SPV wallets, support for finding
other peers based upon their enabled services has been added. This is useful
for both SPV wallets and full nodes since SPV wallets will require access to
full nodes in order to retrieve the necessary proofs and full nodes are
generally not interested in making outgoing connections to SPV wallets.
Committed Filters
With the intention of supporting light clients, such as SPV wallets, in a
privacy-preserving way while still minimizing the amount of data that needs to
be downloaded, this release adds support for committed filters. A committed
filter is a combination of a probalistic data structure that is used to test
whether an element is a member of a set with a predetermined collision
probability along with a commitment by consensus-validating full nodes to that
data.
A committed filter is created for every block which allows light clients to
download the filters and match against them locally rather than uploading
personal data to other nodes.
A new service flag is also provided to allow clients to discover nodes that
provide access to filters.
There is a one time database update to build and store the filters for all
existing historical blocks which will likely take a while to complete (typically
around 2 to 3 minutes on HDDs and 1 to 1.5 minutes on SSDs).
Updated Atomic Swap Contracts
The standard checks for atomic swap contracts have been updated to ensure the
contracts enforce the secret size for safer support between chains with
disparate script rules.
RPC Server Changes
New getchaintips
RPC
A new RPC named getchaintips
has been added which allows callers to query
information about the status of known side chains and their branch lengths.
It currently only provides support for side chains that have been seen while the
current instance of the process is running. This will be further improved in
future releases.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: Add checkpoints for 1.2.0 release (decred/dcrd#1139)
- chaincfg: Introduce new type DNSSeed (decred/dcrd#961)
- blockmanager: sync with the most updated peer (decred/dcrd#984)
- multi: remove MsgAlert (decred/dcrd#1161)
- multi: Add initial committed filter (CF) support (decred/dcrd#1151)
Transaction relay (memory pool):
- txscript: Correct nulldata standardness check (decred/dcrd#935)
- mempool: Optimize orphan map limiting (decred/dcrd#1117)
- mining: Fix duplicate txns in the prio heap (decred/dcrd#1108)
- mining: Stop transactions losing their dependants (decred/dcrd#1109)
RPC:
- rpcserver: skip cert create when RPC is disabled (decred/dcrd#949)
- rpcserver: remove redundant checks in blockTemplateResult (decred/dcrd#826)
- rpcserver: assert network for validateaddress rpc (decred/dcrd#963)
- rpcserver: Do not rebroadcast stake transactions (decred/dcrd#973)
- dcrjson: add ticket fee field to PurchaseTicketCmd (decred/dcrd#902)
- dcrwalletextcmds: remove getseed (decred/dcrd#985)
- dcrjson: Add SweepAccountCmd & SweepAccountResult (decred/dcrd#1027)
- rpcserver: add sweepaccount to the wallet list of commands (decred/dcrd#1028)
- rpcserver: add batched request support (json 2.0) (decred/dcrd#841)
- dcrjson: include summary totals in GetBalanceResult (decred/dcrd#1062)
- multi: Implement getchaintips JSON-RPC (decred/dcrd#1098)
- rpcserver: Add dcrd version info to getversion RPC (decred/dcrd#1097)
- rpcserver: Correct getblockheader result text (decred/dcrd#1104)
- dcrjson: add StartAutoBuyerCmd & StopAutoBuyerCmd (decred/dcrd#903)
- dcrjson: fix typo for StartAutoBuyerCmd (decred/dcrd#1146)
- dcrjson: require passphrase for StartAutoBuyerCmd (decred/dcrd#1147)
- dcrjson: fix StopAutoBuyerCmd registration bug (decred/dcrd#1148)
- blockchain: Support testnet stake diff estimation (decred/dcrd#1115)
- rpcserver: fix jsonRPCRead data race (decred/dcrd#1157)
- dcrjson: Add VerifySeedCmd (decred/dcrd#1160)
dcrd command-line flags and configuration:
- mempool: Rename RelayNonStd config option (decred/dcrd#1024)
- sampleconfig: Update min relay fee (decred/dcrd#959)
- sampleconfig: Correct comment (decred/dcrd#1063)
- multi: Expand ~ to correct home directory on all OSes (decred/dcrd#1041)
checkdevpremine utility changes:
- checkdevpremine: Remove --skipverify option (decred/dcrd#969)
- checkdevpremine: Implement --notls option (decred/dcrd#969)
- checkdevpremine: Make file naming consistent (decred/dcrd#969)
- checkdevpremine: Fix comment (decred/dcrd#969)
- checkdevpremine: Remove utility (decred/dcrd#1068)
Documentation:
- fullblocktests: Add missing doc.go file (decred/dcrd#956)
- docs: Add fullblocktests entry and make consistent (decred/dcrd#956)
- docs: Add mempool entry to developer tools section (decred/dcrd#1058)
- mempool: Add docs.go and flesh out README.md (decred/dcrd#1058)
- docs: document packages and fix typo (decred/dcrd#965)
- docs: rpcclient is now part of the main dcrd repo (decred/dcrd#970)
- dcrjson: Update README.md (decred/dcrd#982)
- docs: Remove carriage return (decred/dcrd#1106)
- Adjust README.md for new Go version (decred/dcrd#1105)
- docs: document how to use go test -coverprofile (decred/dcrd#1107)
- addrmgr: Improve documentation (decred/dcrd#1125)
- docs: Fix links for internal packages (decred/dcrd#1144)
Developer-related package changes:
- chaingen: Add revocation generation infrastructure (decred/dcrd#1120)
- txscript: Add null data script creator (decred/dcrd#943)
- txscript: Cleanup and improve NullDataScript tests (decred/dcrd#943)
- txscript: Allow external signature hash calc (decred/dcrd#951)
- secp256k1: update func signatures (decred/dcrd#934)
- txscript: enforce MaxDataCarrierSize for GenerateProvablyPruneableOut (decred/dcrd#953)
- txscript: Remove OP_SMALLDATA (decred/dcrd#954)
- blockchain: Accept header in CheckProofOfWork (decred/dcrd#977)
- blockchain: Make func definition style consist...
v1.1.0
This release of dcrd primarily introduces a new consensus vote agenda which
allows the stakeholders to decide whether or not to activate the features needed
for providing full support for Lightning Network. For those unfamiliar with the
voting process in Decred, this means that all code in order to support these
features is already included in this release, however its enforcement will
remain dormant until the stakeholders vote to activate it.
The following Decred Change Proposals (DCPs) describe the proposed changes in detail:
It is important for everyone to upgrade their software to this latest release
even if you don't intend to vote in favor of the agenda.
Notable Changes
Lightning Network Features Vote
In order to fully support many of the benefits that the Lightning Network will
bring, there are some primitives that involve changes to the current consensus
that need to be enabled. A new vote with the id lnfeatures
is now available
as of this release. After upgrading, stakeholders may set their preferences
through their wallet or stake pool's website.
Transaction Finality Policy
The standard policy for transaction relay has been changed to use the median
time of the past several blocks instead of the current network adjusted time
when examining lock times to determine if a transaction is final. This provides
a more deterministic check across all peers and prevents the possibility of
miners attempting to game the timestamps in order to include more transactions.
Consensus enforcement of this change relies on the result of the aforementioned
lnfeatures
vote.
Relative Time Locks Policy
The standard policy for transaction relay has been modified to enforce relative
lock times for version 2 transactions via their sequence numbers and a new
OP_CHECKSEQUENCEVERIFY
opcode.
Consensus enforcement of this change relies on the result of the aforementioned
lnfeatures
vote.
OP_SHA256 Opcode
In order to better support cross-chain interoperability, a new opcode to compute
the SHA-256 hash is being proposed. Since this opcode is implemented as a hard
fork, it will not be available for use in scripts unless the aforementioned
lnfeatures
vote passes.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: update checkpoints for 1.1.0 release decred/dcrd#850
- chaincfg: Introduce agenda for v5 lnfeatures vote decred/dcrd#848
- txscript: Introduce OP_SHA256 decred/dcrd#851
- wire: Decrease num allocs when decoding headers decred/dcrd#861
- blockchain: Implement enforced relative seq locks decred/dcrd#864
- txscript: Implement CheckSequenceVerify decred/dcrd#864
- multi: Enable vote for DCP0002 and DCP0003 decred/dcrd#855
Transaction relay (memory pool):
- mempool: Use median time for tx finality checks decred/dcrd#860
- mempool: Enforce relative sequence locks decred/dcrd#864
- policy/mempool: Enforce CheckSequenceVerify opcode decred/dcrd#864
RPC:
- rpcserver: check whether ticketUtx was found decred/dcrd#824
- rpcserver: return rule error on rejected raw tx decred/dcrd#808
dcrd command-line flags:
- config: Extend --profile cmd line option to allow interface to be specified decred/dcrd#838
Documentation
- docs: rpcapi format update decred/dcrd#807
- config: export sampleconfig for use by dcrinstall decred/dcrd#834
- sampleconfig: Add package README and doc.go decred/dcrd#835
- docs: create entry for getstakeversions in rpcapi decred/dcrd#819
- docs: crosscheck and update all rpc doc entries decred/dcrd#847
- docs: update git commit messages section heading decred/dcrd#863
Developer-related package changes:
- Fix and regenerate precomputed secp256k1 curve decred/dcrd#823
- dcrec: use hardcoded datasets in tests decred/dcrd#822
- Use dchest/blake256 decred/dcrd#827
- glide: use jessevdk/go-flags for consistency decred/dcrd#833
- multi: Error descriptions are in lower case decred/dcrd#842
- txscript: Rename OP_SHA256 to OP_BLAKE256 decred/dcrd#840
- multi: Abstract standard verification flags decred/dcrd#852
- chain: Remove memory block node pruning decred/dcrd#858
- txscript: Add API to parse atomic swap contracts decred/dcrd#862
Testing and Quality Assurance:
- Test against go 1.9 decred/dcrd#836
- dcrec: remove testify dependency decred/dcrd#829
- mining_test: add edge conditions from btcd decred/dcrd#831
- stake: Modify ticket tests to use chaincfg params decred/dcrd#844
- blockchain: Modify tests to use chaincfg params decred/dcrd#845
- blockchain: Cleanup various tests decred/dcrd#843
- Ensure run_tests.sh local fails correctly when gometalinter errors decred/dcrd#846
- peer: fix logic race in peer connection test decred/dcrd#865
Misc:
- glide: sync deps decred/dcrd#837
- Update decred deps for v1.1.0 decred/dcrd#868
- Bump for v1.1.0 decred/dcrd#867
Code Contributors (alphabetical order):
- Alex Yocom-Piatt
- Dave Collins
- David Hill
- Donald Adu-Poku
- Jason Zavaglia
- Jean-Christophe Mincke
- Jolan Luff
- Josh Rickmar
v0.0.4
This release has been moved to Decred-release v0.0.4.
v0.0.2
This release has been moved to Decred-release v0.0.2.
v0.0.1
This release has been moved to Decred-release v0.0.1.