Commit graph

13921 commits

Author SHA1 Message Date
Patrick Lodder 60f821fe73
ci: make --enable-reduce-exports standard for all hosts 2021-10-12 02:57:12 +02:00
Patrick Lodder 7739221064
fees: Require dust limit as dust penalty
Changes the dust policy to require transactions to add the dust
limit itself rather than the relay or wallet fee to the fees paid
when creating dust outputs.

This both disincentivizes dust outputs the same as before when dust
and minumum fee were equal and greatly simplifies the rule, as it
no longer requires 2 variables to calculate dust, but just one:

"If an output is under x, add x to the fee."
2021-10-12 02:47:23 +02:00
Patrick Lodder b5b1e0426a
wallet: derive MIN_CHANGE from configurable parameters
MIN_CHANGE influences the minimum change output size but was only
hardcoded and wallet users were not able to override this in any
way. This change retains the logic for the calculation as a
hardcoded constant but instead uses the user-configurable params
-discardthreshold and -mintxfee as a basis. The rationale for
having the minimum change equal to the discard threshold plus 2x
the minimum fee has not changed.
2021-10-12 01:28:10 +02:00
Patrick Lodder 2cdacb07ab
wallet: replace MIN_FINAL_CHANGE with the discard threshold
MIN_FINAL_CHANGE was a hardcoded limit that was impossible to be
changed by users. This causes problems when the dust limit is
changing because then a user would need a new release to be able
to have lower change outputs.

This commit replaces the entire notion of MIN_FINAL_CHANGE to just
follow the discard threshold, which can be set by the user using
-discardthreshold.
2021-10-12 01:28:09 +02:00
Ross Nicoll c338c5e6c4
Merge pull request #2606 from patricklodder/1.14.5-split-dust-parametrization
Split the dust definition 3-way to enable lower limits
2021-10-12 00:12:53 +01:00
Ross Nicoll 7f33b17cd1
Merge pull request #2611 from patricklodder/1.14.5-determ-libfreetype
depends: make freetype independent from build system libs too
2021-10-11 23:16:45 +01:00
Cory Fields 6912d93940
depends: qt: avoid system harfbuzz and bz2
We may eventually want to break out harfbuzz and build it in depends, but
for now just ensure that runtime dependencies don't depend on whether or not
harfbuzz was present on the builder.
2021-10-11 16:12:33 +02:00
Ross Nicoll a72aba3bea
Merge pull request #2609 from patricklodder/1.14.5-raise-high-fee-rate
fees: raise the high tx fee rate
2021-10-11 09:19:44 +01:00
Patrick Lodder 1806f0965e
Merge pull request #2607 from rnicoll/1.14.5-check-fundrawtransaction
Update fundrawtransaction.py to match Bitcoin originals
2021-10-11 00:37:18 +02:00
Patrick Lodder 0ff5375296
fees: Adjust HIGH_TX_FEE_PER_KB
Sets the high tx fee to be higher than the default values
implemented by the wallet. The highest value from the QT coin
control slider is 5.21 DOGE.

Therefore, a 10 DOGE/kB high tx fee should suffice for now.
2021-10-10 23:33:25 +02:00
Patrick Lodder a4d965547e
fees: set the wallet default discard threshold to 1 DOGE
As of writing, 97% of the relay network (for me: 2251 of 2328
peers) enforces a 1 DOGE hard dust limit making attempts to send
smaller outputs extremely unlikely to make it through to miners.

This setting is a temporary measure until a significant portion of
the network accepts lower dust thresholds. The threshold can be
changed by wallet users using the -discardthreshold parameter.
2021-10-10 22:07:12 +02:00
Patrick Lodder 6173ca37cd
Remove dustRelayFee as it is no longer used
DustRelayFee (-dustrelayfee) was used sporadically throughout the
code, even though it had been disabled for dust determination, but
has now completely been removed from all dust and fee related
queries. Therefore, it can be removed from the code.

