Skip to content

v1.3.0

Choose a tag to compare

@dajohi dajohi released this 21 Sep 19:46
· 55 commits to master since this release
fe826d0

2018-09-21

Install

To install the command line tools, please see dcrinstaller.

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

See manifest-v1.3.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.3.0

This release of dcrd contains significant performance enhancements for startup speed, validation, and network operations that directly benefit lightweight clients, such as SPV (Simplified Payment Verification) wallets, a policy change to reduce the default minimum transaction fee rate, a new public test network version, removal of bloom filter support, infrastructure improvements, and other quality assurance changes.

It is highly recommended that everyone upgrade to this latest release as it contains many important scalability improvements and is required to be able to use the new public test network.

Downgrade Warning

The database format in v1.3.0 is not compatible with previous versions of the software. This only affects downgrades as users upgrading from previous versions will see a one time database migration.

Once this migration has been completed, it will no longer be possible to downgrade to a previous version of the software without having to delete the database and redownload the chain.

Notable Changes

Reduction of Default Minimum Transaction Fee Rate Policy

The default setting for the policy which specifies the minimum transaction fee rate that will be accepted and relayed to the rest of the network has been reduced to 0.0001 DCR/kB (10,000 atoms/kB) from the previous value of 0.001 DCR/kB (100,000 atoms/kB).

Transactions should not attempt to use the reduced fee rate until the majority of the network has upgraded to this release as otherwise the transactions will likely have issues relaying through the network since old nodes that have not updated their policy will reject them due to not paying a high enough fee.

Several Speed Optimizations

This release contains several enhancements to improve speed for startup, the initial sync process, validation, and network operations.

In order to achieve these speedups, there is a one time database migration, as previously mentioned, that typically only takes a few seconds to complete on most hardware.

Further Improved Startup Speed

The startup time has been improved by roughly 2x on both slower hard disk drives (HDDs) and solid state drives (SSDs) as compared to v1.2.0.

Significantly Faster Network Operations

The ability to serve information to other peers on the network has received several optimizations which, in addition to generally improving the overall scalability and throughput of the network, also directly benefits SPV (Simplified Payment Verification) clients by delivering the block headers they require roughly 3x to 4x faster.

Signature Hash Calculation Optimization

Part of validating that transactions are only spending coins that the owner has authorized involves ensuring the validity of cryptographic signatures. This release provides a speedup of about 75% to a key portion of that validation which results in a roughly 20% faster initial sync process.

Bloom Filters Removal

Bloom filters were deprecated as of the last release in favor of the more recent privacy-preserving GCS committed filters. Consequently, this release removes support for bloom filters completely. There are no known clients which use bloom filters, however, if there are any unknown clients which use them, those clients will need to be updated to use the GCS committed filters accordingly.

Public Test Network Version 3

The public test network has been reset and bumped to version 3. All of the new consensus rules voted in by version 2 of the public test network have been retained and are therefore active on the new version 3 test network without having to vote them in again.

Changelog

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

Protocol and network:

Transaction relay (memory pool):

RPC:

dcrd command-line flags and configuration:

dcrctl utility changes:

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
  • harzo
  • hypernoob
  • J Fixby
  • Jonathan Chappelow
  • Josh Rickmar
  • Markus Richter
  • matadormel
  • Matheus Degiovani
  • Michael Eze
  • Orthomind
  • Shuai Qi
  • Tibor Bősze
  • Victor Oliveira

dcrwallet v1.3.0

This release focuses on bringing initial simplified payment verification (SPV) and committed filter (CF) support to dcrwallet as an optional, experimental synchronization mode. As usual, the release also contains various other improvements and bug fixes, iterated below.

This release contains a database upgrade and once upgraded it is not possible to downgrade to previous wallet releases without performing a seed restore with the old version.

Bug fixes

  • When code executing under a database transaction panics, the transaction is now rolled back. Closing the transaction avoids a deadlock when closing the database in the case that the panic is recovered instead of crashing the process.

  • Deleting private keys from the database no longer modifies the database with an active bucket cursor. Doing so is unsafe and has been the cause of database corruption in the past.

  • The JSON-RPC method version no longer panics dereferencing a nil dcrd RPC client when one does not exist or has not been associated with the server.

  • Callers of an internal method to return unencrypted scripts have been fixed for a breaking API change in the case that the script was not present. This subsequently fixes synchronization from exiting prematurely when various scripts were not recorded.

  • The JSON-RPC method signrawtransaction has been fixed to avoid a panic in cases where an unknown input must have been fetched from dcrd, and the input is already spent in the main chain.

  • Fee estimation when spending a P2SH output has been fixed by considering the nested script length instead of using the same size estimation performed when spending a P2PKH output.

  • gRPC transaction notifications now handle the case of a transaction being invalidated by voters in the next block. An invalidated transaction is considered to have -1 confirmations, but in most cases the transaction (if not double spent) will reappear in mempool with a confirmation count of 0.

