Go to file
Dave Collins 5db19ddcab
multi: Include additional fields on RPC tx results.
This modifies the results provided by the getrawtransaction and
searchrawtransactions RPCs to make them consistent with each other.

In particular, it adds the transaction expiry, block height, and block
index fields to the searchrawtransactions result and ensures that both
omit the block height when it is zero so that it is not included in the
results for mempool transactions.

Since populating the block index requires additional details to be
stored to the transaction index to efficiently provide, only the
infrastructure is added and the value is left as the default for now,
which means it will be omitted and therefore not change the visible
behavior.

Finally, it also updates the RPC server help to provide consistent
descriptions for the fields and also updates the JSON-RPC documentation.
2018-09-10 09:18:01 -05:00
addrmgr build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
blockchain indexers: Use testable bucket for existsaddrindex. 2018-09-10 08:51:13 -05:00
certgen multi: Make changes suggested by Go 1.11 gofmt -s. 2018-08-23 12:52:07 -05:00
chaincfg build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
cmd limits: Make limits package internal. 2018-09-06 15:19:25 -05:00
connmgr build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
database build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
dcrec dcrec: Make function defs more consistent. 2018-08-31 11:38:02 -05:00
dcrjson multi: Include additional fields on RPC tx results. 2018-09-10 09:18:01 -05:00
dcrutil build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
docs multi: Include additional fields on RPC tx results. 2018-09-10 09:18:01 -05:00
gcs build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
hdkeychain build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
internal limits: Make limits package internal. 2018-09-06 15:19:25 -05:00
mempool mempool: tweak trace logs 2018-08-28 16:07:00 -03:00
mining build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
peer peer: Protect handlePongMsg with p.statsMtx 2018-09-06 14:48:29 -04:00
release Add example service files. 2017-03-23 02:07:08 -05:00
rpcclient build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
rpctest multi: Reset testnet and bump to version 3. 2018-08-08 08:09:32 -05:00
sampleconfig docs: Correct blockmaxsize and blockprioritysize. 2018-07-07 00:15:45 -05:00
txscript build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
wire multi: Make changes suggested by Go 1.11 gofmt -s. 2018-08-23 12:52:07 -05:00
.dockerignore docker: Add dockerfiles for running dcrd nodes. 2018-07-07 05:33:53 -05:00
.gitignore Improve gitignore. 2017-10-11 14:52:00 -05:00
.travis.yml multi: Make use of new internal version package. 2018-09-04 17:34:31 -05:00
blocklogger.go multi: Replace btclog with slog. 2018-05-23 14:22:10 -05:00
blockmanager.go blockmanager: handle txs in invalid blocks 2018-08-31 06:17:21 -05:00
CHANGES multi: Properly capitalize Decred. 2018-03-01 17:41:35 -06:00
config.go multi: Make use of new internal version package. 2018-09-04 17:34:31 -05:00
cpuminer.go cpuminer: Use header for extra nonce. 2018-03-05 12:59:32 -06:00
dcrd.go limits: Make limits package internal. 2018-09-06 15:19:25 -05:00
doc.go docs: Correct blockmaxsize and blockprioritysize. 2018-07-07 00:15:45 -05:00
Dockerfile docker: Add dockerfiles for running dcrd nodes. 2018-07-07 05:33:53 -05:00
Dockerfile.alpine docker: Add dockerfiles for running dcrd nodes. 2018-07-07 05:33:53 -05:00
go.mod release: Bump for 1.4 release cycle. 2018-08-21 13:55:03 -05:00
go.sum build: Tidy module sums (go mod tidy). 2018-08-16 20:03:27 -05:00
Gopkg.lock gcs: use dchest/siphash 2018-08-14 17:13:22 -04:00
Gopkg.toml gcs: use dchest/siphash 2018-08-14 17:13:22 -04:00
ipc.go travis: add ineffassign linter 2017-12-01 09:14:04 -05:00
LICENSE multi: Add initial committed filter (CF) support 2018-03-30 13:52:12 -04:00
log.go multi: Replace btclog with slog. 2018-05-23 14:22:10 -05:00
mining_test.go mining_test: add edge conditions from btcd. 2017-08-31 00:28:36 -05:00
mining.go blockchain: Combine block by hash functions. 2018-07-02 14:25:30 -05:00
miningerror.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
networkparams_test.go multi: Remove testnet version 2 defs and refs. 2018-08-08 08:10:22 -05:00
params.go multi: Remove testnet version 2 defs and refs. 2018-08-08 08:10:22 -05:00
README.md docker: Add dockerfiles for running dcrd nodes. 2018-07-07 05:33:53 -05:00
rpcserver_test.go rpctest: Gate rpctest-based behind a build tag. 2017-07-26 12:43:26 -05:00
rpcserver.go multi: Include additional fields on RPC tx results. 2018-09-10 09:18:01 -05:00
rpcserverhelp_test.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
rpcserverhelp.go multi: Include additional fields on RPC tx results. 2018-09-10 09:18:01 -05:00
rpcwebsocket.go rpc: Use upstream gorilla/websocket. 2018-05-23 19:35:36 -05:00
run_tests.sh TravisCI: Update for Go1.11 and module builds. 2018-08-23 12:52:07 -05:00
server.go multi: Make use of new internal version package. 2018-09-04 17:34:31 -05:00
service_windows.go multi: Make use of new internal version package. 2018-09-04 17:34:31 -05:00
signal.go dcrd: Simplify shutdown signal handling logic sync. 2016-11-18 12:06:55 -06:00
signalsigterm.go Add pipes for parent process IPC. (#311) 2016-08-31 10:45:16 -04:00
upnp.go multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00

dcrd

Build Status ISC License GoDoc

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/bin or $GOPATH/bin depending 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

Running dcrd

You can run a decred node from inside a docker container. To build the image yourself, use the following command:

docker build -t decred/dcrd .

Or you can create an alpine based image (requires Docker 17.05 or higher):

docker build -t decred/dcrd:alpine -f Dockerfile.alpine .

You can then run the image using:

docker run decred/dcrd

You may wish to use an external volume to customise your config and persist the data in an external volume:

docker run --rm -v /home/user/dcrdata:/root/.dcrd/data decred/dcrd

For a minimal image, you can use the decred/dcrd:alpine tag. This is typically a more secure option while also being a much smaller image.

You can run dcrctl from inside the image. For example, run an image (mounting your data from externally) with:

docker run --rm -ti --name=dcrd-1 -v /home/user/.dcrd:/root/.dcrd \
  decred/dcrd:alpine

And then run dcrctl commands against it. For example:

docker exec -ti dcrd-1 dcrctl getbestblock

Running Tests

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.