Go to file
Dave Collins 1955bb1bf1
multi: Abstract standard verification flags.
This modifies the way standard verification flags are handled so that it
is possible to selectively enable them based on the result of agenda
votes.

First, it moves the StandardVerifyFlags constant from the txscript
package to the mempool/policy code and rename it to
BaseStandardVerifyFlags.  As the TODO in the comment of the moved
constant indicated, these flags are policy related and thus really
belong in policy.  Ideally there would be a completely separate policy
package, but since the policy code currently lives in mempool/policy.go,
the constant has been moved there.

Next, it introduces a new function named standardScriptVerifyFlags,
which accepts the chain as an argument and, for now, just returns the
BaseStandardVerifyFlags along with a nil error.  This will allow
additional flags to be selectively enabled depending on the result of an
agenda vote.

Finally, it updates the mempool policy struct to require a closure for
obtaining the flags so it can remain decoupled from the chain which in
turn allows easier and more robust unit testing of mempool functionality
since it allows a mocks to be used.
2017-09-15 12:58:21 -05:00
addrmgr multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
blockchain chaincfg: Introduce agenda for v5 lnfeatures vote. 2017-09-13 17:38:46 -05:00
chaincfg chaincfg: Introduce agenda for v5 lnfeatures vote. 2017-09-13 17:38:46 -05:00
cmd multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
connmgr multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
database multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
dcrec dcrec: remove testify dependency. 2017-08-30 22:11:21 +00:00
dcrjson dcrjson: add unconfirmed field. (#812) 2017-08-15 14:07:31 -05:00
docs docs: crosscheck and update all rpc doc entries. 2017-09-11 01:46:49 -05:00
limits blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
mempool multi: Abstract standard verification flags. 2017-09-15 12:58:21 -05:00
mining multi: Update markdown in README files to match change in github parser. 2017-05-26 12:06:19 -04:00
peer multi: Optimize by removing defers 2017-08-02 10:35:21 -05:00
release Add example service files. 2017-03-23 02:07:08 -05:00
rpctest rpctest: Store logs and data in same path. 2017-08-04 02:18:58 -05:00
sampleconfig extend --profile cmd line option to allow interface to be specified 2017-09-09 15:26:37 +10:00
txscript multi: Abstract standard verification flags. 2017-09-15 12:58:21 -05:00
wire txscript: Implement CheckSequenceVerify 2017-08-28 12:23:34 -05:00
.dockerignore Run testing and linting in a Dockerfile. 2017-05-30 11:39:19 -04:00
.gitignore Add new tool, promptsecret (#649) 2017-03-31 14:00:18 -04:00
.travis.yml Test against Go 1.9 and drop 1.7. (#836) 2017-08-28 16:40:37 -04:00
blocklogger.go Remove STransactions from transactions listing, update order (tickets, votes, revokes) 2017-08-15 14:32:53 -05:00
blockmanager.go blockmanager: remove unused logBlockHeight 2017-08-03 15:37:26 -04:00
CHANGES Apply various upstream comment fixes. 2016-05-27 00:35:06 -05:00
config.go extend --profile cmd line option to allow interface to be specified 2017-09-09 15:26:37 +10:00
cpuminer.go multi: Error descriptions are in lower case. 2017-09-08 18:03:59 +02:00
dcrd.go extend --profile cmd line option to allow interface to be specified 2017-09-09 15:26:37 +10:00
doc.go extend --profile cmd line option to allow interface to be specified 2017-09-09 15:26:37 +10:00
glide.lock glide: use jessevdk/go-flags for consistency. 2017-08-30 19:08:18 -05:00
glide.yaml glide: use jessevdk/go-flags for consistency. 2017-08-30 19:08:18 -05:00
ipc.go remove deadcode 2017-07-17 15:06:47 -05:00
LICENSE license: add title 2016-11-18 12:36:40 -06:00
log.go Update deps to pull in additional logging changes. 2017-06-28 14:58:20 -04:00
mining_test.go mining_test: add edge conditions from btcd. 2017-08-31 00:28:36 -05:00
mining.go multi: Abstract standard verification flags. 2017-09-15 12:58:21 -05:00
miningerror.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
params.go Remove variables for testnet v1. 2017-03-16 20:19:07 -04:00
README.md Move Dockerfiles to decred/dcrdocker repo. 2017-07-03 00:28:39 -05:00
rpcserver_test.go rpctest: Gate rpctest-based behind a build tag. 2017-07-26 12:43:26 -05:00
rpcserver.go rpcserver: return rule error on rejected raw tx 2017-09-14 11:33:29 -05:00
rpcserverhelp_test.go blockchain: Rework to use new db interface. 2016-08-18 15:42:18 -04:00
rpcserverhelp.go rpcserverhelp: update TicketFeeInfo help. 2017-08-06 23:16:29 +00:00
rpcwebsocket.go multi: Optimize by removing defers 2017-08-02 10:35:21 -05:00
run_tests.sh Ensure run_tests.sh local fails correctly when gometalinter errors. 2017-09-10 22:41:19 +10:00
server.go multi: Abstract standard verification flags. 2017-09-15 12:58:21 -05:00
service_windows.go dcrd: Simplify shutdown signal handling logic sync. 2016-11-18 12:06:55 -06: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
version.go Bump for v1.0.8 (#832) 2017-08-24 16:15:38 -05: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.7 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

  • Glide

    Glide is used to manage project dependencies and provide reproducible builds. To install:

    go get -u github.com/Masterminds/glide

Unfortunately, the use of glide 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 glide, 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 glide (create directories as needed):

git clone https://github.com/decred/dcrd $GOPATH/src/github.com/decred/dcrd
cd $GOPATH/src/github.com/decred/dcrd
glide install
go install $(glide nv)

To update an existing source tree, pull the latest changes and install the matching dependencies:

cd $GOPATH/src/github.com/decred/dcrd
git pull
glide install
go install $(glide nv)

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.7

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.