Moves the warning from DUST_RELAY_TX_FEE to DEFAULT_HARD_DUST_LIMIT
as it is very relevant for the latter, but never was relevant for
the former as it was disabled for us.
2021-10-10 22:07:12 +02:00
Patrick Lodder fd6da81954
wallet: introduce -discardthreshold
Creates a wallet-specific, configurable dust limit that enables
gradual implementation of the dust limit. Each transaction created
with the wallet will adhere to this threshold rather than the dust
limits used for relay, so that the wallet stays usable while the
network changes (lowers) its dust limits.

This change only implements the parameter but does not change its
default value.
2021-10-10 22:07:00 +02:00
Ross Nicoll 2799811ab1
Update fundrawtransaction.py to match Bitcoin originals
This revises the logic in fundrawtransaction.py to use the 20 small outputs
generated, as inputs to the next transaction. This matches how the original
worked, see https://github.com/bitcoin/bitcoin/blob/v0.14.3/qa/rpc-tests/fundrawtransaction.py#L556
2021-10-10 20:51:47 +01:00
Patrick Lodder 84157f3df2
policy: Split up dust limit into hard and soft
Creates a new parameter, -harddustlimit, that is used for testing
standard transactions. The default is set at 1/10th of the (soft)
dust limit, to be the same as the default minimum relay fee and
leave space for future improvements.

The existing dust limit (-dustlimit) is now enforcing the economic
disincentive under which each output under the limit must add
additional fee to be accepted to the mempool. Before this commit,
-dustlimit enforced both the hard and the soft limits, which
effectively removed the soft limit altogether.
2021-10-10 20:35:55 +02:00
Patrick Lodder e83ddb7e8f
fees: Allow dust comparison against a given dust limit
Prepares for having more than one dust limit configured, yet
allowing the same function to return whether or not an output is
dust.

Implements the check with nDustLimit (-dustlimit) for relay related
queries, and - for lack of alternatives - uses the same parameter
for CWallet::GetRequiredFee until a wallet-specific dust limit is
introduced
2021-10-10 20:35:54 +02:00
Patrick Lodder c05cd54411
qa: Test relay and mempool policies for fees and dust
Creates a new functional test that ensures relay logic regarding
fee and dust levels
2021-10-10 20:35:54 +02:00
Ross Nicoll 5f390bde2a
Merge pull request #2605 from patricklodder/1.14.5-dusty-tests
qa: facilitate MIN_CHANGE to be higher than COIN in tests
2021-10-10 19:33:21 +01:00
Patrick Lodder 56bc526b59
qa: facilitate MIN_CHANGE higher than COIN in tests
Some tests expect MIN_CHANGE to be less than COIN, which will not
be the case as long as the network enforces a 1 DOGE hard dust
limit.

wallet_tests.cpp: Multiply all inputs by 10 for tests that aren't
                  relative to MIN_CHANGE.

fundrawtransaction.py: make sure there are no outputs smaller than
                       1 DOGE.

importprunedfunds.py: Multiply all outputs by 100
2021-10-09 21:06:25 +02:00
Ryan Crosby 8632c83881 Harden systemd unit file
Use simple invocation type instead of forking daemon

Add alternative unit file for /usr/local installs

Add /opt/ systemd unit variant

Fix comments

Add 3GB memory limit to systemd unit

Restore newlines at end of systemd unit files

Remove "via official sources" comment from the opt systemd unit file

Use term "variant" instead of "variation" since the former is more
specific and correct for this context

Correct dogecoin package directory from "dogecoind" to "dogecoin"

Use tarball bin path

