dash/doc
Jonas Schnelli 516cfb54c5
Merge #14687: zmq: enable tcp keepalive
c276df775914e4e42993c76e172ef159e3b830d4 zmq: enable tcp keepalive (mruddy)

Pull request description:

  This addresses https://github.com/bitcoin/bitcoin/issues/12754.

  These changes enable node operators to address the silent dropping (by network middle boxes) of long-lived low-activity ZMQ TCP connections via further operating system level TCP keepalive configuration. For example, ZMQ sockets that publish block hashes can be affected in this way due to the length of time it sometimes takes between finding blocks (e.g.- sometimes more than an hour).

  Prior to this patch, operating system level TCP keepalive configurations would not take effect since the SO_KEEPALIVE option was not enabled on the underlying socket.

  There are additional ZMQ socket options related to TCP keepalive that can be set. However, I decided not to implement those options in this changeset because doing so would require adding additional bitcoin node configuration options, and would not yield a better outcome. I preferred a small, easily reviewable patch that doesn't add a bunch of new config options, with the tradeoff that the fine tuning would have to be done via well-documented operating system specific configurations.

  I tested this patch by running a node with:
  `./src/qt/bitcoin-qt -regtest -txindex -datadir=/tmp/node -zmqpubhashblock=tcp://127.0.0.1:28332 &`
  and connecting to it with:
  `python3 ./contrib/zmq/zmq_sub.py`

  Without these changes, `ss -panto | grep 28332 | grep ESTAB | grep bitcoin` will report no keepalive timer information. With these changes, the output from the prior command will show keepalive timer information consistent with the configuration at the time of connection establishment, e.g.-: `timer:(keepalive,119min,0)`.

  I also tested with a non-TCP transport and did not witness any adverse effects:
  `./src/qt/bitcoin-qt -regtest -txindex -datadir=/tmp/node -zmqpubhashblock=ipc:///tmp/bitcoin.block &`

ACKs for top commit:
  adamjonas:
    Just to summarize for those looking to review - as of c276df775914e4e42993c76e172ef159e3b830d4 there are 3 tACKs (n-thumann, Haaroon, and dlogemann), 1 "looks good to me" (laanwj) with no NACKs or any show-stopping concerns raised.
  jonasschnelli:
    utACK c276df775914e4e42993c76e172ef159e3b830d4

