Add namespace-filtered delivery, block DB retention, and USDC demo orchestration - #185
Open
kushnireyal wants to merge 2 commits into
Open
Add namespace-filtered delivery, block DB retention, and USDC demo orchestration#185kushnireyal wants to merge 2 commits into
kushnireyal wants to merge 2 commits into
Conversation
kushnireyal
force-pushed
the
evm-gateway-demo
branch
2 times, most recently
from
May 25, 2026 09:42
6e19fa8 to
eeffae7
Compare
kushnireyal
marked this pull request as ready for review
May 25, 2026 10:49
kushnireyal
force-pushed
the
evm-gateway-demo
branch
13 times, most recently
from
May 26, 2026 06:59
3ed44f4 to
8484281
Compare
kushnireyal
marked this pull request as draft
May 26, 2026 13:04
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
May 26, 2026 16:03
8484281 to
0ef59a8
Compare
kushnireyal
force-pushed
the
evm-gateway-demo
branch
7 times, most recently
from
May 28, 2026 06:46
f3d362b to
209b0d1
Compare
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
May 30, 2026 15:49
a3c3e54 to
1155627
Compare
kushnireyal
added a commit
that referenced
this pull request
May 30, 2026
…ew items SDK upgrade (relative to chase): - Bump fabric-x-sdk to baebbe88 (persistent streams + native ArMA Send→Recv ordering) - Add context.Context arg to NewSubmitter calls (breaking API change) - Drop custom ArMASubmitter: SDK now handles ordering correctly - Switch perf test to NewFabricXTestHarnessWithFactory (fabric-x staging) - Add FABX_CONFIG_PATH env support (Ansible sets per-replica path) - Add PERF_PROCESSING_WORKERS / PERF_SUBMITTING_WORKERS env vars Ported from PR #185: - Dockerfile: mkdir /data && chmod 777 /data (busybox has no /data) - endorser/versioned_db_wrapper.go: NewSnapshot(0) resolves to latest committed block (was reading genesis state for "latest") - gateway/api/models.go: gasPrice nil fix for EIP-1559 receipts (was breaking ethers.js and other clients) - integration/test_helpers.go: waitUntilSynced in NewFabricXTestHarnessWithFactory (60s timeout) so tests don't start before gateway is synced - integration/perf/replay_json_dataset_test.go: require.NoError for harness setup (fail fast instead of letting test panic later in unrelated code) Code review items addressed: - replay_json_dataset_test.go: switch polling from TransactionByHash to TransactionReceipt; check receipt.Status (1=success, 0=EVM revert) for correct failure accounting - gateway/app/app.go: default SyncTimeout 5m → 60s - gateway/storage/store.go + gateway/core/chain.go: parameterize TruncateBlocks frequency via Store.BlockTruncationInterval (was hardcoded 1000) Tooling: - scripts/run-demo.sh: add --submitting-workers, --processing-workers flags; quiet-mode uses ssh -T instead of -tt (no PTY CR/LF corruption) and surfaces section headers, replica progress, and demo result lines
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
May 30, 2026 15:52
1155627 to
a70dcbd
Compare
kushnireyal
added a commit
that referenced
this pull request
May 30, 2026
…ew items SDK upgrade (relative to chase): - Bump fabric-x-sdk to baebbe88 (persistent streams + native ArMA Send→Recv ordering) - Add context.Context arg to NewSubmitter calls (breaking API change) - Drop custom ArMASubmitter: SDK now handles ordering correctly - Switch perf test to NewFabricXTestHarnessWithFactory (fabric-x staging) - Add FABX_CONFIG_PATH env support (Ansible sets per-replica path) - Add PERF_PROCESSING_WORKERS / PERF_SUBMITTING_WORKERS env vars Ported from PR #185: - Dockerfile: mkdir /data && chmod 777 /data (busybox has no /data) - endorser/versioned_db_wrapper.go: NewSnapshot(0) resolves to latest committed block (was reading genesis state for "latest") - gateway/api/models.go: gasPrice nil fix for EIP-1559 receipts - integration/test_helpers.go: waitUntilSynced in NewFabricXTestHarnessWithFactory (60s timeout) so tests don't start before gateway is synced - integration/perf/replay_json_dataset_test.go: require.NoError for harness setup - endorser/testimpl/balance_priming_statedb.go: SetSender now actually sets senderAddr and balanceSlot; GetState only intercepts the specific balance slot (was intercepting ALL contract storage and returning primeValue, which made _paused/_blacklisted/etc. read as non-zero and revert every transfer) - endorser/testimpl/balance_priming_executor.go: recover real sender from tx and pass to SetSender (was passing zero address); convert vm.ErrExecutionReverted into ExecutionResult{Status:201} so reverts commit and the test can detect them Code review items addressed: - replay_json_dataset_test.go: switch polling from TransactionByHash to TransactionReceipt; check receipt.Status (1=success, 0=EVM revert) for correct failure accounting — this also exposed the priming bug above - gateway/app/app.go: default SyncTimeout 5m → 60s - gateway/storage/store.go + gateway/core/chain.go: parameterize TruncateBlocks frequency via Store.BlockTruncationInterval (was hardcoded 1000) Tooling: - scripts/run-demo.sh: add --submitting-workers, --processing-workers flags; quiet-mode uses ssh -T instead of -tt (no PTY CR/LF corruption) and surfaces section headers, replica progress, and demo result lines Docs: - integration/perf/USDC_deployment.md: trim stale troubleshooting entries and duplicate command examples; collapse output-format section to essentials
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
May 30, 2026 16:04
a70dcbd to
9ffc382
Compare
kushnireyal
added a commit
that referenced
this pull request
May 30, 2026
…ew items SDK upgrade (relative to chase): - Bump fabric-x-sdk to baebbe88 (persistent streams + native ArMA Send→Recv ordering) - Add context.Context arg to NewSubmitter calls (breaking API change) - Drop custom ArMASubmitter: SDK now handles ordering correctly - Switch perf test to NewFabricXTestHarnessWithFactory (fabric-x staging) - Add FABX_CONFIG_PATH env support (Ansible sets per-replica path) - Add PERF_PROCESSING_WORKERS / PERF_SUBMITTING_WORKERS env vars Ported from PR #185: - Dockerfile: mkdir /data && chmod 777 /data (busybox has no /data) - endorser/versioned_db_wrapper.go: NewSnapshot(0) resolves to latest committed block (was reading genesis state for "latest") - gateway/api/models.go: gasPrice nil fix for EIP-1559 receipts - integration/test_helpers.go: waitUntilSynced in NewFabricXTestHarnessWithFactory (60s timeout) so tests don't start before gateway is synced - integration/perf/replay_json_dataset_test.go: require.NoError for harness setup Code review items addressed: - gateway/app/app.go: default SyncTimeout 5m → 60s - gateway/storage/store.go + gateway/core/chain.go: parameterize TruncateBlocks frequency via Store.BlockTruncationInterval (was hardcoded 1000) Tooling: - scripts/run-demo.sh: add --submitting-workers, --processing-workers flags; quiet-mode uses ssh -T instead of -tt (no PTY CR/LF corruption) and surfaces section headers, replica progress, and demo result lines Docs: - integration/perf/USDC_deployment.md: trim stale troubleshooting entries and duplicate command examples; collapse output-format section to essentials Not ported (blocked): - TransactionReceipt + receipt.Status check in perf test polling. Switching to receipt.Status reveals that every USDC transfer reverts at EVM level — both with chase's intercept-all priming and with the PR #185 targeted-priming fix. This is pre-existing (chase's TransactionByHash polling silently ignored status). Reverted to chase behavior for now; needs separate investigation of why USDC transfers revert. Details in review-pr-185.md.
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
May 30, 2026 20:40
9ffc382 to
710e1f9
Compare
kushnireyal
added a commit
that referenced
this pull request
May 30, 2026
…ew items SDK upgrade (relative to chase): - Bump fabric-x-sdk to baebbe88 (persistent streams + native ArMA Send→Recv ordering) - Add context.Context arg to NewSubmitter calls (breaking API change) - Drop custom ArMASubmitter: SDK now handles ordering correctly - Switch perf test to NewFabricXTestHarnessWithFactory (fabric-x staging) - Add FABX_CONFIG_PATH env support (Ansible sets per-replica path) - Add PERF_PROCESSING_WORKERS / PERF_SUBMITTING_WORKERS env vars Ported from PR #185: - Dockerfile: mkdir /data && chmod 777 /data (busybox has no /data) - endorser/versioned_db_wrapper.go: NewSnapshot(0) resolves to latest committed block (was reading genesis state for "latest") - gateway/api/models.go: gasPrice nil fix for EIP-1559 receipts - integration/test_helpers.go: waitUntilSynced in NewFabricXTestHarnessWithFactory (60s timeout) so tests don't start before gateway is synced - integration/perf/replay_json_dataset_test.go: require.NoError for harness setup Code review items addressed: - gateway/app/app.go: default SyncTimeout 5m → 60s - gateway/storage/store.go + gateway/core/chain.go: parameterize TruncateBlocks frequency via Store.BlockTruncationInterval (was hardcoded 1000) Tooling: - scripts/run-demo.sh: add --submitting-workers, --processing-workers flags; quiet-mode uses ssh -T instead of -tt (no PTY CR/LF corruption) and surfaces section headers, replica progress, and demo result lines Docs: - integration/perf/USDC_deployment.md: trim stale troubleshooting entries and duplicate command examples; collapse output-format section to essentials Not ported (blocked): - TransactionReceipt + receipt.Status check in perf test polling. Switching to receipt.Status reveals that every USDC transfer reverts at EVM level — both with chase's intercept-all priming and with the PR #185 targeted-priming fix. This is pre-existing (chase's TransactionByHash polling silently ignored status). Reverted to chase behavior for now; needs separate investigation of why USDC transfers revert. Details in review-pr-185.md.
kushnireyal
force-pushed
the
evm-gateway-demo
branch
6 times, most recently
from
June 1, 2026 08:09
04b772a to
17c1170
Compare
ale-linux
force-pushed
the
chase
branch
3 times, most recently
from
June 1, 2026 10:25
581d206 to
ee82baa
Compare
kushnireyal
force-pushed
the
evm-gateway-demo
branch
6 times, most recently
from
June 3, 2026 09:33
3d9571a to
0dd5e22
Compare
This commit introduces a notification-based architecture for tracking transaction completion as an alternative to the traditional block-based synchronization approach. The new system uses a pending transaction cache and notification dispatcher to provide lower latency transaction tracking, particularly beneficial for performance testing scenarios. The Gateway now uses a BatchSubmitter for asynchronous endorsement submission with optional notification support, and the integration test infrastructure supports both traditional synchronization and notification-based modes. The replay performance test demonstrates the new notification system with a TxCompletionTracker for monitoring transaction completion, and includes a hybrid mode that uses the synchronizer for initial catchup before switching to notifications for ongoing updates. This architecture maintains backward compatibility while enabling more efficient transaction processing patterns for high-throughput scenarios. Signed-off-by: Alessandro Sorniotti <aso@zurich.ibm.com>
kushnireyal
force-pushed
the
evm-gateway-demo
branch
2 times, most recently
from
June 4, 2026 07:07
709ea35 to
5b2ea17
Compare
…k DB retention - Add namespace filtering to Chain (NewChain gains namespace param) - Add SQLite PRAGMA temp_store=MEMORY to fix crash on scratch images - Add TruncateBlocks to storage.Store with configurable retention window - Wire cfg.Network.Namespace and cfg.Gateway.SyncTimeout through app.go - Add run-demo.sh Ansible-based demo runner script - Add USDC_deployment.md multi-replica deployment guide - Extend replay_json_dataset_test.go with wrap-around support - Add chain_test.go namespace-filter tests and store_test.go truncation tests Signed-off-by: Eyal Kushnir <eyal.kushnir@ibm.com>
kushnireyal
force-pushed
the
evm-gateway-demo
branch
from
June 4, 2026 10:10
5b2ea17 to
d9e4444
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Completes the EVM gateway changes for the USDC multi-replica performance demo,
on top of #190 (notification-based tx completion).
namespaces, preventing O(1/N) throughput degradation as replica count grows.
(default 10k blocks), called every 1k delivered blocks to keep storage bounded
during long replay runs.
in the release image built from scratch.
Mac to sync the Ansible collection on the staging control node, generate testdata,
and stream the workload in real time; exposed via make run-demo. New
--reset-fabricx flag does a full backend teardown + start + cert refresh +
redeploy for reproducible measurements on a clean chain.
topology, testdata steps, run commands, output format, troubleshooting, and a
"Resetting between runs" guidance section.
stats, latency percentiles, sent/committed/inflight counters.