Skip to content

Conversation

@JoshLind
Copy link
Contributor

@JoshLind JoshLind commented Nov 25, 2025

Description

This PR extends the API-based transaction filter to support encrypted transaction payloads.

Testing Plan

New and existing test infrastructure.


Note

Introduces an EncryptedTransaction matcher and helper to filter encrypted payloads, with accompanying tests and utilities to generate encrypted and mixed transactions.

  • Filters:
    • Add TransactionMatcher::EncryptedTransaction and add_encrypted_transaction_filter() in crates/aptos-transaction-filters/src/transaction_filter.rs.
    • Implement encrypted detection via matches_encrypted_transaction() using payload().is_encrypted_variant().
  • Tests:
    • Add test_encrypted_transaction_filter in tests/transaction_filter.rs.
    • Add config test test_transaction_filter_config_multiple_matchers_encrypted in tests/transaction_filter_config.rs.
  • Test Utilities:
    • Add generators for encrypted transactions and mixed sets (create_encrypted_*, create_encrypted_and_plaintext_transactions) in tests/utils.rs (covering encrypted, failed decryption, and decrypted states).

Written by Cursor Bugbot for commit 34f58e1. This will update automatically on new commits. Configure here.

Copy link
Contributor

@danielxiangzl danielxiangzl left a comment

Choose a reason for hiding this comment

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

lgtm

@JoshLind JoshLind enabled auto-merge (rebase) December 2, 2025 14:45
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2025

✅ Forge suite compat success on 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059

Forge report malformed: Expecting property name enclosed in double quotes: line 4 column 1 (char 23)
'{\n  "metrics": [\n    {\n[2025-12-02T15:19:23Z INFO  aptos_forge::report] Test Ok\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "submitted_txn",\n      "value": 451460.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "avg_tps",\n      "value": 13752.192257267337\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "avg_latency",\n      "value": 2533.881573118327\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "p50_latency",\n      "value": 2700.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "p90_latency",\n      "value": 3100.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::liveness-check",\n      "metric": "p99_latency",\n      "value": 3600.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "submitted_txn",\n      "value": 210040.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "avg_tps",\n      "value": 6087.912637157005\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "avg_latency",\n      "value": 5593.257179584841\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "p50_latency",\n      "value": 6200.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "p90_latency",\n      "value": 6400.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::single-validator-upgrade",\n      "metric": "p99_latency",\n      "value": 6500.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "submitted_txn",\n      "value": 205300.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "avg_tps",\n      "value": 5910.821870988866\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "avg_latency",\n      "value": 5709.898241597662\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "p50_latency",\n      "value": 6300.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "p90_latency",\n      "value": 6500.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::half-validator-upgrade",\n      "metric": "p99_latency",\n      "value": 6700.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "submitted_txn",\n      "value": 343780.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "avg_tps",\n      "value": 10426.239221157713\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "avg_latency",\n      "value": 3131.870955262086\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "p50_latency",\n      "value": 3300.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "p90_latency",\n      "value": 3600.0\n    },\n    {\n      "test_name": "compatibility::simple-validator-upgrade::rest-validator-upgrade",\n      "metric": "p99_latency",\n      "value": 4100.0\n    }\n  ],\n  "text": "Compatibility test results for 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059 (PR)\\n1. Check liveness of validators at old version: 92c0534410a26cafa4509b2dfda12c86811abf0a\\ncompatibility::simple-validator-upgrade::liveness-check : committed: 13752.19 txn/s, latency: 2533.88 ms, (p50: 2700 ms, p70: 2800, p90: 3100 ms, p99: 3600 ms), latency samples: 451460\\n2. Upgrading first Validator to new version: 34f58e10e912355554e8baa34a70d976a0b16059\\ncompatibility::simple-validator-upgrade::single-validator-upgrade : committed: 6087.91 txn/s, latency: 5593.26 ms, (p50: 6200 ms, p70: 6300, p90: 6400 ms, p99: 6500 ms), latency samples: 210040\\n3. Upgrading rest of first batch to new version: 34f58e10e912355554e8baa34a70d976a0b16059\\ncompatibility::simple-validator-upgrade::half-validator-upgrade : committed: 5910.82 txn/s, latency: 5709.90 ms, (p50: 6300 ms, p70: 6400, p90: 6500 ms, p99: 6700 ms), latency samples: 205300\\n4. upgrading second batch to new version: 34f58e10e912355554e8baa34a70d976a0b16059\\ncompatibility::simple-validator-upgrade::rest-validator-upgrade : committed: 10426.24 txn/s, latency: 3131.87 ms, (p50: 3300 ms, p70: 3400, p90: 3600 ms, p99: 4100 ms), latency samples: 343780\\n5. check swarm health\\nCompatibility test for 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059 passed\\nTest Ok"\n}'
Trailing Log Lines:
2. Upgrading first Validator to new version: 34f58e10e912355554e8baa34a70d976a0b16059
compatibility::simple-validator-upgrade::single-validator-upgrade : committed: 6087.91 txn/s, latency: 5593.26 ms, (p50: 6200 ms, p70: 6300, p90: 6400 ms, p99: 6500 ms), latency samples: 210040
3. Upgrading rest of first batch to new version: 34f58e10e912355554e8baa34a70d976a0b16059
compatibility::simple-validator-upgrade::half-validator-upgrade : committed: 5910.82 txn/s, latency: 5709.90 ms, (p50: 6300 ms, p70: 6400, p90: 6500 ms, p99: 6700 ms), latency samples: 205300
4. upgrading second batch to new version: 34f58e10e912355554e8baa34a70d976a0b16059
compatibility::simple-validator-upgrade::rest-validator-upgrade : committed: 10426.24 txn/s, latency: 3131.87 ms, (p50: 3300 ms, p70: 3400, p90: 3600 ms, p99: 4100 ms), latency samples: 343780
5. check swarm health
Compatibility test for 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059 passed
Test Ok

