Network
Launch Date
Consensus
Note
Sepolia
Oct 2021
PoW
Like-for-like representation of Ethereum
Görli
Jan 2019
PoA
Proof-of-Authority
Kiln
Mar 2022
PoS
Post-Merge (for ETH2), shadow fork of the mainnet
Kintsugi
Dec 2021
PoS
DEPRECATED, use Kiln; post-Merge (for ETH2)
Ropsten
Nov 2016
PoW
DEPRECATED, use Sepolia; the Merge to happen on Jun 8, 2022
Rinkeby
Apr 2017
PoA
DEPRECATED, use Görli and Görli Faucet
Kovan
Mar 2017
PoA
DEPRECATED, use Sepolia or Görli
List of active and deprecated Ethereum testnets, including Kintsugi.
Features
Optimistic rollup 
ZK-rollup 
Proof
Uses fraud proofs to prove transaction validity. 
Uses validity (zero-knowledge) proofs to prove transaction validity. 
Capital efficiency
Requires waiting through a 1-week delay (dispute period) before withdrawing funds. 
Users can withdraw funds immediately because validity proofs provide incontrovertible evidence of the authenticity of off-chain transactions. 
Data compression
Publishes full transaction data as calldata to Ethereum Mainnet, which increases rollup costs. 
Doesn't need to publish transaction data on Ethereum because ZK-SNARKs and ZK-STARKs already guarantee the accuracy of the rollup state. 
EVM compatibility
Uses a simulation of the Ethereum Virtual Machine (EVM), which allows it to run arbitrary logic and support smart contracts. 
Doesn't widely support EVM computation, although a few EVM-compatible ZK-rollups have appeared. 
Rollup costs
Reduces costs since it publishes minimal data on Ethereum and doesn't have to post proofs for transactions, except in special circumstances. 
Faces higher overhead from costs involved in generating and verifying proofs for every transaction block. ZK proofs require specialized, expensive hardware to create and have high on-chain verification costs. 
Trust assumptions
Doesn't require a trusted setup. 
Requires a trusted setup to work. 
Liveness requirements
Verifiers are needed to keep tabs on the actual rollup state and the one referenced in the state root to detect fraud. 
Users don't need someone to watch the L2 chain to detect fraud. 
Security properties 
Relies on cryptoeconomic incentives to assure users of rollup security. 
Relies on cryptographic guarantees for security. 
Start building
on Alchemy.
Sign up for free
Start building on Optimism.
Sign up for free
Start building on Arbitrum.
Sign up for free
Start building on Ethereum.
Sign up for free
Start building on Polygon.
Sign up for free
Start building on Starknet.
Sign up for free
Start building on Flow.
Sign up for free
kiln faucet
Get free Kiln ETH.
Start building today
Goerli faucet
Get free Goerli ETH.
Start building today
SEPOLIA FAUCET
Get free Sepolia ETH.
Start Building Today
mumbai faucet
Get free Mumbai Matic.
Start building today
rinkeby faucet
Get free Rinkeby
ETH.
Start building today
Start building on Ethereum.
Get started for free
Start building on Ethereum.
Get started for free
Start building on Flow.
Get started for free
Start building on Polygon.
Get started for free
Start building on Starknet.
Get started for free
Start building on Optimism.
Get started for free
Start building on Solana.
Get started for free
Start building on Solana.
Sign up for beta access
Start building on Solana.
Join the waitlist
Arbitrum logo
Start building on Arbitrum.
Get started for free
Learn
Solidity at
Alchemy
University
Get started today
curl 
https://release.solana.com/v1.10.32/solana-install-init-x86_64-pc-windows-msvc.exe 
--output 
C:\solana-install-tmp\solana-install-init.exe 
--create-dirs
Solana
GEYSER PLUGIN OVERVIEW

What is the Solana Geyser Plugin?

Discover the Provisioning Made Available for Maintaining High Performance on Solana Validators
Last Updated:
January 26, 2023
Table of Contents
Table of Contents
Table of Contents

{{get-started-solana}}

Solana’s Geyser Plugin helps reduce dependence on validator nodes. This article will explain what the Solana Geyser Plugin is, how it works, and how to setup a PostgeSQL server to use with a Geyser Plugin interface.

What is the Solana Geyser Plugin?

Solana developed a mechanism called the Solana Geyser Plugin to route RPC requests to another memory location and reduce dependence on validator nodes. The Remote Procedure Call (RPC) allows users to connect, read, and write information to Solana nodes on a network. RPC service providers can get inundated with requests when the Solana network experiences high traffic. This unusual traffic can cause Solana validators to fall behind the node leader.

