This adds a new package under dcrutil named txsort which implements a
standard lexicographical sort order of transaction inputs and outputs.
This is useful to standardize transactions for faster multi-party
agreement as well as preventing information leaks in a single-party use
case. It is a modified form of BIP69 which has been updated to account
for differences with Decred-specific transactions.
The sort order for transaction inputs is defined as follows:
- Previous transaction tree in ascending order
- Previous transaction hash (treated as a big-endian uint256)
lexicographically in ascending order
- Previous output index in ascending order
The sort order for transaction outputs is defined as follows:
- Amount in ascending order
- Public key script version in ascending order
- Raw public key script bytes lexicographically in ascending order
go1.10 fixes a bug in encoding/json that allowed it to allocate an unexported field, but (*rpcclient.Client).handleMessage relied on this behavior to unmarshal into inMessage. Address the go1.10 fix by allocating the unexported pointer types (rawResponse and rawNotification).
This modifies the rpctest framework to start btcd with the appropriate
network flags depending on the provided parameters.
Previously, it always started btcd with --simnet even if other
parameters, such as those for the regression test network, were
provided.
All instances of data race are related to accessing
KnownAddress elements, except for peer.go where its
related to closure.
Following are the changes:
- Add KnownAddress.mtx (sync.Mutex) and used same to
sync access points
- For peer.go, pass local copy to the closure
This change moves the hdkeychain package outside of the dcrutil
directory into its own top-level package. This change is being made
since hdkeychain only depends on dcrutil's address code, and if the
rpctest integration tests are ever moved outside of the dcrd repo,
hdkeychain will no longer be required to remain in dcrd to avoid a
cyclic dependency.
This merge commit adds the following code from the
github.com/decred/dcrutil package into a new
github.com/decred/dcrd/dcrutil package:
* Address handling
* Amount type
* AppDataDir func
* bitflags functions
* Block wrapper type
* Hash160 func
* Tx wrapper type
* WIF type
as well as all tests for this code.
The old github.com/decred/dcrutil/hdkeychain package has also been
merged and moved to github.com/decred/dcrd/dcrutil/hdkeychain.
dcrd packages have been updated to use the new packages and the dep
files have been updated for this change.
This syncs the .gitignore file with the upstream btcd project since it
shouldn't have been completely changed to begin with. While here, it
also adds the Decred-specific binaries.
Use this new bloom package rather than relying on the bloom package
from the dcrutil repo.
Some minor source code changes have been made to conform to the dcrd
linter requirements.
This commit contains the entire dcrrpcclient repository along with
several changes needed to move all of the files into the rpcclient
directory in order to prepare it for merging. This does NOT update dcrd
or any of the other packages to use the new location as that will be
done separately.
- All import paths in the old dcrrpcclient files have been changed to
the new location
- All references to dcrrpcclient as the package name have been changed to
rpcclient