create account

A developer’s introduction to the Hive Application Framework by blocktrades

View this thread on: hive.blogpeakd.comecency.com
· @blocktrades · (edited)
$764.72
A developer’s introduction to the Hive Application Framework
As many of my readers know, the BlockTrades team has been devoting a lot of effort in the past year to  creating a framework to ease the process of creating decentralized apps with Hive. 

We recently completed some scripts to ease setting up a HAF server, thereby removing the last roadblock to HAF server deployment, so I thought it would be a good time to create an overview for Hive app developers about what HAF is, what problems it solves, and how to deploy HAF-based apps.

# What is the Hive Application Framework (HAF)?

HAF is an application framework for creating highly scalable decentralized apps that operate on the Hive blockchain-based network. With HAF, data from the blockchain network are pushed into a SQL database (PostgreSQL) for easy consumption by HAF apps. **This means that HAF-based apps can easily be designed and maintained by database programmers with no previous experience with blockchain-based programming.**


Below is a diagram that shows how HAF apps consume and create state data stored on a HAF server. As new blocks are created in the blockchain, the transactions contained in these blocks are stored into the HAF database by a plugin within hived (the blockchain node software) called sql_serializer. HAF apps get notified of this new block data by the hive_fork_manager and process this data independently at their own speed.

https://gitlab.syncad.com/hive/haf/-/raw/develop/doc/c2_haf.png

## Hive Fork Manager postgres extension

The Hive Fork Manager is the primary way that HAF apps interface with blockchain data. It consists of several SQL stored procedures defined in a Postgres extension which are called by HAF apps to receive notifications of new block data. 

One of the most powerful features offered by HAF as a service to apps is that it enables apps to easily maintain consistent internal state when transactions are reverted by a blockchain fork. To take advantage of this feature, HAF apps will normally register all the auxiliary tables that they create inside the HAF database to manage their own internal state. Once an application’s tables have been registered with the fork manager via stored procedure calls, the fork manager will automatically revert any state data in the event that blockchain data gets reverted by a fork in the blockchain network.

To understand the benefit of this, let’s consider a social media app that tracks how many times a user posts and all the upvotes on their posts. The raw blockchain data that the app processes just consists of transactions such as posts and votes which have been signed by users. The social media app maintains state data such as post counts and upvotes for each post inside SQL tables. 

In the case of a blockchain fork, the transactions for a post and all its votes could be reverted (either temporarily or even permanently). When this happens, the app has to undo all its internal state changes that occurred because of those reverted transactions. In other words, a normal blockchain app has to build an “undo” action for every internal state change it makes when it processes a new blockchain transaction, then apply all those undo actions in reverse order when a fork occurs. 

The hive fork manager eliminates the need for such undo code: it keeps a record of each change in state caused by transactions in a block and automatically performs the undo actions when blocks get reverted by a fork. **In practice, this should cut in half the amount of code that is required to write a blockchain-based dapp and it also eliminates the chance for errors that can result if manually-written undo actions don’t get properly updated as the app’s functionality gets updated over time.**

Note that this does imply that HAF apps should maintain all their state data inside a database and avoid maintaining any state data in memory. But this restriction also offers another important advantage: a HAF app can easily recover from system crashes and power outages since all its state data is kept in non-volatile storage. It is expected that HAF servers will typically store any performance-critical data on high-speed storage such as NVME drives, so this restriction should pose no problems for overall app performance.

## Creating HAF apps that perform undo-able actions

Some HAF apps may need to perform actions that can’t be undone. For example, a game might make a blockchain-based payout to a winner in the game. Once the payout transaction is broadcast, the game may not be able retract such a payment if a blockchain fork occurs. 

There’s two straightforward ways that a HAF app can manage the processing of undo-able actions: 1) a HAF app can be configured so that it only receives block data that can’t be reverted or 2) the HAF app can receive current block data like a regular HAF app, but it can have a scheduling system where all actions like payouts that can’t be undone are placed into a holding area, and only performed after the block which triggered the actions become irreversible. 

Option 1 is the easiest method to program, of course, and this will probably be the most suitable method for designing financial apps, but option 2 may be useful for apps like games that require faster real-time response to user actions.

# Anatomy of a HAF app

Most HAF apps will be divided into a backend component that contains the business logic and a frontend component that manages user interaction.

The backend processes blockchain data, modifies the app’s internal state data, and provides an app-specific API to the frontend for reading that state data. The backend is the component that talks to the hive fork manager and to the HAF database in general. 

