Skip to content
  • v1.5.2
  • f627594
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.5.2
  • f627594
  • Compare
    Choose a tag to compare
    Search for a tag

@dajohi dajohi released this Aug 28, 2020 · 1 commit to master since this release

2020-08-27

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See decred-v1.5.2-manifest.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.5.2

This is a patch release of dcrd to address a potential denial of service vector.

Changelog

This patch release consists of 5 commits from 2 contributors which total to 4 files changed, 114 additional lines of code, and 20 deleted lines of code.

All commits since the last release may be viewed on GitHub here.

Protocol and network:

Misc:

Code Contributors (alphabetical order):

  • Dave Collins
  • David Hill
Assets 18
  • v1.5.1
  • 6ac0bed
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.5.1
  • 6ac0bed
  • Compare
    Choose a tag to compare
    Search for a tag

@dajohi dajohi released this Jan 29, 2020 · 3 commits to master since this release

2019-01-28

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See decred-v1.5.1-manifest.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.5.1

This is a patch release of dcrd to address a minor memory leak with authenticated RPC websocket clients on intermittent connections. It also updates the dcrctl utility to include the new auditreuse dcrwallet command.

Changelog

This patch release consists of 4 commits from 3 contributors which total to 4 files changed, 27 additional lines of code, and 6 deleted lines of code.

All commits since the last release may be viewed on GitHub here.

RPC:

dcrctl utility changes:

Misc:

Code Contributors (alphabetical order):

  • Dave Collins
  • Josh Rickmar
  • Matheus Degiovani

dcrwallet v1.5.1

This release contains bug fixes and minor feature additions. A
comprehensive list of improvements and bug fixes follows.

New features

  • An auditreuse JSON-RPC method was added. This method reports all
    transactions that reuse an output address, excluding votes and
    revocations which must use the committed address from a ticket. An
    optional block height parameter may be provided to only search for
    reuse following a block.

  • The createrawtransaction JSON-RPC method was implemented directly.
    This allows users of the SPV syncing mode to perform the call, rather
    than the call erroring due to no RPC passthrough to a dcrd JSON-RPC
    server.

Other improvements

  • The --csppserver.ca option is now expanded with ~ and environment
    variables.

  • The sample config has been updated with options related to
    CoinShuffle++.

Bug fixes

  • Duplicate logs for insufficient balance errors during automated
    ticketbuying have been silenced.

  • The gRPC method TicketBuyerV2Service.RunTicketBuyer contained a
    regression causing all change to be created for only the default
    (first) account. A fix was made to restore the previous behavior,
    where change is created for the source account.

  • An address reuse bug caused by resetting child indexes backwards
    after address and account discovery was corrected. It was possible
    for this bug to be hit any time network synchronization had to be
    restarted (e.g. the dcrd JSON-RPC link was lost), because address
    discovery would always occur on resync.

  • A shutdown hang of the dcrwallet process following a panic in a
    JSON-RPC handler was fixed with improved synchronization code.

  • A data race in the signrawtransaction JSON-RPC method was
    corrected.

  • A memory leak in the JSON-RPC websocket client to dcrd was fixed.
    This bug caused excessive memory usage by retaining every unmarshaled
    response in memory for the lifetime of the websocket connection.

  • Extended pubkeys imported via the importxpub JSON-RPC method may
    now be used immediately rather than requiring a restart of the process.

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.5.1

This patch release for decrediton mainly focuses on patching various issues that
were found during public usage. We have also included an update to the QR
code that shows a basic DCR logo within.

