Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ci/lint/04_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ if [ -z "${SKIP_PYTHON_INSTALL}" ]; then
python3 --version
fi

${CI_RETRY_EXE} pip3 install codespell==2.0.0
${CI_RETRY_EXE} pip3 install flake8==3.8.3
${CI_RETRY_EXE} pip3 install codespell==2.1.0
${CI_RETRY_EXE} pip3 install flake8==4.0.1
${CI_RETRY_EXE} pip3 install lief==0.13.1
${CI_RETRY_EXE} pip3 install mypy==0.910
${CI_RETRY_EXE} pip3 install mypy==0.942
${CI_RETRY_EXE} pip3 install pyzmq==22.3.0
${CI_RETRY_EXE} pip3 install vulture==2.3

Expand Down
8 changes: 4 additions & 4 deletions contrib/containers/ci/ci-slim.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ RUN set -ex; \
# Install Python packages
RUN set -ex; \
pip3 install --no-cache-dir \
codespell==1.17.1 \
flake8==3.8.3 \
codespell==2.1.0 \
flake8==4.0.1 \
jinja2 \
lief==0.13.2 \
multiprocess \
mypy==0.910 \
mypy==0.942 \
pyzmq==22.3.0 \
vulture==2.3

Expand All @@ -86,7 +86,7 @@ RUN set -ex; \
cd dash_hash && pip3 install -r requirements.txt .; \
cd .. && rm -rf dash_hash

ARG SHELLCHECK_VERSION=v0.7.1
ARG SHELLCHECK_VERSION=v0.8.0
RUN set -ex; \
curl -fL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" -o /tmp/shellcheck.tar.xz; \
mkdir -p /opt/shellcheck && tar -xf /tmp/shellcheck.tar.xz -C /opt/shellcheck --strip-components=1 && rm /tmp/shellcheck.tar.xz
Expand Down
186 changes: 1 addition & 185 deletions contrib/debian/examples/dash.conf
Original file line number Diff line number Diff line change
@@ -1,185 +1 @@
##
## dash.conf configuration file. Lines beginning with # are comments.
##

# Network-related settings:

# Note that if you use testnet or regtest, particularly with the options
# addnode, connect, port, bind, rpcport, rpcbind or wallet, you will also
# want to read "[Sections]" further down.

# Run on the test network instead of the real dash network.
#testnet=0

# Run a regression test network
#regtest=0

# Connect via a SOCKS5 proxy
#proxy=127.0.0.1:9050

# Bind to given address and always listen on it. Use [host]:port notation for IPv6
#bind=<addr>

# Bind to given address and add permission flags to peers connecting to it. Use [host]:port notation for IPv6
#whitebind=perm@<addr>

##############################################################
## Quick Primer on addnode vs connect ##
## Let's say for instance you use addnode=4.2.2.4 ##
## addnode will connect you to and tell you about the ##
## nodes connected to 4.2.2.4. In addition it will tell ##
## the other nodes connected to it that you exist so ##
## they can connect to you. ##
## connect will not do the above when you 'connect' to it. ##
## It will *only* connect you to 4.2.2.4 and no one else.##
## ##
## So if you're behind a firewall, or have other problems ##
## finding nodes, add some using 'addnode'. ##
## ##
## If you want to stay private, use 'connect' to only ##
## connect to "trusted" nodes. ##
## ##
## If you run multiple nodes on a LAN, there's no need for ##
## all of them to open lots of connections. Instead ##
## 'connect' them all to one node that is port forwarded ##
## and has lots of connections. ##
## Thanks goes to [Noodle] on Freenode. ##
##############################################################

# Use as many addnode= settings as you like to connect to specific peers
#addnode=69.164.218.197
#addnode=10.0.0.2:9999

# Alternatively use as many connect= settings as you like to connect ONLY to specific peers
#connect=69.164.218.197
#connect=10.0.0.1:9999

# Listening mode, enabled by default except when 'connect' is being used
#listen=1

# Port on which to listen for connections (default: 9999, testnet: 19999, regtest: 19899)
#port=

# Maximum number of inbound + outbound connections (default: 125). This option
# applies only if inbound connections are enabled; otherwise, the number of connections
# will not be more than 11: 8 full-relay connections, 2 block-relay-only ones, and
# occasionally 1 short-lived feeler or extra outbound block-relay-only connection.
# These limits do not apply to connections added manually with the -addnode
# configuration option or the addnode RPC, which have a separate limit of 8 connections.
#maxconnections=

# Maximum upload bandwidth target in MiB per day (e.g. 'maxuploadtarget=1024' is 1 GiB per day).
# This limits the upload bandwidth for those with bandwidth limits. 0 = no limit (default: 0).
# -maxuploadtarget does not apply to peers with 'download' permission.
# For more information on reducing bandwidth utilization, see: doc/reduce-traffic.md.
#maxuploadtarget=

#
# JSON-RPC options (for controlling a running Dash/dashd process)
#

