Skip to content

dbft: construct block on watch-only if all transactions are present - #170

Merged
roman-khimov merged 1 commit into
masterfrom
fix-wo-block-creation
Oct 27, 2026
Merged

roman-khimov merged 1 commit into
masterfrom
fix-wo-block-creation

Conversation

@AnnaShaleva

Copy link
Copy Markdown
Member

63e6948 removes the ability to construct block on watch-only nodes in case if all proposed transactions are present in the node's mempool. It's a bug, so get back d.createAndCheckBlock call for watch-only nodes.

Note that in case if a proposed transaction is missing from the node's mempool, watch-only still won't be able to construct new block, as intended in 63e6948.

Fixes problem described in
bane-labs/go-ethereum#655 (comment).

Verified on NeoX privnet. Before:

INFO [10-27|14:00:34.269] New block in the chain                   "dbft index"=5 "chain index"=5 hash=0x8ea2bc9b164d45465a820ddc15376b1a1e9e6d3d5b76b05e966579dcadd6eb19 "parent hash"=0x27cb6b1bf9a3f085ed30554f4703b74f88b111d6fe3b8017fa33ac50b023e4ec primary=1 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:00:34.269] Starting work on payload                 id=0x037dc0eae4a3443c
INFO [10-27|14:00:34.270] Updated payload                          id=0x037dc0eae4a3443c number=6 hash=1a7e95..25271d txs=0 withdrawals=0 gas=0 fees=0 root=85740d..073516 elapsed="368.736µs"
INFO [10-27|14:00:34.270] Commit new sealing work                  number=6 sealhash=a1625d..d38fd4 txs=0 withdrawals=0 gas=0 elapsed=1.395ms
INFO [10-27|14:00:34.344] Fetching latest sealing proposal         "desired number"=6
INFO [10-27|14:00:34.344] Sealing proposal updated                 number=6 sealhash=a1625d..d38fd4 "parent hash"=8ea2bc..d6eb19 txs=0
INFO [10-27|14:00:34.344] DKG task watcher                         currentHeight=5 watchListLength=0
2026-10-27T14:00:34.344+0300	INFO	initializing dbft	{"height": 6, "view": 0, "index": -1, "role": "WatchOnly"}
INFO [10-27|14:00:34.391] New local node record                    seq=1,793,098,812,400 id=27b0084dd166b83c   ip=127.0.0.1 udp=30305 tcp=30305
2026-10-27T14:00:39.248+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.248+0300	INFO	received PrepareRequest	{"validator": 2, "tx": 0}
2026-10-27T14:00:39.249+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.249+0300	DEBUG	ignoring PrepareRequest	{"sor": true, "viewChanging": false, "moreThanF": true}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 3}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 1}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 0}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 0}
2026-10-27T14:00:39.251+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 1}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 1}
2026-10-27T14:00:39.251+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 2}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": true}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 2}
2026-10-27T14:00:39.251+0300	INFO	processing PreBlock	{"height": 6, "view": 0, "tx_count": 0, "preCommit_count": 3}
2026-10-27T14:00:39.252+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	INFO	received PreCommit	{"validator": 3}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.254+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.254+0300	INFO	received Commit	{"validator": 2}
WARN [10-27|14:00:39.254] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.254+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	INFO	received Commit	{"validator": 3}
WARN [10-27|14:00:39.255] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.255+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	INFO	received Commit	{"validator": 0}
WARN [10-27|14:00:39.255] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	INFO	received Commit	{"validator": 1}
WARN [10-27|14:00:39.256] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
INFO [10-27|14:00:39.272] Imported new potential chain segment     number=6 hash=553835..d8e32b blocks=1 txs=0 mgas=0.000 elapsed=4.733ms     mgasps=0.000 triedirty=0.00B
INFO [10-27|14:00:39.273] Chain head was updated                   number=6 hash=553835..d8e32b root=85740d..073516 elapsed="55.575µs"
INFO [10-27|14:00:39.273] New block in the chain                   "dbft index"=6 "chain index"=6 hash=0x553835ea6f9e1b06686100fccfbea1639f73a9d95738626762a1a75fcbd8e32b "parent hash"=0x8ea2bc9b164d45465a820ddc15376b1a1e9e6d3d5b76b05e966579dcadd6eb19 primary=2 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:00:39.273] Starting work on payload                 id=0x0349dd3e497cb527
INFO [10-27|14:00:39.273] Updated payload                          id=0x0349dd3e497cb527 number=7 hash=c4f5e5..200139 txs=0 withdrawals=0 gas=0 fees=0 root=85740d..073516 elapsed="236.697µs"
INFO [10-27|14:00:39.274] Commit new sealing work                  number=7 sealhash=3fb0a3..1a0edb txs=0 withdrawals=0 gas=0 elapsed="997.523µs"
INFO [10-27|14:00:39.344] Fetching latest sealing proposal         "desired number"=7

