From e868aa9b7b7a59545afe8be18f2c4054957d0a00 Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 09:34:21 -0400 Subject: [PATCH 1/6] add mempool draft --- Makefile | 70 ++++++++++++++++++++++++++++++++++++++++++++++ mempool/mempool.d2 | 62 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 mempool/mempool.d2 diff --git a/Makefile b/Makefile index f4c3b5899..5bd994ea3 100644 --- a/Makefile +++ b/Makefile @@ -395,3 +395,73 @@ mocks: @go get github.com/vektra/mockery/v2 @go generate ./... @make format-go + +############################################################################### +### D2 Diagrams ### +############################################################################### + +D2_THEME=300 +D2_DARK_THEME=200 +D2_LAYOUT=tala + +D2_ENV_VARS=D2_THEME=$(D2_THEME) \ + D2_DARK_THEME=$(D2_DARK_THEME) \ + D2_LAYOUT=$(D2_LAYOUT) + +.PHONY: d2check d2watch d2gen d2gen-all + +d2check: + @echo "🔍 checking if d2 is installed..." + @which d2 > /dev/null 2>&1 || { \ + echo "🔴 d2 is not installed, see installation docs: https://d2lang.com/tour/install/"; \ + exit 1; \ + } + @echo "🟢 d2 is installed" + @echo "🔍 checking if $(D2_LAYOUT) layout is installed..." + @d2 layout | grep $(D2_LAYOUT) > /dev/null 2>&1 || { \ + echo "🔴 $(D2_LAYOUT) layout is not installed, see docs: https://d2lang.com/tour/layouts/"; \ + exit 1; \ + } + @echo "🟢 $(D2_LAYOUT) layout is installed" + +d2watch: d2check + @if [ -z "$(FILE)" ]; then \ + echo "🔴 missing required parameter FILE, the correct usage is: make d2watch FILE=path/to/file.d2"; \ + exit 1; \ + fi + @if [ ! -f "$(FILE)" ]; then \ + echo "🔴 file $(FILE) does not exist"; \ + exit 1; \ + fi + @echo "🔄 watching $(FILE) for changes..." + @dir=$$(dirname "$(FILE)"); \ + basename=$$(basename "$(FILE)" .d2); \ + svgfile="$$dir/$$basename.svg"; \ + printf "📊 generating $$svgfile from $(FILE)... "; \ + $(D2_ENV_VARS) d2 --watch "$(FILE)" "$$svgfile" + +d2gen: d2check + @if [ -z "$(FILE)" ]; then \ + echo "🔴 missing required parameter FILE, the correct usage is: make d2gen FILE=path/to/file.d2"; \ + exit 1; \ + fi + @if [ ! -f "$(FILE)" ]; then \ + echo "🔴 file $(FILE) does not exist"; \ + exit 1; \ + fi + @dir=$$(dirname "$(FILE)"); \ + basename=$$(basename "$(FILE)" .d2); \ + svgfile="$$dir/$$basename.svg"; \ + printf "📊 generating $$svgfile from $(FILE)... "; \ + $(D2_ENV_VARS) d2 "$(FILE)" "$$svgfile" > /dev/null 2>&1 && echo "done ✅" || echo "failed ❌"; + +d2gen-all: d2check + @echo "🟢 generating svg files for all d2 diagrams..." + @find . -name "*.d2" -type f | while read d2file; do \ + dir=$$(dirname "$$d2file"); \ + basename=$$(basename "$$d2file" .d2); \ + svgfile="$$dir/$$basename.svg"; \ + printf "📊 generating $$svgfile from $$d2file... "; \ + $(D2_ENV_VARS) d2 "$$d2file" "$$svgfile" > /dev/null 2>&1 && echo "done ✅" || echo "failed ❌"; \ + done + @echo "✅ svg files generated for all d2 diagrams" diff --git a/mempool/mempool.d2 b/mempool/mempool.d2 new file mode 100644 index 000000000..5a8c30708 --- /dev/null +++ b/mempool/mempool.d2 @@ -0,0 +1,62 @@ +direction: up + +# entities +prepare proposal +check tx handler +comet bft +rpc call +broadcast +rebroadcast callback: { shape: diamond } +evm mempool: { + direction: right + + # entities + ext mempool interface impl + cosmos priority nonce mempool + tx pool: { + direction: down + + # entities + queued\ntransactions + pending\ntransactions + tx pool\ninterface + reset loop\n(evicts from queued\nand pending txs) + promotion: {shape: diamond } + filter: { shape: diamond } + + # edges + filter -> queued\ntransactions: add nonce\ngapped tx + filter -> pending\ntransactions: add\nexecutable tx + queued\ntransactions -> promotion: check closed gap\nand promote tx + promotion -> pending\ntransactions: promote tx + } + + + # edges + tx pool.tx pool\ninterface -> ext mempool interface impl: get txs for\nblock building + + ext mempool interface impl -> tx pool.tx pool\ninterface: success/nonce gap failure:\nadd valid evm txs { style.stroke: red } + ext mempool interface impl -> tx pool.tx pool\ninterface: recheck tx\neviction { style.stroke: red } + ext mempool interface impl -> cosmos priority nonce mempool: add\ncosmos txs { style.stroke: red } + + + cosmos priority nonce mempool -> ext mempool interface impl: get txs for\nblock building +} + +# edges +evm mempool.tx pool.promotion -> rebroadcast callback: call rebroadcast\ncallback { style.stroke: red } +evm mempool.ext mempool interface impl -> prepare proposal: get txs for\nblock building + +rebroadcast callback -> comet bft: rebroadcast\nrebuilt tx { style.stroke: red } + +comet bft -> broadcast: success:\nbroadcast tx +comet bft -> check tx handler: send tx\nfor validation +comet bft -> check tx handler: send tx again\nfor recheck + +check tx handler -> comet bft: success:\nbroadcast and\nadd to mempool +check tx handler -> rpc call: queued\nsuccess response +check tx handler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending { style.stroke: red } +check tx handler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction { style.stroke: red } +check tx handler -> evm mempool.ext mempool interface impl: success:\nadd txs { style.stroke: red } +check tx handler -> evm mempool.ext mempool interface impl: recheck tx\nfailure: eviction { style.stroke: red } + From f4f0a76fcc79d4934bc5cddf2b17d3b94bbf2a24 Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 10:39:13 -0400 Subject: [PATCH 2/6] add svg --- mempool/mempool.d2 | 47 +++++---- mempool/mempool.svg | 236 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+), 24 deletions(-) create mode 100644 mempool/mempool.svg diff --git a/mempool/mempool.d2 b/mempool/mempool.d2 index 5a8c30708..62b22e540 100644 --- a/mempool/mempool.d2 +++ b/mempool/mempool.d2 @@ -1,4 +1,4 @@ -direction: up +direction: down # entities prepare proposal @@ -6,57 +6,56 @@ check tx handler comet bft rpc call broadcast -rebroadcast callback: { shape: diamond } +rebroadcast\ncallback: { shape: diamond } evm mempool: { - direction: right + direction: left # entities ext mempool interface impl cosmos priority nonce mempool tx pool: { - direction: down + direction: left # entities queued\ntransactions pending\ntransactions tx pool\ninterface - reset loop\n(evicts from queued\nand pending txs) + reset loop\n(evicts from\nqueued and\npending txs) promotion: {shape: diamond } filter: { shape: diamond } # edges - filter -> queued\ntransactions: add nonce\ngapped tx - filter -> pending\ntransactions: add\nexecutable tx - queued\ntransactions -> promotion: check closed gap\nand promote tx + filter -> queued\ntransactions: add nonce\ngapped txs + filter -> pending\ntransactions: add\nexecutable txs promotion -> pending\ntransactions: promote tx + queued\ntransactions -> promotion: check closed gap\nand promote tx + pending\ntransactions -> tx pool\ninterface: get txs for\nblock building } - # edges tx pool.tx pool\ninterface -> ext mempool interface impl: get txs for\nblock building - - ext mempool interface impl -> tx pool.tx pool\ninterface: success/nonce gap failure:\nadd valid evm txs { style.stroke: red } - ext mempool interface impl -> tx pool.tx pool\ninterface: recheck tx\neviction { style.stroke: red } - ext mempool interface impl -> cosmos priority nonce mempool: add\ncosmos txs { style.stroke: red } - cosmos priority nonce mempool -> ext mempool interface impl: get txs for\nblock building + + ext mempool interface impl -> tx pool.tx pool\ninterface: success/nonce gap failure:\nadd valid evm txs + ext mempool interface impl -> tx pool.tx pool\ninterface: recheck tx\neviction + ext mempool interface impl -> cosmos priority nonce mempool: add\ncosmos txs } # edges -evm mempool.tx pool.promotion -> rebroadcast callback: call rebroadcast\ncallback { style.stroke: red } -evm mempool.ext mempool interface impl -> prepare proposal: get txs for\nblock building +rebroadcast\ncallback -> comet bft: rebroadcast\nrebuilt tx -rebroadcast callback -> comet bft: rebroadcast\nrebuilt tx { style.stroke: red } +evm mempool.tx pool.promotion -> rebroadcast\ncallback: call rebroadcast\ncallback +evm mempool.ext mempool interface impl -> prepare proposal: get txs for\nblock building comet bft -> broadcast: success:\nbroadcast tx -comet bft -> check tx handler: send tx\nfor validation +comet bft -> check tx handler: send tx for validation comet bft -> check tx handler: send tx again\nfor recheck -check tx handler -> comet bft: success:\nbroadcast and\nadd to mempool check tx handler -> rpc call: queued\nsuccess response -check tx handler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending { style.stroke: red } -check tx handler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction { style.stroke: red } -check tx handler -> evm mempool.ext mempool interface impl: success:\nadd txs { style.stroke: red } -check tx handler -> evm mempool.ext mempool interface impl: recheck tx\nfailure: eviction { style.stroke: red } - +check tx handler -> comet bft: success: broadcast\nand add to mempool +check tx handler -> comet bft: recheck tx complete\nfailure: discard from pool +check tx handler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending +check tx handler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction +check tx handler -> evm mempool.ext mempool interface impl: success:\nadd txs +check tx handler -> evm mempool.ext mempool interface impl: recheck tx complete\nfailure: eviction \ No newline at end of file diff --git a/mempool/mempool.svg b/mempool/mempool.svg new file mode 100644 index 000000000..46d50a4d1 --- /dev/null +++ b/mempool/mempool.svg @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PREPARE PROPOSALCHECK TX HANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION + + + + + + + + + + + + + + + + + + + + + + + + +UNLICENSED COPY From 589406680a526709aaa0a8270d8abda83968f9e6 Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 11:00:39 -0400 Subject: [PATCH 3/6] update readme --- mempool/README.md | 2 +- mempool/{mempool.d2 => img/mempool_architecture.d2} | 0 mempool/{mempool.svg => img/mempool_architecture.svg} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename mempool/{mempool.d2 => img/mempool_architecture.d2} (100%) rename mempool/{mempool.svg => img/mempool_architecture.svg} (100%) diff --git a/mempool/README.md b/mempool/README.md index e0a373740..25230c870 100644 --- a/mempool/README.md +++ b/mempool/README.md @@ -411,7 +411,7 @@ The following diagrams illustrate the complete transaction flow architecture, sh ### Architecture Overview -![EVM Mempool Architecture](img/mempool_architecture.jpg) +![EVM Mempool Architecture](img/mempool_architecture.svg) ### Transaction Flow diff --git a/mempool/mempool.d2 b/mempool/img/mempool_architecture.d2 similarity index 100% rename from mempool/mempool.d2 rename to mempool/img/mempool_architecture.d2 diff --git a/mempool/mempool.svg b/mempool/img/mempool_architecture.svg similarity index 100% rename from mempool/mempool.svg rename to mempool/img/mempool_architecture.svg From 1b996f2785a907ff8401a26c6febef31825e252f Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 11:33:00 -0400 Subject: [PATCH 4/6] add missing edge --- mempool/img/mempool_architecture.d2 | 5 +- mempool/img/mempool_architecture.svg | 365 ++++++++++++++------------- 2 files changed, 186 insertions(+), 184 deletions(-) diff --git a/mempool/img/mempool_architecture.d2 b/mempool/img/mempool_architecture.d2 index 62b22e540..f2d3c0fcb 100644 --- a/mempool/img/mempool_architecture.d2 +++ b/mempool/img/mempool_architecture.d2 @@ -8,13 +8,13 @@ rpc call broadcast rebroadcast\ncallback: { shape: diamond } evm mempool: { - direction: left + direction: down # entities ext mempool interface impl cosmos priority nonce mempool tx pool: { - direction: left + direction: down # entities queued\ntransactions @@ -30,6 +30,7 @@ evm mempool: { promotion -> pending\ntransactions: promote tx queued\ntransactions -> promotion: check closed gap\nand promote tx pending\ntransactions -> tx pool\ninterface: get txs for\nblock building + tx pool\ninterface -> filter: add valid txs } # edges diff --git a/mempool/img/mempool_architecture.svg b/mempool/img/mempool_architecture.svg index 46d50a4d1..e399e14a2 100644 --- a/mempool/img/mempool_architecture.svg +++ b/mempool/img/mempool_architecture.svg @@ -1,23 +1,23 @@ - +}]]> @@ -208,29 +208,30 @@ -PREPARE PROPOSALCHECK TX HANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION - - - - - - - - - - - - - - - - - - - - - - - - -UNLICENSED COPY +PREPARE PROPOSALCHECK TX HANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGADD VALID TXSGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION + + + + + + + + + + + + + + + + + + + + + + + + + +UNLICENSED COPY From 275eb351d0765fd9a9716e78ebf7c224b2f63914 Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 12:27:30 -0400 Subject: [PATCH 5/6] make tx handler two lines --- mempool/img/mempool_architecture.d2 | 28 +- mempool/img/mempool_architecture.svg | 366 +++++++++++++-------------- 2 files changed, 197 insertions(+), 197 deletions(-) diff --git a/mempool/img/mempool_architecture.d2 b/mempool/img/mempool_architecture.d2 index f2d3c0fcb..65d985b3a 100644 --- a/mempool/img/mempool_architecture.d2 +++ b/mempool/img/mempool_architecture.d2 @@ -1,20 +1,20 @@ -direction: down +direction: right # entities prepare proposal -check tx handler +check tx\nhandler comet bft rpc call broadcast rebroadcast\ncallback: { shape: diamond } evm mempool: { - direction: down + direction: up # entities ext mempool interface impl cosmos priority nonce mempool tx pool: { - direction: down + direction: up # entities queued\ntransactions @@ -50,13 +50,13 @@ evm mempool.tx pool.promotion -> rebroadcast\ncallback: call rebroadcast\ncallba evm mempool.ext mempool interface impl -> prepare proposal: get txs for\nblock building comet bft -> broadcast: success:\nbroadcast tx -comet bft -> check tx handler: send tx for validation -comet bft -> check tx handler: send tx again\nfor recheck - -check tx handler -> rpc call: queued\nsuccess response -check tx handler -> comet bft: success: broadcast\nand add to mempool -check tx handler -> comet bft: recheck tx complete\nfailure: discard from pool -check tx handler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending -check tx handler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction -check tx handler -> evm mempool.ext mempool interface impl: success:\nadd txs -check tx handler -> evm mempool.ext mempool interface impl: recheck tx complete\nfailure: eviction \ No newline at end of file +comet bft -> check tx\nhandler: send tx for validation +comet bft -> check tx\nhandler: send tx again\nfor recheck + +check tx\nhandler -> rpc call: queued\nsuccess response +check tx\nhandler -> comet bft: success: broadcast\nand add to mempool +check tx\nhandler -> comet bft: recheck tx complete\nfailure: discard from pool +check tx\nhandler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending +check tx\nhandler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction +check tx\nhandler -> evm mempool.ext mempool interface impl: success:\nadd txs +check tx\nhandler -> evm mempool.ext mempool interface impl: recheck tx complete\nfailure: eviction \ No newline at end of file diff --git a/mempool/img/mempool_architecture.svg b/mempool/img/mempool_architecture.svg index e399e14a2..fbccb5ba1 100644 --- a/mempool/img/mempool_architecture.svg +++ b/mempool/img/mempool_architecture.svg @@ -1,23 +1,23 @@ - +}]]> @@ -208,30 +208,30 @@ -PREPARE PROPOSALCHECK TX HANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGADD VALID TXSGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION - - - - - - - - - - - - - - - - - - - - - - - - - -UNLICENSED COPY +PREPARE PROPOSALCHECK TXHANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGADD VALID TXSGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION + + + + + + + + + + + + + + + + + + + + + + + + + +UNLICENSED COPY From 532e5957e3c9fba20b521c9a9c3e5cc300bf7201 Mon Sep 17 00:00:00 2001 From: Abdul Malek Date: Fri, 12 Sep 2025 13:31:09 -0400 Subject: [PATCH 6/6] make ext mempool interface impl two lines --- mempool/img/mempool_architecture.d2 | 24 +- mempool/img/mempool_architecture.svg | 366 +++++++++++++-------------- 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/mempool/img/mempool_architecture.d2 b/mempool/img/mempool_architecture.d2 index 65d985b3a..20f07e9ab 100644 --- a/mempool/img/mempool_architecture.d2 +++ b/mempool/img/mempool_architecture.d2 @@ -11,8 +11,8 @@ evm mempool: { direction: up # entities - ext mempool interface impl - cosmos priority nonce mempool + ext mempool\ninterface impl + cosmos priority\nnonce mempool tx pool: { direction: up @@ -34,20 +34,20 @@ evm mempool: { } # edges - tx pool.tx pool\ninterface -> ext mempool interface impl: get txs for\nblock building + tx pool.tx pool\ninterface -> ext mempool\ninterface impl: get txs for\nblock building - cosmos priority nonce mempool -> ext mempool interface impl: get txs for\nblock building + cosmos priority\nnonce mempool -> ext mempool\ninterface impl: get txs for\nblock building - ext mempool interface impl -> tx pool.tx pool\ninterface: success/nonce gap failure:\nadd valid evm txs - ext mempool interface impl -> tx pool.tx pool\ninterface: recheck tx\neviction - ext mempool interface impl -> cosmos priority nonce mempool: add\ncosmos txs + ext mempool\ninterface impl -> tx pool.tx pool\ninterface: success/nonce gap failure:\nadd valid evm txs + ext mempool\ninterface impl -> tx pool.tx pool\ninterface: recheck tx\neviction + ext mempool\ninterface impl -> cosmos priority\nnonce mempool: add\ncosmos txs } # edges rebroadcast\ncallback -> comet bft: rebroadcast\nrebuilt tx evm mempool.tx pool.promotion -> rebroadcast\ncallback: call rebroadcast\ncallback -evm mempool.ext mempool interface impl -> prepare proposal: get txs for\nblock building +evm mempool.ext mempool\ninterface impl -> prepare proposal: get txs for\nblock building comet bft -> broadcast: success:\nbroadcast tx comet bft -> check tx\nhandler: send tx for validation @@ -56,7 +56,7 @@ comet bft -> check tx\nhandler: send tx again\nfor recheck check tx\nhandler -> rpc call: queued\nsuccess response check tx\nhandler -> comet bft: success: broadcast\nand add to mempool check tx\nhandler -> comet bft: recheck tx complete\nfailure: discard from pool -check tx\nhandler -> evm mempool.ext mempool interface impl: complete failure:\nremove from pending -check tx\nhandler -> evm mempool.ext mempool interface impl: nonce gap failure:\nadd transaction -check tx\nhandler -> evm mempool.ext mempool interface impl: success:\nadd txs -check tx\nhandler -> evm mempool.ext mempool interface impl: recheck tx complete\nfailure: eviction \ No newline at end of file +check tx\nhandler -> evm mempool.ext mempool\ninterface impl: complete failure:\nremove from pending +check tx\nhandler -> evm mempool.ext mempool\ninterface impl: nonce gap failure:\nadd transaction +check tx\nhandler -> evm mempool.ext mempool\ninterface impl: success:\nadd txs +check tx\nhandler -> evm mempool.ext mempool\ninterface impl: recheck tx complete\nfailure: eviction \ No newline at end of file diff --git a/mempool/img/mempool_architecture.svg b/mempool/img/mempool_architecture.svg index fbccb5ba1..5a98f5c7d 100644 --- a/mempool/img/mempool_architecture.svg +++ b/mempool/img/mempool_architecture.svg @@ -1,23 +1,23 @@ - +}]]> @@ -208,30 +208,30 @@ -PREPARE PROPOSALCHECK TXHANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOL INTERFACE IMPLCOSMOS PRIORITY NONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGADD VALID TXSGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION - - - - - - - - - - - - - - - - - - - - - - - - - -UNLICENSED COPY +PREPARE PROPOSALCHECK TXHANDLERCOMET BFTRPC CALLBROADCASTREBROADCASTCALLBACKEVM MEMPOOLEXT MEMPOOLINTERFACE IMPLCOSMOS PRIORITYNONCE MEMPOOLTX POOLQUEUEDTRANSACTIONSPENDINGTRANSACTIONSTX POOLINTERFACERESET LOOP(EVICTS FROMQUEUED ANDPENDING TXS)PROMOTIONFILTER ADD NONCEGAPPED TXSADDEXECUTABLE TXSPROMOTE TXCHECK CLOSED GAPAND PROMOTE TXGET TXS FORBLOCK BUILDINGADD VALID TXSGET TXS FORBLOCK BUILDINGGET TXS FORBLOCK BUILDINGSUCCESS/NONCE GAP FAILURE:ADD VALID EVM TXSRECHECK TXEVICTIONADDCOSMOS TXSREBROADCASTREBUILT TXCALL REBROADCASTCALLBACKGET TXS FORBLOCK BUILDINGSUCCESS:BROADCAST TXSEND TX FOR VALIDATIONSEND TX AGAINFOR RECHECKQUEUEDSUCCESS RESPONSESUCCESS: BROADCASTAND ADD TO MEMPOOLRECHECK TX COMPLETEFAILURE: DISCARD FROM POOLCOMPLETE FAILURE:REMOVE FROM PENDINGNONCE GAP FAILURE:ADD TRANSACTIONSUCCESS:ADD TXSRECHECK TX COMPLETEFAILURE: EVICTION + + + + + + + + + + + + + + + + + + + + + + + + + +UNLICENSED COPY