# server=1 tells Dash-Qt and dashd to accept JSON-RPC commands
#server=0

# Bind to given address to listen for JSON-RPC connections.
# Refer to the manpage or dashd -help for further details.
#rpcbind=<addr>

# If no rpcpassword is set, rpc cookie auth is sought. The default `-rpccookiefile` name
# is .cookie and found in the `-datadir` being used for dashd. This option is typically used
# when the server and client are run as the same user.
#
# If not, you must set rpcuser and rpcpassword to secure the JSON-RPC API.
#
# The config option `rpcauth` can be added to server startup argument. It is set at initialization time
# using the output from the script in share/rpcauth/rpcauth.py after providing a username:
#
# ./share/rpcauth/rpcauth.py alice
# String to be appended to dash.conf:
# rpcauth=alice:f7efda5c189b999524f151318c0c86$d5b51b3beffbc02b724e5d095828e0bc8b2456e9ac8757ae3211a5d9b16a22ae
# Your password:
# DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=
#
# On client-side, you add the normal user/password pair to send commands:
#rpcuser=alice
#rpcpassword=DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=
#
# You can even add multiple entries of these to the server conf file, and client can use any of them:
# rpcauth=bob:b2dd077cb54591a2f3139e69a897ac$4e71f08d48b4347cf8eff3815c0e25ae2e9a4340474079f55705f40574f4ec99

# How many seconds Dash Core will wait for a complete RPC HTTP request.
# after the HTTP connection is established.
#rpcclienttimeout=30

# By default, only RPC connections from localhost are allowed.
# Specify as many rpcallowip= settings as you like to allow connections from other hosts,
# either as a single IPv4/IPv6 or with a subnet specification.

# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED,
# because the rpcpassword is transmitted over the network unencrypted.

# server=1 tells Dash-Qt to accept JSON-RPC commands.
# it is also read by dashd to determine if RPC should be enabled
#rpcallowip=10.1.1.34/255.255.255.0
#rpcallowip=1.2.3.4/24
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96

# Listen for RPC connections on this TCP port:
#rpcport=9998

# You can use Dash or dashd to send commands to Dash/dashd
# running on another host using this option:
#rpcconnect=127.0.0.1

# Wallet options

# Specify where to find wallet, lockfile and logs. If not present, those files will be
# created as new.
#wallet=</path/to/dir>

# Create transactions that have enough fees so they are likely to begin confirmation within n blocks (default: 6).
# This setting is over-ridden by the -paytxfee option.
#txconfirmtarget=n

# Pay a transaction fee every time you send dash.
#paytxfee=0.000x

# Miscellaneous options

# Pre-generate this many public/private key pairs, so wallet backups will be valid for
# both prior transactions and several dozen future transactions.
#keypool=100

# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0).
#coinstatsindex=1

# Enable pruning to reduce storage requirements by deleting old blocks.
# This mode is incompatible with -txindex, -coinstatsindex and -rescan.
# 0 = default (no pruning).
# 1 = allows manual pruning via RPC.
# >=945 = target to stay under in MiB.
#prune=945

# User interface options

# Start Dash minimized
#min=1

# Minimize to the system tray
#minimizetotray=1

# [Sections]
# Most options apply to mainnet, testnet and regtest.
# If you want to confine an option to just one network, you should add it in the
# relevant section below.
# EXCEPTIONS: The options addnode, connect, port, bind, rpcport, rpcbind and wallet
# only apply to mainnet unless they appear in the appropriate section below.

# Options only for mainnet
[main]

# Options only for testnet
[test]

