mirror of
https://github.com/luxfi/chains.git
synced 2026-09-24 00:26:00 +00:00
zkvm and quantumvm accepted transactions and never built a block from them. Consensus calls WaitForEvent and builds nothing until it returns; both answered with <-ctx.Done(), which never returns. So BuildBlock was never called and neither chain could leave genesis, however many transactions arrived. The comment on one of them said it had to block to avoid flooding the engine, and the flooding was real — but never returning is not the way to avoid it. The pool that accepted the transaction is what knows there is work, whichever path it arrived by, so the pool holds the latch and signals on a successful add. That covers the paths that reach it directly as well as the HTTP handler, and the VM's WaitForEvent is then one line. aivm had grown its own copy of this; it now uses the shared one. Each test fails without its signal, waiting the full timeout for a wake that never comes. Bridge and graph VMs are untouched: bridgevm has nothing in production that writes a pending request, and graphvm's BuildBlock is not implemented, so a latch in either would signal work that cannot be built. Co-authored-by: Hanzo Dev <[email protected]>