Tree-SHA512: b884c2c9814e97e666546a7188c48f9de9541499a11a934bd48dd16169a900c900fa519feb3b1cb7e9915fc7539aac2829c7806b5937b4e1409b4805f3ef6cd1
2021-09-24 13:26:37 -04:00
..
gitian-building Merge #10968: Add instructions for parallel gitian builds. 2019-08-12 09:07:03 -05:00
man Bump to v0.17.0.3 2021-06-04 00:33:04 +03:00
release-notes Merge #12255: Update bitcoin.service to conform to init.md 2021-09-10 15:40:46 -04:00
.gitignore Merge #10166: Ignore Doxyfile generated from Doxyfile.in template. 2019-05-19 20:43:00 -05:00
assets-attribution.md Merge #945: More dash->dashcore 2016-08-19 05:46:30 -06:00
benchmarking.md merge #18011: Replace current benchmarking framework with nanobench 2021-07-05 18:28:55 +05:30
bips.md Merge #13255: trivial: Fixed typos and cleaned up language 2021-07-02 12:59:29 +03:00
bitcoin_logo_doxygen.png updated darkcoin logo 2015-01-13 11:55:07 -07:00
build-cross.md build|gitian: Install cmake for macos cross-compilation builds 2021-09-07 03:25:11 +03:00
build-generic.md merge #20419: set minimum supported macOS to 10.14 2021-09-03 21:35:53 +05:30
build-netbsd.md continued 2021-06-26 11:54:34 -05:00
build-osx.md merge #16392: macOS toolchain update 2021-09-02 01:55:01 +05:30
build-unix.md Merge #14153: Docs: Add disable-wallet section to OSX build instructions, update line in Unix instructions 2021-07-07 12:04:54 -04:00
build-windows.md Update Windows build instructions (#3453) 2020-04-30 13:28:12 +03:00
dash-conf.md Merge #16621: doc: add default bitcoin.conf locations 2021-07-12 20:52:56 -05:00
developer-notes.md Merge #17281: doc: Add developer note on c_str() 2021-09-15 13:54:39 -04:00
dnsseed-policy.md Update dnsseed-policy.md (#2751) 2019-03-08 21:21:20 +03:00
Doxyfile.in partial merge #17398: Update leveldb to 1.22+ (#4230) 2021-07-15 15:42:55 -05:00
files.md fix misc. spelling errors 2021-07-19 12:51:30 -05:00
fuzzing.md bitcoin#17942: Improve fuzzing docs for macOS users 2021-08-11 09:48:41 +05:30
gitian-building.md Merge #13366: Docs: Rename “OS X” to the newer “macOS” convention 2021-06-28 02:31:48 +03:00
init.md Merge #12255: Update bitcoin.service to conform to init.md 2021-09-10 15:40:46 -04:00
instantsend.md Report instantlock: true for transactions locked via ChainLocks (#2877) 2019-04-25 18:38:26 +03:00
JSON-RPC-interface.md 15799 / 15223 Dashification 2021-09-10 23:16:27 -04:00
keepass.md fix misc. spelling errors 2021-07-19 12:51:30 -05:00
masternode-budget.md Remove all legacy/compatibility MN code (#2600) 2019-01-03 12:17:43 +03:00
productivity.md dashify productivity.md 2021-07-10 12:10:51 -05:00
psbt.md Merge #15012: Docs: Fix minor error in doc/psbt.md 2021-08-03 10:36:15 -04:00
README_windows.txt Merge #10155: build: Deduplicate version numbers 2019-06-14 01:25:59 -05:00
README.md Merge #13941: Add PSBT documentation 2021-07-19 17:11:15 -05:00
reduce-memory.md Merge #17751: doc: use recommended shebang approach in documentation code block 2021-07-14 18:43:55 -05:00
reduce-traffic.md Merge #15990: Add tests and documentation for blocksonly 2021-07-21 15:53:38 -05:00
release-notes-13152.md Merge #13152: [rpc] Add getnodeaddresses RPC command (#4425) 2021-09-16 01:28:55 +03:00
release-notes-14941.md Merge #14941: rpc: Make unloadwallet wait for complete wallet unload 2021-09-08 14:17:35 -04:00
release-notes-14954.md Merge #16039: docs: add release note for 14954 2021-09-12 14:15:11 -04:00
release-notes-17410.md Merge #17410: Rename db log category to walletdb (like coindb) 2021-09-15 13:54:41 -04:00
release-notes.md doc: Add 0.17.0.3 release notes 2021-06-04 00:37:07 +03:00
release-process.md Merge #15939: gitian: Remove Windows 32 bit build 2021-09-02 22:27:58 +03:00
REST-interface.md Merge #15404: [test] Remove -txindex to start nodes 2021-09-13 16:04:36 -04:00
shared-libraries.md Merge #8848: Add NULLDUMMY verify flag in bitcoinconsensus.h 2018-01-30 20:28:51 +01:00
tor.md Merge #14804: docs: Less confusing documentation for torpassword 2021-08-15 11:08:08 -04:00
translation_process.md Merge pull request #3617 from PastaPastaPasta/backports-0.17-pr15 2020-07-19 19:27:24 +03:00
translation_strings_policy.md Merge #15353: docs: Minor textual improvements in translation_strings_policy.md 2021-06-28 19:05:22 -05:00
travis-ci.md Merge #8879: [doc] Rework docs 2018-01-12 09:57:56 +01:00
zmq.md Merge #14687: zmq: enable tcp keepalive 2021-09-24 13:26:37 -04: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. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com), and UPnP software written by Thomas Bernard.