After:

INFO [10-27|14:03:45.673] New block in the chain                   "dbft index"=9 "chain index"=9 hash=0xad188f40bf7fb15d6a88646fabe59ab4981d245572ad5b6067112498ea87a76e "parent hash"=0xc34fbd16ea9556f2e0fe76ebc3252976598bbbc9664403d6ad28967415003c04 primary=1 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:03:45.673] Fetching latest sealing proposal         "desired number"=10
INFO [10-27|14:03:45.673] DKG task watcher                         currentHeight=9 watchListLength=0
INFO [10-27|14:03:45.673] Sealing proposal updated                 number=10 sealhash=aa733f..234dc6 "parent hash"=ad188f..87a76e txs=0
2026-10-27T14:03:45.673+0300	INFO	initializing dbft	{"height": 10, "view": 0, "index": -1, "role": "WatchOnly"}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:50.574+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.574+0300	INFO	received PrepareRequest	{"validator": 2, "tx": 0}
2026-10-27T14:03:50.576+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.576+0300	INFO	received PrepareResponse	{"validator": 1}
2026-10-27T14:03:50.576+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.576+0300	INFO	received PrepareResponse	{"validator": 3}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PrepareResponse	{"validator": 0}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PreCommit	{"validator": 3}
2026-10-27T14:03:50.577+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 1}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PreCommit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PreCommit	{"validator": 2}
2026-10-27T14:03:50.577+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 2}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	INFO	received PreCommit	{"validator": 1}
2026-10-27T14:03:50.578+0300	INFO	processing PreBlock	{"height": 10, "view": 0, "tx_count": 0, "preCommit_count": 3}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	INFO	received PreCommit	{"validator": 0}
2026-10-27T14:03:50.579+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.580+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.581+0300	INFO	received Commit	{"validator": 2}
2026-10-27T14:03:50.581+0300	DEBUG	not enough to commit	{"count": 1}
2026-10-27T14:03:50.581+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	INFO	received Commit	{"validator": 1}
2026-10-27T14:03:50.582+0300	DEBUG	not enough to commit	{"count": 2}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.583+0300	INFO	received Commit	{"validator": 3}
2026-10-27T14:03:50.583+0300	INFO	approving block	{"height": 10, "hash": "0xaa733fe8d55384acda8fd38e875e76aa7e25b1b695321a0316fdb1d98a234dc6", "tx_count": 0, "merkle": "0x76b4d49cd0fcd09ea767ab30fdbc402dd22a53d226060056536ec70e5b1fc1fd", "prev": "0xad188f40bf7fb15d6a88646fabe59ab4981d245572ad5b6067112498ea87a76e"}
INFO [10-27|14:03:50.589] Imported new potential chain segment     number=10 hash=2b26c4..f07923 blocks=1 txs=0 mgas=0.000 elapsed=3.406ms     mgasps=0.000 snapdiffs=347.00B triedirty=0.00B
INFO [10-27|14:03:50.590] Chain head was updated                   number=10 hash=2b26c4..f07923 root=76b4d4..1fc1fd elapsed="122.231µs"
INFO [10-27|14:03:50.592] Starting work on payload                 id=0x03a86c4de826fcdd
INFO [10-27|14:03:50.592] Updated payload                          id=0x03a86c4de826fcdd number=11 hash=a977ed..b67998 txs=0 withdrawals=0 gas=0 fees=0 root=76b4d4..1fc1fd elapsed="735.438µs"
INFO [10-27|14:03:50.593] Commit new sealing work                  number=11 sealhash=eae343..ab807b txs=0 withdrawals=0 gas=0 elapsed=3.132ms

@AnnaShaleva AnnaShaleva added this to the v0.5.0 milestone Oct 27, 2026
@AnnaShaleva AnnaShaleva added the bug Something isn't working label Oct 27, 2026
@AnnaShaleva

AnnaShaleva commented Oct 27, 2026 •

Copy link
Copy Markdown
Member Author

No CHANGELOG update is required. CHANGELOG is updated, won't hurt.

@codecov

