-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Labels
A-clientsIssues related to blockchain clients (e.g., EVMClient, StellarClient)Issues related to blockchain clients (e.g., EVMClient, StellarClient)D-mediumIntermediate-level tasksIntermediate-level tasksP-mediumImportant but not urgentImportant but not urgentT-taskGeneral tasks or chores (e.g., refactoring, cleanup)General tasks or chores (e.g., refactoring, cleanup)cla: allowlistgood-first-issueBeginner-friendly, low-complexity issues to help new contributorsBeginner-friendly, low-complexity issues to help new contributorshelp-wantedIssues where community contributions are welcomeIssues where community contributions are welcome
Description
Solana: Add Account and Fee Payer Filtering
Description
The Solana filter matches transactions by program IDs (required for the RPC method), then applies additional filtering via log/event matching. However, it lacks the ability to filter by accounts involved in the transaction or the fee payer.
Problems
- No fee payer filtering - Cannot filter transactions by who paid for them
- No account filtering - Cannot filter by specific accounts involved (signers, token accounts, etc.)
- Limited expression parameters - Only
signature,slot,fee,is_successare available; no account-related fields
This limits monitoring use cases such as:
- Monitoring program interactions only when initiated by a specific wallet
- Filtering transactions where a particular account is the fee payer
- Matching only when specific token accounts are involved
Proposed Solution
-
Extend
build_transaction_params()in filter.rs:169-199 to include:fee_payer- First account inaccount_keys(Solana convention)accounts- All accounts involved in the transaction
-
Add account-based filtering as an alternative to log-based filtering (program ID matching remains required)
-
Example expressions to support:
fee_payer == "WaLLeT123..." accounts contains "TokenAccount456..."
Trade-offs to Consider
- Performance: Checking all accounts increases matching complexity vs program-ID-only filtering
- Configuration complexity: Need to decide if accounts filter in
addressesarray or via expressions only - Consistency with EVM: EVM uses
from/towhich maps cleanly to sender/recipient; Solana has N accounts per transaction with different roles
Related Code
- Solana filter: src/services/filter/filters/solana/filter.rs
- EVM filter (reference): src/services/filter/filters/evm/filter.rs
- Solana transaction model: src/models/blockchain/solana/transaction.rs
- Monitor config model: src/models/core/monitor.rs
shahnami
Metadata
Metadata
Assignees
Labels
A-clientsIssues related to blockchain clients (e.g., EVMClient, StellarClient)Issues related to blockchain clients (e.g., EVMClient, StellarClient)D-mediumIntermediate-level tasksIntermediate-level tasksP-mediumImportant but not urgentImportant but not urgentT-taskGeneral tasks or chores (e.g., refactoring, cleanup)General tasks or chores (e.g., refactoring, cleanup)cla: allowlistgood-first-issueBeginner-friendly, low-complexity issues to help new contributorsBeginner-friendly, low-complexity issues to help new contributorshelp-wantedIssues where community contributions are welcomeIssues where community contributions are welcome