Backends will typically be coded as a combination of SQL stored procedures plus any language that supports a SQL binding. We have created example HAF apps written in pure SQL, SQL plus Python, and SQL plus C++. [Here is a very simple pure SQL example including a frontend UI.](https://gitlab.syncad.com/hive/balance_tracker/-/tree/develop) [Some small SQL/python example backends are located inside the HAF repo itself.](https://gitlab.syncad.com/hive/haf/-/tree/develop/src/hive_fork_manager/doc/applications)

The frontend (typically a web application, but can also be a desktop GUI app) formats and displays app state data to the user and allows the user to construct and sign transactions related to the app. For example, the frontend for the aforementioned social media app would allow a user to create and sign blockchain transactions to create and vote on posts. 

The frontend communicates with the backend component to get state data, and it broadcasts user transactions to a blockchain node to get the transactions included into the blockchain. Once the transactions get included into the blockchain, the backend can then update its internal state based on the new transactions.

# First step BEFORE creating your first HAF app

Before you begin creating your own HAF app, I strongly recommend setting up a HAF server with some of the existing HAF apps, then reviewing the example apps to see some of the options you have in creating your own HAF app.

## Recommended hardware for a general purpose HAF server


At Hive’s current block height of 60M+ blocks, a general purpose HAF database capable of running all HAF apps takes up about 2.7TB of storage before accounting for storage consumed by app-specific data. So, at a bare minimum, you will want at least 4TB of storage for a general purpose HAF server. 

Note that it will soon be possible to setup app-specific HAF servers that have much smaller storage requirements, but when first learning about HAF you will need a general purpose HAF server to experiment with the example apps. 

You will also want this storage to be fast to allow for faster initial filling of your HAF database, so with currently available hardware, my recommendation is to use 2 or 3 striped 2TB NVME drives configured as a 4TB or 6TB drive.

## Setting up a HAF server

HAF servers get their blockchain data from a hived node. For maximum performance, it is best if the hived node is running on the same computer as your HAF server.

The easiest way to setup a HAF server is to start with a clean Ubuntu 20 system and follow the steps below (more options are possible, I’m just showing the simple one). For these steps, I’m assuming you are logged into an account that has sudoer privileges and default privileges to write to your “bad and fast” drive.
```
1. cd to a directory on your “big and fast” drive where you want to store your HAF database
2. git clone https://gitlab.syncad.com/hive/haf.git 
2. cd haf
3. git checkout develop
4. ./scripts/setup_haf_instance.sh (note you may wish to use the –help option first to see useful options to optimally configure your HAF server on your particular computer)
```

The setup script above will install postgres 12 if it is not already installed, configures a HAF database in a tablespace on the big/fast drive, creates all database roles needed to administer your HAF database, and sets up and launches a hived node process that will begin feeding data to your HAF database.

### Faster setup with an existing block_log file

It can take quite a while to sync a hived node via the p2p network from scratch, so if you’re already familiar with setting up a hived node, you will probably want to create a hived datadir with a config.ini file that includes configuration of the sql_serializer plugin and a blockchain subdirectory, copy a trusted block_log file into the blockchain directory that contains a recent list of blocks, then run the setup script as follows instead of using step 4 above:

```
alternate step 4. ./scripts/setup_haf_instance.sh –hived-data-dir=/my_fast_storage/.hived –hived-option=--force-replay
```

A replay of an existing block_log takes about 10 hours on one of our fast computers (fast here means a fast multi-core CPU and fast disk storage). 

Next the hived node will enter p2p sync and grab any new blocks that were created since your block_log was created. Unless your block_log is old, this should only take a few minutes. 

Once your hived node has finished p2p sync and reached the head block of the chain, it will create additional indexes for the HAF database tables to allow apps to efficiently search the database. This process takes about 3 hours on a fast system at the current block height of 60M blocks. 

After these indexes are created, it will fetch and process blocks that were generated while the indexes were created until it reaches the head block. Once it reaches the head block, hived will display “LIVE SYNC” messages on its console to indicate that it is processing new blocks as soon as they are generated by the  Hive network. 

After hived enters live sync, any HAF apps that you may have configured on your server will begin to process the accumulated blocks of the blockchain, until they too are caught up to the head block and can enter their own livesync mode. Note: HAF apps don’t begin processing blockchain data before the HAF table indexes are added by the sql_serializer, because app queries would be too slow without these indexes.

Note we’re still planning some tweaks to the scripts that deploy a HAF server (for example, I want to add a command-line option to automatically download trusted block_log files and indexes). I also to improve the scripts so that they can be downloaded without requiring a git clone of HAF as a first step (with the current process, the HAF server ends up with a top-level haf directory that is just used to run the scripts and a “real” haf directory that it builds and runs with).

## Setting up a HAF app

New HAF apps can be added to a general purpose HAF server at any time. A new app will begin by processing all the old blocks stored in the server, then enter live sync mode and begin processing new blocks one-by-one. 

It is often useful to design your HAF app to be able to operate in a “massive sync” mode where it can process transactions from more than one old block simultaneously to reach live sync state faster. 

The balance_tracker application is one example of a HAF app that has a massive-sync mode. To setup the balance tracker app on your HAF server:

1. git clone https://gitlab.syncad.com/hive/balance_tracker.git
2. Follow installation instructions in repo’s README.md file

## Inspecting your HAF database and trying sample SQL queries

Once your hived node enters live sync mode, you should probably login into your haf database (the script uses haf_block_log as the default name for this database) and get familiar with the “hive” schema views that organize the raw blockchain data. You can do this with the psql command-line tool (e.g. `psql -d haf_block_log` followed by commands such as `\dv+ hive.*` to see the available views of the data and `\dS+ hive.accounts_view` to see the structure of a view) or with web-based tools that connect to a postgres server such as [pgadmin](https://www.pgadmin.org/), [adminer](https://www.adminer.org/), etc. You can also begin to experiment in these tools with SQL queries of the views that your app might use to get blockchain data.

# Reading the docs for HAF app design

As mentioned previously, a HAF app interacts with the HAF database via the hive_fork_manager. Details of how to design HAF apps and how HAF apps interact with the hive_fork_manager can be found in: https://gitlab.syncad.com/hive/haf/-/blob/develop/src/hive_fork_manager/Readme.md

Currently this document probably contains too much “internal information” about how the hive_fork_manager itself works. Despite that, I still recommend reading all of it, but apps designers should mainly focus on the parts of this document that discuss actual app design.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 868 others
👎  , ,
properties (23)
authorblocktrades
permlinka-developer-s-introduction-to-the-hive-application-framework
categoryhive-139531
json_metadata{"tags":["hive","blockchain","software","blocktrades"],"image":["https://gitlab.syncad.com/hive/haf/-/raw/develop/doc/c2_haf.png"],"links":["https://gitlab.syncad.com/hive/balance_tracker/-/tree/develop"],"app":"hiveblog/0.1","format":"markdown"}
created2022-02-09 22:02:57
last_update2022-02-09 22:25:57
depth0
children45
last_payout2022-02-16 22:02:57
cashout_time1969-12-31 23:59:59
total_payout_value382.590 HBD
curator_payout_value382.129 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length13,772
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,312,215
net_rshares558,277,971,434,132
author_curate_reward""
vote details (935)
@ackza ·
So it lets you read and write to the blockchain !

Oh this should create demand for actual hivepower for use with developers... theyll need it like people on ethereum need eth to pay gas fees 

We already know this but now the reasons will be explained to everyone else .
properties (22)
authorackza
permlinkr74ad7
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 01:48:45
last_update2022-02-11 01:48:45
depth1
children0
last_payout2022-02-18 01:48:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length271
author_reputation287,802,141,171,770
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,348,784
net_rshares0
@ackza ·
C java and Python

The C part can plug into @telosnetwork and its ethereum EVM 

Telos eosio smart contracts added in here and wow i am seeing the bigger picture of the eden
properties (22)
authorackza
permlinkr74ez7
categoryhive-139531
json_metadata{"users":["telosnetwork"],"app":"hiveblog/0.1"}
created2022-02-11 03:28:21
last_update2022-02-11 03:28:21
depth1
children0
last_payout2022-02-18 03:28:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length173
author_reputation287,802,141,171,770
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,350,496
net_rshares0
@ackza ·
Hive Fork Manager 
HFM Hive FM
Dawn FM (eosio)
The weeknd ... 
Lots of cool art symbolism here 

Visualizing this is so important i may expand on this visual and connect telos smart contracts to the PostgreSQRL database to allow more features for hive like evm and dstor to host dapps on hive in telos and eventually hive withesses run inside dstor servers instead of amazon
properties (22)
authorackza
permlinkr74f4z
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 03:31:51
last_update2022-02-11 03:31:51
depth1
children0
last_payout2022-02-18 03:31:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length374
author_reputation287,802,141,171,770
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,350,547
net_rshares0
@anastasiastefany ·
Finding the right talent for FinTech projects can be a daunting task. But, I came across this guide that really broke down the process into digestible pieces. [For example](https://mobilunity.com/industries/hire-fintech-software-developers/), It highlighted the specific skills and experiences to look for in candidates. This was a game-changer for me, making the hiring process much more straightforward and less intimidating.
properties (22)
authoranastasiastefany
permlinksaw0u1
categoryhive-139531
json_metadata{"links":["https://mobilunity.com/industries/hire-fintech-software-developers/"],"app":"hiveblog/0.1"}
created2024-03-25 05:06:03
last_update2024-03-25 05:06:03
depth1
children0
last_payout2024-04-01 05:06:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length427
author_reputation-8,486,405,992,982
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id132,310,404
net_rshares0
@apunawu ·
Wow, what a new development for #hive communities. I love the HAF idea
properties (22)
authorapunawu
permlinkre-blocktrades-2022210t114128248z
categoryhive-139531
json_metadata{"tags":["hive","blockchain","software","blocktrades"],"app":"ecency/3.0.21-vision","format":"markdown+html"}
created2022-02-10 19:41:30
last_update2022-02-10 19:41:30
depth1
children0
last_payout2022-02-17 19:41:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length70
author_reputation148,992,808,493,855
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,340,898
net_rshares0
@archangel21 · (edited)
Hi @blocktrades. The server specs to run HAF are pretty high right now. I have a question. So, let's say I want to build a DApp using HAF. Would I need to run my own instance or would there be one available for everyone to use? Cause with the minimum specs being that high, newer devs(Me included) would stick to writing more code than renting out a powerful server.

Just wondering if HAF would have a public instance like the current RPC nodes.
properties (22)
authorarchangel21
permlinkr7caxn
categoryhive-139531
json_metadata{"app":"hiveblog/0.1","users":["blocktrades"]}
created2022-02-15 09:41:51
last_update2022-02-15 09:43:39
depth1
children2
last_payout2022-02-22 09:41:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length446
author_reputation23,692,453,437
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,484,472
net_rshares0
@blocktrades ·
The server spec is for a general purpose HAF node that can store all the blockchain data. In a couple of weeks we'll have support for operations filtering (i.e. to filter for only the operations your app is interested in), which will make it quite cheap to be able to run an app-specific HAF server.

As to public servers, I'm sure there will be some, but you would need to get agreement from the server owner to run your app there. And for development itself, you're going to want to run your own dev server. So you may need to wait till filtering is implemented if a server with 4TB worth of storage is out of reach for you.
properties (22)
authorblocktrades
permlinkr7cx3h
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-15 17:40:30
last_update2022-02-15 17:40:30
depth2
children1
last_payout2022-02-22 17:40:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length626
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,496,798
net_rshares0
@archangel21 ·
Got it. That makes sense. Thanks!
properties (22)
authorarchangel21
permlinkr7dhgn
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-16 01:00:27
last_update2022-02-16 01:00:27
depth3
children0
last_payout2022-02-23 01:00:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length33
author_reputation23,692,453,437
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,508,041
net_rshares0
@benjisnicee ·
WOW, THAT'S GRAPE
properties (22)
authorbenjisnicee
permlinkr735l3
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 11:07:54
last_update2022-02-10 11:07:54
depth1
children0
last_payout2022-02-17 11:07:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length17
author_reputation0
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,326,713
net_rshares0
@darkflame ·
This is great information I want to learn this so much. I am bookmarking this for further review, thanks
properties (22)
authordarkflame
permlinkre-blocktrades-r8hzbk
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.02.6"}
created2022-03-09 21:50:09
last_update2022-03-09 21:50:09
depth1
children0
last_payout2022-03-16 21:50:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length104
author_reputation91,042,555,843,576
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,179,914
net_rshares0
@deadleaf ·
I'd guess at small scale @hivesql would be enough or am I missing something? 
properties (22)
authordeadleaf
permlinkre-blocktrades-2022211t131031801z
categoryhive-139531
json_metadata{"tags":["hive-139531","hive","blockchain","software","blocktrades"],"app":"ecency/3.0.25-mobile","format":"markdown+html"}
created2022-02-11 08:10:36
last_update2022-02-11 08:10:36
depth1
children1
last_payout2022-02-18 08:10:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length77
author_reputation1,958,223,215,012
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,355,281
net_rshares0
@blocktrades ·
It is very different from HiveSQL. For example, HiveSQL doesn't have a fork manager.
👍  ,
properties (23)
authorblocktrades
permlinkr75no2
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 19:33:39
last_update2022-02-11 19:33:39
depth2
children0
last_payout2022-02-18 19:33:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length84
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,371,112
net_rshares2,606,200,968
author_curate_reward""
vote details (2)
@emeka4 ·
This is really awesome keep up the good work moving
properties (22)
authoremeka4
permlinkr73ekk
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 14:22:00
last_update2022-02-10 14:22:00
depth1
children0
last_payout2022-02-17 14:22:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length51
author_reputation234,166,618,016,346
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,330,943
net_rshares0
@fjcalduch · (edited)
![Thumb up doble 1.jpg](https://files.peakd.com/file/peakd-hive/fjcalduch/242sGfA8rdLv6BsNaJaAdAM5UPTZiGCKrxwP9GepJWcye8T4Edz1Uj3oihC4e1ZQRJf6o.jpg)

properties (22)
authorfjcalduch
permlinkre-blocktrades-r72xos
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-10 08:17:18
last_update2022-02-10 08:19:27
depth1
children0
last_payout2022-02-17 08:17:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length151
author_reputation64,019,430,177,639
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,323,358
net_rshares0
@forykw · (edited)
$1.78
Hey, I would be interested in any experience you have on a mid-tier setup such as using NVMe as cache LVs for a stripped rotational disk array. I have used them before but they usually only work for subsets of data that either only keeps hot for a period of time and then very rarely will be accessed or data streams in append mode where usually there is very little re-reading of new data written.

Databases are a mess for the above workloads but if the cache LV is big enough to work with the tables being hot, they keep hot on the cache and hardly need to be read from rotational disk.

With the above scheme, you could easily configure a 1TB NVMe for cache and a couple of either small cheap SSDs or even rotating disks for the high capacity part.

Just curious if you guys explored these options and what was your end conclusions.

Thanks
👍  , ,
properties (23)
authorforykw
permlinkre-blocktrades-r7g1d3
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-17 10:05:30
last_update2022-02-17 10:06:18
depth1
children4
last_payout2022-02-24 10:05:30
cashout_time1969-12-31 23:59:59
total_payout_value0.890 HBD
curator_payout_value0.890 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length844
author_reputation93,047,668,375,359
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,551,903
net_rshares1,689,139,089,885
author_curate_reward""
vote details (3)
@blocktrades ·
$1.21
We haven't tested it here because we're generally trying to test a max performance setup to see where the potential performance bottlenecks are, but a HAF setup like that should be fine.
👍  
👎  
properties (23)
authorblocktrades
permlinkr7hfnv
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-18 04:11:54
last_update2022-02-18 04:11:54
depth2
children3
last_payout2022-02-25 04:11:54
cashout_time1969-12-31 23:59:59
total_payout_value0.606 HBD
curator_payout_value0.606 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length186
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,575,994
net_rshares1,183,658,413,444
author_curate_reward""
vote details (2)
@forykw ·
I see... I will probably have to rely on such for now, but yeah, in a few years' time, NVMes might just have replaced most storage types (IOps/$ wise) under the 100TB range.

Curious if you guys used external storage for the NVMe's (fiber or SAS attached) or something like this? Which is something I wanna grab later in the year.

![image.png](https://files.peakd.com/file/peakd-hive/forykw/23wByF21YPerprVsom7BBWcJh9QnvVjjaaDxFuKcfWpbzUMgZCS8TvePWHf1eCoVMSzb2.png)
properties (22)
authorforykw
permlinkre-blocktrades-r7hgwl
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-18 04:38:48
last_update2022-02-18 04:38:48
depth3
children2
last_payout2022-02-25 04:38:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length467
author_reputation93,047,668,375,359
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,576,387
net_rshares0
@gewwe2 · (edited)
If there are problems with the development, then it might be better to turn to specialists? When I needed intervention in the program code, I turned to the guys who could quickly solve my problem. Here you can learn what they are doing and make the right choice for [start a fintech company](https://dashdevs.com/blog/how-to-start-a-fintech-company-and-make-it-successful-2-business-product-ideas/). But if you still have questions, be sure to contact. I will help! Good luck to you!
👎  
properties (23)
authorgewwe2
permlinkre-blocktrades-20231128t153511628z
categoryhive-139531
json_metadata{"tags":["hive","blockchain","software","blocktrades"],"app":"ecency/3.0.37-vision","format":"markdown+html"}
created2023-11-28 13:35:12
last_update2023-11-29 12:56:24
depth1
children0
last_payout2023-12-05 13:35:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length483
author_reputation-507,281,169,040
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id129,238,981
net_rshares0
author_curate_reward""
vote details (1)
@hivebuzz ·
Congratulations @blocktrades! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):

<table><tr><td><img src="https://images.hive.blog/60x70/http://hivebuzz.me/@blocktrades/payout.png?202202120033"></td><td>You received more than 1540000 HP as payout for your posts, comments and curation.<br>Your next payout target is 1545000 HP.<br><sub>The unit is Hive Power equivalent because post and comment rewards can be split into HP and HBD</sub></td></tr>
</table>

<sub>_You can view your badges on [your board](https://hivebuzz.me/@blocktrades) and compare yourself to others in the [Ranking](https://hivebuzz.me/ranking)_</sub>
<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>



**Check out the last post from @hivebuzz:**
<table><tr><td><a href="/hivebuzz/@hivebuzz/valentine-2022"><img src="https://images.hive.blog/64x128/https://i.imgur.com/wlWU2fX.png"></a></td><td><a href="/hivebuzz/@hivebuzz/valentine-2022">Valentine's day challenge - Give a badge to your beloved!</a></td></tr><tr><td><a href="/hive-122221/@hivebuzz/pum-202202-8"><img src="https://images.hive.blog/64x128/https://i.imgur.com/joDgNkk.png"></a></td><td><a href="/hive-122221/@hivebuzz/pum-202202-8">Hive Power Up Month - Feedback from February day 8</a></td></tr></table>

###### Support the HiveBuzz project. [Vote](https://hivesigner.com/sign/update_proposal_votes?proposal_ids=%5B%22199%22%5D&approve=true) for [our proposal](https://peakd.com/me/proposals/199)!
properties (22)
authorhivebuzz
permlinknotify-blocktrades-20220212t003506
categoryhive-139531
json_metadata{"image":["http://hivebuzz.me/notify.t6.png"]}
created2022-02-12 00:35:06
last_update2022-02-12 00:35:06
depth1
children0
last_payout2022-02-19 00:35:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,552
author_reputation369,397,803,080,861
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,377,636
net_rshares0
@hivebuzz ·
Congratulations @blocktrades! Your post has been a top performer on the Hive blockchain and you have been rewarded with the following badges:

<table><tr><td><img src="https://images.hive.blog/60x60/http://hivebuzz.me/badges/topupvotedweek.png"></td><td>Post with the most upvotes of the week.</td></tr>
<tr><td><img src="https://images.hive.blog/60x60/http://hivebuzz.me/badges/toppayoutweek.png"></td><td>Post with the highest payout of the week.</td></tr>
</table>

<sub>_You can view your badges on [your board](https://hivebuzz.me/@blocktrades) and compare yourself to others in the [Ranking](https://hivebuzz.me/ranking)_</sub>
<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>



**Check out the last post from @hivebuzz:**
<table><tr><td><a href="/hive-122221/@hivebuzz/pum-202202-11"><img src="https://images.hive.blog/64x128/https://i.imgur.com/if8A0J0.png"></a></td><td><a href="/hive-122221/@hivebuzz/pum-202202-11">Hive Power Up Month - Feedback from February day 11</a></td></tr><tr><td><a href="/hivebuzz/@hivebuzz/valentine-2022"><img src="https://images.hive.blog/64x128/https://i.imgur.com/wlWU2fX.png"></a></td><td><a href="/hivebuzz/@hivebuzz/valentine-2022">Valentine's day challenge - Give a badge to your beloved!</a></td></tr></table>

###### Support the HiveBuzz project. [Vote](https://hivesigner.com/sign/update_proposal_votes?proposal_ids=%5B%22199%22%5D&approve=true) for [our proposal](https://peakd.com/me/proposals/199)!
properties (22)
authorhivebuzz
permlinknotify-blocktrades-20220214t021227
categoryhive-139531
json_metadata{"image":["http://hivebuzz.me/notify.t6.png"]}
created2022-02-14 02:12:27
last_update2022-02-14 02:12:27
depth1
children0
last_payout2022-02-21 02:12:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,506
author_reputation369,397,803,080,861
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,442,208
net_rshares0
@jordand89 ·
Very interesting! I've programmed web applications before and want to develop Hive-based apps, but this seems overwhelming. I'll start by reading through all of this information and looking at the example code. It would be great if there was a simplified "For Dummies" version of the documentation without the "internal information" you mention in the last paragraph.
👍  
properties (23)
authorjordand89
permlinkre-blocktrades-2022210t185430395z
categoryhive-139531
json_metadata{"tags":["hive","blockchain","software","blocktrades"],"app":"ecency/3.0.21-vision","format":"markdown+html"}
created2022-02-11 00:54:33
last_update2022-02-11 00:54:33
depth1
children1
last_payout2022-02-18 00:54:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length367
author_reputation541,780,110,410
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,347,924
net_rshares698,051,754
author_curate_reward""
vote details (1)
@blocktrades ·
It's simpler than it probably sounds here. If you've ever written an event-driven program, the programming model for the backend should be fairly familiar. Your app makes a SQL call to get notified whenever there's a new block of data from the blockchain that needs to be processed and you write SQL queries (and maybe pythton/C++ or some other language as well) that process that data into the databases tables you define for you application. 

So far, that's pretty much how you would write any event-driven backend application. The "extra" step is you register your tables with the hive_fork_manager, so that it can automatically perform an "undo" on the state of your tables if some of the data you've processed gets reverted by a blockchain fork.
👍  
properties (23)
authorblocktrades
permlinkr7495m
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 01:22:33
last_update2022-02-11 01:22:33
depth2
children0
last_payout2022-02-18 01:22:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length751
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,348,341
net_rshares3,778,158,386
author_curate_reward""
vote details (1)
@kaguring ·
Im new to this platform and im glad to learn that developers are trying their best effort in creating apps that will benefit its endusers. Good job.
👍  
properties (23)
authorkaguring
permlinkre-blocktrades-2022210t815148z
categoryhive-139531
json_metadata{"tags":["hive-139531","hive","blockchain","software","blocktrades"],"app":"ecency/3.0.25-mobile","format":"markdown+html"}
created2022-02-10 00:01:51
last_update2022-02-10 00:01:51
depth1
children0
last_payout2022-02-17 00:01:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length148
author_reputation73,330,771,522
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,314,780
net_rshares10,395,065,163
author_curate_reward""
vote details (1)
@lisamgentile1961 ·
So this is supposed to make it easier for new developers to create apps for the Hive blockchain. The developments just keep coming
properties (22)
authorlisamgentile1961
permlinkre-blocktrades-r75crs
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-11 15:38:15
last_update2022-02-11 15:38:15
depth1
children1
last_payout2022-02-18 15:38:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length130
author_reputation123,968,441,883,375
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,365,075
net_rshares0
@blocktrades ·
Yes, it will make it easier to create apps, and they will be faster and have fewer bugs.
👍  
👎  ,
properties (23)
authorblocktrades
permlinkr75nlh
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 19:32:06
last_update2022-02-11 19:32:06
depth2
children0
last_payout2022-02-18 19:32:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length88
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,371,072
net_rshares12,581,476,728
author_curate_reward""
vote details (3)
@marioikada ·
SWEEEETTT !!!!!!
properties (22)
authormarioikada
permlinkre-blocktrades-regx87
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.05.9"}
created2022-07-03 23:28:54
last_update2022-07-03 23:28:54
depth1
children0
last_payout2022-07-10 23:28:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length16
author_reputation7,622,749,925,688
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id114,545,921
net_rshares0
@maya7 ·
Wows, great work👍👍👍👍
properties (22)
authormaya7
permlinkr73mwt
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 17:22:09
last_update2022-02-10 17:22:09
depth1
children0
last_payout2022-02-17 17:22:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length20
author_reputation21,736,608,728,997
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,336,236
net_rshares0
@methodofmad ·
@cryptocharmers Good info for review. 
properties (22)
authormethodofmad
permlinkre-blocktrades-r79ojk
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-13 23:43:00
last_update2022-02-13 23:43:00
depth1
children0
last_payout2022-02-20 23:43:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation14,840,828,149,748
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,438,768
net_rshares0
@ogpinky ·
Woow amazing
Thanks for the update
properties (22)
authorogpinky
permlinkre-blocktrades-r75tb8
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-11 21:37:15
last_update2022-02-11 21:37:15
depth1
children0
last_payout2022-02-18 21:37:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length34
author_reputation155,317,102,027
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,373,986
net_rshares0
@pizzabot ·
<center>PIZZA! 
 @blocktrades! The Hive.Pizza team manually curated this post.

<sub>Please <a href="https://vote.hive.uno/@pizza.witness">vote for pizza.witness</a>!</sub></center>
properties (22)
authorpizzabot
permlinkre-a-developer-s-introduction-to-the-hive-application-framework-20220210t044253z
categoryhive-139531
json_metadata"{"app": "beem/0.24.26"}"
created2022-02-10 04:42:54
last_update2022-02-10 04:42:54
depth1
children0
last_payout2022-02-17 04:42:54
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length181
author_reputation7,552,279,351,159
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,319,905
net_rshares0
@prinxyno ·
I'm new here, please how do I go about
properties (22)
authorprinxyno
permlinkre-blocktrades-r756xf
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-11 13:32:03
last_update2022-02-11 13:32:03
depth1
children0
last_payout2022-02-18 13:32:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation2,279,308,308
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,361,880
net_rshares0
@sschiessl ·
Thanks for the continued effort!
properties (22)
authorsschiessl
permlinkr755br
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-11 12:57:30
last_update2022-02-11 12:57:30
depth1
children0
last_payout2022-02-18 12:57:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length32
author_reputation3,052,365,471,597
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,361,087
net_rshares0
@steemik · (edited)
Is it like a smart contract on ethereum?
properties (22)
authorsteemik
permlinkr73ryz
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 19:11:24
last_update2022-02-10 19:12:00
depth1
children1
last_payout2022-02-17 19:11:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length40
author_reputation4,767,738,141,705
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,339,977
net_rshares0
@blocktrades ·
$0.78
No, HAF is quite different from a smart contract on ethereum, although  both allow you to create apps on a blockchain. HAF is a general-purpose 2nd layer programming platform that offers much more flexibility than is offered by a smart contract platform.

Here's a key difference between the two platforms as it stands right now: on a smart contract platform, a developer can "publish" their application on the network, and the network nodes will (and must) automatically start supporting that app. By contrast, the operators of a HAF server are allowed to select which HAF apps they want to run on their server. Each of these two models of deployment have advantages and disadvantages.

But HAF as a general-purpose programming platform is actually a great base to build a smart contract platform on top of (and that's what we're planning to do next). Once our smart contract platform is deployed on a HAF server, any of the apps published for that smart contract platform will automatically start running on that HAF server.

So, ultimately, HAF servers will be able to benefit from both deployment models.
👍  , ,
👎  
properties (23)
authorblocktrades
permlinkr73u17
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 19:55:57
last_update2022-02-10 19:55:57
depth2
children0
last_payout2022-02-17 19:55:57
cashout_time1969-12-31 23:59:59
total_payout_value0.389 HBD
curator_payout_value0.387 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,108
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,341,259
net_rshares564,077,920,007
author_curate_reward""
vote details (4)
@techlhab ·
This is really cool. I have gone through the HAF docs, it's well documented on how to get started with designing an HAF App and how to interact with the Hive Fork Manager.

Thanks for the update @blocktrades and great work.
👍  
properties (23)
authortechlhab
permlinkre-blocktrades-r7262h
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-09 22:21:03
last_update2022-02-09 22:21:03
depth1
children2
last_payout2022-02-16 22:21:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length223
author_reputation11,066,014,147,515
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,312,651
net_rshares10,464,303,418
author_curate_reward""
vote details (1)
@blocktrades ·
Thanks, and please feel free to create issues in gitlab when/if you find any places where we can make improvements.
properties (22)
authorblocktrades
permlinkr726dr
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-09 22:27:27
last_update2022-02-09 22:27:27
depth2
children1
last_payout2022-02-16 22:27:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length115
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,312,827
net_rshares0
@techlhab ·
$1.83
Alright @blocktrades, I would definitely do that when/if I find any issues. As I would greatly love to make impacts towards the development and betterment of HAF.
👍  , ,
properties (23)
authortechlhab
permlinkre-blocktrades-r727b1
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-09 22:47:39
last_update2022-02-09 22:47:39
depth3
children0
last_payout2022-02-16 22:47:39
cashout_time1969-12-31 23:59:59
total_payout_value0.916 HBD
curator_payout_value0.915 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length162
author_reputation11,066,014,147,515
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,313,289
net_rshares1,338,868,959,435
author_curate_reward""
vote details (3)
@urun ·
$0.07
Less possible errors mean a lot.

And a good foundation to build on :)

As far I understand it works technically like a buffer?
👍  , ,
properties (23)
authorurun
permlinkre-blocktrades-r728q4
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-09 23:18:06
last_update2022-02-09 23:18:06
depth1
children5
last_payout2022-02-16 23:18:06
cashout_time1969-12-31 23:59:59
total_payout_value0.038 HBD
curator_payout_value0.036 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length127
author_reputation94,125,949,460,949
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,313,878
net_rshares55,537,631,813
author_curate_reward""
vote details (3)
@blocktrades ·
$0.31
> As far I understand it works technically like a buffer?

It provides buffering of a sort, because it removes loading from the hived nodes themselves, but that's only aspect of the design benefits of using HAF.
👍  , , ,
👎  
properties (23)
authorblocktrades
permlinkr72ey3
categoryhive-139531
json_metadata{"app":"hiveblog/0.1"}
created2022-02-10 01:32:27
last_update2022-02-10 01:32:27
depth2
children4
last_payout2022-02-17 01:32:27
cashout_time1969-12-31 23:59:59
total_payout_value0.156 HBD
curator_payout_value0.154 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length211
author_reputation1,285,246,364,327,926
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,316,530
net_rshares228,034,239,050
author_curate_reward""
vote details (5)
@urun ·
I know from past posts, everything becomes faster and more efficient :)
properties (22)
authorurun
permlinkre-blocktrades-r72fyr
categoryhive-139531
json_metadata{"tags":["hive-139531"],"app":"peakd/2022.01.2"}
created2022-02-10 01:54:27
last_update2022-02-10 01:54:27
depth3
children3
last_payout2022-02-17 01:54:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length71
author_reputation94,125,949,460,949
root_title"A developer’s introduction to the Hive Application Framework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id110,316,894
net_rshares0