How does the Solana Geyser Plugin help with external data sources?

The Solana Geyser Plugin enables developers to access some forms of data without requesting them on-chain. Using Kafka, postgreSQL, and other possible data stores, developers do not need to use RPC resources for actions like getting accounts, blocks, and slots. To interface with the Solana Geyser Plugin, developers need to use crates.

What are crates in the Solana Geyser Plugin?

The Solana Geyser Plugin is made up of crates, which is a compilation unit on Rust, that typically converts to a library or binary when compiled. Crates are synonymous with packages in other programming languages. But in Rust, a package is a combination of one or more crates. Crates are made up of compilation units.

What are compilation units?

Compilation units are pieces of a program’s source code that can be compiled independently or separately. Since Rust is a general-purpose programming language, it supports functional, imperative, object-oriented, and concurrent programming. Rust uses statements that change a program’s state as each one of the statements is executed in turn. This approach allows programs written with Rust to be composed of compilation units. 

What are interfaces in the Solana Geyser Plugin?

A plugin interface is defined by the crate that is used. For example the Solana Geyser Plugin interface is specified by its GeyserPlugin trait. By allowing the flow of communication, the GeyserPlugin can transmit account and transaction details. 

Common Solana Geyser Plugin Use Cases

Some of the most practical use cases for a Solana Geyser Plugin interface include receiving notifications of account updates, slot changes, and notifying transactions.

1. Account Updates

The following method is used for notifying on an account update:



   fn update_account(
        &mut self,
        account: ReplicaAccountInfoVersions,
        slot: u64,
        is_startup: bool,
    ) -> Result<()>


The ReplicaAccountInfoVersions structure contains the metadata and data of the account being streamed. 

When is_startup is true, it indicates the account is loaded from snapshots when the validator node starts up. When is_startup is false, the account is updated when processing a transaction.

Call this function after all accounts have been alerted as validator restores Account details from snapshots. 



fn notify_end_of_startup(&mut self) -> Result<()>

External data persistence is maintained by ensuring that processes run asynchronously. This makes transaction processing work fast and in parallel when update_account is called. 

2. Slot Changes

The following method is used for notifying slot status changes:



  fn update_slot_status(
        &mut self,
        slot: u64,
        parent: Option,
        status: SlotStatus,
    ) -> Result<()>


In case of an error while preserving data, the plugin can decide to abort the validator. Data remains consistent, and once the validator restarts, all account data is re-transmitted.

3. Notifying Transactions

The following method is used for notifying transactions:



   fn notify_transaction(
        &mut self,
        transaction: ReplicaTransactionInfoVersions,
        slot: u64,
    ) -> Result<()>


How to Set up a PostgreSQL Database for Solana’s Geyser Plugin

The PostgreSQL plugin is used in storing account data in a PostgreSQL database. To properly configure your files, use the configuration guidelines on Solana’s official documentation page, and follow these steps to setup the database: installing a PostgreSQL server, create the database instance, and create the schema objects.

1. Install PostgreSQL Server

Follow the instructions to install a PostgreSQL server on your machine. For proper performance on your validator node, it is highly recommended that you run the database server on a node that is different from the validator. 

2. Create the Database Instance

Next, start the server, create the database, create a user, and verify that everything is working.

Start the server:



sudo systemctl start [email protected]

In the official example, the following line creates a database named 'solana':



sudo -u postgres createdb solana -p 5433

Create the database user:



sudo -u postgres createuser -p 5433 solana

The previous line of code will create a user named 'solana”.

Verify that the database is working as intended:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana

3. Create the Schema Objects

Use the create_schema.sql script from GitHub to create the objects for storing accounts and slots.

Run the script below:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f create_schema.sql

Now, start the validator with this plugin that has been loaded into it. 

Start Using the Solana Geyser Plugin to Access Data Faster

Apart from immutability, data should be readily available and accessible on blockchains. Solana’s Geyser Plugin makes this accessibility possible and faster on Solana, while helping validator nodes manage their resources and uptime.

ALCHEMY SUPERNODE - ETHEREUM NODE API

Scale to any size, without any errors

Alchemy Supernode finally makes it possible to scale blockchain applications without all the headaches. Plus, our legendary support will guide you every step of the way.

Get started for free
Supernode footer
Solana
GEYSER PLUGIN OVERVIEW

What is the Solana Geyser Plugin?

Discover the Provisioning Made Available for Maintaining High Performance on Solana Validators
Last Updated:
January 26, 2023
Don't miss an update
Sign up for our newsletter to get alpha, key insights, and killer resources.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Table of Contents
Table of Contents

{{get-started-solana}}

