This change begins the work of bringing committed filters to the network consensus daemon. Committed filters are designed to enable light wallets without many of the privacy issues associated with server-side bloom filtering. The new gcs package provides the primitives for creating and matching against Golomb-coded sets (GCS) filters while the blockcf package provides creation of filters and filter entries for data structures found in blocks. The wire package has been updated to define a new protocol version and service flag for advertising CF support and includes types for the following new messages: cfheaders, cfilter, cftypes, getcfheaders, getcfilter, getcftypes. The peer package and server implementation have been updated to include support for the new protocol version and messages. Filters are created using a collision probability of 2^-20 and are saved to a new optional database index when running with committed filter support enabled (the default). At first startup, if support is not disabled, the index will be created and populated with filters and filter headers for all preexisting blocks, and new filters will be recorded for processed blocks. Multiple filter types are supported. The regular filter commits to output scripts and previous outpoints that any non-voting wallet will require access to. Scripts and previous outpoints that can only be spent by votes and revocations are not committed to the filter. The extended filter is a supplementary filter which commits to all transaction hashes and script data pushes from the input scripts of non-coinbase regular and ticket purchase transactions. Creating these filters is based on the algorithm defined by BIP0158 but is modified to only commit "regular" data in stake transactions to prevent committed filters from being used to create SPV voting wallets. |
||
|---|---|---|
| addrmgr | ||
| blockchain | ||
| bloom | ||
| certgen | ||
| chaincfg | ||
| cmd | ||
| connmgr | ||
| database | ||
| dcrec | ||
| dcrjson | ||
| dcrutil | ||
| docs | ||
| gcs | ||
| hdkeychain | ||
| limits | ||
| mempool | ||
| mining | ||
| peer | ||
| release | ||
| rpcclient | ||
| rpctest | ||
| sampleconfig | ||
| txscript | ||
| wire | ||
| .dockerignore | ||
| .gitignore | ||
| .travis.yml | ||
| blocklogger.go | ||
| blockmanager.go | ||
| CHANGES | ||
| config.go | ||
| cpuminer.go | ||
| dcrd.go | ||
| doc.go | ||
| Dockerfile-1.9 | ||
| Dockerfile-1.10 | ||
| Gopkg.lock | ||
| Gopkg.toml | ||
| ipc.go | ||
| LICENSE | ||
| log.go | ||
| mining_test.go | ||
| mining.go | ||
| miningerror.go | ||
| params.go | ||
| README.md | ||
| rpcserver_test.go | ||
| rpcserver.go | ||
| rpcserverhelp_test.go | ||
| rpcserverhelp.go | ||
| rpcwebsocket.go | ||
| run_tests.sh | ||
| server.go | ||
| service_windows.go | ||
| signal.go | ||
| signalsigterm.go | ||
| upnp.go | ||
| version.go | ||
dcrd
dcrd is a Decred full node implementation written in Go (golang).
This acts as a chain daemon for the Decred cryptocurrency. dcrd maintains the entire past transactional ledger of Decred and allows relaying of transactions to other Decred nodes across the world. To read more about Decred please see the project documentation.
Note: To send or receive funds and join Proof-of-Stake mining, you will also need dcrwallet.
This project is currently under active development and is in a Beta state. It is extremely stable and has been in production use since February 2016.
It is forked from btcd which is a bitcoin full node implementation written in Go. btcd is a ongoing project under active development. Because dcrd is constantly synced with btcd codebase, it will get the benefit of btcd's ongoing upgrades to peer and connection handling, database optimization and other blockchain related technology improvements.
Requirements
Go 1.9 or newer.
Getting Started
- dcrd (and utilities) will now be installed in either
$GOROOT/binor$GOPATH/bindepending on your configuration. If you did not already add the bin directory to your system path during Go installation, we recommend you do so now.
Updating
Windows
Install a newer MSI
Linux/BSD/MacOSX/POSIX - Build from Source
-
Dep
Dep is used to manage project dependencies and provide reproducible builds. To install:
go get -u github.com/golang/dep/cmd/dep
Unfortunately, the use of dep prevents a handy tool such as go get from
automatically downloading, building, and installing the source in a single
command. Instead, the latest project and dependency sources must be first
obtained manually with git and dep, and then go is used to build and
install the project.
Getting the source:
For a first time installation, the project and dependency sources can be
obtained manually with git and dep (create directories as needed):
git clone https://github.com/decred/dcrd $GOPATH/src/github.com/decred/dcrd
cd $GOPATH/src/github.com/decred/dcrd
dep ensure
go install . ./cmd/...
To update an existing source tree, pull the latest changes and install the matching dependencies:
cd $GOPATH/src/github.com/decred/dcrd
git pull
dep ensure
go install . ./cmd/...
For more information about Decred and how to set up your software please go to our docs page at docs.decred.org.
Docker
All tests and linters may be run in a docker container using the script
run_tests.sh. This script defaults to using the current supported version of
go. You can run it with the major version of Go you would like to use as the
only arguement to test a previous on a previous version of Go (generally Decred
supports the current version of Go and the previous one).
./run_tests.sh 1.9
To run the tests locally without docker:
./run_tests.sh local
Contact
If you have any further questions you can find us at:
- irc.freenode.net (channel #decred)
- webchat
- forum.decred.org
- decred.slack.com
Issue Tracker
The integrated github issue tracker is used for this project.
Documentation
The documentation is a work-in-progress. It is located in the docs folder.
License
dcrd is licensed under the copyfree ISC License.