New features

  • A SPV synchronization mode has been introduced. SPV may be enabled with the --spv config option. The SPV sync mode uses local committed filter matching (as opposed to remote filtering as commonly done in other SPV implementations) to provide greater privacy and security guarantees by only fetching complete blocks on matches. SPV mode uses the Decred wire protocol and peer-to-peer network to sync to a target 8 outbound peers. The --spvconnect option is provided to manually specify the addresses of outbound peers rather than discovering these over DNS and from other peers.

  • A new ticket buyer implementation has been added. This buyer does not rely on any features unavailable to SPV mode. All config options which only apply to the original ticket buyer are now deprecated, and using only options available to the new buyer will cause the new buyer to be run instead. It is not possible to use the deprecated ticket buyer with SPV.

  • The gRPC method CreateWatchingOnlyWallet has been added to allow the creation of a watching-only wallet for an account extended pubkey.

  • The gRPC method SignTransactions has been added to sign multiple transactions in a single method.

  • The gRPC method ConstructTransaction now returns the index of any added change output, or -1 if no change was added.

  • The gRPC method GetAccountExtendedKey has been added to return an account's extended pubkey.

  • The gRPC method SpvSync has been added to execute the SPV synchronizer. This RPC returns a message stream used to notify clients of the syncer's activity.

  • A new config option --accountgaplimit allows the number of unused accounts to be user-configurable. The default has been dropped from 100 unused accounts to 10 to improve performance of account rediscovery. This option may be set to 100 to restore the previous behavior.

  • The JSON-RPC getstakeinfo result has been modified to include two new fields. unspent returns the number of tickets that have not been spent by a vote or revocation, and unspentexpired returns the number of unspent tickets that are past ticket expiry and cannot possibly be live. Unlike the missed and expired fields, these new fields are populated when running in SPV mode.

Other improvements

  • Unnecessarily-verbose debug logs have been removed when filtering ticket hashes for owned tickets.

  • The walletdb and snacl packages have been made internal packages to prevent these from being exposed by the public API. This is part of an ongoing effort to support module-aware builds with vgo and Go 1.11.

  • The error message for the unsupported operation of calling the JSON-RPC method listtransactions with an account name been improved by adding a hint to use * instead.

  • go vet is now tested by the CI infrastructure and several string formatting issues discovered by vet have been resolved.

  • The operating system and machine architecture are now logged at process startup together with the wallet release and Go versions.

  • The description for the --createtemp config option now references the requirement of additionally setting --appdata rather than the deprecated --datadir option.

  • Input amounts of previous outputs are now set before signing transactions. This will be required as proposed signature hash algorithms commit to the input amount.

Changelog

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

decrediton v1.3.0

This release of Decrediton marks the dawn of a large milestone in development. SPV (simple payment verification) has been added in dcrwallet which allows wallets to connect directly to peers and not required a fully synced node to be connected. For now this feature will be turned OFF by default, then when we have gotten thorough feedback and a confident in the usage, it will be turned on by default.

While it's hard to give details of speed increases due to variances in systems, we've seen roughly a 5x increase in syncing a previously used seed to tip on mainnet. Previously, syncing the chain would take roughly 1hr plus another 5-10 mins for the wallet to become synced. Now, we're seeing about 20mins total time to being able to fully use a wallet to send or purchase tickets.

In the coming releases, we are going to work on further speeding this process up, as well as providing more feedback from dcrwallet to Decrediton to make a richer user experience.

*Note: Automatic ticket purchasing has been disabled for SPV. We will be implementing a way to start and stop the new v2 ticketbuyer in dcrwallet. This new version is much simpler and really only has 1 option to set which would be an absolute balance to maintain. This new version will also allow users to run multiple ticket purchases for each account.

This release also has been audited by our design team at Eeter, LLC. Most of the pages have received an update to the styling to add more polish and be more resilient to various sizing and displays. In the near future, we will be focusing on color themes and window sizing for small, medium and large displays.

We are also proud to announce the intial release of the Politeia integration. While this functionality is still in beta-testing, what you see will be roughly the final form. Proposals up for vote will be shown and your possible tickets will be compared to the proposal's allowed tickets to vote. If there are tickets available to vote, you simply make your choice, enter your passphrase and your tickets are used to send the Politeia server your cryptographic proof of ownership.

New Features

  • SPV integration - *Note: This integration is currently hidden from normal usage, if you would like to test it, please set "spv_mode": true, in your config.json file. With this new integration, there has been a new way of syncing that has been added. Now instead of needing to do all of the wallet loader processes in the proper order, one can simply call the SpvSync grpc and that will handle everything within dcrwallet. This will lead to much less errors and other headaches down the road. We have also added an "spv_connect": [], option in the config.json file, which will allow users to connect directly to a known peer instead of relying on the DNS seeders to find peers.

  • Whitelisting and Proxy - We have added new support to control the connections to domains that are used for various information. We have also added proxy support for those that choose to have the extra security. These were both necessary since the addition of Politeia wallet's communicating with the outside world. We felt the users should have full control over where the wallet is communicating. This support will be further improved upon in future releases and requests for things are made.

  • Initial Politeia Integration - *Note: This integration is currently hidden from normal usage, but can be accessed by setting "politeia_beta": true, in your config.json file. When activated the user is shown a new page on the side bar menu, reading "Governance." This will show them the Politeia information, of which is pulled from a request to the proposals site. They will be shown currently live and past votes.

  • Animated Onboarding Slides - All new animated slides were added. Big thanks for all the hard work from @kyleFirethought and everyone at Eeter! They really make the wallet shine.

Other improvements

  • Launcher - The launcher UI was audited and has most of its issues smoothed out. There were some lingering issues and possible ways of users to get "stuck" while loading up their wallets.

  • Inputs and Errors - All inputs have been audited for consistency and proper input error states are now being used. We are very pleased with the look and feel of the input errors and believe they are not too intrusive for users while being very clear of what needs to be corrected.

  • Max Wallet Option - Users are now able to set the max wallets that are shown on the launcher screen. The default is currently set to 3. But keep in mind that it was styled assuming only 3 would be shown, so there may be some distortions as the number shown grows.

  • Refined About Modal - The additional window was removed in favor of a React modal. This allowed us to clean up the code and remove a redundant menu bar group.

  • Long Form Translations - Due issues translating large pieces of text that were split up into partial sentences, we are now keeping large sections of documentation that need to be translated together. This is for things like the onboarding slides and various informational modals.

Changelog

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