codecov Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 62.13%. Comparing base (1ce0c60) to head (7870dab).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #170      +/-   ##
==========================================
+ Coverage   62.09%   62.13%   +0.03%     
==========================================
  Files          32       32              
  Lines        1562     1561       -1     
==========================================
  Hits          970      970              
+ Misses        591      590       -1     
  Partials        1        1              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

63e6948 removes the ability to
construct block on watch-only nodes in case if all proposed transactions
are present in the node's mempool. It's a bug, so get back
`d.createAndCheckBlock` call for watch-only nodes.

Note that in case if a proposed transaction is missing from the node's
mempool, watch-only still won't be able to construct new block, as
intended in 63e6948.

Fixes problem described in
bane-labs/go-ethereum#655 (comment).

Verified on NeoX privnet. Before:
```
INFO [10-27|14:00:34.269] New block in the chain                   "dbft index"=5 "chain index"=5 hash=0x8ea2bc9b164d45465a820ddc15376b1a1e9e6d3d5b76b05e966579dcadd6eb19 "parent hash"=0x27cb6b1bf9a3f085ed30554f4703b74f88b111d6fe3b8017fa33ac50b023e4ec primary=1 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:00:34.269] Starting work on payload                 id=0x037dc0eae4a3443c
INFO [10-27|14:00:34.270] Updated payload                          id=0x037dc0eae4a3443c number=6 hash=1a7e95..25271d txs=0 withdrawals=0 gas=0 fees=0 root=85740d..073516 elapsed="368.736µs"
INFO [10-27|14:00:34.270] Commit new sealing work                  number=6 sealhash=a1625d..d38fd4 txs=0 withdrawals=0 gas=0 elapsed=1.395ms
INFO [10-27|14:00:34.344] Fetching latest sealing proposal         "desired number"=6
INFO [10-27|14:00:34.344] Sealing proposal updated                 number=6 sealhash=a1625d..d38fd4 "parent hash"=8ea2bc..d6eb19 txs=0
INFO [10-27|14:00:34.344] DKG task watcher                         currentHeight=5 watchListLength=0
2026-10-27T14:00:34.344+0300	INFO	initializing dbft	{"height": 6, "view": 0, "index": -1, "role": "WatchOnly"}
INFO [10-27|14:00:34.391] New local node record                    seq=1,793,098,812,400 id=27b0084dd166b83c   ip=127.0.0.1 udp=30305 tcp=30305
2026-10-27T14:00:39.248+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.248+0300	INFO	received PrepareRequest	{"validator": 2, "tx": 0}
2026-10-27T14:00:39.249+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.249+0300	DEBUG	ignoring PrepareRequest	{"sor": true, "viewChanging": false, "moreThanF": true}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 3}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 1}
2026-10-27T14:00:39.250+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.250+0300	INFO	received PrepareResponse	{"validator": 0}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 0}
2026-10-27T14:00:39.251+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 1}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 1}
2026-10-27T14:00:39.251+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 2}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": true}
2026-10-27T14:00:39.251+0300	DEBUG	received message	{"type": "PreCommit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.251+0300	INFO	received PreCommit	{"validator": 2}
2026-10-27T14:00:39.251+0300	INFO	processing PreBlock	{"height": 6, "view": 0, "tx_count": 0, "preCommit_count": 3}
2026-10-27T14:00:39.252+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	INFO	received PreCommit	{"validator": 3}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.253+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.254+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.254+0300	INFO	received Commit	{"validator": 2}
WARN [10-27|14:00:39.254] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.254+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	INFO	received Commit	{"validator": 3}
WARN [10-27|14:00:39.255] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.255+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.255+0300	INFO	received Commit	{"validator": 0}
WARN [10-27|14:00:39.255] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	INFO	received Commit	{"validator": 1}
WARN [10-27|14:00:39.256] can't construct block due to missing state: proposal verification failed
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
2026-10-27T14:00:39.256+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 6, "view": 0, "my_height": 6, "my_view": 0}
INFO [10-27|14:00:39.272] Imported new potential chain segment     number=6 hash=553835..d8e32b blocks=1 txs=0 mgas=0.000 elapsed=4.733ms     mgasps=0.000 triedirty=0.00B
INFO [10-27|14:00:39.273] Chain head was updated                   number=6 hash=553835..d8e32b root=85740d..073516 elapsed="55.575µs"
INFO [10-27|14:00:39.273] New block in the chain                   "dbft index"=6 "chain index"=6 hash=0x553835ea6f9e1b06686100fccfbea1639f73a9d95738626762a1a75fcbd8e32b "parent hash"=0x8ea2bc9b164d45465a820ddc15376b1a1e9e6d3d5b76b05e966579dcadd6eb19 primary=2 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:00:39.273] Starting work on payload                 id=0x0349dd3e497cb527
INFO [10-27|14:00:39.273] Updated payload                          id=0x0349dd3e497cb527 number=7 hash=c4f5e5..200139 txs=0 withdrawals=0 gas=0 fees=0 root=85740d..073516 elapsed="236.697µs"
INFO [10-27|14:00:39.274] Commit new sealing work                  number=7 sealhash=3fb0a3..1a0edb txs=0 withdrawals=0 gas=0 elapsed="997.523µs"
INFO [10-27|14:00:39.344] Fetching latest sealing proposal         "desired number"=7
```