Co-authored-by: Patrick Lodder <patricklodder@users.noreply.github.com>
2021-10-05 19:33:54 +11:00
Ross Nicoll 8e326ac96b
Merge pull request #2501 from patricklodder/1.14.5-bionic
Harmonize CI and Gitian to use the same toolchain
2021-10-03 21:56:26 +01:00
Patrick Lodder 7dae118b0a build: experimental ci build with AVX2 2021-10-03 00:55:55 -05:00
Patrick Lodder d1075955b2 depends: make avx2 depends selectable through AVX2=1 env var 2021-10-02 23:32:41 -05:00
Ed Tubbs bef1ae5f3c Commit changes to SHA sources
Added nasm and intel-ipsec-mb to depends
Added remote_digest_init.patch
Added argument and checks to configure.ac
Make nasm a native dependency
2021-10-02 23:32:42 -05:00
Patrick Lodder a8c035e88f
remove zmq trusty-only patch 2021-09-29 20:50:11 +02:00
fanquake aae64a9937
build: remove mingw linker workaround from win gitian descriptor
This workaround was added as part of the switch to gitian building using Ubuntu 14.04 (#6900).
However, it should no longer be required, as we have switched to Bionic (#13171), and that
has a far newer version of binutils.

binutils patch: https://sourceware.org/bugzilla/show_bug.cgi?id=16192

Cherry-picked from: bd3f5a90
2021-09-29 20:50:11 +02:00
Patrick Lodder 0c92645c9c
build: change gitian descriptors to use bionic
- all: change suite to bionic instead of trusty
- linux: change gcc version to 7
- win: remove g++ from faketime_progs
- win: wrap *-posix compilers rather than plain mingw
- win: install 'rename'
2021-09-29 20:50:10 +02:00
Patrick Lodder 5dd1a6283b
qa: change CI and CodeQL to use bionic for all builds
- change host os for all builds
- change i686 wine to wine-stable
2021-09-29 20:50:10 +02:00
Patrick Lodder d8809182e6
Change in6addr_any to IN6ADDR_ANY_INIT
This prevents glibc export of in6addr_any.

Inspired by: fc6a9f2
Original Author: Cory Fields <cory-nospam-@coryfields.com>
2021-09-29 20:50:10 +02:00
Chun Kuan Lee a7ed71e78f
Add stdin, stdout, stderr to ignored export list
Cherry-picked from: 253f592
2021-09-29 20:50:10 +02:00
Chun Kuan Lee 4598ec33fc
GCC-7 and glibc-2.27 compat code
Cherry-picked from: 908c1d7

Note: fixes __divmoddi4 and log2f when compiling with gcc-7
2021-09-29 20:50:09 +02:00
Ross Nicoll 10f64e120e
Merge pull request #2595 from patricklodder/1.14.5-fix-xkb
build: Add libxkbcommon 0.8.4
2021-09-29 19:41:34 +01:00
Ross Nicoll b4569c0730
Merge pull request #2594 from patricklodder/1.14.5-wallet-min-change
wallet/fee: Update MIN_CHANGE, related tests and document why
2021-09-29 19:40:46 +01:00
Hennadii Stepanov 557a921835
build: Add xkbcommon 0.8.4
Cherry-picked from: bitcoin/bitcoin 3272e34f
                and bitcoin/bitcoin cc25f892
                and bitcoin/bitcoin a33381ac

Conflicts resolved:

- removed ci script and guix file changes that we don't have
- removed changes to libxcb
- squashed commits as cc25f892 was a fixup
- rewrote the change to depends/README

Co-authored-by: fanquake <fanquake@gmail.com>
Co-authored-by: W. J. van der Laan <laanwj@protonmail.com>
2021-09-28 21:33:05 +02:00
Patrick Lodder 6003cdea85
qa: reduce wallet config impact on importprunedfunds.py
Changes client parametrization and mining frequency inside
importprunedfunds.py to make sure that when wallet configuration
changes, the test still can succeed, by not allowing it to respend
unconfirmed outputs that could otherwise be reused in this test.

The alternative would be to have to change this test every time the
wallet defaults change, which is not the subject of this test.
2021-09-27 21:15:42 +02:00
Patrick Lodder 16764d6e80
fees: Update MIN_CHANGE and document why
Updates MIN_CHANGE to always allow for a subsequent bump from the
change output using RBF or CPFP of at least 2x the recommended
minumum fee, on top of the dust limit, because the previous value
did not allow enough change for performing a CPFP bump, and only
allowed for a single bumfee call, which would spend the entire
change output rather than allowing for optimization.
2021-09-27 21:07:37 +02:00
Patrick Lodder dcc22f1696
qa: test for issues with MIN_CHANGE
Adds a test to bumpfee.py that tests the policy of MIN_CHANGE and
MIN_FINAL_CHANGE parameters when using RBF, making sure that with
the wallet default configuration, RBF can be performed. This test
fails on this commit.
2021-09-27 21:07:15 +02:00
Patrick Lodder 0d0c5e5a7f
Merge pull request #2589 from rnicoll/1.14.5-dev-strings-all
Refresh translation files
2021-09-27 18:04:00 +02:00
Ross Nicoll 5dee6f61b1
Merge pull request #2590 from patricklodder/1.14.5-incremental-fee
fees: Tune incremental fee defaults
2021-09-26 10:03:14 +01:00
Patrick Lodder 52f2f3c72b
Merge pull request #2586 from rnicoll/1.14.5-checkpoints
Add updated 1.14.5 checkpoints
2021-09-26 05:33:17 +02:00
dogespacewizard fccd2b46b6 Update bitcoin_ko_KR.ts
some korean translation, not all need help for the rest
2021-09-25 21:31:28 +01:00
Patrick Lodder c31ff0f095
wallet: change incremental fee for RBF
Sets WALLET_INCREMENTAL_RELAY_FEE to 1/10th of the default
recommended minimum fee, to encourage using RBF over CPFP and
saving the additional blockspace required for child transactions
spending parent transactions.

The previous value was based off a 1 DOGE recommended fee and did
not make sense with the current minimum fee recommendation.
2021-09-25 21:52:21 +02:00
Patrick Lodder bde7442526
mempool: tune incremental fee to make more sense for Dogecoin
The value of DEFAULT_INCREMENTAL_RELAY_FEE has never been tuned for
Dogecoin since porting from Bitcoin Core 0.14. Even though the dual
meaning of this parameter is suboptimal, it can still be tuned.

This commit sets the value to 1/10th of DEFAULT_MIN_RELAY_TX_FEE
from validation.h, which causes:

1. Mempool limiting to be performed in steps of 0.0001 DOGE/kb
   instead of 0.00001 DOGE/kb
2. RBF to be accepted by the mempool if the new fee is at least
   0.0001 DOGE/kb higher than the previous fee known to the
   mempool
3. RBF to be cheaper than CPFP by a factor 10 (as the latter would
   require a fee of more than 0.001 DOGE/kb on a subsequent bumping
   transaction), to encourage mempool replacement over prioritizing
   through additional transactions that need to be mined.
4. Mempool limiting to be 10x faster to reset to zero than before,
   because for bitcoin, fee increments equaled their minimum fee,
   but for us this was 1/100th.

mempool_tests.cpp has been reworked a bit to reflect the reality
of having a lower increment than the minimum fee, as even though
this already was the case, this was not tested correctly due to the
static values in the unit test.
2021-09-25 21:51:36 +02:00
Ross Nicoll 19c4ff8cb9
Merge pull request #2587 from patricklodder/1.14.5-clarify-fee
fees: clarify what the actual recommended fee is
2021-09-25 09:57:34 +01:00
Ross Nicoll 0fb46507b3
1.14.5 release notes 2021-09-25 08:52:47 +01:00
Ross Nicoll 065574d672
Merge pull request #2500 from patricklodder/1.14-fix-self-assign
Fix self-assigned nVersion in CAlert serialization
2021-09-25 08:38:52 +01:00
Ross Nicoll 08e7d784da
Refresh translation files
Refresh the most active translation files. As we're not set up with the same tooling as Bitcoin, we get slightly different results compared to the files they generate, so I've picked only specific files to update to reduce churn. If we have translation volunteers for other languages we can update those languages at the time.

* Chinese
* French
* German
* Indonesian
* Italian
* Japanese
* Korean
* Netherlands
* Spanish
* Russian
* Turkish
2021-09-25 08:30:12 +01:00
Patrick Lodder 478115a63b
Merge pull request #2588 from rnicoll/1.14.5-dev-strings
Refresh locale files
2021-09-25 01:57:45 +02:00
Ross Nicoll 029c83da14 Refresh English locale files 2021-09-25 00:00:21 +01:00
Ross Nicoll c2c71b2f21
Correct application names in locale files
Correct application names in locale files so Qt correctly recognises that the translations are valid.
2021-09-24 23:59:49 +01:00