New Features

  • The QR Code generated for addresses to receive funds in Decrediton now
    include a blue/green DCR logo in the center. Functionally, this will be no
    different than before. (#2385)

Bug Fixes

  • Double notifications were being shown when sending transactions (#2375)

  • Allow for the second instance warning to be closed and quit the application.
    (#2394)

  • Various typos and spelling fixes. (#2383, #2400, #2395)

  • The number of active tickets on the overview was not showing correctly
    while in SPV wallets. (#2389)

  • Prevent gap exhaustion during change generation. (#2358)

  • Disable various elements from being selectable. (#2388)

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 18
  • v1.5.0
  • 8b30784
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.5.0
  • 8b30784
  • Compare
    Choose a tag to compare
    Search for a tag

@dajohi dajohi released this Dec 16, 2019 · 6 commits to master since this release

2019-12-16

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.5.0.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.5.0

This release of dcrd introduces a large number of updates. Some of the key
highlights are:

  • A new consensus vote agenda which allows the stakeholders to decide whether or
    not to activate support for block header commitments
  • More efficient block filters
  • Significant improvements to the mining infrastructure including asynchronous
    work notifications
  • Major performance enhancements for transaction script validation
  • Automatic external IP address discovery
  • Support for IPv6 over Tor
  • Various updates to the RPC server such as:
    • A new method to query information about the network
    • A method to retrieve the new version 2 block filters
    • More calls available to limited access users
  • Infrastructure improvements
  • Quality assurance changes

For those unfamiliar with the voting process in Decred, all code in order to
support block header commitments is already included in this release, however
its enforcement will remain dormant until the stakeholders vote to activate it.

For reference, block header commitments were originally proposed and approved
for initial implementation via the following Politeia proposal:

The following Decred Change Proposal (DCP) describes the proposed changes in
detail and provides a full technical specification:

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.5.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

Block Header Commitments Vote

A new vote with the id headercommitments is now available as of this release.
After upgrading, stakeholders may set their preferences through their wallet or
Voting Service Provider's (VSP) website.

The primary goal of this change is to increase the security and efficiency of
lightweight clients, such as Decrediton in its lightweight mode and the
dcrandroid/dcrios mobile wallets, as well as add infrastructure that paves the
way for several future scalability enhancements.

A high level overview aimed at a general audience including a cost benefit
analysis can be found in the
Politeia proposal.

In addition, a much more in-depth treatment can be found in the
motivation section of DCP0005.

Version 2 Block Filters

The block filters used by lightweight clients, such as SPV (Simplified Payment
Verification) wallets, have been updated to improve their efficiency,
ergonomics, and include additional information such as the full ticket
commitment script. The new block filters are version 2. The older version 1
filters are now deprecated and scheduled to be removed in the next release, so
consumers should update to the new filters as soon as possible.

An overview of block filters can be found in the
block filters section of DCP0005.

Also, the specific contents and technical specification of the new version 2
block filters is available in the
version 2 block filters section of DCP0005.

Finally, there is a one time database update to build and store the new filters
for all existing historical blocks which will likely take a while to complete
(typically around 8 to 10 minutes on HDDs and 4 to 5 minutes on SSDs).

Mining Infrastructure Overhaul

The mining infrastructure for building block templates and delivering the work
to miners has been significantly overhauled to improve several aspects as follows:

  • Support asynchronous background template generation with intelligent vote propagation handling
  • Improved handling of chain reorganizations necessary when the current tip is unable to
    obtain enough votes
  • Current state synchronization
  • Near elimination of stale templates when new blocks and votes are received
  • Subscriptions for streaming template updates

The standard getwork RPC
that PoW miners currently use to perform the mining process has been updated to
make use of this new infrastructure, so existing PoW miners will seamlessly get
the vast majority of benefits without requiring any updates.

However, in addition, a new notifywork RPC
is now available that allows miners to register for work to be delivered
asynchronously as it becomes available via a WebSockets
work notification.
These notifications include the same information that getwork provides along
with an additional reason parameter which allows the miners to make better
decisions about when they should instruct workers to discard the current
template immediately or should be allowed to finish their current round before
being provided with the new template.

Miners are highly encouraged to update their software to make use of the new
asynchronous notification infrastructure since it is more robust, efficient, and
faster than polling getwork to manually determine the aforementioned
conditions.

The following is a non-exhaustive overview that highlights the major benefits of
the changes for both cases:

  • Requests for updated templates during the normal mining process in between tip
    changes will now be nearly instant instead of potentially taking several
    seconds to build the new template on the spot
  • When the chain tip changes, requesting a template will now attempt to wait
    until either all votes have been received or a timeout occurs prior to handing
    out a template which is beneficial for PoW miners, PoS miners, and the network
    as a whole
  • PoW miners are much less likely to end up with template with less than the max
    number of votes which means they are less likely to receive a reduced subsidy
  • PoW miners will be much less likely to receive stale templates during chain
    tip changes due to vote propagation
  • PoS voters whose votes end up arriving to the miner slightly slower than the
    minimum number required are much less likely to have their votes excluded
    despite having voted simply due to propagation delay

PoW miners who choose to update their software, pool or otherwise, to make use
of the asynchronous work notifications will receive additional benefits such as:

  • Ability to start mining a new block sooner due to receiving updated work as
    soon as it becomes available
  • Immediate notification with new work that includes any votes that arrive late
  • Periodic notifications with new work that include new transactions only when
    there have actually been new transaction
  • Simplified interface code due to removal of the need for polling and manually
    checking the work bytes for special cases such as the number of votes

NOTE: Miners that are not rolling the timestamp field as they mine should
ensure their software is upgraded to roll the timestamp to the latest timestamp
each time they hand work out to a miner. This helps ensure the block timestamps
are as accurate as possible.

Transaction Script Validation Optimizations

Transaction script validation has been almost completely rewritten to
significantly improve its speed and reduce the number of memory allocations.
While this has many more benefits than enumerated here, probably the most
important ones for most stakeholders are:

  • Votes can be cast more quickly which helps reduce the number of missed votes
  • Blocks are able to propagate more quickly throughout the network, which in
    turn further improves votes times
  • The initial sync process is around 20-25% faster

Automatic External IP Address Discovery

In order for nodes to fully participate in the peer-to-peer network, they must
be publicly accessible and made discoverable by advertising their external IP
address. This is typically made slightly more complicated since most users run
their nodes on networks behind Network Address Translation (NAT).

Previously, in addition to configuring the network firewall and/or router to
allow inbound connections to port 9108 and forwarding the port to the internal
IP address running dcrd, it was also required to manually set the public
external IP address via the --externalip CLI option.

This release will now make use of other nodes on the network in a decentralized
fashion to automatically discover the external IP address, so it is no longer
necessary to manually set CLI option for the vast majority of users.

Tor IPv6 Support

It is now possible to resolve and connect to IPv6 peers over Tor in addition to
the existing IPv4 support.

RPC Server Changes

New Version 2 Block Filter Query RPC (getcfilterv2)

A new RPC named getcfilterv2 is now available which can be used to retrieve
the version 2 block filter
for a given block along with its associated inclusion proof. See the
getcfilterv2 JSON-RPC API Documentation
for API details.

New Network Information Query RPC (getnetworkinfo)

A new RPC named getnetworkinfo is now available which can be used to query
information related to the peer-to-peer network such as the protocol version,
the local time offset, the number of current connections, the supported network
protocols, the current transaction relay fee, and the external IP addresses for
the local interfaces. See the
getnetworkinfo JSON-RPC API Documentation
for API details.

Updates to Chain State Query RPC (getblockchaininfo)

The difficulty field of the getblockchaininfo RPC is now deprecated in favor
of a new field named difficultyratio which matches the result returned by the
getdifficulty RPC.

See the
getblockchaininfo JSON-RPC API Documentation
for API details.

New Optional Version Parameter on Script Decode RPC (decodescript)

The decodescript RPC now accepts an additional optional parameter to specify
the script version. The only currently supported script version in Decred is
version 0 which means decoding scripts with versions other than 0 will be seen
as non standard.

Removal of Deprecated Block Template RPC (getblocktemplate)

The previously deprecated getblocktemplate RPC is no longer available. All
known miners are already using the preferred getwork RPC since Decred's block
header supports more than enough nonce space to keep mining hardware busy
without needing to resort to building custom templates with less efficient extra
nonce coinbase workarounds.

Additional RPCs Available To Limited Access Users

The following RPCs that were previously unavailable to the limited access RPC
user are now available to it:

  • estimatefee
  • estimatesmartfee
  • estimatestakediff
  • existsaddress
  • existsaddresses
  • existsexpiredtickets
  • existsliveticket
  • existslivetickets
  • existsmempoltxs
  • existsmissedtickets
  • getblocksubsidy
  • getcfilter
  • getcoinsupply
  • getheaders
  • getstakedifficulty
  • getstakeversioninfo
  • getstakeversions
  • getvoteinfo
  • livetickets
  • missedtickets
  • rebroadcastmissed
  • rebroadcastwinners
  • ticketfeeinfo
  • ticketsforaddress
  • ticketvwap
  • txfeeinfo

Single Mining State Request

The peer-to-peer protocol message to request the current mining state
(getminings) is used when peers first connect to retrieve all known votes for
the current tip block. This is only useful when the peer first connects because
all future votes will be relayed once the connection has been established.
Consequently, nodes will now only respond to a single mining state request.
Subsequent requests are ignored.

Developer Go Modules

A full suite of versioned Go modules (essentially code libraries) are now
available for use by applications written in Go that wish to create robust
software with reproducible, verifiable, and verified builds.

These modules are used to build dcrd itself and are therefore well maintained,
tested, documented, and relatively efficient.

Changelog

This release consists of 600 commits from 17 contributors which total to 537
files changed, 41494 additional lines of code, and 29215 deleted lines of code.

All commits since the last release may be viewed on GitHub here.

Protocol and network:

Transaction relay (memory pool):

Mining:

RPC:

dcrd command-line flags and configuration:

certgen utility changes:

dcrctl utility changes:

promptsecret utility changes:

Documentation:

Developer-related package and module changes:

Developer-related module management:

Testing and Quality Assurance:

Misc:

Code Contributors (alphabetical order):

  • Aaron Campbell
  • Conner Fromknecht
  • Dave Collins
  • David Hill
  • Donald Adu-Poku
  • Hamid
  • J Fixby
  • Jamie Holdstock
  • JoeGruffins
  • Jonathan Chappelow
  • Josh Rickmar
  • Matheus Degiovani
  • Nicola Larosa
  • Olaoluwa Osuntokun
  • Roei Erez
  • Sarlor
  • Victor Oliveira

dcrwallet v1.5.0

This release introduces the privacy features based on CoinShuffle++. A new
voting agenda is also added to vote on the activation of the changes described
in
DCP0005.
A comprehensive list of improvements and bug fixes follows.

New features

  • CoinShuffle++ cooperative mixing features are added. Through this process,
    tickets may be bought from outputs in a CoinJoin transaction. CoinJoin change
    is not anonymized, and must be isolated to a different account and mixed down
    at standard amount values.

    This implementation of CoinShuffle++ currently requires a central server as a
    coordination point between all peers in a mix. The Decred project operates a
    server at https://cspp.decred.org/, and more details about correct usage can
    be found there. Anyone is able to host their own server and configure their
    wallets to use it, but for the largest anonymity set it is best that most
    people remain using the same server.

  • Arbitrary extended pubkeys can now be imported as a watching-only account,
    even on wallets which do store private keys for other accounts. Extended
    pubkeys are imported using the new importxpub JSON-RPC method.

  • A --disablecointypeupgrades flag and config setting is added to prevent the
    wallet from ever upgrading the coin type on a seed restored wallet, even when
    there is no observed transactions for the seed.

  • A cointype field has been added to the walletinfo JSON-RPC response, and a
    CoinType method has been added to the gRPC WalletService.

  • A getblockhash method has been added to the JSON-RPC server. This allows
    users to query for the best block hash even in SPV mode, where no dcrd RPC
    passthrough is available.

  • The abandontransaction method has been implemented by the JSON-RPC server.
    This method allows the wallet to forget about any unmined transaction, and
    allows any previous outputs spend by the abandoned transaction to become
    spendable again.

  • A GetAccountExtendedPrivKey method has been added to the gRPC WalletService
    to export the extended private key of an account.

Other improvements

  • Double spending vote/revocation transaction errors now include the hashes the
    conflicting transactions.

  • Concurrency was improved throughout with better in-memory data structures and
    reducing how long operations are performed while inside of database views and
    updates. This should result in overall better performance.

  • Self-signed TLS certificates are now created with ed25519 keys, instead of the
    increasingly unsupported P-521 elliptic curve.

  • The --ticketfee config flag is now deprecated. Tickets are created with the
    same fee rate as all other transactions.

  • Deprecated config flags from the v1.4.0 release have been removed.

  • Several deprecated methods and fields in the JSON-RPC API have been
    undeprecated. These were deprecated in upstream code, but are
    still used and necessary for dcrwallet due to differences in account handling.

Bug fixes

  • A "missing credit value" error seen during reorgs of 2+ transaction spend
    chains was corrected.

  • The Wallet.TransactionSummary method was fixed so that it correctly returns
    the block hash of mined transactions, instead of filling the block hash field
    with the transaction hash.

  • Outbounded SPV peers are removed from an internal "connecting" state after any
    error is hit. This allows the SPV syncer to try other peers instead of losing
    the ability to outbound any new peers.

  • Duplicate ticket hashes are filtered out of the livetickets JSON-RPC if they
    are recorded internally in both the transaction and stake stores.

  • Data races in the wallet's notification emitter were identified and corrected.

  • Duplicate transaction errors when the wallet publishes a transaction to dcrd
    with the sendrawtransaction JSON-RPC are now handled as successful
    transaction publishes, instead of returning the errors back to the caller.

  • An unlikely bug in Salsa20 (used by the wallet for storing encrypted messages
    in the database), which broke the security guarantees if more than 256GiB of
    the keystream was used, was corrected by upgrading the x/crypto module to a
    newer version with a fix.

  • A data race accessing whether a transaction output is locked or not was fixed.

  • A potential address reuse bug was corrected with improvements to the in-memory
    address index tracking.

  • The stakepooluserinfo JSON-RPC method now correctly sets the status of
    immature tickets to "immature" instead of "live".

  • Ticket commitments, which do not follow the UTXO model as they can not be
    spent, are now handled specially by the wallet. This corrects balance
    reporting issues whenever tickets have been bought or observed with relevant
    commitment addresses.

  • A panic caused by out-of-bounds array access in the SPV syncer was identified
    and corrected.
    dfdfdes zero confirmation
    transactions and corrects the last_block behavior to match bitcoind.

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.5.0

This release was primarily focused on overall look and feel refinement and bug
fixes. It also includes a preliminary Lightning Network implementation by
matheusd. Most of the other work was completed by vctt and a new member of the team, bgptr. Many thanks to them for their hard work on this release.

New Features

  • Initial LN Support has been added. This includes the following functionality:
    dcrlnd startup/teardown, open/close channels, create invoices, send payments,
    enabled autopilot and show dcrlnd logs. This initial support should give users
    a chance to experience the capabilities of LN while we can also collect user
    feedback about how to best improve their experience with documentation or help.
    To enable LN support, please set the new option "ln_enabled" to "true" in your
    config.json.

  • Window size responsiveness has been added to most of the pages to allow for
    graceful change from small, medium and large screen sizes. When in "small"
    mode, the sidebar is moved to the bottom of the screen much like a mobile app.
    When in "medium" mode, the sidebar is collapsed shows only icons. When in
    "large" mode, the sidebar is fully expanded and all the fields are fully shown.

Other updates

  • Dark mode (tonality) has been updated to have a more thoughtfully compiled
    pallette of color combinations. We can now start to develop other color modes
    if users show an interest in such a feature.

  • The launcher now has a daemon connection timeout detection. Previously,
    the wallet would endlessly attempt to connect to the daemon, even if the
    daemon had some fatal error that it would never recover from. This allows
    the user to recover from such a situation more gracefully.

  • Update Politeia proposal fetching to reduce amount of data that is consistantly
    requested. Previously, every load of decrediton would cause an unnecessary
    amount of data to be requested.

Bug fixes

  • Fix pasting the hex version of the seed while restoring a wallet.

  • Fix incorrect balance reporting for data exports.

  • Fix advanced mode staring with an empty app data directory.

  • Fix revoked ticket and recent transactions icon.

  • Update lockedByTickets balance to accomodate dcrwallet balance updates staking.

Changelog

All commits since the last release may be viewed on GitHub
here.

dcrlnd v0.2.0

This update has brought dcrlnd synced to the v0.8.0-beta of upstream lnd.

Most upstream work that was done since our original branching point in January 2019 was merged and Decred-specific work has been done to enable more seamless integration of dcrlnd to Decrediton.

Decred's LN network is still only in its begining stages, therefore please use caution when comitting funds to it.

Network Reset & Backwards Incompatible Change

Those running v0.1.0 or other versions built from code, please note that v0.2.0 has a network-wide breaking change. PR46 changed the algorithm used to encode payment requests from the Decred-default of Blake256 to the Bicoin-compatible SHA-256.

This means v0.1.0 nodes cannot use channels with v0.2.0 nodes. and will fail and force-close on the first attempt of payment.

Given the v0.1.0 network was still very small we decided to not implement signalling and backwards compatible changes to simplify implementation. Anyone still running the old version MUST UPGRADE their node.

Notable Changes

Notable Upstream Changes

PR36 and PR42 are the ones that port the upstream work. Some notable upstream changes brought include the following.

  • Safu Commitments, which was an LN-wide protocol change enabling wallets to retrieve their local channel balance stored in unilaterally-closed channels without requiring coordination with the counterparty.

  • Watchtower support, which allows a wallet to remain closed for a longer period of time by offloading the reposability to watch for channel breaches to a third party called a watchtower.

  • Static Channel Backups which are a race-condition-free way of backing up the channel data required to safely execute the Data Loss Protection protocol if the main database of lnd is lost.

  • Hodl invoices which is a way of creating and settling invoices by providing the payment hash/preimage via gRPC and allows bridging the lnd service to more advanced LN-based services such as atomic swaps.

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 17
Pre-release
Pre-release

@dajohi dajohi released this Dec 9, 2019 · 7 commits to master since this release

2019-12-09

Install

To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See decrediton-v1.5.0-rc4-manifest.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Updates from rc3: decrediton

Full release notes here

Assets 7
Pre-release
Pre-release

@dajohi dajohi released this Dec 4, 2019 · 8 commits to master since this release

2019-12-04

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.5.0-rc3-manifest.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Updates from rc2: dcrd, dcrwallet, decrediton

Full release notes here

Assets 17
Pre-release
Pre-release

@dajohi dajohi released this Nov 19, 2019 · 8 commits to master since this release

2019-11-19

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.5.0.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Updates from rc1: dcrd, dcrwallet, decrediton

Full release notes here

Assets 17
Pre-release
Pre-release

@dajohi dajohi released this Nov 7, 2019 · 10 commits to master since this release

2019-11-07

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.5.0.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.5.0-rc1

This release of dcrd introduces a large number of updates. Some of the key
highlights are:

  • A new consensus vote agenda which allows the stakeholders to decide whether or
    not to activate support for block header commitments
  • More efficient block filters
  • Significant improvements to the mining infrastructure including asynchronous
    work notifications
  • Major performance enhancements for transaction script validation
  • Automatic external IP address discovery
  • Support for IPv6 over Tor
  • Various updates to the RPC server such as:
    • A new method to query information about the network
    • A method to retrieve the new version 2 block filters
    • More calls available to limited access users
  • Infrastructure improvements
  • Quality assurance changes

For those unfamiliar with the voting process in Decred, all code in order to
support block header commitments is already included in this release, however
its enforcement will remain dormant until the stakeholders vote to activate it.

For reference, block header commitments were originally proposed and approved
for initial implementation via the following Politeia proposal:

The following Decred Change Proposal (DCP) describes the proposed changes in
detail and provides a full technical specification:

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.5.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

Block Header Commitments Vote

A new vote with the id headercommitments is now available as of this release.
After upgrading, stakeholders may set their preferences through their wallet or
Voting Service Provider's (VSP) website.

The primary goal of this change is to increase the security and efficiency of
lightweight clients, such as Decrediton in its lightweight mode and the
dcrandroid/dcrios mobile wallets, as well as add infrastructure that paves the
way for several future scalability enhancements.

A high level overview aimed at a general audience including a cost benefit
analysis can be found in the
Politeia proposal.

In addition, a much more in-depth treatment can be found in the
motivation section of DCP0005.

Version 2 Block Filters

The block filters used by lightweight clients, such as SPV (Simplified Payment
Verification) wallets, have been updated to improve their efficiency,
ergonomics, and include additional information such as the full ticket
commitment script. The new block filters are version 2. The older version 1
filters are now deprecated and scheduled to be removed in the next release, so
consumers should update to the new filters as soon as possible.

An overview of block filters can be found in the
block filters section of DCP0005.

Also, the specific contents and technical specification of the new version 2
block filters is available in the
version 2 block filters section of DCP0005.

Finally, there is a one time database update to build and store the new filters
for all existing historical blocks which will likely take a while to complete
(typically around 8 to 10 minutes on HDDs and 4 to 5 minutes on SSDs).

Mining Infrastructure Overhaul

The mining infrastructure for building block templates and delivering the work
to miners has been significantly overhauled to improve several aspects as follows:

  • Support asynchronous background template generation with intelligent vote propagation handling
  • Improved handling of chain reorganizations necessary when the current tip is unable to
    obtain enough votes
  • Current state synchronization
  • Near elimination of stale templates when new blocks and votes are received
  • Subscriptions for streaming template updates

The standard getwork RPC
that PoW miners currently use to perform the mining process has been updated to
make use of this new infrastructure, so existing PoW miners will seamlessly get
the vast majority of benefits without requiring any updates.

However, in addition, a new notifywork RPC
is now available that allows miners to register for work to be delivered
asynchronously as it becomes available via a WebSockets
work notification.
These notifications include the same information that getwork provides along
with an additional reason parameter which allows the miners to make better
decisions about when they should instruct workers to discard the current
template immediately or should be allowed to finish their current round before
being provided with the new template.

Miners are highly encouraged to update their software to make use of the new
asynchronous notification infrastructure since it is more robust, efficient, and
faster than polling getwork to manually determine the aforementioned
conditions.

The following is a non-exhaustive overview that highlights the major benefits of
the changes for both cases:

  • Requests for updated templates during the normal mining process in between tip
    changes will now be nearly instant instead of potentially taking several
    seconds to build the new template on the spot
  • When the chain tip changes, requesting a template will now attempt to wait
    until either all votes have been received or a timeout occurs prior to handing
    out a template which is beneficial for PoW miners, PoS miners, and the network
    as a whole
  • PoW miners are much less likely to end up with template with less than the max
    number of votes which means they are less likely to receive a reduced subsidy
  • PoW miners will be much less likely to receive stale templates during chain
    tip changes due to vote propagation
  • PoS voters whose votes end up arriving to the miner slightly slower than the
    minimum number required are much less likely to have their votes excluded
    despite having voted simply due to propagation delay

PoW miners who choose to update their software, pool or otherwise, to make use
of the asynchronous work notifications will receive additional benefits such as:

  • Ability to start mining a new block sooner due to receiving updated work as
    soon as it becomes available
  • Immediate notification with new work that includes any votes that arrive late
  • Periodic notifications with new work that include new transactions only when
    there have actually been new transaction
  • Simplified interface code due to removal of the need for polling and manually
    checking the work bytes for special cases such as the number of votes

NOTE: Miners that are not rolling the timestamp field as they mine should
ensure their software is upgraded to roll the timestamp to the latest timestamp
each time they hand work out to a miner. This helps ensure the block timestamps
are as accurate as possible.

Transaction Script Validation Optimizations

Transaction script validation has been almost completely rewritten to
significantly improve its speed and reduce the number of memory allocations.
While this has many more benefits than enumerated here, probably the most
important ones for most stakeholders are:

  • Votes can be cast more quickly which helps reduce the number of missed votes
  • Blocks are able to propagate more quickly throughout the network, which in
    turn further improves votes times
  • The initial sync process is around 20-25% faster

Automatic External IP Address Discovery

In order for nodes to fully participate in the peer-to-peer network, they must
be publicly accessible and made discoverable by advertising their external IP
address. This is typically made slightly more complicated since most users run
their nodes on networks behind Network Address Translation (NAT).

Previously, in addition to configuring the network firewall and/or router to
allow inbound connections to port 9108 and forwarding the port to the internal
IP address running dcrd, it was also required to manually set the public
external IP address via the --externalip CLI option.

This release will now make use of other nodes on the network in a decentralized
fashion to automatically discover the external IP address, so it is no longer
necessary to manually set CLI option for the vast majority of users.

Tor IPv6 Support

It is now possible to resolve and connect to IPv6 peers over Tor in addition to
the existing IPv4 support.

RPC Server Changes

New Version 2 Block Filter Query RPC (getcfilterv2)

A new RPC named getcfilterv2 is now available which can be used to retrieve
the version 2 block filter
for a given block along with its associated inclusion proof. See the
getcfilterv2 JSON-RPC API Documentation
for API details.

New Network Information Query RPC (getnetworkinfo)

A new RPC named getnetworkinfo is now available which can be used to query
information related to the peer-to-peer network such as the protocol version,
the local time offset, the number of current connections, the supported network
protocols, the current transaction relay fee, and the external IP addresses for
the local interfaces. See the
getnetworkinfo JSON-RPC API Documentation
for API details.

Updates to Chain State Query RPC (getblockchaininfo)

The difficulty field of the getblockchaininfo RPC is now deprecated in favor
of a new field named difficultyratio which matches the result returned by the
getdifficulty RPC.

See the
getblockchaininfo JSON-RPC API Documentation
for API details.

New Optional Version Parameter on Script Decode RPC (decodescript)

The decodescript RPC now accepts an additional optional parameter to specify
the script version. The only currently supported script version in Decred is
version 0 which means decoding scripts with versions other than 0 will be seen
as non standard.

Removal of Deprecated Block Template RPC (getblocktemplate)

The previously deprecated getblocktemplate RPC is no longer available. All
known miners are already using the preferred getwork RPC since Decred's block
header supports more than enough nonce space to keep mining hardware busy
without needing to resort to building custom templates with less efficient extra
nonce coinbase workarounds.

Additional RPCs Available To Limited Access Users

The following RPCs that were previously unavailable to the limited access RPC
user are now available to it:

  • estimatefee
  • estimatesmartfee
  • estimatestakediff
  • existsaddress
  • existsaddresses
  • existsexpiredtickets
  • existsliveticket
  • existslivetickets
  • existsmempoltxs
  • existsmissedtickets
  • getblocksubsidy
  • getcfilter
  • getcoinsupply
  • getheaders
  • getstakedifficulty
  • getstakeversioninfo
  • getstakeversions
  • getvoteinfo
  • livetickets
  • missedtickets
  • rebroadcastmissed
  • rebroadcastwinners
  • ticketfeeinfo
  • ticketsforaddress
  • ticketvwap
  • txfeeinfo

Single Mining State Request

The peer-to-peer protocol message to request the current mining state
(getminings) is used when peers first connect to retrieve all known votes for
the current tip block. This is only useful when the peer first connects because
all future votes will be relayed once the connection has been established.
Consequently, nodes will now only respond to a single mining state request.
Subsequent requests are ignored.

Developer Go Modules

A full suite of versioned Go modules (essentially code libraries) are now
available for use by applications written in Go that wish to create robust
software with reproducible, verifiable, and verified builds.

These modules are used to build dcrd itself and are therefore well maintained,
tested, documented, and relatively efficient.

Changelog

This release consists of 600 commits from 17 contributors which total to 537
files changed, 41494 additional lines of code, and 29215 deleted lines of code.

All commits since the last release may be viewed on GitHub here.

Protocol and network:

Transaction relay (memory pool):

Mining:

RPC:

dcrd command-line flags and configuration:

certgen utility changes:

dcrctl utility changes:

promptsecret utility changes:

Documentation:

Developer-related package and module changes:

Developer-related module management:

Testing and Quality Assurance:

Misc:

Code Contributors (alphabetical order):

  • Aaron Campbell
  • Conner Fromknecht
  • Dave Collins
  • David Hill
  • Donald Adu-Poku
  • Hamid
  • J Fixby
  • Jamie Holdstock
  • JoeGruffins
  • Jonathan Chappelow
  • Josh Rickmar
  • Matheus Degiovani
  • Nicola Larosa
  • Olaoluwa Osuntokun
  • Roei Erez
  • Sarlor
  • Victor Oliveira

dcrwallet v1.5.0-rc1

This release introduces the privacy features based on CoinShuffle++. A new
voting agenda is also added to vote on the activation of the changes described
in
DCP0005.
A comprehensive list of improvements and bug fixes follows.

New features

  • CoinShuffle++ cooperative mixing features are added. Through this process,
    tickets may be bought from outputs in a CoinJoin transaction. CoinJoin change
    is not anonymized, and must be isolated to a different account and mixed down
    at standard amount values.

    This implementation of CoinShuffle++ currently requires a central server as a
    coordination point between all peers in a mix. The Decred project operates a
    server at https://cspp.decred.org/, and more details about correct usage can
    be found there. Anyone is able to host their own server and configure their
    wallets to use it, but for the largest anonymity set it is best that most
    people remain using the same server.

  • Arbitrary extended pubkeys can now be imported as a watching-only account,
    even on wallets which do store private keys for other accounts. Extended
    pubkeys are imported using the new importxpub JSON-RPC method.

  • A --disablecointypeupgrades flag and config setting is added to prevent the
    wallet from ever upgrading the coin type on a seed restored wallet, even when
    there is no observed transactions for the seed.

  • A cointype field has been added to the walletinfo JSON-RPC response, and a
    CoinType method has been added to the gRPC WalletService.

  • A getblockhash method has been added to the JSON-RPC server. This allows
    users to query for the best block hash even in SPV mode, where no dcrd RPC
    passthrough is available.

  • The abandontransaction method has been implemented by the JSON-RPC server.
    This method allows the wallet to forget about any unmined transaction, and
    allows any previous outputs spend by the abandoned transaction to become
    spendable again.

  • A GetAccountExtendedPrivKey method has been added to the gRPC WalletService
    to export the extended private key of an account.

Other improvements

  • Double spending vote/revocation transaction errors now include the hashes the
    conflicting transactions.

  • Concurrency was improved throughout with better in-memory data structures and
    reducing how long operations are performed while inside of database views and
    updates. This should result in overall better performance.

  • Self-signed TLS certificates are now created with ed25519 keys, instead of the
    increasingly unsupported P-521 elliptic curve.

  • The --ticketfee config flag is now deprecated. Tickets are created with the
    same fee rate as all other transactions.

  • Deprecated config flags from the v1.4.0 release have been removed.

  • Several deprecated methods and fields in the JSON-RPC API have been
    undeprecated. These were deprecated in upstream code, but are
    still used and necessary for dcrwallet due to differences in account handling.

Bug fixes

  • A "missing credit value" error seen during reorgs of 2+ transaction spend
    chains was corrected.

  • The Wallet.TransactionSummary method was fixed so that it correctly returns
    the block hash of mined transactions, instead of filling the block hash field
    with the transaction hash.

  • Outbounded SPV peers are removed from an internal "connecting" state after any
    error is hit. This allows the SPV syncer to try other peers instead of losing
    the ability to outbound any new peers.

  • Duplicate ticket hashes are filtered out of the livetickets JSON-RPC if they
    are recorded internally in both the transaction and stake stores.

  • Data races in the wallet's notification emitter were identified and corrected.

  • Duplicate transaction errors when the wallet publishes a transaction to dcrd
    with the sendrawtransaction JSON-RPC are now handled as successful
    transaction publishes, instead of returning the errors back to the caller.

  • An unlikely bug in Salsa20 (used by the wallet for storing encrypted messages
    in the database), which broke the security guarantees if more than 256GiB of
    the keystream was used, was corrected by upgrading the x/crypto module to a
    newer version with a fix.

  • A data race accessing whether a transaction output is locked or not was fixed.

  • A potential address reuse bug was corrected with improvements to the in-memory
    address index tracking.

  • The stakepooluserinfo JSON-RPC method now correctly sets the status of
    immature tickets to "immature" instead of "live".

  • Ticket commitments, which do not follow the UTXO model as they can not be
    spent, are now handled specially by the wallet. This corrects balance
    reporting issues whenever tickets have been bought or observed with relevant
    commitment addresses.

  • A panic caused by out-of-bounds array access in the SPV syncer was identified
    and corrected.
    dfdfdes zero confirmation
    transactions and corrects the last_block behavior to match bitcoind.

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.5.0-rc1

This release was primarily focused on overall look and feel refinement and bug
fixes. It also includes a preliminary Lightning Network implementation by
matheusd. Most of the other work was completed by vctt and a new member of the team, bgptr. Many thanks to them for their hard work on this release.

New Features

  • Initial LN Support has been added. This includes the following functionality:
    dcrlnd startup/teardown, open/close channels, create invoices, send payments,
    enabled autopilot and show dcrlnd logs. This initial support should give users
    a chance to experience the capabilities of LN while we can also collect user
    feedback about how to best improve their experience with documentation or help.
    To enable LN support, please set the new option "ln_enabled" to "true" in your
    config.json.

  • Window size responsiveness has been added to most of the pages to allow for
    graceful change from small, medium and large screen sizes. When in "small"
    mode, the sidebar is moved to the bottom of the screen much like a mobile app.
    When in "medium" mode, the sidebar is collapsed shows only icons. When in
    "large" mode, the sidebar is fully expanded and all the fields are fully shown.

Other updates

  • Dark mode (tonality) has been updated to have a more thoughtfully compiled
    pallette of color combinations. We can now start to develop other color modes
    if users show an interest in such a feature.

  • The launcher now has a daemon connection timeout detection. Previously,
    the wallet would endlessly attempt to connect to the daemon, even if the
    daemon had some fatal error that it would never recover from. This allows
    the user to recover from such a situation more gracefully.

  • Update Politeia proposal fetching to reduce amount of data that is consistantly
    requested. Previously, every load of decrediton would cause an unnecessary
    amount of data to be requested.

Bug fixes

  • Fix pasting the hex version of the seed while restoring a wallet.

  • Fix incorrect balance reporting for data exports.

  • Fix advanced mode staring with an empty app data directory.

  • Fix revoked ticket and recent transactions icon.

  • Update lockedByTickets balance to accomodate dcrwallet balance updates staking.

Changelog

All commits since the last release may be viewed on GitHub
here.

dcrlnd v0.2.0-rc1

This update has brought dcrlnd synced to the v0.8.0-beta of upstream lnd.

Most upstream work that was done since our original branching point in January 2019 was merged and Decred-specific work has been done to enable more seamless integration of dcrlnd to Decrediton.

Decred's LN network is still only in its begining stages, therefore please use caution when comitting funds to it.

Network Reset & Backwards Incompatible Change

Those running v0.1.0 or other versions built from code, please note that v0.2.0 has a network-wide breaking change. PR46 changed the algorithm used to encode payment requests from the Decred-default of Blake256 to the Bicoin-compatible SHA-256.

This means v0.1.0 nodes cannot use channels with v0.2.0 nodes. and will fail and force-close on the first attempt of payment.

Given the v0.1.0 network was still very small we decided to not implement signalling and backwards compatible changes to simplify implementation. Anyone still running the old version MUST UPGRADE their node.

Notable Changes

Notable Upstream Changes

PR36 and PR42 are the ones that port the upstream work. Some notable upstream changes brought include the following.

  • Safu Commitments, which was an LN-wide protocol change enabling wallets to retrieve their local channel balance stored in unilaterally-closed channels without requiring coordination with the counterparty.

  • Watchtower support, which allows a wallet to remain closed for a longer period of time by offloading the reposability to watch for channel breaches to a third party called a watchtower.

  • Static Channel Backups which are a race-condition-free way of backing up the channel data required to safely execute the Data Loss Protection protocol if the main database of lnd is lost.

  • Hodl invoices which is a way of creating and settling invoices by providing the payment hash/preimage via gRPC and allows bridging the lnd service to more advanced LN-based services such as atomic swaps.

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 27
  • v1.4.0
  • 2a5a7a2
  • Compare
    Choose a tag to compare
    Search for a tag
  • v1.4.0
  • 2a5a7a2
  • Compare
    Choose a tag to compare
    Search for a tag

@dajohi dajohi released this Feb 6, 2019 · 14 commits to master since this release

2019-02-06

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.4.0.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.4.0

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:

Transaction relay (memory pool):

RPC:

dcrd command-line flags and configuration:

Documentation:

Developer-related package and module changes:

Testing and Quality Assurance:

Misc:

Code Contributors (alphabetical order):

  • Corey Osman
  • Dave Collins
  • David Hill
  • Dmitry Fedorov
  • Donald Adu-Poku
  • ggoranov
  • githubsands
  • J Fixby
  • Jonathan Chappelow
  • Josh Rickmar
  • Matheus Degiovani
  • Sarlor
  • zhizhongzhiwai

dcrwallet v1.4.0

This release focuses on bug fixes and general improvements for both direct
dcrwallet command line users and other projects building on top of dcrwallet
(such as Decrediton and upcoming mobile wallets). A comprehensive list of
improvements and bug fixes follows.

Bug fixes

  • Fixes were made to which and how many addresses and wallet UTXOs are watched
    by the SPV and RPC syncers. This prevents several bugs resulting from missed
    transactions, such as avoiding double spending errors and spends of unknown
    inputs.

  • Committed filter creation and validation is fixed on all ARM processors.
    Previously, an ARM assembly optimization could produce incorrect output for
    the siphash function.

  • During initial wallet creation, the database is now always cleanly closed
    before the process exits. Previously, this was a race and the new wallet
    database may have been missing writes during the initialization step.

  • RPC connection errors to dcrd are now properly logged

  • A possible deadlock situation was removed by adding a missing mutex unlock to
    the SPV peering implementation.

  • Error handling has been improved when querying unmined and unspent ticket
    transactions.

  • The total number of logged transactions processed by the RPC syncer has been
    fixed.

  • The process can be interrupted at startup if while being blocked on acquiring
    the wallet's database lock. Previously, the process would have needed to be
    killed, or wait for an existing running wallet to shutdown.

  • Fixed reorganizations failing with "missing credit value" errors. This
    was not a database corruption issue and a wallet restore is not necessary.

  • Fixed the block hash returned by gRPC WalletService.GetTransaction
    responses. This method was prevously using the transaction hash instead
    of the hash of the block the transaction was mined in.

  • Fixed error handling in the RPC sync mode to ensure some synchronization
    errors are not ignored.

New features

  • The gRPC method WalletService.ValidateAddress now returns pubkey of P2PKH
    addresses and BIP0044 branch and child index if the address is controlled by
    the wallet.

  • The gRPC method WalletService.ImportScript is now usable by watching-only
    wallets.

  • The gRPC method WalletService.StakeInfo now includes counts of unspent
    tickets.

  • A new gRPC method TicketBuyerV2Service.RunTicketBuyer has been added to run
    the SPV-compatible ticket buyer.

  • A new gRPC method WalletService.GetTicket has been added to query the
    details of an individual ticket by its transaction hash.

  • A new gRPC method WalletService.SweepAccount has been added to sweep all
    UTXOs of an account to a single new output.

  • A new gRPC method WalletService.RpcSync has been added, providing a similar
    as SpvSync to perform wallet synchronization with a dcrd RPC connection.

  • The SPV and RPC syncers now support callbacks for syncing notifications.
    These notifications are also availble to gRPC clients who invoke the syncers.

  • Creating a new simnet wallet now shows an address that can be used for mining
    rewards.

  • RPC syncing connections to dcrd can now be proxied using the --proxy,
    --proxyuser, and --proxypass options.

Other improvements

  • Builds have been converted to use Go Modules. The repository has been split
    into various submodules, making it far easier to write applications that
    import dcrwallet packages as libraries.

  • Wallet database API is exported for projects that need support for alternative
    database drivers (such as dcrandroid).

  • Default transaction relay fee has been dropped to 0.0001 DCR/kB.

  • Transaction size and fee estimation is improved for ticket purchases and any
    transaction that redeems a P2SH output.

  • DCP0001-0003 now apply to simnet from the start of the chain (note that this
    is a hard fork for existing simnets).

  • Log files are never automatically deleted. Previously, log files would be
    rotated and old log files would be automatically removed. This has been
    changed to avoid the loss of potentially important logs.

  • Logs for unexpected database consistency issues have been improved by logging
    the keys and values

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.4.0

This decrediton release has been mostly dedicated to fixing nagging issues
with users and cleaning up styling and design overall. We are also happy to
include new features such as: alpha Trezor support, initial alternative color themes,
enhanced Governance/Politeia integration and a prominent page to choose SPV or normal mode.

We are proud to introduce initial Trezor hardware wallet support. This includes
the ability to create transactions in decrediton and then sign them with the
connected device. We will be working hard to add staking on Trezor in the near
future.

Alternative color themes have been a constantly suggested feature since the
launch of decrediton. We have added an initial proof of concept for a dark theme
toggle. The colors are not yet final and design will hopefully provide a series
of possible themes instead of simply light and dark.

This release is the first to directly ask users on startup whether or not they
would like to use SPV mode or not. This will hopefully increase SPV usage and
provide better/faster wallet support for most users.

New features

  • Trezor integration has been added. This allows users to essentially use
    decrediton as watch-only wallet that is able to have its transactions signed
    directly by their Trezor device. Staking isn't yet currently available, but
    we'll be looking in to adding that soon. While we have tested and verified
    this initial Trezor integration, we will hold off on prominently advertising
    this until we can fully confirm it is bug free and secure.

  • Decrediton has switched to using the ticketbuyer v2 service from the wallet
    (instead of the old v1). Given that after DCP-0001 the
    ticket price has been stable, there's no need for that many configuration
    parameters anymore. Version 2 of the ticket buyer needs to be configured only
    with the source account, target stakepool and how much balance should be left
    spendable. The buyer will then purchase as many tickets as possible, while
    maintaining that balance.

  • Launcher Sync Stream. Now both modes (SPV/RPC) both use the same notification
    types to update during launching. This helps with being able to allow dcrwallet
    to handle all of the syncing and simply just update on similiar notifications.
    Previously, there were situations that were causing issues since syncing steps
    would be done out of order.

  • All users will see a new page on first load that lets them select whether or
    not they would like to enable SPV mode. We have also added a link to a newly
    created document explaining everything about SPV.

  • We have added an early proof of concept for color theme toggling. The colors
    for the added dark theme are still being finalized by design, but the button
    can be found on the Settings page.

  • Whenever a panic is detected by decrediton in dcrd or dcrwallet, users are now
    sent to a seperate fatal error screen where they will be able to copy the logs
    to be able to provide them to the developers and support. This will hopefully
    help users receive better direction to alleviate issues that are hitting.

  • Notifications have been completed restyled and fixed to allow for multiple
    simultaneous notifications. There is now a prominent closer button and timer
    for automatic notification closing.

Other improvements

  • Eeter and kylefirethought have delivered a whole new set of animated menu icons.
    These can be seen when hovering over a given menu page tab.

  • The Governance Page has received a large styling overhaul as provided by Eeter
    LLC. Most importantly, notification bubbles have been added to let users
    know when there are new proposals and votes to see.

  • Various clean up and refinement to the launcher. There were issues in SPV mode
    that were causing confusion about whether it was waiting to connect to a
    daemon to proceed or not. Now it should always be clear to the user when they
    need to resolve something to proceed or if they should expect to wait for
    something to happen.

  • We have updated some error messages to better explain to users what the
    problem is and how it can be resolved.

  • Watch-only wallets are now able to create unsigned transactions that can be
    transferred to an unlocked wallet for signing and subsequent broadcasting.

  • Add an import script button to the Add Stakepool form. There are some users
    that wish to simply import their script without having to communicate with any
    outside sources.

  • The min default relay fee was updated in dcrd a few releases ago and now the
    network has sufficiently upgraded to allow for wallet software to use 0.0001
    DCR/kB as the default. Any transaction or ticket created in decrediton or
    dcrwallet should now use that minimum fee from now on.

  • Change to use the documentation subsystem to add the release notes. This will
    allow us to be more flexible when adding new release notes and letting users
    review older ones.

  • Add decrediton logs to the Logs tab underneath the Help page.

  • With the addition of getblockchaininfo json-rpc command in dcrd, we are
    now able to properly determine the progress of dcrd syncing. This removes the
    need to use outside sources to figure out know the syncing progress.

  • Transactions are now decoded within decrediton instead of being sent back to
    dcrwallet for decoding. This should help with performance to avoid an
    unnecessary request.

  • Chinese language has been extensively reviewed by long time Asian community
    contributor @Guang168

Bug fixes

  • There were various issues with the display of recent staking transactions on
    the Overview and the My Tickets pages.

  • Startup stats have been fixed to properly update and work better for large wallets

  • The application About button in macOS now also opens the About modal.

  • CSV exporting now correctly generates timestamps in UTC or local time based
    on app config (thanks to @rocknet for the first contribution).

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 29
Pre-release
Pre-release

@dajohi dajohi released this Jan 28, 2019 · 16 commits to master since this release

2019-01-28

Install

To install the command line tools, please see dcrinstaller.
To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.4.0-rc3.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

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:

Transaction relay (memory pool):

RPC:

dcrd command-line flags and configuration:

Documentation:

Developer-related package and module changes:

Testing and Quality Assurance:

Misc:

Code Contributors (alphabetical order):

  • Corey Osman
  • Dave Collins
  • David Hill
  • Dmitry Fedorov
  • Donald Adu-Poku
  • ggoranov
  • githubsands
  • J Fixby
  • Jonathan Chappelow
  • Josh Rickmar
  • Matheus Degiovani
  • Sarlor
  • zhizhongzhiwai

dcrwallet v1.4.0-rc3

This release focuses on bug fixes and general improvements for both direct
dcrwallet command line users and other projects building on top of dcrwallet
(such as Decrediton and upcoming mobile wallets). A comprehensive list of
improvements and bug fixes follows.

Bug fixes

  • Fixes were made to which and how many addresses and wallet UTXOs are watched
    by the SPV and RPC syncers. This prevents several bugs resulting from missed
    transactions, such as avoiding double spending errors and spends of unknown
    inputs.

  • Committed filter creation and validation is fixed on all ARM processors.
    Previously, an ARM assembly optimization could produce incorrect output for
    the siphash function.

  • During initial wallet creation, the database is now always cleanly closed
    before the process exits. Previously, this was a race and the new wallet
    database may have been missing writes during the initialization step.

  • RPC connection errors to dcrd are now properly logged

  • A possible deadlock situation was removed by adding a missing mutex unlock to
    the SPV peering implementation.

  • Error handling has been improved when querying unmined and unspent ticket
    transactions.

  • The total number of logged transactions processed by the RPC syncer has been
    fixed.

  • The process can be interrupted at startup if while being blocked on acquiring
    the wallet's database lock. Previously, the process would have needed to be
    killed, or wait for an existing running wallet to shutdown.

  • Fixed reorganizations failing with "missing credit value" errors. This
    was not a database corruption issue and a wallet restore is not necessary.

  • Fixed the block hash returned by gRPC WalletService.GetTransaction
    responses. This method was prevously using the transaction hash instead
    of the hash of the block the transaction was mined in.

  • Fixed error handling in the RPC sync mode to ensure some synchronization
    errors are not ignored.

New features

  • The gRPC method WalletService.ValidateAddress now returns pubkey of P2PKH
    addresses and BIP0044 branch and child index if the address is controlled by
    the wallet.

  • The gRPC method WalletService.ImportScript is now usable by watching-only
    wallets.

  • The gRPC method WalletService.StakeInfo now includes counts of unspent
    tickets.

  • A new gRPC method TicketBuyerV2Service.RunTicketBuyer has been added to run
    the SPV-compatible ticket buyer.

  • A new gRPC method WalletService.GetTicket has been added to query the
    details of an individual ticket by its transaction hash.

  • A new gRPC method WalletService.SweepAccount has been added to sweep all
    UTXOs of an account to a single new output.

  • A new gRPC method WalletService.RpcSync has been added, providing a similar
    as SpvSync to perform wallet synchronization with a dcrd RPC connection.

  • The SPV and RPC syncers now support callbacks for syncing notifications.
    These notifications are also availble to gRPC clients who invoke the syncers.

  • Creating a new simnet wallet now shows an address that can be used for mining
    rewards.

  • RPC syncing connections to dcrd can now be proxied using the --proxy,
    --proxyuser, and --proxypass options.

Other improvements

  • Builds have been converted to use Go Modules. The repository has been split
    into various submodules, making it far easier to write applications that
    import dcrwallet packages as libraries.

  • Wallet database API is exported for projects that need support for alternative
    database drivers (such as dcrandroid).

  • Default transaction relay fee has been dropped to 0.0001 DCR/kB.

  • Transaction size and fee estimation is improved for ticket purchases and any
    transaction that redeems a P2SH output.

  • DCP0001-0003 now apply to simnet from the start of the chain (note that this
    is a hard fork for existing simnets).

  • Log files are never automatically deleted. Previously, log files would be
    rotated and old log files would be automatically removed. This has been
    changed to avoid the loss of potentially important logs.

  • Logs for unexpected database consistency issues have been improved by logging
    the keys and values

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.4.0-rc3

This decrediton release has been mostly dedicated to fixing nagging issues
with users and cleaning up styling and design overall. We are also happy to
include new features such as: alpha Trezor support, initial alternative color themes,
enhanced Governance/Politeia integration and a prominent page to choose SPV or normal mode.

We are proud to introduce initial Trezor hardware wallet support. This includes
the ability to create transactions in decrediton and then sign them with the
connected device. We will be working hard to add staking on Trezor in the near
future.

Alternative color themes have been a constantly suggested feature since the
launch of decrediton. We have added an initial proof of concept for a dark theme
toggle. The colors are not yet final and design will hopefully provide a series
of possible themes instead of simply light and dark.

This release is the first to directly ask users on startup whether or not they
would like to use SPV mode or not. This will hopefully increase SPV usage and
provide better/faster wallet support for most users.

New features

  • Trezor integration has been added. This allows users to essentially use
    decrediton as watch-only wallet that is able to have its transactions signed
    directly by their Trezor device. Staking isn't yet currently available, but
    we'll be looking in to adding that soon. While we have tested and verified
    this initial Trezor integration, we will hold off on prominently advertising
    this until we can fully confirm it is bug free and secure.

  • Decrediton has switched to using the ticketbuyer v2 service from the wallet
    (instead of the old v1). Given that after DCP-0001 the
    ticket price has been stable, there's no need for that many configuration
    parameters anymore. Version 2 of the ticket buyer needs to be configured only
    with the source account, target stakepool and how much balance should be left
    spendable. The buyer will then purchase as many tickets as possible, while
    maintaining that balance.

  • Launcher Sync Stream. Now both modes (SPV/RPC) both use the same notification
    types to update during launching. This helps with being able to allow dcrwallet
    to handle all of the syncing and simply just update on similiar notifications.
    Previously, there were situations that were causing issues since syncing steps
    would be done out of order.

  • All users will see a new page on first load that lets them select whether or
    not they would like to enable SPV mode. We have also added a link to a newly
    created document explaining everything about SPV.

  • We have added an early proof of concept for color theme toggling. The colors
    for the added dark theme are still being finalized by design, but the button
    can be found on the Settings page.

  • Whenever a panic is detected by decrediton in dcrd or dcrwallet, users are now
    sent to a seperate fatal error screen where they will be able to copy the logs
    to be able to provide them to the developers and support. This will hopefully
    help users receive better direction to alleviate issues that are hitting.

  • Notifications have been completed restyled and fixed to allow for multiple
    simultaneous notifications. There is now a prominent closer button and timer
    for automatic notification closing.

Other improvements

  • Eeter and kylefirethought have delivered a whole new set of animated menu icons.
    These can be seen when hovering over a given menu page tab.

  • The Governance Page has received a large styling overhaul as provided by Eeter
    LLC. Most importantly, notification bubbles have been added to let users
    know when there are new proposals and votes to see.

  • Various clean up and refinement to the launcher. There were issues in SPV mode
    that were causing confusion about whether it was waiting to connect to a
    daemon to proceed or not. Now it should always be clear to the user when they
    need to resolve something to proceed or if they should expect to wait for
    something to happen.

  • We have updated some error messages to better explain to users what the
    problem is and how it can be resolved.

  • Watch-only wallets are now able to create unsigned transactions that can be
    transferred to an unlocked wallet for signing and subsequent broadcasting.

  • Add an import script button to the Add Stakepool form. There are some users
    that wish to simply import their script without having to communicate with any
    outside sources.

  • The min default relay fee was updated in dcrd a few releases ago and now the
    network has sufficiently upgraded to allow for wallet software to use 0.0001
    DCR/kB as the default. Any transaction or ticket created in decrediton or
    dcrwallet should now use that minimum fee from now on.

  • Change to use the documentation subsystem to add the release notes. This will
    allow us to be more flexible when adding new release notes and letting users
    review older ones.

  • Add decrediton logs to the Logs tab underneath the Help page.

  • With the addition of getblockchaininfo json-rpc command in dcrd, we are
    now able to properly determine the progress of dcrd syncing. This removes the
    need to use outside sources to figure out know the syncing progress.

  • Transactions are now decoded within decrediton instead of being sent back to
    dcrwallet for decoding. This should help with performance to avoid an
    unnecessary request.

  • Chinese language has been extensively reviewed by long time Asian community
    contributor @Guang168

Bug fixes

  • There were various issues with the display of recent staking transactions on
    the Overview and the My Tickets pages.

  • Startup stats have been fixed to properly update and work better for large wallets

  • The application About button in macOS now also opens the About modal.

  • CSV exporting now correctly generates timestamps in UTC or local time based
    on app config (thanks to @rocknet for the first contribution).

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 18
Pre-release
Pre-release

@dajohi dajohi released this Jan 4, 2019 · 17 commits to master since this release

2018-01-04

Install

To install the command line tools, please see dcrinstaller.

To install decrediton download, uncompress, and run decrediton Linux or decrediton macOS or decrediton Windows.

See manifest-v1.4.0-rc2.txt, and the package specific manifest files for sha256 sums and the associated .asc files to confirm those shas.

See README.md for more info on verifying the files.

Contents

dcrd v1.4.0-rc2

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 block 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, and 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:

Transaction relay (memory pool):

RPC:

dcrd command-line flags and configuration:

Documentation:

Developer-related package and module changes:

Testing and Quality Assurance:

Misc:

Code Contributors (alphabetical order):

  • Dave Collins
  • David Hill
  • Dmitry Fedorov
  • Donald Adu-Poku
  • ggoranov
  • githubsands
  • J Fixby
  • Jonathan Chappelow
  • Josh Rickmar
  • Matheus Degiovani
  • Sarlor
  • zhizhongzhiwai

dcrwallet v1.4.0-rc2

This release focuses on bug fixes and general improvements for both direct
dcrwallet command line users and other projects building on top of dcrwallet
(such as Decrediton and upcoming mobile wallets). A comprehensive list of
improvements and bug fixes follows.

Bug fixes

  • Fixes were made to which and how many addresses and wallet UTXOs are watched
    by the SPV and RPC syncers. This prevents several bugs resulting from missed
    transactions, such as avoiding double spending errors and spends of unknown
    inputs.

  • Committed filter creation and validation is fixed on all ARM processors.
    Previously, an ARM assembly optimization could produce incorrect output for
    the siphash function.

  • During initial wallet creation, the database is now always cleanly closed
    before the process exits. Previously, this was a race and the new wallet
    database may have been missing writes during the initialization step.

  • RPC connection errors to dcrd are now properly logged

  • A possible deadlock situation was removed by adding a missing mutex unlock to
    the SPV peering implementation.

  • Error handling has been improved when querying unmined and unspent ticket
    transactions.

  • The total number of logged transactions processed by the RPC syncer has been
    fixed.

  • The process can be interrupted at startup if while being blocked on acquiring
    the wallet's database lock. Previously, the process would have needed to be
    killed, or wait for an existing running wallet to shutdown.

  • Fixed reorganizations failing with "missing credit value" errors. This
    was not a database corruption issue and a wallet restore is not necessary.

  • Fixed the block hash returned by gRPC WalletService.GetTransaction
    responses. This method was prevously using the transaction hash instead
    of the hash of the block the transaction was mined in.

  • Fixed error handling in the RPC sync mode to ensure some synchronization
    errors are not ignored.

New features

  • The gRPC method WalletService.ValidateAddress now returns pubkey of P2PKH
    addresses and BIP0044 branch and child index if the address is controlled by
    the wallet.

  • The gRPC method WalletService.ImportScript is now usable by watching-only
    wallets.

  • The gRPC method WalletService.StakeInfo now includes counts of unspent
    tickets.

  • A new gRPC method TicketBuyerV2Service.RunTicketBuyer has been added to run
    the SPV-compatible ticket buyer.

  • A new gRPC method WalletService.GetTicket has been added to query the
    details of an individual ticket by its transaction hash.

  • A new gRPC method WalletService.SweepAccount has been added to sweep all
    UTXOs of an account to a single new output.

  • A new gRPC method WalletService.RpcSync has been added, providing a similar
    as SpvSync to perform wallet synchronization with a dcrd RPC connection.

  • The SPV and RPC syncers now support callbacks for syncing notifications.
    These notifications are also availble to gRPC clients who invoke the syncers.

  • Creating a new simnet wallet now shows an address that can be used for mining
    rewards.

  • RPC syncing connections to dcrd can now be proxied using the --proxy,
    --proxyuser, and --proxypass options.

Other improvements

  • Builds have been converted to use Go Modules. The repository has been split
    into various submodules, making it far easier to write applications that
    import dcrwallet packages as libraries.

  • Wallet database API is exported for projects that need support for alternative
    database drivers (such as dcrandroid).

  • Default transaction relay fee has been dropped to 0.0001 DCR/kB.

  • Transaction size and fee estimation is improved for ticket purchases and any
    transaction that redeems a P2SH output.

  • DCP0001-0003 now apply to simnet from the start of the chain (note that this
    is a hard fork for existing simnets).

  • Log files are never automatically deleted. Previously, log files would be
    rotated and old log files would be automatically removed. This has been
    changed to avoid the loss of potentially important logs.

  • Logs for unexpected database consistency issues have been improved by logging
    the keys and values

Changelog

All commits since the last release may be viewed on GitHub
here.

decrediton v1.4.0-rc2

This decrediton release has been mostly dedicated to fixing nagging issues
with users and cleaning up styling and design overall. We are also happy to
include new features such as: alpha Trezor support, initial alternative color themes,
enhanced Governance/Politeia integration and a prominent page to choose SPV or normal mode.

We are proud to introduce initial Trezor hardware wallet support. This includes
the ability to create transactions in decrediton and then sign them with the
connected device. We will be working hard to add staking on Trezor in the near
future.

Alternative color themes have been a constantly suggested feature since the
launch of decrediton. We have added an initial proof of concept for a dark theme
toggle. The colors are not yet final and design will hopefully provide a series
of possible themes instead of simply light and dark.

This release is the first to directly ask users on startup whether or not they
would like to use SPV mode or not. This will hopefully increase SPV usage and
provide better/faster wallet support for most users.

New features

  • Trezor integration has been added. This allows users to essentially use
    decrediton as watch-only wallet that is able to have its transactions signed
    directly by their Trezor device. Staking isn't yet currently available, but
    we'll be looking in to adding that soon. While we have tested and verified
    this initial Trezor integration, we will hold off on prominently advertising
    this until we can fully confirm it is bug free and secure.

  • Decrediton has switched to using the ticketbuyer v2 service from the wallet
    (instead of the old v1). Given that after DCP-0001 the
    ticket price has been stable, there's no need for that many configuration
    parameters anymore. Version 2 of the ticket buyer needs to be configured only
    with the source account, target stakepool and how much balance should be left
    spendable. The buyer will then purchase as many tickets as possible, while
    maintaining that balance.

  • Launcher Sync Stream. Now both modes (SPV/RPC) both use the same notification
    types to update during launching. This helps with being able to allow dcrwallet
    to handle all of the syncing and simply just update on similiar notifications.
    Previously, there were situations that were causing issues since syncing steps
    would be done out of order.

  • All users will see a new page on first load that lets them select whether or
    not they would like to enable SPV mode. We have also added a link to a newly
    created document explaining everything about SPV.

  • We have added an early proof of concept for color theme toggling. The colors
    for the added dark theme are still being finalized by design, but the button
    can be found on the Settings page.

  • Whenever a panic is detected by decrediton in dcrd or dcrwallet, users are now
    sent to a seperate fatal error screen where they will be able to copy the logs
    to be able to provide them to the developers and support. This will hopefully
    help users receive better direction to alleviate issues that are hitting.

  • Notifications have been completed restyled and fixed to allow for multiple
    simultaneous notifications. There is now a prominent closer button and timer
    for automatic notification closing.

Other improvements

  • Eeter and kylefirethought have delivered a whole new set of animated menu icons.
    These can be seen when hovering over a given menu page tab.

  • The Governance Page has received a large styling overhaul as provided by Eeter
    LLC. Most importantly, notification bubbles have been added to let users
    know when there are new proposals and votes to see.

  • Various clean up and refinement to the launcher. There were issues in SPV mode
    that were causing confusion about whether it was waiting to connect to a
    daemon to proceed or not. Now it should always be clear to the user when they
    need to resolve something to proceed or if they should expect to wait for
    something to happen.

  • We have updated some error messages to better explain to users what the
    problem is and how it can be resolved.

  • Watch-only wallets are now able to create unsigned transactions that can be
    transferred to an unlocked wallet for signing and subsequent broadcasting.

  • Add an import script button to the Add Stakepool form. There are some users
    that wish to simply import their script without having to communicate with any
    outside sources.

  • The min default relay fee was updated in dcrd a few releases ago and now the
    network has sufficiently upgraded to allow for wallet software to use 0.0001
    DCR/kB as the default. Any transaction or ticket created in decrediton or
    dcrwallet should now use that minimum fee from now on.

  • Change to use the documentation subsystem to add the release notes. This will
    allow us to be more flexible when adding new release notes and letting users
    review older ones.

  • Add decrediton logs to the Logs tab underneath the Help page.

  • With the addition of getblockchaininfo json-rpc command in dcrd, we are
    now able to properly determine the progress of dcrd syncing. This removes the
    need to use outside sources to figure out know the syncing progress.

  • Transactions are now decoded within decrediton instead of being sent back to
    dcrwallet for decoding. This should help with performance to avoid an
    unnecessary request.

  • Chinese language has been extensively reviewed by long time Asian community
    contributor @Guang168

Bug fixes

  • There were various issues with the display of recent staking transactions on
    the Overview and the My Tickets pages.

  • Startup stats have been fixed to properly update and work better for large wallets

  • The application About button in macOS now also opens the About modal.

  • CSV exporting now correctly generates timestamps in UTC or local time based
    on app config (thanks to @rocknet for the first contribution).

Changelog

All commits since the last release may be viewed on GitHub
here.

Assets 18
You can’t perform that action at this time.