16th update of 2021 on BlockTrades work on Hive software
![blocktrades update.png](https://images.hive.blog/DQmSihw8Kz4U7TuCQa98DDdCzqbqPFRumuVWAbareiYZW1Z/blocktrades%20update.png)
Below is a list of Hive-related programming issues worked on by BlockTrades team during the last week or so:
# Hived work (blockchain node software)
## Official release of Equilibrium (hived code for hardfork 25)
Last week we merged all develop branch changes since the last hardfork into the master branch and tagged an official release of hived (v1.25.0). The “code name” for this release is “Equilibrium”.
For the official press release associated with the new release and details about associated functional changes, see https://hive.blog/hive/@hiveio/hive-hardfork-25-is-on-the-way-hive-to-reach-equilibrium-on-june-30th-2021
The [release notes for Equilibrium](https://gitlab.syncad.com/hive/hive/-/tags/v1.25.0) represent a concise summary of virtually all changes that were made as part of this hardfork, along with links to review the code associated with each individual change.
Alternatively, you can inspect [a diff with the totality of changes for this hardfork](https://gitlab.syncad.com/hive/hive/-/merge_requests/262/diffs).
## Other hived work last week
We continued performance testing of the new “recurrent transfers” feature written by @howo. As a side note, based on some discussion among various devs, I believe Hive frontends will use the term “recurring payments” to refer to the “recurrent transfers” feature, since that is the name most commonly used in the business world for this type of functionality.
During our still incomplete testing, we found some areas where the new “test tools” framework that is being used to create and test massive numbers of recurrent transfers could be improved to make it faster and more stable:
https://gitlab.syncad.com/hive/hive/-/merge_requests/257
https://gitlab.syncad.com/hive/hive/-/merge_requests/263
Here’s a short list of other work done on hived:
* Fixed two unit tests that we previously had to disable and re-enabled them: https://gitlab.syncad.com/hive/hive/-/merge_requests/259
* Added a new command-line option –exit-before-sync for configuring hived to a predictable state for running a replay or creating a statefile dump, then ending the hived process. This is useful for setting up test scenarios. https://gitlab.syncad.com/hive/hive/-/merge_requests/232
* Added new regression tests to test recent changes to last irreversible block handling (a change that was made to fix a longstanding bug with duplicate transactions in the account history plugin): https://gitlab.syncad.com/hive/hive/-/merge_requests/252
* Fixed an intermittent crash on application shutdown: https://gitlab.syncad.com/hive/hive/-/merge_requests/253
* Documentation cleanup: https://gitlab.syncad.com/hive/hive/-/merge_requests/258
* Implemented option for automatic spawning of hived replays within our continuous integration system (done off main servers to avoid breaking or interrupting primary development CI system).
# Hivemind (2nd layer applications + social media middleware)
* Added tests for recent changes in behavior of setLastRead operation: https://gitlab.syncad.com/hive/hivemind/-/merge_requests/511
* Explicit specification of package versions to be used when building hivemind to avoid potential headaches when package dependencies are updated: https://gitlab.syncad.com/hive/hivemind/-/merge_requests/498
* Update CodeQL analysis configuration: https://gitlab.syncad.com/hive/hivemind/-/merge_requests/509
* We’re currently investigating ways to improve performance of the `update_rshares` function immediately after massive sync of a hivemind instance.
* Fixed "broken reputation" problem related to ordering issue because of multiple transactions used per block. This was known to impact the calculation of reputation for at least two Hive users.
* list_subscribers bug being worked on (tests being created first).
# Hive Application Framework
The current implementation of the Hive Application Framework requires applications to mark their constraints as DEFERRABLE to enable HAF apps to use the auto-rewind feature when a fork switch occurs.
While this may be an acceptable limitation on the design of HAF-based apps, we decided to create an alternative implementation of HAF without that limitation and measure the performance of the two alternative designs. The ongoing discussion of this topic can be found in the latest comments attached to the still open HAF merge request: https://gitlab.syncad.com/hive/psql_tools/-/merge_requests/1
# Upcoming work in the next week
* Continue performance testing of recurring payments functionality in hived.
* Complete psql_serializer updates and begin testing hived+psql_serializer with hivemind. This is a prerequisite for testing the entire HAF code base.
* More work and testing of the Hive Application Framework (HAF), including more documentation and example HAF-based applications.
* Finish up fix for list_subscribers.
* Work with witnesses to collect performance statistics for the Equilibrium release on different hardware configurations.
On a related note, @drakos noted a significant performance improvement in the speed of creating statefile snapshots and @gtg has confirmed the same findings on his system. Gandalf reports v1.24.8 took 4866 seconds whereas v1.25.0 was able to complete this task in only 3134 seconds.
See: 16th update of 2021 on BlockTrades work on Hive software by @blocktrades