After:
```
INFO [10-27|14:03:45.673] New block in the chain                   "dbft index"=9 "chain index"=9 hash=0xad188f40bf7fb15d6a88646fabe59ab4981d245572ad5b6067112498ea87a76e "parent hash"=0xc34fbd16ea9556f2e0fe76ebc3252976598bbbc9664403d6ad28967415003c04 primary=1 coinbase=0x1212000000000000000000000000000000000003 "mix digest"=0x953fe70afae6653830cde4febd89dfbfc6b4965fc0e24df4ed8a588bfd11b78d
INFO [10-27|14:03:45.673] Fetching latest sealing proposal         "desired number"=10
INFO [10-27|14:03:45.673] DKG task watcher                         currentHeight=9 watchListLength=0
INFO [10-27|14:03:45.673] Sealing proposal updated                 number=10 sealhash=aa733f..234dc6 "parent hash"=ad188f..87a76e txs=0
2026-10-27T14:03:45.673+0300	INFO	initializing dbft	{"height": 10, "view": 0, "index": -1, "role": "WatchOnly"}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:45.674+0300	DEBUG	received message	{"type": "Commit", "from": 0, "height": 9, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:45.674+0300	DEBUG	ignoring old height	{"height": 9}
2026-10-27T14:03:50.574+0300	DEBUG	received message	{"type": "PrepareRequest", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.574+0300	INFO	received PrepareRequest	{"validator": 2, "tx": 0}
2026-10-27T14:03:50.576+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.576+0300	INFO	received PrepareResponse	{"validator": 1}
2026-10-27T14:03:50.576+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.576+0300	INFO	received PrepareResponse	{"validator": 3}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PrepareResponse	{"validator": 0}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PrepareResponse", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	DEBUG	ignoring PrepareResponse	{"dup": true, "sor": true, "viewChanging": false, "moreThanF": false}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PreCommit	{"validator": 3}
2026-10-27T14:03:50.577+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 1}
2026-10-27T14:03:50.577+0300	DEBUG	received message	{"type": "PreCommit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.577+0300	INFO	received PreCommit	{"validator": 2}
2026-10-27T14:03:50.577+0300	DEBUG	not enough PreCommits to process PreBlock	{"count": 2}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	INFO	received PreCommit	{"validator": 1}
2026-10-27T14:03:50.578+0300	INFO	processing PreBlock	{"height": 10, "view": 0, "tx_count": 0, "preCommit_count": 3}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	DEBUG	received message	{"type": "PreCommit", "from": 0, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.578+0300	INFO	received PreCommit	{"validator": 0}
2026-10-27T14:03:50.579+0300	DEBUG	received message	{"type": "PreCommit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.580+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.581+0300	INFO	received Commit	{"validator": 2}
2026-10-27T14:03:50.581+0300	DEBUG	not enough to commit	{"count": 1}
2026-10-27T14:03:50.581+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	INFO	received Commit	{"validator": 1}
2026-10-27T14:03:50.582+0300	DEBUG	not enough to commit	{"count": 2}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 1, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 2, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.582+0300	DEBUG	received message	{"type": "Commit", "from": 3, "height": 10, "view": 0, "my_height": 10, "my_view": 0}
2026-10-27T14:03:50.583+0300	INFO	received Commit	{"validator": 3}
2026-10-27T14:03:50.583+0300	INFO	approving block	{"height": 10, "hash": "0xaa733fe8d55384acda8fd38e875e76aa7e25b1b695321a0316fdb1d98a234dc6", "tx_count": 0, "merkle": "0x76b4d49cd0fcd09ea767ab30fdbc402dd22a53d226060056536ec70e5b1fc1fd", "prev": "0xad188f40bf7fb15d6a88646fabe59ab4981d245572ad5b6067112498ea87a76e"}
INFO [10-27|14:03:50.589] Imported new potential chain segment     number=10 hash=2b26c4..f07923 blocks=1 txs=0 mgas=0.000 elapsed=3.406ms     mgasps=0.000 snapdiffs=347.00B triedirty=0.00B
INFO [10-27|14:03:50.590] Chain head was updated                   number=10 hash=2b26c4..f07923 root=76b4d4..1fc1fd elapsed="122.231µs"
INFO [10-27|14:03:50.592] Starting work on payload                 id=0x03a86c4de826fcdd
INFO [10-27|14:03:50.592] Updated payload                          id=0x03a86c4de826fcdd number=11 hash=a977ed..b67998 txs=0 withdrawals=0 gas=0 fees=0 root=76b4d4..1fc1fd elapsed="735.438µs"
INFO [10-27|14:03:50.593] Commit new sealing work                  number=11 sealhash=eae343..ab807b txs=0 withdrawals=0 gas=0 elapsed=3.132ms
```

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
@roman-khimov
roman-khimov merged commit 3baff19 into master Oct 27, 2026
12 checks passed
@roman-khimov
roman-khimov deleted the fix-wo-block-creation branch October 27, 2026 11:35
AnnaShaleva added a commit to bane-labs/go-ethereum that referenced this pull request Oct 27, 2026
Fetch nspcc-dev/dbft#170 and adjust the relevant
comment and error message. Fix the problem described in
#655 (comment).

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
AnnaShaleva added a commit to bane-labs/go-ethereum that referenced this pull request Oct 27, 2026
Fetch nspcc-dev/dbft#170 and adjust the relevant
comment and error message. Fix the problem described in
#655 (comment).

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
txhsl pushed a commit to bane-labs/go-ethereum that referenced this pull request Oct 28, 2026
Fetch nspcc-dev/dbft#170 and adjust the relevant
comment and error message. Fix the problem described in
#655 (comment).

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
txhsl added a commit to bane-labs/go-ethereum that referenced this pull request Oct 30, 2026
* consensus: migrate to extended PrepareRequest format

