Dash - Reinventing Cryptocurrency
Go to file
Wladimir J. van der Laan dbd4993084 Merge #10758: Fix some chainstate-init-order bugs.
c0025d0 Fix segfault when shutting down before fully loading (Matt Corallo)
1385697 Order chainstate init more logically. (Matt Corallo)
ff3a219 Call RewindBlockIndex even if we're about to run -reindex-chainstate (Matt Corallo)
b0f3249 More user-friendly error message if UTXO DB runs ahead of block DB (Matt Corallo)
eda888e Fix some LoadChainTip-related init-order bugs. (Matt Corallo)

Pull request description:

  This does a number of things to clean up chainstate init order,
  fixing some issues as it goes:

  * Order chainstate init more logically - first all of the
    blocktree-related loading, then coinsdb, then
    pcoinsTip/chainActive. Only create objects as needed.

  * More clearly document exactly what is and isn't called in
    -reindex and -reindex-chainstate both with comments noting
    calls as no-ops and by adding if guards.

  * Move the writing of fTxIndex to LoadBlockIndex - this fixes a
    bug introduced in d6af06d68a where
    InitBlockIndex was writing to fTxIndex which had not yet been
    checked (because LoadChainTip hadn't yet initialized the
    chainActive, which would otherwise have resulted in
    InitBlockIndex being a NOP), allowing you to modify -txindex
    without reindex, potentially corrupting your chainstate!

  * Rename InitBlockIndex to LoadGenesisBlock, which is now a more
    natural name for it. Also check mapBlockIndex instead of
    chainActive, fixing a bug where we'd write the genesis block out
    on every start.

  * Move LoadGenesisBlock further down in init. This is a more logical
    location for it, as it is after all of the blockindex-related
    loading and checking, but before any of the UTXO-related loading
    and checking.

  * Give LoadChainTip a return value - allowing it to indicate that
    the UTXO DB ran ahead of the block DB. This just provides a nicer
    error message instead of the previous mysterious
    assert(!setBlockIndexCandidates.empty()) error.

  * Calls ActivateBestChain in case we just loaded the genesis
    block in LoadChainTip, avoiding relying on the ActivateBestChain
    in ThreadImport before continuing init process.

  * Move all of the VerifyDB()-related stuff into a -reindex +
    -reindex-chainstate if guard. It couldn't do anything useful
    as chainActive.Tip() would be null at this point anyway.

Tree-SHA512: 3c96ee7ed44f4130bee3479a40c5cd99a619fda5e309c26d60b54feab9f6ec60fabab8cf47a049c9cf15e88999b2edb7f16cbe6819e97273560b201a89d90762
2019-09-18 17:31:02 -05:00
.github Add link to bugcrowd in issue template (#2716) 2019-02-19 13:05:59 +03:00
.tx
build-aux/m4 Merge #10803: Explicitly search for bdb5.3. 2019-07-24 11:59:09 -05:00
ci adjust build_src.sh 10189 2019-06-19 12:44:42 -05:00
contrib Few fixes in docs/comments (#3068) 2019-08-28 10:54:19 +03:00
depends Merge #10628: [depends] expat 2.2.1 2019-07-11 10:34:46 -05:00
doc Merge pull request #3072 from PastaPastaPasta/backport-fuzzing 2019-08-28 14:52:29 +03:00
docker Automatically build and push docker image to docker.io/dashpay/dashd-develop (#1809) 2018-01-10 12:17:43 +03:00
share Update/modernize macOS plist (#3074) 2019-09-03 22:48:14 +03:00
src Merge #10758: Fix some chainstate-init-order bugs. 2019-09-18 17:31:02 -05:00
test Masternodes should have no wallet enabled (#3084) 2019-09-15 23:08:21 +03:00
.gitattributes
.gitignore bitcoin -> dash 2019-08-24 11:11:25 -05:00
.travis.yml Fix 2 common Travis failures which happen when Travis has network issues (#3003) 2019-06-27 23:25:30 +03:00
autogen.sh Merge #8784: Copyright headers for build scripts 2018-01-12 08:02:45 +01:00
CMakeLists.txt Enable stacktrace support in gitian builds (#3006) 2019-07-02 07:16:11 +03:00
configure.ac Bump version to 0.14.0.3 and copy release notes (#3053) 2019-08-12 20:08:33 +02:00
CONTRIBUTING.md Merge #11003: Docs: Capitalize bullet points in CONTRIBUTING guide 2019-08-12 09:07:03 -05:00
COPYING update copyright (#2648) 2019-01-29 15:53:14 +01:00
INSTALL.md Dashify INSTALL.md and build-unix.md 2018-01-12 16:12:54 +01:00
Jenkinsfile Perform Jenkins builds in /dash-src all the time to fix caching issues (#2242) 2018-08-29 13:03:18 +03:00
Jenkinsfile.gitian Let ccache compress the cache by itself instead of compressing ccache.tar (#2456) 2018-11-19 07:31:13 +01:00
libdashconsensus.pc.in
Makefile.am Merge #10565: [coverage] Remove subtrees and benchmarks from coverage report 2019-07-11 10:34:46 -05:00
README.md Merge bitcoin#9956: Reorganise qa directory (#2912) 2019-05-19 23:20:34 +03:00

Dash Core staging tree 0.14.1

master: Build Status develop: Build Status

https://www.dash.org

What is Dash?

Dash is an experimental digital currency that enables anonymous, instant payments to anyone, anywhere in the world. Dash uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Dash Core is the name of the open source software which enables the use of this currency.

For more information, as well as an immediately useable, binary version of the Dash Core software, see https://www.dash.org/get-dash/.

License

Dash Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.

Development Process

The master branch is meant to be stable. Development is normally done in separate branches. Tags are created to indicate new official, stable release versions of Dash Core.

The contribution workflow is described in CONTRIBUTING.md.

Testing

Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.

Automated Testing

Developers are strongly encouraged to write unit tests for new code, and to submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: make check. Further details on running and extending unit tests can be found in /src/test/README.md.

There are also regression and integration tests, written in Python, that are run automatically on the build server. These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py

The Travis CI system makes sure that every pull request is built for Windows, Linux, and OS X, and that unit/sanity tests are run automatically.

Manual Quality Assurance (QA) Testing

Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.

Translations

Changes to translations as well as new translations can be submitted to Dash Core's Transifex page.

Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.

Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.

Translators should also follow the forum.