=== BEGIN JUNIT ===
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="forge" tests="1" failures="0" errors="0" uuid="a42b328c-2a73-4c8e-a947-062215ad1a7d">
    <testsuite name="compat" tests="1" disabled="0" errors="0" failures="0">
        <testcase name="compatibility::simple-validator-upgrade">
        </testcase>
    </testsuite>
</testsuites>
=== END JUNIT ===
[2025-12-02T15:19:23Z INFO  aptos_forge::backend::k8s::cluster_helper] Deleting namespace forge-compat-pr-18211: Some(NamespaceStatus { conditions: None, phase: Some("Terminating") })
[2025-12-02T15:19:23Z INFO  aptos_forge::backend::k8s::cluster_helper] aptos-node resources for Forge removed in namespace: forge-compat-pr-18211

test result: ok. 1 passed; 0 soft failed; 0 hard failed; 0 filtered out

Debugging output:
NAME                                         READY   STATUS      RESTARTS   AGE
aptos-node-0-validator-0                     1/1     Running     0          4m20s
aptos-node-1-validator-0                     1/1     Running     0          5m55s
aptos-node-2-validator-0                     1/1     Running     0          2m35s
aptos-node-3-validator-0                     1/1     Running     0          97s
forge-testnet-deployer-vk8k7                 0/1     Completed   0          10m
genesis-aptos-genesis-eforge91df0f4a-b6f7m   0/1     Completed   0          10m

@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2025

✅ Forge suite realistic_env_max_load success on 34f58e10e912355554e8baa34a70d976a0b16059

Forge report malformed: Expecting property name enclosed in double quotes: line 6 column 1 (char 111)
'{\n  "metrics": [\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "submitted_txn",\n[2025-12-02T15:21:35Z INFO  aptos_forge::report] Test Ok\n      "value": 5056820.0\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "avg_tps",\n      "value": 13578.644663278064\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "avg_latency",\n      "value": 2775.12574720872\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "p50_latency",\n      "value": 2700.0\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "p90_latency",\n      "value": 3000.0\n    },\n    {\n      "test_name": "two traffics test: inner traffic",\n      "metric": "p99_latency",\n      "value": 3600.0\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "submitted_txn",\n      "value": 42660.0\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "expired_txn",\n      "value": 0.0\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "avg_tps",\n      "value": 99.98800046162788\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "avg_latency",\n      "value": 742.6279069767442\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "p50_latency",\n      "value": 700.0\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "p90_latency",\n      "value": 900.0\n    },\n    {\n      "test_name": "two traffics test",\n      "metric": "p99_latency",\n      "value": 1000.0\n    }\n  ],\n  "text": "two traffics test: inner traffic : committed: 13578.64 txn/s, latency: 2775.13 ms, (p50: 2700 ms, p70: 2900, p90: 3000 ms, p99: 3600 ms), latency samples: 5056820\\ntwo traffics test : committed: 99.99 txn/s, latency: 742.63 ms, (p50: 700 ms, p70: 800, p90: 900 ms, p99: 1000 ms), latency samples: 1720\\nLatency breakdown for phase 0: [\\"MempoolToBlockCreation: max: 2.267, avg: 2.186\\", \\"ConsensusProposalToOrdered: max: 0.169, avg: 0.166\\", \\"ConsensusOrderedToCommit: max: 0.055, avg: 0.049\\", \\"ConsensusProposalToCommit: max: 0.222, avg: 0.215\\"]\\nMax non-epoch-change gap was: 0 rounds at version 0 (avg 0.00) [limit 4], 0.45s no progress at version 4905611 (avg 0.07s) [limit 15].\\nMax epoch-change gap was: 0 rounds at version 0 (avg 0.00) [limit 4], 0.23s no progress at version 2170718 (avg 0.23s) [limit 16].\\nTest Ok"\n}'
Trailing Log Lines:
networkchaos.chaos-mesh.org "4-gcp--as-southeast1-to-3-gcp--us-east4-netem" deleted
test CompositeNetworkTest ... ok
Test Statistics: 
two traffics test: inner traffic : committed: 13578.64 txn/s, latency: 2775.13 ms, (p50: 2700 ms, p70: 2900, p90: 3000 ms, p99: 3600 ms), latency samples: 5056820
two traffics test : committed: 99.99 txn/s, latency: 742.63 ms, (p50: 700 ms, p70: 800, p90: 900 ms, p99: 1000 ms), latency samples: 1720
Latency breakdown for phase 0: ["MempoolToBlockCreation: max: 2.267, avg: 2.186", "ConsensusProposalToOrdered: max: 0.169, avg: 0.166", "ConsensusOrderedToCommit: max: 0.055, avg: 0.049", "ConsensusProposalToCommit: max: 0.222, avg: 0.215"]
Max non-epoch-change gap was: 0 rounds at version 0 (avg 0.00) [limit 4], 0.45s no progress at version 4905611 (avg 0.07s) [limit 15].
Max epoch-change gap was: 0 rounds at version 0 (avg 0.00) [limit 4], 0.23s no progress at version 2170718 (avg 0.23s) [limit 16].
Test Ok

