@dajohi dajohi released this Sep 21, 2018 · 3 commits to master since this release

Assets 18

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.