v1.1.0
This release of dcrd primarily introduces a new consensus vote agenda which
allows the stakeholders to decide whether or not to activate the features needed
for providing full support for Lightning Network. For those unfamiliar with the
voting process in Decred, this means that all code in order to support these
features is already included in this release, however its enforcement will
remain dormant until the stakeholders vote to activate it.
The following Decred Change Proposals (DCPs) describe the proposed changes in detail:
It is important for everyone to upgrade their software to this latest release
even if you don't intend to vote in favor of the agenda.
Notable Changes
Lightning Network Features Vote
In order to fully support many of the benefits that the Lightning Network will
bring, there are some primitives that involve changes to the current consensus
that need to be enabled. A new vote with the id lnfeatures
is now available
as of this release. After upgrading, stakeholders may set their preferences
through their wallet or stake pool's website.
Transaction Finality Policy
The standard policy for transaction relay has been changed to use the median
time of the past several blocks instead of the current network adjusted time
when examining lock times to determine if a transaction is final. This provides
a more deterministic check across all peers and prevents the possibility of
miners attempting to game the timestamps in order to include more transactions.
Consensus enforcement of this change relies on the result of the aforementioned
lnfeatures
vote.
Relative Time Locks Policy
The standard policy for transaction relay has been modified to enforce relative
lock times for version 2 transactions via their sequence numbers and a new
OP_CHECKSEQUENCEVERIFY
opcode.
Consensus enforcement of this change relies on the result of the aforementioned
lnfeatures
vote.
OP_SHA256 Opcode
In order to better support cross-chain interoperability, a new opcode to compute
the SHA-256 hash is being proposed. Since this opcode is implemented as a hard
fork, it will not be available for use in scripts unless the aforementioned
lnfeatures
vote passes.
Changelog
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- chaincfg: update checkpoints for 1.1.0 release decred/dcrd#850
- chaincfg: Introduce agenda for v5 lnfeatures vote decred/dcrd#848
- txscript: Introduce OP_SHA256 decred/dcrd#851
- wire: Decrease num allocs when decoding headers decred/dcrd#861
- blockchain: Implement enforced relative seq locks decred/dcrd#864
- txscript: Implement CheckSequenceVerify decred/dcrd#864
- multi: Enable vote for DCP0002 and DCP0003 decred/dcrd#855
Transaction relay (memory pool):
- mempool: Use median time for tx finality checks decred/dcrd#860
- mempool: Enforce relative sequence locks decred/dcrd#864
- policy/mempool: Enforce CheckSequenceVerify opcode decred/dcrd#864
RPC:
- rpcserver: check whether ticketUtx was found decred/dcrd#824
- rpcserver: return rule error on rejected raw tx decred/dcrd#808
dcrd command-line flags:
- config: Extend --profile cmd line option to allow interface to be specified decred/dcrd#838
Documentation
- docs: rpcapi format update decred/dcrd#807
- config: export sampleconfig for use by dcrinstall decred/dcrd#834
- sampleconfig: Add package README and doc.go decred/dcrd#835
- docs: create entry for getstakeversions in rpcapi decred/dcrd#819
- docs: crosscheck and update all rpc doc entries decred/dcrd#847
- docs: update git commit messages section heading decred/dcrd#863
Developer-related package changes:
- Fix and regenerate precomputed secp256k1 curve decred/dcrd#823
- dcrec: use hardcoded datasets in tests decred/dcrd#822
- Use dchest/blake256 decred/dcrd#827
- glide: use jessevdk/go-flags for consistency decred/dcrd#833
- multi: Error descriptions are in lower case decred/dcrd#842
- txscript: Rename OP_SHA256 to OP_BLAKE256 decred/dcrd#840
- multi: Abstract standard verification flags decred/dcrd#852
- chain: Remove memory block node pruning decred/dcrd#858
- txscript: Add API to parse atomic swap contracts decred/dcrd#862
Testing and Quality Assurance:
- Test against go 1.9 decred/dcrd#836
- dcrec: remove testify dependency decred/dcrd#829
- mining_test: add edge conditions from btcd decred/dcrd#831
- stake: Modify ticket tests to use chaincfg params decred/dcrd#844
- blockchain: Modify tests to use chaincfg params decred/dcrd#845
- blockchain: Cleanup various tests decred/dcrd#843
- Ensure run_tests.sh local fails correctly when gometalinter errors decred/dcrd#846
- peer: fix logic race in peer connection test decred/dcrd#865
Misc:
- glide: sync deps decred/dcrd#837
- Update decred deps for v1.1.0 decred/dcrd#868
- Bump for v1.1.0 decred/dcrd#867
Code Contributors (alphabetical order):
- Alex Yocom-Piatt
- Dave Collins
- David Hill
- Donald Adu-Poku
- Jason Zavaglia
- Jean-Christophe Mincke
- Jolan Luff
- Josh Rickmar