# Options only for regtest
[regtest]
# This is a placeholder file. Please follow the instructions in `contrib/devtools/README.md` to generate a dash.conf file.
15 changes: 15 additions & 0 deletions contrib/devtools/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,21 @@ example:
BUILDDIR=$PWD/build contrib/devtools/gen-manpages.py
```

gen-dash-conf.sh
===================

Generates a dash.conf file in `contrib/debian/examples/` by parsing the output from `dashd --help`. This script is run during the
release process to include a dash.conf with the release binaries and can also be run by users to generate a file locally.
When generating a file as part of the release process, make sure to commit the changes after running the script.

With in-tree builds this tool can be run from any directory within the
repository. To use this tool with out-of-tree builds set `BUILDDIR`. For
example:

```bash
BUILDDIR=$PWD/build contrib/devtools/gen-dash-conf.sh
```

github-merge.py
===============

Expand Down
80 changes: 80 additions & 0 deletions contrib/devtools/gen-dash-conf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Copyright (c) 2021 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

export LC_ALL=C
TOPDIR=${TOPDIR:-$(git rev-parse --show-toplevel)}
BUILDDIR=${BUILDDIR:-$TOPDIR}
BINDIR=${BINDIR:-$BUILDDIR/src}
DASHD=${DASHD:-$BINDIR/dashd}
SHARE_EXAMPLES_DIR=${SHARE_EXAMPLES_DIR:-$TOPDIR/contrib/debian/examples/}
EXAMPLE_CONF_FILE=${EXAMPLE_CONF_FILE:-$SHARE_EXAMPLES_DIR/dash.conf}

[ ! -x "$DASHD" ] && echo "$DASHD not found or not executable." && exit 1

DIRTY=""
VERSION_OUTPUT=$($DASHD --version)
if [[ $VERSION_OUTPUT == *"dirty"* ]]; then
DIRTY="${DIRTY}${DASHD}\n"
fi

if [ -n "$DIRTY" ]
then
echo -e "WARNING: $DASHD was built from a dirty tree.\n"
echo -e "To safely generate a dash.conf file, please commit your changes to $DASHD, rebuild, then run this script again.\n"
fi

echo 'Generating example dash.conf file in contrib/debian/examples/'

# create the directory, if it doesn't exist
mkdir -p "${SHARE_EXAMPLES_DIR}"

# create the header text
cat > "${EXAMPLE_CONF_FILE}" << 'EOF'
##
## dash.conf configuration file.
## Generated by contrib/devtools/gen-dash-conf.sh.
##
## Lines beginning with # are comments.
## All possible configuration options are provided. To use, copy this file
## to your data directory (default or specified by -datadir), uncomment
## options you would like to change, and save the file.
##


### Options
EOF

# parse the output from dashd --help
# adding newlines is a bit funky to ensure portability for BSD
# see here for more details: https://stackoverflow.com/a/24575385
${DASHD} --help \
| sed '1,/Print this help message and exit/d' \
| sed -E 's/^[[:space:]]{2}\-/#/' \
| sed -E 's/^[[:space:]]{7}/# /' \
| sed -E '/[=[:space:]]/!s/#.*$/&=1/' \
| awk '/^#[a-z]/{x=$0;next}{if (NF==0) print x"\n",x="";else print}' \
| sed 's,\(^[[:upper:]].*\)\:$,\
### \1,' \
| sed 's/[[:space:]]*$//' >> "${EXAMPLE_CONF_FILE}"

# create the footer text
cat >> "${EXAMPLE_CONF_FILE}" << 'EOF'

# [Sections]
# Most options will apply to all networks. To confine an option to a specific
# network, add it under the relevant section below.
#
# Note: If not specified under a network section, the options addnode, connect,
# port, bind, rpcport, rpcbind, and wallet will only apply to mainnet.

# Options for mainnet
[main]

# Options for testnet
[test]

# Options for regtest
[regtest]
EOF
4 changes: 4 additions & 0 deletions contrib/guix/libexec/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,10 @@ mkdir -p "$DISTSRC"
;;
esac

# copy over the example dash.conf file. if contrib/devtools/gen-dash-conf.sh
# has not been run before buildling, this file will be a stub
cp "${DISTSRC}/contrib/debian/examples/dash.conf" "${DISTNAME}/"

# Finally, deterministically produce {non-,}debug binary tarballs ready
# for release
case "$HOST" in
Expand Down
2 changes: 1 addition & 1 deletion doc/build-openbsd.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Run the following as root to install the base dependencies for building.

```bash
pkg_add bash git gmake gmp libevent libtool boost
# Select the newest version of the follow packages:
# Select the newest version of the following packages:
pkg_add autoconf automake python

git clone https://github.com/dashpay/dash.git
Expand Down
10 changes: 9 additions & 1 deletion doc/dash-conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,12 @@ Windows | `%APPDATA%\DashCore\` | `C:\Users\username\AppData\Roaming\DashCore\da
Linux | `$HOME/.dashcore/` | `/home/username/.dashcore/dash.conf`
macOS | `$HOME/Library/Application Support/DashCore/` | `/Users/username/Library/Application Support/DashCore/dash.conf`

You can find an example dash.conf file in [share/examples/dash.conf](../share/examples/dash.conf).
An example configuration file can be generated by [contrib/devtools/gen-dash-conf.sh](../contrib/devtools/gen-dash-conf.sh).
Run this script after compiling to generate an up-to-date configuration file.
The output is placed under `contrib/debian/examples/dash.conf`.
To use the generated configuration file, copy the example file into your data directory and edit it there, like so:

```
# example copy command for linux user
cp contrib/debian/examples/dash.conf ~/.dashcore
Comment on lines +71 to +73
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Specify language for fenced code block.

The code block lacks a language identifier, which violates markdown linting rules (MD040). Add a language specifier (e.g., bash or sh) to the opening fence.

Apply this diff:

-```
+```bash
 # example copy command for linux user
 cp contrib/debian/examples/dash.conf ~/.dashcore
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

71-71: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In doc/dash-conf.md around lines 71 to 73, the fenced code block is missing a
language identifier which triggers MD040; update the opening backtick fence to
include a language (e.g., bash or sh) so the block reads with a language
specifier and leave the closing fence unchanged.

```
Loading
Loading