Skip to content

Conversation

@AnnaShaleva
Copy link
Member

This commit contains two changes in the dBFT-related transactions handling:
1. Store the sorted set of requested transactions and filter incoming ones wrt this set.
2. Do not subscribe for mempooled transactions. Instead, receive transactions directly via P2P bypassing mempool since mempool assumes additional tx filtering.

Close #98.

Tested on multinodes privnet under high load, works as expected. Debugging logs are removed:

2024-02-08T17:41:56.760+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:214	received message	{"type": "PrepareResponse", "from": 6, "height": 93, "view": 0, "my_height": 93, "my_view": 0}
2024-02-08T17:41:56.760+0300	INFO	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:437	received PrepareResponse	{"validator": 6}
2024-02-08T17:41:56.761+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/check.go:10	check prepare: some transactions are missing	{"hashes": ["0xa668dae019721657d6df6cf49970a95337972d0c6ec1ff657e764e3dd6ec77fd","0x37424a26adb5592b6ff02ccd5557b987bdf19cc1eba17c0c8cbeeedab2e326fb","0xaf07b0283a2d2908c5e288a58efbe9c730f835623a800d7a6c9d6731f9ce3bfe","0x9834f3568e4cc91b144589961e061045b091de91f632ed4a75f12890df7dc9fb","0x6910b7b6784187976bd8ed90f7f3950115cd4b64919375d083d58f7e4d8054fe","0x11f836dcd10ab6dc9e30af43f934375614c3ab88eaa739c5a6cb8d91036205fe","0x847040698e6075777856382167bbca9cc03c5c67eb87533294bf119c412bdefe","0x212347d714161e709a9dee512bf8b19ffef25171f8497acd8fa81cec8e4e50fe","0xe3f6157bcd30d90bbb5364bd0a66706b85202461addefe3aaba4c652f30600fc","0xc6e0a2a7882d70a00774264400c8b61b68588b0751d3c556ed9652d2bd7c17ff","0x5dd2fcccbf728af31fb6cbc5a12cfebe6ccb90c3c8b69d07652dc9da834910fe","0x5e1e06e6ac1da102974a092b9f410c282016c2c862ebcae63ca01809bf01aaff","0x959f1ae1200f1625772d4a4901180d26301235228f07550b931f17b30e390efe","0xe1cbb338d779dced9b71b00172659168e9d8bac3cc968a47d3f9f48aaa5c8bfd","0x21a3302c7c14e91259155a53b1cead3c2d15352de774f5434bd152d3fc855dfd","0xf10a635daf1216c93a7fb6024b54550c1b1e3845fb86748371e29af293410ffe","0x447de77541b4a14b9f5284a3f19c93519bdd7388ae5c4542b2282dd1a01adafd","0xc5a609d5e72738b8f533f27dbb6bb293c5e1800fab7532446768cda06e26deff","0x28dfc0c86f7853cdc7b2ab87cc42041c0d06e0934e3fbad9056dcc8a3887bfff","0x8274d2fd0ff5882d2b7b87f627cad1e5bc581e8dfc1e610b6c857c3e977f95fb"]}
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.765] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.766] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.787] ########          Received requested transaction       ############## 
2024-02-08T17:41:56.788+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:214	received message	{"type": "PrepareResponse", "from": 0, "height": 93, "view": 0, "my_height": 93, "my_view": 0}
2024-02-08T17:41:56.788+0300	INFO	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:437	received PrepareResponse	{"validator": 0}
2024-02-08T17:41:56.788+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/check.go:10	check prepare: some transactions are missing	{"hashes": ["0xa668dae019721657d6df6cf49970a95337972d0c6ec1ff657e764e3dd6ec77fd","0x37424a26adb5592b6ff02ccd5557b987bdf19cc1eba17c0c8cbeeedab2e326fb","0xaf07b0283a2d2908c5e288a58efbe9c730f835623a800d7a6c9d6731f9ce3bfe","0x9834f3568e4cc91b144589961e061045b091de91f632ed4a75f12890df7dc9fb","0x6910b7b6784187976bd8ed90f7f3950115cd4b64919375d083d58f7e4d8054fe","0x11f836dcd10ab6dc9e30af43f934375614c3ab88eaa739c5a6cb8d91036205fe","0x847040698e6075777856382167bbca9cc03c5c67eb87533294bf119c412bdefe","0x212347d714161e709a9dee512bf8b19ffef25171f8497acd8fa81cec8e4e50fe","0xe3f6157bcd30d90bbb5364bd0a66706b85202461addefe3aaba4c652f30600fc","0xc6e0a2a7882d70a00774264400c8b61b68588b0751d3c556ed9652d2bd7c17ff","0x5dd2fcccbf728af31fb6cbc5a12cfebe6ccb90c3c8b69d07652dc9da834910fe","0x5e1e06e6ac1da102974a092b9f410c282016c2c862ebcae63ca01809bf01aaff","0x959f1ae1200f1625772d4a4901180d26301235228f07550b931f17b30e390efe","0xe1cbb338d779dced9b71b00172659168e9d8bac3cc968a47d3f9f48aaa5c8bfd","0x21a3302c7c14e91259155a53b1cead3c2d15352de774f5434bd152d3fc855dfd","0xf10a635daf1216c93a7fb6024b54550c1b1e3845fb86748371e29af293410ffe","0x447de77541b4a14b9f5284a3f19c93519bdd7388ae5c4542b2282dd1a01adafd","0xc5a609d5e72738b8f533f27dbb6bb293c5e1800fab7532446768cda06e26deff","0x28dfc0c86f7853cdc7b2ab87cc42041c0d06e0934e3fbad9056dcc8a3887bfff","0x8274d2fd0ff5882d2b7b87f627cad1e5bc581e8dfc1e610b6c857c3e977f95fb"]}
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.789] ########          Received requested transaction       ############## 
2024-02-08T17:41:56.800+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:214	received message	{"type": "PrepareResponse", "from": 1, "height": 93, "view": 0, "my_height": 93, "my_view": 0}
2024-02-08T17:41:56.800+0300	INFO	dbft@v0.0.0-20240130131324-6d59675ad370/dbft.go:437	received PrepareResponse	{"validator": 1}
2024-02-08T17:41:56.800+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/check.go:10	check prepare: some transactions are missing	{"hashes": ["0xa668dae019721657d6df6cf49970a95337972d0c6ec1ff657e764e3dd6ec77fd","0x37424a26adb5592b6ff02ccd5557b987bdf19cc1eba17c0c8cbeeedab2e326fb","0xaf07b0283a2d2908c5e288a58efbe9c730f835623a800d7a6c9d6731f9ce3bfe","0x9834f3568e4cc91b144589961e061045b091de91f632ed4a75f12890df7dc9fb","0x6910b7b6784187976bd8ed90f7f3950115cd4b64919375d083d58f7e4d8054fe","0x11f836dcd10ab6dc9e30af43f934375614c3ab88eaa739c5a6cb8d91036205fe","0x847040698e6075777856382167bbca9cc03c5c67eb87533294bf119c412bdefe","0x212347d714161e709a9dee512bf8b19ffef25171f8497acd8fa81cec8e4e50fe","0xe3f6157bcd30d90bbb5364bd0a66706b85202461addefe3aaba4c652f30600fc","0xc6e0a2a7882d70a00774264400c8b61b68588b0751d3c556ed9652d2bd7c17ff","0x5dd2fcccbf728af31fb6cbc5a12cfebe6ccb90c3c8b69d07652dc9da834910fe","0x5e1e06e6ac1da102974a092b9f410c282016c2c862ebcae63ca01809bf01aaff","0x959f1ae1200f1625772d4a4901180d26301235228f07550b931f17b30e390efe","0xe1cbb338d779dced9b71b00172659168e9d8bac3cc968a47d3f9f48aaa5c8bfd","0x21a3302c7c14e91259155a53b1cead3c2d15352de774f5434bd152d3fc855dfd","0xf10a635daf1216c93a7fb6024b54550c1b1e3845fb86748371e29af293410ffe","0x447de77541b4a14b9f5284a3f19c93519bdd7388ae5c4542b2282dd1a01adafd","0xc5a609d5e72738b8f533f27dbb6bb293c5e1800fab7532446768cda06e26deff","0x28dfc0c86f7853cdc7b2ab87cc42041c0d06e0934e3fbad9056dcc8a3887bfff","0x8274d2fd0ff5882d2b7b87f627cad1e5bc581e8dfc1e610b6c857c3e977f95fb"]}
INFO [02-08|17:41:56.800] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.801] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
INFO [02-08|17:41:56.807] ########          Received requested transaction       ############## 
2024-02-08T17:41:56.807+0300	INFO	dbft@v0.0.0-20240130131324-6d59675ad370/send.go:106	sending PrepareResponse	{"height": 93, "view": 0}
2024-02-08T17:41:56.807+0300	DEBUG	dbft@v0.0.0-20240130131324-6d59675ad370/send.go:9	broadcasting message	{"type": "PrepareResponse", "height": 93, "view": 0}

This commit contains two changes in the dBFT-related transactions handling:
1. Store the sorted set of requested transactions and filter incoming ones
   wrt this set.
2. Do not subscribe for mempooled transactions. Instead, receive transactions
   directly via P2P bypassing mempool since mempool assumes additional tx
   filtering.

Close #98.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
Only getter is used, other methods are not needed.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
Unify it with the rest of logs.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
Copy link
Contributor

@roman-khimov roman-khimov left a comment

Choose a reason for hiding this comment

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

It all looks nice, but one thing I'm worried about is checking the tx set consistency (mempool is consistent). Technically, it's #87 job though, the final set must be checked for correctness wrt current state.

@AnnaShaleva
Copy link
Member Author

Technically, it's #87 job though, the final set must be checked for correctness wrt current state.

It's checked during block verification, yes. And the set of transactions is checked not only against the state, but also against some other rules. We also have a separate issue for policy-related checks enabling, see #127.

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

Successfully merging this pull request may close these issues.

Rework dBFT transactions routing

3 participants