72207242a1 Make dynafed signaling opt-out instead of opt-in (Pablo Greco)
Pull request description:
(cherry picked from commit a06aac152a)
Back in 0.18.1.12, dynafed signaling was disabled to simplify some deployments. This was reverted in the 0.21 branch, for consistency, let's revert it here too.
Top commit has no ACKs.
Tree-SHA512: 21cdb1c2366400849f8bff3cdb502c8193bbc47a35eae984cd3b28faf7b2c9e6e3195258dae0ec9b0225bedfee6a3fd10989e6e983d71714c6d62851657b5ef4
f5d33d8676 Fix elements multiple-header-download issue. (Glenn Willen)
Pull request description:
This fixes an issue which causes Elements to download the blockchain headers
multiple times during initial block download.
In particular: each time we receive an INV P2P message with a new block
(about once a minute), we start downloading the headers, again, in parallel
with any existing download(s) in progress.
With this change, after we receive each batch of headers, we check whether
any of the headers in it were new to us. If not (they were all duplicates),
we stop there, and do not ask the peer for another batch. This reduces the
maximum amount of duplication to about 2x, which is not ideal, but a HUGE
improvement.
<!--
*** Please remove the following help text before submitting: ***
Pull requests without a rationale and clear improvement may be closed
immediately.
GUI-related pull requests should be opened against
https://github.com/bitcoin-core/gui
first. See CONTRIBUTING.md
-->
<!--
Please provide clear motivation for your patch and explain how it improves
Bitcoin Core user experience or Bitcoin Core developer experience
significantly:
* Any test improvements or new tests that improve coverage are always welcome.
* All other changes should have accompanying unit tests (see `src/test/`) or
functional tests (see `test/`). Contributors should note which tests cover
modified code. If no tests exist for a region of modified code, new tests
should accompany the change.
* Bug fixes are most welcome when they come with steps to reproduce or an
explanation of the potential issue as well as reasoning for the way the bug
was fixed.
* Features are welcome, but might be rejected due to design or scope issues.
If a feature is based on a lot of dependencies, contributors should first
consider building the system outside of Bitcoin Core, if possible.
* Refactoring changes are only accepted if they are required for a feature or
bug fix or otherwise improve developer experience significantly. For example,
most "code style" refactoring changes require a thorough explanation why they
are useful, what downsides they have and why they *significantly* improve
developer experience or avoid serious programming bugs. Note that code style
is often a subjective matter. Unless they are explicitly mentioned to be
preferred in the [developer notes](/doc/developer-notes.md), stylistic code
changes are usually rejected.
-->
<!--
Bitcoin Core has a thorough review process and even the most trivial change
needs to pass a lot of eyes and requires non-zero or even substantial time
effort to review. There is a huge lack of active reviewers on the project, so
patches often sit for a long time.
-->
ACKs for top commit:
psgreco:
ACK f5d33d8676
Tree-SHA512: f4e85d1d8b0954654b711806a9a955c9b2246a38fb8c841fd74d87d151e7fb2955c2c1b09c559785b453704f87362ea9af0eb8d1ec3fa6c28f129d777c19f05b
This fixes an issue which causes Elements to download the blockchain headers
multiple times during initial block download.
In particular: each time we receive an INV P2P message with a new block
(about once a minute), we start downloading the headers, again, in parallel
with any existing download(s) in progress.
With this change, after we receive each batch of headers, we check whether
any of the headers in it were new to us. If not (they were all duplicates),
we stop there, and do not ask the peer for another batch. This reduces the
maximum amount of duplication to about 2x, which is not ideal, but a HUGE
improvement.
f472126622 Raise max P2P message size to account for larger elements dynafed header size (Glenn Willen)
Pull request description:
<!--
*** Please remove the following help text before submitting: ***
Pull requests without a rationale and clear improvement may be closed
immediately.
GUI-related pull requests should be opened against
https://github.com/bitcoin-core/gui
first. See CONTRIBUTING.md
-->
<!--
Please provide clear motivation for your patch and explain how it improves
Bitcoin Core user experience or Bitcoin Core developer experience
significantly:
* Any test improvements or new tests that improve coverage are always welcome.
* All other changes should have accompanying unit tests (see `src/test/`) or
functional tests (see `test/`). Contributors should note which tests cover
modified code. If no tests exist for a region of modified code, new tests
should accompany the change.
* Bug fixes are most welcome when they come with steps to reproduce or an
explanation of the potential issue as well as reasoning for the way the bug
was fixed.
* Features are welcome, but might be rejected due to design or scope issues.
If a feature is based on a lot of dependencies, contributors should first
consider building the system outside of Bitcoin Core, if possible.
* Refactoring changes are only accepted if they are required for a feature or
bug fix or otherwise improve developer experience significantly. For example,
most "code style" refactoring changes require a thorough explanation why they
are useful, what downsides they have and why they *significantly* improve
developer experience or avoid serious programming bugs. Note that code style
is often a subjective matter. Unless they are explicitly mentioned to be
preferred in the [developer notes](/doc/developer-notes.md), stylistic code
changes are usually rejected.
-->
<!--
Bitcoin Core has a thorough review process and even the most trivial change
needs to pass a lot of eyes and requires non-zero or even substantial time
effort to review. There is a huge lack of active reviewers on the project, so
patches often sit for a long time.
-->
ACKs for top commit:
stevenroose:
ACK [f472126](https://github.com/ElementsProject/elements/pull/1095/commits/f472126622c9995f75bf56f2108ae7b33bee1b74)
Tree-SHA512: 09b0b7e2a9b7eeed7fda03255f89bac216e14f655aab4d19ac8f415ea6aaa89fc8f5ea9d13e7563047de268d41114e75445f49483d5a7e98305442e2b3a1f75b
b5424e9987 Fix dynafed logging to not duplicate messages (Steven Roose)
Pull request description:
This brings it up to date with the fixed forward port in https://github.com/ElementsProject/elements/pull/996.
Top commit has no ACKs.
Tree-SHA512: 9606ea46973bb5eceadf133b2c75e6ca98c4eb70fa821429ed3e3a06bc94d2c22f6e119b73cc458e5e040df775b64580767d7fe0234081ffcedacf51be4ac97f
e5ba4e819e Regression test for pegin validation issues during sync (Glenn Willen)
7f79f72ae9 Finish removing 'recheckpeginblockinterval'; move MainchainRPCCheck (Glenn Willen)
4ba4e0716d When validation is waiting for parent chain daemon, "stall". (Glenn Willen)
Pull request description:
Currently, if -validatepegin is given, and block validation can't proceed
because the parent chain is not synced, we mark the block invalid and put
it in a queue to be "revalidated" later. Unfortunately, marking a block
invalid has downstream consequences, in particular causing descendant blocks
to be marked invalid, which are not currently fixed by the queue.
Instead, we'll use a different strategy: if the mainchain daemon isn't
sufficiently synced to validate a block, we will "stall" connecting that
block to the chain, and have ActivateBestChain simply keep the tip at the
previous block until we're ready.
We can still download and validate (partly) blocks past this point while
we're waiting. They will be connected once the parent chain daemon catches
up.
Top commit has no ACKs.
Tree-SHA512: 0aa8d22460af062509f431e0f742297733d0e20b3fc1babca35f25a07c5243c7665dd0ba5fb439e3782c842a264dacd14cee6da49f8df3d1a26f5391c4742538
Add a regression test for https://github.com/ElementsProject/elements/issues/891 .
This checks that we can sync successfully when making a bunch of new blocks
just as we have transient loss of parent daemon connectivity. This reliably
fails without the fix, and reliably succeeds with it. (It stands in for the
situation, more common in production, where we sync faster than the parent
daemon can keep up after a long outage.)
- Finish removing all references to 'recheckpeginblockinterval', including
documentation and tests.
- Remove periodic calls to MainchainRPCCheck; use it only at startup (and
refactor accordingly to simplify logic.)
- Move MainchainRPCCheck from validation.h/cpp (public) to an internal
helper function of init.cpp.
- Comment out definition of 'revalidation queue' type in txdb, to suppress
"unused variable" warning. (Leave it visible to avoid future reuse.)
Currently, if -validatepegin is given, and block validation can't proceed
because the parent chain is not synced, we mark the block invalid and put
it in a queue to be "revalidated" later. Unfortunately, marking a block
invalid has downstream consequences, in particular causing descendant blocks
to be marked invalid, which are not currently fixed by the queue.
Instead, we'll use a different strategy: if the mainchain daemon isn't
sufficiently synced to validate a block, we will "stall" connecting that
block to the chain, and have ActivateBestChain simply keep the tip at the
previous block until we're ready.
We can still download and validate (partly) blocks past this point while
we're waiting. They will be connected once the parent chain daemon catches
up.
59ca369d60 Bump version to v0.18.1.12 (Steven Roose)
Pull request description:
Top commit has no ACKs.
Tree-SHA512: 7c711cca14a3f9cfa6fe2863b90c90c9ebcdde14133efc9a61a6415a21743fc36769457e44240ff8dfb577073cd54f15bddbe6d09aecc9686d302886b920cacc
32b3328d40 Update URL to download old QT SDK (Glenn Willen)
Pull request description:
Backport of #992.
Top commit has no ACKs.
Tree-SHA512: 370c5b8c2f5453cda11cc8408289c75599928e4647d68e226794f53904be9474a8ebe00e4ca729fe2c7009d88b3e5062341e1f3e39534b375ed944532f2c4f86
8b9791fa0e Support supplying contract hash to issueasset RPC (Steven Roose)
Pull request description:
Relating https://github.com/ElementsProject/elements/issues/985.
Needs forward port.
Top commit has no ACKs.
Tree-SHA512: e30ce7f590a5d9e8aa37b4cccb4e69fa2c62adbc28a7e67e9a91b9cff081c54bb2e300ccb6e3c692719a8ec858bd32e32445d4040e19d1affd32dae5cc0462fc
ca827fcd75 Add logging for dynafed activation and transitions (Steven Roose)
Pull request description:
Relating https://github.com/ElementsProject/elements/issues/981.
Needs forward port.
Top commit has no ACKs.
Tree-SHA512: 0c22b7e7d149fa4664f4fc0d37b644e2fc1995f2c7764c8f444a331d04216da1a9b7914d54df8ab15b20aa899eddd9834bd4cbe605c1ca3fd360521c9f5f0c1d
b104f95651 Undo default signalling behavior for dynafed unless enabled (Steven Roose)
Pull request description:
Backport of #986.
ACKs for top commit:
gwillen:
utACK b104f95 for the backport, after #986 is merged, assuming that b7a116d is the final version that goes in for #986 .
Tree-SHA512: 58eb99a21fcd6f853255fc09053955c5ac0a9e991ce5b65a01ced4d67352e9d9d6a52d84742cf5e62e3068a7bf3584a195fc284cf3959cc008d786dfaaf0d143
f01651b676 Add liquidv1test chainparams. (Glenn Willen)
e3ece812bb Fix description of -chain parameter (Glenn Willen)
6317e584a2 Change stray uses of global gArgs to args in CCustomParams (Glenn Willen)
Pull request description:
Backport of #982.
Top commit has no ACKs.
Tree-SHA512: e83ae76dd1a34a09962e905ae8083931209d346ed679f62393adec63dc7e22a5a2eee8d23887c4be6d547c3d0e75570e7d21045fec136af9c9006c26983f6bf4
52cc9b507f Update the copyright year to 2021 (Philippe McLean)
Pull request description:
Backport of #966.
Tree-SHA512: 9e343c9c16efd221560e9ad6a32491df8642e19cc67dab4bf4fa383d4f6bec1f238e16c0467934018d4237f5990ed69d53f37986d8338b099a4deb7914d34fb8
868e92f78 Add two missing dynafed fields to getblockchaininfo (Steven Roose)
ae54a1bad dynafed: Support changing mainnet dynafed activation (Steven Roose)
0f9b1a2ed dynafed: Only verify proposed parameters if they differ from current (Steven Roose)
Pull request description:
Backport of #958.
Tree-SHA512: d3f809e466b98f48ba76b8deacc1fc7516440089cd9146a94e9b53ef0dc20f9e53af88cc9edc507de6ccb2da74bf83ef3722f1ab81bb385e2b9a567a4d1f7e99
This allows the initial relaxed restriction on non-segwit fedpeg
programs to be extended as long as the fedpeg program is not changed
while the block signing parameters can be changed.
47bc28aa8 Speficy dynafed deployment for Liquidv1 (Steven Roose)
385b670a9 Add comment to BIP9 time fields (Steven Roose)
6f70350d0 Move dynafed bit into the ELEMENTS fields (Steven Roose)
Pull request description:
Tree-SHA512: 12710e8fd04a3753d1afc26a81f62cdef66449071da00ca39854b1cd66c4002669c26e4db0a64636f3458206d451055ddbaeb66e4fc847166b57968cd2ce59e2
94a49e814 Use gitian infrastructure to install librsvg2-2 (in lieu of hard-coded wget) (Jeff Frontz)
Pull request description:
Tree-SHA512: e472ffa1d955e88767648cee99d337f9cedd181f5ae09ccdb5ec005873871087e0beec68f6405fd8b69b061e86c6599211067e9ca26a9827f896fac1f24d9cd4