=== BEGIN JUNIT ===
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="forge" tests="1" failures="0" errors="0" uuid="c0ce5c03-43c1-40dc-82b3-207b92301f30">
    <testsuite name="local" tests="1" disabled="0" errors="0" failures="0">
        <testcase name="CompositeNetworkTest(network:multi-region-network-emulation(two traffics test)) with ">
        </testcase>
    </testsuite>
</testsuites>
=== END JUNIT ===
[2025-12-02T15:21:35Z INFO  aptos_forge::backend::k8s::cluster_helper] Deleting namespace forge-e2e-pr-18211: Some(NamespaceStatus { conditions: None, phase: Some("Terminating") })
[2025-12-02T15:21:35Z INFO  aptos_forge::backend::k8s::cluster_helper] aptos-node resources for Forge removed in namespace: forge-e2e-pr-18211

test result: ok. 1 passed; 0 soft failed; 0 hard failed; 0 filtered out

Debugging output:
NAME                                         READY   STATUS      RESTARTS   AGE
aptos-node-0-fullnode-eforge92401e6d-0       1/1     Running     0          12m
aptos-node-0-validator-0                     1/1     Running     0          12m
aptos-node-1-fullnode-eforge92401e6d-0       1/1     Running     0          12m
aptos-node-1-validator-0                     1/1     Running     0          12m
aptos-node-2-fullnode-eforge92401e6d-0       1/1     Running     0          12m
aptos-node-2-validator-0                     1/1     Running     0          12m
aptos-node-3-fullnode-eforge92401e6d-0       1/1     Running     0          12m
aptos-node-3-validator-0                     1/1     Running     0          12m
aptos-node-4-fullnode-eforge92401e6d-0       1/1     Running     0          12m
aptos-node-4-validator-0                     1/1     Running     0          12m
aptos-node-5-validator-0                     1/1     Running     0          12m
aptos-node-6-validator-0                     1/1     Running     0          12m
forge-testnet-deployer-p8mm5                 0/1     Completed   0          13m
genesis-aptos-genesis-eforge92401e6d-7lgjl   0/1     Completed   0          12m

@github-actions
Copy link
Contributor

github-actions bot commented Dec 2, 2025

✅ Forge suite framework_upgrade success on 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059

Compatibility test results for 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059 (PR)
Upgrade the nodes to version: 34f58e10e912355554e8baa34a70d976a0b16059
framework_upgrade::framework-upgrade::full-framework-upgrade : committed: 2308.54 txn/s, submitted: 2313.16 txn/s, failed submission: 4.62 txn/s, expired: 4.62 txn/s, latency: 1298.32 ms, (p50: 1200 ms, p70: 1400, p90: 1500 ms, p99: 2700 ms), latency samples: 209800
framework_upgrade::framework-upgrade::full-framework-upgrade : committed: 2172.92 txn/s, submitted: 2180.21 txn/s, failed submission: 7.29 txn/s, expired: 7.29 txn/s, latency: 1367.67 ms, (p50: 1200 ms, p70: 1500, p90: 1800 ms, p99: 2700 ms), latency samples: 196740
5. check swarm health
Compatibility test for 92c0534410a26cafa4509b2dfda12c86811abf0a ==> 34f58e10e912355554e8baa34a70d976a0b16059 passed
Upgrade the remaining nodes to version: 34f58e10e912355554e8baa34a70d976a0b16059
framework_upgrade::framework-upgrade::full-framework-upgrade : committed: 2369.01 txn/s, submitted: 2374.94 txn/s, failed submission: 5.93 txn/s, expired: 5.93 txn/s, latency: 1276.79 ms, (p50: 1200 ms, p70: 1500, p90: 1500 ms, p99: 1800 ms), latency samples: 207881
Test Ok

@JoshLind JoshLind merged commit 9a3caae into main Dec 2, 2025
90 checks passed
@JoshLind JoshLind deleted the txn_filter_enc branch December 2, 2025 15:30
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.

4 participants