Solana’s Geyser Plugin helps reduce dependence on validator nodes. This article will explain what the Solana Geyser Plugin is, how it works, and how to setup a PostgeSQL server to use with a Geyser Plugin interface.

What is the Solana Geyser Plugin?

Solana developed a mechanism called the Solana Geyser Plugin to route RPC requests to another memory location and reduce dependence on validator nodes. The Remote Procedure Call (RPC) allows users to connect, read, and write information to Solana nodes on a network. RPC service providers can get inundated with requests when the Solana network experiences high traffic. This unusual traffic can cause Solana validators to fall behind the node leader.

How does the Solana Geyser Plugin help with external data sources?

The Solana Geyser Plugin enables developers to access some forms of data without requesting them on-chain. Using Kafka, postgreSQL, and other possible data stores, developers do not need to use RPC resources for actions like getting accounts, blocks, and slots. To interface with the Solana Geyser Plugin, developers need to use crates.

What are crates in the Solana Geyser Plugin?

The Solana Geyser Plugin is made up of crates, which is a compilation unit on Rust, that typically converts to a library or binary when compiled. Crates are synonymous with packages in other programming languages. But in Rust, a package is a combination of one or more crates. Crates are made up of compilation units.

What are compilation units?

Compilation units are pieces of a program’s source code that can be compiled independently or separately. Since Rust is a general-purpose programming language, it supports functional, imperative, object-oriented, and concurrent programming. Rust uses statements that change a program’s state as each one of the statements is executed in turn. This approach allows programs written with Rust to be composed of compilation units. 

What are interfaces in the Solana Geyser Plugin?

A plugin interface is defined by the crate that is used. For example the Solana Geyser Plugin interface is specified by its GeyserPlugin trait. By allowing the flow of communication, the GeyserPlugin can transmit account and transaction details. 

Common Solana Geyser Plugin Use Cases

Some of the most practical use cases for a Solana Geyser Plugin interface include receiving notifications of account updates, slot changes, and notifying transactions.

1. Account Updates

The following method is used for notifying on an account update:



   fn update_account(
        &mut self,
        account: ReplicaAccountInfoVersions,
        slot: u64,
        is_startup: bool,
    ) -> Result<()>


The ReplicaAccountInfoVersions structure contains the metadata and data of the account being streamed. 

When is_startup is true, it indicates the account is loaded from snapshots when the validator node starts up. When is_startup is false, the account is updated when processing a transaction.

Call this function after all accounts have been alerted as validator restores Account details from snapshots. 



fn notify_end_of_startup(&mut self) -> Result<()>

External data persistence is maintained by ensuring that processes run asynchronously. This makes transaction processing work fast and in parallel when update_account is called. 

2. Slot Changes

The following method is used for notifying slot status changes:



  fn update_slot_status(
        &mut self,
        slot: u64,
        parent: Option,
        status: SlotStatus,
    ) -> Result<()>


In case of an error while preserving data, the plugin can decide to abort the validator. Data remains consistent, and once the validator restarts, all account data is re-transmitted.

3. Notifying Transactions

The following method is used for notifying transactions:



   fn notify_transaction(
        &mut self,
        transaction: ReplicaTransactionInfoVersions,
        slot: u64,
    ) -> Result<()>


How to Set up a PostgreSQL Database for Solana’s Geyser Plugin

The PostgreSQL plugin is used in storing account data in a PostgreSQL database. To properly configure your files, use the configuration guidelines on Solana’s official documentation page, and follow these steps to setup the database: installing a PostgreSQL server, create the database instance, and create the schema objects.

1. Install PostgreSQL Server

Follow the instructions to install a PostgreSQL server on your machine. For proper performance on your validator node, it is highly recommended that you run the database server on a node that is different from the validator. 

2. Create the Database Instance

Next, start the server, create the database, create a user, and verify that everything is working.

Start the server:



sudo systemctl start [email protected]

In the official example, the following line creates a database named 'solana':



sudo -u postgres createdb solana -p 5433

Create the database user:



sudo -u postgres createuser -p 5433 solana

The previous line of code will create a user named 'solana”.

Verify that the database is working as intended:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana

3. Create the Schema Objects

Use the create_schema.sql script from GitHub to create the objects for storing accounts and slots.

Run the script below:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f create_schema.sql

Now, start the validator with this plugin that has been loaded into it. 

Start Using the Solana Geyser Plugin to Access Data Faster

Apart from immutability, data should be readily available and accessible on blockchains. Solana’s Geyser Plugin makes this accessibility possible and faster on Solana, while helping validator nodes manage their resources and uptime.

