glozow
6619d6a8dc
Merge bitcoin/bitcoin#28450 : Add package evaluation fuzzer
...
262ab8ef78 Add package evaluation fuzzer (Greg Sanders)
Pull request description:
This fuzzer target caught the issue in https://github.com/bitcoin/bitcoin/pull/28251 within 5 minutes on master branch, and an additional issue which I've applied a preliminary patch to cover.
Fuzzer target does the following:
1) Picks mempool confgs, including max package size, count, mempool size, etc
2) Generates 1 to 26 transactions with arbitrary coins/fees, the first N-1 spending only confirmed outpoints
3) Nth transaction, if >1, sweeps all unconfirmed outpoints in mempool
4) If N==1, it may submit it through single-tx submission path, to allow for more interesting topologies
5) Otherwise submits through package submission interface
6) Repeat 1-5 a few hundred times per mempool instance
In other words, it ends up building chains of txns in the mempool using parents-and-children packages, which is currently the topology supported on master.
The test itself is a direct rip of tx_pool.cpp, with a number of assertions removed because they were failing for unknown reasons, likely due to the notification changes of single tx submission to package, which is used to track addition/removal of transactions in the test. I'll continue working on re-adding these assertions for further invariant testing.
ACKs for top commit:
murchandamus:
ACK 262ab8ef78
glozow:
reACK 262ab8ef78
dergoegge:
tACK 262ab8ef78
Tree-SHA512: 190784777d0f2361b051b3271db8f79b7927e3cab88596d2c30e556da721510bd17f6cc96f6bb03403bbf0589ad3f799fa54e63c1b2bd92a2084485b5e3e96a5
2023-09-28 12:05:24 +01:00
..
2023-09-26 14:01:44 +01:00
2023-08-14 17:39:49 -04:00
2023-08-08 17:50:41 +02:00
2023-09-08 11:16:06 +02:00
2022-08-13 13:55:38 +01:00
2023-08-17 15:37:41 -04:00
2023-09-15 14:34:24 +02:00
2023-06-15 10:27:56 -06:00
2023-09-22 18:29:51 +01:00
2023-05-20 12:08:13 +02:00
2023-09-23 18:42:36 +01:00
2022-09-29 16:43:30 +01:00
2023-01-31 18:48:50 +01:00
2022-10-23 15:03:04 +01:00
2023-09-15 14:34:24 +02:00
2023-09-20 08:10:30 -04:00
2023-09-08 13:40:15 +00:00
2023-09-22 18:29:51 +01:00
2023-09-27 16:46:27 -04:00
2023-09-07 11:34:34 +01:00
2023-09-04 12:51:20 -04:00
2023-07-24 22:33:40 -07:00
2023-09-28 12:05:24 +01:00
2023-07-27 14:24:52 +02:00
2023-09-19 16:48:43 +00:00
2023-09-27 16:46:27 -04:00
2023-05-26 13:41:07 -03:00
2023-06-29 11:59:31 +01:00
2023-08-16 14:48:06 +02:00
2023-09-15 14:27:20 +01:00
2023-09-05 10:13:25 +02:00
2023-09-12 12:14:31 -04:00
2023-09-12 12:14:31 -04:00
2023-08-28 17:48:15 +02:00
2023-09-05 10:13:25 +02:00
2023-05-24 12:03:18 -07:00
2022-12-24 23:49:50 +00:00
2023-02-01 11:33:35 +01:00
2023-05-04 20:57:51 +01:00
2023-05-20 12:08:13 +02:00
2023-03-23 12:55:18 +01:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2023-09-10 16:11:52 -04:00
2023-09-10 16:11:52 -04:00
2023-09-12 22:51:42 +02:00
2023-05-20 12:08:13 +02:00
2023-07-25 17:40:07 +02:00
2023-09-12 22:51:42 +02:00
2023-05-20 12:08:13 +02:00
2023-06-16 10:38:19 +01:00
2023-08-05 10:42:56 +02:00
2023-02-15 14:42:28 -08:00
2023-08-17 18:28:15 +02:00
2023-08-17 18:28:15 +02:00
2022-12-24 23:49:50 +00:00
2023-09-08 13:40:15 +00:00
2023-05-25 19:24:05 +02:00
2023-05-25 19:24:05 +02:00
2023-05-10 10:39:58 +02:00
2023-05-10 10:39:58 +02:00
2023-04-20 06:08:22 -07:00
2023-06-16 10:38:19 +01:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2023-03-23 19:38:38 +01:00
2023-03-23 19:38:38 +01:00
2023-08-14 17:38:27 -04:00
2023-07-25 17:40:07 +02:00
2023-07-25 17:40:07 +02:00
2023-08-14 17:39:49 -04:00
2023-01-31 11:50:10 +00:00
2023-09-12 12:07:39 +02:00
2023-09-12 12:07:39 +02:00
2023-03-15 16:42:42 +01:00
2023-03-15 16:42:42 +01:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2023-04-19 10:48:30 +02:00
2023-05-09 18:48:52 +02:00
2023-05-20 12:08:13 +02:00
2023-03-23 12:52:00 +01:00
2023-04-03 14:41:22 +01:00
2022-12-24 23:49:50 +00:00
2023-09-05 10:13:50 +02:00
2023-09-13 07:20:36 -04:00
2022-12-12 21:06:04 +00:00
2023-05-09 18:47:14 +02:00
2023-06-28 12:20:25 +01:00
2022-12-24 23:49:50 +00:00
2023-05-20 12:08:13 +02:00
2023-03-23 12:55:18 +01:00
2023-09-12 22:51:45 +02:00
2023-07-10 10:47:17 -03:00
2023-09-19 16:48:43 +00:00
2023-08-14 17:38:27 -04:00
2023-06-23 14:22:33 -04:00
2023-06-23 14:22:33 -04:00
2023-08-29 16:41:22 +01:00
2023-08-29 16:41:22 +01:00
2023-09-23 18:42:36 +01:00
2023-09-13 11:37:13 +01:00
2022-04-26 16:25:38 -04:00
2022-06-23 15:33:01 +02:00
2022-07-21 10:42:09 +01:00
2023-09-01 07:39:00 +01:00
2023-02-03 22:33:14 +01:00
2022-09-13 17:15:17 +01:00
2022-11-17 14:52:45 +00:00
2023-07-19 10:26:11 +01:00
2023-09-27 16:27:05 -04:00
2023-06-16 10:38:19 +01:00
2023-01-28 15:24:13 +00:00
2023-09-13 11:37:45 +01:00
2023-05-30 11:39:59 -04:00
2022-12-24 23:49:50 +00:00
2023-09-14 10:25:26 +10:00
2023-07-25 21:51:20 +01:00
2022-12-24 23:49:50 +00:00
2023-09-21 11:26:16 -04:00
2023-09-21 11:26:16 -04:00
2023-07-19 12:43:05 -06:00
2023-09-21 11:26:16 -04:00
2023-06-28 16:35:45 -05:00
2023-05-26 13:41:07 -03:00
2023-08-25 17:09:32 +02:00
2022-04-20 14:35:53 +01:00
2022-12-24 23:49:50 +00:00
2023-08-14 17:38:27 -04:00
2023-08-14 17:38:27 -04:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2023-03-26 15:49:52 +02:00
2023-09-12 22:49:49 +02:00
2023-09-15 14:27:20 +01:00
2023-08-14 17:38:27 -04:00
2023-04-21 14:06:12 -04:00
2023-09-07 08:53:45 -04:00
2023-09-07 08:53:45 -04:00
2023-09-12 22:51:48 +02:00
2023-08-17 15:26:34 -04:00
2023-09-12 22:51:48 +02:00
2023-06-12 10:24:14 -03:00
2022-03-10 12:01:53 +01:00
2023-01-12 13:42:44 +00:00
2023-06-16 10:38:19 +01:00
2022-12-24 23:49:50 +00:00
2023-09-15 14:27:20 +01:00
2023-06-28 09:52:33 +02:00
2023-06-28 09:52:33 +02:00
2023-08-14 17:38:27 -04:00
2023-07-24 15:32:35 +02:00
2023-07-19 18:12:42 +02:00
2023-09-15 14:34:17 +02:00
2023-01-25 09:33:26 +01:00
2023-04-19 10:48:30 +02:00
2022-12-24 23:49:50 +00:00
2023-01-31 11:50:10 +00:00
2023-08-17 23:58:47 -05:00
2023-08-17 23:58:47 -05:00
2023-09-05 11:37:35 +01:00
2023-08-01 15:27:33 +02:00
2023-09-20 10:34:09 -04:00
2023-09-23 18:42:36 +01:00
2023-08-29 16:41:22 +01:00
2023-06-20 10:23:08 +02:00
2023-07-17 13:27:46 +02:00
2022-12-10 14:34:44 -06:00
2023-06-28 15:12:12 -04:00
2023-09-26 14:01:44 +01:00
2023-09-26 14:01:44 +01:00
2023-02-01 11:33:35 +01:00
2023-01-05 09:05:14 +00:00
2023-09-05 10:13:25 +02:00
2023-01-03 19:31:29 -06:00
2022-12-24 23:49:50 +00:00
2022-12-24 23:49:50 +00:00
2023-05-20 12:08:13 +02:00