solana/geyser-plugin-interface
ivandzen 2f9146e8c8
Replace txn_signature in ReplicaAccountInfo with transaction (#30189)
#### Current implementation of ReplicaAccountInfo restricts
possibilities for inflight account filtration
Current implementation includes transaction signature in
ReplicaAccountInfo. This approach does not allow to filter accounts by
matching other accounts in transaction in-flight (e. g. accept only
those accounts included in transactions for specific programs). Current
implementation forces to collect ALL accounts and transactions for some
period of time and perform such complex filtration afterwards.

#### Pass reference to transaction object instead of transaction
signature into ReplicaAccountInfo
Advanced in-flight filtration can be implemented in plugins by passing
reference to transaction for every update_account event. This change
doesn't bring any overhead comparing to current implementation (only
data type of reference is changed) and brings only minor changes in
source code.
2023-02-09 12:00:33 -08:00
..
src Replace txn_signature in ReplicaAccountInfo with transaction (#30189) 2023-02-09 12:00:33 -08:00
Cargo.toml Bump version to v1.16 (#30028) 2023-01-31 17:48:33 -06:00
README.md

README.md

Solana

Solana Geyser Plugin Interface

This crate enables an plugin to be added into the Solana Validator runtime to take actions at the time of account updates or block and transaction processing; for example, saving the account state to an external database. The plugin must implement the GeyserPlugin trait. Please see the detail of the geyser_plugin_interface.rs for the interface definition.

The plugin should produce a cdylib dynamic library, which must expose a C function _create_plugin() that instantiates the implementation of the interface.

The https://github.com/solana-labs/solana-accountsdb-plugin-postgres repository provides an example of how to create a plugin which saves the accounts data into an external PostgreSQL databases.

More information about Solana is available in the Solana documentation.

Still have questions? Ask us on Discord