Solana’s Geyser Plugin helps reduce dependence on validator nodes. This article will explain what the Solana Geyser Plugin is, how it works, and how to setup a PostgeSQL server to use with a Geyser Plugin interface.

What is the Solana Geyser Plugin?

Solana developed a mechanism called the Solana Geyser Plugin to route RPC requests to another memory location and reduce dependence on validator nodes. The Remote Procedure Call (RPC) allows users to connect, read, and write information to Solana nodes on a network. RPC service providers can get inundated with requests when the Solana network experiences high traffic. This unusual traffic can cause Solana validators to fall behind the node leader.

How does the Solana Geyser Plugin help with external data sources?

The Solana Geyser Plugin enables developers to access some forms of data without requesting them on-chain. Using Kafka, postgreSQL, and other possible data stores, developers do not need to use RPC resources for actions like getting accounts, blocks, and slots. To interface with the Solana Geyser Plugin, developers need to use crates.

What are crates in the Solana Geyser Plugin?

The Solana Geyser Plugin is made up of crates, which is a compilation unit on Rust, that typically converts to a library or binary when compiled. Crates are synonymous with packages in other programming languages. But in Rust, a package is a combination of one or more crates. Crates are made up of compilation units.

What are compilation units?

Compilation units are pieces of a program’s source code that can be compiled independently or separately. Since Rust is a general-purpose programming language, it supports functional, imperative, object-oriented, and concurrent programming. Rust uses statements that change a program’s state as each one of the statements is executed in turn. This approach allows programs written with Rust to be composed of compilation units. 

What are interfaces in the Solana Geyser Plugin?

A plugin interface is defined by the crate that is used. For example the Solana Geyser Plugin interface is specified by its GeyserPlugin trait. By allowing the flow of communication, the GeyserPlugin can transmit account and transaction details. 

Common Solana Geyser Plugin Use Cases

Some of the most practical use cases for a Solana Geyser Plugin interface include receiving notifications of account updates, slot changes, and notifying transactions.

1. Account Updates

The following method is used for notifying on an account update:



   fn update_account(
        &mut self,
        account: ReplicaAccountInfoVersions,
        slot: u64,
        is_startup: bool,
    ) -> Result<()>


The ReplicaAccountInfoVersions structure contains the metadata and data of the account being streamed. 

When is_startup is true, it indicates the account is loaded from snapshots when the validator node starts up. When is_startup is false, the account is updated when processing a transaction.

Call this function after all accounts have been alerted as validator restores Account details from snapshots. 



fn notify_end_of_startup(&mut self) -> Result<()>

External data persistence is maintained by ensuring that processes run asynchronously. This makes transaction processing work fast and in parallel when update_account is called. 

2. Slot Changes

The following method is used for notifying slot status changes:



  fn update_slot_status(
        &mut self,
        slot: u64,
        parent: Option,
        status: SlotStatus,
    ) -> Result<()>


In case of an error while preserving data, the plugin can decide to abort the validator. Data remains consistent, and once the validator restarts, all account data is re-transmitted.

3. Notifying Transactions

The following method is used for notifying transactions:



   fn notify_transaction(
        &mut self,
        transaction: ReplicaTransactionInfoVersions,
        slot: u64,
    ) -> Result<()>


How to Set up a PostgreSQL Database for Solana’s Geyser Plugin

The PostgreSQL plugin is used in storing account data in a PostgreSQL database. To properly configure your files, use the configuration guidelines on Solana’s official documentation page, and follow these steps to setup the database: installing a PostgreSQL server, create the database instance, and create the schema objects.

1. Install PostgreSQL Server

Follow the instructions to install a PostgreSQL server on your machine. For proper performance on your validator node, it is highly recommended that you run the database server on a node that is different from the validator. 

2. Create the Database Instance

Next, start the server, create the database, create a user, and verify that everything is working.

Start the server:



sudo systemctl start [email protected]

In the official example, the following line creates a database named 'solana':



sudo -u postgres createdb solana -p 5433

Create the database user:



sudo -u postgres createuser -p 5433 solana

The previous line of code will create a user named 'solana”.

Verify that the database is working as intended:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana

3. Create the Schema Objects

Use the create_schema.sql script from GitHub to create the objects for storing accounts and slots.

Run the script below:



psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f create_schema.sql

Now, start the validator with this plugin that has been loaded into it. 

Start Using the Solana Geyser Plugin to Access Data Faster

Apart from immutability, data should be readily available and accessible on blockchains. Solana’s Geyser Plugin makes this accessibility possible and faster on Solana, while helping validator nodes manage their resources and uptime.

Build web3 with Alchemy

Alchemy combines the most powerful web3 developer products and tools with resources, community and legendary support.

 Start building