1650851220
The solana-geyser-plugin-postgres
crate implements a plugin storing account data to a PostgreSQL database to illustrate how a plugin can be developed to work with Solana validators using the Plugin Framework.
The plugin is configured using the input configuration file. An example configuration file looks like the following:
{
"libpath": "/solana/target/release/libsolana_geyser_plugin_postgres.so",
"host": "postgres-server",
"user": "solana",
"port": 5433,
"threads": 20,
"batch_size": 20,
"panic_on_db_errors": true,
"accounts_selector" : {
"accounts" : ["*"]
}
}
The host
, user
, and port
control the PostgreSQL configuration information. For more advanced connection options, please use the connection_str
field. Please see Rust Postgres Configuration.
To improve the throughput to the database, the plugin supports connection pooling using multiple threads, each maintaining a connection to the PostgreSQL database. The count of the threads is controlled by the threads
field. A higher thread count usually offers better performance.
To further improve performance when saving large numbers of accounts at startup, the plugin uses bulk inserts. The batch size is controlled by the batch_size
parameter. This can help reduce the round trips to the database.
The panic_on_db_errors
can be used to panic the validator in case of database errors to ensure data consistency.
To connect to the PostgreSQL database via SSL, set use_ssl
to true, and specify the server certificate, the client certificate and the client key files in PEM format using the server_ca
, client_cert
and client_key
fields respectively. For example:
"use_ssl": true,
"server_ca": "/solana/.ssh/server-ca.pem",
"client_cert": "/solana/.ssh/client-cert.pem",
"client_key": "/solana/.ssh/client-key.pem",
The accounts_selector
can be used to filter the accounts that should be persisted.
For example, one can use the following to persist only the accounts with particular Base58-encoded Pubkeys,
"accounts_selector" : {
"accounts" : ["pubkey-1", "pubkey-2", ..., "pubkey-n"],
}
Or use the following to select accounts with certain program owners:
"accounts_selector" : {
"owners" : ["pubkey-owner-1", "pubkey-owner-2", ..., "pubkey-owner-m"],
}
To select all accounts, use the wildcard character (*):
"accounts_selector" : {
"accounts" : ["*"],
}
transaction_selector
, controls if and what transactions to store. If this field is missing, none of the transactions are stored.
For example, one can use the following to select only the transactions referencing accounts with particular Base58-encoded Pubkeys,
"transaction_selector" : {
"mentions" : \["pubkey-1", "pubkey-2", ..., "pubkey-n"\],
}
The mentions
field supports wildcards to select all transaction or all 'vote' transactions. For example, to select all transactions:
"transaction_selector" : {
"mentions" : \["*"\],
}
To select all vote transactions:
"transaction_selector" : {
"mentions" : \["all_votes"\],
}
Please follow PostgreSQL Ubuntu Installation on instructions to install the PostgreSQL database server. For example, to install postgresql-14,
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-14
Modify the pg_hba.conf as necessary to grant the plugin to access the database. For example, in /etc/postgresql/14/main/pg_hba.conf, the following entry allows nodes with IPs in the CIDR 10.138.0.0/24 to access all databases. The validator runs in a node with an ip in the specified range.
host all all 10.138.0.0/24 trust
It is recommended to run the database server on a separate node from the validator for better performance.
Please refer to the PostgreSQL Server Configuration for configuration details. The referential implementation uses the following configurations for better database performance in the /etc/postgresql/14/main/postgresql.conf which are different from the default postgresql-14 installation.
max_connections = 200 # (change requires restart)
shared_buffers = 1GB # min 128kB
effective_io_concurrency = 1000 # 1-1000; 0 disables prefetching
wal_level = minimal # minimal, replica, or logical
fsync = off # flush data to disk for crash safety
synchronous_commit = off # synchronization level;
full_page_writes = off # recover from partial page writes
max_wal_senders = 0 # max number of walsender processes
The sample scripts/postgresql.conf can be used for reference.
Start the server:
sudo systemctl start postgresql@14-main
Create the database. For example, the following creates a database named 'solana':
sudo -u postgres createdb solana -p 5433
Create the database user. For example, the following creates a regular user named 'solana':
sudo -u postgres createuser -p 5433 solana
Verify the database is working using psql. For example, assuming the node running PostgreSQL has the ip 10.138.0.9, the following command will land in a shell where SQL commands can be entered:
psql -U solana -p 5433 -h 10.138.0.9 -w -d solana
Use the scripts/create_schema.sql
psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f scripts/create_schema.sql
After this, start the validator with the plugin by using the --geyser-plugin-config
argument mentioned above.
To destroy the database objects, created by create_schema.sql
, use drop_schema.sql. For example,
psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f scripts/drop_schema.sql
To capture account historical data, in the configuration file, turn store_account_historical_data
to true.
And ensure the database trigger is created to save data in the audit_table
when records in account
are updated, as shown in create_schema.sql
,
CREATE FUNCTION audit_account_update() RETURNS trigger AS $audit_account_update$
BEGIN
INSERT INTO account_audit (pubkey, owner, lamports, slot, executable, rent_epoch, data, write_version, updated_on)
VALUES (OLD.pubkey, OLD.owner, OLD.lamports, OLD.slot,
OLD.executable, OLD.rent_epoch, OLD.data, OLD.write_version, OLD.updated_on);
RETURN NEW;
END;
$audit_account_update$ LANGUAGE plpgsql;
CREATE TRIGGER account_update_trigger AFTER UPDATE OR DELETE ON account
FOR EACH ROW EXECUTE PROCEDURE audit_account_update();
The trigger can be dropped to disable this feature, for example,
DROP TRIGGER account_update_trigger ON account;
Over time, the account_audit can accumulate large amount of data. You may choose to limit that by deleting older historical data.
For example, the following SQL statement can be used to keep up to 1000 of the most recent records for an account:
delete from account_audit a2 where (pubkey, write_version) in
(select pubkey, write_version from
(select a.pubkey, a.updated_on, a.slot, a.write_version, a.lamports,
rank() OVER ( partition by pubkey order by write_version desc) as rnk
from account_audit a) ranked
where ranked.rnk > 1000)
The following are the tables in the Postgres database
Table | Description |
---|---|
account | Account data |
block | Block metadata |
slot | Slot metadata |
transaction | Transaction data |
account_audit | Account historical data |
When a validator lacks sufficient compute power, the overhead of saving the account data can cause it to fall behind the network especially when all accounts or a large number of accounts are selected. The node hosting the PostgreSQL database need to be powerful enough to handle the database loads as well. It has been found using GCP n2-standard-64 machine type for the validator and n2-highmem-32 for the PostgreSQL node is adequate for handling transmiting all accounts while keeping up with the network. In addition, it is best to keep the validator and the PostgreSQL in the same local network to reduce latency. You may need to size the validator and database nodes differently if serving other loads.
Download Details:
Author: solana-lab
Source Code: https://github.com/solana-labs/solana-accountsdb-plugin-postgres
License:
#solana #blockchain #smartcontract #dapp #rust
1648532804
#Solana price moons past $100 as #SOL bulls set their eyes on $150
#Solana price is looking promising
#Solana price has ascended into the mid $110 zone to start this week's trading session. It was mentioned in last week's neutral thesis that a breach above the triangle's C wave at $106 could be the ultimate catalyst to a 40% rally. This weekend, The bulls pushed Solana price through the trigger level, printing two bullish engulfing candles on the 9-hour chart.
#Solana price will likely continue rising as five wave impulses typically follow triangle breakouts. #Solana price has completed the first impulse into the trigger level at $106 and will need two more impulsive waves to justify the validity of the triangle consolidation.
It's also worth noting that the volume profile is increasing with large buy orders from investors, indicating strength and confidence in the current trend. Traders should consider looking for entries on smaller time frames as the price is likely to chop around the trigger zone.
1622722796
WordPress needs no introduction. It has been in the world for quite a long time. And up till now, it has given a tough fight to leading web development technology. The main reason behind its remarkable success is, it is highly customizable and also SEO-friendly. Other benefits include open-source technology, security, user-friendliness, and the thousands of free plugins it offers.
Talking of WordPress plugins, are a piece of software that enables you to add more features to the website. They are easy to integrate into your website and don’t hamper the performance of the site. WordPress, as a leading technology, has to offer many out-of-the-box plugins.
However, not always the WordPress would be able to meet your all needs. Hence you have to customize the WordPress plugin to provide you the functionality you wished. WordPress Plugins are easy to install and customize. You don’t have to build the solution from scratch and that’s one of the reasons why small and medium-sized businesses love it. It doesn’t need a hefty investment or the hiring of an in-house development team. You can use the core functionality of the plugin and expand it as your like.
In this blog, we would be talking in-depth about plugins and how to customize WordPress plugins to improve the functionality of your web applications.
What Is The Working Of The WordPress Plugins?
Developing your own plugin requires you to have some knowledge of the way they work. It ensures the better functioning of the customized plugins and avoids any mistakes that can hamper the experience on your site.
1. Hooks
Plugins operate primarily using hooks. As a hook attaches you to something, the same way a feature or functionality is hooked to your website. The piece of code interacts with the other components present on the website. There are two types of hooks: a. Action and b. Filter.
A. Action
If you want something to happen at a particular time, you need to use a WordPress “action” hook. With actions, you can add, change and improve the functionality of your plugin. It allows you to attach a new action that can be triggered by your users on the website.
There are several predefined actions available on WordPress, custom WordPress plugin development also allows you to develop your own action. This way you can make your plugin function as your want. It also allows you to set values for which the hook function. The add_ action function will then connect that function to a specific action.
B. Filters
They are the type of hooks that are accepted to a single variable or a series of variables. It sends them back after they have modified it. It allows you to change the content displayed to the user.
You can add the filter on your website with the apply_filter function, then you can define the filter under the function. To add a filter hook on the website, you have to add the $tag (the filter name) and $value (the filtered value or variable), this allows the hook to work. Also, you can add extra function values under $var.
Once you have made your filter, you can execute it with the add_filter function. This will activate your filter and would work when a specific function is triggered. You can also manipulate the variable and return it.
2. Shortcodes
Shortcodes are a good way to create and display the custom functionality of your website to visitors. They are client-side bits of code. They can be placed in the posts and pages like in the menu and widgets, etc.
There are many plugins that use shortcodes. By creating your very own shortcode, you too can customize the WordPress plugin. You can create your own shortcode with the add_shortcode function. The name of the shortcode that you use would be the first variable and the second variable would be the output of it when it is triggered. The output can be – attributes, content, and name.
3. Widgets
Other than the hooks and shortcodes, you can use the widgets to add functionality to the site. WordPress Widgets are a good way to create a widget by extending the WP_Widget class. They render a user-friendly experience, as they have an object-oriented design approach and the functions and values are stored in a single entity.
How To Customize WordPress Plugins?
There are various methods to customize the WordPress plugins. Depending on your need, and the degree of customization you wish to make in the plugin, choose the right option for you. Also, don’t forget to keep in mind that it requires a little bit of technical knowledge too. So find an expert WordPress plugin development company in case you lack the knowledge to do it by yourself.
1. Hire A Plugin Developer3
One of the best ways to customize a WordPress plugin is by hiring a plugin developer. There are many plugin developers listed in the WordPress directory. You can contact them and collaborate with world-class WordPress developers. It is quite easy to find a WordPress plugin developer.
Since it is not much work and doesn’t pay well or for the long term a lot of developers would be unwilling to collaborate but, you will eventually find people.
2. Creating A Supporting Plugin
If you are looking for added functionality in an already existing plugin go for this option. It is a cheap way to meet your needs and creating a supporting plugin takes very little time as it has very limited needs. Furthermore, you can extend a plugin to a current feature set without altering its base code.
However, to do so, you have to hire a WordPress developer as it also requires some technical knowledge.
3. Use Custom Hooks
Use the WordPress hooks to integrate some other feature into an existing plugin. You can add an action or a filter as per your need and improve the functionality of the website.
If the plugin you want to customize has the hook, you don’t have to do much to customize it. You can write your own plugin that works with these hooks. This way you don’t have to build a WordPress plugin right from scratch. If the hook is not present in the plugin code, you can contact a WordPress developer or write the code yourself. It may take some time, but it works.
Once the hook is added, you just have to manually patch each one upon the release of the new plugin update.
4. Override Callbacks
The last way to customize WordPress plugins is by override callbacks. You can alter the core functionality of the WordPress plugin with this method. You can completely change the way it functions with your website. It is a way to completely transform the plugin. By adding your own custom callbacks, you can create the exact functionality you desire.
We suggest you go for a web developer proficient in WordPress as this requires a good amount of technical knowledge and the working of a plugin.
#customize wordpress plugins #how to customize plugins in wordpress #how to customize wordpress plugins #how to edit plugins in wordpress #how to edit wordpress plugins #wordpress plugin customization
1627038354
When you want to watch a video, then you always choose to watch videos on YouTube and go for other popular streaming websites. Although such videos provide amazing watching experience and if you want to make own website that simply allows spectators to watch videos also. At that time you can prefer WordPress, even this is not only that, businesses which mostly tend to make video content and register them on their website. Therefore, you need video player WordPress plugins that makes simpler the entire procedures of dealing with videos on your website. Along with, you get remarkable video players that make an appealing appearance on your website.
WP Video LightboxWordPress plugin lets users insert videos right on top of any page by implementing a lightbox intersection screen. The plugin is very convenient when you are keen to show pictures, flash, YouTube, or Vimeo videos on your website. In addition, the plugin is fully approachable, thus, all mobile users like its amazing features.
The plugin assists you by automatically appealing the thumbnail for the Video which you make use of it, although you have a great choice to utilize your thumbnails if you wish for. The plugin also offers you an ideal alternative to restrict recommended video in the last part of a YouTube video, therefore your viewers will not to be unfocused. Additionally, you can buy antivirus online using Amazon Promo Code to protect your system form virus.
Portfolio Designer is a complete solution for developing an astonishing portfolio, galleries, as well showcase into the WordPress website. The plugin has in-built infinite layout styles such as grid, masonry, slider, WooCommerce, and justify. Additionally, it includes 50+ awesome hover and animation effects to captivate your website visitors instantly. This plugin supports audio and video formats to create fantastic galleries hassle-free.
The plugin has unlimited colors and design options that a user can modify smoothly and introduce the portfolio presentation vividly. It has 800+ Google web fonts, fancy box integration, support unlimited custom post, and so on. A user can get all the functionalities to build an attractive portfolio in just one plugin. With the Portfolio Designer WordPress plugin, there are no restrictions to display the portfolio or galleries to any website page. The plugin is also available in the lite version at the WordPress repository.
ARVE Advanced Responsive Video Embedder
ARVE Advanced Responsive Video Embedder a well-known and great video implanting plugin for WordPress that is absolutely free of cost. The plugin is packed with multiple amazing features to grab each particular problem you are expected to expression by displaying such videos on your website.
Most importantly, this plugin allows to create the entire videos you insert into responsive videos and this is done just because of your mobile users can take pleasure such astounding experiences with hassle-free. Other alternatives comprise WYSIWYG support, auto-start videos, tweaking URL factors if you wish for, transforming video position, and lots more.
Find more plugins here.
#best wordpress plugins #best wp video plugin #video gallery wordpress plugin #wordpress gallery plugin #wordpress video plugin
1624358930
Want to feature a brand history or storyline on a WordPress website? If yes, then read this blog thoroughly.
Many of your website visitors want to know about your brand history or the achievements of your past. For that, a timeline layout is a good solution. Showcase the story of your company or brand in chronological order with the dazzling post timeline posts. WordPress has several themes that have default horizontal timeline formats. But, to get a fully functional & beautifully designed timeline WordPress has plenty of resources of timeline plugins.
No concerns! We have assembled the best post timeline WordPress plugins. Each set of plugins have different functionalities and customization settings. Get the best one and create a timeline with the best one!
1. WP Timeline Designer Pro
WP Timeline Designer is a feature-rich plugin that provides vertical and horizontal timeline templates with lots of advanced functionalities. While showcasing a story or company history with the beautiful chart or design then timeline layout helps to easily understand and attract the readers as well. A great way to tell a story or create a post then the timeline plugin helps to create an attractive timeline.
Timeline Designer – Free
Timeline Designer – a free plugin recently launched on the WordPress repository platform. The free plugin contains in-built 6 existing customizable layouts with other customization options. Using this WordPress plugin, a user can match the look & feel of your WordPress site.
Features:
WP Timeline Designer Pro – Premium
WP Timeline Designer Pro is an elegant and fantastic plugin with responsive timeline layouts. In the pro version, the plugin contains 15+ timeline templates with lots of options and tools to style and design the posts. It has in-built 20+ core demos available with which a user can showcase life story, event summary, author biography, achievements, company history, hiring process, etc in an eye-catchy timeline design.
Features:
2. Post Timeline
Post Timeline plugin allows creating a timeline on 100% of the page. It allows the creation of unlimited vertical and horizontal timelines. To create a simple and single timeline, a user can use shortcode functionality.
**Post Timeline – Free **
The Post Timeline Free plugin allows you to create a timeline on the vertical layout. A user can also assign the category and tags.
Features:
Post Timeline – Premium
The pro version of the Post Timeline WordPress plugin has both vertical and horizontal timeline layouts. The plugin has inbuilt 23 timeline templates and all the timelines layout can be chosen by the admin for each timeline.
Features:
3. Cool Timeline
Cool Timeline, as its name suggests, creates a complete timeline layout for the WordPress website. It is an HTML and CSS timeline plugin that helps to build awesome horizontal and vertical layouts. The new version of the plugin is very well compatible with Gutenberg.
**Cool Timeline: Free **
The Cool Timeline with the free version has 5 vertical and one horizontal timeline design. Also, the plugin allows users to showcase the stories in ascending & descending orders based on the year and date.
Features:
Cool TimelineCool Timeline: Premium
Cool Timeline Pro plugin has an advanced admin panel that helps to manage the timeline visibility details & other customization factors very smoothly. The premium plugin comes with 4 timeline layouts with 40+ several timeline designs.
Features:
#best wordpress timeline plugin #post timeline plugin wordpress #post timeline wordpress #timeline plugin for wordpress #wordpress post timeline plugins #wordpress timeline plugin
1624357646
Want to feature a brand history or storyline on a WordPress website? If yes, then read this blog thoroughly.
Many of your website visitors want to know about your brand history or the achievements of your past. For that, a timeline layout is a good solution. Showcase the story of your company or brand in chronological order with the dazzling post timeline posts. WordPress has several themes that have default horizontal timeline formats. But, to get a fully functional & beautifully designed timeline WordPress has plenty of resources of timeline plugins.
No concerns! We have assembled the best post timeline WordPress plugins. Each set of plugins have different functionalities and customization settings. Get the best one and create a timeline with the best one!
1. WP Timeline Designer Pro
WP Timeline Designer is a feature-rich plugin that provides vertical and horizontal timeline templates with lots of advanced functionalities. While showcasing a story or company history with the beautiful chart or design then timeline layout helps to easily understand and attract the readers as well. A great way to tell a story or create a post then the timeline plugin helps to create an attractive timeline.
Timeline Designer – Free
Timeline Designer – a free plugin recently launched on the WordPress repository platform. The free plugin contains in-built 6 existing customizable layouts with other customization options. Using this WordPress plugin, a user can match the look & feel of your WordPress site.
Features:
WP Timeline Designer Pro – Premium
WP Timeline Designer Pro is an elegant and fantastic plugin with responsive timeline layouts. In the pro version, the plugin contains 15+ timeline templates with lots of options and tools to style and design the posts. It has in-built 20+ core demos available with which a user can showcase life story, event summary, author biography, achievements, company history, hiring process, etc in an eye-catchy timeline design.
Features:
2. Post Timeline
Post Timeline plugin allows creating a timeline on 100% of the page. It allows the creation of unlimited vertical and horizontal timelines. To create a simple and single timeline, a user can use shortcode functionality.
**Post Timeline – Free **
The Post Timeline Free plugin allows you to create a timeline on the vertical layout. A user can also assign the category and tags.
Features:
Post Timeline – Premium
The pro version of the Post Timeline WordPress plugin has both vertical and horizontal timeline layouts. The plugin has inbuilt 23 timeline templates and all the timelines layout can be chosen by the admin for each timeline.
Features:
3. Cool Timeline
Cool Timeline, as its name suggests, creates a complete timeline layout for the WordPress website. It is an HTML and CSS timeline plugin that helps to build awesome horizontal and vertical layouts. The new version of the plugin is very well compatible with Gutenberg.
**Cool Timeline: Free **
The Cool Timeline with the free version has 5 vertical and one horizontal timeline design. Also, the plugin allows users to showcase the stories in ascending & descending orders based on the year and date.
Features:
Cool TimelineCool Timeline: Premium
Cool Timeline Pro plugin has an advanced admin panel that helps to manage the timeline visibility details & other customization factors very smoothly. The premium plugin comes with 4 timeline layouts with 40+ several timeline designs.
Features:
#best wordpress timeline plugin #post timeline plugin wordpress #post timeline wordpress #timeline plugin for wordpress #wordpress post timeline plugins #wordpress timeline plugin