dash/doc
pasta 251f16b82b
Merge #6267: feat(stats): split off transmission to RawSender, implement batching and queueing support, add streamlined prefix and suffix support
cc1a75ab3a docs: add release notes (Kittywhiskers Van Gogh)
39625f16f0 stats: drop copyright notice from `stats/client.cpp` (Kittywhiskers Van Gogh)
18a2e48eb9 stats: rename `statsns` to clearer `statsprefix` (Kittywhiskers Van Gogh)
42918c2cdc stats: rename `statshostname` to more appropriate `statssuffix` (Kittywhiskers Van Gogh)
f3a4844b0a stats: implicitly treat stats as enabled if `statshost` is specified (Kittywhiskers Van Gogh)
69603a83fa stats: miscellaneous changes and housekeeping (Kittywhiskers Van Gogh)
3e12ac0e09 stats: deduplicate `send` and `sendDouble` logic (Kittywhiskers Van Gogh)
bf44fc3bf6 feat(stats): introduce support for batching messages (Kittywhiskers Van Gogh)
38b1643fe6 feat(stats): introduce support for queuing messages (Kittywhiskers Van Gogh)
fc4a736e2a stats: move message sending logic to `RawSender` (Kittywhiskers Van Gogh)
92690685be stats: move `statsd_client` to `stats` directory (Kittywhiskers Van Gogh)
f782dfd562 stats: remove double indentation in header file (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  This pull request achieves the goal originally set out in [dash#5167](https://github.com/dashpay/dash/pull/5167), to migrate the base of our Statsd client implementation to one that is actively maintained. Statoshi ([source](54c3ffdcf0/src/statsd_client.cpp)) utilizes [talebook/statsd-client-cpp](https://github.com/talebook/statsd-client-cpp), which in turn is inherited by Dash.

  As Statsd is the only cross-platform reporting mechanism available (USDT requires a Linux host with superuser privileges and RPCs don't provide as much flexibility as desired), emphasis is placed on using Statsd as the primary way for the Dash daemon to report metrics related to node and network health.

  As part of maintaining our Statsd client, this PR aims to migrate the base of our implementation to [vthiery/cpp-statsd-client](https://github.com/vthiery/cpp-statsd-client), a streamlined implementation that embraces C++11 with a thread-safe implementation of queueing and batching, which reduces the number of packets used to transmit stats.

  These capabilities are optional and users can opt not to use them by setting `-statsduration=0` to disable queueing (which will also disable batching) or `-statsbatchsize=0`, which will disable batching (but will not disable queueing unless requested explicitly).

  ## Additional Information

  * Dependent on https://github.com/dashpay/dash/pull/5167
  * `RawSender` (and by extension, `RawMessage`) strive to remain as unopinionated as possible, moving the responsibility to construct valid Statsd messages onto `StatsdClient`. This is to ensure that  `RawSender` can be reused down the line or independently extended without impacting the Statsd client.
    * `RawMessage` exists to provide extensions to `std::vector<uint8_t>` that make it easier to abstract away strings while also implementing some of its semantics like `append()` (and its alias, `+=`).
  * `InitStatsClient()` was introduced to keep `StatsdClient` indifferent to _how_ arguments are obtained and sanitized before they're supplied to the constructor. This is to keep it indifferent to all the backwards-compatibility code for deprecated arguments still work.
  * When constructing the Statsd message, we can use `%f` without having to specify a precision as tinyformat automatically assumes a precision of 6 ([source](17110f50b3/src/tinyformat.h (L673))) and problems don't seem to be observed when using `%f` with integers ([source](https://github.com/dashpay/dash/pull/6267#issuecomment-2345592051)).
    * As a guardrail, there is a `static_assert` to ensure that a specialization of `send()` involving a non-arithmetic type will raise alarm when compiling ([source](a0ce720207/src/stats/client.cpp (L145))).

  ## Breaking changes

  * `-statsenabled` (replaced with specifying `-statshost`), `-statshostname` (replaced by `-statssuffix`) and `-statsns` (replaced by `-statsprefix`) have been deprecated and will be removed in a future release.

  ## Checklist:

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK cc1a75ab3a
  UdjinM6:
    utACK cc1a75ab3a

Tree-SHA512: b038419f2b6d807dac40a04d23c5046fbaa95beedb88f5a9e4c06a7042c2f5da7e01c72c4a2744bce10878cafc747136d6599dcd86ae1be0782ad4194d5b7bec
2024-10-04 14:07:13 -05:00
..
man Merge #6179: chore: update manpages v21.1 2024-08-07 18:53:08 +07:00
release-notes/dash docs: add v21.1.0 release notes and archive v21.0.2 2024-08-07 19:06:56 +07:00
.gitignore Merge #10166: Ignore Doxyfile generated from Doxyfile.in template. 2019-05-19 20:43:00 -05:00
assets-attribution.md
assumeutxo.md merge bitcoin#23154: add assumeutxo notes 2024-07-23 17:45:24 +00:00
benchmarking.md Merge bitcoin/bitcoin#22292: bench, doc: benchmarking updates and fixups 2024-05-15 03:03:18 +07:00
bips.md Merge #20119: BIP155 follow-ups 2024-01-22 19:47:13 -06:00
bitcoin_logo_doxygen.png
build-freebsd.md Merge bitcoin/bitcoin#21942: docs: improve make with parallel jobs description. 2024-08-05 17:51:09 +07:00
build-netbsd.md Merge bitcoin/bitcoin#21942: docs: improve make with parallel jobs description. 2024-08-05 17:51:09 +07:00
build-openbsd.md Merge bitcoin/bitcoin#21942: docs: improve make with parallel jobs description. 2024-08-05 17:51:09 +07:00
build-osx.md Merge bitcoin/bitcoin#21988: doc: note that brew installed qt is not supported 2024-08-05 17:51:09 +07:00
build-unix.md merge bitcoin#28110: correct Fedora systemtap dep 2024-09-04 18:46:14 +00:00
build-windows.md merge bitcoin#22093: Try posix-specific CXX first for mingw32 host 2024-06-25 13:39:57 +00:00
cjdns.md merge bitcoin#24555: create initial doc/cjdns.md for CJDNS how-to documentation 2024-05-29 18:07:45 +00:00
dash-conf.md Merge bitcoin/bitcoin#25883: doc: Security config warning 2024-02-29 09:35:00 -06:00
dependencies.md merge bitcoin#26945: systemtap 4.8 2024-09-04 18:46:14 +00:00
descriptors.md Merge bitcoin/bitcoin#25925: doc: add {import,list}descriptors to list of descriptor RPCs 2024-06-08 20:59:36 -05:00
developer-notes.md Merge bitcoin/bitcoin#23001: doc: Enable TLS in links in documentation 2024-09-12 20:24:08 +05:30
dnsseed-policy.md Update dnsseed-policy.md (#2751) 2019-03-08 21:21:20 +03:00
Doxyfile.in Merge #15382: util: add RunCommandParseJSON 2024-02-01 09:22:03 -06:00
files.md Merge bitcoin/bitcoin#21912: doc: Remove mention of priority estimation 2024-08-05 17:51:09 +07:00
fuzzing.md Merge bitcoin/bitcoin#21856: doc: add OSS-Fuzz section to fuzzing.md doc 2024-09-25 22:53:41 +07:00
guix.md Merge #20619: guix: Quality of life improvements 2023-03-26 16:50:26 -05:00
i2p.md merge bitcoin#24555: create initial doc/cjdns.md for CJDNS how-to documentation 2024-05-29 18:07:45 +00:00
init.md Merge #21075: doc: Fix markdown formatting 2024-04-11 02:25:05 +07:00
instantsend.md Report instantlock: true for transactions locked via ChainLocks (#2877) 2019-04-25 18:38:26 +03:00
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
multiprocess.md Merge bitcoin/bitcoin#19160: multiprocess: Add basic spawn and IPC support 2024-07-27 13:04:24 +07:00
productivity.md Merge bitcoin/bitcoin#25359: doc: add distcc to productivity notes 2024-02-22 20:58:44 -06:00
psbt.md Merge #16047: doc: analyzepsbt description in doc/psbt.md 2023-02-10 23:34:57 +03:00
README_doxygen.md Merge #16912: doc: Remove Doxygen intro from src/bitcoind.cpp 2021-11-25 06:38:14 +05:30
README_windows.txt Merge #10155: build: Deduplicate version numbers 2019-06-14 01:25:59 -05:00
README.md merge bitcoin#23154: add assumeutxo notes 2024-07-23 17:45:24 +00:00
reduce-memory.md Merge bitcoin/bitcoin#21709: doc: update reduce-memory.md and bitcoin.conf -maxconnections info 2022-04-05 23:10:05 -05:00
reduce-traffic.md merge bitcoin#19191: Extract download permission from noban 2023-06-05 10:11:03 -05:00
release-notes-154.md Merge bitcoin-core/gui#154: qt: Support macOS Dark mode 2024-07-23 13:08:40 +07:00
release-notes-6093.md feat: introduce coinjoinsalt RPC to allow manipulating per-wallet salt 2024-07-20 05:09:25 +00:00
release-notes-6107.md rpc: disallow coinjoin stop if there's no CoinJoin session to stop 2024-07-11 16:16:41 +00:00
release-notes-6108.md rpc: remove keypool replenishment stat and warning for descriptor wallet 2024-07-11 11:27:40 +00:00
release-notes-6147.md docs: add release notes for 6147 2024-07-31 13:19:54 -05:00
release-notes-6148.md feat: broadcast dsq messages using the inventory system 2024-09-10 09:23:22 -05:00
release-notes-6189.md Merge bitcoin/bitcoin#22818: test: Activate all regtest softforks at height 1, unless overridden 2024-08-14 16:58:46 +07:00
release-notes-6209.md chore: deprecate a setting platform-user in favour of whitelist 2024-09-26 14:01:44 +07:00
release-notes-6229.md docs: add partial release notes 2024-09-04 22:33:34 +03:00
release-notes-6239.md doc: drop trailing whitespace 2024-09-11 08:15:08 -05:00
release-notes-6247.md feat: drop deprecated protx_*_hpmn RPC entry points in favor of protx_*_evo 2024-09-26 14:06:08 +07:00
release-notes-6267.md docs: add release notes 2024-10-04 08:48:30 +00:00
release-notes-6281.md chore: bump MIN_PEER_PROTO_VERSION to 70216 2024-09-24 14:04:38 +00:00
release-notes-21141.md docs: release notes for bitcoin#21141 - walletnotify %h %b 2024-07-20 00:05:26 +07:00
release-notes-24806.md docs: add release notes for 24806 2024-07-24 18:22:14 -05:00
release-notes.md docs: add v21.1.0 release notes and archive v21.0.2 2024-08-07 19:06:56 +07:00
release-process.md docs: update release process for generating seeds: new PR as a reference 2024-03-03 23:34:35 -06:00
REST-interface.md merge bitcoin#20286: deprecate addresses and reqSigs from rpc outputs 2024-06-27 19:27:37 +00: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 Merge bitcoin/bitcoin#22172: doc: update tor.md, release notes with removal of tor v2 support 2024-09-25 22:53:41 +07:00
tracing.md merge bitcoin#23907: utxocache tracepoints follow up 2024-09-04 18:46:14 +00:00
translation_process.md Merge #21695: Remove no longer used contrib/bitcoin-qt.pro from the repo 2024-04-16 09:20:31 -05:00
translation_strings_policy.md Merge #16224: gui: Bilingual GUI error messages 2022-04-07 10:41:24 -05:00
zmq.md merge bitcoin#23471: Improve ZMQ documentation 2024-08-26 15:35:13 +00: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.