Decred v1.1.0 “Thunderstruck” — Development Dispatch 26

Decred
Decred
Published in
6 min readSep 23, 2017

--

IMPORTANT: v1.1.0 "Thunderstruck" has a new vote agenda. Please upgrade as soon as possible to vote!

This development dispatch covers work completed since the Decred v1.0.7 release on August 18th, 2017.

Here are direct links to the Paymetheus (Windows) GUI wallet installers:

Decrediton (OSX, Linux) GUI wallet installers:

dcrinstall cross-platform text-based CLI installers:

All the various binaries except for dcrinstall:

NOTE: All Windows binaries only support Windows 7 and newer.

Instructions on how to verify the release binaries using GPG can be found here.

dcrd

This release of dcrd primarily introduces a new consensus vote agenda which allows the stakeholders to decide whether or not to activate the features needed for providing full support for Lightning Network. For those unfamiliar with the voting process in Decred, this means that all code in order to support these features is already included in this release, however its enforcement will remain dormant until the stakeholders vote to activate it.

The following Decred Change Proposals (DCPs) describe the proposed changes in detail:

It is important for everyone to upgrade their software to this latest release even if you don’t intend to vote in favor of the agenda.

Notable Changes

Lightning Network Features Vote

In order to fully support many of the benefits that the Lightning Network will bring, there are some primitives that involve changes to the current consensus that need to be enabled. A new vote with the id lnfeatures is now available as of this release. After upgrading, stakeholders may set their preferences through their wallet or stake pool’s website.

Transaction Finality Policy

The standard policy for transaction relay has been changed to use the median time of the past several blocks instead of the current network adjusted time when examining lock times to determine if a transaction is final. This provides a more deterministic check across all peers and prevents the possibility of miners attempting to game the timestamps in order to include more transactions.

Consensus enforcement of this change relies on the result of the aforementioned lnfeatures vote.

Relative Time Locks Policy

The standard policy for transaction relay has been modified to enforce relative lock times for version 2 transactions via their sequence numbers and a new OP_CHECKSEQUENCEVERIFY opcode.

Consensus enforcement of this change relies on the result of the aforementioned lnfeatures vote.

OP_SHA256 Opcode

In order to better support cross-chain interoperability, a new opcode to compute the SHA-256 hash is being proposed. Since this opcode is implemented as a hard fork, it will not be available for use in scripts unless the aforementioned lnfeatures vote passes.

dcrwallet

This release focuses on adding voting agendas for the hard forks described in DCP0002 and DCP0003. It also comes with the normal set of bug fixes and improvements.

New features

  • A new gRPC method WalletService.CreateSignature has been added to create a raw transaction input signature. This is useful for clients that need to include signatures in non-standard scripts without resorting to dumping a private key and signing in the client.
  • The gRPC WalletService.Balance result has been updated to include the unconfirmed balance. This unconfirmed balance has the same semantics as the unconfirmed field from the getbalance JSON-RPC result.

Other improvements

  • The help text for the addticket JSON-RPC method has been updated to reflect that fact that manually added tickets are not reported in the statistics returned by the getstakeinfo method.
  • Added support for Go 1.9. Release binaries are now created using this Go version.
  • The sample config has been updated for the current configuration defaults. This sample config had not been updated in the past when default config options were changed.

Bug fixes

  • Revocations can now be created which double spend an unmined vote, as long as the vote is not voting on the most recent block. This allows revocations to be created for votes that were made but not included in the block by miners.
  • Tickets manually added through the addticket JSON-RPC method are now included in the gettickets results. This is required for correct stakepool functionality.
  • An off-by-one was fixed when logging the number of watched addresses at wallet startup.
  • A divide-by-zero error has been fixed when attempting to use the integrated ticket buyer starting from the genesis block on simnet.

Decrediton

This release Decrediton is significant for a few newly added features and improvements. With the help of jrick, we are now able to control child processes properly in Windows and are now able to add Windows support. The Windows version of Decrediton will be released in the next few days, due to an issue with the build process.

The entire startup process has been refined to help users understand what is happening behind the scenes. Now it should be clear to users when the blockchain is downloading and what the consequences are for skipping initial
sync.

We have also completed work on the initial phases of the React/Redux refactor. All inline styles have been replaced with Less styling and all components have been broken up into logic and presentation portions. The next step will be to audit and refactor the Redux state and ensure that everything is immutable and recording proper state.

The following release will include a completely redesigned UX for staking. We hope that this will make staking more approachable to new users. We will also be adding complete ticket status information and basic graphs for users to visualize their accumulated returns from staking.

New Features

  • An “About” window now shows current Decrediton version, plus versions of packaged dcrd and dcrwallet binaries. This should help debug users’ issues going forward.
  • New startup procedure. We now wait for dcrd’s RPC connection to be available and subsequently check block count. We can now show users an estimated time for full blockchain download. This done by using a best guess according to 5 minutes per block and when the chain launched. We plan on using more intelligent methods of checking current block height in the future.
  • Send all. Users can now construct transactions that will completely drain an account. Simply select the account you would like to send from, click “Send All” then enter you destination address. You will then be shown the amount to be sent and the estimated fee. Click send and enter your private passphrase to complete the transaction.
  • Show rescan progress in sidebar. This should help users avoid confusion after linking ApiKeys or importing scripts.
  • Allow for basic resizing of the application window. We are currently designing fully implemented media size break points. But in the meantime this fix should allow users with low PPI screens to see the entire application view.

Bug fixes

  • Clear stakepool configurations when creating a new wallet. Otherwise, users could get into unintended situations with stakepool settings from one wallet being attempted on another. Other checks were still in place to avoid major issues, but this led to undesirable UX.
  • Show pending transactions of all types in the overview and the history page.
  • Fix erroneous reloads and form submission in get started pages.
  • Settings were being saved on field change instead of Save Setting submit.
  • When using testnet, use different background color in SideBar to accentuate that is is a different network.

Paymetheus

This release is likely to be the last, or one of the last, Paymetheus releases. We have decided to unifiy efforts into development of our cross-platform GUI, Decrediton. We will continue to search for interested WPF/xaml developers that would like to continue development of this native Windows GUI. Users are encouraged to migrate to the Windows release of Decrediton by importing your Paymetheus seed. In the meantime, this release of Paymetheus contains the updates for voting on DCP0002 and DCP0003 and is intended as an interim release to smooth the migration process.

Contributors

We would like to thank our contributors for their work this release: ay-p, davecgh, dhill, dnldd, go1dfish, jcmincke, jolan, jrick, jpz, marco, matheusd, peterzen, and sndurkin.

Originally published at forum.decred.org on September 23, 2017.

--

--

Decred
Decred

A self-funding cryptocurrency with a system of community-based governance integrated into its blockchain.