This freezes the root module usage of the mining module by removing the
replacement and bumping the required version. This means building the
software will still produce binaries based on the v1 module until the v2
module is fully released.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the required module versions as follows:
- github.com/decred/dcrd/blockchain@v1.2.0
- github.com/decred/dcrd/mining@v1.1.1
This freezes the root module usage of the blockchain module by removing
the replacement and bumping the required version. This means building
the software will still produce binaries based on the v1 module until
the v2 module is fully released.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the required module versions as follows:
- github.com/decred/dcrd/blockchain@v1.2.0
This updates the main module to use the latest available minor and patch
versions of all modules and reverts the recent change that incorrectly
removed all of the blake256 references from the various go.sum files.
The following required direct dependencies are bumped as follows:
- github.com/decred/dcrd/blockchain/stake@v1.2.1
- github.com/decred/dcrd/blockchain/stake/v2@v2.0.1
- github.com/decred/dcrd/certgen@v1.1.0
- github.com/decred/dcrd/chaincfg@v1.5.2
- github.com/decred/dcrd/chaincfg/chainhash@v1.0.2
- github.com/decred/dcrd/chaincfg/v2@v2.2.0
- github.com/decred/dcrd/dcrutil/v2@v2.0.0
- github.com/decred/dcrd/gcs@v1.1.0
- github.com/decred/dcrd/hdkeychain/v2@v2.0.1
- github.com/decred/dcrd/txscript/v2@v2.0.0
- github.com/decred/dcrwallet/rpc/jsonrpc/types@v1.2.0
This updates the documentation for the new blockchain/standalone module
along with main module dependencies to ensure it is tested as well as
uses the latest version of the code as the new module is integrated.
It also serves as a base for blockchain/stake/v1.0.0.
The new modules has the following direct dependencies:
- github.com/decred/dcrd/chaincfg/chainhash@v1.0.1
- github.com/decred/dcrd/wire@v1.2.0
This serves as the final release of version 3 of the rpcclient module.
All future releases will be moving to version 4 of the module.
Since no changes have been made since the last release, it merely
removes the rpcclient override in the root module and updates it so
building the software will still produce binaries based on the v3 module
until the v4 module is fully released.
This adds an override to the main module for v2 of the database module
to ensure tests are executed against the latest code in the repository
for the v2 module.
This serves as the final release of version 1 of the blockchain/stake
module. All future releases will be moving to version 2 of the module.
Consequently, it bumps the required module version as follows:
- github.com/decred/dcrd/blockchain/stake@v1.2.0
It also removes the blockchain/stake override in the root module and
updates it so building the software will still produce binaries based on
the v1 module until the v2 module is fully released.
This serves as the final release of version 1 of the database module.
All future releases will be moving to version 2 of the module.
Consequently, it removes the database override in the root module and
updates it so building the software will still produce binaries based on
the v1 module until the v2 module is fully released.
This serves as the final release of version 2 of the rpcclient module.
All future releases will be moving to version 3 of the module.
Consequently, it bumps the module version as follows:
- github.com/decred/dcrd/rpcclient@v2.1.0
In addition, it updates the main module to use following module versions
as required:
- github.com/decred/dcrd/dcrutil@v1.4.0
It also removes the rpcclient override in the root module and updates it
so building the software will still produce binaries based on the v2
module until the v3 module is fully released.
This modifies the code to use the decred fork of the go-socks module
throughout and updates the affected modules to use the v1.0.0 release of
the socks module.
This commit introduces a new major version of the dcrjson module which
removes all dcrd RPC type support, instead focusing only on method and
type registration. The dcrd methods and types are moved to the
github.com/decred/dcrd/rpc/jsonrpc/types module.
In order to improve backwards compatibility with dcrjson/v2, the API
has been modified to register methods as interface{} instead of
string. This allows different method string types to be used to key
parameter types during registration and lookup, and will allow
dcrjson/v2 to forward registrations of RPC methods to v3 without
causing duplicate registrations errors for incompatible types.
With the introduction of the new types package, the RPC API has been
modified to replace concatenated hash blobs to JSON string arrays of
hash strings. The RPC API major version is bumped to reflect this
change.
A future update to dcrjson/v2 will add additional registrations,
forwarding the registrations to v3 and replacing command types with
type aliases where possible. Unfortunately, this can not be done
entirely in a single commit due to dcrjson/v2 and dcrjson/v3 sharing
the same directory in the source tree, and a branch will need to be
used for this update.
Module replacements are temporarily used to enable the changes for the
main module, including dcrctl. After the aforementioned update to
dcrjson/v2 and a forthcoming update to dcrwallet's RPC types package,
these replacements will be removed.
This adds requires for newer module versions that are not yet fully
integrated to the main go.mod file and a new file with a build tag
to ignore it which imports those modules to prevent go mod tidy from
removing the otherwise unused entries.
This serves as the final release of version 1 of the txscript module.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the module version as follows:
- github.com/decred/dcrd/txscript@v1.1.0
It also removes the txscript override in the root module and updates it
so building the software will still produce binaries based on the v1
module until the v2 module is fully released.
This refactors the consensus code which extracts the null data from the
coinbase from txscript.ExtractCoinbaseNullData so that it is performed
directly in the validation code where it more properly belongs.
The only reason the extraction was previously done in txscript is
because it was not possible to parse scripts outside of it, but that is
no longer the case now that txscript offers an exported tokenizer for
that purpose.
The extraction code is ever so slightly more efficient now that it no
longer needs to be as generic since it now has direct knowledge of the
conditions that need to be handled.
Great care was taken to ensure the semantics are not changed while
refactoring the code and no additional tests are added in this commit
because all of the conditions and code paths are covered by the tests
recently added to the full block tests.
While here, also perform some related code cleanup in the function and
improve the error messages .
Since the txscript.ExtractCoinbaseNullData is no longer necessary, this
deprecates the function and releated error code and constant so they can
be removed in the next major version of txscript.
Finally, since this relies on the script tokenizer which is not yet in a
released version of the txscript module, bump the requirement to include
an as yet unreleased version of txscript to ensure the next time the
blockchain module is released, it will require a newer version of
txscript to be released first.
This serves as the final release of version 1 of the dcrutil module.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the module version as follows:
- github.com/decred/dcrd/dcrutil@v1.3.0
It also removes the dcrutil override in the root module and updates it
so building the software will still produce binaries based on the v1
module until the v2 module is fully released.
This serves as the final release of version 1 of the chaincfg module.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the module version as follows:
- github.com/decred/dcrd/chaincfg@v1.5.0
It also removes the chaincfg override in the root module and updates it
so building the software will still produce binaries based on the v1
module until the v2 module is fully released.
This updates the rpctest package and main module to use version 2 of the
hdkeychain module.
The following is a summary of changes:
- Update all imports to use hdkeychain/v2
- Update module requirements to include new module and remove no longer
needed old versions
- Add an override for the v2 module so CI always builds with the latest
code
This serves as the final release of version 1 of the hdkeychain module.
All future releases will be moving to version 2 of the module.
Since there have been no changes since the last release version, this
merely removes the hdkeychain override in the root module and updates it
so building the software will still produce binaries based on the v1
module until the v2 module is fully released.
This implements a new module named lru which provides a concurrency safe
least-recently-used cache with nearly early O(1) lookups, inserts, and
deletions. The cache is limited to a maximum number of items with
eviction for the oldest entry when the limit is exceeded.
This will allow the various concrete implementations to be updated to
make use of this shared module instead of duplicating code. There is no
additional performance hit to making use of this generic version because
the internal list already causes the item to be boxed anyway, so the
addition of the interface for the type does not cause an additional
alloc.
This can be seen by comparing this generic implementation to the
existing concrete nonce implementation in peer:
BenchmarkCache 1 allocs/op
BenchmarkLruNonceList 1 allocs/op
It also includes comprehensive tests, a benchmark, full package
documentation, and a basic usage example.
This adds the go 1.11 directive to all of the modules in order to
clearly mark they build and work with that version. Go 1.12 modified
the tools such that tidy will automatically add the new version to
modules that do not already have a directive and that would prevent
builds on Go 1.11 through Go 1.11.3 which is not desirable.
This updates the main module to use version 2 of the mempool module.
The following is a summary of changes:
- Update all imports to use mempool/v2
- Update module requirements to include new module and remove no longer
needed old versions
- Add an override for the v2 module so CI is always builds with the
latest code
- Update rpcserver getrawmempool to make use of new mempool
VerboseTxDescs instead of the removed RawMempoolVerbose
- Update rpcserver getrawmempool to properly return the parameter
provided for the transaction type instead of the type of variable in
the case an invalid type is provided
- Update rpcserver getrawmempool to return the supported transaction
types in the error when an invalid type is provided
This serves as the final release of version 1 of the mempool module.
All future releases will be moving to version 2 of the module.
Consequently, it bumps the module version as follows:
- github.com/decred/dcrd/mempool@v1.2.0
It also removes the mempool override in the root module and updates it so building the
software will still produce binaries based on the v1 module until the v2
module is fully released.
This updates dcrctl to use version 2 of the dcrjson module and to make
use of the new separate type definitions provided by wallet so it
continues supporting communication with dcrwallet.
This updates the rpcclient module to use version 2 of the dcrjson module
and to make use of the new separate type definitions provided by wallet
which are no longer available directly in the new dcrjson module.
Since this constitutes a major break to the API, it also bumps the
module version to version 2.
While here, it adds an override for dcrjson/v2 to the root module now to
ensure builds and CI always run the latest code outside of releases.
It should also be noted that this only introduces the new module and
does not update any external modules to make use of it yet.
Consequently, it also removes the rpcclient override in the root module
so building the software will still produce binaries based on the v1
module until this v2 module is fully released.
This removes all wallet-specific type definitions and tests from the
dcrjson module since they are being moved into their own module that
lives in the dcrwallet repository.
Since this constitutes a major break to the API, it also bumps the
module version to version 2.
This modifies all of the modules, with the exception of the root module,
to remove all replacement directives from their go.mod files and update
the requirements and module sums accordingly.
While it is nice to be able to build and test directly from each module
directory and have it pull in the latest untagged changes when
developing, having all of the overrides in each module makes it
infeasible to use the module tools to help maintain the modules and thus
makes it quite difficult to ensure they are all independently accurate
for external consumers.
By maintaining all of the overrides in the root module and invoking all
builds and tests from it, the overrides will apply to ensure the latest
code is being built and tested.
This also modifies the tests script used with in CI to run all of the
tests from the root module accordingly.
This adds a new definition for the upcoming agenda vote to enable the
corrected sequence locks behavior as defined by DCP0004. It does not
include any code to make decisions or bump the versions. It is only the
definition.
Also, bump the chaincfg module to v1.3.0 so the new definitions are
available to consumers.
This adds a checkpoint to mainnet at height 295940 and testnet at height
83520.
Also, bump the chaincfg module to v1.2.1 so the new checkpoint are
available to consumers.
This bumps the various module versions as follows:
- github.com/decred/dcrd/dcrec/secp256k1@v1.0.1
- github.com/decred/dcrd/dcrjson@v1.1.0
- github.com/decred/dcrd/database@v1.0.3
- github.com/decred/dcrd/blockchain/stake@v1.1.0
- github.com/decred/dcrd/mining@v1.1.0
- github.com/decred/dcrd/certgen@v1.0.2
- github.com/decred/dcrd/connmgr@v1.0.2
- github.com/decred/dcrd/mempool@v1.1.0
In addition, it serves as a base for tagging releases of the following
module versions that have previous been bumped since the last release,
but not yet tagged:
- github.com/decred/dcrd/wire@v1.2.0
- github.com/decred/dcrd/chaincfg@v1.2.0
- github.com/decred/dcrd/dcrutil@v1.2.0
- github.com/decred/dcrd/txscript@v1.0.2
- github.com/decred/dcrd/blockchain@v1.1.0
- github.com/decred/dcrd/hdkeychain@v1.1.1
- github.com/decred/dcrd/peer@v1.1.0
- github.com/decred/dcrd/rpcclient@v1.1.0
Finally, it updates all of the dependencies for every module accordingly,
adds a few missing overrides for transitive dependencies, and tidies up
some of the go module sum files.
This adds support for the getblockchaininfo RPC to rpcclient,
adding asynchronous and blocking functions to rpcclient.Client.
The rpcclient module version is bumped to v1.1.0.
This adds the first version of the fees package, responsible for
performing fee estimation of network transactions.
The main goal of fee estimation is to allow the usage of dynamic fees
by wallets, contingent on block contention and the desired confirmation
range for a given transaction.
This version was based on bitcoin core fee estimation.
This modifies the majority of the tests that make use of chain
parameters and the RPC tests to use the resurrected regression test
network.
It also bumps the affected module versions as follows:
- github.com/decred/dcrd/txscript@v1.0.2
- github.com/decred/dcrd/blockchain/stake@v1.0.3
- github.com/decred/dcrd/mempool@v1.0.2
The blockchain and dcrutil modules are also affected, but since their
version has already been bumped since their last release tags, they are
not bumped again.
This resurrects the regression test network that was removed before
initial launch although it really should not have been. The simulation
test network and the regression test network do not serve the same
purpose. Specifically, the regression test network is intended for unit
tests, RPC server tests, and consensus tests. On the other hand, the
simulation test network is intended for private use within a group of
individuals doing simulation testing and full integration tests between
different applications such as wallets, voting service providers, mining
pools, block explorers, and other services that build on Decred.
Keeping the concerns separate will allow the simulation test network to
be modified in ways such as activating consensus changes that have been
successfully voted into mainnet without also needing to vote them in on
the simulation test network while still preserving the ability for the
unit tests to properly test the voting semantics and handling to help
prevent regressions.
In addition to resurrecting the regression test network, this also fully
fleshes out new values for the various addresses prefixes (Rk, Rs, Re,
etc), HD key prefixes (rprv, rpub), and treasury multisig details.
As a part of resurrecting the network, a new CLI flag `--regnet` is
added to allow the RPC test harness connect to a running instance, the
areas of the code which involve votes have been modified to allow the
votes to apply to the new network, and tests have been added to the
relevant modules.
This bumps the affected module versions as follows:
- github.com/decred/dcrd/wire@v1.2.0
- github.com/decred/dcrd/chaincfg@v1.2.0
- github.com/decred/dcrd/dcrutil@v1.2.0
- github.com/decred/dcrd/hdkeychain@v1.1.1
The blockchain module is also affected, but since its version has
already been bumped since the last release tag, it is not bumped again.
Finally, this does not include switching unit tests or the RPC test
harness over the new network since that will be done in a separate
commit.
This adds a new notification type to blockchain which allows the caller
to be notified when a block that intents to extend the main chain has
passed all sanity and contextual checks such as having valid proof of
work, valid merkle and stake roots, and only containing allowed votes
and revocations.
The intention is to allow faster relay of new tip blocks throughout the
network by providing a means to relay it before the more expensive
connection code takes place even though it may ultimately fail to
connect.
This is acceptable because blocks that pass all of the aforementioned
checks and then fail to connect are quite rare since it takes a
significant amount of work to create a block which satisfies the proof
of work requirement as well as all other checks up to that point.
This adds a new function to peers which allows an inventory vector to be
queued for immediate send versus the standard trickling batched
inventory queue method while still respecting the functionality which
filters attempts to notify peers about inventory that they are already
known to have.
This marks the start of a new release process as compared to previous
releases.
Instead of bumping the version just before a release and releasing from
the master branch, as has been done up to this point, the minor (or
major when necessary) will now be bumped on the master branch at the
beginning of a release cycle. In addition, the pre-release portion of
the semantic version is now the string "pre" to help make it more
obvious that the master branch represents a pre-release build of work
leading up to the next release.
When a new release is prepared, a new release branch will be created
that has a naming scheme of "release-vX.Y", where X is the major and Y
is the minor. Any additional commits needed to prepare the release
leading up to a release candidate will be cherry-picked to the release
branch, and all tags for releases and release candidates will be created
against that.
This implies that should any additional patch releases be necessary, the
relevant commits will also be cherry-picked to the release branch as
needed, followed by a new release candidate for the patch release and
the eventual patch release.