dash/doc
Wladimir J. van der Laan 0e8a4d54a4
Merge #21064: refactor: use std::shared_mutex & remove Boost Thread
060a2a64d40d75fecb60b7d2b9946a67e46aa6fc ci: remove boost thread installation (fanquake)
06e1d7d81d5a56d136c6fc88f09a2b0654a164f9 build: don't build or use Boost Thread (fanquake)
7097add83c8596f81be9edd66971ffd2486357eb refactor: replace Boost shared_mutex with std shared_mutex in sigcache (fanquake)
8e55981ef834490c438436719f95cbaf888c4914 refactor: replace Boost shared_mutex with std shared_mutex in cuckoocache tests (fanquake)

Pull request description:

  This replaces `boost::shared_mutex` and `boost::unique_lock` with [`std::shared_mutex`](https://en.cppreference.com/w/cpp/thread/shared_mutex) & [`std::unique_lock`](https://en.cppreference.com/w/cpp/thread/unique_lock).

  Even though [some concerns were raised](https://github.com/bitcoin/bitcoin/issues/16684#issuecomment-726214696) in #16684 with regard to `std::shared_mutex` being unsafe to use across some glibc versions, I still think this change is an improvement. As I mentioned in #21022, I also think trying to restrict standard library feature usage based on bugs in glibc is not only hard to do, but it's not currently clear exactly how we do that in practice (does it also extend to patching out use in our dependencies, should we be implementing more runtime checks for features we are using, when do we consider an affected glibc "old enough" not to worry about? etc). If you take a look through the [glibc bug tracker](https://sourceware.org/bugzilla/describecomponents.cgi?product=glibc) you'll no doubt find plenty of (active) bug reports for standard library code we already using. Obviously not to say we shouldn't try and avoid buggy code where possible.

  Two other points:

  [Cory mentioned in #21022](https://github.com/bitcoin/bitcoin/pull/21022#issuecomment-769274179):
  > It also seems reasonable to me to worry that boost hits the same underlying glibc bug, and we've just not happened to trigger the right conditions yet.

  Moving away from Boost to the standard library also removes the potential for differences related to Boosts configuration. Boost has multiple versions of `shared_mutex`, and what you end up using, and what it's backed by depends on:
  * The version of Boost.
  * The platform you're building for.
  * Which version of `BOOST_THREAD_VERSION` is defined: (2,3,4 or 5) default=2. (see [here](https://www.boost.org/doc/libs/1_70_0/doc/html/thread/build.html#thread.build.configuration) for some of the differences).
  * Is `BOOST_THREAD_V2_SHARED_MUTEX` defined? (not by default). If so, you might get the ["less performant, but more robust"](https://github.com/boostorg/thread/issues/230#issuecomment-475937761) version of `shared_mutex`.

  A lot of these factors are eliminated by our use of depends, but users will have varying configurations. It's also not inconceivable to think that a distro, or some package manager might start defining something like `BOOST_THREAD_VERSION=3`. Boost tried to change the default from 2 to 3 at one point.

  With this change, we no longer use Boost Thread, so this PR also removes it from depends, the build system, CI etc.

  Previous similar PRs were #19183 & #20922. The authors are included in the commits here.
  Also related to #21022 - pthread sanity checking.

ACKs for top commit:
  laanwj:
    Code review ACK 060a2a64d40d75fecb60b7d2b9946a67e46aa6fc
  vasild:
    ACK 060a2a64d40d75fecb60b7d2b9946a67e46aa6fc

Tree-SHA512: 572d14d8c9de20bc434511f20d3f431836393ff915b2fe9de5a47a02dca76805ad5c3fc4cceecb4cd43f3ba939a0508178c4e60e62abdbaaa6b3e8db20b75b03
2024-01-16 09:29:52 -06:00
..
man docs: update man pages (#5672) 2023-11-07 08:04:39 -06:00
release-notes/dash docs: release notes for 20.0.4 and archiving old one 2024-01-12 00:48:31 +07:00
.gitignore
assets-attribution.md
benchmarking.md
bips.md Merge #17111: doc: update bips.md with buried BIP9 deployments 2023-12-06 11:40:14 -06:00
bitcoin_logo_doxygen.png
build-freebsd.md Merge bitcoin/bitcoin#24646: doc: remove unneeded documentation on basic package management on FreeBSD 2024-01-01 17:48:18 -06:00
build-netbsd.md Merge bitcoin/bitcoin#25166: doc: Add link to NetBSD release 2024-01-14 11:05:37 -06:00
build-openbsd.md Merge #19903: Update build-openbsd.md with GUI support 2024-01-10 19:22:58 -06:00
build-osx.md Merge #20890: doc: Add explicit macdeployqtplus dependencies install step 2024-01-16 07:57:34 -06:00
build-unix.md Merge #21064: refactor: use std::shared_mutex & remove Boost Thread 2024-01-16 09:29:52 -06:00
build-windows.md Merge #21342: doc: Remove outdated comment 2023-08-28 11:24:41 -05:00
dash-conf.md
dependencies.md Merge bitcoin/bitcoin#28561: build: Update qt package up to 5.15.10 2023-12-07 09:14:57 -06:00
descriptors.md
developer-notes.md Merge bitcoin/bitcoin#24808: doc: update RPC argument and field naming guideline in developer notes 2024-01-02 11:17:47 -06:00
dnsseed-policy.md
Doxyfile.in
files.md merge bitcoin#22570: Ignore banlist.dat 2023-09-24 09:50:50 -05:00
fuzzing.md Merge #20380: doc: Add instructions on how to fuzz the P2P layer using Honggfuzz NetDriver 2024-01-16 09:29:51 -06:00
guix.md
i2p.md docs: update tor and i2p docs (#5673) 2023-11-06 09:23:20 -06:00
init.md
instantsend.md
JSON-RPC-interface.md merge bitcoin#19762: Allow named and positional arguments to be used together 2023-07-28 00:18:27 -05:00
managing-wallets.md Merge bitcoin/bitcoin#22523: Document about wallet backup and restoration 2023-12-11 15:48:44 -06:00
masternode-budget.md
productivity.md
psbt.md
README_doxygen.md
README_windows.txt
README.md Merge bitcoin/bitcoin#22739: doc: link to managing-wallets from docs README 2023-12-11 15:48:44 -06:00
reduce-memory.md
reduce-traffic.md
release-notes-5342.md docs: add release notes for 5342 (#5568) 2023-09-09 12:26:36 -05:00
release-notes-5493.md docs: Added release notes for #5493 (#5556) 2023-09-07 12:06:28 -05:00
release-notes-5742.md feat(rpc): gettxchainlocks should return mempool=false when tx not in mempool (#5742) 2023-12-24 11:58:14 -06:00
release-notes-5765.md feat(rpc): submit chainlock signature if needed RPC (#5765) 2023-12-18 22:27:19 -06:00
release-notes-5774.md docs: archive v20.0.2 release notes and create v20.0.3 release notes 2023-12-24 12:04:42 -06:00
release-notes-5775.md chore: do not include dash-qt in the docker images (#5775) 2023-12-21 21:59:01 -06:00
release-notes-5776.md feat(rpc): Asset Unlock status by index (#5776) 2023-12-22 14:27:00 -06:00
release-notes-15367.md Merge #15367: feature: Added ability for users to add a startup command 2023-12-06 12:33:15 -06:00
release-notes-16525.md Merge #16525: Dump transaction version as an unsigned integer in RPC/TxToUniv 2023-12-06 12:33:15 -06:00
release-notes-18309.md Merge #18309: zmq: Add support to listen on multiple interfaces 2023-12-06 12:33:15 -06:00
release-notes-18982.md Merge #18982: wallet: Minimal fix to restore conflicted transaction notifications 2024-01-10 12:07:53 -06:00
release-notes-19725.md (Partial) Merge #19725: [RPC] Add connection type to getpeerinfo, improve logs 2024-01-09 08:15:36 -06:00
release-notes-22407.md Merge bitcoin/bitcoin#22407: rpc: Return block time in getblockchaininfo 2023-12-03 20:13:09 -06:00
release-notes-26896.md Merge bitcoin/bitcoin#26896: build: Remove port-forwarding runtime setting options from configure 2023-12-03 20:01:26 -06:00
release-notes-bitcoin-17219.md Merge bitcoin#19115: doc: Add release notes for 17219 2024-01-09 08:13:05 -06:00
release-notes.md docs: release notes for 20.0.4 and archiving old one 2024-01-12 00:48:31 +07:00
release-process.md feat: Set client version for non-release binaries and version in guix based on git tags (#5653) 2024-01-11 21:43:42 -06:00
REST-interface.md Merge #20944: rpc: Return total fee in getmempoolinfo 2024-01-16 09:29:49 -06:00
shared-libraries.md Merge #20577: doc: libconsensus: add missing error code description, fix NBitcoin link 2024-01-16 07:57:33 -06:00
tor.md docs: update tor and i2p docs (#5673) 2023-11-06 09:23:20 -06:00
translation_process.md
translation_strings_policy.md
zmq.md Merge #18309: zmq: Add support to listen on multiple interfaces 2023-12-06 12:33:15 -06:00

Dash Core

This is the official reference wallet for Dash digital currency and comprises the backbone of the Dash peer-to-peer network. You can download Dash Core or build it yourself using the guides below.

Running

The following are some helpful notes on how to run Dash Core on your native platform.

Unix

Unpack the files into a directory and run:

  • bin/dash-qt (GUI) or
  • bin/dashd (headless)

Windows

Unpack the files into a directory, and then run dash-qt.exe.

macOS

Drag Dash Core to your applications folder, and then run Dash Core.

Need Help?

Building

The following are developer notes on how to build Dash Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.

Development

The Dash Core repo's root README contains relevant information on the development process and automated testing.

Resources

Miscellaneous

License

Distributed under the MIT software license.