Implement nspcc-dev/neo-go#4325, fetch
nspcc-dev/dbft#164.

Solves the problem described in
#576 for non-blob
transactions at the consensus level by adding the full list of
serialized transactions to the PrepareRequest. For blob transactions the
issue is still relevant. Missing blob sidecars will be requested in a
separate callback and forwarded to dBFT once collected.

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

* beacon/impl: eth: remove BEACON1 and add BEACON3 protocol for new blob messages

* eth: implement verification for beacon blob messages

* beacon/impl: remove V0 support from worker cache

* consensus/dbft: beacon/impl: integrate blob event notification

* dbft: adjust missing blob hashes management

1. Convert prepareRequest.missingBlobs to a raw map of missing blob
   hashes. Remove binding to prepareRequest.missingTxs.
2. Process incoming missing blob hashes in a flattened way. Notify
   consensus about *all* missing transactions *at once* once all blobs
   are received.

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

* consensus/dbft: beacon/impl: implement blob filter for dbft and beacon notification

* consensus/dbft: fix serialization UTs

* beacon/impl: fix worker cache index management

* consensus/dbft: fix the tx list source when extension is not enabled

* consensus/dbft: fix missing block index in recover message

* consensus/dbft: remove unnecessary map clear

* eth/protocols/dbft: enlarge the message size limit for full transaction migration

* dbft: add early-stop to incoming blob processing loop

There's no need to iterate through the whole set of incoming blobs if
all of them were already received.

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

* eth: core: fix and migrate to new beacon caching

* consensus/dbft: migrate onto simplified library interface (#665)

* dbft: migrate onto simplified library interface

Fetch nspcc-dev/dbft#166. Save some
allocations, use types.Transaction directly instead of
dbft.Transaction wrapper.

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

* dbft: remove unnecessary blobTx write back

---------

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
Co-authored-by: Hu Shili <799498265@qq.com>

* consensus/dbft: beacon/impl: detach consensus from EL txpool

* eth: fix UTs

* consensus/dbft: recover 140772d

* beacon/impl: eth: limit blob response length and prevent attack

* dbft: fetch watch-only block construction fix (#671)

Fetch nspcc-dev/dbft#170 and adjust the relevant
comment and error message. Fix the problem described in
#655 (comment).

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

---------

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
Co-authored-by: Hu Shili <799498265@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants