Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

masternode status reported wrong #8

Closed
schinzelh opened this issue Jun 17, 2014 · 2 comments
Closed

masternode status reported wrong #8

schinzelh opened this issue Jun 17, 2014 · 2 comments

Comments

@schinzelh
Copy link

The 'masternode start' is returning a wrong errormessage when masternode is restarted

testnet3@ip-10-65-166-xx:~/.darkcoin$ ./darkcoind
testnet3@ip-10-65-166-xx:~/.darkcoin$ DarkCoin server starting

testnet3@ip-10-65-166-xx:~/.darkcoin$ ./darkcoind masternode start
successfully started masternode
testnet3@ip-10-65-166-xx:~/.darkcoin$ ./darkcoind masternode stop
successfully stopped masternode
testnet3@ip-10-65-166-xx:~/.darkcoin$ ./darkcoind masternode start
masternode is stopped

The last message 'masternode is stopped' is either misleading, wrong or points to a problem with masternode restart behaviour.

@mkinney
Copy link

mkinney commented Mar 3, 2015

This issue is fairly old. Is this still an issue?

@vertoe
Copy link

vertoe commented Mar 3, 2015

This is an v0.10.x issue and can be closed...

@UdjinM6 UdjinM6 closed this as completed Aug 10, 2015
CryptoCentric referenced this issue in absolute-community/absolute Feb 15, 2019
Do not list locked coins - take 2
barrystyle referenced this issue in PACGlobalOfficial/PAC Jul 17, 2019
* Fix bug on interface

* Light theme

* Rebranding privatePAC and instantPAC

* Change denominations and log instantPAC

* Remove HD wallets icon and options dialog privatepac rebranding
cadexproject pushed a commit to cadexproject/cadex that referenced this issue Dec 4, 2019
Migrate to use of nChainTrust from nChainWork.
FornaxA referenced this issue in ioncoincore/ion Jul 6, 2020
FornaxA referenced this issue in ioncoincore/ion Jul 6, 2020
Currently we plan to enforce new protocol on GMT: Wednesday, May 1, 2019 12:00:00 AM

Client will not require any upgrade, this date will be set with:

    SPORK_8_NEW_PROTOCOL_ENFORCEMENT_DEFAULT

As soon as we release client on github, we will set choosen date over spork.

You can check spork values with `ion-cli spork show`.

  4070908800 means it is off
  any other numebr means that spork will be active from this timestamp

Release notes are being written.

Notable changes:
- minor upgrades and fixes
  - protocol upgrade to 95704
  - client version upgrade to 3.2.x
  - new seeds
  - cleandup and initialized testnet checkpoints
  - readded class CBitcoinAddress class and its definitions
    (**TODO** - _required until refactored for getserials rpc call_)
  - removed and refactored unrequired check if zerocoin is v1
  - fixed leveldb - comparison between signed and unsigned integer expressions (https://github.com/PIVX-Project/PIVX/pull/846)
  - fix redundant redeclaration (https://github.com/PIVX-Project/PIVX/pull/845)
  - fix redundant redeclaration of ‘std::__cxx11::string boost::program_options::to_internal(const string&)’
  - replaced deprecated auto_ptr with unique_ptr (https://github.com/PIVX-Project/PIVX/pull/844)
  - updated dependencies
  - updated snapcraft (https://github.com/ioncoincore/ion/pull/118)
  - implementation of zerocoin protocol
  - updated bip44
- new testnet4
  - cleaned up chainparams
  - refactored testnet which can be launched at any time
    old testnet was very big, with to many forks where no clients are available or hardcoded
  - change nBits from ion's old 0x1e00ffff to 0x1e0ffff0
  - new genesis for testnet
  - new genesis nounce for testnet
- new regtest
  - cleaned up chainparams
  - refactored testnet which can be launched at any time
    ion did not have regression test network for years. Regression test is essential for
    everybody who is interested in this project, especially for testers and developers.
    this PR includes full fix of regression test and works with fake stake suite.
  - new genesis for regtest
  - new genesis nounce for regtest
  - change nBits from ion's old 0x1e00ffff to 0x1e0ffff0
  - fixed mining on regtest
    - mining on regtest can be only performed with `generate` command
      Example for generation of 1000 blocks: `ion-cli --regtest generate 1000`
- GUI
  - minor QT fixes and refactoring
  - Governance tab
- Tools and scripts
  - fake stake issue fixed
  - fake stake test suite
  - copyright updates
  -
- fake xion fix
-
All commits from:
https://github.com/cevap/ION/commit/7fa20d69f6654f5ab8c1508178e7787f9e37febb

to
https://github.com/cevap/ION/commit/fc924c1f63f3c84d7dcaea7e61254b355b55b608

commit fc924c1f63f3c84d7dcaea7e61254b355b55b608
Merge: 757d81c4a dc168d11f
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Mar 27 22:43:05 2019 +0100

    Merge #847: Fix to display missing clock5.png tx image

    dc168d1 fix to display missing clock5.png tx image (joeuhren)

    Tree-SHA512: d10828e76ad1b2e034b013a1c3cac9cf79dfdc642a11d1a6493d615a19982d50fc09343b3b39171ba7c25202f29ed0532f1bc539c42fbdad37a19e58adcc48b1

commit 757d81c4a92a3791629407be9a86c55132225440
Merge: d241b5ed7 56dd114b9
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Tue Mar 26 22:20:45 2019 +0100

    Merge #840: [QT] cleanup, remove old trading dialog form

    56dd114 cleanup, remove trading dialog form (furszy)

    Tree-SHA512: 824547803f5b854c51c22ca87149608725036c5ddee1922ceef7bdc71fcaeac440e77da3c51f7fe44b29269a57990d5ddfd674ca52b4de6ebd6fd36f847f55e8

commit dc168d11f8f067a5de397eafc81c7bcfcae2fa02
Author: joeuhren <46763106+joeuhren@users.noreply.github.com>
Date:   Mon Mar 25 14:04:54 2019 -0600

    fix to display missing clock5.png tx image

commit d241b5ed776466815f2dd78365ed56b0c3682fba
Merge: 5673c8373 6eff5fa97
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Mar 22 15:50:33 2019 -0700

    Merge #837: [Zerocoin][UNIT TEST][RPC] Wrapped serials.

    6eff5fa970 fix xION supply recalculation (random-zebra)
    2676ca3626 newline character added to recalculate wrapped serials supply logging (furszy)
    da43659dd2 Initialize nSupplyBeforeFakeSerial to 0 in TestNet and RegTest (random-zebra)
    c46de31dc4 Fix Wrapped Serials inflated xION supply recalculation (random-zebra)
    13691861f8 zerocoin contextual spend check log invalid serials (furszy)
    0240f27e5f log rejection serial block height (furszy)
    ab6a134f2b invalid fake serial rejection (furszy)
    010d03591c xion recalculation moved in init and added in connectblock (furszy)
    bd6b26b466 fix tabs in SoK (random-zebra)
    41a2bcca29 fix bitSize typo in bignum for openssl (random-zebra)
    29c1791815 inflation methods moved to cpp (furszy)
    027c9ffcb6 wrapped serial inflation trigger recalculation (furszy)
    a3d725a42a Zerocoin supply, wrapped serials inflation + some minor modifications (furszy)
    b3660cbb2e SoK invalid range check. (furszy)
    ad3a3c717b remove tab spaces (furszy)
    ed15e21eb8 Fix isBlockBetweenFakeSerialAttackRange check (random-zebra)
    8e7cf5ab4e Fix IsValidCommitmentToCoinRange check (random-zebra)
    a936e03c22 getserials ambiguous Pair constructor in bitsize blocking clang compilation fix (furszy)
    bd529a0f6e [UNIT TEST] wrapped serial coinSpend check (furszy)
    1217868777 [RPC] Add getserials method (random-zebra)
    9fe8dabc4f fix isValidSerial always true check (random-zebra)
    913e48cda8 wrapped range fix (furszy)
    46a5231574 wrapped serials check in acceptToMemPool method (furszy)
    edfdb4c30b prints in console commented (furszy)
    18e55ed179 fake serials attack enforcement (furszy)

    Tree-SHA512: fe6eaf26257c25377982d44ff1cdd839edf6f71daa5607fc98397b4a3fcd26ae78db54c781038e4f9ff8a7ad1d460ce109909184852bb620435e10dcba6a638c

commit 6eff5fa9706f041438417c69124e480a11479a9f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Mar 22 19:14:50 2019 +0100

    fix xION supply recalculation

commit 2676ca3626ccacf6bbc43daba8cc9eda9b3984e0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Mar 22 12:55:52 2019 +0100

    newline character added to recalculate wrapped serials supply logging

commit 56dd114b99d7d4a1a73f5b1e859838322a1b0ff4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 20 17:23:27 2019 +0100

    cleanup, remove trading dialog form

commit da43659dd21d27aa6bffefaabf8a7c51944feaee
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 20 09:58:14 2019 +0100

    Initialize nSupplyBeforeFakeSerial to 0 in TestNet and RegTest

    and fix percent of reindex feedback in uiInterface

commit c46de31dc45d7b23008472970da3b020f8fac07f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 20 04:20:34 2019 +0100

    Fix Wrapped Serials inflated xION supply recalculation

    and add visual status feedback to UI interface

commit 13691861f8fa39245a0fc257d952fbdfa7618a82
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 13:08:52 2019 +0100

    zerocoin contextual spend check log invalid serials

commit 5673c8373ebba0d516d0fe44d787f69f328f1c26
Merge: 0d738b3dc c3352f0db
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Mar 19 01:29:33 2019 -0700

    Merge #838: [RPC][Test] spendrawzerocoin + wrapped serials functional test

    c3352f0dbd [Test] add 'zerocoin' to the list of good prefixes in test_runner (random-zebra)
    78f1a241ae [Test] wrapped serials: use multiple random values for K (random-zebra)
    bf0cf52d37 [RPC] fix spendrawzerocoin string parsing (random-zebra)
    025d2855f9 [Tests] Add Wrapping Serials Test (random-zebra)
    7373704842 [RPC] Add spendrawzerocoin (random-zebra)

    Tree-SHA512: 707c015b2b40bf6f34999aa7b1a62b1e1be4b8c4d9b0e830ed78ebf2f74a362883708d6204cfadd95f5d6520feb19fc1ba4b8a12549c6cc40c40dc2ab56fb2e9

commit 0240f27e5f0b936e9f9171ef8afcd2a93dc9f961
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 02:50:16 2019 +0100

    log rejection serial block height

commit ab6a134f2b40b72f155e42e51153d6ba1170872b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 02:42:19 2019 +0100

    invalid fake serial rejection

commit 010d03591c81a42bac042cb2fc7f02dd75059c8b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 18:07:27 2019 +0100

    xion recalculation moved in init and added in connectblock

commit bd6b26b466ae111c0ff84932885b16d1f67aede9
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Mar 18 16:28:58 2019 +0100

    fix tabs in SoK

commit 41a2bcca29789ce0fc87c526331f60c88bd2e0ea
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Mar 18 16:05:33 2019 +0100

    fix bitSize typo in bignum for openssl

commit 29c1791815bb5675e5ef53985d8541157d3cdce1
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 15:58:26 2019 +0100

    inflation methods moved to cpp

commit 027c9ffcb687d2093ce16cab4c06b530f5925bf5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:46:43 2019 +0100

    wrapped serial inflation trigger recalculation

commit a3d725a42adbda5aee3d6b7a63c63b6a2d673dde
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:07:49 2019 +0100

    Zerocoin supply, wrapped serials inflation + some minor modifications

commit b3660cbb2e01b1066e0c4fb472d956dff245005a
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:03:27 2019 +0100

    SoK invalid range check.

commit c3352f0dbd0f5a6324fa0ec262d80ab311d58b48
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Mar 16 01:45:14 2019 +0100

    [Test] add 'zerocoin' to the list of good prefixes in test_runner

commit ad3a3c717ba196fc072155f2e71f86ac9838aade
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Mar 16 00:46:59 2019 +0100

    remove tab spaces

commit 78f1a241ae8f3884ccd714b898f1ed733467d9c3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 15:39:45 2019 +0100

    [Test] wrapped serials: use multiple random values for K

commit bf0cf52d3725789d43aaadee5eff750e9173977a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 14:45:40 2019 +0100

    [RPC] fix spendrawzerocoin string parsing

commit ed15e21eb8eab1d506d5eb30c13829a1b3edc3f3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 02:30:50 2019 +0100

    Fix isBlockBetweenFakeSerialAttackRange check

    use only upper bound and only mainnet

commit 025d2855f9ebe323e292962542d6ccb3ea6bd836
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 22:53:00 2019 +0100

    [Tests] Add Wrapping Serials Test

commit 73737048422ad627ee38d73dca52bf04f185472a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 22:16:12 2019 +0100

    [RPC] Add spendrawzerocoin

    and add 'serial hash' to export zerocoins output

commit 8e7cf5ab4e70e7a2370f18765148fd4bc41d1ab6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 18:33:41 2019 +0100

    Fix IsValidCommitmentToCoinRange check

commit a936e03c22b0204235e6831956902522acc1bc63
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 13 14:36:37 2019 +0100

    getserials ambiguous Pair constructor in bitsize blocking clang compilation fix

commit bd529a0f6e91a6abe0305ebf28e3c9dba3cb7316
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 13 14:34:27 2019 +0100

    [UNIT TEST] wrapped serial coinSpend check

commit 12178687775f7e3010c86d46e114f1b408a84ed7
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 10:33:15 2019 +0100

    [RPC] Add getserials method

commit 9fe8dabc4f869842725ca2f212fdab34e935c6fb
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 10:32:32 2019 +0100

    fix isValidSerial always true check

commit 913e48cda8bee4d63f7bf72ff6c45cccaf8abb82
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 12 12:51:36 2019 +0100

    wrapped range fix

commit 46a5231574a47cfd886808cd352b4a2a17abc5d5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 12 02:03:46 2019 +0100

    wrapped serials check in acceptToMemPool method

commit 0d738b3dc073bf9f57a34d5fd5021cee6a56f0fa
Merge: 2b8daac4c 0015d08c7
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Mar 11 02:41:18 2019 -0700

    Merge #826: [Qt] Fix a windows only crash when r-clicking a proposal

    0015d08c75 [Qt] Fix a windows only crash when r-clicking a proposal (warrows)

    Tree-SHA512: 7e9507e4ffbbca6b41d9c9b18d31f7ebfddf01d5abbfd083b2fcbf6d7d398c20391bdc4fc4903c8d1b338d0c78929920264eb6352bbcaa9b2baf1c11df965cc5

commit edfdb4c30b7efe0795805f7e315ba1cabf5b0e8e
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Mar 9 15:38:34 2019 +0100

    prints in console commented

commit 18e55ed179b04b1ce81e3afb9110bb73e92da638
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Mar 7 23:27:46 2019 +0100

    fake serials attack enforcement

commit 2b8daac4c0f29aecc80dfa7e0378ea40a1fd5e90
Merge: 86d613373 52b509468
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Mar 5 00:20:52 2019 -0800

    Merge #822: [Tests] Integrate fake stake tests into parent test suite

    52b509468f Remove stale qtum python scripts (Fuzzbawls)
    c0d8dcb8c9 [Tests] Integrate fake stake tests into parent test suite (Fuzzbawls)

    Tree-SHA512: b0f9d559b3a8a4d0da3d400dfbe57fa15933a3c569732c4d7d10e147e7d5cd5f70a6f5231c862e4ca5f7f3efdb2de5890fe4755cbee5c41b00a4ab34a015c2e4

commit 86d61337353ed14d40c0c3ec789c954b3df39079
Merge: 37a06eaa9 e87231b62
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Mar 3 22:04:59 2019 -0800

    Merge #821: [RPC] Fixup signrawtransaction on regtest

    e87231b62b [RPC] Fixup signrawtransaction on regtest (Fuzzbawls)

    Tree-SHA512: 1e1b9c25abf9b2406b5065b0b348100fe60e13a258d874d681c6df4094a86ecf3e226e39e6c3e1d8b07fa853634c35249f65652641d13741c426c4c9053e7b36

commit 52b509468f4915a682c977ef9da5f971ceb45bbb
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Mar 3 03:40:09 2019 -0800

    Remove stale qtum python scripts

commit 0015d08c75a02692c1169be4876bd2d42ae45ab2
Author: warrows <warrows@gamer666.fr>
Date:   Fri Mar 1 11:13:37 2019 +0100

    [Qt] Fix a windows only crash when r-clicking a proposal

    The problem seems to be related to a stack corruption issue
    occuring within Qt and only for windows 64 builds. Further
    investigation is required but this is a suitable fix for now
    and there is no need to have the r-click doing the sae job as
    the l-click in this situation.

commit 37a06eaa938cab1c4cc7a39298690922519beb7a
Merge: 065f94118 bae276af9
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 27 21:51:22 2019 +0100

    Merge #817: [Wallet] Fix segfault with runtime -disablewallet

    bae276a Don't bother checking obfuscation messages (Fuzzbawls)
    837f25f [Wallet] Fix segfault with runtime -disablewallet (Fuzzbawls)

    Tree-SHA512: a8dd502897cdc82f206a1805f7b1ae51960344c3fa32640c9dc6c271768e7db718bc2f57034e8fabfd1b402e589e531419d1e8af8a25eee71d89a6b79ce3a679

commit c0d8dcb8c9be933ba6c86be95b1a45b89a1337af
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Feb 26 19:16:20 2019 -0800

    [Tests] Integrate fake stake tests into parent test suite

    This integrates each of the 5 test scripts into the parent test suite so
     they can be run from within `test_runner.py` (or still individually).
     One prominent benefit to this is that the 5 tests are now included when
     generating code coverage reports with `make cov`

    `stratisx-notingatstake.py` and `ion_fake_stake.py` are removed as the
    former was a stale leftover from prior to our own test scripts, and the
    latter is now redundant.

commit e87231b62b4fb41f4d14117e39f6c4ef8f3e0447
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Feb 25 00:58:04 2019 -0800

    [RPC] Fixup signrawtransaction on regtest

    The `signrawtransaction` RPC command needed some modification to appease
     the fake stake test cases, however that change introduced a minor
     inconsistency in it's operation.

    This PR restores the original functionality, while still providing a
    means to be used for the fake stake test cases.

commit 065f94118d818faeaef80add16494366d9267120
Merge: f8eb7feef 61a6ea755
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 22:50:11 2019 -0800

    Merge #803: [NET] Invalid blocks from forks stored on disk fix + blocks DoS spam filter.

    61a6ea7558 AcceptBlock() for-each loops variables moved to const (furszy)
    e1974d23f3 AcceptBlock() check for double spent serials only on main chain flag. (furszy)
    babdfb0f26 remove extra debug lines in AcceptBlock (random-zebra)
    a9178bc6e0 AcceptBlock: contextual zcspend check on main chain (random-zebra)
    0d49570f20 AcceptBlock() block stored log removed (furszy)
    b74921756a Fix bug on AcceptBlock when pindex is null (random-zebra)
    45883b9fb6 AcceptBlock() invalid isBlockFromFork flag (furszy)
    6a16049dfa AcceptBlock() reject blocks double spending the coin stake input inside the same block (furszy)
    da1b6836a5 block spam filter, validate non null nodestate (furszy)
    84de55a11c AcceptBlock() isBlockFromFork flag not contemplating prev blocks from forks fixed (furszy)
    4219339521 AcceptBlock() - not accept blocks from a forked chain that exceed the max reorg limit (furszy)
    47759e113c AcceptBlock(), reject invalid PoS stake (furszy)
    e237823000 validate non null pfrom on blockspamfilter check (furszy)
    c2e5459dff AcceptBlock(), serial double spend on the same block validation (furszy)
    3f5091986c zPoS validations of forked chains before store them + inputs check on prev split main chain (furszy)
    64804b4bee Invalid blocks from forks stored on disk fix + blocks DoS spam filter. (furszy)

    Tree-SHA512: 6c5a7fda3eb81dc8b030c9ba624e5101f552ef9cecc839a79237b705c314171c0e9c66ecd8bfd207081c6759272140cf3bdf0da7af6ac4695f0c09b74fb1ba45

commit 61a6ea75585c11ef90f834583c1f206aaa5942b0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Feb 24 23:52:40 2019 +0100

    AcceptBlock() for-each loops variables moved to const

commit f8eb7feefceeb8828cbf5e8172ddf50079d713ca
Merge: 51e7b2c4b fced4e26f
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 14:46:30 2019 -0800

    Merge #812: [Regtest][Tests][RPC] Regtest mode + Test suite.

    fced4e26fe [Tests] fake_stake: reverse stake hash byte order (random-zebra)
    a85cdad03c [Tests] fake_stake: use hashStake for kernel computation (random-zebra)
    6aa5ddbff8 [Tests] fake_stake: remove random prevout from spending (random-zebra)
    8e370da804 [RPC] add mint hashStake to listmintedzerocoins output (random-zebra)
    0d865a8978 [Tests] fake_stake: use a copy for spendingPrevouts (random-zebra)
    0f209b3da8 [Tests] fake_stake: docstrings and comments (random-zebra)
    322ce79a67 [Tests] fake_stake: fix checksum computation (random-zebra)
    7aae5b1e8b [Tests] fake_stake: fix empty spending_prevouts (random-zebra)
    c7555e1b84 [Tests] fake_stake: collect prevouts from create_spam_block (random-zebra)
    1d699432f2 [RPC] Add call 'getchecksumblock' (random-zebra)
    2e7eacc4c4 [Tests] fix line separators in Test03 (random-zebra)
    c6c81a7cd2 [Tests] fake_stake: test03 updated (random-zebra)
    0d8cf5500d [Tests] remove trailing whitespace from README.md (random-zebra)
    9302f5a046 [Tests] fake_stake: test01 & test02 updated (random-zebra)
    e0efe4d530 [Tests] unique 'get_prevout' method for both pos and zpos stakes (random-zebra)
    9318335525 [Tests] remove trailing whitespaces (random-zebra)
    67284ce22a [RPC] add mint block height to 'listmintedzerocoins' (random-zebra)
    d783229568 [Tests] get correct nStakeModifier (random-zebra)
    78e838ee32 [Tests] fix solve_stake nTime / nStakeModifier (random-zebra)
    a428c83609 PoS block creation uniqueness. (furszy)
    dd07bd1a50 [Tests] fix proof of stake target in block class (random-zebra)
    030e557b93 [Tests] fake_stake: fix test 01 block numbers (random-zebra)
    fe54e9b92a [RPC] fix signrawtransaction hack to allow signing of spent inputs (random-zebra)
    79e364354f regtest lastPoWBlock and zerocoin block start decreased to not waste lifetime waiting for the tests. (furszy)
    42e9c01a85 More logging in block generation. (furszy)
    0aa9bafbf4 fake stake test4 (furszy)
    8315a42a7b ion_fake_stake: test03 almost complete (random-zebra)
    1ad11ad9f7 RPC createrawzerocoinstake: fix vout[0], add priv-key (random-zebra)
    ad65ac4e0a REGTEST: Fix bug on GetModifier (random-zebra)
    47f0503b19 RPC: hack MintToTxIn to allow spending an already spent xion on regtest (random-zebra)
    3092cfc0c2 add empty output to createrawzerocoinstake (random-zebra)
    c5a6a67349 log CWallet::MintToTxIn errors (random-zebra)
    252f4ab43e ion_fake_stake: zerocoin prevouts (random-zebra)
    22769817ae GetModifier for regtest zPoS hardcoded to prev block stake modifier (furszy)
    63bd40e064 ion_fake_stake: test_spam method refactoring (random-zebra)
    1df9240727 ion_fake_stake: add test descriptions (random-zebra)
    79e746eb3d zerocoin mint + spent (furszy)
    9eea8837aa half test3 completed (furszy)
    23236e7499 ion_fake_stake: select test from command line (random-zebra)
    44d2e9a1c2 ion_fake_stake: get_prevouts (random-zebra)
    1b27b90e8b ion_fake_stake Test05 - update blockcount in forks (random-zebra)
    88e0dc6442 ion_fake_stake Test05 - more blocks fix (random-zebra)
    bf3b732dc5 ion_fake_stake Test05 - more blocks (random-zebra)
    a25f2e84a2 ion_fake_stake Test05 (random-zebra)
    427f2f168b test05 completed, rejection of double spend coin stake input on the same block on main/forked chain (furszy)
    3cbf43e7db test05 (furszy)
    f7a48260c6 Add 'createrawzerocoinstake' method (random-zebra)
    70d859e055 test_02 working good. (furszy)
    ed63600142 ION_fake_stake: zerocoin tests (random-zebra)
    07b981af88 no time validation for regtest (furszy)
    47c2c65721 import bytes_to_hex on test_02 fix (furszy)
    c02002bdd4 ION_fake_stake: fix coinstake out value (random-zebra)
    35f09e5d21 submitblock assertion on test_02 (furszy)
    d0c0dccff5 ION_fake_stake: fix coinbase nHeight merge (random-zebra)
    2cf7ae1939 ION_fake_stake: fix txes in create_spam_block (random-zebra)
    ef01bd8141 zPoS running on regtest :) (furszy)
    5405d1ce2d Zerocoin fixed on regtest & PoS blocks generation fixes. (furszy)
    158bd2b215 regtest PoS generate valid blocks (furszy)
    71a3743108 Tests: fixup a conditional check for python block creation (Fuzzbawls)
    b3950ff436 Tests: update nothingatstake test file (Fuzzbawls)
    f40f576eb3 stakemodifier fixed for regtest (furszy)
    80a2aec5df Tests: serialize block signature when present (Fuzzbawls)
    9cec3bd2f5 RPC: hack signrawtransaction to allow signing an already spent input (Fuzzbawls)
    5c0f0b99ed WIP: port the test for "fake stake" issue test (Fuzzbawls)
    b074cd0e42 RPC: return the used stake modifier in getblock (Fuzzbawls)
    1ffc443ba6 Regtest: mine the correct version blocks (Fuzzbawls)
    3d588ead42 Tests: Remove whitespace in default conf file (Fuzzbawls)
    ebdc552408 Fixup the walletdump command and python test (Fuzzbawls)
    37b29c7e61 [Tests] Add Basic BIP38 RPC functionality test (Fuzzbawls)
    c2cfff0a23 Tests: add size field to test json (Fuzzbawls)
    2155506247 Add rpm contrib files (Fuzzbawls)
    4e62dd9ee8 Main: reject non-final transactions using nLocktime from entering the mempool. (Fuzzbawls)
    4c71b5694a [RPC] Ensure Tx/Budget input hashes are of the proper length (Fuzzbawls)
    7d37c1c207 [RPC] Update and harden many raw transaction RPC commands (Fuzzbawls)
    262f76a9d0 [RPC] Error early when block doesn't start with a coinbase transaction (Fuzzbawls)
    7e0476b25a RPC: Add waitforblock/waitfornewblock/waitforblockheight (Fuzzbawls)
    22bfe7ea2c [Tests] Initial update for regression test suite tests (Fuzzbawls)
    93fd9f0501 Update block generation code to enable regtest mode (Fuzzbawls)
    25fc43698b Build: add test runner packaging to configure (Fuzzbawls)

    Tree-SHA512: 09bcd3c727eb85103451cf971e0bc3a27eca205318ebb6c600a26ddc97f58ef456aa6768c9e94fd5c484da5071887e5b50c2bcf90318cfe2c9178c0c746a408b

commit bae276af944b357b4ed5542c0ddf2db4081844fb
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 00:28:44 2019 -0800

    Don't bother checking obfuscation messages

    Obfuscation has all but been removed, no need to check incoming messages
    for it's functionality anymore

commit 837f25f4e9187211620e747df3672d7130d7a48e
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 23 02:09:05 2019 -0800

    [Wallet] Fix segfault with runtime -disablewallet

commit 51e7b2c4b012182ecee22930a9d19946d613648b
Merge: a611a7fa7 867d1b573
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Sat Feb 23 21:58:32 2019 +0100

    Merge #816: [Doc] Update build-unix.md

    867d1b5 [Doc] Update build-unix.md (Fuzzbawls)

    Tree-SHA512: fcb195491a46328908146b26588595d3d93bfab8ceb658fb960dd9364fdb7f1c462c888b9cca74364344786722f208ff2f59d31b1fe820c0b8bf5b33a1546c64

commit 867d1b573fd1055661325aee2d355527abbf155c
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 23 00:18:00 2019 -0800

    [Doc] Update build-unix.md

    Update the Unix build notes to be more complete, with mentioning of the
    GMP and ZeroMQ dependencies, as well as OpenSSL version note.

    Other stylistic updates as needed.

commit a611a7fa777b89f8752cad430a8b8e370deee8a2
Merge: c12697469 0eaf96d85
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 20 22:26:17 2019 +0100

    Merge #757: [Doc] Update doc/build-windows.md

    0eaf96d Update doc/build-windows.md (idas4you)

    Tree-SHA512: 3f8a3067887d84fe371b5ba80b70c95d7a1f2b95b938c5f1059df0f884630595f75abf38676af5ce5a2983f3971791ec56fdaa979ff6b656cb06b3ddd7326df6

commit c12697469b27f23cdd266a408914eb80cc652931
Merge: ed0dd2a20 400886551
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 20 22:08:17 2019 +0100

    Merge #792: [UI] Add a budget monitoring and voting tab

    4008865 [Travis] Fix trailing whitespaces (warrows)
    87b9809 [UI] Rework proposal frames (warrows)
    8b8a712 [UI] Add global budget information to governance tab (warrows)
    f7674fb [UI] Clean proposal list when updating (warrows)
    bbf3274 [UI] Use only one column for Proposal list (warrows)
    d6c68c6 [UI] remove unused textlabel from governance page (warrows)
    39eb903 [Qt] Add basic GUI voting tab to the wallet (Fuzzbawls)

    Tree-SHA512: 438afbb8ed1dbe0892164b6f6b3d0ac3b825b2e7855115f1137bf5bcf454533e375774cd835c19ea529bb1ff0a4f886a3e71e809e9893a102ae841a1a4be8f9a

commit fced4e26fe712c07e05b3744b9eac2a3f8ad31b5
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 18:57:47 2019 +0100

    [Tests] fake_stake: reverse stake hash byte order

commit a85cdad03cfece1fdcb4732d8b2cb19e698167fb
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:25:51 2019 +0100

    [Tests] fake_stake: use hashStake for kernel computation

commit 6aa5ddbff8cd788f2b5a66ff502e71ff5db5f2ee
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:19:04 2019 +0100

    [Tests] fake_stake: remove random prevout from spending

commit 8e370da804ae1cf0f1c5af6b50bb12c59fbfe47d
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:18:24 2019 +0100

    [RPC] add mint hashStake to listmintedzerocoins output

commit 0d865a8978682a3c8976c210817336b119bdf41f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Feb 16 11:43:51 2019 +0100

    [Tests] fake_stake: use a copy for spendingPrevouts

commit 0f209b3da879899a286154ccdd46c022dddc24bc
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Feb 16 00:54:48 2019 +0100

    [Tests] fake_stake: docstrings and comments

commit 322ce79a6745fe571ae7c2f8f0d64eea27f12682
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:54:33 2019 +0100

    [Tests] fake_stake: fix checksum computation

commit 7aae5b1e8b93add3adde84d049ae0cf54dc941df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:17:10 2019 +0100

    [Tests] fake_stake: fix empty spending_prevouts

commit c7555e1b8472592b09021bc570dc635b66f175c6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:07:34 2019 +0100

    [Tests] fake_stake: collect prevouts from create_spam_block

commit 1d699432f2e2b73a4bf96f08a76b9c889bcbaeda
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 18:25:40 2019 +0100

    [RPC] Add call 'getchecksumblock'

    which returns the first occurrence of a block with given accumulator checksum

commit 2e7eacc4c47a94018a82dc16371b16c63651e64e
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 09:57:49 2019 +0100

    [Tests] fix line separators in Test03

commit c6c81a7cd20a5287f35ba00418af171f2cecb905
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 18:06:01 2019 +0100

    [Tests] fake_stake: test03 updated

commit 0d8cf5500daf4896a4b48c573b1e2155c3f0deb3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:56:40 2019 +0100

    [Tests] remove trailing whitespace from README.md

commit 9302f5a0463029696637b632b884d943f39c75c8
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:50:40 2019 +0100

    [Tests] fake_stake: test01 & test02 updated

commit e0efe4d530550d950af788148ecfc453db8bf83a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:50:06 2019 +0100

    [Tests] unique 'get_prevout' method for both pos and zpos stakes

commit 93183355259994dd3278618b267231bf8b745fcc
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:47:06 2019 +0100

    [Tests] remove trailing whitespaces

commit 67284ce22af1c6cc931b8c42a3abe2ea57549b90
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:27:34 2019 +0100

    [RPC] add mint block height to 'listmintedzerocoins'

commit 0eaf96d8565ce9335745c774de4761ca232e8063
Author: idas4you <idas4you@gmail.com>
Date:   Thu Nov 8 11:31:12 2018 +0900

    Update doc/build-windows.md

commit 64b2bb324e2deaf29f27529094ca0cb05720a250
Merge: d78322956 26e98a8df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 01:05:39 2019 +0100

    Merge branch '2019_regtest-mode-and-fake-test-suite' of https://github.com/furszy/ION into 2019_miller_tests

commit d783229568f4fccadce8e05ae7f0001692ea4041
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 01:04:59 2019 +0100

    [Tests] get correct nStakeModifier

commit 26e98a8df8532bf7842c98a0b456e2e060637f8a
Merge: a428c8360 78e838ee3
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 13 23:45:41 2019 +0100

    Merge pull request #8 from random-zebra/2019_miller_tests

    [Tests] fix solve_stake nTime / nStakeModifier

commit 78e838ee32344ab4cf56f25a21d65111e09b49df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 13 23:33:58 2019 +0100

    [Tests] fix solve_stake nTime / nStakeModifier

commit a428c83609e8532c8db14caaf8e01e4a1ffac1f8
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 13 13:31:26 2019 +0100

    PoS block creation uniqueness.

commit 90631bebd99844d4d3f56648f1ab0caedaf1fcae
Merge: eb1258375 dd07bd1a5
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 12 15:53:16 2019 +0100

    Merge pull request #7 from random-zebra/2019_miller_tests

    [Tests] fix proof of stake target in block class

commit dd07bd1a50ca24a4f138c6b255b534ae65b32aa1
Author: random-zebra <random.zebra@protonmail.com>
Date:   Tue Feb 12 15:47:50 2019 +0100

    [Tests] fix proof of stake target in block class

commit eb1258375a8aeb67bd18084b6eab00595a9232e6
Merge: 79e364354 030e557b9
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 12 00:09:21 2019 +0100

    Merge pull request #6 from random-zebra/2019_miller_tests

    Additions to Regtest - fakeStake suite

commit 030e557b93d46733c8e647c63ce756e4900fdd38
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 11 23:38:55 2019 +0100

    [Tests] fake_stake: fix test 01 block numbers

commit fe54e9b92a601b8a38f3488e9567e10fe2a9b7bf
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 11 23:23:55 2019 +0100

    [RPC] fix signrawtransaction hack to allow signing of spent inputs

commit 79e364354ffd3f0aadb617d576efc8175037aa46
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 17:00:44 2019 +0100

    regtest lastPoWBlock and zerocoin block start decreased to not waste lifetime waiting for the tests.

commit 42e9c01a85bd031f15b6b26ce806ca35c46efc23
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 16:59:06 2019 +0100

    More logging in block generation.

commit 0aa9bafbf40597500f6f09ce2e016159c415a36f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 12:25:07 2019 +0100

    fake stake test4

commit 8315a42a7b4581deb70681f2930f29b71f37138b
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 14:56:24 2019 +0100

    ion_fake_stake: test03 almost complete

commit 1ad11ad9f7b4befa10538075d0ed091936522d4f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:32:27 2019 +0100

    RPC createrawzerocoinstake: fix vout[0], add priv-key

commit ad65ac4e0a191d042c4e50a2ac06f7cebc605787
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:31:51 2019 +0100

    REGTEST: Fix bug on GetModifier

commit 47f0503b197245b143135f259381ef0a9c257c74
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:42:59 2019 +0100

    RPC: hack MintToTxIn to allow spending an already spent xion on regtest

commit 3092cfc0c2d111449b5441aaebac485812e693b4
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:41:35 2019 +0100

    add empty output to createrawzerocoinstake

commit c5a6a67349ad65d4626a09f7559aeda66a267624
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:31:56 2019 +0100

    log CWallet::MintToTxIn errors

commit 252f4ab43e450d83819c632ed1c296093d37c044
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 03:01:30 2019 +0100

    ion_fake_stake: zerocoin prevouts

commit 22769817ae95cca134c33391b9df743f6e66be60
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 01:56:56 2019 +0100

    GetModifier for regtest zPoS hardcoded to prev block stake modifier

commit 63bd40e06419d309970d94c9c54196a724339e26
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 00:24:31 2019 +0100

    ion_fake_stake: test_spam method refactoring

commit 1df92407276689619bcd34948737ba83860b6959
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 21:48:25 2019 +0100

    ion_fake_stake: add test descriptions

commit 79e746eb3dccba245d716743ded3fdedfb9ebcbe
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 6 21:37:48 2019 +0100

    zerocoin mint + spent

commit 9eea8837aa76fe07dc3ffecd96fe150541905400
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 6 17:09:38 2019 +0100

    half test3 completed

commit 23236e7499fb98bd1df49d56cd6d4c3cfda9db56
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 16:34:54 2019 +0100

    ion_fake_stake: select test from command line

commit 44d2e9a1c22678c600e987a2da468549ba3c2a13
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 15:46:41 2019 +0100

    ion_fake_stake: get_prevouts

commit 1b27b90e8bc3d7fa4fae349b60252501bcd1bb39
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:58:19 2019 +0100

    ion_fake_stake Test05 - update blockcount in forks

commit 88e0dc644228458bb97cd4d65437310921d9bee1
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:51:54 2019 +0100

    ion_fake_stake Test05 - more blocks fix

commit bf3b732dc5a4dfae622871c82502e454d54d9ae6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:07:29 2019 +0100

    ion_fake_stake Test05 - more blocks

commit a25f2e84a2c2df6d0fc27c59dbb9362deb8c8ed7
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 12:00:16 2019 +0100

    ion_fake_stake Test05

commit 427f2f168b9dfb11ebc7edaa29813db3ed49d1cc
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 22:12:09 2019 +0100

    test05 completed, rejection of double spend coin stake input on the same block on main/forked chain

commit 3cbf43e7db151309c724978ac309ea0bc19368e4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 17:50:17 2019 +0100

    test05

commit f7a48260c63ff6f1a0a5817298eb6c9597c59844
Author: random-zebra <random.zebra@protonmail.com>
Date:   Tue Feb 5 16:42:51 2019 +0100

    Add 'createrawzerocoinstake' method

commit 70d859e0552e5213c082706bef4562e804104567
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 12:18:36 2019 +0100

    test_02 working good.

commit ed63600142da846755d3f820be2f4afaec208929
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 17:15:41 2019 +0100

    ION_fake_stake: zerocoin tests

commit 07b981af8819bc7f88f30bfa7f1f74481645646c
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 13:12:55 2019 +0100

    no time validation for regtest

commit 47c2c65721598fb42bc85f13b2a6661ac071773f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 12:42:12 2019 +0100

    import bytes_to_hex on test_02 fix

commit c02002bdd48a292f57f03874e3b8a692f22cab4f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 03:02:30 2019 +0100

    ION_fake_stake: fix coinstake out value

commit 35f09e5d2124b063124f19eef83fe9a6bac35dd5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 03:01:15 2019 +0100

    submitblock assertion on test_02

commit d0c0dccff5673648ffe86e1b8f65077b01e26f64
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 02:30:12 2019 +0100

    ION_fake_stake: fix coinbase nHeight merge

commit 2cf7ae1939f3bae9b4a32aa06ce298f54baa36be
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 00:17:14 2019 +0100

    ION_fake_stake: fix txes in create_spam_block

commit ef01bd81418f72908b73c438f0238843e11f6510
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Feb 3 17:49:18 2019 +0100

    zPoS running on regtest :)

commit 5405d1ce2da8372dbd0c54e75cdc2db57661e8a5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 11:43:36 2019 +0100

    Zerocoin fixed on regtest & PoS blocks generation fixes.

commit 158bd2b215599eaca2d1292fa1d5034dbb03a032
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 29 01:00:12 2019 +0100

    regtest PoS generate valid blocks

commit 71a3743108b7bed58fb057615a1a05f51dd71dbc
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Jan 30 23:11:48 2019 -0800

    Tests: fixup a conditional check for python block creation

commit b3950ff436f73c6c43a5ded27c97f9505febd5aa
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 28 02:09:44 2019 -0800

    Tests: update nothingatstake test file

    - reintroduce spam transactions
    - make disk size usage output in kilobytes
    - add assertion check after stopping node for disk size usage
    - do fuckall with the node(s) setup (this was in the original script,
    but likely doesn't change anything from how I had it previously)

commit f40f576eb3f5f4f863796f3693fa61f8f0bd5421
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 11:15:22 2019 +0100

    stakemodifier fixed for regtest

commit 80a2aec5dff50753af89ee1ad975c8a0baa1287a
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 28 02:04:32 2019 -0800

    Tests: serialize block signature when present

    Needed for signing proof of stake blocks

commit 9cec3bd2f5b011f45859a229897f2618ee7c434f
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 27 22:36:44 2019 -0800

    RPC: hack signrawtransaction to allow signing an already spent input

    Only works on regtest, obviously

commit 5c0f0b99edcadbaa16c6281f067c67db251b6caa
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:34:58 2019 -0800

    WIP: port the test for "fake stake" issue test

    Currently this is non-functional as the created coinstake transaction
    cannot be signed properly (passing the transaction to the coin daemon
    via `signrawtransaction` returns an error)

commit b074cd0e42e94895903aa5ac09d754549f8c3cc4
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:31:08 2019 -0800

    RPC: return the used stake modifier in getblock

commit 1ffc443ba62b66586f148b6736aeb8c928730550
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:28:57 2019 -0800

    Regtest: mine the correct version blocks

    Zerocoin rules mandate that block version must be < 4 prior to zerocoin
    activation height. To prevent erroring on regtest, and still allow for
    manual/scripted changing of the block version, set some locical defaults
    .

commit 3d588ead42b07c223a1370d09038d17b71f04fa4
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:15:19 2019 -0800

    Tests: Remove whitespace in default conf file

commit ebdc552408e748a78fa4273ffd8091a0c3e57da1
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:14:30 2019 -0800

    Fixup the walletdump command and python test

commit 37b29c7e618b8ca23faca3a08a870740357116f6
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Sep 21 21:55:58 2018 -0700

    [Tests] Add Basic BIP38 RPC functionality test

commit c2cfff0a234607acf413b1053c2c0ce260ad6e16
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Sep 19 16:18:58 2018 -0700

    Tests: add size field to test json

commit 2155506247b19f5cad072953f8892b133938c951
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Sep 19 14:17:50 2018 -0700

    Add rpm contrib files

commit 4e62dd9ee8d00b016a315dd9f09197d6d9a3cedd
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:38:19 2018 -0700

    Main: reject non-final transactions using nLocktime from entering the
    mempool.

commit 4c71b5694a68ca2c27a88a579aaf21e2fd75dba9
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:34:07 2018 -0700

    [RPC] Ensure Tx/Budget input hashes are of the proper length

    Transaction and Budget hashes are always 64 characters in length. Return
     a descriptive error if this is not the case.

commit 7d37c1c207b8cb7f69664e5873ba6b882592234d
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:27:57 2018 -0700

    [RPC] Update and harden many raw transaction RPC commands

commit 262f76a9d0d853970d40bd1828245d8a66d2ec3d
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Sep 16 22:52:22 2018 -0700

    [RPC] Error early when block doesn't start with a coinbase transaction

    submitblock (used for PoW) can return an error message earlier by
    checking that the first transaction is a coinbase transaction.

    This prevents wasting time with running the block through later
    validation checks that will ultimately fail.

commit 7e0476b25a81a442cfb22fea4aa414d7afcd6bec
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Sep 9 12:43:49 2018 -0700

    RPC: Add waitforblock/waitfornewblock/waitforblockheight

    Used in functional tests

commit 22bfe7ea2c2904cffc11a45b8535073f30cdf47e
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Thu Jan 18 17:21:03 2018 -0800

    [Tests] Initial update for regression test suite tests

    TOTO: fixup all tests / add new ones

commit 93fd9f05019d388e3f50ceb39ced8f2710327fe7
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Nov 19 22:14:51 2017 -0800

    Update block generation code to enable regtest mode

    Also update the icon/splash images for regtest

commit 25fc43698b71c9bbd9f8948c9652fc0c8b46b518
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Thu Sep 6 16:46:01 2018 -0700

    Build: add test runner packaging to configure

commit e1974d23f31589f1c4e07062c7e4214abc281141
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Feb 8 15:32:49 2019 +0100

    AcceptBlock() check for double spent serials only on main chain flag.

commit babdfb0f26b1733c0969f9106084134c0c774efa
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 8 12:11:57 2019 +0100

    remove extra debug lines in AcceptBlock

commit a9178bc6e0d5deb7b79690bc5f595beb8b19c720
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 14:55:30 2019 +0100

    AcceptBlock: contextual zcspend check on main chain

commit 0d49570f208baeee89b0c426541ed4434940ed34
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 17:52:39 2019 +0100

    AcceptBlock() block stored log removed

commit b74921756a3c93e8c9e8569cea68cbda873df10d
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:31:19 2019 +0100

    Fix bug on AcceptBlock when pindex is null

commit 97c266bd5c99f66006d4f017d6c9f2ad95ab8533
Merge: 6a16049df 45883b9fb
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 13:19:30 2019 +0100

    Merge branch 'invalid_blocks_storage_and_blocks_DoS_spam_filter' of https://github.com/furszy/ION into invalid_blocks_storage_and_blocks_DoS_spam_filter

commit 6a16049dfa27f7aba0bdeae4f35660daa734bf42
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 22:10:27 2019 +0100

    AcceptBlock() reject blocks double spending the coin stake input inside the same block

commit ed0dd2a20a87e9de56e9ff33387a8e68043fe840
Merge: 81c7c4764 9f89762dc
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Tue Feb 5 22:31:26 2019 +0100

    Merge #802: [Refactor] Remove begin/end_ptr functions

    9f89762 [Refactor] Remove begin/end_ptr functions (warrows)

    Tree-SHA512: 420b7dad43df23876cd891104c8a3f1c557c9dc20fa726c69fe80eaf13b353e4301e8c0abc2abde29896f991dd88aaddc7d19996a3b7287a6244fbfd5700facf

commit 45883b9fb6230b40a4358426305da77a20a9fda4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 11:30:58 2019 +0100

    AcceptBlock() invalid isBlockFromFork flag

commit 81c7c4764cbcb3274509ea65963cecf8eb8bbf63
Merge: 204c038a4 8e86b893a
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Mon Feb 4 20:33:10 2019 +0100

    Merge #758: [Depends] Update libsecp256k1 to latest master

    c6634ef Squashed 'src/secp256k1/' changes from 452d8e4d2..1086fda4c (warrows)

    Tree-SHA512: 7ebcd89f661b94c7ee52c57c3b1879e5ddf363205b326c8ed442bd4f88765701f22b3413e296519b589a4b0d150488a9dd911459eb9b9834d4e8dde3e21049b1

commit da1b6836a5e11f0fb514ce7364eee2eaa033be3f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 03:47:18 2019 +0100

    block spam filter, validate non null nodestate

commit 84de55a11ca23bb4cc8e8800358cedf9a8202d60
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 00:24:14 2019 +0100

    AcceptBlock() isBlockFromFork flag not contemplating prev blocks from forks fixed

commit 204c038a4d0f5529787802df9ffe1743b62551d0
Merge: d4762f7e7 5bd855c67
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 3 17:22:55 2019 -0800

    Merge #768: [Net] Zerocoin Light Node Protocol

    5bd855c673 removing apocaliptic comment (furszy)
    95947bb9f7 logprint fixed (furszy)
    91780b54cf log new line added + lightxionthread .h/.cpp (furszy)
    95da6abadb Incorrect number of arguments for LogPrint(f) statement found. fixed (furszy)
    d72543ffe3 node_bloom_light_zc invalid if statement fixed (furszy)
    a9b992adcd remove old comment (furszy)
    09ba617e26 remove tab spaces (furszy)
    d373e1d25a minor updates to PR 768 (random-zebra)
    7b2310cad4 Zerocoin Light Node Protocol (furszy)

    Tree-SHA512: a85026a9626aacff07826d2a7eab198327d82d620fce4d1f64962e6c0158fa4a0c3c5c355aaed94809928fe5dd77e90810244cb04e41152517d48ebcb76d04f2

commit 5bd855c673fb00d8ece468af7db8c89b90e59a00
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 22 17:40:26 2019 +0100

    removing apocaliptic comment

commit 95947bb9f7b7f5fb3bb86dfa03446cf6ec55dde5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Jan 21 14:07:06 2019 +0100

    logprint fixed

commit 91780b54cf5ffba9cd96dc91ec9c7296458198b9
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Jan 21 13:25:09 2019 +0100

    log new line added + lightxionthread .h/.cpp

commit 95da6abadb97384e2d8ad54e13a351fdbea0a25e
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Jan 18 00:37:37 2019 +0100

    Incorrect number of arguments for LogPrint(f) statement found. fixed

commit d72543ffe3a80108b9b0876036a620e32d921114
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Jan 17 23:08:29 2019 +0100

    node_bloom_light_zc invalid if statement fixed

commit a9b992adcdcba996982ed6dd38ceb1c418abb35b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Dec 14 11:22:29 2018 +0100

    remove old comment

commit 09ba617e267e0c52af315933f8bd5a253ece627d
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Dec 13 22:03:52 2018 +0100

    remove tab spaces

    tabs removed

    tabs removed

commit d373e1d25a760633ff247492ff4f320938d383b8
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Dec 5 21:11:41 2018 +0100

    minor updates to PR 768

commit 7b2310cad4c45548f0fc856c15ac1c805f196b5f
Author: furszy <mati_fur@hotmail.com>
Date:   Thu Nov 8 01:11:11 2018 +0100

    Zerocoin Light Node Protocol

commit d4762f7e7a6f4c7ed796fa9a574f9f9a95b0c4f9
Merge: 4a8e46a15 2159a5860
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 3 14:40:30 2019 -0800

    Merge #763: [Wallet] Add automint address

    2159a58601 Add newly created automint addresses to the set (Fuzzbawls)
    1c0169e494 Show automint address state in getwalletinfo (Fuzzbawls)
    9374d5123b Add RPC command to enable/disable automint address functionality (Fuzzbawls)
    0a364d4ff8 Add UI option to enable/disable automint addresses (Fuzzbawls)
    72491216cf Add runtime/startup option to disable automint address functionality (Fuzzbawls)
    65aefe8021 Add newly created automint addresses to the address book (Fuzzbawls)
    6c2df854d9 Ensure wallet is unlocked for createautomintaddress (Fuzzbawls)
    4205d57c14 Add automint address (presstab)

    Tree-SHA512: 76900c564eb6abe3cfa1606559aba4d6725be04126268b06215619fef8f83d58e953985469e2c97086a6cd0e6d60fb9f9e58aca1cee56e1a7bf9668e82c94fa8

commit 4a8e46a15829ae832aefdbf31fb59ad91a5b8870
Merge: a663bccea 189d6a958
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 2 17:11:56 2019 -0800

    Merge #804: [Depends] Update zmq to 4.3.1

    189d6a958e Update zmq to 4.3.1 (Dimitris Apostolou)

    Tree-SHA512: 0226edb402b0594c616e580fe497d600eb2144d8eba8aa458d8255b093173306ff99429058c356e742896a4ac9ecbf92507b2da5cb16e8aa95c8c52860a20a21

commit 4219339521b5305557a81b538f20871498595e34
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Jan 30 20:53:24 2019 +0100

    AcceptBlock() - not accept blocks from a forked chain that exceed the max reorg limit

commit 47759e113cb12d5df7f60c13e79debbaef0a427c
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 29 16:45:00 2019 +0100

    AcceptBlock(), reject invalid PoS stake

commit e237823000153ef2b8ea72cc823ef9fd2739d4f0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Jan 27 14:25:48 2019 +0100

    validate non null pfrom on blockspamfilter check

commit c2e5459dff566a25616688ed0a502a471141c5b5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Jan 26 22:29:22 2019 +0100

    AcceptBlock(), serial double spend on the same block validation

commit 189d6a958e31e08f212d0a9cddecf257ae4d76f5
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Jan 17 18:25:38 2019 +0200

    Update zmq to 4.3.1

    Addresses https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6250

    Signed-off-by: cevap <dev@i2pmail.org>

commit 3f5091986c5f0798fd2d234924dea6da29872bd0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Jan 26 00:48:59 2019 +0100

    zPoS validations of forked chains before store them + inputs check on prev split main chain

commit 64804b4bee2dda0f27a6f8a39f3a7f0bf0e24a3b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Jan 25 12:26:30 2019 +0100

    Invalid blocks from forks stored on disk fix + blocks DoS spam filter.

    loop through forked blocks fix

    Invalid blocks from forks stored on disk Fix + Blocks DoS spam filter

    minor re organization

    minor cosmetic changes

    comments

commit 9f89762dcc8de13f48c2fdcfd0577ced16df2462
Author: warrows <warrows@gamer666.fr>
Date:   Wed Jan 23 20:17:54 2019 +0100

    [Refactor] Remove begin/end_ptr functions

    With C++11 these functions are not needed anymore and gracefully
    replaced

commit a663bccea720e3a01607178906d5efed145a6dd8
Merge: 7fa20d69f 7dfa9b27f
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Mon Jan 21 20:37:12 2019 +0100

    Merge #798: [Net] Improve addrman Select() performance when buckets are nearly empty

    7dfa9b2 Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)

    Tree-SHA512: 64a16dd027174a45931e73c82e04629738b4caca8500d8cb04a1739d5f5529726d3ff27357f0bdf881fc4ccf278a7a6ac2b904e3a7822af32d8dce096ef16dce

commit 7dfa9b27f8f3af1407599bc96a58056395278444
Author: Pieter Wuille <pieter.wuille@gmail.com>
Date:   Thu Aug 6 19:49:19 2015 +0200

    Improve addrman Select() performance when buckets are nearly empty

commit 2159a5860151df5c4415f245b551112697961be9
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Jan 18 01:33:32 2019 -0800

    Add newly created automint addresses to the set

    Ensures that a wallet restart isn't required after generating a new automint address by adding it to the set.

commit 1c0169e494c4d3927ac1ca5776655b2232ec573c
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 14 18:56:25 2019 -0800

    Show automint address state in getwalletinfo

    Adds a new output line to getwalletinfo showing if automint address functionality is enabled or disabled.

commit 9374d5123b98d294691667d891eac5cf46857b20
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 14 18:55:06 2019 -0800

    Add RPC command to enable/disable automint address functionality

    This compliments the UI's ability to toggle the state of automint address functionality for CLI/RPC users.

commit 0a364d4ff8067517ef555a273084efa74b3ae9d5
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 03:27:21 2019 -0800

    Add UI option to enable/disable automint addresses

    This compliments the runtime (command line) option of enabling/disabling the automint address functionality. Option can be toggled on/off without the need to restart the client.

commit 72491216cfd1edeb729ed8a585d2432b86983557
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 01:20:05 2019 -0800

    Add runtime/startup option to disable automint address functionality

    Defaults to true/enabled

commit 65aefe802168ed84784b7fb7a757b8d53c7348a6
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 01:17:44 2019 -0800

    Add newly created automint addresses to the address book

    Default account/label is hard-coded to "automint-address" so as to be visually identified in the wallet's GUI.

commit 6c2df854d98e634f95d22b7b6117e42962072c42
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 7 23:03:53 2019 -0800

    Ensure wallet is unlocked for createautomintaddress

    Also changed the return to a simple string (instead of a JSON object) to be consistent with other RPC commands that return just a single address.

commit 4008865514afa6ab088281bee998801cd1267d2e
Author: warrows <warrows@gamer666.fr>
Date:   Mon Jan 7 15:24:43 2019 +0100

    [Travis] Fix trailing whitespaces

commit 87b9809a0981425da3935b585822e5f658c8ea24
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 27 14:02:49 2018 +0100

    [UI] Rework proposal frames

commit 8b8a712e3c0797dea724b2abe1a03ffac8018790
Author: warrows <warrows@gamer666.fr>
Date:   Fri Dec 21 11:56:47 2018 +0100

    [UI] Add global budget information to governance tab

commit f7674fbeebbb31171907c9c225b65ed21f8be0c8
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 22:06:06 2018 +0100

    [UI] Clean proposal list when updating

commit bbf327459438b29a53d691ea221ab9d30b53fa35
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 14:34:25 2018 +0100

    [UI] Use only one column for Proposal list

commit d6c68c6ec452d5b1378d428b508c725da8489bde
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 11:59:07 2018 +0100

    [UI] remove unused textlabel from governance page

commit 39eb903817e3dde0dffb137b455588a312a6dafe
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jun 4 00:36:03 2018 -0700

    [Qt] Add basic GUI voting tab to the wallet

commit 4205d57c1465fcefbeb3a032f5ffd5af870c4536
Author: presstab <presstab1337@gmail.com>
Date:   Sun Oct 28 22:25:31 2018 -0600

    Add automint address

commit 8e86b893a3adfa1d0f7b02a10bbcc24fb1d7fa14
Merge: 63fb77b0a c6634ef06
Author: warrows <warrows@gamer666.fr>
Date:   Tue Oct 23 11:22:46 2018 +0200

    Merge commit 'c6634ef065ceb295522f0d61a3d45d8d53abe51c' into libsecp_update

commit c6634ef065ceb295522f0d61a3d45d8d53abe51c
Author: warrows <warrows@gamer666.fr>
Date:   Tue Oct 23 11:22:46 2018 +0200

    Squashed 'src/secp256k1/' changes from 452d8e4d2..1086fda4c

    1086fda4c Merge #354: [ECDH API change] Support custom hash function
    1e6f1f5ad Merge #529: fix tests.c in the count == 0 case
    c8fbc3c39 [ECDH API change] Allow pass arbitrary data to hash function
    b00be6505 [ECDH API change] Support custom hash function
    95e99f196 fix tests.c in the count == 0 case

    git-subtree-dir: src/secp256k1
    git-subtree-split: 1086fda4c1975d0cad8d3cad96794a64ec12dca4
FornaxA referenced this issue in ioncoincore/ion Jul 6, 2020
…d more (dashpay#141)

- update from source to 3.2.x
  - All commits are squashed in range of (includes all source PR's up to march 28 fc924c1f):
  - 7fa20d69..fc924c1f
    (https://github.com/PIVX-Project/PIVX/commit/7fa20d69f6654f5ab8c1508178e7787f9e37febb)
    (https://github.com/PIVX-Project/PIVX/commit/fc924c1f63f3c84d7dcaea7e61254b355b55b608)

When do I have to upgrade?
--------------------------

Currently we plan to enforce new protocol on GMT: Wednesday, May 1, 2019 12:00:00 AM

Client will not require any upgrade, this date will be set with:

    SPORK_8_NEW_PROTOCOL_ENFORCEMENT_DEFAULT

As soon as we release client on github, we will set choosen date over spork.

You can check spork values with `ion-cli spork show`.

  4070908800 means it is off
  any other numebr means that spork will be active from this timestamp

Release notes are being written.

Notable changes:
- minor upgrades and fixes
  - protocol upgrade to 95704
  - client version upgrade to 3.2.x
  - new seeds
  - cleandup and initialized testnet checkpoints
  - readded class CBitcoinAddress class and its definitions
    (**TODO** - _required until refactored for getserials rpc call_)
  - removed and refactored unrequired check if zerocoin is v1
  - fixed leveldb - comparison between signed and unsigned integer expressions (https://github.com/PIVX-Project/PIVX/pull/846)
  - fix redundant redeclaration (https://github.com/PIVX-Project/PIVX/pull/845)
  - fix redundant redeclaration of ‘std::__cxx11::string boost::program_options::to_internal(const string&)’
  - replaced deprecated auto_ptr with unique_ptr (https://github.com/PIVX-Project/PIVX/pull/844)
  - updated dependencies
  - updated snapcraft (https://github.com/ioncoincore/ion/pull/118)
  - implementation of zerocoin protocol
  - updated bip44
- new testnet4
  - cleaned up chainparams
  - refactored testnet which can be launched at any time
    old testnet was very big, with to many forks where no clients are available or hardcoded
  - change nBits from ion's old 0x1e00ffff to 0x1e0ffff0
  - new genesis for testnet
  - new genesis nounce for testnet
- new regtest
  - cleaned up chainparams
  - refactored testnet which can be launched at any time
    ion did not have regression test network for years. Regression test is essential for
    everybody who is interested in this project, especially for testers and developers.
    this PR includes full fix of regression test and works with fake stake suite.
  - new genesis for regtest
  - new genesis nounce for regtest
  - change nBits from ion's old 0x1e00ffff to 0x1e0ffff0
  - fixed mining on regtest
    - mining on regtest can be only performed with `generate` command
      Example for generation of 1000 blocks: `ion-cli --regtest generate 1000` 
- GUI
  - [x] all icons for QT are new and created from scratch except ionomy logo itself
    - [x] released with a license
    - [x] provide vector graphics for every icon/image required by QT
  - new splash screens
  - new main, testnet and regtest icons
  - minor QT fixes and refactoring
  - Governance tab
- Tools and scripts
  - fake stake issue fixed
  - fake stake test suite
  - copyright updates
  - 
- fake xion fix
- 
All commits from:
https://github.com/cevap/ION/commit/7fa20d69f6654f5ab8c1508178e7787f9e37febb

to
https://github.com/cevap/ION/commit/fc924c1f63f3c84d7dcaea7e61254b355b55b608

commit fc924c1f63f3c84d7dcaea7e61254b355b55b608
Merge: 757d81c4a dc168d11f
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Mar 27 22:43:05 2019 +0100

    Merge #847: Fix to display missing clock5.png tx image

    dc168d1 fix to display missing clock5.png tx image (joeuhren)

    Tree-SHA512: d10828e76ad1b2e034b013a1c3cac9cf79dfdc642a11d1a6493d615a19982d50fc09343b3b39171ba7c25202f29ed0532f1bc539c42fbdad37a19e58adcc48b1

commit 757d81c4a92a3791629407be9a86c55132225440
Merge: d241b5ed7 56dd114b9
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Tue Mar 26 22:20:45 2019 +0100

    Merge #840: [QT] cleanup, remove old trading dialog form

    56dd114 cleanup, remove trading dialog form (furszy)

    Tree-SHA512: 824547803f5b854c51c22ca87149608725036c5ddee1922ceef7bdc71fcaeac440e77da3c51f7fe44b29269a57990d5ddfd674ca52b4de6ebd6fd36f847f55e8

commit dc168d11f8f067a5de397eafc81c7bcfcae2fa02
Author: joeuhren <46763106+joeuhren@users.noreply.github.com>
Date:   Mon Mar 25 14:04:54 2019 -0600

    fix to display missing clock5.png tx image

commit d241b5ed776466815f2dd78365ed56b0c3682fba
Merge: 5673c8373 6eff5fa97
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Mar 22 15:50:33 2019 -0700

    Merge #837: [Zerocoin][UNIT TEST][RPC] Wrapped serials.

    6eff5fa970 fix xION supply recalculation (random-zebra)
    2676ca3626 newline character added to recalculate wrapped serials supply logging (furszy)
    da43659dd2 Initialize nSupplyBeforeFakeSerial to 0 in TestNet and RegTest (random-zebra)
    c46de31dc4 Fix Wrapped Serials inflated xION supply recalculation (random-zebra)
    13691861f8 zerocoin contextual spend check log invalid serials (furszy)
    0240f27e5f log rejection serial block height (furszy)
    ab6a134f2b invalid fake serial rejection (furszy)
    010d03591c xion recalculation moved in init and added in connectblock (furszy)
    bd6b26b466 fix tabs in SoK (random-zebra)
    41a2bcca29 fix bitSize typo in bignum for openssl (random-zebra)
    29c1791815 inflation methods moved to cpp (furszy)
    027c9ffcb6 wrapped serial inflation trigger recalculation (furszy)
    a3d725a42a Zerocoin supply, wrapped serials inflation + some minor modifications (furszy)
    b3660cbb2e SoK invalid range check. (furszy)
    ad3a3c717b remove tab spaces (furszy)
    ed15e21eb8 Fix isBlockBetweenFakeSerialAttackRange check (random-zebra)
    8e7cf5ab4e Fix IsValidCommitmentToCoinRange check (random-zebra)
    a936e03c22 getserials ambiguous Pair constructor in bitsize blocking clang compilation fix (furszy)
    bd529a0f6e [UNIT TEST] wrapped serial coinSpend check (furszy)
    1217868777 [RPC] Add getserials method (random-zebra)
    9fe8dabc4f fix isValidSerial always true check (random-zebra)
    913e48cda8 wrapped range fix (furszy)
    46a5231574 wrapped serials check in acceptToMemPool method (furszy)
    edfdb4c30b prints in console commented (furszy)
    18e55ed179 fake serials attack enforcement (furszy)

    Tree-SHA512: fe6eaf26257c25377982d44ff1cdd839edf6f71daa5607fc98397b4a3fcd26ae78db54c781038e4f9ff8a7ad1d460ce109909184852bb620435e10dcba6a638c

commit 6eff5fa9706f041438417c69124e480a11479a9f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Mar 22 19:14:50 2019 +0100

    fix xION supply recalculation

commit 2676ca3626ccacf6bbc43daba8cc9eda9b3984e0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Mar 22 12:55:52 2019 +0100

    newline character added to recalculate wrapped serials supply logging

commit 56dd114b99d7d4a1a73f5b1e859838322a1b0ff4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 20 17:23:27 2019 +0100

    cleanup, remove trading dialog form

commit da43659dd21d27aa6bffefaabf8a7c51944feaee
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 20 09:58:14 2019 +0100

    Initialize nSupplyBeforeFakeSerial to 0 in TestNet and RegTest

    and fix percent of reindex feedback in uiInterface

commit c46de31dc45d7b23008472970da3b020f8fac07f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 20 04:20:34 2019 +0100

    Fix Wrapped Serials inflated xION supply recalculation

    and add visual status feedback to UI interface

commit 13691861f8fa39245a0fc257d952fbdfa7618a82
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 13:08:52 2019 +0100

    zerocoin contextual spend check log invalid serials

commit 5673c8373ebba0d516d0fe44d787f69f328f1c26
Merge: 0d738b3dc c3352f0db
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Mar 19 01:29:33 2019 -0700

    Merge #838: [RPC][Test] spendrawzerocoin + wrapped serials functional test

    c3352f0dbd [Test] add 'zerocoin' to the list of good prefixes in test_runner (random-zebra)
    78f1a241ae [Test] wrapped serials: use multiple random values for K (random-zebra)
    bf0cf52d37 [RPC] fix spendrawzerocoin string parsing (random-zebra)
    025d2855f9 [Tests] Add Wrapping Serials Test (random-zebra)
    7373704842 [RPC] Add spendrawzerocoin (random-zebra)

    Tree-SHA512: 707c015b2b40bf6f34999aa7b1a62b1e1be4b8c4d9b0e830ed78ebf2f74a362883708d6204cfadd95f5d6520feb19fc1ba4b8a12549c6cc40c40dc2ab56fb2e9

commit 0240f27e5f0b936e9f9171ef8afcd2a93dc9f961
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 02:50:16 2019 +0100

    log rejection serial block height

commit ab6a134f2b40b72f155e42e51153d6ba1170872b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 19 02:42:19 2019 +0100

    invalid fake serial rejection

commit 010d03591c81a42bac042cb2fc7f02dd75059c8b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 18:07:27 2019 +0100

    xion recalculation moved in init and added in connectblock

commit bd6b26b466ae111c0ff84932885b16d1f67aede9
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Mar 18 16:28:58 2019 +0100

    fix tabs in SoK

commit 41a2bcca29789ce0fc87c526331f60c88bd2e0ea
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Mar 18 16:05:33 2019 +0100

    fix bitSize typo in bignum for openssl

commit 29c1791815bb5675e5ef53985d8541157d3cdce1
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 15:58:26 2019 +0100

    inflation methods moved to cpp

commit 027c9ffcb687d2093ce16cab4c06b530f5925bf5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:46:43 2019 +0100

    wrapped serial inflation trigger recalculation

commit a3d725a42adbda5aee3d6b7a63c63b6a2d673dde
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:07:49 2019 +0100

    Zerocoin supply, wrapped serials inflation + some minor modifications

commit b3660cbb2e01b1066e0c4fb472d956dff245005a
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Mar 18 12:03:27 2019 +0100

    SoK invalid range check.

commit c3352f0dbd0f5a6324fa0ec262d80ab311d58b48
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Mar 16 01:45:14 2019 +0100

    [Test] add 'zerocoin' to the list of good prefixes in test_runner

commit ad3a3c717ba196fc072155f2e71f86ac9838aade
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Mar 16 00:46:59 2019 +0100

    remove tab spaces

commit 78f1a241ae8f3884ccd714b898f1ed733467d9c3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 15:39:45 2019 +0100

    [Test] wrapped serials: use multiple random values for K

commit bf0cf52d3725789d43aaadee5eff750e9173977a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 14:45:40 2019 +0100

    [RPC] fix spendrawzerocoin string parsing

commit ed15e21eb8eab1d506d5eb30c13829a1b3edc3f3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Mar 14 02:30:50 2019 +0100

    Fix isBlockBetweenFakeSerialAttackRange check

    use only upper bound and only mainnet

commit 025d2855f9ebe323e292962542d6ccb3ea6bd836
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 22:53:00 2019 +0100

    [Tests] Add Wrapping Serials Test

commit 73737048422ad627ee38d73dca52bf04f185472a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 22:16:12 2019 +0100

    [RPC] Add spendrawzerocoin

    and add 'serial hash' to export zerocoins output

commit 8e7cf5ab4e70e7a2370f18765148fd4bc41d1ab6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 18:33:41 2019 +0100

    Fix IsValidCommitmentToCoinRange check

commit a936e03c22b0204235e6831956902522acc1bc63
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 13 14:36:37 2019 +0100

    getserials ambiguous Pair constructor in bitsize blocking clang compilation fix

commit bd529a0f6e91a6abe0305ebf28e3c9dba3cb7316
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Mar 13 14:34:27 2019 +0100

    [UNIT TEST] wrapped serial coinSpend check

commit 12178687775f7e3010c86d46e114f1b408a84ed7
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 10:33:15 2019 +0100

    [RPC] Add getserials method

commit 9fe8dabc4f869842725ca2f212fdab34e935c6fb
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Mar 13 10:32:32 2019 +0100

    fix isValidSerial always true check

commit 913e48cda8bee4d63f7bf72ff6c45cccaf8abb82
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 12 12:51:36 2019 +0100

    wrapped range fix

commit 46a5231574a47cfd886808cd352b4a2a17abc5d5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Mar 12 02:03:46 2019 +0100

    wrapped serials check in acceptToMemPool method

commit 0d738b3dc073bf9f57a34d5fd5021cee6a56f0fa
Merge: 2b8daac4c 0015d08c7
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Mar 11 02:41:18 2019 -0700

    Merge #826: [Qt] Fix a windows only crash when r-clicking a proposal

    0015d08c75 [Qt] Fix a windows only crash when r-clicking a proposal (warrows)

    Tree-SHA512: 7e9507e4ffbbca6b41d9c9b18d31f7ebfddf01d5abbfd083b2fcbf6d7d398c20391bdc4fc4903c8d1b338d0c78929920264eb6352bbcaa9b2baf1c11df965cc5

commit edfdb4c30b7efe0795805f7e315ba1cabf5b0e8e
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Mar 9 15:38:34 2019 +0100

    prints in console commented

commit 18e55ed179b04b1ce81e3afb9110bb73e92da638
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Mar 7 23:27:46 2019 +0100

    fake serials attack enforcement

commit 2b8daac4c0f29aecc80dfa7e0378ea40a1fd5e90
Merge: 86d613373 52b509468
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Mar 5 00:20:52 2019 -0800

    Merge #822: [Tests] Integrate fake stake tests into parent test suite

    52b509468f Remove stale qtum python scripts (Fuzzbawls)
    c0d8dcb8c9 [Tests] Integrate fake stake tests into parent test suite (Fuzzbawls)

    Tree-SHA512: b0f9d559b3a8a4d0da3d400dfbe57fa15933a3c569732c4d7d10e147e7d5cd5f70a6f5231c862e4ca5f7f3efdb2de5890fe4755cbee5c41b00a4ab34a015c2e4

commit 86d61337353ed14d40c0c3ec789c954b3df39079
Merge: 37a06eaa9 e87231b62
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Mar 3 22:04:59 2019 -0800

    Merge #821: [RPC] Fixup signrawtransaction on regtest

    e87231b62b [RPC] Fixup signrawtransaction on regtest (Fuzzbawls)

    Tree-SHA512: 1e1b9c25abf9b2406b5065b0b348100fe60e13a258d874d681c6df4094a86ecf3e226e39e6c3e1d8b07fa853634c35249f65652641d13741c426c4c9053e7b36

commit 52b509468f4915a682c977ef9da5f971ceb45bbb
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Mar 3 03:40:09 2019 -0800

    Remove stale qtum python scripts

commit 0015d08c75a02692c1169be4876bd2d42ae45ab2
Author: warrows <warrows@gamer666.fr>
Date:   Fri Mar 1 11:13:37 2019 +0100

    [Qt] Fix a windows only crash when r-clicking a proposal

    The problem seems to be related to a stack corruption issue
    occuring within Qt and only for windows 64 builds. Further
    investigation is required but this is a suitable fix for now
    and there is no need to have the r-click doing the sae job as
    the l-click in this situation.

commit 37a06eaa938cab1c4cc7a39298690922519beb7a
Merge: 065f94118 bae276af9
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 27 21:51:22 2019 +0100

    Merge #817: [Wallet] Fix segfault with runtime -disablewallet

    bae276a Don't bother checking obfuscation messages (Fuzzbawls)
    837f25f [Wallet] Fix segfault with runtime -disablewallet (Fuzzbawls)

    Tree-SHA512: a8dd502897cdc82f206a1805f7b1ae51960344c3fa32640c9dc6c271768e7db718bc2f57034e8fabfd1b402e589e531419d1e8af8a25eee71d89a6b79ce3a679

commit c0d8dcb8c9be933ba6c86be95b1a45b89a1337af
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Feb 26 19:16:20 2019 -0800

    [Tests] Integrate fake stake tests into parent test suite

    This integrates each of the 5 test scripts into the parent test suite so
     they can be run from within `test_runner.py` (or still individually).
     One prominent benefit to this is that the 5 tests are now included when
     generating code coverage reports with `make cov`

    `stratisx-notingatstake.py` and `ion_fake_stake.py` are removed as the
    former was a stale leftover from prior to our own test scripts, and the
    latter is now redundant.

commit e87231b62b4fb41f4d14117e39f6c4ef8f3e0447
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Feb 25 00:58:04 2019 -0800

    [RPC] Fixup signrawtransaction on regtest

    The `signrawtransaction` RPC command needed some modification to appease
     the fake stake test cases, however that change introduced a minor
     inconsistency in it's operation.

    This PR restores the original functionality, while still providing a
    means to be used for the fake stake test cases.

commit 065f94118d818faeaef80add16494366d9267120
Merge: f8eb7feef 61a6ea755
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 22:50:11 2019 -0800

    Merge #803: [NET] Invalid blocks from forks stored on disk fix + blocks DoS spam filter.

    61a6ea7558 AcceptBlock() for-each loops variables moved to const (furszy)
    e1974d23f3 AcceptBlock() check for double spent serials only on main chain flag. (furszy)
    babdfb0f26 remove extra debug lines in AcceptBlock (random-zebra)
    a9178bc6e0 AcceptBlock: contextual zcspend check on main chain (random-zebra)
    0d49570f20 AcceptBlock() block stored log removed (furszy)
    b74921756a Fix bug on AcceptBlock when pindex is null (random-zebra)
    45883b9fb6 AcceptBlock() invalid isBlockFromFork flag (furszy)
    6a16049dfa AcceptBlock() reject blocks double spending the coin stake input inside the same block (furszy)
    da1b6836a5 block spam filter, validate non null nodestate (furszy)
    84de55a11c AcceptBlock() isBlockFromFork flag not contemplating prev blocks from forks fixed (furszy)
    4219339521 AcceptBlock() - not accept blocks from a forked chain that exceed the max reorg limit (furszy)
    47759e113c AcceptBlock(), reject invalid PoS stake (furszy)
    e237823000 validate non null pfrom on blockspamfilter check (furszy)
    c2e5459dff AcceptBlock(), serial double spend on the same block validation (furszy)
    3f5091986c zPoS validations of forked chains before store them + inputs check on prev split main chain (furszy)
    64804b4bee Invalid blocks from forks stored on disk fix + blocks DoS spam filter. (furszy)

    Tree-SHA512: 6c5a7fda3eb81dc8b030c9ba624e5101f552ef9cecc839a79237b705c314171c0e9c66ecd8bfd207081c6759272140cf3bdf0da7af6ac4695f0c09b74fb1ba45

commit 61a6ea75585c11ef90f834583c1f206aaa5942b0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Feb 24 23:52:40 2019 +0100

    AcceptBlock() for-each loops variables moved to const

commit f8eb7feefceeb8828cbf5e8172ddf50079d713ca
Merge: 51e7b2c4b fced4e26f
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 14:46:30 2019 -0800

    Merge #812: [Regtest][Tests][RPC] Regtest mode + Test suite.

    fced4e26fe [Tests] fake_stake: reverse stake hash byte order (random-zebra)
    a85cdad03c [Tests] fake_stake: use hashStake for kernel computation (random-zebra)
    6aa5ddbff8 [Tests] fake_stake: remove random prevout from spending (random-zebra)
    8e370da804 [RPC] add mint hashStake to listmintedzerocoins output (random-zebra)
    0d865a8978 [Tests] fake_stake: use a copy for spendingPrevouts (random-zebra)
    0f209b3da8 [Tests] fake_stake: docstrings and comments (random-zebra)
    322ce79a67 [Tests] fake_stake: fix checksum computation (random-zebra)
    7aae5b1e8b [Tests] fake_stake: fix empty spending_prevouts (random-zebra)
    c7555e1b84 [Tests] fake_stake: collect prevouts from create_spam_block (random-zebra)
    1d699432f2 [RPC] Add call 'getchecksumblock' (random-zebra)
    2e7eacc4c4 [Tests] fix line separators in Test03 (random-zebra)
    c6c81a7cd2 [Tests] fake_stake: test03 updated (random-zebra)
    0d8cf5500d [Tests] remove trailing whitespace from README.md (random-zebra)
    9302f5a046 [Tests] fake_stake: test01 & test02 updated (random-zebra)
    e0efe4d530 [Tests] unique 'get_prevout' method for both pos and zpos stakes (random-zebra)
    9318335525 [Tests] remove trailing whitespaces (random-zebra)
    67284ce22a [RPC] add mint block height to 'listmintedzerocoins' (random-zebra)
    d783229568 [Tests] get correct nStakeModifier (random-zebra)
    78e838ee32 [Tests] fix solve_stake nTime / nStakeModifier (random-zebra)
    a428c83609 PoS block creation uniqueness. (furszy)
    dd07bd1a50 [Tests] fix proof of stake target in block class (random-zebra)
    030e557b93 [Tests] fake_stake: fix test 01 block numbers (random-zebra)
    fe54e9b92a [RPC] fix signrawtransaction hack to allow signing of spent inputs (random-zebra)
    79e364354f regtest lastPoWBlock and zerocoin block start decreased to not waste lifetime waiting for the tests. (furszy)
    42e9c01a85 More logging in block generation. (furszy)
    0aa9bafbf4 fake stake test4 (furszy)
    8315a42a7b ion_fake_stake: test03 almost complete (random-zebra)
    1ad11ad9f7 RPC createrawzerocoinstake: fix vout[0], add priv-key (random-zebra)
    ad65ac4e0a REGTEST: Fix bug on GetModifier (random-zebra)
    47f0503b19 RPC: hack MintToTxIn to allow spending an already spent xion on regtest (random-zebra)
    3092cfc0c2 add empty output to createrawzerocoinstake (random-zebra)
    c5a6a67349 log CWallet::MintToTxIn errors (random-zebra)
    252f4ab43e ion_fake_stake: zerocoin prevouts (random-zebra)
    22769817ae GetModifier for regtest zPoS hardcoded to prev block stake modifier (furszy)
    63bd40e064 ion_fake_stake: test_spam method refactoring (random-zebra)
    1df9240727 ion_fake_stake: add test descriptions (random-zebra)
    79e746eb3d zerocoin mint + spent (furszy)
    9eea8837aa half test3 completed (furszy)
    23236e7499 ion_fake_stake: select test from command line (random-zebra)
    44d2e9a1c2 ion_fake_stake: get_prevouts (random-zebra)
    1b27b90e8b ion_fake_stake Test05 - update blockcount in forks (random-zebra)
    88e0dc6442 ion_fake_stake Test05 - more blocks fix (random-zebra)
    bf3b732dc5 ion_fake_stake Test05 - more blocks (random-zebra)
    a25f2e84a2 ion_fake_stake Test05 (random-zebra)
    427f2f168b test05 completed, rejection of double spend coin stake input on the same block on main/forked chain (furszy)
    3cbf43e7db test05 (furszy)
    f7a48260c6 Add 'createrawzerocoinstake' method (random-zebra)
    70d859e055 test_02 working good. (furszy)
    ed63600142 ION_fake_stake: zerocoin tests (random-zebra)
    07b981af88 no time validation for regtest (furszy)
    47c2c65721 import bytes_to_hex on test_02 fix (furszy)
    c02002bdd4 ION_fake_stake: fix coinstake out value (random-zebra)
    35f09e5d21 submitblock assertion on test_02 (furszy)
    d0c0dccff5 ION_fake_stake: fix coinbase nHeight merge (random-zebra)
    2cf7ae1939 ION_fake_stake: fix txes in create_spam_block (random-zebra)
    ef01bd8141 zPoS running on regtest :) (furszy)
    5405d1ce2d Zerocoin fixed on regtest & PoS blocks generation fixes. (furszy)
    158bd2b215 regtest PoS generate valid blocks (furszy)
    71a3743108 Tests: fixup a conditional check for python block creation (Fuzzbawls)
    b3950ff436 Tests: update nothingatstake test file (Fuzzbawls)
    f40f576eb3 stakemodifier fixed for regtest (furszy)
    80a2aec5df Tests: serialize block signature when present (Fuzzbawls)
    9cec3bd2f5 RPC: hack signrawtransaction to allow signing an already spent input (Fuzzbawls)
    5c0f0b99ed WIP: port the test for "fake stake" issue test (Fuzzbawls)
    b074cd0e42 RPC: return the used stake modifier in getblock (Fuzzbawls)
    1ffc443ba6 Regtest: mine the correct version blocks (Fuzzbawls)
    3d588ead42 Tests: Remove whitespace in default conf file (Fuzzbawls)
    ebdc552408 Fixup the walletdump command and python test (Fuzzbawls)
    37b29c7e61 [Tests] Add Basic BIP38 RPC functionality test (Fuzzbawls)
    c2cfff0a23 Tests: add size field to test json (Fuzzbawls)
    2155506247 Add rpm contrib files (Fuzzbawls)
    4e62dd9ee8 Main: reject non-final transactions using nLocktime from entering the mempool. (Fuzzbawls)
    4c71b5694a [RPC] Ensure Tx/Budget input hashes are of the proper length (Fuzzbawls)
    7d37c1c207 [RPC] Update and harden many raw transaction RPC commands (Fuzzbawls)
    262f76a9d0 [RPC] Error early when block doesn't start with a coinbase transaction (Fuzzbawls)
    7e0476b25a RPC: Add waitforblock/waitfornewblock/waitforblockheight (Fuzzbawls)
    22bfe7ea2c [Tests] Initial update for regression test suite tests (Fuzzbawls)
    93fd9f0501 Update block generation code to enable regtest mode (Fuzzbawls)
    25fc43698b Build: add test runner packaging to configure (Fuzzbawls)

    Tree-SHA512: 09bcd3c727eb85103451cf971e0bc3a27eca205318ebb6c600a26ddc97f58ef456aa6768c9e94fd5c484da5071887e5b50c2bcf90318cfe2c9178c0c746a408b

commit bae276af944b357b4ed5542c0ddf2db4081844fb
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 24 00:28:44 2019 -0800

    Don't bother checking obfuscation messages

    Obfuscation has all but been removed, no need to check incoming messages
    for it's functionality anymore

commit 837f25f4e9187211620e747df3672d7130d7a48e
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 23 02:09:05 2019 -0800

    [Wallet] Fix segfault with runtime -disablewallet

commit 51e7b2c4b012182ecee22930a9d19946d613648b
Merge: a611a7fa7 867d1b573
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Sat Feb 23 21:58:32 2019 +0100

    Merge #816: [Doc] Update build-unix.md

    867d1b5 [Doc] Update build-unix.md (Fuzzbawls)

    Tree-SHA512: fcb195491a46328908146b26588595d3d93bfab8ceb658fb960dd9364fdb7f1c462c888b9cca74364344786722f208ff2f59d31b1fe820c0b8bf5b33a1546c64

commit 867d1b573fd1055661325aee2d355527abbf155c
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 23 00:18:00 2019 -0800

    [Doc] Update build-unix.md

    Update the Unix build notes to be more complete, with mentioning of the
    GMP and ZeroMQ dependencies, as well as OpenSSL version note.

    Other stylistic updates as needed.

commit a611a7fa777b89f8752cad430a8b8e370deee8a2
Merge: c12697469 0eaf96d85
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 20 22:26:17 2019 +0100

    Merge #757: [Doc] Update doc/build-windows.md

    0eaf96d Update doc/build-windows.md (idas4you)

    Tree-SHA512: 3f8a3067887d84fe371b5ba80b70c95d7a1f2b95b938c5f1059df0f884630595f75abf38676af5ce5a2983f3971791ec56fdaa979ff6b656cb06b3ddd7326df6

commit c12697469b27f23cdd266a408914eb80cc652931
Merge: ed0dd2a20 400886551
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Wed Feb 20 22:08:17 2019 +0100

    Merge #792: [UI] Add a budget monitoring and voting tab

    4008865 [Travis] Fix trailing whitespaces (warrows)
    87b9809 [UI] Rework proposal frames (warrows)
    8b8a712 [UI] Add global budget information to governance tab (warrows)
    f7674fb [UI] Clean proposal list when updating (warrows)
    bbf3274 [UI] Use only one column for Proposal list (warrows)
    d6c68c6 [UI] remove unused textlabel from governance page (warrows)
    39eb903 [Qt] Add basic GUI voting tab to the wallet (Fuzzbawls)

    Tree-SHA512: 438afbb8ed1dbe0892164b6f6b3d0ac3b825b2e7855115f1137bf5bcf454533e375774cd835c19ea529bb1ff0a4f886a3e71e809e9893a102ae841a1a4be8f9a

commit fced4e26fe712c07e05b3744b9eac2a3f8ad31b5
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 18:57:47 2019 +0100

    [Tests] fake_stake: reverse stake hash byte order

commit a85cdad03cfece1fdcb4732d8b2cb19e698167fb
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:25:51 2019 +0100

    [Tests] fake_stake: use hashStake for kernel computation

commit 6aa5ddbff8cd788f2b5a66ff502e71ff5db5f2ee
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:19:04 2019 +0100

    [Tests] fake_stake: remove random prevout from spending

commit 8e370da804ae1cf0f1c5af6b50bb12c59fbfe47d
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 18 16:18:24 2019 +0100

    [RPC] add mint hashStake to listmintedzerocoins output

commit 0d865a8978682a3c8976c210817336b119bdf41f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Feb 16 11:43:51 2019 +0100

    [Tests] fake_stake: use a copy for spendingPrevouts

commit 0f209b3da879899a286154ccdd46c022dddc24bc
Author: random-zebra <random.zebra@protonmail.com>
Date:   Sat Feb 16 00:54:48 2019 +0100

    [Tests] fake_stake: docstrings and comments

commit 322ce79a6745fe571ae7c2f8f0d64eea27f12682
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:54:33 2019 +0100

    [Tests] fake_stake: fix checksum computation

commit 7aae5b1e8b93add3adde84d049ae0cf54dc941df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:17:10 2019 +0100

    [Tests] fake_stake: fix empty spending_prevouts

commit c7555e1b8472592b09021bc570dc635b66f175c6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 21:07:34 2019 +0100

    [Tests] fake_stake: collect prevouts from create_spam_block

commit 1d699432f2e2b73a4bf96f08a76b9c889bcbaeda
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 18:25:40 2019 +0100

    [RPC] Add call 'getchecksumblock'

    which returns the first occurrence of a block with given accumulator checksum

commit 2e7eacc4c47a94018a82dc16371b16c63651e64e
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 15 09:57:49 2019 +0100

    [Tests] fix line separators in Test03

commit c6c81a7cd20a5287f35ba00418af171f2cecb905
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 18:06:01 2019 +0100

    [Tests] fake_stake: test03 updated

commit 0d8cf5500daf4896a4b48c573b1e2155c3f0deb3
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:56:40 2019 +0100

    [Tests] remove trailing whitespace from README.md

commit 9302f5a0463029696637b632b884d943f39c75c8
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:50:40 2019 +0100

    [Tests] fake_stake: test01 & test02 updated

commit e0efe4d530550d950af788148ecfc453db8bf83a
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:50:06 2019 +0100

    [Tests] unique 'get_prevout' method for both pos and zpos stakes

commit 93183355259994dd3278618b267231bf8b745fcc
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:47:06 2019 +0100

    [Tests] remove trailing whitespaces

commit 67284ce22af1c6cc931b8c42a3abe2ea57549b90
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 17:27:34 2019 +0100

    [RPC] add mint block height to 'listmintedzerocoins'

commit 0eaf96d8565ce9335745c774de4761ca232e8063
Author: idas4you <idas4you@gmail.com>
Date:   Thu Nov 8 11:31:12 2018 +0900

    Update doc/build-windows.md

commit 64b2bb324e2deaf29f27529094ca0cb05720a250
Merge: d78322956 26e98a8df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 01:05:39 2019 +0100

    Merge branch '2019_regtest-mode-and-fake-test-suite' of https://github.com/furszy/ION into 2019_miller_tests

commit d783229568f4fccadce8e05ae7f0001692ea4041
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 14 01:04:59 2019 +0100

    [Tests] get correct nStakeModifier

commit 26e98a8df8532bf7842c98a0b456e2e060637f8a
Merge: a428c8360 78e838ee3
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 13 23:45:41 2019 +0100

    Merge pull request #8 from random-zebra/2019_miller_tests

    [Tests] fix solve_stake nTime / nStakeModifier

commit 78e838ee32344ab4cf56f25a21d65111e09b49df
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 13 23:33:58 2019 +0100

    [Tests] fix solve_stake nTime / nStakeModifier

commit a428c83609e8532c8db14caaf8e01e4a1ffac1f8
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 13 13:31:26 2019 +0100

    PoS block creation uniqueness.

commit 90631bebd99844d4d3f56648f1ab0caedaf1fcae
Merge: eb1258375 dd07bd1a5
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 12 15:53:16 2019 +0100

    Merge pull request #7 from random-zebra/2019_miller_tests

    [Tests] fix proof of stake target in block class

commit dd07bd1a50ca24a4f138c6b255b534ae65b32aa1
Author: random-zebra <random.zebra@protonmail.com>
Date:   Tue Feb 12 15:47:50 2019 +0100

    [Tests] fix proof of stake target in block class

commit eb1258375a8aeb67bd18084b6eab00595a9232e6
Merge: 79e364354 030e557b9
Author: Matias Furszyfer <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 12 00:09:21 2019 +0100

    Merge pull request #6 from random-zebra/2019_miller_tests

    Additions to Regtest - fakeStake suite

commit 030e557b93d46733c8e647c63ce756e4900fdd38
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 11 23:38:55 2019 +0100

    [Tests] fake_stake: fix test 01 block numbers

commit fe54e9b92a601b8a38f3488e9567e10fe2a9b7bf
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 11 23:23:55 2019 +0100

    [RPC] fix signrawtransaction hack to allow signing of spent inputs

commit 79e364354ffd3f0aadb617d576efc8175037aa46
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 17:00:44 2019 +0100

    regtest lastPoWBlock and zerocoin block start decreased to not waste lifetime waiting for the tests.

commit 42e9c01a85bd031f15b6b26ce806ca35c46efc23
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 16:59:06 2019 +0100

    More logging in block generation.

commit 0aa9bafbf40597500f6f09ce2e016159c415a36f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 12:25:07 2019 +0100

    fake stake test4

commit 8315a42a7b4581deb70681f2930f29b71f37138b
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 14:56:24 2019 +0100

    ion_fake_stake: test03 almost complete

commit 1ad11ad9f7b4befa10538075d0ed091936522d4f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:32:27 2019 +0100

    RPC createrawzerocoinstake: fix vout[0], add priv-key

commit ad65ac4e0a191d042c4e50a2ac06f7cebc605787
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:31:51 2019 +0100

    REGTEST: Fix bug on GetModifier

commit 47f0503b197245b143135f259381ef0a9c257c74
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:42:59 2019 +0100

    RPC: hack MintToTxIn to allow spending an already spent xion on regtest

commit 3092cfc0c2d111449b5441aaebac485812e693b4
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:41:35 2019 +0100

    add empty output to createrawzerocoinstake

commit c5a6a67349ad65d4626a09f7559aeda66a267624
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 05:31:56 2019 +0100

    log CWallet::MintToTxIn errors

commit 252f4ab43e450d83819c632ed1c296093d37c044
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 03:01:30 2019 +0100

    ion_fake_stake: zerocoin prevouts

commit 22769817ae95cca134c33391b9df743f6e66be60
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 01:56:56 2019 +0100

    GetModifier for regtest zPoS hardcoded to prev block stake modifier

commit 63bd40e06419d309970d94c9c54196a724339e26
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 00:24:31 2019 +0100

    ion_fake_stake: test_spam method refactoring

commit 1df92407276689619bcd34948737ba83860b6959
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 21:48:25 2019 +0100

    ion_fake_stake: add test descriptions

commit 79e746eb3dccba245d716743ded3fdedfb9ebcbe
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 6 21:37:48 2019 +0100

    zerocoin mint + spent

commit 9eea8837aa76fe07dc3ffecd96fe150541905400
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Feb 6 17:09:38 2019 +0100

    half test3 completed

commit 23236e7499fb98bd1df49d56cd6d4c3cfda9db56
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 16:34:54 2019 +0100

    ion_fake_stake: select test from command line

commit 44d2e9a1c22678c600e987a2da468549ba3c2a13
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 15:46:41 2019 +0100

    ion_fake_stake: get_prevouts

commit 1b27b90e8bc3d7fa4fae349b60252501bcd1bb39
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:58:19 2019 +0100

    ion_fake_stake Test05 - update blockcount in forks

commit 88e0dc644228458bb97cd4d65437310921d9bee1
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:51:54 2019 +0100

    ion_fake_stake Test05 - more blocks fix

commit bf3b732dc5a4dfae622871c82502e454d54d9ae6
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 13:07:29 2019 +0100

    ion_fake_stake Test05 - more blocks

commit a25f2e84a2c2df6d0fc27c59dbb9362deb8c8ed7
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Feb 6 12:00:16 2019 +0100

    ion_fake_stake Test05

commit 427f2f168b9dfb11ebc7edaa29813db3ed49d1cc
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 22:12:09 2019 +0100

    test05 completed, rejection of double spend coin stake input on the same block on main/forked chain

commit 3cbf43e7db151309c724978ac309ea0bc19368e4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 17:50:17 2019 +0100

    test05

commit f7a48260c63ff6f1a0a5817298eb6c9597c59844
Author: random-zebra <random.zebra@protonmail.com>
Date:   Tue Feb 5 16:42:51 2019 +0100

    Add 'createrawzerocoinstake' method

commit 70d859e0552e5213c082706bef4562e804104567
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 12:18:36 2019 +0100

    test_02 working good.

commit ed63600142da846755d3f820be2f4afaec208929
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 17:15:41 2019 +0100

    ION_fake_stake: zerocoin tests

commit 07b981af8819bc7f88f30bfa7f1f74481645646c
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 13:12:55 2019 +0100

    no time validation for regtest

commit 47c2c65721598fb42bc85f13b2a6661ac071773f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 12:42:12 2019 +0100

    import bytes_to_hex on test_02 fix

commit c02002bdd48a292f57f03874e3b8a692f22cab4f
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 03:02:30 2019 +0100

    ION_fake_stake: fix coinstake out value

commit 35f09e5d2124b063124f19eef83fe9a6bac35dd5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 03:01:15 2019 +0100

    submitblock assertion on test_02

commit d0c0dccff5673648ffe86e1b8f65077b01e26f64
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 02:30:12 2019 +0100

    ION_fake_stake: fix coinbase nHeight merge

commit 2cf7ae1939f3bae9b4a32aa06ce298f54baa36be
Author: random-zebra <random.zebra@protonmail.com>
Date:   Mon Feb 4 00:17:14 2019 +0100

    ION_fake_stake: fix txes in create_spam_block

commit ef01bd81418f72908b73c438f0238843e11f6510
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Feb 3 17:49:18 2019 +0100

    zPoS running on regtest :)

commit 5405d1ce2da8372dbd0c54e75cdc2db57661e8a5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 11:43:36 2019 +0100

    Zerocoin fixed on regtest & PoS blocks generation fixes.

commit 158bd2b215599eaca2d1292fa1d5034dbb03a032
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 29 01:00:12 2019 +0100

    regtest PoS generate valid blocks

commit 71a3743108b7bed58fb057615a1a05f51dd71dbc
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Jan 30 23:11:48 2019 -0800

    Tests: fixup a conditional check for python block creation

commit b3950ff436f73c6c43a5ded27c97f9505febd5aa
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 28 02:09:44 2019 -0800

    Tests: update nothingatstake test file

    - reintroduce spam transactions
    - make disk size usage output in kilobytes
    - add assertion check after stopping node for disk size usage
    - do fuckall with the node(s) setup (this was in the original script,
    but likely doesn't change anything from how I had it previously)

commit f40f576eb3f5f4f863796f3693fa61f8f0bd5421
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 11 11:15:22 2019 +0100

    stakemodifier fixed for regtest

commit 80a2aec5dff50753af89ee1ad975c8a0baa1287a
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 28 02:04:32 2019 -0800

    Tests: serialize block signature when present

    Needed for signing proof of stake blocks

commit 9cec3bd2f5b011f45859a229897f2618ee7c434f
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 27 22:36:44 2019 -0800

    RPC: hack signrawtransaction to allow signing an already spent input

    Only works on regtest, obviously

commit 5c0f0b99edcadbaa16c6281f067c67db251b6caa
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:34:58 2019 -0800

    WIP: port the test for "fake stake" issue test

    Currently this is non-functional as the created coinstake transaction
    cannot be signed properly (passing the transaction to the coin daemon
    via `signrawtransaction` returns an error)

commit b074cd0e42e94895903aa5ac09d754549f8c3cc4
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:31:08 2019 -0800

    RPC: return the used stake modifier in getblock

commit 1ffc443ba62b66586f148b6736aeb8c928730550
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:28:57 2019 -0800

    Regtest: mine the correct version blocks

    Zerocoin rules mandate that block version must be < 4 prior to zerocoin
    activation height. To prevent erroring on regtest, and still allow for
    manual/scripted changing of the block version, set some locical defaults
    .

commit 3d588ead42b07c223a1370d09038d17b71f04fa4
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:15:19 2019 -0800

    Tests: Remove whitespace in default conf file

commit ebdc552408e748a78fa4273ffd8091a0c3e57da1
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Jan 26 21:14:30 2019 -0800

    Fixup the walletdump command and python test

commit 37b29c7e618b8ca23faca3a08a870740357116f6
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Sep 21 21:55:58 2018 -0700

    [Tests] Add Basic BIP38 RPC functionality test

commit c2cfff0a234607acf413b1053c2c0ce260ad6e16
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Sep 19 16:18:58 2018 -0700

    Tests: add size field to test json

commit 2155506247b19f5cad072953f8892b133938c951
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Wed Sep 19 14:17:50 2018 -0700

    Add rpm contrib files

commit 4e62dd9ee8d00b016a315dd9f09197d6d9a3cedd
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:38:19 2018 -0700

    Main: reject non-final transactions using nLocktime from entering the
    mempool.

commit 4c71b5694a68ca2c27a88a579aaf21e2fd75dba9
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:34:07 2018 -0700

    [RPC] Ensure Tx/Budget input hashes are of the proper length

    Transaction and Budget hashes are always 64 characters in length. Return
     a descriptive error if this is not the case.

commit 7d37c1c207b8cb7f69664e5873ba6b882592234d
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Tue Sep 18 21:27:57 2018 -0700

    [RPC] Update and harden many raw transaction RPC commands

commit 262f76a9d0d853970d40bd1828245d8a66d2ec3d
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Sep 16 22:52:22 2018 -0700

    [RPC] Error early when block doesn't start with a coinbase transaction

    submitblock (used for PoW) can return an error message earlier by
    checking that the first transaction is a coinbase transaction.

    This prevents wasting time with running the block through later
    validation checks that will ultimately fail.

commit 7e0476b25a81a442cfb22fea4aa414d7afcd6bec
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Sep 9 12:43:49 2018 -0700

    RPC: Add waitforblock/waitfornewblock/waitforblockheight

    Used in functional tests

commit 22bfe7ea2c2904cffc11a45b8535073f30cdf47e
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Thu Jan 18 17:21:03 2018 -0800

    [Tests] Initial update for regression test suite tests

    TOTO: fixup all tests / add new ones

commit 93fd9f05019d388e3f50ceb39ced8f2710327fe7
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Nov 19 22:14:51 2017 -0800

    Update block generation code to enable regtest mode

    Also update the icon/splash images for regtest

commit 25fc43698b71c9bbd9f8948c9652fc0c8b46b518
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Thu Sep 6 16:46:01 2018 -0700

    Build: add test runner packaging to configure

commit e1974d23f31589f1c4e07062c7e4214abc281141
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Feb 8 15:32:49 2019 +0100

    AcceptBlock() check for double spent serials only on main chain flag.

commit babdfb0f26b1733c0969f9106084134c0c774efa
Author: random-zebra <random.zebra@protonmail.com>
Date:   Fri Feb 8 12:11:57 2019 +0100

    remove extra debug lines in AcceptBlock

commit a9178bc6e0d5deb7b79690bc5f595beb8b19c720
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 14:55:30 2019 +0100

    AcceptBlock: contextual zcspend check on main chain

commit 0d49570f208baeee89b0c426541ed4434940ed34
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 17:52:39 2019 +0100

    AcceptBlock() block stored log removed

commit b74921756a3c93e8c9e8569cea68cbda873df10d
Author: random-zebra <random.zebra@protonmail.com>
Date:   Thu Feb 7 13:31:19 2019 +0100

    Fix bug on AcceptBlock when pindex is null

commit 97c266bd5c99f66006d4f017d6c9f2ad95ab8533
Merge: 6a16049df 45883b9fb
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Feb 7 13:19:30 2019 +0100

    Merge branch 'invalid_blocks_storage_and_blocks_DoS_spam_filter' of https://github.com/furszy/ION into invalid_blocks_storage_and_blocks_DoS_spam_filter

commit 6a16049dfa27f7aba0bdeae4f35660daa734bf42
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 22:10:27 2019 +0100

    AcceptBlock() reject blocks double spending the coin stake input inside the same block

commit ed0dd2a20a87e9de56e9ff33387a8e68043fe840
Merge: 81c7c4764 9f89762dc
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Tue Feb 5 22:31:26 2019 +0100

    Merge #802: [Refactor] Remove begin/end_ptr functions

    9f89762 [Refactor] Remove begin/end_ptr functions (warrows)

    Tree-SHA512: 420b7dad43df23876cd891104c8a3f1c557c9dc20fa726c69fe80eaf13b353e4301e8c0abc2abde29896f991dd88aaddc7d19996a3b7287a6244fbfd5700facf

commit 45883b9fb6230b40a4358426305da77a20a9fda4
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Feb 5 11:30:58 2019 +0100

    AcceptBlock() invalid isBlockFromFork flag

commit 81c7c4764cbcb3274509ea65963cecf8eb8bbf63
Merge: 204c038a4 8e86b893a
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Mon Feb 4 20:33:10 2019 +0100

    Merge #758: [Depends] Update libsecp256k1 to latest master

    c6634ef Squashed 'src/secp256k1/' changes from 452d8e4d2..1086fda4c (warrows)

    Tree-SHA512: 7ebcd89f661b94c7ee52c57c3b1879e5ddf363205b326c8ed442bd4f88765701f22b3413e296519b589a4b0d150488a9dd911459eb9b9834d4e8dde3e21049b1

commit da1b6836a5e11f0fb514ce7364eee2eaa033be3f
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 03:47:18 2019 +0100

    block spam filter, validate non null nodestate

commit 84de55a11ca23bb4cc8e8800358cedf9a8202d60
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Feb 4 00:24:14 2019 +0100

    AcceptBlock() isBlockFromFork flag not contemplating prev blocks from forks fixed

commit 204c038a4d0f5529787802df9ffe1743b62551d0
Merge: d4762f7e7 5bd855c67
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 3 17:22:55 2019 -0800

    Merge #768: [Net] Zerocoin Light Node Protocol

    5bd855c673 removing apocaliptic comment (furszy)
    95947bb9f7 logprint fixed (furszy)
    91780b54cf log new line added + lightxionthread .h/.cpp (furszy)
    95da6abadb Incorrect number of arguments for LogPrint(f) statement found. fixed (furszy)
    d72543ffe3 node_bloom_light_zc invalid if statement fixed (furszy)
    a9b992adcd remove old comment (furszy)
    09ba617e26 remove tab spaces (furszy)
    d373e1d25a minor updates to PR 768 (random-zebra)
    7b2310cad4 Zerocoin Light Node Protocol (furszy)

    Tree-SHA512: a85026a9626aacff07826d2a7eab198327d82d620fce4d1f64962e6c0158fa4a0c3c5c355aaed94809928fe5dd77e90810244cb04e41152517d48ebcb76d04f2

commit 5bd855c673fb00d8ece468af7db8c89b90e59a00
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 22 17:40:26 2019 +0100

    removing apocaliptic comment

commit 95947bb9f7b7f5fb3bb86dfa03446cf6ec55dde5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Jan 21 14:07:06 2019 +0100

    logprint fixed

commit 91780b54cf5ffba9cd96dc91ec9c7296458198b9
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Mon Jan 21 13:25:09 2019 +0100

    log new line added + lightxionthread .h/.cpp

commit 95da6abadb97384e2d8ad54e13a351fdbea0a25e
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Jan 18 00:37:37 2019 +0100

    Incorrect number of arguments for LogPrint(f) statement found. fixed

commit d72543ffe3a80108b9b0876036a620e32d921114
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Jan 17 23:08:29 2019 +0100

    node_bloom_light_zc invalid if statement fixed

commit a9b992adcdcba996982ed6dd38ceb1c418abb35b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Dec 14 11:22:29 2018 +0100

    remove old comment

commit 09ba617e267e0c52af315933f8bd5a253ece627d
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Thu Dec 13 22:03:52 2018 +0100

    remove tab spaces

    tabs removed

    tabs removed

commit d373e1d25a760633ff247492ff4f320938d383b8
Author: random-zebra <random.zebra@protonmail.com>
Date:   Wed Dec 5 21:11:41 2018 +0100

    minor updates to PR 768

commit 7b2310cad4c45548f0fc856c15ac1c805f196b5f
Author: furszy <mati_fur@hotmail.com>
Date:   Thu Nov 8 01:11:11 2018 +0100

    Zerocoin Light Node Protocol

commit d4762f7e7a6f4c7ed796fa9a574f9f9a95b0c4f9
Merge: 4a8e46a15 2159a5860
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Feb 3 14:40:30 2019 -0800

    Merge #763: [Wallet] Add automint address

    2159a58601 Add newly created automint addresses to the set (Fuzzbawls)
    1c0169e494 Show automint address state in getwalletinfo (Fuzzbawls)
    9374d5123b Add RPC command to enable/disable automint address functionality (Fuzzbawls)
    0a364d4ff8 Add UI option to enable/disable automint addresses (Fuzzbawls)
    72491216cf Add runtime/startup option to disable automint address functionality (Fuzzbawls)
    65aefe8021 Add newly created automint addresses to the address book (Fuzzbawls)
    6c2df854d9 Ensure wallet is unlocked for createautomintaddress (Fuzzbawls)
    4205d57c14 Add automint address (presstab)

    Tree-SHA512: 76900c564eb6abe3cfa1606559aba4d6725be04126268b06215619fef8f83d58e953985469e2c97086a6cd0e6d60fb9f9e58aca1cee56e1a7bf9668e82c94fa8

commit 4a8e46a15829ae832aefdbf31fb59ad91a5b8870
Merge: a663bccea 189d6a958
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sat Feb 2 17:11:56 2019 -0800

    Merge #804: [Depends] Update zmq to 4.3.1

    189d6a958e Update zmq to 4.3.1 (Dimitris Apostolou)

    Tree-SHA512: 0226edb402b0594c616e580fe497d600eb2144d8eba8aa458d8255b093173306ff99429058c356e742896a4ac9ecbf92507b2da5cb16e8aa95c8c52860a20a21

commit 4219339521b5305557a81b538f20871498595e34
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Wed Jan 30 20:53:24 2019 +0100

    AcceptBlock() - not accept blocks from a forked chain that exceed the max reorg limit

commit 47759e113cb12d5df7f60c13e79debbaef0a427c
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Tue Jan 29 16:45:00 2019 +0100

    AcceptBlock(), reject invalid PoS stake

commit e237823000153ef2b8ea72cc823ef9fd2739d4f0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sun Jan 27 14:25:48 2019 +0100

    validate non null pfrom on blockspamfilter check

commit c2e5459dff566a25616688ed0a502a471141c5b5
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Jan 26 22:29:22 2019 +0100

    AcceptBlock(), serial double spend on the same block validation

commit 189d6a958e31e08f212d0a9cddecf257ae4d76f5
Author: Dimitris Apostolou <dimitris.apostolou@icloud.com>
Date:   Thu Jan 17 18:25:38 2019 +0200

    Update zmq to 4.3.1

    Addresses https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6250

    Signed-off-by: cevap <dev@i2pmail.org>

commit 3f5091986c5f0798fd2d234924dea6da29872bd0
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Sat Jan 26 00:48:59 2019 +0100

    zPoS validations of forked chains before store them + inputs check on prev split main chain

commit 64804b4bee2dda0f27a6f8a39f3a7f0bf0e24a3b
Author: furszy <5377650+furszy@users.noreply.github.com>
Date:   Fri Jan 25 12:26:30 2019 +0100

    Invalid blocks from forks stored on disk fix + blocks DoS spam filter.

    loop through forked blocks fix

    Invalid blocks from forks stored on disk Fix + Blocks DoS spam filter

    minor re organization

    minor cosmetic changes

    comments

commit 9f89762dcc8de13f48c2fdcfd0577ced16df2462
Author: warrows <warrows@gamer666.fr>
Date:   Wed Jan 23 20:17:54 2019 +0100

    [Refactor] Remove begin/end_ptr functions

    With C++11 these functions are not needed anymore and gracefully
    replaced

commit a663bccea720e3a01607178906d5efed145a6dd8
Merge: 7fa20d69f 7dfa9b27f
Author: Mrs-X <Mrs-X@users.noreply.github.com>
Date:   Mon Jan 21 20:37:12 2019 +0100

    Merge #798: [Net] Improve addrman Select() performance when buckets are nearly empty

    7dfa9b2 Improve addrman Select() performance when buckets are nearly empty (Pieter Wuille)

    Tree-SHA512: 64a16dd027174a45931e73c82e04629738b4caca8500d8cb04a1739d5f5529726d3ff27357f0bdf881fc4ccf278a7a6ac2b904e3a7822af32d8dce096ef16dce

commit 7dfa9b27f8f3af1407599bc96a58056395278444
Author: Pieter Wuille <pieter.wuille@gmail.com>
Date:   Thu Aug 6 19:49:19 2015 +0200

    Improve addrman Select() performance when buckets are nearly empty

commit 2159a5860151df5c4415f245b551112697961be9
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Fri Jan 18 01:33:32 2019 -0800

    Add newly created automint addresses to the set

    Ensures that a wallet restart isn't required after generating a new automint address by adding it to the set.

commit 1c0169e494c4d3927ac1ca5776655b2232ec573c
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 14 18:56:25 2019 -0800

    Show automint address state in getwalletinfo

    Adds a new output line to getwalletinfo showing if automint address functionality is enabled or disabled.

commit 9374d5123b98d294691667d891eac5cf46857b20
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 14 18:55:06 2019 -0800

    Add RPC command to enable/disable automint address functionality

    This compliments the UI's ability to toggle the state of automint address functionality for CLI/RPC users.

commit 0a364d4ff8067517ef555a273084efa74b3ae9d5
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 03:27:21 2019 -0800

    Add UI option to enable/disable automint addresses

    This compliments the runtime (command line) option of enabling/disabling the automint address functionality. Option can be toggled on/off without the need to restart the client.

commit 72491216cfd1edeb729ed8a585d2432b86983557
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 01:20:05 2019 -0800

    Add runtime/startup option to disable automint address functionality

    Defaults to true/enabled

commit 65aefe802168ed84784b7fb7a757b8d53c7348a6
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Sun Jan 13 01:17:44 2019 -0800

    Add newly created automint addresses to the address book

    Default account/label is hard-coded to "automint-address" so as to be visually identified in the wallet's GUI.

commit 6c2df854d98e634f95d22b7b6117e42962072c42
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jan 7 23:03:53 2019 -0800

    Ensure wallet is unlocked for createautomintaddress

    Also changed the return to a simple string (instead of a JSON object) to be consistent with other RPC commands that return just a single address.

commit 4008865514afa6ab088281bee998801cd1267d2e
Author: warrows <warrows@gamer666.fr>
Date:   Mon Jan 7 15:24:43 2019 +0100

    [Travis] Fix trailing whitespaces

commit 87b9809a0981425da3935b585822e5f658c8ea24
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 27 14:02:49 2018 +0100

    [UI] Rework proposal frames

commit 8b8a712e3c0797dea724b2abe1a03ffac8018790
Author: warrows <warrows@gamer666.fr>
Date:   Fri Dec 21 11:56:47 2018 +0100

    [UI] Add global budget information to governance tab

commit f7674fbeebbb31171907c9c225b65ed21f8be0c8
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 22:06:06 2018 +0100

    [UI] Clean proposal list when updating

commit bbf327459438b29a53d691ea221ab9d30b53fa35
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 14:34:25 2018 +0100

    [UI] Use only one column for Proposal list

commit d6c68c6ec452d5b1378d428b508c725da8489bde
Author: warrows <warrows@gamer666.fr>
Date:   Thu Dec 20 11:59:07 2018 +0100

    [UI] remove unused textlabel from governance page

commit 39eb903817e3dde0dffb137b455588a312a6dafe
Author: Fuzzbawls <fuzzbawls@gmail.com>
Date:   Mon Jun 4 00:36:03 2018 -0700

    [Qt] Add basic GUI voting tab to the wallet

commit 4205d57c1465fcefbeb3a032f5ffd5af870c4536
Author: presstab <presstab1337@gmail.com>
Date:   Sun Oct 28 22:25:31 2018 -0600

    Add automint address

commit 8e86b893a3adfa1d0f7b02a10bbcc24fb1d7fa14
Merge: 63fb77b0a c6634ef06
Author: warrows <warrows@gamer666.fr>
Date:   Tue Oct 23 11:22:46 2018 +0200

    Merge commit 'c6634ef065ceb295522f0d61a3d45d8d53abe51c' into libsecp_update

commit c6634ef065ceb295522f0d61a3d45d8d53abe51c
Author: warrows <warrows@gamer666.fr>
Date:   Tue Oct 23 11:22:46 2018 +0200

    Squashed 'src/secp256k1/' changes from 452d8e4d2..1086fda4c

    1086fda4c Merge #354: [ECDH API change] Support custom hash function
    1e6f1f5ad Merge #529: fix tests.c in the count == 0 case
    c8fbc3c39 [ECDH API change] Allow pass arbitrary data to hash function
    b00be6505 [ECDH API change] Support custom hash function
    95e99f196 fix tests.c in the count == 0 case

    git-subtree-dir: src/secp256k1
    git-subtree-split: 1086fda4c1975d0cad8d3cad96794a64ec12dca4

* travis - fix lint-whitespace.sh for main.cpp and python scripts failing

add linearize-data.py, linearize-hashes.py and src/main.cpp to to
lint-whitespace whitelist for current commit range.

**TODO** - this has to be reverted after PR is merged

* snap - refactor snapcraft.yaml

- add required faketime
- add feature reques, I need help/support, report a bug,
  report some random issue and testing report links
- add link to ioncoincore in description
- add link to our githubs mit license
- use same routines as in gitian linux config file
- uncomment old part with until **TODO** removed

* tests - minor fixes in scripts

- fix test_gettxoutsetinfo in rpc_blockchain.py
- correct config name in util.py

* rename testnet v3 comment to v4 in chainparamsbase.cpp

* update chain parameters for testnet

- set zerocoin header version
- initialize fake stake parameters and zerocoin supply before fake
  stake
- disable block enforcing of invalid utxo by setting it for in future
- change zerocoin v2 to start 1 block after zerocoin v1 starts
- fix ION in comment

* fix getblockvalue and ConnectBlock and remove testnet for v4 check

- fix segmentation fault for testnet and regtest by fixing rewards
  and subsidy in getblockvalue
- refactor ConnectBlocks fixes for old main chain to pass sync
  - add new bool rejectBlockExclusion for checking condition
- remove testnet as exclusion from version 4 header check

* add datadir*/ to .gitignore

* update unix build notes

* gui - change governance page pink colors to ion's color scheme

* more notes for RPC commands and gitian build script

Signed-off-by: cevap <dev@i2pmail.org>

* update accumulator and accumulator map

* zerocoin mint - add missing part to wallet.cpp

* fix merging issues for Reduce log spam patch

* Reduce log spam

New debug category "staking" added with some previous `LogPrintf`
messages recategorized to reduce log spam.

Also noted both "staking" and "precompute" in the init help message and
added them to the "ion" umbrella category.

Signed-off-by: cevap <dev@i2pmail.org>

* big update - march 2019

almost full src folder has been updated/refactored. Some rpc calls
as well as some smaller minor changes have been deleted/commented.

This commit is second part of previous big commit of current PR:

  https://github.com/ioncoincore/ion/pull/141

**TODO**

- [ ] readd removed/unmarked rpc calls and check if they are required
- [ ] recheck translations as they were updated
- [ ] refactor code and bitcoin class
- [ ] optionaly, add 4th network testnetold for those who do not
      want to use new one or if people decide to keep the old
- [ ] bump version
- [x] update protocol
- [x] testlaunch of a new testnet4 network
- [ ] test new governance tab
- [ ] ??readd?? listtransactions fix
- [ ] test new snap routines

* some minor fixes after patching (c4b557fc)

ref c4b557fc5fdf2558c39082ae51aa7f5446b44f7d

* delete .vscode/settings.json

* update coins.cpp and coins.h

* bump version to edge 3.2.99

- client version
- snapcraft and its icons

* fix accumulatorcheckpoints.cpp

after related zerocoin files were moved to src/xion folder,
accumulatorcheckpoints.cpp had to be fixed, as it was changed
wrongly to xion/.., because that file moved into the same folder

* update hardcoded seeds from chainz explorer

* disable lint-whitespace check for current PR

* revert old (non working) base58_keys_valid.json

- this is required for ion tests and should be adapted before this
  PR is merged

* fix travis - accumulatorcheckpoints.json.h is missing

file was missing because it required forced addition due to the
ignore list.

* update manual pages

* fix makefile.am, add validation.h

* replace rpc and budget demo addresses to ion's

* fix missing dstencode.h in src/Makefile.am

* leveldb - fix ecx warning that it is not initialized, intilize it with 0

info: if we do not specify U then variable type would be signed int

this commit as well as other commits should be pulled to bitcoin's leveldb

* macos - rename Ion-Qt tp ION-qt

we propose to change the name from Ion-Qt to ION-Qt on mac os

* macos - add missing appName to the macdeployqtplus

* tests - fix most tests and set RUN_UNIT_TESTS as true for travis

- non working checks or those which require further adaption are
  marked out
- fixed based58 and some other scripts

* move transactionsrecord to qt folderm, fix ion-qt.pro, delete dead files

* fix masternode value from 9999.99 to 19999.99 which was reverted due to patching

* fix VerifySignature failed: Script evaluated without error on block 1013854

- current check is…
UdjinM6 pushed a commit that referenced this issue Sep 24, 2021
…Data

fa56d56 fuzz: Properly initialize PrecomputedTransactionData (MarcoFalke)

Pull request description:

  Fixes:

  ```
  script_flags: script/interpreter.cpp:1512: bool SignatureHashSchnorr(uint256 &, const ScriptExecutionData &, const T &, uint32_t, uint8_t, SigVersion, const PrecomputedTransactionData &) [T = CTransaction]: Assertion `cache.m_bip341_taproot_ready && cache.m_spent_outputs_ready' failed.
  ==34989== ERROR: libFuzzer: deadly signal
      #0 0x55e90077ff11 in __sanitizer_print_stack_trace (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x20cf11)
      #1 0x55e9006cb068 in fuzzer::PrintStackTrace() (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x158068)
      #2 0x55e9006b01b3 in fuzzer::Fuzzer::CrashCallback() (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13d1b3)
      #3 0x7f6fb89383bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      #4 0x7f6fb855018a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      #5 0x7f6fb852f858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      #6 0x7f6fb852f728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      #7 0x7f6fb8540f35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      #8 0x55e9008275bd in bool SignatureHashSchnorr<CTransaction>(uint256&, ScriptExecutionData const&, CTransaction const&, unsigned int, unsigned char, SigVersion, PrecomputedTransactionData const&) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1512:5
      #9 0x55e900825a3f in GenericTransactionSignatureChecker<CTransaction>::CheckSchnorrSignature(Span<unsigned char const>, Span<unsigned char const>, SigVersion, ScriptExecutionData const&, ScriptError_t*) const /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1699:10
      #10 0x55e900832503 in VerifyWitnessProgram(CScriptWitness const&, int, std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, BaseSignatureChecker const&, ScriptError_t*, bool) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1900:26
      #11 0x55e90082ecb5 in VerifyScript(CScript const&, CScript const&, CScriptWitness const*, unsigned int, BaseSignatureChecker const&, ScriptError_t*) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1977:18
      #12 0x55e9007a9b61 in test_one_input(std::vector<unsigned char, std::allocator<unsigned char> > const&) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags.cpp:51:30
      #13 0x55e9007d0b49 in LLVMFuzzerTestOneInput /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/fuzz.cpp:36:5
      #14 0x55e9006b1871 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13e871)
      #15 0x55e9006b0fb5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13dfb5)
      #16 0x55e9006b38d7 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x1408d7)
      #17 0x55e9006b3c39 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x140c39)
      #18 0x55e9006a290e in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x12f90e)
      #19 0x55e9006cb752 in main (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x158752)
      #20 0x7f6fb85310b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      #21 0x55e9006776ad in _start (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x1046ad)

ACKs for top commit:
  laanwj:
    Code review ACK fa56d56

Tree-SHA512: 5637b0a0d982360df32d8cd39e913395967af02ec746508fc5f2fd649695c58bfaaf18ef76f4ca9da764d34fdd63dfe188317dd41b2ed57534bd4055a05ae870
kwvg pushed a commit to kwvg/dash that referenced this issue Oct 12, 2021
…Data

fa56d56 fuzz: Properly initialize PrecomputedTransactionData (MarcoFalke)

Pull request description:

  Fixes:

  ```
  script_flags: script/interpreter.cpp:1512: bool SignatureHashSchnorr(uint256 &, const ScriptExecutionData &, const T &, uint32_t, uint8_t, SigVersion, const PrecomputedTransactionData &) [T = CTransaction]: Assertion `cache.m_bip341_taproot_ready && cache.m_spent_outputs_ready' failed.
  ==34989== ERROR: libFuzzer: deadly signal
      #0 0x55e90077ff11 in __sanitizer_print_stack_trace (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x20cf11)
      dashpay#1 0x55e9006cb068 in fuzzer::PrintStackTrace() (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x158068)
      dashpay#2 0x55e9006b01b3 in fuzzer::Fuzzer::CrashCallback() (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13d1b3)
      dashpay#3 0x7f6fb89383bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      dashpay#4 0x7f6fb855018a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      dashpay#5 0x7f6fb852f858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      dashpay#6 0x7f6fb852f728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      dashpay#7 0x7f6fb8540f35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      dashpay#8 0x55e9008275bd in bool SignatureHashSchnorr<CTransaction>(uint256&, ScriptExecutionData const&, CTransaction const&, unsigned int, unsigned char, SigVersion, PrecomputedTransactionData const&) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1512:5
      dashpay#9 0x55e900825a3f in GenericTransactionSignatureChecker<CTransaction>::CheckSchnorrSignature(Span<unsigned char const>, Span<unsigned char const>, SigVersion, ScriptExecutionData const&, ScriptError_t*) const /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1699:10
      dashpay#10 0x55e900832503 in VerifyWitnessProgram(CScriptWitness const&, int, std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, BaseSignatureChecker const&, ScriptError_t*, bool) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1900:26
      dashpay#11 0x55e90082ecb5 in VerifyScript(CScript const&, CScript const&, CScriptWitness const*, unsigned int, BaseSignatureChecker const&, ScriptError_t*) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/script/interpreter.cpp:1977:18
      dashpay#12 0x55e9007a9b61 in test_one_input(std::vector<unsigned char, std::allocator<unsigned char> > const&) /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags.cpp:51:30
      dashpay#13 0x55e9007d0b49 in LLVMFuzzerTestOneInput /tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/fuzz.cpp:36:5
      dashpay#14 0x55e9006b1871 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13e871)
      dashpay#15 0x55e9006b0fb5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x13dfb5)
      dashpay#16 0x55e9006b38d7 in fuzzer::Fuzzer::ReadAndExecuteSeedCorpora(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x1408d7)
      dashpay#17 0x55e9006b3c39 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x140c39)
      dashpay#18 0x55e9006a290e in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x12f90e)
      dashpay#19 0x55e9006cb752 in main (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x158752)
      dashpay#20 0x7f6fb85310b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      dashpay#21 0x55e9006776ad in _start (/tmp/bitcoin-core/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/test/fuzz/script_flags+0x1046ad)

ACKs for top commit:
  laanwj:
    Code review ACK fa56d56

Tree-SHA512: 5637b0a0d982360df32d8cd39e913395967af02ec746508fc5f2fd649695c58bfaaf18ef76f4ca9da764d34fdd63dfe188317dd41b2ed57534bd4055a05ae870
UdjinM6 pushed a commit that referenced this issue Oct 21, 2021
fa1fdeb fuzz: Ensure prevout is consensus-valid (MarcoFalke)

Pull request description:

  It shouldn't be possible to create consensus-invalid prevouts, so there is no need to fuzz them.

  To reproduce:

  ```
  $ echo 'AAAAAAEAAAAAAQF0Rw0SGsrit4+YZSEfpcQT/o+bJbjgVjATUHqrCfRE+QsBAAAXFgAUlsvXHgGV
  ZxF3QXxitwe1tIOYdLj2NePHATl9CgAAAAAAGXapFOFHg1yqRFl7soeowwpIEOoe9G1NiKwCRzBE
  AiAx6F2Q008gvJnok6JiyOn7lPqCJJmDiI2omRNXT1Q7XAIgCQP6WJizAqhnvImpQqYMJkqePGvx
  Jy/pGRMy1iNL0ecDIQJr4tWomVTBfjpyMFMOD9aDAR5gkByOIYiaQOv8P/sRztP3pS8RDAAAEUUE
  NQBwYAAAAAC5F6kUTLIzj/lKP2Hmpwyzukns2eweRkOH' | base64 --decode  > /tmp/a

  $ FUZZ=script_flags ./src/test/fuzz/fuzz /tmp/a
  INFO: Running with entropic power schedule (0xFF, 100).
  INFO: Seed: 59714236
  INFO: Loaded 1 modules   (212532 inline 8-bit counters): 212532 [0x55987fb3f668, 0x55987fb7349c),
  INFO: Loaded 1 PC tables (212532 PCs): 212532 [0x55987fb734a0,0x55987feb17e0),
  ./src/test/fuzz/fuzz: Running 1 inputs 1 time(s) each.
  Running: /tmp/a
  fuzz: script/interpreter.cpp:1495: bool HandleMissingData(MissingDataBehavior): Assertion `!"Missing data"' failed.
  ==520092== ERROR: libFuzzer: deadly signal
      #0 0x55987f111180 in __sanitizer_print_stack_trace (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5ea180)
      #1 0x55987f0ba828 in fuzzer::PrintStackTrace() fuzzer.o
      #2 0x55987f09de43 in fuzzer::Fuzzer::CrashCallback() fuzzer.o
      #3 0x7fd003d563bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      #4 0x7fd00399a18a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      #5 0x7fd003979858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      #6 0x7fd003979728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      #7 0x7fd00398af35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      #8 0x55987f8ce194 in HandleMissingData(MissingDataBehavior) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1495:9
      #9 0x55987f8ce194 in GenericTransactionSignatureChecker<CTransaction>::CheckECDSASignature(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, CScript const&, SigVersion) const /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1685:68
      #10 0x55987f8cbbc8 in EvalChecksigPreTapscript(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*, bool&) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:363:24
      #11 0x55987f8cbbc8 in EvalChecksig(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator, ScriptExecutionData&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*, bool&) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:421:16
      #12 0x55987f8c5a01 in EvalScript(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >&, CScript const&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptExecutionData&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1094:26
      #13 0x55987f8d6d6e in ExecuteWitnessScript(Span<std::vector<unsigned char, std::allocator<unsigned char> > const> const&, CScript const&, unsigned int, SigVersion, BaseSignatureChecker const&, ScriptExecutionData&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1843:10
      #14 0x55987f8d48fc in VerifyWitnessProgram(CScriptWitness const&, int, std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, BaseSignatureChecker const&, ScriptError_t*, bool) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1904:20
      #15 0x55987f8d3d8b in VerifyScript(CScript const&, CScript const&, CScriptWitness const*, unsigned int, BaseSignatureChecker const&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:2045:22
      #16 0x55987f201d47 in script_flags_fuzz_target(Span<unsigned char const>) /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/script_flags.cpp:54:30
      #17 0x55987f11447f in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      #18 0x55987f8aed17 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      #19 0x55987f8aed17 in LLVMFuzzerTestOneInput /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz.cpp:63:5
      #20 0x55987f09f5e3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      #21 0x55987f0894e2 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      #22 0x55987f08f2da in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      #23 0x55987f0bb002 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x594002)
      #24 0x7fd00397b0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      #25 0x55987f06420d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x53d20d)

  NOTE: libFuzzer has rudimentary signal handlers.
        Combine libFuzzer with AddressSanitizer or similar for better crash reports.
  SUMMARY: libFuzzer: deadly signal

ACKs for top commit:
  practicalswift:
    Tested ACK fa1fdeb

Tree-SHA512: 6130ed9ab6d8eeab901f64a1c069300e67d0b6009c42763262fe6edeab8192e088c1a3c1f61aee900b9ebbc48fbf6e837b41704bad592ec526398355766e208a
pravblockc pushed a commit to pravblockc/dash that referenced this issue Nov 18, 2021
fa1fdeb fuzz: Ensure prevout is consensus-valid (MarcoFalke)

Pull request description:

  It shouldn't be possible to create consensus-invalid prevouts, so there is no need to fuzz them.

  To reproduce:

  ```
  $ echo 'AAAAAAEAAAAAAQF0Rw0SGsrit4+YZSEfpcQT/o+bJbjgVjATUHqrCfRE+QsBAAAXFgAUlsvXHgGV
  ZxF3QXxitwe1tIOYdLj2NePHATl9CgAAAAAAGXapFOFHg1yqRFl7soeowwpIEOoe9G1NiKwCRzBE
  AiAx6F2Q008gvJnok6JiyOn7lPqCJJmDiI2omRNXT1Q7XAIgCQP6WJizAqhnvImpQqYMJkqePGvx
  Jy/pGRMy1iNL0ecDIQJr4tWomVTBfjpyMFMOD9aDAR5gkByOIYiaQOv8P/sRztP3pS8RDAAAEUUE
  NQBwYAAAAAC5F6kUTLIzj/lKP2Hmpwyzukns2eweRkOH' | base64 --decode  > /tmp/a

  $ FUZZ=script_flags ./src/test/fuzz/fuzz /tmp/a
  INFO: Running with entropic power schedule (0xFF, 100).
  INFO: Seed: 59714236
  INFO: Loaded 1 modules   (212532 inline 8-bit counters): 212532 [0x55987fb3f668, 0x55987fb7349c),
  INFO: Loaded 1 PC tables (212532 PCs): 212532 [0x55987fb734a0,0x55987feb17e0),
  ./src/test/fuzz/fuzz: Running 1 inputs 1 time(s) each.
  Running: /tmp/a
  fuzz: script/interpreter.cpp:1495: bool HandleMissingData(MissingDataBehavior): Assertion `!"Missing data"' failed.
  ==520092== ERROR: libFuzzer: deadly signal
      #0 0x55987f111180 in __sanitizer_print_stack_trace (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5ea180)
      dashpay#1 0x55987f0ba828 in fuzzer::PrintStackTrace() fuzzer.o
      dashpay#2 0x55987f09de43 in fuzzer::Fuzzer::CrashCallback() fuzzer.o
      dashpay#3 0x7fd003d563bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      dashpay#4 0x7fd00399a18a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      dashpay#5 0x7fd003979858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      dashpay#6 0x7fd003979728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      dashpay#7 0x7fd00398af35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      dashpay#8 0x55987f8ce194 in HandleMissingData(MissingDataBehavior) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1495:9
      dashpay#9 0x55987f8ce194 in GenericTransactionSignatureChecker<CTransaction>::CheckECDSASignature(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, CScript const&, SigVersion) const /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1685:68
      dashpay#10 0x55987f8cbbc8 in EvalChecksigPreTapscript(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*, bool&) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:363:24
      dashpay#11 0x55987f8cbbc8 in EvalChecksig(std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<unsigned char, std::allocator<unsigned char> > const&, prevector<28u, unsigned char, unsigned int, int>::const_iterator, prevector<28u, unsigned char, unsigned int, int>::const_iterator, ScriptExecutionData&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptError_t*, bool&) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:421:16
      dashpay#12 0x55987f8c5a01 in EvalScript(std::vector<std::vector<unsigned char, std::allocator<unsigned char> >, std::allocator<std::vector<unsigned char, std::allocator<unsigned char> > > >&, CScript const&, unsigned int, BaseSignatureChecker const&, SigVersion, ScriptExecutionData&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1094:26
      dashpay#13 0x55987f8d6d6e in ExecuteWitnessScript(Span<std::vector<unsigned char, std::allocator<unsigned char> > const> const&, CScript const&, unsigned int, SigVersion, BaseSignatureChecker const&, ScriptExecutionData&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1843:10
      dashpay#14 0x55987f8d48fc in VerifyWitnessProgram(CScriptWitness const&, int, std::vector<unsigned char, std::allocator<unsigned char> > const&, unsigned int, BaseSignatureChecker const&, ScriptError_t*, bool) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:1904:20
      dashpay#15 0x55987f8d3d8b in VerifyScript(CScript const&, CScript const&, CScriptWitness const*, unsigned int, BaseSignatureChecker const&, ScriptError_t*) /root/fuzz_dir/scratch/fuzz_gen/code/src/script/interpreter.cpp:2045:22
      dashpay#16 0x55987f201d47 in script_flags_fuzz_target(Span<unsigned char const>) /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/script_flags.cpp:54:30
      dashpay#17 0x55987f11447f in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      dashpay#18 0x55987f8aed17 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#19 0x55987f8aed17 in LLVMFuzzerTestOneInput /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz.cpp:63:5
      dashpay#20 0x55987f09f5e3 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      dashpay#21 0x55987f0894e2 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      dashpay#22 0x55987f08f2da in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      dashpay#23 0x55987f0bb002 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x594002)
      dashpay#24 0x7fd00397b0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      dashpay#25 0x55987f06420d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x53d20d)

  NOTE: libFuzzer has rudimentary signal handlers.
        Combine libFuzzer with AddressSanitizer or similar for better crash reports.
  SUMMARY: libFuzzer: deadly signal

ACKs for top commit:
  practicalswift:
    Tested ACK fa1fdeb

Tree-SHA512: 6130ed9ab6d8eeab901f64a1c069300e67d0b6009c42763262fe6edeab8192e088c1a3c1f61aee900b9ebbc48fbf6e837b41704bad592ec526398355766e208a
watto-engineer referenced this issue in watto-engineer/dash Jul 28, 2022
[GUI] Update unlock for staking interface
knst pushed a commit to knst/dash that referenced this issue Apr 18, 2023
… in Travis

1f9d5af tests: Add initialization order fiasco detection in Travis (practicalswift)

Pull request description:

  Add initialization order fiasco detection in Travis :)

  Context: bitcoin#17670 (comment)

  This would have caught the `events_hasher` initialization order issue introduced in bitcoin#17573  and fixed in bitcoin#17670.

  Output in case of an initialization order fiasco:

  ```
  ==7934==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x557098d79200 at pc 0x55709796b9a3 bp 0x7ffde524dc30 sp 0x7ffde524dc28
  READ of size 8 at 0x557098d79200 thread T0
      #0 0x55709796b9a2 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:667:25
      #1 0x5570978150e9 in SeedEvents(CSHA512&) src/random.cpp:462:19
      dashpay#2 0x5570978145e1 in SeedSlow(CSHA512&) src/random.cpp:482:5
      dashpay#3 0x5570978149a3 in SeedStartup(CSHA512&, (anonymous namespace)::RNGState&) src/random.cpp:527:5
      dashpay#4 0x55709781102d in ProcRand(unsigned char*, int, RNGLevel) src/random.cpp:571:9
      dashpay#5 0x557097810d19 in GetRandBytes(unsigned char*, int) src/random.cpp:576:59
      dashpay#6 0x557096c2f9d5 in (anonymous namespace)::CSignatureCache::CSignatureCache() src/script/sigcache.cpp:34:9
      dashpay#7 0x557096511977 in __cxx_global_var_init.7 src/script/sigcache.cpp:67:24
      dashpay#8 0x5570965119f8 in _GLOBAL__sub_I_sigcache.cpp src/script/sigcache.cpp
      dashpay#9 0x557097bba4ac in __libc_csu_init (src/bitcoind+0x18554ac)
      dashpay#10 0x7f214b1c2b27 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:266
      dashpay#11 0x5570965347d9 in _start (src/bitcoind+0x1cf7d9)

  0x557098d79200 is located 96 bytes inside of global variable 'events_hasher' defined in 'random.cpp:456:16' (0x557098d791a0) of size 104
    registered at:
      #0 0x557096545dfd in __asan_register_globals compiler-rt/lib/asan/asan_globals.cpp:360:3
      #1 0x557097817f8b in asan.module_ctor (src/bitcoind+0x14b2f8b)

  SUMMARY: AddressSanitizer: initialization-order-fiasco src/crypto/sha256.cpp:667:25 in CSHA256::Finalize(unsigned char*)
  ```

ACKs for top commit:
  promag:
    Tested ACK 1f9d5af, got
  MarcoFalke:
    ACK 1f9d5af 👔

Tree-SHA512: f24ac0a313df7549193bd7f4fcfdf9b72bdfc6a6ee31d0b08e6d0752e5108fbd532106b6c86377ae0641258c9adb4921872e5d9a0154c0284e03315e0777102c
UdjinM6 pushed a commit that referenced this issue Apr 18, 2023
fa7e147 test: Fix intermittent Tsan issue (MarcoFalke)

Pull request description:

  Fix https://cirrus-ci.com/task/5176769937408000?logs=ci#L5161

  ```
  WARNING: ThreadSanitizer: data race (pid=22965)
    Write of size 8 at 0x7f74d5e21f50 by main thread:
      #0 std::__1::ios_base::precision(long) /usr/lib/llvm-13/bin/../include/c++/v1/ios:513:18 (test_bitcoin+0x1a8366)
      #1 boost::io::ios_base_all_saver::restore() /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/io/ios_state.hpp:341:17 (test_bitcoin+0x1a8366)
      #2 boost::unit_test::unit_test_log_t::operator<<(boost::unit_test::log::begin const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_log.ipp:336:55 (test_bitcoin+0x1a8366)
      #3 boost::test_tools::tt_detail::report_assertion(boost::test_tools::assertion_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/test_tools.ipp:359:19 (test_bitcoin+0x1b3b9b)
      #4 txindex_tests::txindex_initial_sync::test_method() src/test/txindex_tests.cpp:31:5 (test_bitcoin+0x78aebc)
      #5 txindex_tests::txindex_initial_sync_invoker() src/test/txindex_tests.cpp:16:1 (test_bitcoin+0x78a384)
      #6 boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:117:11 (test_bitcoin+0x2bf30d)
      #7 boost::function0<void>::operator()() const /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x224027)
      #8 boost::detail::forward::operator()() /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1368:32 (test_bitcoin+0x224027)
      #9 boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:137:18 (test_bitcoin+0x224027)
      #10 boost::function0<int>::operator()() const /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x1ac66c)
      #11 int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()> >(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:290:30 (test_bitcoin+0x1ac66c)
      #12 boost::execution_monitor::catch_signals(boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:879:16 (test_bitcoin+0x1ac66c)
      #13 boost::execution_monitor::execute(boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1277:16 (test_bitcoin+0x1ac980)
      #14 boost::execution_monitor::vexecute(boost::function<void ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1377:5 (test_bitcoin+0x1a7f9b)
      #15 boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 (test_bitcoin+0x1a7f9b)
      #16 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:823:44 (test_bitcoin+0x1e0d5c)
      #17 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:792:58 (test_bitcoin+0x1e14a6)
      #18 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:792:58 (test_bitcoin+0x1e14a6)
      #19 boost::unit_test::framework::run(unsigned long, bool) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:1696:29 (test_bitcoin+0x1a6bfb)
      #20 boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:248:9 (test_bitcoin+0x1c4ed6)
      #21 main /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:304:12 (test_bitcoin+0x1c5506)
    Previous write of size 8 at 0x7f74d5e21f50 by thread T4:
      [failed to restore the stack]
    Location is global 'std::__1::cout' of size 160 at 0x7f74d5e21f30 (libc++.so.1+0x0000000cdf50)
    Thread T4 'b-txindex' (tid=22989, running) created by main thread at:
      #0 pthread_create <null> (test_bitcoin+0x1184cd)
      #1 std::__1::__libcpp_thread_create(unsigned long*, void* (*)(void*), void*) /usr/lib/llvm-13/bin/../include/c++/v1/__threading_support:514:10 (test_bitcoin+0xa23f1b)
      #2 std::__1::thread::thread<void (*)(char const*, std::__1::function<void ()>), char const*, BaseIndex::Start(CChainState&)::$_0, void>(void (*&&)(char const*, std::__1::function<void ()>), char const*&&, BaseIndex::Start(CChainState&)::$_0&&) /usr/lib/llvm-13/bin/../include/c++/v1/thread:307:16 (test_bitcoin+0xa23f1b)
      #3 BaseIndex::Start(CChainState&) src/index/base.cpp:363:21 (test_bitcoin+0xa23f1b)
      #4 txindex_tests::txindex_initial_sync::test_method() src/test/txindex_tests.cpp:31:5 (test_bitcoin+0x78adfa)
      #5 txindex_tests::txindex_initial_sync_invoker() src/test/txindex_tests.cpp:16:1 (test_bitcoin+0x78a384)
      #6 boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:117:11 (test_bitcoin+0x2bf30d)
      #7 boost::function0<void>::operator()() const /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x224027)
      #8 boost::detail::forward::operator()() /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1368:32 (test_bitcoin+0x224027)
      #9 boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:137:18 (test_bitcoin+0x224027)
      #10 boost::function0<int>::operator()() const /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/function/function_template.hpp:763:14 (test_bitcoin+0x1ac66c)
      #11 int boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()> >(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:290:30 (test_bitcoin+0x1ac66c)
      #12 boost::execution_monitor::catch_signals(boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:879:16 (test_bitcoin+0x1ac66c)
      #13 boost::execution_monitor::execute(boost::function<int ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1277:16 (test_bitcoin+0x1ac980)
      #14 boost::execution_monitor::vexecute(boost::function<void ()> const&) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/execution_monitor.ipp:1377:5 (test_bitcoin+0x1a7f9b)
      #15 boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_monitor.ipp:49:9 (test_bitcoin+0x1a7f9b)
      #16 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:823:44 (test_bitcoin+0x1e0d5c)
      #17 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:792:58 (test_bitcoin+0x1e14a6)
      #18 boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:792:58 (test_bitcoin+0x1e14a6)
      #19 boost::unit_test::framework::run(unsigned long, bool) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/framework.ipp:1696:29 (test_bitcoin+0x1a6bfb)
      #20 boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:248:9 (test_bitcoin+0x1c4ed6)
      #21 main /tmp/cirrus-ci-build/depends/x86_64-pc-linux-gnu/include/boost/test/impl/unit_test_main.ipp:304:12 (test_bitcoin+0x1c5506)
  SUMMARY: ThreadSanitizer: data race /usr/lib/llvm-13/bin/../include/c++/v1/ios:513:18 in std::__1::ios_base::precision(long)
  ==================
  Exit status: 2

ACKs for top commit:
  fanquake:
    CI ignored ACK fa7e147

Tree-SHA512: 5194e026410b96ad3c8addeecce0a55ee0271c3cfac9fa0715345b1a50d59925549cee0a3e415e5837ae6d2f214a7b622c73cfc7fdf41d5e55c24fb87fddb9d1
knst pushed a commit to knst/dash that referenced this issue Apr 24, 2023
… in Travis

1f9d5af tests: Add initialization order fiasco detection in Travis (practicalswift)

Pull request description:

  Add initialization order fiasco detection in Travis :)

  Context: bitcoin#17670 (comment)

  This would have caught the `events_hasher` initialization order issue introduced in bitcoin#17573  and fixed in bitcoin#17670.

  Output in case of an initialization order fiasco:

  ```
  ==7934==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x557098d79200 at pc 0x55709796b9a3 bp 0x7ffde524dc30 sp 0x7ffde524dc28
  READ of size 8 at 0x557098d79200 thread T0
      #0 0x55709796b9a2 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:667:25
      #1 0x5570978150e9 in SeedEvents(CSHA512&) src/random.cpp:462:19
      dashpay#2 0x5570978145e1 in SeedSlow(CSHA512&) src/random.cpp:482:5
      dashpay#3 0x5570978149a3 in SeedStartup(CSHA512&, (anonymous namespace)::RNGState&) src/random.cpp:527:5
      dashpay#4 0x55709781102d in ProcRand(unsigned char*, int, RNGLevel) src/random.cpp:571:9
      dashpay#5 0x557097810d19 in GetRandBytes(unsigned char*, int) src/random.cpp:576:59
      dashpay#6 0x557096c2f9d5 in (anonymous namespace)::CSignatureCache::CSignatureCache() src/script/sigcache.cpp:34:9
      dashpay#7 0x557096511977 in __cxx_global_var_init.7 src/script/sigcache.cpp:67:24
      dashpay#8 0x5570965119f8 in _GLOBAL__sub_I_sigcache.cpp src/script/sigcache.cpp
      dashpay#9 0x557097bba4ac in __libc_csu_init (src/bitcoind+0x18554ac)
      dashpay#10 0x7f214b1c2b27 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:266
      dashpay#11 0x5570965347d9 in _start (src/bitcoind+0x1cf7d9)

  0x557098d79200 is located 96 bytes inside of global variable 'events_hasher' defined in 'random.cpp:456:16' (0x557098d791a0) of size 104
    registered at:
      #0 0x557096545dfd in __asan_register_globals compiler-rt/lib/asan/asan_globals.cpp:360:3
      #1 0x557097817f8b in asan.module_ctor (src/bitcoind+0x14b2f8b)

  SUMMARY: AddressSanitizer: initialization-order-fiasco src/crypto/sha256.cpp:667:25 in CSHA256::Finalize(unsigned char*)
  ```

ACKs for top commit:
  promag:
    Tested ACK 1f9d5af, got
  MarcoFalke:
    ACK 1f9d5af 👔

Tree-SHA512: f24ac0a313df7549193bd7f4fcfdf9b72bdfc6a6ee31d0b08e6d0752e5108fbd532106b6c86377ae0641258c9adb4921872e5d9a0154c0284e03315e0777102c
knst pushed a commit to knst/dash that referenced this issue Apr 24, 2023
… in Travis

1f9d5af tests: Add initialization order fiasco detection in Travis (practicalswift)

Pull request description:

  Add initialization order fiasco detection in Travis :)

  Context: bitcoin#17670 (comment)

  This would have caught the `events_hasher` initialization order issue introduced in bitcoin#17573  and fixed in bitcoin#17670.

  Output in case of an initialization order fiasco:

  ```
  ==7934==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x557098d79200 at pc 0x55709796b9a3 bp 0x7ffde524dc30 sp 0x7ffde524dc28
  READ of size 8 at 0x557098d79200 thread T0
      #0 0x55709796b9a2 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:667:25
      #1 0x5570978150e9 in SeedEvents(CSHA512&) src/random.cpp:462:19
      dashpay#2 0x5570978145e1 in SeedSlow(CSHA512&) src/random.cpp:482:5
      dashpay#3 0x5570978149a3 in SeedStartup(CSHA512&, (anonymous namespace)::RNGState&) src/random.cpp:527:5
      dashpay#4 0x55709781102d in ProcRand(unsigned char*, int, RNGLevel) src/random.cpp:571:9
      dashpay#5 0x557097810d19 in GetRandBytes(unsigned char*, int) src/random.cpp:576:59
      dashpay#6 0x557096c2f9d5 in (anonymous namespace)::CSignatureCache::CSignatureCache() src/script/sigcache.cpp:34:9
      dashpay#7 0x557096511977 in __cxx_global_var_init.7 src/script/sigcache.cpp:67:24
      dashpay#8 0x5570965119f8 in _GLOBAL__sub_I_sigcache.cpp src/script/sigcache.cpp
      dashpay#9 0x557097bba4ac in __libc_csu_init (src/bitcoind+0x18554ac)
      dashpay#10 0x7f214b1c2b27 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:266
      dashpay#11 0x5570965347d9 in _start (src/bitcoind+0x1cf7d9)

  0x557098d79200 is located 96 bytes inside of global variable 'events_hasher' defined in 'random.cpp:456:16' (0x557098d791a0) of size 104
    registered at:
      #0 0x557096545dfd in __asan_register_globals compiler-rt/lib/asan/asan_globals.cpp:360:3
      #1 0x557097817f8b in asan.module_ctor (src/bitcoind+0x14b2f8b)

  SUMMARY: AddressSanitizer: initialization-order-fiasco src/crypto/sha256.cpp:667:25 in CSHA256::Finalize(unsigned char*)
  ```

ACKs for top commit:
  promag:
    Tested ACK 1f9d5af, got
  MarcoFalke:
    ACK 1f9d5af 👔

Tree-SHA512: f24ac0a313df7549193bd7f4fcfdf9b72bdfc6a6ee31d0b08e6d0752e5108fbd532106b6c86377ae0641258c9adb4921872e5d9a0154c0284e03315e0777102c
UdjinM6 pushed a commit to knst/dash that referenced this issue Apr 25, 2023
… in Travis

1f9d5af tests: Add initialization order fiasco detection in Travis (practicalswift)

Pull request description:

  Add initialization order fiasco detection in Travis :)

  Context: bitcoin#17670 (comment)

  This would have caught the `events_hasher` initialization order issue introduced in bitcoin#17573  and fixed in bitcoin#17670.

  Output in case of an initialization order fiasco:

  ```
  ==7934==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x557098d79200 at pc 0x55709796b9a3 bp 0x7ffde524dc30 sp 0x7ffde524dc28
  READ of size 8 at 0x557098d79200 thread T0
      #0 0x55709796b9a2 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:667:25
      #1 0x5570978150e9 in SeedEvents(CSHA512&) src/random.cpp:462:19
      dashpay#2 0x5570978145e1 in SeedSlow(CSHA512&) src/random.cpp:482:5
      dashpay#3 0x5570978149a3 in SeedStartup(CSHA512&, (anonymous namespace)::RNGState&) src/random.cpp:527:5
      dashpay#4 0x55709781102d in ProcRand(unsigned char*, int, RNGLevel) src/random.cpp:571:9
      dashpay#5 0x557097810d19 in GetRandBytes(unsigned char*, int) src/random.cpp:576:59
      dashpay#6 0x557096c2f9d5 in (anonymous namespace)::CSignatureCache::CSignatureCache() src/script/sigcache.cpp:34:9
      dashpay#7 0x557096511977 in __cxx_global_var_init.7 src/script/sigcache.cpp:67:24
      dashpay#8 0x5570965119f8 in _GLOBAL__sub_I_sigcache.cpp src/script/sigcache.cpp
      dashpay#9 0x557097bba4ac in __libc_csu_init (src/bitcoind+0x18554ac)
      dashpay#10 0x7f214b1c2b27 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:266
      dashpay#11 0x5570965347d9 in _start (src/bitcoind+0x1cf7d9)

  0x557098d79200 is located 96 bytes inside of global variable 'events_hasher' defined in 'random.cpp:456:16' (0x557098d791a0) of size 104
    registered at:
      #0 0x557096545dfd in __asan_register_globals compiler-rt/lib/asan/asan_globals.cpp:360:3
      #1 0x557097817f8b in asan.module_ctor (src/bitcoind+0x14b2f8b)

  SUMMARY: AddressSanitizer: initialization-order-fiasco src/crypto/sha256.cpp:667:25 in CSHA256::Finalize(unsigned char*)
  ```

ACKs for top commit:
  promag:
    Tested ACK 1f9d5af, got
  MarcoFalke:
    ACK 1f9d5af 👔

Tree-SHA512: f24ac0a313df7549193bd7f4fcfdf9b72bdfc6a6ee31d0b08e6d0752e5108fbd532106b6c86377ae0641258c9adb4921872e5d9a0154c0284e03315e0777102c
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Jul 14, 2023
fa2e614 test: Fix off-by-one in mockscheduler test RPC (MarcoFalke)

Pull request description:

  Fixes:

  ```
  fuzz: scheduler.cpp:83: void CScheduler::MockForward(std::chrono::seconds): Assertion `delta_seconds.count() > 0 && delta_seconds < std::chrono::hours{1}' failed.
  ==1059066== ERROR: libFuzzer: deadly signal
      #0 0x558f75449c10 in __sanitizer_print_stack_trace (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5fec10)
      dashpay#1 0x558f753f32b8 in fuzzer::PrintStackTrace() fuzzer.o
      dashpay#2 0x558f753d68d3 in fuzzer::Fuzzer::CrashCallback() fuzzer.o
      dashpay#3 0x7f4a3cbbb3bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      dashpay#4 0x7f4a3c7ff18a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      dashpay#5 0x7f4a3c7de858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      dashpay#6 0x7f4a3c7de728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      dashpay#7 0x7f4a3c7eff35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      dashpay#8 0x558f7588a913 in CScheduler::MockForward(std::chrono::duration<long, std::ratio<1l, 1l> >) scheduler.cpp:83:5
      dashpay#9 0x558f75b0e5b1 in mockscheduler()::$_7::operator()(RPCHelpMan const&, JSONRPCRequest const&) const rpc/misc.cpp:435:30
      dashpay#10 0x558f75b0e5b1 in std::_Function_handler<UniValue (RPCHelpMan const&, JSONRPCRequest const&), mockscheduler()::$_7>::_M_invoke(std::_Any_data const&, RPCHelpMan const&, JSONRPCRequest const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#11 0x558f7587a141 in std::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#12 0x558f7587a141 in RPCHelpMan::HandleRequest(JSONRPCRequest const&) const rpc/util.cpp:565:26
      dashpay#13 0x558f756c0086 in CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const ./rpc/server.h:110:91
      dashpay#14 0x558f756c0086 in std::_Function_handler<bool (JSONRPCRequest const&, UniValue&, bool), CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)>::_M_invoke(std::_Any_data const&, JSONRPCRequest const&, UniValue&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#15 0x558f756b8592 in std::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#16 0x558f756b8592 in ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) rpc/server.cpp:480:20
      dashpay#17 0x558f756b8592 in ExecuteCommands(std::vector<CRPCCommand const*, std::allocator<CRPCCommand const*> > const&, JSONRPCRequest const&, UniValue&) rpc/server.cpp:444:13
      dashpay#18 0x558f756b8017 in CRPCTable::execute(JSONRPCRequest const&) const rpc/server.cpp:464:13
      dashpay#19 0x558f7552457a in (anonymous namespace)::RPCFuzzTestingSetup::CallRPC(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) test/fuzz/rpc.cpp:50:25
      dashpay#20 0x558f7552457a in rpc_fuzz_target(Span<unsigned char const>) test/fuzz/rpc.cpp:354:28
      dashpay#21 0x558f7544cf0f in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      dashpay#22 0x558f75c05197 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#23 0x558f75c05197 in LLVMFuzzerTestOneInput test/fuzz/fuzz.cpp:74:5
      dashpay#24 0x558f753d8073 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      dashpay#25 0x558f753c1f72 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      dashpay#26 0x558f753c7d6a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      dashpay#27 0x558f753f3a92 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5a8a92)
      dashpay#28 0x7f4a3c7e00b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      dashpay#29 0x558f7539cc9d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x551c9d)

ACKs for top commit:
  practicalswift:
    cr ACK fa2e614

Tree-SHA512: cfa120265261f0ad019b46c426b915c1c007806b37aecb27016ce780a0ddea5e6fc9b09065fd40684b11183dcd3bf543558d7a655e604695021653540266baf7
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Jul 18, 2023
fa2e614 test: Fix off-by-one in mockscheduler test RPC (MarcoFalke)

Pull request description:

  Fixes:

  ```
  fuzz: scheduler.cpp:83: void CScheduler::MockForward(std::chrono::seconds): Assertion `delta_seconds.count() > 0 && delta_seconds < std::chrono::hours{1}' failed.
  ==1059066== ERROR: libFuzzer: deadly signal
      #0 0x558f75449c10 in __sanitizer_print_stack_trace (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5fec10)
      dashpay#1 0x558f753f32b8 in fuzzer::PrintStackTrace() fuzzer.o
      dashpay#2 0x558f753d68d3 in fuzzer::Fuzzer::CrashCallback() fuzzer.o
      dashpay#3 0x7f4a3cbbb3bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      dashpay#4 0x7f4a3c7ff18a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      dashpay#5 0x7f4a3c7de858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      dashpay#6 0x7f4a3c7de728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      dashpay#7 0x7f4a3c7eff35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      dashpay#8 0x558f7588a913 in CScheduler::MockForward(std::chrono::duration<long, std::ratio<1l, 1l> >) scheduler.cpp:83:5
      dashpay#9 0x558f75b0e5b1 in mockscheduler()::$_7::operator()(RPCHelpMan const&, JSONRPCRequest const&) const rpc/misc.cpp:435:30
      dashpay#10 0x558f75b0e5b1 in std::_Function_handler<UniValue (RPCHelpMan const&, JSONRPCRequest const&), mockscheduler()::$_7>::_M_invoke(std::_Any_data const&, RPCHelpMan const&, JSONRPCRequest const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#11 0x558f7587a141 in std::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#12 0x558f7587a141 in RPCHelpMan::HandleRequest(JSONRPCRequest const&) const rpc/util.cpp:565:26
      dashpay#13 0x558f756c0086 in CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const ./rpc/server.h:110:91
      dashpay#14 0x558f756c0086 in std::_Function_handler<bool (JSONRPCRequest const&, UniValue&, bool), CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)>::_M_invoke(std::_Any_data const&, JSONRPCRequest const&, UniValue&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#15 0x558f756b8592 in std::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#16 0x558f756b8592 in ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) rpc/server.cpp:480:20
      dashpay#17 0x558f756b8592 in ExecuteCommands(std::vector<CRPCCommand const*, std::allocator<CRPCCommand const*> > const&, JSONRPCRequest const&, UniValue&) rpc/server.cpp:444:13
      dashpay#18 0x558f756b8017 in CRPCTable::execute(JSONRPCRequest const&) const rpc/server.cpp:464:13
      dashpay#19 0x558f7552457a in (anonymous namespace)::RPCFuzzTestingSetup::CallRPC(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) test/fuzz/rpc.cpp:50:25
      dashpay#20 0x558f7552457a in rpc_fuzz_target(Span<unsigned char const>) test/fuzz/rpc.cpp:354:28
      dashpay#21 0x558f7544cf0f in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      dashpay#22 0x558f75c05197 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#23 0x558f75c05197 in LLVMFuzzerTestOneInput test/fuzz/fuzz.cpp:74:5
      dashpay#24 0x558f753d8073 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      dashpay#25 0x558f753c1f72 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      dashpay#26 0x558f753c7d6a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      dashpay#27 0x558f753f3a92 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5a8a92)
      dashpay#28 0x7f4a3c7e00b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      dashpay#29 0x558f7539cc9d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x551c9d)

ACKs for top commit:
  practicalswift:
    cr ACK fa2e614

Tree-SHA512: cfa120265261f0ad019b46c426b915c1c007806b37aecb27016ce780a0ddea5e6fc9b09065fd40684b11183dcd3bf543558d7a655e604695021653540266baf7
PastaPastaPasta pushed a commit to vijaydasmp/dash that referenced this issue Jul 25, 2023
fa2e614 test: Fix off-by-one in mockscheduler test RPC (MarcoFalke)

Pull request description:

  Fixes:

  ```
  fuzz: scheduler.cpp:83: void CScheduler::MockForward(std::chrono::seconds): Assertion `delta_seconds.count() > 0 && delta_seconds < std::chrono::hours{1}' failed.
  ==1059066== ERROR: libFuzzer: deadly signal
      #0 0x558f75449c10 in __sanitizer_print_stack_trace (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5fec10)
      dashpay#1 0x558f753f32b8 in fuzzer::PrintStackTrace() fuzzer.o
      dashpay#2 0x558f753d68d3 in fuzzer::Fuzzer::CrashCallback() fuzzer.o
      dashpay#3 0x7f4a3cbbb3bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      dashpay#4 0x7f4a3c7ff18a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      dashpay#5 0x7f4a3c7de858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      dashpay#6 0x7f4a3c7de728  (/lib/x86_64-linux-gnu/libc.so.6+0x25728)
      dashpay#7 0x7f4a3c7eff35 in __assert_fail (/lib/x86_64-linux-gnu/libc.so.6+0x36f35)
      dashpay#8 0x558f7588a913 in CScheduler::MockForward(std::chrono::duration<long, std::ratio<1l, 1l> >) scheduler.cpp:83:5
      dashpay#9 0x558f75b0e5b1 in mockscheduler()::$_7::operator()(RPCHelpMan const&, JSONRPCRequest const&) const rpc/misc.cpp:435:30
      dashpay#10 0x558f75b0e5b1 in std::_Function_handler<UniValue (RPCHelpMan const&, JSONRPCRequest const&), mockscheduler()::$_7>::_M_invoke(std::_Any_data const&, RPCHelpMan const&, JSONRPCRequest const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#11 0x558f7587a141 in std::function<UniValue (RPCHelpMan const&, JSONRPCRequest const&)>::operator()(RPCHelpMan const&, JSONRPCRequest const&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#12 0x558f7587a141 in RPCHelpMan::HandleRequest(JSONRPCRequest const&) const rpc/util.cpp:565:26
      dashpay#13 0x558f756c0086 in CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)::operator()(JSONRPCRequest const&, UniValue&, bool) const ./rpc/server.h:110:91
      dashpay#14 0x558f756c0086 in std::_Function_handler<bool (JSONRPCRequest const&, UniValue&, bool), CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::'lambda'(JSONRPCRequest const&, UniValue&, bool)>::_M_invoke(std::_Any_data const&, JSONRPCRequest const&, UniValue&, bool&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:285:9
      dashpay#15 0x558f756b8592 in std::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#16 0x558f756b8592 in ExecuteCommand(CRPCCommand const&, JSONRPCRequest const&, UniValue&, bool) rpc/server.cpp:480:20
      dashpay#17 0x558f756b8592 in ExecuteCommands(std::vector<CRPCCommand const*, std::allocator<CRPCCommand const*> > const&, JSONRPCRequest const&, UniValue&) rpc/server.cpp:444:13
      dashpay#18 0x558f756b8017 in CRPCTable::execute(JSONRPCRequest const&) const rpc/server.cpp:464:13
      dashpay#19 0x558f7552457a in (anonymous namespace)::RPCFuzzTestingSetup::CallRPC(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) test/fuzz/rpc.cpp:50:25
      dashpay#20 0x558f7552457a in rpc_fuzz_target(Span<unsigned char const>) test/fuzz/rpc.cpp:354:28
      dashpay#21 0x558f7544cf0f in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      dashpay#22 0x558f75c05197 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      dashpay#23 0x558f75c05197 in LLVMFuzzerTestOneInput test/fuzz/fuzz.cpp:74:5
      dashpay#24 0x558f753d8073 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      dashpay#25 0x558f753c1f72 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      dashpay#26 0x558f753c7d6a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      dashpay#27 0x558f753f3a92 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x5a8a92)
      dashpay#28 0x7f4a3c7e00b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      dashpay#29 0x558f7539cc9d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x551c9d)

ACKs for top commit:
  practicalswift:
    cr ACK fa2e614

Tree-SHA512: cfa120265261f0ad019b46c426b915c1c007806b37aecb27016ce780a0ddea5e6fc9b09065fd40684b11183dcd3bf543558d7a655e604695021653540266baf7
knst added a commit to knst/dash that referenced this issue Sep 28, 2023
…igher than Tip

Example of new log:
```
2023-09-28T17:35:50Z GetProjectedMNPayeesAtChainTip WARNING pindex is nullptr due to height=914160 chain height=914159
```

instead assert call:
```
...
 dashpay#6  0x00007ffff7a33b86 in __assert_fail (assertion=0x55555783afd2 "pindex", file=0x5555577f2ed8 "llmq/utils.cpp", line=730,
        function=0x5555577f2448 "bool llmq::utils::IsMNRewardReallocationActive(const CBlockIndex*)") at ./assert/assert.c:101
 dashpay#7  0x0000555555ab7daf in llmq::utils::IsMNRewardReallocationActive (pindex=<optimized out>) at llmq/utils.cpp:730
 dashpay#8  0x00005555559458ad in CDeterministicMNList::GetProjectedMNPayees (this=this@entry=0x7fffffffc690, pindex=0x0, nCount=<optimized out>, nCount@entry=2147483647)
        at evo/deterministicmns.cpp:231
 dashpay#9  0x000055555594614f in CDeterministicMNList::GetProjectedMNPayeesAtChainTip (this=this@entry=0x7fffffffc690, nCount=nCount@entry=2147483647) at evo/deterministicmns.cpp:216
 dashpay#10 0x00005555558c9f51 in MasternodeList::updateDIP3List (this=this@entry=0x55555908cfd0) at qt/masternodelist.cpp:194
 dashpay#11 0x00005555558ca9a0 in MasternodeList::updateDIP3ListScheduled (this=0x55555908cfd0) at qt/masternodelist.cpp:157
 dashpay#12 0x000055555684a60f in void doActivate<false>(QObject*, int, void**) ()
 dashpay#13 0x00005555568525b1 in QTimer::timerEvent(QTimerEvent*) ()
 dashpay#14 0x0000555556844ce5 in QObject::event(QEvent*) ()
 dashpay#15 0x0000555556ac3252 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
 dashpay#16 0x000055555681e6b8 in QCoreApplication::sendEvent(QObject*, QEvent*) ()
 dashpay#17 0x000055555686de2a in QTimerInfoList::activateTimers() ()
 dashpay#18 0x000055555686be84 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#19 0x00005555569bf8a2 in QXcbUnixEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#20 0x000055555681caf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#21 0x0000555556825f8a in QCoreApplication::exec() ()
...
```
knst added a commit to knst/dash that referenced this issue Oct 26, 2023
…igher than Tip

Example of new log:
```
2023-09-28T17:35:50Z GetProjectedMNPayeesAtChainTip WARNING pindex is nullptr due to height=914160 chain height=914159
```

instead assert call:
```
...
 dashpay#6  0x00007ffff7a33b86 in __assert_fail (assertion=0x55555783afd2 "pindex", file=0x5555577f2ed8 "llmq/utils.cpp", line=730,
        function=0x5555577f2448 "bool llmq::utils::IsMNRewardReallocationActive(const CBlockIndex*)") at ./assert/assert.c:101
 dashpay#7  0x0000555555ab7daf in llmq::utils::IsMNRewardReallocationActive (pindex=<optimized out>) at llmq/utils.cpp:730
 dashpay#8  0x00005555559458ad in CDeterministicMNList::GetProjectedMNPayees (this=this@entry=0x7fffffffc690, pindex=0x0, nCount=<optimized out>, nCount@entry=2147483647)
        at evo/deterministicmns.cpp:231
 dashpay#9  0x000055555594614f in CDeterministicMNList::GetProjectedMNPayeesAtChainTip (this=this@entry=0x7fffffffc690, nCount=nCount@entry=2147483647) at evo/deterministicmns.cpp:216
 dashpay#10 0x00005555558c9f51 in MasternodeList::updateDIP3List (this=this@entry=0x55555908cfd0) at qt/masternodelist.cpp:194
 dashpay#11 0x00005555558ca9a0 in MasternodeList::updateDIP3ListScheduled (this=0x55555908cfd0) at qt/masternodelist.cpp:157
 dashpay#12 0x000055555684a60f in void doActivate<false>(QObject*, int, void**) ()
 dashpay#13 0x00005555568525b1 in QTimer::timerEvent(QTimerEvent*) ()
 dashpay#14 0x0000555556844ce5 in QObject::event(QEvent*) ()
 dashpay#15 0x0000555556ac3252 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
 dashpay#16 0x000055555681e6b8 in QCoreApplication::sendEvent(QObject*, QEvent*) ()
 dashpay#17 0x000055555686de2a in QTimerInfoList::activateTimers() ()
 dashpay#18 0x000055555686be84 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#19 0x00005555569bf8a2 in QXcbUnixEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#20 0x000055555681caf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#21 0x0000555556825f8a in QCoreApplication::exec() ()
...
```
PastaPastaPasta pushed a commit that referenced this issue Oct 28, 2023
…r then Tip (#5590)

## Issue being fixed or feature implemented
fix: possible assert call if nHeight in CDeterministicMNListDiff is
higher than Tip
    
Example of new log:
```
2023-09-28T17:35:50Z GetProjectedMNPayeesAtChainTip WARNING pindex is nullptr due to height=914160 chain height=914159
```
    
instead assert call:
```
...
     #6  0x00007ffff7a33b86 in __assert_fail (assertion=0x55555783afd2 "pindex", file=0x5555577f2ed8 "llmq/utils.cpp", line=730,
            function=0x5555577f2448 "bool llmq::utils::IsMNRewardReallocationActive(const CBlockIndex*)") at ./assert/assert.c:101
     #7  0x0000555555ab7daf in llmq::utils::IsMNRewardReallocationActive (pindex=<optimized out>) at llmq/utils.cpp:730
     #8  0x00005555559458ad in CDeterministicMNList::GetProjectedMNPayees (this=this@entry=0x7fffffffc690, pindex=0x0, nCount=<optimized out>, nCount@entry=2147483647)
            at evo/deterministicmns.cpp:231
     #9  0x000055555594614f in CDeterministicMNList::GetProjectedMNPayeesAtChainTip (this=this@entry=0x7fffffffc690, nCount=nCount@entry=2147483647) at evo/deterministicmns.cpp:216
     #10 0x00005555558c9f51 in MasternodeList::updateDIP3List (this=this@entry=0x55555908cfd0) at qt/masternodelist.cpp:194
     #11 0x00005555558ca9a0 in MasternodeList::updateDIP3ListScheduled (this=0x55555908cfd0) at qt/masternodelist.cpp:157
     #12 0x000055555684a60f in void doActivate<false>(QObject*, int, void**) ()
     #13 0x00005555568525b1 in QTimer::timerEvent(QTimerEvent*) ()
     #14 0x0000555556844ce5 in QObject::event(QEvent*) ()
     #15 0x0000555556ac3252 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
     #16 0x000055555681e6b8 in QCoreApplication::sendEvent(QObject*, QEvent*) ()
     #17 0x000055555686de2a in QTimerInfoList::activateTimers() ()
     #18 0x000055555686be84 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
     #19 0x00005555569bf8a2 in QXcbUnixEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
     #20 0x000055555681caf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
     #21 0x0000555556825f8a in QCoreApplication::exec() ()
...
```

## What was done?
ClientModel returns now a pair: MNList and CBlockIndex; so, we always
know the which one has been used even if current chain is switched.

## How Has This Been Tested?
Run on my localhost from `c034ff0c2606142ba3e8894bc74f693b87374e5c` -
aborted with backtrace like above.
With both of commit - no assert more.


## Breaking Changes
N/A

## Checklist:
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e
tests
- [ ] I have made corresponding changes to the documentation
- [x] I have assigned this pull request to a milestone

---------

Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
knst added a commit to knst/dash that referenced this issue Oct 30, 2023
…igher than Tip - cummulative from dashpay#5590

Example of new log:
```
2023-09-28T17:35:50Z GetProjectedMNPayeesAtChainTip WARNING pindex is nullptr due to height=914160 chain height=914159
```

instead assert call:
```
...
 dashpay#6  0x00007ffff7a33b86 in __assert_fail (assertion=0x55555783afd2 "pindex", file=0x5555577f2ed8 "llmq/utils.cpp", line=730,
        function=0x5555577f2448 "bool llmq::utils::IsMNRewardReallocationActive(const CBlockIndex*)") at ./assert/assert.c:101
 dashpay#7  0x0000555555ab7daf in llmq::utils::IsMNRewardReallocationActive (pindex=<optimized out>) at llmq/utils.cpp:730
 dashpay#8  0x00005555559458ad in CDeterministicMNList::GetProjectedMNPayees (this=this@entry=0x7fffffffc690, pindex=0x0, nCount=<optimized out>, nCount@entry=2147483647)
        at evo/deterministicmns.cpp:231
 dashpay#9  0x000055555594614f in CDeterministicMNList::GetProjectedMNPayeesAtChainTip (this=this@entry=0x7fffffffc690, nCount=nCount@entry=2147483647) at evo/deterministicmns.cpp:216
 dashpay#10 0x00005555558c9f51 in MasternodeList::updateDIP3List (this=this@entry=0x55555908cfd0) at qt/masternodelist.cpp:194
 dashpay#11 0x00005555558ca9a0 in MasternodeList::updateDIP3ListScheduled (this=0x55555908cfd0) at qt/masternodelist.cpp:157
 dashpay#12 0x000055555684a60f in void doActivate<false>(QObject*, int, void**) ()
 dashpay#13 0x00005555568525b1 in QTimer::timerEvent(QTimerEvent*) ()
 dashpay#14 0x0000555556844ce5 in QObject::event(QEvent*) ()
 dashpay#15 0x0000555556ac3252 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
 dashpay#16 0x000055555681e6b8 in QCoreApplication::sendEvent(QObject*, QEvent*) ()
 dashpay#17 0x000055555686de2a in QTimerInfoList::activateTimers() ()
 dashpay#18 0x000055555686be84 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#19 0x00005555569bf8a2 in QXcbUnixEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#20 0x000055555681caf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
 dashpay#21 0x0000555556825f8a in QCoreApplication::exec() ()
...
```

fix: use g_chainman.m_blockman.LookupBlockIndex for any known block (even wrong tip)

fix: handle GetProjectedMNPayees's failures in `MasternodeList::updateDIP3List()`

fix: resulting vector in GetProjectedMNPayees grows to the weighted count, should reserve memory accordingly

fix: avoid useless loop in GetProjectedMNPayees after mn_rr activation

fix: pass proper CBlockIndex from ClientModel

fix statusItem
PastaPastaPasta pushed a commit that referenced this issue Dec 5, 2023
…atures in coinbase (#5752)

## Issue being fixed or feature implemented
Now that we have ChainLock sigs in coinbase `VerifyDB()` have to process
them. It works most of the time because usually we simply read
contributions from quorum db
https://github.com/dashpay/dash/blob/develop/src/llmq/quorums.cpp#L385.
However, sometimes these contributions aren't available so we try to
re-build them
https://github.com/dashpay/dash/blob/develop/src/llmq/quorums.cpp#L388.
But by the time we call `VerifyDB()` bls worker threads aren't started
yet, so we keep pushing jobs into worker's queue but it can't do
anything and it halts everything.

backtrace:
```
  * frame #0: 0x00007fdd85a2873d libc.so.6`syscall at syscall.S:38
    frame #1: 0x0000555c41152921 dashd_testnet`std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long, std::ratio<1l, 1l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> >) + 225
    frame #2: 0x0000555c40e22bd2 dashd_testnet`CBLSWorker::BuildQuorumVerificationVector(Span<std::shared_ptr<std::vector<CBLSPublicKey, std::allocator<CBLSPublicKey> > > >, bool) at atomic_futex.h:102:36
    frame #3: 0x0000555c40d35567 dashd_testnet`llmq::CQuorumManager::BuildQuorumContributions(std::unique_ptr<llmq::CFinalCommitment, std::default_delete<llmq::CFinalCommitment> > const&, std::shared_ptr<llmq::CQuorum> const&) const at quorums.cpp:419:65
    frame #4: 0x0000555c40d3b9d1 dashd_testnet`llmq::CQuorumManager::BuildQuorumFromCommitment(Consensus::LLMQType, gsl::not_null<CBlockIndex const*>) const at quorums.cpp:388:37
    frame #5: 0x0000555c40d3c415 dashd_testnet`llmq::CQuorumManager::GetQuorum(Consensus::LLMQType, gsl::not_null<CBlockIndex const*>) const at quorums.cpp:588:37
    frame #6: 0x0000555c40d406a9 dashd_testnet`llmq::CQuorumManager::ScanQuorums(Consensus::LLMQType, CBlockIndex const*, unsigned long) const at quorums.cpp:545:64
    frame #7: 0x0000555c40937629 dashd_testnet`llmq::CSigningManager::SelectQuorumForSigning(Consensus::LLMQParams const&, llmq::CQuorumManager const&, uint256 const&, int, int) at signing.cpp:1038:90
    frame #8: 0x0000555c40937d34 dashd_testnet`llmq::CSigningManager::VerifyRecoveredSig(Consensus::LLMQType, llmq::CQuorumManager const&, int, uint256 const&, uint256 const&, CBLSSignature const&, int) at signing.cpp:1061:113
    frame #9: 0x0000555c408e2d43 dashd_testnet`llmq::CChainLocksHandler::VerifyChainLock(llmq::CChainLockSig const&) const at chainlocks.cpp:559:53
    frame #10: 0x0000555c40c8b09e dashd_testnet`CheckCbTxBestChainlock(CBlock const&, CBlockIndex const*, llmq::CChainLocksHandler const&, BlockValidationState&) at cbtx.cpp:368:47
    frame #11: 0x0000555c40cf75db dashd_testnet`ProcessSpecialTxsInBlock(CBlock const&, CBlockIndex const*, CMNHFManager&, llmq::CQuorumBlockProcessor&, llmq::CChainLocksHandler const&, Consensus::Params const&, CCoinsViewCache const&, bool, bool, BlockValidationState&, std::optional<MNListUpdates>&) at specialtxman.cpp:202:60
    frame #12: 0x0000555c40c00a47 dashd_testnet`CChainState::ConnectBlock(CBlock const&, BlockValidationState&, CBlockIndex*, CCoinsViewCache&, bool) at validation.cpp:2179:34
    frame #13: 0x0000555c40c0e593 dashd_testnet`CVerifyDB::VerifyDB(CChainState&, CChainParams const&, CCoinsView&, CEvoDB&, int, int) at validation.cpp:4789:41
    frame #14: 0x0000555c40851627 dashd_testnet`AppInitMain(std::variant<std::nullopt_t, std::reference_wrapper<NodeContext>, std::reference_wrapper<WalletContext>, std::reference_wrapper<CTxMemPool>, std::reference_wrapper<ChainstateManager>, std::reference_wrapper<CBlockPolicyEstimator>, std::reference_wrapper<LLMQContext> > const&, NodeContext&, interfaces::BlockAndHeaderTipInfo*) at init.cpp:2098:50
    frame #15: 0x0000555c4082fe11 dashd_testnet`AppInit(int, char**) at bitcoind.cpp:145:54
    frame #16: 0x0000555c40823c64 dashd_testnet`main at bitcoind.cpp:173:20
    frame #17: 0x00007fdd85934083 libc.so.6`__libc_start_main(main=(dashd_testnet`main at bitcoind.cpp:160:1), argc=3, argv=0x00007ffcb8ca5b88, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007ffcb8ca5b78) at libc-start.c:308:16
    frame #18: 0x0000555c4082f27e dashd_testnet`_start + 46
```

Fixes #5741

## What was done?
Start LLMQContext early. Alternative solution could be moving bls worker
Start/Stop into llmq context ctor/dtor.

## How Has This Been Tested?
I had a node with that issue. This patch fixed it.

## Breaking Changes
Not sure, hopefully none.

## Checklist:
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e
tests
- [ ] 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)_
ogabrielides pushed a commit to ogabrielides/dash that referenced this issue Dec 5, 2023
…atures in coinbase (dashpay#5752)

## Issue being fixed or feature implemented
Now that we have ChainLock sigs in coinbase `VerifyDB()` have to process
them. It works most of the time because usually we simply read
contributions from quorum db
https://github.com/dashpay/dash/blob/develop/src/llmq/quorums.cpp#L385.
However, sometimes these contributions aren't available so we try to
re-build them
https://github.com/dashpay/dash/blob/develop/src/llmq/quorums.cpp#L388.
But by the time we call `VerifyDB()` bls worker threads aren't started
yet, so we keep pushing jobs into worker's queue but it can't do
anything and it halts everything.

backtrace:
```
  * frame #0: 0x00007fdd85a2873d libc.so.6`syscall at syscall.S:38
    frame #1: 0x0000555c41152921 dashd_testnet`std::__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned int*, unsigned int, bool, std::chrono::duration<long, std::ratio<1l, 1l> >, std::chrono::duration<long, std::ratio<1l, 1000000000l> >) + 225
    frame #2: 0x0000555c40e22bd2 dashd_testnet`CBLSWorker::BuildQuorumVerificationVector(Span<std::shared_ptr<std::vector<CBLSPublicKey, std::allocator<CBLSPublicKey> > > >, bool) at atomic_futex.h:102:36
    frame #3: 0x0000555c40d35567 dashd_testnet`llmq::CQuorumManager::BuildQuorumContributions(std::unique_ptr<llmq::CFinalCommitment, std::default_delete<llmq::CFinalCommitment> > const&, std::shared_ptr<llmq::CQuorum> const&) const at quorums.cpp:419:65
    frame #4: 0x0000555c40d3b9d1 dashd_testnet`llmq::CQuorumManager::BuildQuorumFromCommitment(Consensus::LLMQType, gsl::not_null<CBlockIndex const*>) const at quorums.cpp:388:37
    frame dashpay#5: 0x0000555c40d3c415 dashd_testnet`llmq::CQuorumManager::GetQuorum(Consensus::LLMQType, gsl::not_null<CBlockIndex const*>) const at quorums.cpp:588:37
    frame dashpay#6: 0x0000555c40d406a9 dashd_testnet`llmq::CQuorumManager::ScanQuorums(Consensus::LLMQType, CBlockIndex const*, unsigned long) const at quorums.cpp:545:64
    frame dashpay#7: 0x0000555c40937629 dashd_testnet`llmq::CSigningManager::SelectQuorumForSigning(Consensus::LLMQParams const&, llmq::CQuorumManager const&, uint256 const&, int, int) at signing.cpp:1038:90
    frame dashpay#8: 0x0000555c40937d34 dashd_testnet`llmq::CSigningManager::VerifyRecoveredSig(Consensus::LLMQType, llmq::CQuorumManager const&, int, uint256 const&, uint256 const&, CBLSSignature const&, int) at signing.cpp:1061:113
    frame dashpay#9: 0x0000555c408e2d43 dashd_testnet`llmq::CChainLocksHandler::VerifyChainLock(llmq::CChainLockSig const&) const at chainlocks.cpp:559:53
    frame dashpay#10: 0x0000555c40c8b09e dashd_testnet`CheckCbTxBestChainlock(CBlock const&, CBlockIndex const*, llmq::CChainLocksHandler const&, BlockValidationState&) at cbtx.cpp:368:47
    frame dashpay#11: 0x0000555c40cf75db dashd_testnet`ProcessSpecialTxsInBlock(CBlock const&, CBlockIndex const*, CMNHFManager&, llmq::CQuorumBlockProcessor&, llmq::CChainLocksHandler const&, Consensus::Params const&, CCoinsViewCache const&, bool, bool, BlockValidationState&, std::optional<MNListUpdates>&) at specialtxman.cpp:202:60
    frame dashpay#12: 0x0000555c40c00a47 dashd_testnet`CChainState::ConnectBlock(CBlock const&, BlockValidationState&, CBlockIndex*, CCoinsViewCache&, bool) at validation.cpp:2179:34
    frame dashpay#13: 0x0000555c40c0e593 dashd_testnet`CVerifyDB::VerifyDB(CChainState&, CChainParams const&, CCoinsView&, CEvoDB&, int, int) at validation.cpp:4789:41
    frame dashpay#14: 0x0000555c40851627 dashd_testnet`AppInitMain(std::variant<std::nullopt_t, std::reference_wrapper<NodeContext>, std::reference_wrapper<WalletContext>, std::reference_wrapper<CTxMemPool>, std::reference_wrapper<ChainstateManager>, std::reference_wrapper<CBlockPolicyEstimator>, std::reference_wrapper<LLMQContext> > const&, NodeContext&, interfaces::BlockAndHeaderTipInfo*) at init.cpp:2098:50
    frame dashpay#15: 0x0000555c4082fe11 dashd_testnet`AppInit(int, char**) at bitcoind.cpp:145:54
    frame dashpay#16: 0x0000555c40823c64 dashd_testnet`main at bitcoind.cpp:173:20
    frame dashpay#17: 0x00007fdd85934083 libc.so.6`__libc_start_main(main=(dashd_testnet`main at bitcoind.cpp:160:1), argc=3, argv=0x00007ffcb8ca5b88, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007ffcb8ca5b78) at libc-start.c:308:16
    frame dashpay#18: 0x0000555c4082f27e dashd_testnet`_start + 46
```

Fixes dashpay#5741

## What was done?
Start LLMQContext early. Alternative solution could be moving bls worker
Start/Stop into llmq context ctor/dtor.

## How Has This Been Tested?
I had a node with that issue. This patch fixed it.

## Breaking Changes
Not sure, hopefully none.

## Checklist:
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e
tests
- [ ] 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)_
PastaPastaPasta pushed a commit that referenced this issue Jan 14, 2024
…ferenceable iterator outside its valid range)

fa09871 refactor: Avoid sign-compare compiler warning in util/asmap (MarcoFalke)

Pull request description:

  Can be reproduced on current master with `D_GLIBCXX_DEBUG`:

  ```
  /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/debug/safe_iterator.h:883:
  In function:
      __gnu_debug::_Safe_iterator<type-parameter-0-0, type-parameter-0-1,
      std::random_access_iterator_tag>::_Self __gnu_debug::operator+(const
      __gnu_debug::_Safe_iterator<type-parameter-0-0, type-parameter-0-1,
      std::random_access_iterator_tag>::_Self &,
      __gnu_debug::_Safe_iterator<type-parameter-0-0, type-parameter-0-1,
      std::random_access_iterator_tag>::difference_type)

  Error: attempt to advance a dereferenceable iterator 369 steps, which falls
  outside its valid range.

  Objects involved in the operation:
      iterator @ 0x0x7ffd3d613138 {
        type = std::__cxx1998::_Bit_const_iterator (constant iterator);
        state = dereferenceable;
        references sequence with type 'std::__debug::vector<bool, std::allocator<bool> >' @ 0x0x7ffd3d663590
      }
  ==65050== ERROR: libFuzzer: deadly signal
      #0 0x559ab9787690 in __sanitizer_print_stack_trace (/bitcoin/src/test/fuzz/fuzz+0x5a1690)
      #1 0x559ab9733998 in fuzzer::PrintStackTrace() (/bitcoin/src/test/fuzz/fuzz+0x54d998)
      #2 0x559ab9718ae3 in fuzzer::Fuzzer::CrashCallback() (/bitcoin/src/test/fuzz/fuzz+0x532ae3)
      #3 0x7f70a0e723bf  (/lib/x86_64-linux-gnu/libpthread.so.0+0x153bf)
      #4 0x7f70a0b3418a in raise (/lib/x86_64-linux-gnu/libc.so.6+0x4618a)
      #5 0x7f70a0b13858 in abort (/lib/x86_64-linux-gnu/libc.so.6+0x25858)
      #6 0x7f70a0f21148  (/lib/x86_64-linux-gnu/libstdc++.so.6+0xa1148)
      #7 0x559ab9f60a96 in __gnu_debug::operator+(__gnu_debug::_Safe_iterator<std::__cxx1998::_Bit_const_iterator, std::__debug::vector<bool, std::allocator<bool> >, std::random_access_iterator_tag> const&, long) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/debug/safe_iterator.h:881:2
      #8 0x559ab9f61062 in SanityCheckASMap(std::__debug::vector<bool, std::allocator<bool> > const&, int) util/asmap.cpp:159:21
      #9 0x559ab9e4fdfa in SanityCheckASMap(std::__debug::vector<bool, std::allocator<bool> > const&) netaddress.cpp:1242:12
      #10 0x559ab9793fcb in addrman_fuzz_target(Span<unsigned char const>) test/fuzz/addrman.cpp:43:14
      #11 0x559ab978a03c in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      #12 0x559aba2692c7 in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      #13 0x559aba269132 in LLVMFuzzerTestOneInput test/fuzz/fuzz.cpp:63:5
      #14 0x559ab971a1a1 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/bitcoin/src/test/fuzz/fuzz+0x5341a1)
      #15 0x559ab97198e5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/bitcoin/src/test/fuzz/fuzz+0x5338e5)
      #16 0x559ab971bb87 in fuzzer::Fuzzer::MutateAndTestOne() (/bitcoin/src/test/fuzz/fuzz+0x535b87)
      #17 0x559ab971c885 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/bitcoin/src/test/fuzz/fuzz+0x536885)
      #18 0x559ab970b23e in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/bitcoin/src/test/fuzz/fuzz+0x52523e)
      #19 0x559ab9734082 in main (/bitcoin/src/test/fuzz/fuzz+0x54e082)
      #20 0x7f70a0b150b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
      #21 0x559ab96dffdd in _start (/bitcoin/src/test/fuzz/fuzz+0x4f9fdd)

ACKs for top commit:
  sipa:
    utACK fa09871
  vasild:
    ACK fa09871

Tree-SHA512: 802fda33bda40fe2521f1e3be075ceddc5fd9ba185bd494286e50019931dfd688da7a6513601138b1dc7bb8e80ae47c8572902406eb59f68990619ddb2656748
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Feb 12, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Feb 13, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Feb 16, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Feb 16, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
vijaydasmp pushed a commit to vijaydasmp/dash that referenced this issue Feb 19, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
PastaPastaPasta pushed a commit to vijaydasmp/dash that referenced this issue Feb 21, 2024
8963b2c qt: Improve comments in WalletController::getOrCreateWallet() (Hennadii Stepanov)
5fcfee6 qt: Call setParent() in the parent's context (Hennadii Stepanov)
5659e73 qt: Add ObjectInvoke template function (Hennadii Stepanov)

Pull request description:

  The `setParent(parent)` internally calls `QCoreApplication::sendEvent(parent, QChildEvent)` that implies running in the thread which created the parent object. That is not the case always, and an internal assertion fails in the debug mode.

  Steps to reproduce this issue on master (007e15d) on Linux Mint 20 (x86_64):

  ```
  $ make -C depends DEBUG=1
  $ CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site ./configure
  $ make
  $ QT_FATAL_WARNINGS=1 lldb src/qt/bitcoin-qt -- --regtest -debug=qt
  (lldb) target create "src/qt/bitcoin-qt"
  Current executable set to '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64).
  (lldb) settings set -- target.run-args  "--regtest" "-debug=qt"
  (lldb) run
  Process 431562 launched: '/home/hebasto/GitHub/bitcoin/src/qt/bitcoin-qt' (x86_64)
  # load wallet via GUI
  Process 431562 stopped
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
      frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
  (lldb) bt
  * thread dashpay#24, name = 'QThread', stop reason = signal SIGABRT
    * frame #0: 0x00007ffff794518b libc.so.6`__GI_raise(sig=2) at raise.c:51:1
      frame dashpay#1: 0x00007ffff7924859 libc.so.6`__GI_abort at abort.c:79:7
      frame dashpay#2: 0x0000555556508ec4 bitcoin-qt`::qt_message_fatal((null)=<unavailable>, context=<unavailable>, message=<unavailable>) at qlogging.cpp:1690:15
      frame dashpay#3: 0x00005555565099cf bitcoin-qt`QMessageLogger::fatal(this=<unavailable>, msg=<unavailable>) const at qlogging.cpp:796:21
      frame dashpay#4: 0x000055555650479d bitcoin-qt`qt_assert_x(where=<unavailable>, what=<unavailable>, file=<unavailable>, line=<unavailable>) at qglobal.cpp:3088:46
      frame dashpay#5: 0x0000555556685733 bitcoin-qt`QCoreApplicationPrivate::checkReceiverThread(receiver=0x0000555557b27510) at qcoreapplication.cpp:557:5
      frame dashpay#6: 0x00005555567ced86 bitcoin-qt`QApplication::notify(this=0x00007fffffffd4a0, receiver=0x0000555557b27510, e=0x00007fff9a7f8ce0) at qapplication.cpp:2956:27
      frame dashpay#7: 0x0000555556685d31 bitcoin-qt`QCoreApplication::notifyInternal2(receiver=0x0000555557b27510, event=0x00007fff9a7f8ce0) at qcoreapplication.cpp:1024:24
      frame dashpay#8: 0x00005555566c9224 bitcoin-qt`QObjectPrivate::setParent_helper(QObject*) [inlined] QCoreApplication::sendEvent(event=<unavailable>, receiver=<unavailable>) at qcoreapplication.h:233:59
      frame dashpay#9: 0x00005555566c9210 bitcoin-qt`QObjectPrivate::setParent_helper(this=0x00007fff85855260, o=0x0000555557b27510) at qobject.cpp:2036
      frame dashpay#10: 0x00005555566c9b41 bitcoin-qt`QObject::setParent(this=<unavailable>, parent=<unavailable>) at qobject.cpp:1980:24
      frame dashpay#11: 0x0000555555710be8 bitcoin-qt`WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) + 2534

  ...
  ```

  Fixes bitcoin#18835.

ACKs for top commit:
  ryanofsky:
    Code review ACK 8963b2c. No changes since last review, just rebase because of conflict on some adjacent lines
  jonasschnelli:
    utACK 8963b2c

Tree-SHA512: fef615904168717df3d8a0bd85eccc3eef990cc3e66c9fa280c8ef08ea009a7cb5a2a4f868ed0be3c0fe5bf683e8465850b5958deb896fdadd22d296186c9586
PastaPastaPasta added a commit that referenced this issue Apr 2, 2024
…kssessionmgr

ded1b5a fix: deadlock over cs_main and contributionsCacheCs in dkssessionmgr (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  **It fixes rpc failure: "Work queue depth exceeded"**

  As I checked on running `dashd` in deadlock condition:
  Thread 78 is a thread that keep `cs_main`:
  ```
  #14 0x0000aaaad1f8d604 in BuildSimplifiedMNListDiff () at evo/simplifiedmns.cpp:364
  ```
  but it is locked by `contributionsCacheCs`
  ```
  #8  llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:392
  ```

  On other hand, `contributionsCacheCs` is blocked by Thread 59
  ```
  #17 0x0000aaaad1ba1940 in llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:393
  ```
  and it makes circuit lock by waiting `cs_main` in
  ```
  #9  ReadBlockFromDisk () at node/blockstorage.cpp:75
  ```

  See dashpay/dash-issues#69 for more details

  Seems introduced there: #3911

  ## What was done?
  Deadlock is removed by reducing scope of mutex

  ## How Has This Been Tested?
  I reviewed 2 different servers which have status `work queue exceeded`, both have same deadlock, so, this patch should fix this issue. Once this fix is merged, we can test it on testnet.

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

Top commit has no ACKs.

Tree-SHA512: 4fe5c03c464ee6934fb927b897f007b65a8995723196edaffdae067edee7067da151130d4c4bac47d3418fdad5c8e130682f42d7ef9c044380a8c8fff78ee008
PastaPastaPasta added a commit that referenced this issue Apr 3, 2024
…kssessionmgr

ded1b5a fix: deadlock over cs_main and contributionsCacheCs in dkssessionmgr (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  **It fixes rpc failure: "Work queue depth exceeded"**

  As I checked on running `dashd` in deadlock condition:
  Thread 78 is a thread that keep `cs_main`:
  ```
  #14 0x0000aaaad1f8d604 in BuildSimplifiedMNListDiff () at evo/simplifiedmns.cpp:364
  ```
  but it is locked by `contributionsCacheCs`
  ```
  #8  llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:392
  ```

  On other hand, `contributionsCacheCs` is blocked by Thread 59
  ```
  #17 0x0000aaaad1ba1940 in llmq::CDKGSessionManager::GetVerifiedContributions () at llmq/dkgsessionmgr.cpp:393
  ```
  and it makes circuit lock by waiting `cs_main` in
  ```
  #9  ReadBlockFromDisk () at node/blockstorage.cpp:75
  ```

  See dashpay/dash-issues#69 for more details

  Seems introduced there: #3911

  ## What was done?
  Deadlock is removed by reducing scope of mutex

  ## How Has This Been Tested?
  I reviewed 2 different servers which have status `work queue exceeded`, both have same deadlock, so, this patch should fix this issue. Once this fix is merged, we can test it on testnet.

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

Top commit has no ACKs.

Tree-SHA512: 4fe5c03c464ee6934fb927b897f007b65a8995723196edaffdae067edee7067da151130d4c4bac47d3418fdad5c8e130682f42d7ef9c044380a8c8fff78ee008
michaelvkax added a commit to michaelvkax/dash that referenced this issue May 16, 2024
PastaPastaPasta added a commit that referenced this issue May 24, 2024
…o 5.15.11 - fix crash at Kubuntu 24.04

b85fc45 Merge bitcoin#28769: build: Update `qt` package up to 5.15.11 (fanquake)

Pull request description:

  ## Issue being fixed or feature implemented
  It fixes crash of qt app on Kubuntu 24.04

  ```
  *** buffer overflow detected ***: terminated

  #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
  #1  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
  #2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
  #3  0x00007ffff764526e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
  #4  0x00007ffff76288ff in __GI_abort () at ./stdlib/abort.c:79
  #5  0x00007ffff76297b6 in __libc_message_impl (fmt=fmt@entry=0x7ffff77ce765 "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:132
  #6  0x00007ffff7736c19 in __GI___fortify_fail (msg=msg@entry=0x7ffff77ce74c "buffer overflow detected") at ./debug/fortify_fail.c:24
  #7  0x00007ffff77365d4 in __GI___chk_fail () at ./debug/chk_fail.c:28
  #8  0x00007ffff7737a67 in __readlink_chk (path=<optimized out>, buf=<optimized out>, len=<optimized out>, buflen=<optimized out>) at ./debug/readlink_chk.c:31
  #9  0x0000555556988ab3 in qt_readlink(char const*) ()
  #10 0x0000555556a1f18b in QLockFilePrivate::processNameByPid(long long) ()
  #11 0x0000555556a1aa7b in QLockFilePrivate::lockFileContents() const ()
  #12 0x0000555556a1eccf in QLockFilePrivate::tryLock_sys() ()
  #13 0x0000555556a1bf01 in QLockFile::tryLock(int) ()
  #14 0x0000555556a1c094 in QLockFile::tryLock(int) ()
  #15 0x0000555556a1c094 in QLockFile::tryLock(int) ()
  #16 0x00005555568d8dd3 in QConfFileSettingsPrivate::syncConfFile(QConfFile*) ()
  #17 0x00005555568d9753 in QConfFileSettingsPrivate::sync() ()
  #18 0x00005555568c8ef5 in QSettings::~QSettings() ()
  #19 0x0000555555721f82 in Intro::showIfNeeded (did_show_intro=<optimized out>, prune_MiB=@0x7fffffffd2f0: 0) at qt/intro.cpp:275
  #20 0x00005555556ddab6 in GuiMain (argc=3, argv=0x7fffffffd828) at qt/bitcoin.cpp:629
  #21 0x00007ffff762a1ca in __libc_start_call_main (main=main@entry=0x5555556d7f00 <main(int, char**)>, argc=argc@entry=3, argv=argv@entry=0x7fffffffd828) at ../sysdeps/nptl/libc_start_call_main.h:58
  #22 0x00007ffff762a28b in __libc_start_main_impl (main=0x5555556d7f00 <main(int, char**)>, argc=3, argv=0x7fffffffd828, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd818) at ../csu/libc-start.c:360
  #23 0x00005555556d7e35 in _start ()
  ```

  Every usage of `QSettings` cause this crash on one of my PC, but not other. `-resetguisettings` doesn't help. gcc/clang - same crash. Removing data doesn't help.

  ## What was done?
  Bump QT to the newer version.
  See also related PR: #6011

  ## How Has This Been Tested?
  Build & Run

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

Top commit has no ACKs.

Tree-SHA512: 3a9024a860c11aa7a48bfb36b3f29772feb6ff458ecbc0faffe774af08e6c7db5754048b0db2bf8713faf4cba861794b2855931416b8cd77389b31f1e47b8aad
PastaPastaPasta added a commit that referenced this issue Jun 27, 2024
…fic code, merge bitcoin#21866 (goodbye to a global chainstate)

0213fbe merge bitcoin#21866: Farewell, global Chainstate! (Kittywhiskers Van Gogh)
e3687f7 test, bench: remove globals vCoins and testWallet from test and bench (Kittywhiskers Van Gogh)
0f4184c refactor: drop usage of chainstate globals in spork logic (Kittywhiskers Van Gogh)
208b1c0 refactor: drop usage of chainstate globals in masternode logic (Kittywhiskers Van Gogh)
303c6bb refactor: drop usage of chainstate globals in llmq logic (Kittywhiskers Van Gogh)
fa20718 refactor: drop usage of chainstate globals in asset locks logic (Kittywhiskers Van Gogh)
21cc12c refactor: drop usage of chainstate globals in governance logic (Kittywhiskers Van Gogh)
a475f5f refactor: drop usage of chainstate globals in coinjoin logic (Kittywhiskers Van Gogh)
ed56dbd refactor: don't use globals to access members we can directly access (Kittywhiskers Van Gogh)
c48c0e7 refactor: stop using `::ChainstateActive()` in `GetBlockHash` (Kittywhiskers Van Gogh)
6abf7f8 refactor: stop using `::Chain`{`state`}`Active()` in `GetUTXO*` (Kittywhiskers Van Gogh)
f6f7df3 rpc: don't use GetUTXOCoin in CDeterministicMN::ToJson() (Kittywhiskers Van Gogh)

Pull request description:

  ```
  Thank you, I'll say goodbye soon
  Though its the end of these globals, don't blame yourself now
  And if its true, I will surround you and give life to a chainstate
  That's our own
  ```

  ## Additional Information

  * In `CDeterministicMN::ToJson()`, `collateralAddress` is extracted by finding the `scriptPubKey` of a transaction output for a masternode, originally this used `GetUTXOCoin` but doesn't work for spent tranasction outputs (as they're _not_ UTXOs), so in [dash#5607](#5607), a fallback was introduced that looks through the general transaction set if going through the UTXO set yielded nothing.

     `GetUTXOCoin` accesses the active chainstate to get ahold of the UTXO set, this was done through globals. The removal of chainstate globals meant that whoever was calling `GetUTXOCoin` should have access to the chainstate handy. This is trivial in RPC code where `ToJson()` is used ([source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/rpc/evo.cpp#L1286)) through `Ensure`(`Any`)`Chainman`. Not the case in Qt code ([source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/qt/masternodelist.cpp#L369)), which is supposed to be given restricted access to information by the interface.

    As the fallback seems to be capable of fetching UTXOs and spent outputs, we can remove the `GetUTXOCoin` method and make the fallback the only method.

  * In `develop`, as of this writing, `CChainState` members `FlushStateToDisk` and {`Enforce`, `Invalidate`, `MarkConflicting`}`Block` were accessing their internals through the global, despite having direct access to them. As the globals they were calling are going to be bid farewell, they needed to be changed to access its members instead.

    The reason for going the roundabout way is unknown.

  * `CDSNotificationInterface` takes in a `ChainstateManager` (instead of the `CChainState` it actually requires) as at the time of interface initialization ([source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/init.cpp#L1915-L1918)), the active chainstate hasn't been loaded in yet as that happens further down ([source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/init.cpp#L1988-L1991)).

    As `CDSNotificationInterface::InitializeCurrentBlockTip()` is called well after it is initialized, we can resolve to the active chainstate in there.

  * As `GetCreditPoolDiffForBlock` requires access to `ChainstateManager` as `GetCreditPoolDiffForBlock` > `ProcessLockUnlockTransaction` > `CheckAssetLockUnlockTx` > `CheckAssetUnlockTx` > `ChainstateManager::m_blockman.LookupBlockIndex()` and `BlockAssembler` only has `CChainState`, it had to be reworked around `ChainstateManager`.

    ~~`CChainState` is passed as a direct argument while `ChainstateManager` can be fetched from `NodeContext`. Unlike `CTxMemPool`, which can be passed custom instances ([source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/rpc/mining.cpp#L381-L382), [source](https://github.com/dashpay/dash/blob/5baa5222258f5cf2be0a3ce0f335dfd2fee931bc/src/test/util/setup_common.cpp#L391-L392)), `CChainState`'s argument value is taken from `NodeContext::chainstate.ActiveChainstate()` and since we're now accepting `ChainstateManager` wholesale, we can dispense with accepting `CChainState` as an argument.~~

    ~~Changes to that effect have been made.~~

    AssumeUTXO introduces the need to be able to use different `CChainState`s, so this underlying assumption no longer holds true, the above described changes have been reverted. Asset locks code has been refactored to use `BlockManager` directly (which does come with the downside of needing to hold `cs_main` for longer than strictly necessary, this is why only asset locks uses `BlockManager` directly while other cases still benefit from having `ChainstateManager` as a whole).

  * `CMNHFManager::ConnectManagers` will be taking in a `ChainstateManager` pointer due to the `GetSignalsStage` > `GetForBlock` > `ProcessBlock` > `extractSignals` > `CheckMNHFTx` > `ChainstateManager::m_blockman.LookupBlockIndex()` chain.

  * The use of a bespoke `NodeContext` in `coinselector_tests` breaks tests if any interface call relies on a chainstate as `testNode` doesn't initialize one. For the most part, this was masked by `WalletTestingSetup` populating the chainstate globals from its own `NodeContext` even if the tests themselves preferred to use their own stripped down `testNode`.

    Though, removing the chainstate globals meant that they can no longer rely on `WalletTestingSetup`'s `NodeContext` to mask the barebones `testNode` global being used in the test (specifically, `addCoins` > `listMNCollaterials` > `ChainActive()` worked because `ChainActive()` accessed `WalletTestingSetup`'s `NodeContext` but when `ChainActive()` was gone and replaced with `NodeContext::chainman.ActiveChain()`, it uses `testNode`'s `ChainstateManager`, which doesn't exist, which causes it to crash).

    To remedy this, a5595b1 and 5e54aa9 from [bitcoin#23288](bitcoin#23288) were adapted for the limited purpose of eliminating `testNode` and using `WalletTestingSetup`'s `NodeContext` instead. This comes with the unfortunate effect of skipping a lot of the refactoring, cleanups and optimizations done before and adapting the ones after them non-trivial.

    It is therefore best recommended that the commit be reverted and changes implemented step-by-step in a pull request at some point in the future. For now, it's kept around here for the sake of this pull request, which, if merged, should prevent more chainstate globals use from leaking into the codebase.

      <details>

      <summary>Pre-fix crash stacktrace: </summary>

      ```
      dash@71aecd6afb45:/src/dash$ lldb-16 ./src/test/test_dash
      (lldb) target create "./src/test/test_dash"
      Current executable set to '/src/dash/src/test/test_dash' (x86_64).
      (lldb) r -t coinselector_tests
      Process 395006 launched: '/src/dash/src/test/test_dash' (x86_64)
      Running 4 test cases...
      node/interfaces.cpp:711 chainman: Assertion `m_node.chainman' failed.
      Process 395006 stopped
      * thread #1, name = 'd-test', stop reason = signal SIGABRT
          frame #0: 0x00007ffff7a7300b libc.so.6`__GI_raise(sig=<unavailable>) at raise.c:51:1
      (lldb) bt
      * thread #1, name = 'd-test', stop reason = signal SIGABRT
      * frame #0: 0x00007ffff7a7300b libc.so.6`__GI_raise(sig=<unavailable>) at raise.c:51:1
          frame #1: 0x00007ffff7a52859 libc.so.6`__GI_abort at abort.c:79:7
          frame #2: 0x00005555563cba33 test_dash`assertion_fail(file="node/interfaces.cpp", line=711, func="chainman", assertion="m_node.chainman") at check.cpp:13:5
          frame #3: 0x0000555555fb47aa test_dash`node::(anonymous namespace)::ChainImpl::listMNCollaterials(std::vector<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>, std::allocator<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>>> const&) [inlined] std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager>>& inline_assertion_check<true, std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager>>&>(val=nullptr, file=<unavailable>, line=711, func=<unavailable>, assertion=<unavailable>) at check.h:62:13
          frame #4: 0x0000555555fb4781 test_dash`node::(anonymous namespace)::ChainImpl::listMNCollaterials(std::vector<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>, std::allocator<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>>> const&) [inlined] node::(anonymous namespace)::ChainImpl::chainman(this=0x000055555723e830)at interfaces.cpp:711:45
          frame #5: 0x0000555555fb477d test_dash`node::(anonymous namespace)::ChainImpl::listMNCollaterials(std::vector<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>, std::allocator<std::pair<std::shared_ptr<CTransaction const> const&, unsigned int>>> const&) [inlined] node::(anonymous namespace)::ChainImpl::listMNCollaterials(this=<unavailable>)::'lambda'()::operator()() const at interfaces.cpp:788:34
          frame #6: 0x0000555555fb474f test_dash`node::(anonymous namespace)::ChainImpl::listMNCollaterials(this=0x000055555723e830, outputs=size=0) at interfaces.cpp:788:34
          frame #7: 0x00005555565bcd07 test_dash`CWallet::AddToWallet(this=0x00005555571701e0, tx=<unavailable>, confirm=<unavailable>, update_wtx=<unavailable>, fFlushOnClose=<unavailable>) at wallet.cpp:886:46
          frame #8: 0x0000555555bed3ef test_dash`coinselector_tests::add_coin(wallet=0x00005555571701e0, nValue=0x00007fffffffc7c0, nAge=144, fIsFromMe=false, nInput=0, spendable=<unavailable>) at coinselector_tests.cpp:77:29
          frame #9: 0x0000555555bead3e test_dash`coinselector_tests::bnb_search_test::test_method() [inlined] coinselector_tests::add_coin(nValue=0x00007fffffffc7c0, nAge=144, fIsFromMe=false, nInput=0, spendable=false) at coinselector_tests.cpp:88:5
          frame #10: 0x0000555555bead20 test_dash`coinselector_tests::bnb_search_test::test_method(this=0x00007fffffffcad0) at coinselector_tests.cpp:278:5
          frame #11: 0x0000555555be6607 test_dash`coinselector_tests::bnb_search_test_invoker() at coinselector_tests.cpp:138:1
      ```

      </details>

  ## Breaking Changes

  * Backporting `coinselector_tests` changes are now much more annoying.

  * The following RPCs, `protx list`, `protx listdiff`, `protx info` will no longer report `collateralAddress` if the transaction index has been disabled (`txindex=0`).

  ## Checklist:

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

ACKs for top commit:
  UdjinM6:
    utACK 0213fbe
  knst:
    utACK 0213fbe
  PastaPastaPasta:
    utACK 0213fbe

Tree-SHA512: 839f3f5b2af018520f330c4f4727622471d6225640c98853f28c3d88c4b6c728091b5e0c35b320e82979e5cd1357902fa1212afa4b6977967f05c636a25cc3b0
kwvg added a commit to kwvg/dash that referenced this issue Aug 10, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 10, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 10, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 11, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 11, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 11, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 12, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 12, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 12, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg pushed a commit to kwvg/dash that referenced this issue Aug 23, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
kwvg added a commit to kwvg/dash that referenced this issue Aug 26, 2024
Avoid TSan-reported data race

```
WARNING: ThreadSanitizer: data race (pid=374820)
  Read of size 8 at 0x7b140002ce10 by thread T12:
    #0 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42 (dashd+0xb58e08) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21 (dashd+0xb58e08)
    dashpay#2 operator-> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:355:9 (dashd+0xb58e08)
    dashpay#3 CoinJoinWalletManager::DoMaintenance() /src/dash/src/coinjoin/client.cpp:1907:9 (dashd+0xb58e08)
    [...]
  Previous write of size 8 at 0x7b140002ce10 by thread T17 (mutexes: write M0):
    #0 operator new(unsigned long) <null> (dashd+0x162657) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#1 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ext/new_allocator.h:114:27 (dashd+0xb772b4) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
    dashpay#2 allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/alloc_traits.h:443:20 (dashd+0xb772b4)
    dashpay#3 _M_get_node /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:580:16 (dashd+0xb772b4)
    [...]
    dashpay#8 CoinJoinWalletManager::Add(CWallet&) /src/dash/src/coinjoin/client.cpp:1898:26 (dashd+0xb58c73) (BuildId: c3fdce9f7e778985a4fb0968ff4506d9ad24d408)
[...]
SUMMARY: ThreadSanitizer: data race [...]
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants